📄 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 + -