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

📄 softlock.cpp

📁 moto e2键盘软锁第三版
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		sprintf(nowinfo,"%d,%d,%d,%d,%d,%d,%d,%s",timeinfo->tm_year,timeinfo->tm_mon+1,timeinfo->tm_mday,timeinfo->tm_hour,timeinfo->tm_min,UTIL_GetBatteryLevel(),UTIL_GetSignalQuality(),str_default);		if(strcmp(curinfo,nowinfo))	//当前状态信息是否和之前的相同		{			strcpy(curinfo,nowinfo);			if(flag_update_part)				flag_update_part=false;	//如果不同重绘所有			update();						//调用重绘		}			}		else	{		char nowinfo[300];		sprintf(nowinfo,"%d,%d,%d,%d,%d,%d,%d,%s",timeinfo->tm_year,timeinfo->tm_mon+1,timeinfo->tm_mday,timeinfo->tm_hour,timeinfo->tm_min,UTIL_GetBatteryLevel(),UTIL_GetSignalQuality(),str_default);		if(strcmp(curinfo,nowinfo))		{			strcpy(curinfo,nowinfo);			if(flag_update_part)				flag_update_part=false;			update();		}		else		{			if(!flag_update_part)				flag_update_part=true;	//如果只有秒针改变,只绘制部分			update( clk_center_x - sec_len ,clk_center_y - sec_len ,sec_len +sec_len , sec_len+sec_len);//调用重绘		}	}	ZKbMainWidget::timerEvent(e);	}void MyZKbMain::slotTimeout()		//解锁超时处理{	if(flag_w_unlock)	{		flag_w_unlock=false;		strcpy(str_default,KEY_LOCKING_STR);		update();	}	else	{		strcpy(str_default,KEY_LOCKING_STR);//		update();		}//	QTimer::singleShot(500, this, SLOT(slotTimeout()));}MyZKbMain::~MyZKbMain(){}int MyZKbMain::ini_soft()	//初始化过程{//	char inifile[]={"softlock.ini"};	flag_update_part=false;	flag_media_key=false;	pre_main_db_size=get_main_db_size();	now_main_db_size=0;	memset(curinfo,0,sizeof curinfo);	FILE * fp=fopen( "softlock.ini","r");	if(fp!=NULL)	{		ulock_timeout=abs(getintformini(fp,"ulock_timeout"))+1;		start_x=getintformini(fp,"start_x");		start_y=getintformini(fp,"start_y");		sec_len=getintformini(fp,"sec_len");		min_len=getintformini(fp,"min_len");		hou_len=getintformini(fp,"hou_len");		clk_center_x=getintformini(fp,"clk_center_x");		clk_center_y=getintformini(fp,"clk_center_y");		dot_r=getintformini(fp,"dot_r");				sec_width=getintformini(fp,"sec_width");		min_width=getintformini(fp,"min_width");		hou_width=getintformini(fp,"hou_width");		sec_color=getintformini(fp,"sec_color");		min_color=getintformini(fp,"min_color");		hou_color=getintformini(fp,"hou_color");		dig_color=getintformini(fp,"dig_color");		date_color=getintformini(fp,"date_color");		color_default=getintformini(fp,"color_default");		dot_color=getintformini(fp,"dot_color");	//	dig_size=getintformini(fp,"dig_size");	//	date_size=getintformini(fp,"date_size");		font_size=getintformini(fp,"font_size");				date_flag=getintformini(fp,"date_flag");		date_x=getintformini(fp,"date_x");		date_y=getintformini(fp,"date_y");		dig_format=getintformini(fp,"dig_format");		dig_x=getintformini(fp,"dig_x");		dig_y=getintformini(fp,"dig_y");		x_default=getintformini(fp,"x_default");		y_default=getintformini(fp,"y_default");		flag_default=getintformini(fp,"flag_default");				battery_w=getintformini(fp,"battery_w");		battery_h=getintformini(fp,"battery_h");		battery_x=getintformini(fp,"battery_x");		battery_y=getintformini(fp,"battery_y");		battery_color=getintformini(fp,"battery_color");		battery_r=getintformini(fp,"battery_r");		signal_w=getintformini(fp,"signal_w");		signal_space=getintformini(fp,"signal_space");		signal_min=getintformini(fp,"signal_min");		signal_max=getintformini(fp,"signal_max");		signal_x=getintformini(fp,"signal_x");		signal_y=getintformini(fp,"signal_y");		signal_color=getintformini(fp,"signal_color");		fclose(fp);	}	strcpy(str_default,KEY_LOCKING_STR);	time_t rawtime;	time ( &rawtime );	timeinfo = localtime ( &rawtime );/*	sprintf (contect_start, "%4d-%02d-%02d %02d:%02d:%02d",1900+timeinfo->tm_year, 1+timeinfo->tm_mon,timeinfo->tm_mday,timeinfo->tm_hour,timeinfo->tm_min,timeinfo->tm_sec);			ori_h=timeinfo->tm_hour;	ori_m	=timeinfo->tm_min;	ori_s=timeinfo->tm_sec;*/	flag_w_unlock=false;	clk_x_arr[4]=clk_center_x;	clk_y_arr[4]= clk_center_y ;		clk_x_arr[CLK_SEC+2]=0;		clk_y_arr[CLK_MIN+2]=0;		return 0;}void MyZKbMain::keyReleaseEvent(QKeyEvent* k)	//按键释放{	switch (k->key())	{		//5		case 4100:		case 53:			//软件信息//			sprintf(str_default,"Letterb @scnu_cs_05\nboy.letterb@yahoo.com.cn");			sprintf(str_default,"Letterb @scnu_cs_05\nboy.letterb@yahoo.com.cn");			if(flag_update_part)				flag_update_part=false;			update();			QTimer::singleShot(ulock_timeout, this, SLOT(slotTimeout()));					break;		case 42:	//*键释放处理			flag_w_unlock=true;			sprintf(str_default,KEY_ULOCK_STR);			if(flag_update_part)				flag_update_part=false;			update();			QTimer::singleShot(ulock_timeout, this, SLOT(slotTimeout()));		break;		case 4154:			if(flag_w_unlock)	//右键释放处理				close();			//关闭软件			else			{				sprintf(str_default,KEY_NOTIFY);	//			update();				QTimer::singleShot(ulock_timeout, this, SLOT(slotTimeout()));					}		break;		case 35:			if(flag_w_unlock)			{				if(sec_width==0)					sec_width=1;				else					{						sec_width=0;						update();										}			}			else			{				sprintf(str_default,KEY_NOTIFY);				QTimer::singleShot(ulock_timeout, this, SLOT(slotTimeout()));			}			break;		default:			if(!flag_media_key)				strcpy(str_default,KEY_NOTIFY);			else			{				flag_media_key=false;				return QWidget::keyReleaseEvent(k);	//让系统响应音乐键			}//			update();			QTimer::singleShot(ulock_timeout, this, SLOT(slotTimeout()));		break;	}//	return QWidget::keyPressEvent(k);}void MyZKbMain::keyPressEvent(QKeyEvent* k)	//按下处理{	switch (k->key())	{		//5		case 4118:		case 4119:		case 4171:		case 4172:		case 4169://音乐键按下处理			if(flag_w_unlock)			{				flag_media_key=true;				strcpy(str_default,KEY_MEDIA);				return QWidget::keyPressEvent(k);			}		break;		default:		break;	}}void MyZKbMain::paintEvent(QPaintEvent * pe){	int  blt_x ;int blt_y ;int blt_w ; int blt_h;		QPixmap	mypix;//( "softlock.png");	mypix=myimg;	//将背景图作为画布	QRect ur(0,0,240,320);	//用户可见区域	ur=pe->rect();					QPainter p(&mypix);	//定义画笔	p.begin(&mypix);		//开始绘制//	p.drawImage(clk_center_x-clockimg.width()/2,clk_center_y-clockimg.height()/2,clockimg);//	p.drawImage(0,0,myimg,240,0,49,49);	QFont f("AMCSL",font_size);	//设置字体大小	p.setFont(f);	if(!flag_update_part)	//重绘所有	{		drawsignal(p);		drawbattery(p);		drawdate(p);		drawclock(p,  blt_x , blt_y , blt_w ,  blt_h);	}	else		drawclock(p,  blt_x , blt_y ,blt_w , blt_h);//重绘部分	if(!flag_update_part)	{		QPen pen(color_default,1);		p.setPen(pen);				p.drawText(x_default,y_default,300,240,flag_default,ChineseAndEnglish(str_default));	}//	p.drawImage(120,160,dotimg,0,0,-1,-1);	p.end();		//结束绘制	setWFlags(getWFlags() | Qt::WRepaintNoErase);	//设置无背景色*****	if(!flag_update_part)		bitBlt(   this,  start_x , start_y ,  &mypix,   0,   0,   SCREEN_W,   SCREEN_H   );//将内存中画布复制到屏幕	else		{			bitBlt(   this,  start_x +blt_x , start_y + blt_y,  &mypix,   blt_x,   blt_y,   blt_w,   blt_h   );  //部分内存复制//			printf(" blt_x=%d,   blt_y=%d,   blt_w=%d,   blt_h=%d\n", blt_x,   blt_y,   blt_w,   blt_h);		//bitBlt(   this,  start_x + clk_center_x - sec_len, start_y + clk_center_y - sec_len ,  &mypix,   clk_center_x - sec_len ,clk_center_y - sec_len ,sec_len +sec_len , sec_len+sec_len);		 //0,   0,   SCREEN_W,   SCREEN_H   );   		}	QWidget::paintEvent( pe);}int MyZKbMain::getintformini(FILE * fp, char * keyname){		int value;	int i;	char buf[50];	char tmp[20];	char *p;	fseek(fp,0,SEEK_SET);	memset(tmp,0,sizeof tmp);//    FILE *fp;//    if((fp=fopen(filename,"r"))==NULL)   //     printf("error\n");    while(fgets(buf,sizeof buf,fp))    		{     		if(buf[0]=='#')    			continue;	      if(p=strstr(buf,keyname))		         {			      p+=strlen(keyname);				p++;				i=0;		      while(*p)		      		{		      	tmp[i++]=*p;		      	p++;		      		}		     	tmp[i]='\0';	//			printf(tmp);				break;			}	    }//    fclose (fp);    value=atoi(tmp);	return value;}void MyZKbMain::GetDayOf(Date &tdate,QString &strLuner) { /*天干名称*/ const char *cTianGan[] = {"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"}; /*地支名称*/ const char *cDiZhi[] = {"子","丑","寅","卯","辰","巳","午", "未","申","酉","戌","亥"}; /*属相名称*/ const char *cShuXiang[] = {"鼠","牛","虎","兔","龙","蛇", "马","羊","猴","鸡","狗","猪"}; /*农历日期名*/ const char *cDayName[] = {"*","初一","初二","初三","初四","初五", "初六","初七","初八","初九","初十", "十一","十二","十三","十四","十五", "十六","十七","十八","十九","二十", "廿一","廿二","廿三","廿四","廿五", "廿六","廿七","廿八","廿九","三十"}; /*农历月份名*/ const char *cMonName[] = {"*","正","二","三","四","五","六", "七","八","九","十","十一","腊"}; /*公历每月前面的天数*/ const int wMonthAdd[12] = {0,31,59,90,120,151,181,212,243,273,304,334}; /*农历数据*/ const int wNongliData[100] = {2635,333387,1701,1748,267701,694,2391,133423,1175,396438 ,3402,3749,331177,1453,694,201326,2350,465197,3221,3402 ,400202,2901,1386,267611,605,2349,137515,2709,464533,1738 ,2901,330421,1242,2651,199255,1323,529706,3733,1706,398762 ,2741,1206,267438,2647,1318,204070,3477,461653,1386,2413 ,330077,1197,2637,268877,3365,531109,2900,2922,398042,2395 ,1179,267415,2635,661067,1701,1748,398772,2742,2391,330031 ,1175,1611,200010,3749,527717,1452,2742,332397,2350,3222 ,268949,3402,3493,133973,1386,464219,605,2349,334123,2709 ,2890,267946,2773,592565,1210,2651,395863,1323,2707,265877}; static int wCurYear,wCurMonth,wCurDay; static int nTheDate,nIsEnd,m,k,n,i,nBit; //char szNongli[30], szNongliDay[10],szShuXiang[10]; /*---取当前公历年、月、日-- -*/ wCurYear = tdate.year; wCurMonth = tdate.month; wCurDay = tdate.day;/*---计算到初始时间1921年2月8日的天数:1921-2-8(正月初一)---*/ nTheDate = (wCurYear - 1921) * 365 + (wCurYear - 1921) / 4 + wCurDay + wMonthAdd [wCurMonth - 1] - 38; if((!(wCurYear % 4)) && (wCurMonth > 2)) nTheDate = nTheDate + 1; /*--计算农历天干、地支、月、日---*/ nIsEnd = 0; m = 0; while(nIsEnd != 1) { 	if(wNongliData[m] < 4095) 		k = 11; 	else 		k = 12; 	n = k; 	while(n>=0) 	{ 		//获取wNongliData(m)的第n个二进制位的值 		nBit = wNongliData[m]; 		for(i=1;i<n+1;i++) 		nBit = nBit/2; 		nBit = nBit % 2; 		if (nTheDate <= (29 + nBit)) 		{ 			nIsEnd = 1; 			break; 		} 		nTheDate = nTheDate - 29 - nBit; 		n = n - 1; 	} 	if(nIsEnd) 		break; 	m = m + 1; } wCurYear = 1921 + m; wCurMonth = k - n + 1; wCurDay = nTheDate; if (k == 12) { 	if (wCurMonth == wNongliData[m] / 65536 + 1) 		wCurMonth = 1 - wCurMonth; 	else if (wCurMonth > wNongliData[m] / 65536 + 1) 		wCurMonth = wCurMonth - 1; } /*--生成农历天干、地支、属相 ==> wNongli--*/ strLuner = ChineseAndEnglish(cShuXiang[((wCurYear - 4) % 60) % 12])          + ChineseAndEnglish("\(")          +ChineseAndEnglish(cTianGan[((wCurYear - 4) % 60) % 10])          +ChineseAndEnglish(cDiZhi[((wCurYear - 4) % 60) % 12])          +ChineseAndEnglish(")年");/*--生成农历月、日 ==> wNongliDay--*/ if (wCurMonth < 1){ 	strLuner = strLuner + ChineseAndEnglish("闰")         	+ ChineseAndEnglish(cMonName[-1 * wCurMonth]);}else{	strLuner = strLuner + ChineseAndEnglish(cMonName[wCurMonth]);}strLuner = strLuner + ChineseAndEnglish("月")           + ChineseAndEnglish(cDayName[wCurDay]);} int main( int argc, char **argv ){	ZApplication* a = new ZApplication( argc, argv );	MyZKbMain*zmain=new MyZKbMain(argv[1]);	a->setMainWidget( zmain );    	zmain->show();	a->exec();	delete zmain;	delete a;   	return argc;}#include"softlock.moc"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -