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

📄 mmitoolkit.c

📁 是一个手机功能的模拟程序
💻 C
📖 第 1 页 / 共 2 页
字号:
	}
	 		
    return 1;
  }
  return 0;
  
}


static void timer_editor(T_MFW_HND win, USHORT event, SHORT value, void * parameter)
{
	T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
	T_timer_edt * edt_data = (T_timer_edt *)win_data->user;
	T_MFW_WIN     * win_data1  = ((T_MFW_HDR *)timer_win)->data;
    timerdata* data1   = (timerdata*)win_data1->user;
   	T_DISPLAY_DATA display_info;


    timerdata* timer_data = (timerdata *)parameter;//tida main data

	
	TRACE_EVENT("timer_editor");

  /*
   * depending on event
   */
  switch (event)
  {
	case MIDDLE:
	    TRACE_EVENT("MIDDLE");
      	if(!timenumber)
      	   {  
        	statusflag=TIMER_START;
       		StartPlayByReason(ALARMPLAY,0);
       		tim_stop(edt_data->info_tim);
       		//StartVibrator();
            display_info.KeyEvents    = KEY_CLEAR | KEY_RIGHT | KEY_LEFT;
            display_info.LeftSoftKey  = '\0';
            display_info.RightSoftKey = TxtSoftConfirm;
            display_info.TextString   = '\0';
            display_info.TextString2  = '\0';
            display_info.TextId2     =TxtTimeup;
            display_info.TextId      = '\0';
            display_info.Time       = 30*ONE_SECS;

            display_info.Callback     = (T_VOID_FUNC)timer_memo_dialog_cb;
            /*
             * Call Info Screen
             */
            info_dialog (win, &display_info);
            //statusflag=END;
      		}
       	else{
       		timStart(edt_data->info_tim);
       		}
       	winShow(win);
       	break;
	case TIMER_START:		
		edt_data->LeftKey=FALSE;
		Sprintf((char*)edt_data->elapsed_time,"%s","00:00:00");
		winShow(edt_data->editor_win);		
		break;
   	case END:
		timer_edt_destroy(win);
		break;
	default:
		break;
  }
}

static int timer_edt_kbd_cb (MfwEvt e, MfwKbd *kc)
{

   T_MFW_HND win = mfw_parent(mfw_header());

   T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
   T_timer_edt * edt_data = (T_timer_edt *)win_data->user;//tida edt data

   T_MFW_WIN * win_timer =((T_MFW_HDR *)edt_data->parent_win)->data;
   timerdata* timer_data = (timerdata*)win_timer->user; // tida main data
   T_DISPLAY_DATA display_info;
   int flag=1;
   int t;

    char lin1[12];
   char lin2[12];
 
   TRACE_EVENT("timer_edt_kbd_cb");
    if(statusflag==TIMER_START)
    	{
		switch(kc->code)
		{
			case KCD_0:
			case KCD_1:
			case KCD_2:
			case KCD_3:
			case KCD_4:
			case KCD_5:
			case KCD_6:
			case KCD_7:
			case KCD_8:
			case KCD_9:
			if(edt_data->index NEQ 7)
				{
				if((edt_data->index NEQ 1)&&(edt_data->index NEQ 4))
					{
					        edt_data->elapsed_time[edt_data->index] = '0' + kc->code;
							//edtChar(edt_data->editor_handle,edt_data->elapsed_time[edt_data->index]);
							edt_data->index++;
					}
				else
					{
					        edt_data->elapsed_time[edt_data->index] = '0' + kc->code;
							//edtChar(edt_data->editor_handle,edt_data->elapsed_time[edt_data->index]);
							edt_data->index++;
							/*edtChar(edt_data->editor_handle,':');
							edt_data->elapsed_time[edt_data->index] = ':';*/
							//edtChar(edt_data->editor_handle,ecRight);
							edt_data->index++;
					}
				}
			else
				{
				if(flag)
			    		{
			              edt_data->elapsed_time[edt_data->index] = '0' + kc->code;
				          //edtChar(edt_data->editor_handle,edt_data->elapsed_time[edt_data->index]);
				          //edtChar(edt_data->editor_handle,ecTop);
				          edt_data->index=0;
				          //t=(int)edt_data->elapsed_time[4]-48;
				          //flag=0;
			             }
		             else
			             {
			              edt_data->elapsed_time[edt_data->index] =(char)(t-48);
				          ///edtChar(edt_data->editor_handle,edt_data->elapsed_time[edt_data->index]);
			              }    
				}
	if(((((int)edt_data->elapsed_time[0]-48)*10+((int)edt_data->elapsed_time[1]-48))>=24)||((((int)edt_data->elapsed_time[3]-48)*10+((int)edt_data->elapsed_time[4]-48))>59))
   		{
   		  memset((char*)edt_data->elapsed_time,0,sizeof(edt_data->elapsed_time));
   		  edt_data->index=0;
   		  display_info.KeyEvents    = KEY_OK | KEY_RIGHT | KEY_LEFT;
          display_info.LeftSoftKey  = '\0';
          display_info.RightSoftKey = '\0';
          display_info.TextString   = '\0';
          display_info.TextString2  = '\0';
          display_info.TextId2     =TxtInputError;
          display_info.TextId      = '\0';
          display_info.Time       = ONE_SECS;

          display_info.Callback     = (T_VOID_FUNC)timer_memo_dialog_cb;
          /*
           * Call Info Screen
           */
          info_dialog(edt_data->editor_win, &display_info);
		}
			  /*  if(edt_data->index < 8)
					{
						if((edt_data->index NEQ 2)&&(edt_data->index NEQ 5))
						{
							edt_data->elapsed_time[edt_data->index] = '0' + kc->code;
							edtChar(edt_data->editor_handle,edt_data->elapsed_time[edt_data->index]);
							edt_data->index++;
						}
						if((edt_data->index EQ 2)||(edt_data->index EQ 5))
						{
							edtChar(edt_data->editor_handle,':');
							edt_data->elapsed_time[edt_data->index] = ':';
							edt_data->index++;
						}
					}*/		
			 winShow(edt_data->editor_win);
				break;
			case KCD_LEFT:                                 /* select and ok button */
				//edtClear(edt_data->editor_handle);
   		        //edtHide(edt_data->editor_handle);
   		        edt_data->LeftKey=!edt_data->LeftKey;
				timenumber=chartoint((char*)edt_data->elapsed_time);
				timer_flag=TRUE;
				statusflag=MIDDLE;
				SEND_EVENT(win, statusflag, 0, 0);
				winShow(win);
			break;
			case KCD_RIGHT:                                /* back to previous menu */
				       TRACE_EVENT("KCD_RIGHT");
				       tim_stop(edt_data->info_tim);
				       timer_edt_destroy(edt_data->editor_win);					
				       timerdestroy(timer_win);
            break;
			case KCD_MNUUP:                                /* cursor to right  */
					edt_data->index++;
					edtChar(edt_data->editor_handle,ecRight);

					if(((edt_data->index EQ 2)||(edt_data->index EQ 5)))
					{
						edt_data->index++;
						edtChar(edt_data->editor_handle,ecRight);
					}

				 break;
			case KCD_HUP:
			case KCD_MNUDOWN:                            /* cursor to left or clear  */
				if(edt_data->index EQ 0)
						;
			    else
				 edt_data->index--;

				if((edt_data->index EQ 2)||(edt_data->index EQ 5))
				{
				   if(edt_data->index EQ 0)
					 ;
				   else
					 edt_data->index--;

					 edtChar(edt_data->editor_handle,ecLeft);
					 edtChar(edt_data->editor_handle,ecLeft);
				}
				else
				  edtChar(edt_data->editor_handle,ecLeft);				
				break;
			default:
				return MFW_EVENT_CONSUMED;
			}
		}
    else if(statusflag==MIDDLE)
    	{
    	switch(kc->code)
    		{
    		case KCD_LEFT:    	    
    	    edt_data->LeftKey=!edt_data->LeftKey;
  	        //timenumber=0;
  		    //statusflag=TIMER_START;
  		    if(edt_data->LeftKey)
  		        tim_start(edt_data->info_tim);
  		    else
  		    	tim_stop(edt_data->info_tim);
  		    //SEND_EVENT(win, statusflag, 0, 0);
  		    winShow(win);
  		    //timerdestroy(win);
  		    break;
  		    case KCD_RIGHT:
  		    	if(!edt_data->LeftKey)
  		    		{
  		    		  timenumber=0;
  		              statusflag=TIMER_START;
  		    		}
  			    SEND_EVENT(edt_data->editor_win, END, 0, 0);
  			    timerdestroy(timer_win);
  		    break;
  		    default:
  		    break;
    		}
    	}
    else{
    	switch(kc->code)
    		{
    		default:    		  			
  			SEND_EVENT(edt_data->editor_win, END, 0, 0);
  			timerdestroy(timer_win);
    		break;
    		}
    	}
    return MFW_EVENT_CONSUMED;
}


void timer_edt_destroy(T_MFW_HND own_window)
{
  T_timer_edt * data ;
  T_MFW_WIN * win;


  if (own_window)
  {
	  TRACE_FUNCTION ("timer_edt_destroy");

	  win = ((T_MFW_HDR *)own_window)->data;
	  data = (T_timer_edt *)win->user;

	  kbd_delete(data->kbd_handle);
      win_delete (own_window);

	  if(data)
	  {
          //edt_delete(data->editor_handle);
          
	      FREE_MEMORY((void *)data,(sizeof(T_timer_edt)));
	  }
   }
}




