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

📄 nxtodo.cxx

📁 PIXIL is a small footprint operating environment, complete with PDA PIM applications, a browser and
💻 CXX
📖 第 1 页 / 共 4 页
字号:
	    _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 + -