// скачивание почты bool TMonitoring::getMessage(const QString& id, const QString& username, const QString& password) { if (!connectToHost(id, username, password)) return false; //-------получаем список ящиков для аккаунта---------// listMailBox = imap.list(); //----------проверяем на наличие новых папок в ящике. Если появились новые папки добавляем их в базу-----------// //if (!checkNewFolder(id, listMailBox)) // qDebug() << "folder not checked"; // получаем последний uid сообщения. Если такого нет, значит в базе нет ни одного сообщения с аккаунта QSqlQuery query; QString cmd = "SELECT uid FROM headers WHERE accountId = " + currentAccountId + " ORDER BY uid DESC"; bool res = query.exec(cmd); if (!query.next()) lastMsgUid = NO_MSG_IN_FOLDER; // в базе нет почтовых сообщений для этого ящика else { // получаем uid последнего скачанного сообщения в базе для текущего ящика query.previous(); lastMsgUid = query.value(0).toInt(); } //================проходим по каждой папке, получаем сообщения и записываем их в базу =================================================================================// foreach (QString box, listMailBox) { parse_folder(box); }
Parse_stat MCAnswer::parse(MCScriptPoint &sp) { Parse_errors t_error = PE_UNDEFINED; Symbol_type t_type; const LT *t_literal; initpoint(sp); getit(sp, it); if (sp . skip_token(SP_ASK, TT_UNDEFINED, AT_PAGE) == PS_NORMAL) { if (sp . skip_token(SP_ASK, TT_UNDEFINED, AT_SETUP) == PS_NORMAL) mode = AT_PAGESETUP; else t_error = PE_ANSWER_BADQUESTION; } else if (sp . next(t_type) == PS_NORMAL) { if (sp . lookup(SP_ASK, t_literal) == PS_NORMAL) mode = (Ask_type)t_literal -> which; else sp . backup(); } if (t_error == PE_UNDEFINED) switch(mode) { case AT_PAGESETUP: // MJ: adding support for "answer pagesetup" syntax, following existing code t_error = parse_pagesetup(sp); break; case AT_PRINTER: t_error = parse_printer(sp); break; case AT_EFFECT: t_error = parse_effect(sp); break; case AT_RECORD: t_error = parse_record(sp); break; case AT_COLOR: t_error = parse_colour(sp); break; case AT_FILE: case AT_FILES: t_error = parse_file(sp); break; case AT_FOLDER: case AT_FOLDERS: t_error = parse_folder(sp); break; default: t_error = parse_notify(sp); break; } if (t_error == PE_UNDEFINED && sp . skip_token(SP_ASK, TT_UNDEFINED, AT_TITLED) == PS_NORMAL) if (sp . parseexp(False, True, &title) != PS_NORMAL) t_error = PE_ANSWER_BADTITLE; if (t_error == PE_UNDEFINED && sp . skip_token(SP_FACTOR, TT_PREP, PT_AS) == PS_NORMAL) if (sp . skip_token(SP_ASK, TT_UNDEFINED, AT_SHEET) == PS_NORMAL) sheet = True; else t_error = PE_ANSWER_BADRESPONSE; if (t_error != PE_UNDEFINED) { MCperror -> add(t_error, sp); return PS_ERROR; } return PS_NORMAL; }
void get_folder_to_play(GtkWidget *widget, gpointer user_data) { /** User folder selection. **/ #ifdef DEBUG DEBUG_FUNC_MARK #endif GtkWidget *folder_chooser_dialog = gtk_file_chooser_dialog_new("Choose a folder contains music files to listen.", NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER, "Cancel", GTK_RESPONSE_CANCEL, "Open", GTK_RESPONSE_ACCEPT, NULL); gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(folder_chooser_dialog), current_folder.c_str() ) ; gtk_file_chooser_set_show_hidden(GTK_FILE_CHOOSER(folder_chooser_dialog), FALSE) ; gtk_file_chooser_set_create_folders(GTK_FILE_CHOOSER(folder_chooser_dialog), FALSE) ; gtk_file_chooser_set_use_preview_label(GTK_FILE_CHOOSER(folder_chooser_dialog), TRUE) ; gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(folder_chooser_dialog), TRUE) ; gtk_window_set_position(GTK_WINDOW(folder_chooser_dialog), GTK_WIN_POS_CENTER_ALWAYS) ; gtk_widget_set_size_request(folder_chooser_dialog,-1,-1) ; gtk_window_set_modal(GTK_WINDOW(folder_chooser_dialog), TRUE) ; gtk_window_set_destroy_with_parent(GTK_WINDOW(folder_chooser_dialog), TRUE) ; gtk_window_set_type_hint(GTK_WINDOW(folder_chooser_dialog), GDK_WINDOW_TYPE_HINT_DIALOG) ; gtk_window_set_transient_for(GTK_WINDOW(folder_chooser_dialog), GTK_WINDOW(gui->window)) ; gchar *folderpath = NULL ; // Selected folder. gint result = gtk_dialog_run (GTK_DIALOG (folder_chooser_dialog)); switch (result) { case GTK_RESPONSE_CANCEL : if (! is_playing) { gtk_button_set_label(GTK_BUTTON(gui->folder_chooser_button), "Select a folder to play content") ; } gtk_widget_destroy(folder_chooser_dialog); return ; case GTK_RESPONSE_ACCEPT : folderpath = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(folder_chooser_dialog)); gtk_widget_destroy(folder_chooser_dialog); break ; } parse_folder(folderpath) ; gchar *dirname = g_path_get_dirname(folderpath) ; current_folder = dirname ; g_free(dirname) ; #ifdef DEBUG fprintf(stdout,"%s current_folder: %s\n", __func__, current_folder.c_str() ) ; #endif g_free(folderpath) ; }