/** * @brief Removes all dialogs with a specific prefix. * @param prefix The prefix id of dialogs to remove. * @return The list of all removed dialogs (key, value). * @throws EditorException in case of error. */ QList<QPair<QString, DialogData>> DialogsModel::delete_prefix( const QString& prefix) { QList<QPair<QString, DialogData>> list; for (QString key : get_ids(prefix)) { list.push_back(QPair<QString, DialogData>(key, get_dialog_data(key))); delete_dialog(key); } return list; }
/* Основная функция */ int main() { # define ACTION(str) if (!strcmp(#str, action)) setlocale(LC_ALL, "Ru"); BookDB* db = NULL; char filename[MAX_STRING_LENGTH] = "\0"; char action[MAX_STRING_LENGTH]; print_hello(); /* Цикл обработки событий */ forever { printf("<! "); scanf("%s", action); ACTION(help) { print_help(); continue; } ACTION(exit) { if (db) { close_db(db, filename); db = NULL; filename[0] = '\0'; } break; } ACTION(close) { if (db) { close_db(db, filename); db = NULL; filename[0] = '\0'; output("База данных закрыта!\n"); } else db_not_loaded_error(); continue; } ACTION(create) { if (db) { close_db(db, filename); filename[0] = '\0'; db = NULL; } int n = 0; output("Предполагаемая размерность Базы Данных\n"); input("%d", &n); db = create_db(n); output("База данных для %i элементов создана!\n", n); continue; } ACTION(load) { if (db) { close_db(db, filename); filename[0] = '\0'; db = NULL; } do { output("Имя файла базы данных\n"); input("%s", filename); } while (strlen(filename) < 1); db = load_db(filename); if (!db) { output("Неверное имя файла!\n"); filename[0] = '\0'; } else { output(">> База данных успешно загружена!\n"); } continue; } ACTION(save) { if (db) { save_db_dialog(db, filename); output(">> База данных успешно сохранена!\n"); } else db_not_loaded_error(); continue; } ACTION(list) { if (db != 0) { list_db(db); } else db_not_loaded_error(); continue; } ACTION(find) { if (db) { find_dialog(db); } else db_not_loaded_error(); continue; } ACTION(new) { if (db) { new_dialog(db); } else db_not_loaded_error(); continue; } ACTION(delete) { if (db) { delete_dialog(db); } else db_not_loaded_error(); continue; } ACTION(size) { if (db) { output("Книг в базе данных - %d\n", db->count); } else db_not_loaded_error(); continue; } ACTION(sort) { if (db) { sort_dialog(db); } else db_not_loaded_error(); continue; } printf("!! Неизвестная команда \"%s\"\n", action); } # undef ACTION return 0; }