/****************************************************************** inserts the mime informations (uses ugly recursion) *******************************************************************/ static void insert_mail(struct Read_Data *data, struct mail *mail) { int i; if (mail->num_multiparts == 0) { g_slist_append(data->mail_list,mail); #if 0 Object *group, *icon, *context_menu; context_menu = data->attachment_standard_menu; if (!mystricmp(mail->content_subtype,"html")) context_menu = data->attachment_html_menu; group = VGroup, Child, icon = IconObject, MUIA_InputMode, MUIV_InputMode_Immediate, MUIA_Icon_MimeType, mail->content_type, MUIA_Icon_MimeSubType, mail->content_subtype, MUIA_UserData, mail, MUIA_ContextMenu, context_menu, End, Child, TextObject, MUIA_Font, MUIV_Font_Tiny, MUIA_Text_Contents, mail->filename, MUIA_Text_PreParse, "\33c", End, End; if (icon) { DoMethod(data->attachments_group, OM_ADDMEMBER, group); DoMethod(icon, MUIM_Notify, MUIA_ContextMenuTrigger, MUIV_EveryTime, App, 6, MUIM_CallHook, &hook_standard, context_menu_trigger, data, mail, MUIV_TriggerValue); } DoMethod(icon, MUIM_Notify, MUIA_Selected, TRUE, App, 5, MUIM_CallHook, &hook_standard, icon_selected, data, icon); #endif } for (i=0;i<mail->num_multiparts;i++) { insert_mail(data,mail->multipart_array[i]); } }
void parse_mail_body(struct mail_body *mb_ptr) { switch( mb_ptr->type) { case MAIL_TYPE_LOGIN: break; case MAIL_TYPE_LOGOUT: break; case MAIL_TYPE_SIGNUP: printf(" mailbody type is signup\n"); add_newuser(mysql, mb_ptr); break; case MAIL_TYPE_MAIL: printf(" obj type is mail\n"); insert_mail(mysql,mb_ptr); break; case MAIL_TYPE_GETMAIL: break; } }
/****************************************************************** Display the mail *******************************************************************/ static int read_window_display_mail(struct Read_Data *data, struct mail *m) { char path[512]; if (!data->folder_path) return 0; data->ref_mail = m; getcwd(path,sizeof(path)); if (chdir(data->folder_path)==-1) return 0; if ((data->mail = mail_create_from_file(m->filename))) { int dont_show = 0; /* attachments */ chdir(path); /* should be a absolute path */ mail_read_contents(data->folder_path,data->mail); mail_create_html_header(data->mail, 0); if (!data->mail->num_multiparts || (data->mail->num_multiparts == 1 && !data->mail->multipart_array[0]->num_multiparts)) { /* mail has only one part */ dont_show = 1; } else { } if (data->mail_list) g_slist_free(data->mail_list); data->mail_list = g_slist_alloc(); insert_mail(data,data->mail); show_mail(data,mail_find_initial(data->mail)); } else chdir(path); return 1; #if 0 if ((lock = Lock(data->folder_path,ACCESS_READ))) /* maybe it's better to use an absoulte path here */ { BPTR old_dir = CurrentDir(lock); if ((data->mail = mail_create_from_file(mail->filename))) { int dont_show = 0; mail_read_contents(data->folder_path,data->mail); mail_create_html_header(data->mail); if (!data->mail->num_multiparts || (data->mail->num_multiparts == 1 && !data->mail->multipart_array[0]->num_multiparts)) { /* mail has only one part */ set(data->attachments_group, MUIA_ShowMe, FALSE); dont_show = 1; } else { DoMethod((Object*)xget(data->attachments_group,MUIA_Parent), MUIM_Group_InitChange); } DoMethod(data->attachments_group, MUIM_Group_InitChange); DisposeAllChilds(data->attachments_group); data->attachments_last_selected = NULL; insert_mail(data,data->mail); DoMethod(data->attachments_group, OM_ADDMEMBER, HSpace(0)); DoMethod(data->attachments_group, MUIM_Group_ExitChange); if (!dont_show) { set(data->attachments_group, MUIA_ShowMe, TRUE); DoMethod((Object*)xget(data->attachments_group,MUIA_Parent), MUIM_Group_ExitChange); } show_mail(data,mail_find_initial(data->mail)); CurrentDir(old_dir); set(App, MUIA_Application_Sleep, FALSE); return 1; } CurrentDir(old_dir); } DoMethod(data->attachments_group, MUIM_Group_InitChange); DisposeAllChilds(data->attachments_group); data->attachments_last_selected = NULL; DoMethod(data->attachments_group, OM_ADDMEMBER, HSpace(0)); DoMethod(data->attachments_group, MUIM_Group_ExitChange); set(App, MUIA_Application_Sleep, FALSE); return 0; #endif }