From: Sebastian B. <sb...@us...> - 2000-12-08 13:39:19
|
Update of /cvsroot/simplemail/amiga-mui In directory slayer.i.sourceforge.net:/tmp/cvs-serv20424/amiga-mui Modified Files: addressbookwnd.c Log Message: Internal Addressbook can be syncroned now Index: addressbookwnd.c =================================================================== RCS file: /cvsroot/simplemail/amiga-mui/addressbookwnd.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -r1.1 -r1.2 *** addressbookwnd.c 2000/12/01 08:54:25 1.1 --- addressbookwnd.c 2000/12/08 13:39:10 1.2 *************** *** 260,267 **** Child, HGroup, ! Child, ColGroup(3), Child, HorizLineTextObject("Snail mail"), Child, HorizLineTextObject("Miscellanous"), ! Child, HorizLineTextObject("Portrait"), Child, ColGroup(2), --- 260,267 ---- Child, HGroup, ! Child, ColGroup(2), Child, HorizLineTextObject("Snail mail"), Child, HorizLineTextObject("Miscellanous"), ! /* Child, HorizLineTextObject("Portrait"),*/ Child, ColGroup(2), *************** *** 300,304 **** End, End, ! Child, HVSpace, /* portrait */ End, End, --- 300,304 ---- End, End, ! /* Child, HVSpace,*/ /* portrait */ End, End, *************** *** 558,561 **** --- 558,612 ---- /****************************************************************** + Updates the internal address book + *******************************************************************/ + static void addressbook_update(struct MUI_NListtree_TreeNode *treenode, struct addressbook_entry *group) + { + struct addressbook_entry *entry; + /* cleanup_addressbook();*/ + if (!treenode) treenode = (struct MUI_NListtree_TreeNode *)DoMethod(address_tree, + MUIM_NListtree_GetEntry, MUIV_NListtree_GetEntry_ListNode_Root, MUIV_NListtree_GetEntry_Position_Head, 0); + + if (!treenode) return; + + while (treenode) + { + if ((entry = (struct addressbook_entry *)treenode->tn_User)) + { + if (treenode->tn_Flags & TNF_LIST) + { + struct MUI_NListtree_TreeNode *tn = (struct MUI_NListtree_TreeNode *)DoMethod(address_tree, + MUIM_NListtree_GetEntry, treenode, MUIV_NListtree_GetEntry_Position_Head, 0); + struct addressbook_entry *new_group = addressbook_duplicate_entry(entry); + + if (new_group) + { + addressbook_insert_tail(group,new_group); + if (tn) addressbook_update(tn,new_group); + } + } else + { + if (entry->type == ADDRESSBOOK_ENTRY_PERSON) + { + struct addressbook_entry *new_person = addressbook_duplicate_entry(entry); + + if (new_person) + addressbook_insert_tail(group,new_person); + } + } + } + treenode = (struct MUI_NListtree_TreeNode*)DoMethod(address_tree, MUIM_NListtree_GetEntry, treenode, MUIV_NListtree_GetEntry_Position_Next,0); + } + } + + /****************************************************************** + Save the addressbook to disk + *******************************************************************/ + static void addressbook_save(void) + { + cleanup_addressbook(); + addressbook_update(NULL,NULL); + } + + /****************************************************************** Adds a new person to the window *******************************************************************/ *************** *** 710,713 **** --- 761,765 ---- DoMethod(App,OM_ADDMEMBER,address_wnd); DoMethod(address_wnd, MUIM_Notify, MUIA_Window_CloseRequest, TRUE, address_wnd, 3, MUIM_Set, MUIA_Window_Open, FALSE); + DoMethod(save_button, MUIM_Notify, MUIA_Pressed, FALSE, App, 3, MUIM_CallHook, &hook_standard, addressbook_save); DoMethod(new_person_button, MUIM_Notify, MUIA_Pressed, FALSE, App, 3, MUIM_CallHook, &hook_standard, addressbook_add_person); DoMethod(new_group_button, MUIM_Notify, MUIA_Pressed, FALSE, App, 3, MUIM_CallHook, &hook_standard, addressbook_add_group); |