void VersionManager::addVersion_Click(){ if (askSaveChangeds()){ currentVersionChanged_ = false; } else { return; } bool ok; QString name; Version *vers = new Version(); name = QInputDialog::getText(this, tr("Add version"), tr("Version name:"), QLineEdit::Normal, "", &ok); if (ok && !name.isEmpty()){ vers->name_ = name; while (vers->load()){ name = QInputDialog::getText(this, tr("Add version"), tr("Sorry. It seems that the version name already exists.<br>Please choose another version name."), QLineEdit::Normal, name, &ok); if (!ok || name.isEmpty()) break; vers->clear(); vers->name_ = name; } if (vers->save()){ getVersions(); setVersionFocus(vers->name_); currentVersionChanged_ = true; } } }
bool DataBase::checkDb() { /* * Checking database tables. * If not exists, we try to create them. */ QTextStream QErr(stderr); QStringList tables; tables << "prefix" << "dir" << "icon" << "images" << "last_run_icon" << "logging" << "providers" << "sysconfig" << "versions"; QSqlDatabase db = QSqlDatabase::database(); if (!db.isValid()) { QErr<<"[EE] "<<tr("No database loaded. Aborting..."); return false; } QSqlQuery query; for (int i=0; i<tables.size(); ++i) { QString table=tables.at(i); #ifdef DEBUG qDebug()<<"[ii] Check for table: "<<table; #endif if (db.record(table).isEmpty()) { if (table == "prefix") { if(!query.exec("CREATE TABLE prefix (wine_dllpath TEXT, wine_loader TEXT, wine_server TEXT, wine_exec TEXT, cdrom_mount TEXT, id INTEGER PRIMARY KEY, name TEXT, path TEXT, version TEXT);")) return false; // Creating default prefix reccord query.prepare("INSERT INTO prefix(id, name) VALUES(NULL, :name);"); query.bindValue(":name", "Default"); if (!query.exec()) return false; query.clear(); } else if (table == "dir") { if(!query.exec("CREATE TABLE dir (id INTEGER PRIMARY KEY, name TEXT, prefix_id NUMERIC);")) return false; } else if (table == "icon") { if(!query.exec("CREATE TABLE icon (wrkdir TEXT, override TEXT, winedebug TEXT, useconsole NUMERIC, display TEXT, cmdargs TEXT, exec TEXT, icon_path TEXT, desc TEXT, desktop TEXT, nice TEXT, dir_id NUMERIC, id INTEGER PRIMARY KEY, name TEXT, prefix_id NUMERIC);")) return false; } else if (table == "images") { if(!query.exec("CREATE TABLE images (id INTEGER PRIMARY KEY, name TEXT, path TEXT);")) return false; } else if (table == "last_run_icon") { if(!query.exec("CREATE TABLE last_run_icon (wrkdir TEXT, override TEXT, winedebug TEXT, useconsole NUMERIC, display TEXT, cmdargs TEXT, exec TEXT, desktop TEXT, nice TEXT, id INTEGER PRIMARY KEY);")) return false; } else if (table == "logging") { if(!query.exec("CREATE TABLE logging (id INTEGER PRIMARY KEY, name TEXT, exit NUMERIC, stdout TEXT, prefix_id NUMERIC, date NUMERIC);")) return false; } else if (table == "providers") { if(!query.exec("CREATE TABLE providers (id INTEGER PRIMARY KEY, name TEXT, icon TEXT);")) return false; query.prepare("INSERT INTO providers(id, name, icon) VALUES(NULL, :name, :icon);"); query.bindValue(":name", "System"); query.bindValue(":icon", "wine.png"); if (!query.exec()) return false; query.bindValue(":name", "Winetricks"); query.bindValue(":icon", "regedit.png"); if (!query.exec()) return false; } else if (table == "sysconfig") { if(!query.exec("CREATE TABLE sysconfig (id INTEGER PRIMARY KEY, name TEXT, type TEXT, icon TEXT, desc TEXT, provider_id INTEGER);")) return false; // System items query.prepare("INSERT INTO sysconfig(id, name, icon, type, desc, provider_id) VALUES(NULL, :name, :icon, NULL, :desc, 1);"); query.bindValue(":name", "%CREATE_FAKE%"); query.bindValue(":icon", "fakedrive-new.png"); query.bindValue(":desc", "%CREATE_FAKE_DESC%"); if (!query.exec()) return false; query.prepare("INSERT INTO sysconfig(id, name, icon, type, desc, provider_id) VALUES(NULL, :name, :icon, NULL, :desc, 1);"); query.bindValue(":name", "%UPDATE_FAKE%"); query.bindValue(":icon", "fakedrive-update.png"); query.bindValue(":desc", "%UPDATE_FAKE_DESC%"); if (!query.exec()) return false; // Wintricks base query.prepare("INSERT INTO sysconfig(id, name, icon, type, desc, provider_id) VALUES(NULL, :name, :icon, NULL, :desc, 2);"); query.bindValue(":name", "%INSTALL_WINETRICKS%"); query.bindValue(":icon", "winetricks-install.png"); query.bindValue(":desc", "%UPDATE_WINETRICKS_DESC%"); if (!query.exec()) return false; query.prepare("INSERT INTO sysconfig(id, name, icon, type, desc, provider_id) VALUES(NULL, :name, :icon, NULL, :desc, 2);"); query.bindValue(":name", "%REFRESH_WINETRICKS%"); query.bindValue(":icon", "folder-downloads.png"); query.bindValue(":desc", "%REFRESH_WINETRICKS_DESC%"); if (!query.exec()) return false; } else if (table == "versions") { if(!query.exec("CREATE TABLE versions (wine_dllpath32 TEXT, wine_dllpath64 TEXT, wine_loader TEXT, wine_server TEXT, wine_exec TEXT, id INTEGER PRIMARY KEY, name TEXT);")) return false; // Creating default version reccord Version vers; vers.name_ = "Default"; // Use previous data is any QSettings settings(APP_SHORT_NAME, "default"); if (settings.value("configure", "no") == "yes") { settings.beginGroup("wine"); vers.wine_exec_ = settings.value("WineBin", QString()).toString(); vers.wine_server_ = settings.value("ServerBin", QString()).toString(); vers.wine_loader_ = settings.value("LoaderBin", QString()).toString(); vers.wine_dllpath32_ = settings.value("WineLibs32", QString()).toString(); vers.wine_dllpath64_ = settings.value("WineLibs64", QString()).toString(); settings.endGroup(); } if (!vers.save()) return false; } } } return fixup(); }