📄 ws_text_op.h~
字号:
{ switch(web_func) { case FLUSH: do_flush(wsd); DPRINTF("DO FLUSH!!!\n"); break; case FORWARD: do_forward(wsd); DPRINTF("DO FORWARD!!!\n"); break; case BACKWARD: do_backward(wsd); break; case FAVOR: /*如果不是添加网页,进入收藏夹*/ if(!add_favor_web(&wsd->web_data[wsd->website_head])) { do_favor(wsd); DPRINTF("DO FAVORITE!!!\n"); NEED_DOWNLOAD_WEB=1; } else { //图片 添加成功 ShowBitmap(0,0,BGBMPMAIN); } break; case WEB_SAVE: do_web_save(wsd); DPRINTF("DO SAVE!!!\n"); break; case WEB_ADDR: do_web_addr(wsd); DPRINTF("DO WEB_ADDR!!!\n"); break; case EXIT_BACK: do_exit_back(); DPRINTF("DO EXIT!!!\n"); break; default: /*根据正文类型,进入不同方式*/ switch(can_link_or_enter(wsd)) { case 1: DPRINTF("do web link!!\n"); //添加停止语音合成代码#ifdef TTS T2S_stop();#endif do_web_link(wsd); break; case 2: DPRINTF("do text enter!!\n"); //添加停止语音合成代码#ifdef TTS T2S_stop();#endif do_text_enter(&wsd->web_data[wsd->website_head]); break; case 3: DPRINTF("do blank fill!!\n"); //添加停止语音合成代码#ifdef TTS T2S_stop();#endif do_blank_fill(wsd); break; //语音提示不可进入 default:#ifdef TTS T2S_t2s("不可进入");#endif DPRINTF("no way to link or enter!!\n"); } break; }}/*正文向上*/void do_text_up(struct websitedata *wsd){ char temp[1024]; struct Web_Data *wd=&wsd->web_data[wsd->website_head]; /*判断是否有上一个正文,或做成循环,并语音处理*/ if(wd->current->prev!=NULL&&wd->current->prev->tflag<=0) { wd->current=wd->current->prev; //语音输出"wd->current->text"#ifdef TTS switch(wd->current->tflag) { case TEXT_D: strcpy(temp,wd->current->text); if(wd->current->child!=NULL) { strcat(temp,".可进入"); } T2S_t2s(temp); break; case IP_PORT_D: get_L_text(temp,wd->current->text); strcat(temp,".可链接"); T2S_t2s(temp); break; case BLANK_D: T2S_t2s("表单,请双击填写"); break; }#endif DPRINTF("%s\n",wd->current->text); } else { //语音输出"已到达顶部"#ifdef TTS T2S_t2s("已到达顶部");#endif DPRINTF("arrived top!!\n"); }}/*正文向下*/void do_text_down(struct websitedata *wsd){ char temp[1024]; struct Web_Data *wd=&wsd->web_data[wsd->website_head]; /*判断是否有下一个正文,或,做成循环,并语音处理*/ if(wd->current->next!=NULL) { wd->current=wd->current->next; //语音输出"wd->current->text"#ifdef TTS switch(wd->current->tflag) { case TEXT_D: strcpy(temp,wd->current->text); if(wd->current->child!=NULL) { strcat(temp,".可进入"); } T2S_t2s(temp); break; case IP_PORT_D: get_L_text(temp,wd->current->text); strcat(temp,".可链接"); T2S_t2s(temp); break; case BLANK_D: T2S_t2s("表单,请双击填写"); break; }#endif DPRINTF("%s\n",wd->current->text); } else { //语音输出"已到达底部" #ifdef TTS T2S_t2s("已到达底部");#endif DPRINTF("arrived button!!\n"); }}/*单击正文*/void do_text_stay(struct websitedata *wsd){ char temp[1024]; struct Web_Data *wd=&wsd->web_data[wsd->website_head]; //printf("website_total=%d\n",wsd->website_total); web_func=0; //语音输出当前正文内容#ifdef TTS DPRINTF("wd->current->tflag=%d",wd->current->tflag); switch(wd->current->tflag) { case TEXT_D: strcpy(temp,wd->current->text); if(wd->current->child!=NULL) { strcat(temp,".可进入"); } T2S_t2s(temp); break; case IP_PORT_D: get_L_text(temp,wd->current->text); strcat(temp,".可链接"); T2S_t2s(temp); break; case BLANK_D: T2S_t2s("表单,请双击填写"); break; }#endif DPRINTF("%s\n",wd->current->text);}/*单击处理*/void * web_show_click(void *data){/*web_show的单击处理线程*/ dc=1; switch(WebShow_InWhichArea(&p1)) {/*添加功能处理代码*/ case FLUSH: web_func=FLUSH; //语音输出"刷新"#ifdef TTS T2S_t2s("刷新");#endif DPRINTF("FLUSH!!!\n"); break; case FORWARD: web_func=FORWARD; //语音输出"前进"#ifdef TTS T2S_t2s("前进");#endif DPRINTF("FORWARD!!!\n"); break; case BACKWARD: web_func=BACKWARD; //语音输出"后退"#ifdef TTS T2S_t2s("后退");#endif DPRINTF("BACKWARD!!!\n"); break; case FAVOR: web_func=FAVOR; //语音输出"收藏夹"#ifdef TTS T2S_t2s("收藏夹");#endif DPRINTF("FAVORITE!!!\n"); break; case WEB_SAVE: web_func=WEB_SAVE; //语音输出"保存"#ifdef TTS T2S_t2s("保存");#endif DPRINTF("SAVE!!!\n"); break; case WEB_ADDR: web_func=WEB_ADDR; //语音输出"输入网址"#ifdef TTS T2S_t2s("输入网址");#endif DPRINTF("WEB_ADDR!!!\n"); break; case EXIT_BACK: web_func=EXIT_BACK; //语音输出"退出"#ifdef TTS T2S_t2s("退出");#endif DPRINTF("EXIT!!!\n"); //exit(0); break; default: switch(upd_or_downd(&p1,&p2)) {/*添加语音处理网页内容的代码*/ case UP: do_text_up((struct websitedata *)data); dc=0; DPRINTF("do drag up!!!\n"); break; case DOWN: do_text_down((struct websitedata *)data); dc=0; DPRINTF("do drag down!!!\n"); break; case STAY: do_text_stay((struct websitedata *)data); DPRINTF("clicked once in text area!!\n"); break; } }}/*正文操作主函数*/void web_show(struct websitedata *wsd){ pthread_t th_click=-1; struct timeval t1,t2; void * retval; struct TS_DATE *b=&ts_dat; int fc=1,pcret,NEED_A_L_WEB=1; ts_date_init(b); DPRINTF("%d\n",wsd->web_data[wsd->website_head].text_list_head->next); //show_wsd(wsd); //wsd->website_total=10; //DPRINTF("website_total=%d\n",wsd->website_total);while(OVER_SHOW){ /*load主界面*/ ShowBitmap(0,0,BGBMPMAIN); /*调用web下载函数*/ DPRINTF("WEB downloading...\n");#ifdef TTS T2S_option(FEMALE,5,5);#endif ShowBitmap(240,200,BGBMPDL); pcret=getHtmlFile(wsd->web_data[wsd->website_head].ip_port); DPRINTF("pcret=%d\n",pcret); //sleep(1); if(pcret==0) { printf("connect error!!!\n"); ShowBitmap(160,120,BGBMPCE);#ifdef TTS T2S_t2s("未链接到服务器,点击左半屏重试,右半屏退出操作");#endif if(select_favor())//左半屏是,右半屏否 { continue; } else { ShowBitmap(0,0,BGBMPMAIN); /*网页指针指向上一次打开的网页,返回至上一个网页的进入处*/ if(wsd->website_head-1<0) wsd->website_head=WEBDATASIZE-1; else wsd->website_head--; NEED_A_L_WEB=0; } } else if(pcret==-1) { ShowBitmap(160,120,BGBMPCE);#ifdef TTS T2S_t2s("歌曲下载失败,点击左半屏重试,右半屏取消下载");#endif if(select_favor())//左半屏是,右半屏否 { continue; } else { ShowBitmap(0,0,BGBMPMAIN); /*网页指针指向上一次打开的网页,返回至上一个网页的进入处*/ if(wsd->website_head-1<0) wsd->website_head=WEBDATASIZE-1; else wsd->website_head--; NEED_A_L_WEB=0; } } else if(pcret==2)//mp3 { //下载mp3等待图片 //开线程放歌 ShowBitmap(0,0,BGBMPMP3); play_mp3(); ShowBitmap(0,0,BGBMPMAIN); /*网页指针指向上一次打开的网页,返回至上一个网页的进入处*/ if(wsd->website_head-1<0) wsd->website_head=WEBDATASIZE-1; else wsd->website_head--; NEED_A_L_WEB=0; } if(NEED_A_L_WEB) { /*下载数据分析*/ DPRINTF("WEB analizing...\n"); htmlparser(wsd->web_data[wsd->website_head].ip_port, DOWNLOAD_FILE_NAME, WEB_DATA_FILE_NAME_A); /*下载的数据装填*/ DPRINTF("WEB LOADING...\n"); web_data_struct_load(&wsd->web_data[wsd->website_head]); NEED_DOWNLOAD_WEB=0; ClearBitmap(240,200,BGBMPDL,BGBMPMAIN); } NEED_A_L_WEB=1;/*单击,双击,划动的判定*/ while(OVER_OP){ //show_wsd(wsd); 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;} DPRINTF("p2.x=%d,p2.y=%d\n",p2.x,p2.y); DPRINTF("p4.x=%d,p4.y=%d\n",p4.x,p4.y); if(dc==1&&IsSmallTime(&t1,&t2)&&IsSmallPosition(&p2,&p4)) { if(th_click>0) { pcret=pthread_cancel(th_click); th_click=-1;// DPRINTF("pcret=%d\n",pcret); } DPRINTF("double click!!\n"); //添加双击代码 do_web_show_double_click(wsd); dc=0; if(NEED_DOWNLOAD_WEB) { break; } continue; } DPRINTF("th_click=%d\n",th_click); if(th_click>0){ pcret=pthread_cancel(th_click); th_click=-1;// DPRINTF("pcret=%d\n",pcret); //添加停止语音合成代码#ifdef TTS T2S_stop();#endif }click1: if(th_click>0) { pcret=pthread_cancel(th_click); th_click=-1;// DPRINTF("pcret=%d\n",pcret); } pthread_create(&th_click, NULL, web_show_click ,(void *)wsd); copy_time(&t1,&t2); copy_ts_ret(&p3,&p1); copy_ts_ret(&p4,&p2); }}#ifdef TTST2S_t2s("欢迎再次使用");#endif }/*wsd打印函数,用于DEBUG*/void show_wsd(struct websitedata *wsd){ int i; DPRINTF("NULL=%d,",NULL); DPRINTF("wsd->website_head=%d,",wsd->website_head); DPRINTF("wsd->website_tail=%d,",wsd->website_tail); DPRINTF("wsd->website_total=%d.\n",wsd->website_total); for(i=0;i<WEBDATASIZE;i++) { DPRINTF("wsd->web_data[%d].current->child=%d,",i,wsd->web_data[i].current->child); DPRINTF("wsd->web_data[%d].current->next=%d\n",i,wsd->web_data[i].current->next); }}void play_mp3(){ int s; int m; char c; char k[5]; int speech_back; pid_t result; result=fork(); if(result==-1) { printf("Wrong for fork!!!\n"); exit(1); } else if(result==0) { //语音#ifdef TTS T2S_t2s("歌曲下载完毕,开始播放,点屏结束"); stop_t2s("歌曲下载完毕,开始播放,点屏结束");#endif if(execlp("./madplay","madplay",MP3_NAME,NULL)<0); printf("wrong"); exit(0); } else { left_or_right(); printf("mp3 over\n"); kill(result,SIGKILL); } printf("return \n");}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -