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

📄 nxrepeat.cxx

📁 PIXIL is a small footprint operating environment, complete with PDA PIM applications, a browser and
💻 CXX
📖 第 1 页 / 共 2 页
字号:
    pThis->resetUi(REPEAT_MONTHLY);    pThis->every_box->label("Month(s)");    pThis->no_repeat->value(0);    pThis->day_repeat->value(0);    pThis->week_repeat->value(0);    pThis->month_repeat->value(1);    pThis->year_repeat->value(0);    pThis->setMonthValue();    pThis->repeatShow_ui();    pThis->month_day->show();    pThis->month_date->show();    pThis->month_box->show();    pThis->every_input->do_callback();}voidNxSchedule::repeatYearButton_callback(Fl_Widget * w, void *l){    NxSchedule *pThis = (NxSchedule *) l;    pThis->resetUi(REPEAT_YEARLY);    pThis->every_box->label("Year(s)");    pThis->no_repeat->value(0);    pThis->day_repeat->value(0);    pThis->week_repeat->value(0);    pThis->month_repeat->value(0);    pThis->year_repeat->value(1);    pThis->repeatShow_ui();    pThis->every_input->do_callback();}voidNxSchedule::getRepeatData(){    NxTodo *n = m_pCurrentItem;    static char date_buf[30];    static char repeat_num[4];    memset(date_buf, 0, sizeof(date_buf));    if (0 >= n->repeatFlag_3) {	end_list->label("No End Date");	repeatDate = 0;	every_input->value("1");    } else {	strftime(date_buf, 29, "%a %m/%d/%Y", localtime(&n->repeatFlag_3));	repeatDate = n->repeatFlag_3;	end_list->label(date_buf);	if (n->repeatFlag_2 > 99)	    n->repeatFlag_2 = 99;	if (n->repeatFlag_2 < 0)	    n->repeatFlag_2 = 0;	sprintf(repeat_num, "%d", n->repeatFlag_2);	every_input->value(repeat_num);    }    switch (n->repeatFlag_1) {    case REPEAT_NONE:	repeatDate = 0;	end_list->label("No End Date");	no_repeat->do_callback();	break;    case REPEAT_DAILY:	day_repeat->do_callback();	break;    case REPEAT_WEEKLY:	week_repeat->do_callback();	break;    case REPEAT_MONTHLY:	month_repeat->do_callback();	break;    case REPEAT_YEARLY:	year_repeat->do_callback();	break;    default:	break;    }}voidNxSchedule::setWeekValue(){    long val = m_pCurrentItem->repeatWkMonFlag;    time_t today = m_pCurrentItem->startTime;	//time(0);    tm *tt = localtime(&today);    for (int idx = 0; idx < 7; idx++)	m_WeekButtons[idx]->value(0);    if (0 == val) {	m_WeekButtons[tt->tm_wday]->value(1);	return;    }    if (REPEAT_WEEK_SUNDAY & val)	m_WeekButtons[0]->value(1);    if (REPEAT_WEEK_MONDAY & val)	m_WeekButtons[1]->value(1);    if (REPEAT_WEEK_TUESDAY & val)	m_WeekButtons[2]->value(1);    if (REPEAT_WEEK_WEDNESDAY & val)	m_WeekButtons[3]->value(1);    if (REPEAT_WEEK_THURSDAY & val)	m_WeekButtons[4]->value(1);    if (REPEAT_WEEK_FRIDAY & val)	m_WeekButtons[5]->value(1);    if (REPEAT_WEEK_SATURDAY & val)	m_WeekButtons[6]->value(1);}voidNxSchedule::setMonthValue(){    long val = m_pCurrentItem->repeatWkMonFlag;    if (0 == val) {	month_date->value(1);	month_day->value(0);	return;    }    if (REPEAT_MONTH_DAY & val) {	month_date->value(0);	month_day->value(1);    } else {	month_day->value(0);	month_date->value(1);    }}longNxSchedule::getWeekValue(){    long val = 0;    for (int idx = 0; idx < 7; idx++) {	if (m_WeekButtons[idx]->value()) {	    switch (idx) {	    case 0:		val |= REPEAT_WEEK_SUNDAY;		break;	    case 1:		val |= REPEAT_WEEK_MONDAY;		break;	    case 2:		val |= REPEAT_WEEK_TUESDAY;		break;	    case 3:		val |= REPEAT_WEEK_WEDNESDAY;		break;	    case 4:		val |= REPEAT_WEEK_THURSDAY;		break;	    case 5:		val |= REPEAT_WEEK_FRIDAY;		break;	    case 6:		val |= REPEAT_WEEK_SATURDAY;		break;	    default:		break;	    }	}    }    return val;}longNxSchedule::getMonthValue(){    if (month_date->value())	return REPEAT_MONTH_DATE;    else	return REPEAT_MONTH_DAY;}longNxSchedule::getRepeatValue(){    if (no_repeat->value())	return REPEAT_NONE;    else if (day_repeat->value())	return REPEAT_DAILY;    else if (week_repeat->value())	return REPEAT_WEEKLY;    else if (month_repeat->value())	return REPEAT_MONTHLY;    else if (year_repeat->value())	return REPEAT_YEARLY;    else	return REPEAT_NONE;}voidNxSchedule::wordValue(int val, char *th_val){    char val_buf[8];    int len;    char num_char;    sprintf(val_buf, "%d", val);    len = strlen(val_buf);    if (11 <= val && 13 >= val) {	sprintf(th_val, "%dth", val);	return;    }    num_char = val_buf[len - 1];    switch (num_char) {    case '1':	sprintf(th_val, "%dst", val);	return;    case '2':	sprintf(th_val, "%dnd", val);	return;    case '3':	sprintf(th_val, "%drd", val);	return;    default:	sprintf(th_val, "%dth", val);	return;    }}voidNxSchedule::repeatEveryInput_callback(Fl_Widget * w, void *l){    NxSchedule *pThis = (NxSchedule *) l;    long repeat_val = pThis->getRepeatValue();    int sing_flag = 0;    int dbl_flag = 0;    int th_flag = 0;    static char message_buf[100];    char repeat_str[6];    int len = 0;    char val_buf[8];    char num_buf[4];    char num_char;    int num_val = 0;    if (0 == strcmp("", pThis->every_input->value()) ||	(0 == strcmp("1", pThis->every_input->value())) ||	(0 == strcmp("0", pThis->every_input->value())) ||	(0 == strcmp("00", pThis->every_input->value()))) {	sing_flag = 1;	strcpy(repeat_str, "");    }    if (0 == strcmp("2", pThis->every_input->value())) {	dbl_flag = 1;	strcpy(repeat_str, "other");    }    strcpy(val_buf, pThis->every_input->value());    len = strlen(val_buf);    if (len > 1) {	memset(num_buf, 0, sizeof(num_buf));	strcpy(num_buf, val_buf);	num_val = atoi(num_buf);	if (11 <= num_val && 13 >= num_val) {	    th_flag = 1;	    sprintf(repeat_str, "%dth", num_val);	}    }    if (!sing_flag && !dbl_flag && !th_flag) {	num_char = val_buf[len - 1];	num_val = atoi(pThis->every_input->value());	switch (num_char) {	case '1':	    sprintf(repeat_str, "%dst", num_val);	    break;	case '2':	    sprintf(repeat_str, "%dnd", num_val);	    break;	case '3':	    sprintf(repeat_str, "%drd", num_val);	    break;	default:	    sprintf(repeat_str, "%dth", num_val);	    break;	}    }    tm *tt;    switch (repeat_val) {    case REPEAT_NONE:	sprintf(message_buf, "No Repeat");	break;    case REPEAT_DAILY:	sprintf(message_buf, "Every %s day", repeat_str);	break;    case REPEAT_WEEKLY:	pThis->formatWeekMsg(message_buf, repeat_str);	break;    case REPEAT_MONTHLY:	pThis->formatMonthMsg(message_buf, repeat_str);	break;    case REPEAT_YEARLY:	tt = localtime(&(pThis->m_CurrentDay));	strftime(message_buf, 99, "%b ", tt);	pThis->wordValue(tt->tm_mday, val_buf);	strcat(message_buf, val_buf);	strcat(message_buf, " Every ");	strcat(message_buf, repeat_str);	strcat(message_buf, " year");	break;    default:	sprintf(message_buf, "Need to handle case %s", repeat_str);	break;    }    pThis->repeat_output->label(message_buf);    //      pThis->repeat_output->hide();    //      pThis->repeat_output->show();}intNxSchedule::getMonthDayRepeat(time_t date){    tm *tt = localtime(&date);    int month = tt->tm_mon;    int count = 0;    while (month == tt->tm_mon) {	count++;	tt->tm_mday = tt->tm_mday - 7;	mktime(tt);    }    return count;}voidNxSchedule::formatMonthMsg(char *msg, char *repeat_str){    long val = 0;    static char date[30];    char day_val[8];    tm *tt = localtime(&m_CurrentDay);    int week_repeat = 0;    val = getMonthValue();    if (REPEAT_MONTH_DATE & val) {	wordValue(tt->tm_mday, day_val);	sprintf(msg, "The %s of every %s month", day_val, repeat_str);    } else {	strftime(date, 29, "%A", tt);	week_repeat = getMonthDayRepeat(m_CurrentDay);	wordValue(week_repeat, day_val);	sprintf(msg, "The %s %s of every %s month", day_val, date,		repeat_str);    }}voidNxSchedule::formatWeekMsg(char *msg, char *repeat_str){    int count = 0;    int day_count = 0;    int idx = 0;    long val = 0;    for (idx = 0; idx < 7; idx++) {	if (m_WeekButtons[idx]->value())	    count++;    }    if (1 == count) {	val = getWeekValue();	if (REPEAT_WEEK_SUNDAY & val)	    sprintf(msg, "Every %s week on Sunday", repeat_str);	if (REPEAT_WEEK_MONDAY & val)	    sprintf(msg, "Every %s week on Monday", repeat_str);	if (REPEAT_WEEK_TUESDAY & val)	    sprintf(msg, "Every %s week on Tuesday", repeat_str);	if (REPEAT_WEEK_WEDNESDAY & val)	    sprintf(msg, "Every %s week on Wednesday", repeat_str);	if (REPEAT_WEEK_THURSDAY & val)	    sprintf(msg, "Every %s week on Thursday", repeat_str);	if (REPEAT_WEEK_FRIDAY & val)	    sprintf(msg, "Every %s week on Friday", repeat_str);	if (REPEAT_WEEK_SATURDAY & val)	    sprintf(msg, "Every %s week on Friday", repeat_str);    } else {	sprintf(msg, "Every %s week on", repeat_str);	day_count = 0;	for (idx = 0; idx < 7; idx++) {	    if (m_WeekButtons[idx]->value()) {		day_count++;		if (0 != day_count) {		    if (count > 2 && day_count > 1)			strcat(msg, ", ");		    if (count == day_count)			strcat(msg, " and");		}		switch (idx) {		case 0:		    strcat(msg, " Sun");		    break;		case 1:		    strcat(msg, " Mon");		    break;		case 2:		    strcat(msg, " Tue");		    break;		case 3:		    strcat(msg, " Wed");		    break;		case 4:		    strcat(msg, " Thur");		    break;		case 5:		    strcat(msg, " Fri");		    break;		case 6:		    strcat(msg, " Sat");		    break;		default:		    break;		}	    }	}    }    int width = (int) fl_width(msg);    if (width > repeat_output->w()) {	int len = strlen(msg);	idx = 0;	while (width > repeat_output->w() - 5) {	    char test[100];	    idx++;	    memset(test, 0, sizeof(test));	    strncpy(test, msg, len - idx);	    width = (int) fl_width(test);	}	while (!isspace(msg[len - idx])) {	    idx++;	}	msg[len - idx] = '\n';    }}voidNxSchedule::weekDay_callback(Fl_Widget * w, void *l){    NxSchedule *pThis = (NxSchedule *) l;    tm *tt = localtime(&pThis->m_CurrentDay);    if (0 == pThis->getWeekValue()) {	pThis->m_WeekButtons[tt->tm_wday]->value(1);    }    every_input->do_callback();}voidNxSchedule::monthDayDate_callback(Fl_Widget * w, void *l){    NxSchedule *pThis = (NxSchedule *) l;    if (w == pThis->month_date) {	pThis->month_date->value(1);	pThis->month_day->value(0);    } else {	pThis->month_day->value(1);	pThis->month_date->value(0);    }    every_input->do_callback();}

⌨️ 快捷键说明

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