static T_MFW_CB timer_tim_cb (T_MFW_EVENT event, T_MFW_TIM *tc)
{
  T_MFW_HND       win  = mfw_parent (mfw_header());
  T_MFW_WIN     * win_data = ((T_MFW_HDR *)win)->data;
  T_timer_edt* data = (T_timer_edt*)win_data->user;
  T_DISPLAY_DATA display_info;

  char str[8];

  TRACE_EVENT ("timer_tim_cb()");

 // switch (statusflag)
  //{
   // case MIDDLE:
      if (timenumber!=0)
      {
          TRACE_EVENT ("continue the second timer");

        timenumber--;
        // it shows here the elapsed time
        memset((char *)data->display_id1,0,sizeof(data->display_id1));
        if(timenumber/3600<10)
           	sprintf((char *)str,"0%d:",timenumber/3600);
        else
        	sprintf((char *)str,"%d:",timenumber/3600);
        strcat((char *)data->display_id1,(char *)str);
        if(timenumber%3600/60<10)
        	sprintf((char *)str,"0%d:",timenumber%3600/60);
        else
        	sprintf((char *)str,"%d:",timenumber%3600/60);
        strcat((char *)data->display_id1,(char *)str);
        if(timenumber%3600%60<10)
        	sprintf((char *)str,"0%d",timenumber%3600%60);
        else
        	sprintf((char *)str,"%d",timenumber%3600%60);
        strcat((char *)data->display_id1,(char *)str);
        strcpy(data->elapsed_time,data->display_id1);
        	
        //sprintf((char*)data->display_id1,"%2d:%2d:%2d", timenumber/3600,timenumber%3600/60,timenumber%3600%60);

        TRACE_EVENT ((char*)data->display_id1);

        //continue the second timer
        timStart (data->info_tim);
        }
      else
      	{
      	//SEND_EVENT(win, statusflag, 0, 0);
      	  timStop(data->info_tim);
      	  timer_flag=FALSE;
      	  StartPlayByReason(ALARMPLAY,0);       		
       		//StartVibrator();
          display_info.KeyEvents    = KEY_CLEAR | KEY_RIGHT | KEY_LEFT;
          display_info.LeftSoftKey  = '\0';
          display_info.RightSoftKey = TxtSoftConfirm;
          display_info.TextString   = '\0';
          display_info.TextString2  = '\0';
          display_info.TextId2     =TxtTimeup;
          display_info.TextId      = '\0';
          display_info.Time       = 30*ONE_SECS;

          display_info.Callback     = (T_VOID_FUNC)timer_memo_dialog_cb;
            /*
             * Call Info Screen
             */
          info_dialog (win, &display_info);
      	}
      //break;
//default:
 //     break;
    TRACE_EVENT("test");  


  //Update the screen
  winShow(win);


  return 0;
}

static int chartoint(char* str)
{
    int result=0,number=0;

    TRACE_EVENT("char to int");
    
/* get the number of seconds*/
    number=(int)str[1]-48+((int)str[0]-48)*10;
    result=result+number*3600;
    number=0;
    /*get the number of munites and turn it into seconds*/

     number=(int)str[4]-48+((int)str[3]-48)*10;
    result=result+number*60;
    number=0;
    /*get the number of hours and turn it into seconds*/

    number=(int)str[7]-48+((int)str[6]-48)*10;
    result=result+number;

    return result;
    
}

void timerdestroy (T_MFW_HND own_window)
{
 T_MFW_WIN     * win  = ((T_MFW_HDR *)own_window)->data;
 timerdata* data   = (timerdata*)win->user;

  TRACE_EVENT ("timerdestroy()");


 if (own_window)
  {
    /*
     * Delete WIN Handler
     */
    
    
    win_delete (own_window);
    /*
     * Free Memory
    */
   FREE_MEMORY ((void *)data, sizeof (timerdata));
  }
}

static void reset_edt_attr_sett1(U16 winPx,U16 winPy,U16 winSx,U16 winSy,U8 fgColor,U8 font,U8 mode,
					U8 *controls, char *text,U16 size,MfwEdtAttr* attr,U8 dsplTitle)
{

	attr->win.px = winPx;
	attr->win.py = winPy;
	attr->win.sx = winSx;
	attr->win.sy = winSy;
	attr->fgColor = fgColor;
	attr->font = font;
	attr->mode = mode;
	attr->controls = controls;
	attr->text = text;
	attr->size = size;
	attr->title_id=dsplTitle;
}
#endif

⌨️ 快捷键说明

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