⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ws_favor.h~

📁 it is about embeded system
💻 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 + -