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

📄 nxschedule.cxx

📁 PIXIL is a small footprint operating environment, complete with PDA PIM applications, a browser and
💻 CXX
📖 第 1 页 / 共 5 页
字号:
    g_SearchFlag = false;    /*       buttonGroup = new Fl_Group(BUTTON_X+180, 0, 50, BUTTON_HEIGHT, "");       {       dailyButton = new GroupButton(BUTTON_X+180, BUTTON_Y, 10, BUTTON_HEIGHT, type_daily);       dailyButton->callback(dailyView_callback, this);       buttonGroup->add((Fl_Widget*)dailyButton);       }       {       weeklyButton = new GroupButton(BUTTON_X+193, BUTTON_Y, 10, BUTTON_HEIGHT, type_weekly);       weeklyButton->callback(weeklyView_callback, this);       buttonGroup->add((Fl_Widget*)weeklyButton);       }       {       monthlyButton = new GroupButton(BUTTON_X+206, BUTTON_Y, 10, BUTTON_HEIGHT, type_monthly);       monthlyButton->callback(monthlyView_callback, this);       buttonGroup->add((Fl_Widget*)monthlyButton);       }       {       yearlyButton = new GroupButton(BUTTON_X+219, BUTTON_Y, 10, BUTTON_HEIGHT, type_yearly);       yearlyButton->callback(yearlyView_callback, this);       buttonGroup->add((Fl_Widget*)yearlyButton);       }       buttonGroup->end();     */    mainWindow = new NxWindow(W_W, W_H, APP_NAME);    MakeWeekViewWindow();    MakeDayWindow();    MakeTimeWindow();    MakeDetailsWindow();    MakeRepeatWindow();    MakeMonthWindow();    // for some reason this is created slow!    //MakeMonthViewWindow();    m_pCalendar->MakeDateWindow();    dateWindow = m_pCalendar->GetDateWindow();    add_window((Fl_Window *) dateWindow->GetWindowPtr());    w_pCalendar->MakeDateWindow();    weekDateWindow = w_pCalendar->GetDateWindow();    add_window((Fl_Window *) weekDateWindow->GetWindowPtr());    MakeYearViewWindow();    MakeSetTimeWindow();    MakeDeleteWindow();    MakeLookupWindow();    MakeResultsWindow();    MakeErrorWindow();    MakeRepeatEventWindow();#ifdef DO_ALARM    MakeAlarmViewWindow();#endif    mainWindow->end();    //dayWindow->add((Fl_Widget*)buttonGroup);    set_shown_window(dayWindow->GetWindowPtr());    // FLNX-Colosseum IPC    SyncRegisterDB(db, sFields, SCHEDULE, 0, NULL, 0);#ifdef CONFIG_COLOSSEUM    Add_Fd("nxschedule", _ClientIPCHandler);#else    ExecuteShow();#endif    MakeMonthViewWindow();    mainWindow->add((Fl_Window *) monthViewWindow->GetWindowPtr());    //show_default_window();    UpdateDateDisplay();}NxSchedule::~NxSchedule(){    db->Close(SCHEDULE);    delete db;    db = 0;}voidNxSchedule::Refresh(){    UpdateDateDisplay();}voidNxSchedule::dailyView_callback(Fl_Widget * w, void *l){    NxSchedule *pThis = (NxSchedule *) l;    if (!dayWindow->GetWindowPtr()->shown()) {	//            dayWindow->add((Fl_Widget*)buttonGroup);	pThis->show_window(dayWindow->GetWindowPtr());    }}voidNxSchedule::weeklyView_callback(Fl_Widget * w, void *l){    NxSchedule *pThis = (NxSchedule *) l;    pThis->UpdateWeekView();    if (pThis->weekGrid) {	pThis->weekGrid->hide();	pThis->weekGrid->redraw();	pThis->weekGrid->show();    }    if (!weekViewWindow->GetWindowPtr()->shown()) {	//            weekViewWindow->add((Fl_Widget*)buttonGroup);	pThis->show_window(weekViewWindow->GetWindowPtr());    }}voidNxSchedule::monthlyView_callback(Fl_Widget * w, void *l){    NxSchedule *pThis = (NxSchedule *) l;    if (!(pThis->monthViewWindow->GetWindowPtr()->shown())) {	pThis->pMonthCal->SetPickedDate(pThis->m_CurrentDay);	//              monthViewWindow->add((Fl_Widget*)buttonGroup);	pThis->show_window(pThis->monthViewWindow->GetWindowPtr());    }}voidNxSchedule::yearlyView_callback(Fl_Widget * w, void *l){    NxSchedule *pThis = (NxSchedule *) l;    if (!(pThis->yearViewWindow->GetWindowPtr()->shown())) {	//            yearViewWindow->add((Fl_Widget*)buttonGroup);	pThis->show_window(pThis->yearViewWindow->GetWindowPtr());    }}//// FLNX-Colosseum IPC Methods//#ifdef CONFIG_COLOSSEUMvoidNxSchedule::ClientIPCHandler(int fd, void *o, int ipc_id){    DPRINT("\n");    DPRINT("ClientIPCHandler has now been started.\n");    char *tokenMsg = new char[MAX_LENGTH];    memset(tokenMsg, 0, MAX_LENGTH);    char *passMsg = new char[MAX_LENGTH];    memset(passMsg, 0, MAX_LENGTH);    DPRINT("And this is the message... %s.\n", (char *) o);    if (o == NULL) {	int length = MAX_LENGTH - 1;	ipc_id = NxApp::Instance()->Read_Fd(passMsg, &length);	if ((passMsg == NULL) || (passMsg[0] == 0))	    return;	else	    strcpy(tokenMsg, passMsg);    } else if (ipc_id == -1) {	strcpy(tokenMsg, (char *) o);	strcpy(passMsg, (char *) o);	ipc_id = NxApp::Instance()->Find_Fd("nxschedule");    } else {	strcpy(tokenMsg, (char *) o);	strcpy(passMsg, (char *) o);    }    // Explode Message    char *service = new char[MAX_LENGTH];    char *msg_cmd = new char[MAX_LENGTH];    char *data_item = new char[MAX_LENGTH];    // SERVICE    char *tmp = strtok(tokenMsg, TOKEN);    if (NULL != tmp)	strcpy(service, tmp);    // MSG_CMD    tmp = strtok(NULL, TOKEN);    if (NULL != tmp)	strcpy(msg_cmd, tmp);    // DATA_ITEM    tmp = strtok(NULL, TOKEN);    if (NULL != tmp)	strcpy(data_item, tmp);    //  DPRINT("Expoding Message... %s, %s, %s.\n", service, msg_cmd, data_item);#ifdef DO_ALARM    if (strcmp(msg_cmd, "ALARM") == 0) {	if (!NxApp::Instance()->VerifyClient(service))	    return;	int rec_array[1];	rec_array[0] = -1;	db->Select(SCHEDULE, data_item, 0, rec_array, 1);	if (-1 != rec_array[0]) {	    viewAlarm(rec_array[0]);	}    }#endif    if (strcmp(msg_cmd, "EXECUTE") == 0) {	//    DPRINT("EXECUTE message command recv.\n");	if (!NxApp::Instance()->VerifyClient(service))	    return;	if (strcmp(data_item, "search") == 0) {	    DPRINT("%s, %s, %s\n", service, msg_cmd, data_item);	    char *searchStr = new char[MAX_LENGTH];	    char *startStr = new char[16];	    char *endStr = new char[16];	    char *widthStr = new char[8];	    tmp = strtok(NULL, TOKEN);	    if (NULL != tmp)		strcpy(searchStr, tmp);	    tmp = strtok(NULL, TOKEN);	    if (NULL != tmp)		strcpy(widthStr, tmp);	    tmp = strtok(NULL, TOKEN);	    if (NULL == tmp)		ExecuteSearch(ipc_id, searchStr, atoi(widthStr));	    else {		strcpy(startStr, tmp);		long startTime = strtol(startStr, NULL, 10);		tmp = strtok(NULL, TOKEN);		if (NULL != tmp)		    strcpy(endStr, tmp);		long endTime = strtol(endStr, NULL, 10);		DPRINT("Executing StringDateSearch\n");		ExecuteStringDateSearch(ipc_id, searchStr, atoi(widthStr),					startTime, endTime);	    }	    delete[]startStr;	    delete[]endStr;	    delete[]searchStr;	    delete[]widthStr;	    searchStr = widthStr = startStr = endStr = 0;	}	if (0 == strcmp(data_item, "datesearch")) {	    char *startStr = new char[16];	    char *endStr = new char[16];	    char *widthStr = new char[8];	    tmp = strtok(NULL, TOKEN);	    if (NULL != tmp)		strcpy(widthStr, tmp);	    tmp = strtok(NULL, TOKEN);	    if (NULL != tmp)		strcpy(startStr, tmp);	    tmp = strtok(NULL, TOKEN);	    if (NULL != tmp)		strcpy(endStr, tmp);	    long startTime = strtol(startStr, NULL, 10);	    long endTime = strtol(endStr, NULL, 10);	    ExecuteDateSearch(ipc_id, atoi(widthStr), startTime, endTime);	    delete[]startStr;	    delete[]endStr;	    delete[]widthStr;	    startStr = endStr = widthStr = 0;	}	if (strcmp(data_item, "showrecord") == 0) {	    int recno = 0;	    char *data = strtok(NULL, TOKEN);	    recno = atoi(data);	    viewRecord(recno);	}    }    // Memory Mangement    delete[]service;    delete[]msg_cmd;    delete[]data_item;    delete[]tokenMsg;    service = msg_cmd = data_item = tokenMsg = NULL;    NxApp::Instance()->ServerIPCHandler(fd, ipc_id, (char *) passMsg);    delete[]passMsg;    passMsg = NULL;}#endiftime_tGetAlarmTime(NxTodo * n){    time_t alarmTime;    switch (n->alarmFlags) {    case ALARM_MIN:	alarmTime = n->startTime - (60 * n->alarmInt);	break;    case ALARM_HOUR:	alarmTime = n->startTime - (3600 * n->alarmInt);	break;    case ALARM_DAY:	alarmTime = n->startTime - (86400 * n->alarmInt);	break;    default:	alarmTime = n->startTime;	break;    }    return alarmTime;}#ifdef DO_ALARMvoidNxSchedule::SetAlarm(NxTodo * n, time_t new_time){    int ipc_id = NxApp::Instance()->Find_Fd("alarmd");    time_t alarmTime = 0;    DPRINT("SetAlarm ipc_id [%d]\n", ipc_id);    if (0 == new_time) {	alarmTime = GetAlarmTime(n);	if (0 > alarmTime)	    alarmTime = n->startTime;    } else {	alarmTime = new_time;    }    if (0 < ipc_id) {	char *msg = new char[MAX_LENGTH];	char buf[DESC];	int recno = n->recno;	sprintf(msg, "nxschedule^INITIATE^0^");	NxApp::Instance()->Write_Fd(ipc_id, msg, MAX_LENGTH);	if (0 == strcmp(n->szDescription, ""))	    strcpy(buf, " ");	else	    strcpy(buf, n->szDescription);	if ((g_EditFlag & CHANGED_NEW))	    recno = idNum + 1;	sprintf(msg, "nxschedule^SET^%d^%s^%ld^%ld^%ld^",		recno, buf, n->startTime, n->endTime, alarmTime);	NxApp::Instance()->Write_Fd(ipc_id, msg, MAX_LENGTH);	delete[]msg;	msg = 0;    }}voidNxSchedule::DeleteAlarm(NxTodo * n){    int ipc_id = NxApp::Instance()->Find_Fd("alarmd");    if (0 < ipc_id) {	char *msg = new char[MAX_LENGTH];	int recno = n->recno;	sprintf(msg, "nxschedule^INITIATE^0^");	NxApp::Instance()->Write_Fd(ipc_id, msg, MAX_LENGTH);	sprintf(msg, "nxschedule^DELETE^%d^", recno);	NxApp::Instance()->Write_Fd(ipc_id, msg, MAX_LENGTH);	delete[]msg;	msg = 0;    }}#endif#ifdef CONFIG_COLOSSEUMvoidNxSchedule::ExecuteSearch(int ipc_id, char *searchStr, int width){    if (searchStr == NULL)	return;    char *msg = new char[MAX_LENGTH];    NxTodo *note;    while ((note = searchString(searchStr)) != NULL) {	char *result = formatString(note, width);	// Send DATA message to client	// (e.g. "nxschedule^DATA^1^Century *Software* is neato^")	strcpy(msg, "nxschedule^DATA^search^");	char recno[4];	sprintf(recno, "%d", note->recno);	strcat(msg, recno);	strcat(msg, "^");	strcat(msg, result);	strcat(msg, "^");	NxApp::Instance()->Write_Fd(ipc_id, msg, MAX_LENGTH);    }    strcpy(msg, "nxschedule^ACK^DATA^search^");    NxApp::Instance()->Write_Fd(ipc_id, msg, MAX_LENGTH);    delete[]msg;    msg = NULL;}voidNxSchedule::ExecuteStringDateSearch(int ipc_id, char *searchStr, int width,				    long startTime, long endTime){    if (searchStr == NULL)	return;    char *msg = new char[MAX_LENGTH];    NxTodo *note;    while ((note = searchString(searchStr)) != NULL) {	if (true == checkDate(note, (time_t) startTime, (time_t) endTime)) {	    char *result = formatString(note, width);	    // Send DATA message to client	    strcpy(msg, "nxschedule^DATA^search^");	    char recno[16];	    sprintf(recno, "%d", note->recno);	    strcat(msg, recno);	    strcat(msg, "^");	    strcat(msg, result);	    strcat(msg, "^");	    NxApp::Instance()->Write_Fd(ipc_id, msg, MAX_LENGTH);	}    }    strcpy(msg, "nxschedule^ACK^DATA^search^");    NxApp::Instance()->Write_Fd(ipc_id, msg, MAX_LENGTH);    delete[]msg;    msg = NULL;}voidNxSchedule::ExecuteDateSearch(int ipc_id, int width, long startTime,			      long endTime){    char *msg = new char[MAX_LENGTH];    NxTodo *note;    while ((note = searchDate(startTime, endTime)) != NULL) {	char *result = formatString(note, width);	// Send DATA message to client	// (e.g. "nxschedule^DATA^1^Century *Software* is neato^")	strcpy(msg, "nxschedule^DATA^search^");	char recno[4];	sprintf(recno, "%d", note->recno);	strcat(msg, recno);	strcat(msg, "^");	strcat(msg, result);	strcat(msg, "^");	NxApp::Instance()->Write_Fd(ipc_id, msg, MAX_LENGTH);    }    strcpy(msg, "nxschedule^ACK^DATA^search^");    NxApp::Instance()->Write_Fd(ipc_id, msg, MAX_LENGTH);    delete[]msg;    msg = NULL;}#endifvoidNxSchedule::exit_callback(Fl_Widget * fl, void *l){    exit_flag = 1;    mainWindow->hide();}//// Database Methods//char *NxSchedule::Record(int id, int catid, long startTime, long endTime,		   int allDayFlag, int repeatFlag_1, int repeatFlag_2,		   long repeatFlag_3, long repeatWkMonFlag,		   entry_type entryType, char *szDescription, int except,		   int recnoPtr, int alarmInt, int alarmFlags){    char *rec = new char[MAXRECSIZ];    if (id >= INT_MAX) {	fprintf(stderr, "Fatal Error!!!!!\n");	exit(1);    }    memset(rec, 0, MAXRECSIZ);    put16(&rec[sFields[0].offset], id);    put16(&rec[sFields[1].offset], catid);    put32(&rec[sFields[2].offset], startTime);    put32(&rec[sFields[3].offset], endTime);    put16(&rec[sFields[4].offset], allDayFlag);    put16(&rec[sFields[5].offset], repeatFlag_1);    put16(&rec[sFields[6].offset], repeatFlag_2);    put32(&rec[sFields[7].offset], repeatFlag_3);    put32(&rec[sFields[8].offset], repeatWkMonFlag);    put16(&rec[sFields[9].offset], (int) entryType);    strcpy(&rec[sFields[10].offset], szDescription);    put16(&rec[sFields[11].offset], except);    put16(&rec[sFields[12].offset], recnoPtr);    put16(&rec[sFields[13].offset], alarmInt);    put16(&rec[sFields[14].offset], alarmFlags);

⌨️ 快捷键说明

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