?? ws_favor.h~
字號:
/*************************************************** Copyright(C), 2008 , JUST File name: ws_favor.h Author: StevenZ Version: 1.0 Date: 080930 Description: 點劃式網頁瀏覽器收藏夾功能 History: 08/07/28 完成收藏夾功能 08/09/30 添加增刪收藏夾網頁功能 ***************************************************/#ifndef _WS_FAVOR_H#define _WS_FAVOR_H#include "ws_share_func.h"//公用的相關函數#define FAVOR_DEL 1#define FAVOR_B_IME 2#define DEFAULT_WEB_SITE "202.192.192.197|80"static int FAVOR_DEL_FLG;static int ORI_TOTAL;int favor_read_from_txt(FAVOR_DATA *favor_data);void favor_write_to_txt(FAVOR_DATA *favor_Data);void favor_prepare(FAVOR_DATA *favor_data);void favor_data_to_wsd(struct websitedata *wsd,FAVOR_DATA *favor_data);int Favor_InWhichArea(TS_RET *p);void do_favor_del(FAVOR_DATA *favor_data);void do_favor_up(FAVOR_DATA *favor_data);void do_favor_down(FAVOR_DATA *favor_data);void do_favor_stay(FAVOR_DATA *favor_data);void * favor_click(void *data);void do_favor_double_click(FAVOR_DATA *favor_data);void do_favor(struct websitedata *wsd);int add_favor_web(struct Web_Data *wd);/*從特定文件讀取收藏夾數據*/int favor_read_from_txt(FAVOR_DATA *favor_data){ FILE *favor_fp; int rdret,i,j; char temp[80]=""; favor_fp=fopen(MY_FAVOR_TXT,"r+"); if(NULL==favor_fp) { printf("can't open MY_FAVOR_TXT!!\n"); exit(1); } fgets(temp,80,favor_fp); DPRINTF("temp[0]=0x%x\n",temp[0]); DPRINTF("rdret=%d\n",rdret); if(rdret==0||temp[0]==0xa) { fclose(favor_fp); if(temp[0]==0xa) return -2; return -1; } favor_data->favor_total=atoi(temp); DPRINTF("favor_data->favor_total=%d\n",favor_data->favor_total); favor_data->favor_current=0; for(i=0;i<favor_data->favor_total;i++) { DPRINTF("i=%d\n",i); fgets(temp,100,favor_fp); temp[strlen(temp)-1]='\0'; DPRINTF("favor_data->favor_name[%d]=%d\n",i,favor_data->favor_name[i]); favor_data->favor_name[i]=(char *)malloc(strlen(temp)+1); strcpy(favor_data->favor_name[i],temp); DPRINTF("name=%s\n",favor_data->favor_name[i]); fgets(temp,80,favor_fp); temp[strlen(temp)-1]='\0'; favor_data->favor_ip_port[i]=(char *)malloc(strlen(temp)+1); strcpy(favor_data->favor_ip_port[i],temp); DPRINTF("ip_port=%s\n",favor_data->favor_ip_port[i]); } fclose(favor_fp); return 1;}/*收藏夾數據回寫入特定文件*/void favor_write_to_txt(FAVOR_DATA *favor_data){ FILE *favor_fp; int i; char total[6]; favor_fp=fopen(MY_FAVOR_TXT,"w+"); if(NULL==favor_fp) { printf("can't open file %s\n",MY_FAVOR_TXT); exit(-1); } /*寫入總數*/ i_to_a(total,favor_data->favor_total); strcat(total,"\n"); fputs(total,favor_fp); DPRINTF("%s",total); /*寫入網址*/ favor_data->favor_current=-1; for(i=0;i<favor_data->favor_total;i++) { do { favor_data->favor_current=(favor_data->favor_current+1) %ORI_TOTAL; }while(favor_data->favor_name[favor_data->favor_current]==NULL); fputs(favor_data->favor_name[favor_data->favor_current],favor_fp); fputc('\n',favor_fp); fputs(favor_data->favor_ip_port[favor_data->favor_current],favor_fp); fputc('\n',favor_fp); } DPRINTF("w2t\n"); fclose(favor_fp);}/*收藏夾初始化準備函數*/void favor_prepare(FAVOR_DATA *favor_data){ int ret; /*從MY_FAVOR_TXT中讀取收藏夾網頁內容*/ ret=favor_read_from_txt(favor_data); if(ret==-1) { printf("MY_FAVOR_TXT is empty!!\n"); //OVER_FAVOR=0; } ORI_TOTAL=favor_data->favor_total;}/*將收藏夾數據拷給瀏覽器數據*/void favor_data_to_wsd(struct websitedata *wsd,FAVOR_DATA *favor_data){ /*使網頁指針指向下一個空網頁,以便給空網頁輸入網址*/ if(wsd->website_total!=0) { if((wsd->website_head+1)%WEBDATASIZE==wsd->website_tail) { wsd->website_tail=(wsd->website_tail+1)%WEBDATASIZE; wsd->website_head=(wsd->website_head+1)%WEBDATASIZE; wsd->website_total=10; } else { wsd->website_head=(wsd->website_head+1)%WEBDATASIZE; wsd->website_total++; } } else { wsd->website_total++; } /*將所選的網址信息拷給wsd*/ // if(SELECTED_FAVOR&&favor_data->favor_total!=0) { DPRINTF("use the favor web to download!!!\n"); if(wsd->web_data[wsd->website_head].ip_port) { free(wsd->web_data[wsd->website_head].ip_port); wsd->web_data[wsd->website_head].ip_port=NULL; } wsd->web_data[wsd->website_head].ip_port= (char *)malloc(strlen(favor_data->favor_ip_port[favor_data->favor_current])+1); strcpy(wsd->web_data[wsd->website_head].ip_port, favor_data->favor_ip_port[favor_data->favor_current]); } else { DPRINTF("enter the default web!!!\n"); if(wsd->web_data[wsd->website_head].ip_port) { free(wsd->web_data[wsd->website_head].ip_port); wsd->web_data[wsd->website_head].ip_port=NULL; } wsd->web_data[wsd->website_head].ip_port= (char *)malloc(strlen(DEFAULT_WEB_SITE)+1); strcpy(wsd->web_data[wsd->website_head].ip_port,DEFAULT_WEB_SITE); }}/*判斷點了觸摸屏具體位置*/int Favor_InWhichArea(TS_RET *p){ if(p->x<LFA) { return FAVOR_DEL; } if(p->x>RFA) { return FAVOR_B_IME; } return 0;}/*刪除當前的收藏夾網址*/void do_favor_del(FAVOR_DATA *favor_data){ if(favor_data->favor_total==0) { DPRINTF("NO MORE TO DEL!!\n");#ifdef TTSTTS T2S_t2s("收藏夾已為空");#endif return; } /*刪除當前網址*/ if(favor_data->favor_name[favor_data->favor_current]) free(favor_data->favor_name[favor_data->favor_current]); if(favor_data->favor_ip_port[favor_data->favor_current]) free(favor_data->favor_ip_port[favor_data->favor_current]); favor_data->favor_name[favor_data->favor_current]=NULL; favor_data->favor_ip_port[favor_data->favor_current]=NULL; favor_data->favor_total--; FAVOR_DEL_FLG=1; /*若還有網址,使favor_data->favor_current指向存在網址的數據*/ if(favor_data->favor_total!=0) { do { favor_data->favor_current=(favor_data->favor_current+1) %ORI_TOTAL; }while(favor_data->favor_name[favor_data->favor_current]==NULL); }#ifdef TTSTTS T2S_t2s("刪除成功");#endif }/*收藏夾上劃處理函數*/void do_favor_up(FAVOR_DATA *favor_data){ if(favor_data->favor_total==0) {#ifdef TTSTTS T2S_t2s("收藏夾已為空");#endif return; } do { if(favor_data->favor_current==0) favor_data->favor_current=ORI_TOTAL-1; else favor_data->favor_current--; }while(favor_data->favor_name[favor_data->favor_current]==NULL); DPRINTF("%s\n",favor_data->favor_name[favor_data->favor_current]); DPRINTF("%s\n",favor_data->favor_ip_port[favor_data->favor_current]); //語音輸出"favor_data->favor_name[favor_data->favor_current]";#ifdef TTSTTS T2S_t2s(favor_data->favor_name[favor_data->favor_current]); #endif}/*收藏夾下劃處理函數*/void do_favor_down(FAVOR_DATA *favor_data){ if(favor_data->favor_total==0) {#ifdef TTSTTS T2S_t2s("收藏夾已為空");#endif return; } do { favor_data->favor_current=(favor_data->favor_current+1)%ORI_TOTAL; }while(favor_data->favor_name[favor_data->favor_current]==NULL); DPRINTF("%s\n",favor_data->favor_name[favor_data->favor_current]); DPRINTF("%s\n",favor_data->favor_ip_port[favor_data->favor_current]); //語音輸出"favor_data->favor_name[favor_data->favor_current]";#ifdef TTSTTS T2S_t2s(favor_data->favor_name[favor_data->favor_current]);#endif}/*收藏夾原地處理函數*/void do_favor_stay(FAVOR_DATA *favor_data){ if(favor_data->favor_total==0) {#ifdef TTSTTS T2S_t2s("收藏夾已為空");#endif return; } DPRINTF("%s\n",favor_data->favor_name[favor_data->favor_current]); DPRINTF("%s\n",favor_data->favor_ip_port[favor_data->favor_current]); //語音輸出"favor_data->favor_name[favor_data->favor_current]";#ifdef TTSTTS T2S_t2s(favor_data->favor_name[favor_data->favor_current]);#endif}/*收藏夾的單擊處理線程*/void * favor_click(void *data){ dc=1; switch(Favor_InWhichArea(&p1)) {/*添加功能處理代碼*/ case FAVOR_DEL: web_func=FAVOR_DEL; //語音輸出"刪除網址"#ifdef TTS T2S_t2s("刪除網址");#endif DPRINTF("FAVOR_DEL!!!\n"); break; case FAVOR_B_IME: web_func=FAVOR_B_IME; //語音輸出"輸入網址"#ifdef TTS T2S_t2s("輸入網址");#endif DPRINTF("FAVOR_B_EIM!!!\n"); break; default: switch(upd_or_downd(&p1,&p2)) {/*添加語音處理網頁內容的代碼*/ case UP: do_favor_up((FAVOR_DATA *)data); dc=0; break; case DOWN: do_favor_down((FAVOR_DATA *)data); dc=0; break; case STAY:/*雙擊選擇網址*/ web_func=0; do_favor_stay((FAVOR_DATA *)data); break; } }}/*收藏夾雙擊響應函數*/void do_favor_double_click(FAVOR_DATA *favor_data){ switch(web_func) { case FAVOR_DEL: do_favor_del(favor_data); DPRINTF("DO FAVOR_DEL!!!\n"); break; case FAVOR_B_IME: OVER_FAVOR=0;/*退出TS操作*/ SELECTED_FAVOR=0;/*用盲文輸入法輸入網址*/ DPRINTF("DO FAVOR_B_EIM!!!\n"); break; default: OVER_FAVOR=0;/*退出TS操作*/ SELECTED_FAVOR=1;/*選擇了收藏夾網址*/ break; }}/*執行收藏夾*/void do_favor(struct websitedata *wsd){ pthread_t th_click=-1; struct timeval t1,t2; void * retval; struct TS_DATE *b=&ts_dat; int fc=1; FAVOR_DATA favor_data; ts_date_init(b); FAVOR_DEL_FLG=0; ShowBitmap(0,0,BGBMPFAV); DPRINTF("do favor!!\n"); /*準備工作*/ favor_data_init(&favor_data); favor_prepare(&favor_data); /*語音提示信息*/ //#ifdef TTS T2S_t2s("歡迎使用收藏夾,請選擇網址");#endif /*觸摸操作*/ while(OVER_FAVOR){ read(ts_fd,&b->ts_ret,1); copy_ts_ret(&p1,&b->ts_ret); if(b->ts_ret.pressure!=0){/*pressure連續出現0,0*/ do{ read(ts_fd,&b->ts_ret,1); }while(b->ts_ret.pressure); } gettimeofday(&t2,NULL); copy_ts_ret(&p2,&b->ts_ret); if(fc) {fc=0;goto click1;} if(dc==1&&IsSmallTime(&t1,&t2)&&IsSmallPosition(&p2,&p4)) { if(th_click>0){ pthread_cancel(th_click); } DPRINTF("double click!!!\n"); /*雙擊代碼*/ do_favor_double_click(&favor_data); dc=0; continue; } if(th_click>0){ pthread_cancel(th_click); //添加停止語音合成代碼#ifdef TTS T2S_stop();#endif }click1: pthread_create(&th_click, NULL, favor_click ,(void *)(&favor_data)); copy_time(&t1,&t2); copy_ts_ret(&p3,&p1); copy_ts_ret(&p4,&p2); } /*將所選的網址信息拷給wsd*/ favor_data_to_wsd(wsd,&favor_data); /*收藏夾退出工作*/ OVER_FAVOR=1; dc=0; /*如果需要,回寫文件*/ if(FAVOR_DEL_FLG) favor_write_to_txt(&favor_data); /*釋放收藏夾數據空間*/ free_favor_data(&favor_data);}int add_favor_web(struct Web_Data *wd){ FAVOR_DATA favor_data; //進入收藏夾或添加網頁圖片 ShowBitmap(0,0,BGBMPADDW);#ifdef TTS T2S_t2s(",[i1],請按左ping2進入收藏夾,右ping2添加網址,[i0],");#endif if(left_or_right()) return 0; #ifdef TTS T2S_stop();#endif favor_data_init(&favor_data); favor_read_from_txt(&favor_data); /*使用wd的title或者調用B_IME*/ DPRINTF("wd->title=%s\n",wd->title); DPRINTF("wd->ip_port=%s\n",wd->ip_port); DPRINTF("copy start\n"); DPRINTF("favor_data.favor_total=%d\n",favor_data.favor_total); favor_data.favor_name[favor_data.favor_total] =(char *)malloc(strlen(wd->title)+1); DPRINTF("favor_data.favor_name[favor_data.favor_total]=%d\n",favor_data.favor_name[favor_data.favor_total]); if(NULL==favor_data.favor_name[favor_data.favor_total]) { printf("malloc error!!\n"); } strcpy(favor_data.favor_name[favor_data.favor_total],wd->title); DPRINTF("favor_data.favor_name[favor_data.favor_total]=%s\n", favor_data.favor_name[favor_data.favor_total]); DPRINTF("copy name end\n"); DPRINTF("strlen(wd->ip_port)+1=%d\n",strlen(wd->ip_port)+1); DPRINTF("favor_data.favor_ip_port[%d]=%d\n",favor_data.favor_total,favor_data.favor_ip_port[favor_data.favor_total]); favor_data.favor_ip_port[favor_data.favor_total] =(char *)malloc(strlen(wd->ip_port)+1); if(NULL==favor_data.favor_ip_port[favor_data.favor_total]) { printf("malloc error!!\n"); } strcpy(favor_data.favor_ip_port[favor_data.favor_total],wd->ip_port); DPRINTF("favor_data.favor_ip_port[favor_data.favor_total]=%s\n", favor_data.favor_ip_port[favor_data.favor_total]); DPRINTF("copy ip_port end\n"); DPRINTF("favor_data.favor_total=%d\n",favor_data.favor_total); favor_data.favor_total++; ORI_TOTAL=favor_data.favor_total; favor_write_to_txt(&favor_data); free_favor_data(&favor_data);#ifdef TTS T2S_t2s("添加成功");#endif return 1;}#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -