📄 nxtodo.cxx
字号:
_fill_form(n); if (0 == strcmp("All", note_category->label())) AllFlag = true; NxApp::Instance()->show_window(todo_edit_window->GetWindowPtr(), ACTIVATE); } } Fl::event_clicks(0);}voidNxTodoList::add_callback(Fl_Widget * fl, long l){ //int myfd = NxApp::Instance()->Find_Fd("nxaddress"); //char msg[255]; //int length = sizeof(msg); //strcpy(msg, "nxtodo^INITIATE^0"); //NxApp::Instance()->Write_Fd(myfd, &msg[0], length); //strcpy(msg, "nxtodo^EXECUTE^search^Jeff^246"); //NxApp::Instance()->Write_Fd(myfd, &msg[0], length); tree->unselect(); NxTodo *n = new NxTodo; NxApp::Instance()->set_catlist_window((Fl_Window *) todo_edit_window-> GetEditCategoryWindowPtr()); memset(n->szCategory, 0, CATEGORYS); memset(n->szTitle, 0, TITLE); memset(n->szFile, 0, DESC); if (0 == strcmp("All", note_category->label())) { strcpy(n->szCategory, "Unfiled"); AllFlag = true; } else strcpy(n->szCategory, note_category->label()); edit_category_list->label(n->szCategory); edit_category_list->hide(); edit_category_list->show(); note_category->label(n->szCategory); strcpy(n->szTitle, "Untitled"); strcpy(n->szFile, "^"); n->nComplete = 0; n->nPriority = 1; n->time = NO_TIME; g_editor->Clear(); g_EditFlag = 0; _fill_form(n); delete(n); n = 0; // Show edit window and hide list window. NxApp::Instance()->show_window(todo_edit_window->GetWindowPtr(), ACTIVATE);}voidNxTodoList::edit_callback(Fl_Widget * fl, long l){ Fl_Toggle_Node *node = tree->selected(); g_EditFlag = 1; NxApp::Instance()->set_catlist_window((Fl_Window *) todo_edit_window-> GetEditCategoryWindowPtr()); if (node) { NxTodo *n = (NxTodo *) node->user_data(); g_editor->Clear(); if (n->szFile[0] != '^') { FILE *fd = fopen(n->szFile, "r"); if (fd) { g_editor->LoadFrom(fd); g_editor->MoveTo(0, 0); fclose(fd); } } _fill_form(n); if (0 == strcmp("All", note_category->label())) AllFlag = true; // Show edit window and hide list window NxApp::Instance()->show_window(todo_edit_window->GetWindowPtr(), ACTIVATE); } else { return; }}voidNxTodoList::delList_callback(Fl_Widget * fl, void *l){ Fl_Toggle_Node *node = tree->selected(); if (!node) { return; } if (0 == strcmp("All", note_category->label())) AllFlag = true; NxApp::Instance()->show_window(todo_dellist_window->GetWindowPtr(), DEACTIVATE, todo_list_window->GetWindowPtr());}voidNxTodoList::yesDelList_callback(Fl_Widget * fl, void *l){ // Delete Note Fl_Toggle_Node *node = tree->selected(); if (node) { int recno[1]; recno[0] = -1; NxTodo *n = (NxTodo *) node->user_data(); db->Select(TODO, n->szFile, 5, recno, 1); unlink(n->szFile); char id[4]; sprintf(id, "%d", n->nId); db->Select(TODO, id, 0, recno, 1); if (recno[0] == -1) { return; } db->DeleteRec(TODO, recno[0]); if (AllFlag) { set_category("All"); AllFlag = false; } else set_category(n->szCategory); } else { return; } note_list->position(0, 0); NxApp::Instance()->show_window(todo_list_window->GetWindowPtr(), ACTIVATE);}voidNxTodoList::noDelList_callback(Fl_Widget * fl, void *l){ note_list->position(0, 0); NxApp::Instance()->show_window(todo_list_window->GetWindowPtr(), ACTIVATE);}voidNxTodoList::purge_callback(Fl_Widget * fl, void *o){ db->Purge(TODO, 2, "1"); set_category("All"); note_list->position(0, 0);}voidNxTodoList::_fill_form(NxTodo * n){ char *cat = new char[CATEGORYS]; char *title = new char[TITLE]; strcpy(cat, n->szCategory); strcpy(title, n->szTitle); edit_category_list->label(cat); edit_priority_list->label(edit_priority_list->text(n->nPriority)); edit_priority_list->value(n->nPriority); edit_complete->value(n->nComplete); edit_title->value(title); ((NxTodoList *) (NxApp::Instance()))->UpdateTime(n->time);}voidNxTodoList::edit_note(NxTodo * note, int recno){ DPRINT("Edit note\n"); int id = note->nId; int catid = GetCatId(note->szCategory); char *record = Record(id, catid, note->nComplete, note->nPriority, note->szTitle, note->szFile, note->time); db->Edit(TODO, recno, record); delete[]record; record = 0;}voidNxTodoList::write_note(NxTodo * note){ int catid = GetCatId(note->szCategory); char *record = Record(note->nId, catid, note->nComplete, note->nPriority, note->szTitle, note->szFile, note->time); db->Insert(TODO, record); delete[]record; record = 0;}intNxTodoList::GetCatId(char *szCategory){ int recno[1]; recno[0] = -1; char catid[255]; db->Select(CATEGORY, szCategory, 1, recno, 1); if (recno[0] == -1) return (0); db->Extract(CATEGORY, recno[0], 0, catid); int cid = atoi(catid); return cid;}voidNxTodoList::add_items(Fl_Toggle_Tree * t, const char *szCategory, int refresh){ int rec_array[255]; int cat_array[1]; char value[16]; char cat[16]; Fl_Toggle_Node *n; NxTodo *note; int idx = 0; cat_array[0] = -1; for (idx = 0; idx < 255; idx++) { rec_array[idx] = -1; } sprintf(value, " "); db->Select(CATEGORY, (char *) szCategory, 1, cat_array, 1); if ((cat_array[0] >= 0)) db->Extract(CATEGORY, cat_array[0], 0, value); if (0 == strcmp("All", szCategory)) db->Select(TODO, rec_array, 255); else db->Select(TODO, value, 1, rec_array, 255); int i = 0; while (rec_array[i] != -1) { int j = -1; int jdx = rec_array[i]; i++; note = new NxTodo; if ((cat_array[0] >= 0) || (0 == strcmp("All", szCategory))) { if (cat_array[0] >= 0) { db->Extract(TODO, jdx, 1, cat); j = strcmp(value, cat); } if ((j == 0) || (strcmp("All", szCategory) == 0)) { // id char id[16]; db->Extract(TODO, jdx, 0, id); note->nId = atoi(id); sprintf(id, "%d", note->nId); DPRINT("add_items note->nID [%d] jdx [%d]\n", note->nId, jdx); // categoryid int catid_array[1]; char catid[8]; catid_array[0] = -1; memset(note->szCategory, 0, CATEGORYS); db->Extract(TODO, jdx, 1, catid); db->Select(CATEGORY, catid, 0, catid_array, 1); if (-1 != catid_array[0]) db->Extract(CATEGORY, catid_array[0], 1, note->szCategory); else strcpy(note->szCategory, "Unfiled"); // nComplete char buf1[4]; db->Extract(TODO, jdx, 2, buf1); note->nComplete = atoi(buf1); // nPriority char buf2[4]; db->Extract(TODO, jdx, 3, buf2); note->nPriority = atoi(buf2); // szTitle db->Extract(TODO, jdx, 4, note->szTitle); // szFile db->Extract(TODO, jdx, 5, note->szFile); char buf3[16]; db->Extract(TODO, jdx, 6, buf3); note->time = strtol(buf3, NULL, 10); if (refresh) { int width = tree->w() - note_list->scrollbar.w(); char *label = formatLabel(note, width, false); if (note->nComplete) { n = t->add_next(label, 0, check_pixmap); } else { n = t->add_next(label, 0, echeck_pixmap); } if (n) { n->user_data(note); t->traverse_up(); } else { exit(1); } } } } }}voidNxTodoList::clear_tree(){ Fl_Toggle_Node *n = tree->traverse_start(); while (n) { delete((char *) n->user_data()); tree->remove(n); n = tree->traverse_start(); }}voidNxTodoList::set_category(char *szCat, int refresh){ char szRealCategory[CATEGORYS]; if (!szCat[0]) strcpy(szRealCategory, "All"); else strcpy(szRealCategory, szCat); if (refresh) clear_tree(); add_items(tree, szRealCategory, refresh); fill_categories(); edit_category_list->label(szRealCategory); edit_category_list->hide(); edit_category_list->show(); note_category->label(szRealCategory); note_category->hide(); note_category->show();}voidNxTodoList::reset_category(char *szCat){ char szRealCategory[CATEGORYS]; if (!szCat[0]) strcpy(szRealCategory, "All"); else strcpy(szRealCategory, szCat); fill_categories(); edit_category_list->label(szRealCategory); edit_category_list->hide(); edit_category_list->show(); note_category->label(szRealCategory); note_category->hide(); note_category->show();}voidNxTodoList::set_priority(const char *szP){ edit_priority_list->label(szP); edit_priority_list->hide(); edit_priority_list->show();}voidNxTodoList::priority_callback(Fl_Widget * fl, void *l){ set_priority(((NxMenuButton *) fl)->text());}voidNxTodoList::category_callback(Fl_Widget * fl, void *l){ set_category((char *) l);}voidNxTodoList::list_callback(Fl_Widget * fl, void *l){ reset_category((char *) l);}voidNxTodoList::ResetRadioButtons(){ noDateRadio->value(0); chooseDateRadio->value(0); tomorrowDateRadio->value(0); EoWDateRadio->value(0); todayDateRadio->value(1); chooseDate->deactivate(); date_type = TODAY;}voidNxTodoList::dueDate_callback(Fl_Widget * fl, void *l){ NxApp::Instance()->show_window(due_date_window->GetWindowPtr(), DEACTIVATE, todo_edit_window->GetWindowPtr());}voidNxTodoList::chooseDate_callback(Fl_Widget * fl, void *l){ NxTodoList *pThis = (NxTodoList *) l; time_t cur_time = time(0); tm *tt = localtime(&cur_time); int day = 0; int diff = 0; int w_day = 0; switch (date_type) { case NO_DATE: cur_time = NO_TIME; NxApp::Instance()->show_window(todo_edit_window->GetWindowPtr()); break; case TODAY: NxApp::Instance()->show_window(todo_edit_window->GetWindowPtr()); break; case TOMORROW: day = tt->tm_mday; day++; tt->tm_mday = day; cur_time = mktime(tt); NxApp::Instance()->show_window(todo_edit_window->GetWindowPtr()); break; case END_OF_WEEK: w_day = tt->tm_wday; diff = 6 - w_day; tt->tm_mday += diff; cur_time = mktime(tt); NxApp::Instance()->show_window(todo_edit_window->GetWindowPtr()); break; case CHOOSE_DATE: if (NO_TIME == set_time) pThis->SetPickedDate(cur_time); else pThis->SetPickedDate(set_time); if (fl == chooseDate) { //date_window->GetWindowPtr()->show(); NxApp::Instance()->show_window(date_window->GetWindowPtr(), DEACTIVATE, due_date_window->GetWindowPtr()); pThis->DateCallback(setDate_callback); } else cur_time = pThis->GetPickedDate(); break; default: NxApp::Instance()->show_window(todo_edit_window->GetWindowPtr()); break; } pThis->UpdateTime(cur_time);}voidNxTodoList::UpdateTime(long time){ static char dateBuf[30]; tm *tt = localtime((time_t *) & time); if (NO_DATE == time) sprintf(dateBuf, "No Date"); else //strftime(dateBuf, 29, "%b %d, %y", tt); GetDateString(dateBuf, tt, sizeof(dateBuf), SHORT_YEAR); chooseDate->label(dateBuf); chooseDate->redraw(); due_date->label(dateBuf); due_date->redraw(); set_time = time;}voidNxTodoList::doneChoose_callback(Fl_Widget * fl, void *l){ NxTodoList *pThis = (NxTodoList *) l; NxApp::Instance()->show_window(todo_edit_window->GetWindowPtr()); chooseDate_callback(fl, pThis); pThis->ResetRadioButtons();}voidNxTodoList::setDate_callback(Fl_Widget * fl, void *l){ NxTodoList *pThis = (NxTodoList *) l; pThis->date_window->GetWindowPtr()->hide(); pThis->show_window(todo_edit_window->GetWindowPtr()); NxApp::Instance()->show_window(due_date_window->GetWindowPtr(), DEACTIVATE, todo_edit_window->GetWindowPtr()); if (pThis->GetPickedDate()) { pThis->UpdateTime(pThis->GetPickedDate()); }}voidNxTodoList::done_callback(Fl_Widget * fl, long l){ int bDeleteMe = 0; Fl_Toggle_Node *node = tree->selected(); NxTodo *n = 0; if (!g_SearchFlag) { if (node) { n = (NxTodo *) node->user_data(); DPRINT("done_callbackdone_callback n->nId [%d]\n", n->nId); } else { n = new NxTodo; strcpy(n->szFile, "^"); bDeleteMe = 1; } NxApp::Instance()->set_catlist_window((Fl_Window *) todo_list_window-> GetEditCategoryWindowPtr()); n->nPriority = edit_priority_list->value(); n->nComplete = edit_complete->value(); n->time = set_time; strcpy(n->szTitle, edit_title->value()); strcpy(n->szCategory, edit_category_list->label()); char *f = n->szFile; FILE *fd = 0; if (f[0] == '^') { char tplate[128]; int tfd = 0; snprintf(tplate, sizeof(tplate), "%s/%sXXXXXX", nx_inidir, NX_INIFILE); tfd = mkstemp(tplate); fd = fdopen(tfd, "w+"); } else fd = fopen(f, "w+"); if (fd) { g_editor->SaveTo(fd); fclose(fd); } DPRINT("g_EditFlag [%d]\n", g_EditFlag); if (g_EditFlag) { int recno[1]; recno[0] = -1; char id[16]; sprintf(id, "%d", n->nId); db->Select(TODO, id, 0, recno, 1); DPRINT("id [%s]\n", id); if (recno[0] != -1) { DPRINT("GOING TO EDIT\n"); edit_note(n, recno[0]); } g_EditFlag = 0; } else { n->nId = 0; n->nId = NxApp::Instance()->GetKey(db, TODO, 0); n->nId++; write_note(n); } if (AllFlag) { set_category("All"); AllFlag = false; } else set_category(n->szCategory); if (bDeleteMe) delete n; note_list->position(0, 0); } else { g_SearchFlag = false; } NxApp::Instance()->show_window(todo_list_window->GetWindowPtr(), ACTIVATE);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -