void WritePasswordJobPrivate::scheduledStart() { DATA_BLOB blob_in, blob_out; blob_in.pbData = reinterpret_cast<BYTE*>( data.data() ); blob_in.cbData = data.size(); const BOOL res = CryptProtectData( &blob_in, L"QKeychain-encrypted data", NULL, NULL, NULL, 0, &blob_out ); if ( !res ) { q->emitFinishedWithError( OtherError, tr("Encryption failed") ); //TODO more details available? return; } const QByteArray encrypted( reinterpret_cast<char*>( blob_out.pbData ), blob_out.cbData ); LocalFree( blob_out.pbData ); //Use settings member if there, create local settings object if not std::auto_ptr<QSettings> local( !q->settings() ? new QSettings( q->service() ) : 0 ); QSettings* actual = q->settings() ? q->settings() : local.get(); actual->setValue( key, encrypted ); actual->sync(); if ( actual->status() != QSettings::NoError ) { const QString errorString = actual->status() == QSettings::AccessError ? tr("Could not store encrypted data in settings: access error") : tr("Could not store encrypted data in settings: format error"); q->emitFinishedWithError( OtherError, errorString ); return; } q->emitFinished(); }
void DeletePasswordJobPrivate::scheduledStart() { //Use settings member if there, create local settings object if not std::auto_ptr<QSettings> local( !q->settings() ? new QSettings( q->service() ) : 0 ); QSettings* actual = q->settings() ? q->settings() : local.get(); actual->remove( key ); actual->sync(); if ( actual->status() != QSettings::NoError ) { const QString err = actual->status() == QSettings::AccessError ? tr("Could not delete encrypted data from settings: access error") : tr("Could not delete encrypted data from settings: format error"); q->emitFinishedWithError( OtherError, err ); } else { q->emitFinished(); } }
static bool setProgID(const QString &ProgID, const QString &typeDescription, const QString &friendlyName) { QString RootKeyName; QString classId; if (QSysInfo::WindowsVersion >= QSysInfo::WV_NT){ classId = "Software/Classes/" + ProgID; RootKeyName = "HKEY_CURRENT_USER"; }else{ classId = ProgID; RootKeyName = "HKEY_CLASSES_ROOT"; // Windows 95/98/ME } QSettings Reg (RootKeyName, QSettings::NativeFormat); if (!Reg.isWritable() || Reg.status() != QSettings::NoError) return false; QString appPath = qApp->applicationFilePath(); appPath.replace('/', '\\'); //Explorer gives 'Access Denied' if we write the path with forward slashes to the registry if(!typeDescription.isNull()) Reg.setValue(classId + REG_DEFAULT, typeDescription);/// Without this, will no able to create new text document. if(!friendlyName.isNull()) Reg.setValue(classId + "/shell/open/FriendlyAppName", friendlyName); Reg.setValue(classId + "/shell/open/command/.", QString("\"%1\" \"%2\"").arg(appPath, "%1")); Reg.setValue(classId + "/DefaultIcon/.", QString("\"%1\",0").arg(appPath)); /// Use the first icon of current program for default format icon. return true; }
bool setAssociation(const QString &extension, const QString &typeDescription, const QString &friendlyName) { if(!isSupportAssociation()) return false; #ifndef Q_WS_WIN return false; #else QSettings RegCR ("HKEY_CLASSES_ROOT", QSettings::NativeFormat); //Read only on NT+ QSettings RegCU ("HKEY_CURRENT_USER", QSettings::NativeFormat); if (QSysInfo::WindowsVersion < QSysInfo::WV_NT && !RegCR.isWritable()) //Win98 return false; QString ext("." + extension); QString ProgID = makeProgID(extension); //Check if ProgID exists in the registry, otherwise create it. if (!hasProgID(ProgID) && !setProgID(ProgID, typeDescription, friendlyName)) return false; if(checkAssociation(extension)) return true; //Create the associations if (QSysInfo::WindowsVersion >= QSysInfo::WV_NT){ RegCU.setValue("Software/Classes/" + ext + REG_DEFAULT, ProgID); //Extension class //Explorer FileExt association QString FileExtsKey = QString("Software/Microsoft/Windows/CurrentVersion/Explorer/FileExts/") + ext; removeUserChoice(extension); RegCU.remove(FileExtsKey + "/Application"); /// Windows XP }else{ //Windows ME/98/95 support RegCR.setValue(ext + REG_DEFAULT, ProgID); } RegCU.sync(); RegCR.sync(); // SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0);// Refresh Explorer cache. return (RegCU.status() == QSettings::NoError && RegCR.status() == QSettings::NoError); #endif // Q_WS_WIN }
void DBThread::Initialize() { QSettings settings;//(QSettings::UserScope, "osmscout.fransschreuder", "osmscout"); std::cout<<"Settings.status: "<<settings.status()<<std::endl; int selectedMap = settings.value("selectedmap", 0).toInt(); settings.setValue("selectedmap", selectedMap); std::cout<<"Settings filename "<<settings.fileName().toLocal8Bit().data()<<std::endl; QStringList mapDirs = findValidMapDirs(); if(mapDirs.size()<=0) { std::cout<<"Could not find valid map dir"<<std::endl; return; } if(selectedMap>=mapDirs.size()) { selectedMap = 0; } QString databaseDirectory = mapDirs[selectedMap]; QString stylesheetFilename=databaseDirectory+"/standard.oss"; if (database->Open(databaseDirectory.toLocal8Bit().data())) { osmscout::TypeConfigRef typeConfig=database->GetTypeConfig(); if (typeConfig) { styleConfig=new osmscout::StyleConfig(typeConfig); delete painter; painter=NULL; if (styleConfig->Load(stylesheetFilename.toLocal8Bit().data())) { painter=new osmscout::MapPainterQt(styleConfig); } else { //qDebug() << "Cannot load style sheet!"; styleConfig=NULL; } } else { //qDebug() << "TypeConfig invalid!"; styleConfig=NULL; } } else { //qDebug() << "Cannot open database!"; return; } DatabaseLoadedResponse response; if (!database->GetBoundingBox(response.boundingBox)) { //qDebug() << "Cannot read initial bounding box"; return; } emit InitialisationFinished(response); }
void PassWordForm::readSettings() { QSettings settings; if (settings.status() == QSettings::NoError) { QString user = settings.value("defaultUser").toString(); if (user.size() > 0) LoginSelector->setCurrentIndex(LoginSelector->findText(user)); } }
bool QsLanguage::saveActiveLanguage(int langId) { QSettings settings; if( -1 == indexOf(langId) ) return false; settings.setValue(QLatin1String("language"), langId); settings.sync(); if( QSettings::NoError == settings.status() ) return true; return false; }
/*! \internal Stores access token into settings. Returns false if writing settings fails. */ bool Facebook::storeCredentials() { QSettings settings; settings.setValue(AccessTokenString, m_accessToken); settings.setValue(ExpirationDateTimeString, m_expirationDateTime); settings.setValue(ScreenNameString, m_screenName); qDebug() << "Store: Access token:" << m_accessToken << "Expiration:" << m_expirationDateTime; return settings.status() == QSettings::NoError; }
/*! \internal Removes access token from settings. Returns false if removing access token from settings fails. */ bool Facebook::removeCredentials() { m_accessToken.clear(); m_expirationDateTime = QDateTime::currentDateTime(); QSettings settings; settings.remove(AccessTokenString); settings.remove(ExpirationDateTimeString); settings.remove(ScreenNameString); return settings.status() == QSettings::NoError; }
/*! * Copies settings from a QSettings object to another QSettings object. * \param originalSettings Settings to copy. * \param newSettings Target of the copy. * \return true if copying succeeds, false if it fails. */ static bool copySettings(const QSettings &originalSettings, QSettings &newSettings) { QStringList keys = originalSettings.allKeys(); foreach(const QString & key, originalSettings.allKeys()) { newSettings.setValue(key, originalSettings.value(key)); if (newSettings.status() != QSettings::NoError) { return false; } } return true; }
// -------------------------------------------------------------------------- void ctkSettingsPanel::setSetting(const QString& key, const QVariant& newVal) { Q_D(ctkSettingsPanel); QSettings* settings = d->settings(key); if (!settings) { return; } QVariant oldVal = settings->value(key); settings->setValue(key, newVal); d->Properties[key].setValue(newVal); if (settings->status() != QSettings::NoError) { logger.warn( QString("Error #%1 while writing setting \"%2\"") .arg(static_cast<int>(settings->status())) .arg(key)); } if (oldVal != newVal) { emit settingChanged(key, newVal); } }
void InspectorClientQt::storeSetting(const String& key, const InspectorController::Setting& setting) { QSettings qsettings; if (qsettings.status() == QSettings::AccessError) { qWarning("QWebInspector: QSettings couldn't persist configuration setting [%s].", qPrintable(static_cast<QString>(key))); return; } QVariant valueToStore = settingToVariant(setting); QString settingKey(settingStoragePrefix + key); qsettings.setValue(settingKey, valueToStore); qsettings.setValue(settingKey + settingStorageTypeSuffix, QVariant::typeToName(valueToStore.type())); }
//---------------------------------------------------------------------------- void ctkDICOMServerNodeWidget::readSettings() { Q_D(ctkDICOMServerNodeWidget); d->NodeTable->setRowCount(0); QSettings settings; QMap<QString, QVariant> node; if (settings.status() == QSettings::AccessError || settings.value("ServerNodeCount").toInt() == 0) { d->StorageAETitle->setText("CTKSTORE"); d->StoragePort->setText("11112"); d->CallingAETitle->setText("CTKSTORE"); // a dummy example QMap<QString, QVariant> defaultServerNode; defaultServerNode["Name"] = QString("ExampleHost"); defaultServerNode["CheckState"] = static_cast<int>(Qt::Unchecked); defaultServerNode["AETitle"] = QString("AETITLE"); defaultServerNode["Address"] = QString("dicom.example.com"); defaultServerNode["Port"] = QString("11112"); defaultServerNode["CGET"] = static_cast<int>(Qt::Unchecked); this->addServerNode(defaultServerNode); // the uk example - see http://www.dicomserver.co.uk/ // and http://www.medicalconnections.co.uk/ defaultServerNode["Name"] = QString("MedicalConnections"); defaultServerNode["CheckState"] = static_cast<int>(Qt::Unchecked); defaultServerNode["AETitle"] = QString("ANYAE"); defaultServerNode["Address"] = QString("dicomserver.co.uk"); defaultServerNode["Port"] = QString("11112"); defaultServerNode["CGET"] = static_cast<int>(Qt::Checked); this->addServerNode(defaultServerNode); return; } d->StorageAETitle->setText(settings.value("StorageAETitle").toString()); d->StoragePort->setText(settings.value("StoragePort").toString()); d->CallingAETitle->setText(settings.value("CallingAETitle").toString()); const int count = settings.value("ServerNodeCount").toInt(); for (int row = 0; row < count; ++row) { node = settings.value(QString("ServerNodes/%1").arg(row)).toMap(); this->addServerNode(node); } }
/*! \internal Restores access token from settings. Returns false if reading settings fails. */ bool Facebook::restoreCredentials() { QSettings settings; setAccessToken(settings.value(AccessTokenString).toString()); setScreenName(settings.value(ScreenNameString).toString()); m_expirationDateTime = settings.value(ExpirationDateTimeString).toDateTime(); qDebug() << "Restore: Access token for user" << m_screenName << ":" << m_accessToken << "Expiration:" << m_expirationDateTime; return settings.status() == QSettings::NoError; }
void InspectorClientQt::populateSetting(const String& key, InspectorController::Setting& setting) { QSettings qsettings; if (qsettings.status() == QSettings::AccessError) { // QCoreApplication::setOrganizationName and QCoreApplication::setApplicationName haven't been called qWarning("QWebInspector: QSettings couldn't read configuration setting [%s].", qPrintable(static_cast<QString>(key))); return; } QString settingKey(settingStoragePrefix + key); QString storedValueType = qsettings.value(settingKey + settingStorageTypeSuffix).toString(); QVariant storedValue = qsettings.value(settingKey); storedValue.convert(QVariant::nameToType(storedValueType.toAscii().data())); setting = variantToSetting(storedValue); }
void MessageWindow::readSettings() { QString configName = "messagesWindow"; QHash<QString, int> settingValues; QSettings settings; if (settings.status() == QSettings::NoError) { settings.beginGroup(configName); if (settings.contains("x") && settings.contains("y") && settings.contains("width") && settings.contains("height") && settings.value("width", 0).toInt() > 0 && settings.value("height", 0).toInt() > 0) { settingValues.insert("x", settings.value("x").toInt()); settingValues.insert("y", settings.value("y").toInt()); settingValues.insert("width", settings.value("width").toInt()); settingValues.insert("height", settings.value("height").toInt()); } else { // Если локальные значения координат и размеров окна прочитать не удалось, попытаемся загрузить их с сервера app->showMessageOnStatusBar(tr("Загрузка с сервера геометрии окна справочника ") + configName + "..."); QSqlQuery config = app->getDBFactory()->getConfig(); config.first(); while (config.isValid()) { if (config.record().value("group").toString() == configName) { settingValues.remove(config.record().value("name").toString()); settingValues.insert(config.record().value("name").toString(), config.record().value("value").toInt()); } config.next(); } app->showMessageOnStatusBar(""); } settings.endGroup(); int x = settingValues.value("x", 0); int y = settingValues.value("y", 0); int w = settingValues.value("width", 400); int h = settingValues.value("height", 200); subWindow->setGeometry(x, y, w, h); } }
void InspectorClientQt::storeSetting(const String& key, const String& setting) { #ifdef QT_NO_SETTINGS Q_UNUSED(key) Q_UNUSED(setting) qWarning("QWebInspector: QSettings is not supported by Qt."); #else QSettings qsettings; if (qsettings.status() == QSettings::AccessError) { qWarning("QWebInspector: QSettings couldn't persist configuration setting [%s].", qPrintable(static_cast<QString>(key))); return; } QVariant valueToStore = settingToVariant(setting); QString settingKey(settingStoragePrefix + QString(key)); qsettings.setValue(settingKey, valueToStore); qsettings.setValue(settingKey + settingStorageTypeSuffix, QVariant::typeToName(valueToStore.type())); #endif // QT_NO_SETTINGS }
void AkregatorImportPage::handleAccepted () { QString filename = Ui_.FileLocation_->text (); if (!CheckValidity (filename)) return; Entity e = Util::MakeEntity (QUrl::fromLocalFile (filename), QString (), FromUserInitiated, "text/x-opml"); if (Ui_.ImportSettings_->checkState () == Qt::Checked) { QSettings settings (QDir::homePath () + "/.kde/share/config/akregatorrc", QSettings::IniFormat); if (settings.status () == QSettings::NoError) { if (settings.contains ("Show Tray Icon")) e.Additional_ ["ShowTrayIcon"] = settings.value ("Show Tray Icon"); if (settings.contains ("Fetch On Startup")) e.Additional_ ["UpdateOnStartup"] = settings.value ("Fetch On Startup"); if (settings.contains ("Auto Fetch Interval")) e.Additional_ ["UpdateTimeout"] = settings.value ("Auto Fetch Interval"); settings.beginGroup ("Archive"); if (settings.contains ("Max Article Number")) e.Additional_ ["MaxArticles"] = settings.value ("Max Article Number"); if (settings.contains ("Max Article Age")) e.Additional_ ["MaxAge"] = settings.value ("Max Article Age"); settings.endGroup (); e.Additional_ ["UserVisibleName"] = tr ("Akregator settings"); } else QMessageBox::critical (0, "LeechCraft", tr ("Could not access or parse Akregator settings.")); } emit gotEntity (e); }
void InspectorClientQt::populateSetting(const String& key, String* setting) { #ifdef QT_NO_SETTINGS Q_UNUSED(key) Q_UNUSED(setting) qWarning("QWebInspector: QSettings is not supported by Qt."); #else QSettings qsettings; if (qsettings.status() == QSettings::AccessError) { // QCoreApplication::setOrganizationName and QCoreApplication::setApplicationName haven't been called qWarning("QWebInspector: QSettings couldn't read configuration setting [%s].", qPrintable(static_cast<QString>(key))); return; } QString settingKey(settingStoragePrefix + QString(key)); QString storedValueType = qsettings.value(settingKey + settingStorageTypeSuffix).toString(); QVariant storedValue = qsettings.value(settingKey); storedValue.convert(QVariant::nameToType(storedValueType.toAscii().data())); *setting = variantToSetting(storedValue); #endif // QT_NO_SETTINGS }
LoggingConfig::LoggingConfig(const QString& logConfiguration, const QString& logDirectory, const QString& logFilePrefix) : logConfig(logConfiguration), logDir(logDirectory), logPrefix(logFilePrefix) { QSettings *settings = nullptr; if(!logConfig.isEmpty()) { QFileInfo logFile(logConfig); QString logFileInConfig = atools::settings::Settings::getPath() + QDir::separator() + logFile.fileName(); if(QFile::exists(logFileInConfig)) // Try in the configuration directory settings = new QSettings(logFileInConfig, QSettings::IniFormat); else if(QFile::exists(logConfig)) // Try resource or full path settings = new QSettings(logConfig, QSettings::IniFormat); } else // Use default configuration file settings = atools::settings::Settings::getQSettings(); if(settings->status() != QSettings::NoError) qWarning() << "Error reading log configuration file" << settings->fileName() << ":" << settings->status(); // Read general parameters readConfigurationSection(settings); QHash<QString, QTextStream *> channelMap; // Create all file streams and add them to the channelMap readChannels(settings, channelMap); // Assign log levels to channels readLevels(settings, channelMap); delete settings; }
bool ProfilModel::loadProfils() { if (!QFile::exists(Profil::ProfilDirectory)) if (!QDir(qApp->applicationDirPath()).mkdir(Profil::ProfilDirectory)) return createDefaultProfils(false); QDir pdir(qApp->applicationDirPath().toLocal8Bit() + "/" + Profil::ProfilDirectory); QStringList dirFilter; dirFilter << "*.ini"; pdir.setNameFilters(dirFilter); QStringList strlt = pdir.entryList(); QStringListIterator it(strlt); if (strlt.isEmpty()) return createDefaultProfils(); while (it.hasNext()) { Profil* newProfil; QString fileName = qApp->applicationDirPath().toLocal8Bit() + "/" + Profil::ProfilDirectory + "/" + it.next(); QSettings* fileIni = new QSettings(fileName, QSettings::IniFormat); fileIni->sync(); if (fileIni->status() != QSettings::NoError) return false; if (fileIni->value(PROFIL_TYPE_STRING).toString() == PROFIL_TYPE_GSTOYUNDA) newProfil = new ProfilGstToyundaPlayer; if (fileIni->value(PROFIL_TYPE_STRING).toString() == PROFIL_TYPE_MPLAYER) newProfil = new Profilmplayer; if (fileIni->value(PROFIL_TYPE_STRING).toString() == PROFIL_TYPE_QOSD) newProfil = new ProfilOSD; newProfil->fileName = fileName; delete fileIni; newProfil->load(fileName); m_profilList.append(newProfil); } m_defaultProfil = m_profilList.first(); return true; }
bool ProfilModel::saveProfils() { QListIterator<Profil*>it(m_profilList); while (it.hasNext()) { Profil* myProf = it.next(); if (myProf->fileName.isEmpty()) myProf->fileName = qApp->applicationDirPath().toLocal8Bit() + "/" + Profil::ProfilDirectory + "/" + myProf->name + ".ini"; QSettings* mConf = new QSettings(myProf->fileName, QSettings::IniFormat); mConf->sync(); if (mConf->status() != QSettings::NoError) return false; if (myProf->baseType == Profil::OSD) mConf->setValue(PROFIL_TYPE_STRING, PROFIL_TYPE_QOSD); if (myProf->baseType == Profil::MPLAYER) mConf->setValue(PROFIL_TYPE_STRING, PROFIL_TYPE_MPLAYER); if (myProf->baseType == Profil::GSTPLAYER) mConf->setValue(PROFIL_TYPE_STRING, PROFIL_TYPE_GSTOYUNDA); delete mConf; if (!myProf->save()) return false; } return true; }
void PassWordForm::writeSettings() { QSettings settings; if (settings.status() == QSettings::NoError) settings.setValue("defaultUser", login); }
bool clearAssociation(const QString & extension) { if(!isSupportAssociation()) return false; #ifdef Q_WS_WIN if(!checkAssociation(extension)) return true; QString ext("." + extension); QString ProgID = makeProgID(extension); QSettings RegCU("HKEY_CURRENT_USER", QSettings::NativeFormat); QSettings RegCR ("HKEY_CLASSES_ROOT", QSettings::NativeFormat); if (QSysInfo::WindowsVersion < QSysInfo::WV_NT && !RegCR.isWritable()) //Win98 return false; QString fileName = QFileInfo(qApp->applicationFilePath()).fileName(); QString FileExtsKey = QString("Software/Microsoft/Windows/CurrentVersion/Explorer/FileExts/") + ext; /// Windows 7:"/UserChoice/Progid" ; XP: "/Progid" QString CurClassId = (QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA) ? RegCU.value(FileExtsKey + "/UserChoice/Progid").toString() : RegCU.value(FileExtsKey + "/Progid").toString(); QString CurAppId = RegCU.value(FileExtsKey + "/Application").toString(); /// Windows XP if (!CurClassId.isEmpty() && ( (CurClassId == ProgID) || (0 == CurClassId.compare(fileName, Qt::CaseInsensitive)) || (0 == CurClassId.compare(QString("Applications\\%1").arg(fileName), Qt::CaseInsensitive)) ) ){ removeUserChoice(extension); } if (!CurAppId.isEmpty() && ( (CurAppId == ProgID) || (0 == CurAppId.compare(fileName, Qt::CaseInsensitive)) ) ){ RegCU.remove(FileExtsKey + "/Application"); } if (QSysInfo::WindowsVersion >= QSysInfo::WV_NT){ if (RegCU.value("Software/Classes/" + ext + REG_DEFAULT).toString() == ProgID) //Only remove if we own it /// This is no recommend to delete in MSDN, case it may cause other problems, such as cannot create new text document if delete '.txt' group. // RegCU.remove("Software/Classes/" + ext); RegCU.remove("Software/Classes/" + ProgID); }else{ //Windows 98 ==> Write to HKCR if (RegCR.value(ext + REG_DEFAULT).toString() == ProgID) // RegCR.remove(ext); RegCR.remove(ProgID); } RegCU.sync(); RegCR.sync(); // SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0);// Refresh Explorer cache. return (RegCU.status() == QSettings::NoError && RegCR.status() == QSettings::NoError); #else return false; #endif // Q_WS_WIN }
void KTorrentImportPage::handleAccepted () { QString filename = Ui_.FileLocation_->text (); if (!CheckValidity (filename)) return; Entity e = Util::MakeEntity (QUrl::fromLocalFile (filename), QString (), FromUserInitiated, "x-leechcraft/bittorrent-import"); if (Ui_.ImportSettings_->checkState () == Qt::Checked) { QSettings settings (filename, QSettings::IniFormat); if (settings.status () == QSettings::NoError) { QMap<QString, QVariant> additional; settings.beginGroup ("downloads"); if (settings.contains ("completedDir")) additional ["CompletedDir"] = settings.value ("completedDir"); if (settings.contains ("dhtPort")) additional ["DHTPort"] = settings.value ("dhtPort"); if (settings.contains ("dhtSupport")) additional ["DHTSupport"] = settings.value ("dhtSupport"); if (settings.contains ("lastSaveDir")) additional ["LastSaveDir"] = settings.value ("lastSaveDir"); if (settings.contains ("oldTorrentsImported")) additional ["OldTorrentsImported"] = settings.value ("oldTorrentsImported"); if (settings.contains ("saveDir")) additional ["SaveDir"] = settings.value ("saveDir"); if (settings.contains ("TempDir")) { additional ["TempDir"] = settings.value ("TempDir"); QDir tempDir (settings.value ("TempDir").toString ()); if (tempDir.exists () && tempDir.isReadable ()) { QFileInfoList torrentsDir = tempDir.entryInfoList (QStringList ("tor"), QDir::Dirs | QDir::Readable, QDir::Unsorted); QList<QVariant> list; for (int i = 0; i < torrentsDir.size (); ++i) { QMap<QString, QVariant> map; GetTorrentSettings (torrentsDir.at (i).absoluteFilePath (), map); list << map; } additional ["BitTorrentImportTorrents"] = list; } } else { additional ["TempDir"] = "~/.kde/share/apps/ktorrent"; // TODO later } if (settings.contains ("TorrentCopyDir")) additional ["TorrentCopyDir"] = settings.value ("torrentCopyDir"); settings.endGroup (); e.Additional_ ["BitTorrent/SettingsImportData"] = additional; e.Additional_ ["UserVisibleName"] = tr ("KTorrent settings"); } else QMessageBox::critical (this, "LeechCraft", tr ("Could not access or parse KTorrent settings.")); } emit gotEntity (e); }
/// \brief Save the settings to the harddisk. /// \param fileName Optional filename to read the settings from an ini file. /// \return 0 on success, negative on error. int DsoSettings::save(const QString &fileName) { // Use main configuration and save everything if the fileName wasn't set QSettings *settingsSaver; bool complete = fileName.isEmpty(); if(complete) settingsSaver = new QSettings(this); else settingsSaver = new QSettings(fileName, QSettings::IniFormat, this); if(settingsSaver->status() != QSettings::NoError) return -settingsSaver->status(); if(complete) { // Main window layout and other general options settingsSaver->beginGroup("options"); settingsSaver->beginGroup("window"); // Docking windows and toolbars settingsSaver->beginGroup("docks"); QList<DsoSettingsOptionsWindowPanel *> docks; docks.append(&(this->options.window.dock.horizontal)); docks.append(&(this->options.window.dock.spectrum)); docks.append(&(this->options.window.dock.trigger)); docks.append(&(this->options.window.dock.voltage)); QStringList dockNames; dockNames << "horizontal" << "spectrum" << "trigger" << "voltage"; for(int dockId = 0; dockId < docks.size(); ++dockId) { settingsSaver->beginGroup(dockNames[dockId]); settingsSaver->setValue("floating", docks[dockId]->floating); settingsSaver->setValue("position", docks[dockId]->position); settingsSaver->setValue("visible", docks[dockId]->visible); settingsSaver->endGroup(); } settingsSaver->endGroup(); settingsSaver->beginGroup("toolbars"); QList<DsoSettingsOptionsWindowPanel *> toolbars; toolbars.append(&(this->options.window.toolbar.file)); toolbars.append(&(this->options.window.toolbar.oscilloscope)); toolbars.append(&(this->options.window.toolbar.view)); QStringList toolbarNames; toolbarNames << "file" << "oscilloscope" << "view"; for(int toolbarId = 0; toolbarId < toolbars.size(); ++toolbarId) { settingsSaver->beginGroup(toolbarNames[toolbarId]); settingsSaver->setValue("floating", toolbars[toolbarId]->floating); settingsSaver->setValue("position", toolbars[toolbarId]->position); settingsSaver->setValue("visible", toolbars[toolbarId]->visible); settingsSaver->endGroup(); } settingsSaver->endGroup(); // Main window settingsSaver->setValue("pos", this->options.window.position); settingsSaver->setValue("size", this->options.window.size); settingsSaver->endGroup(); settingsSaver->setValue("alwaysSave", this->options.alwaysSave); settingsSaver->setValue("imageSize", this->options.imageSize); settingsSaver->endGroup(); } // Oszilloskope settings settingsSaver->beginGroup("scope"); // Horizontal axis settingsSaver->beginGroup("horizontal"); settingsSaver->setValue("format", this->scope.horizontal.format); settingsSaver->setValue("frequencybase", this->scope.horizontal.frequencybase); for(int marker = 0; marker < 2; ++marker) settingsSaver->setValue(QString("marker%1").arg(marker), this->scope.horizontal.marker[marker]); settingsSaver->setValue("timebase", this->scope.horizontal.timebase); settingsSaver->setValue("recordLength", this->scope.horizontal.recordLength); settingsSaver->setValue("samplerate", this->scope.horizontal.samplerate); settingsSaver->setValue("samplerateSet", this->scope.horizontal.samplerateSet); settingsSaver->endGroup(); // Trigger settingsSaver->beginGroup("trigger"); settingsSaver->setValue("filter", this->scope.trigger.filter); settingsSaver->setValue("mode", this->scope.trigger.mode); settingsSaver->setValue("position", this->scope.trigger.position); settingsSaver->setValue("slope", this->scope.trigger.slope); settingsSaver->setValue("source", this->scope.trigger.source); settingsSaver->setValue("special", this->scope.trigger.special); settingsSaver->endGroup(); // Spectrum for(int channel = 0; channel < this->scope.spectrum.count(); ++channel) { settingsSaver->beginGroup(QString("spectrum%1").arg(channel)); settingsSaver->setValue("magnitude", this->scope.spectrum[channel].magnitude); settingsSaver->setValue("offset", this->scope.spectrum[channel].offset); settingsSaver->setValue("used", this->scope.spectrum[channel].used); settingsSaver->endGroup(); } // Vertical axis for(int channel = 0; channel < this->scope.voltage.count(); ++channel) { settingsSaver->beginGroup(QString("vertical%1").arg(channel)); settingsSaver->setValue("gain", this->scope.voltage[channel].gain); settingsSaver->setValue("misc", this->scope.voltage[channel].misc); settingsSaver->setValue("offset", this->scope.voltage[channel].offset); settingsSaver->setValue("trigger", this->scope.voltage[channel].trigger); settingsSaver->setValue("used", this->scope.voltage[channel].used); settingsSaver->endGroup(); } settingsSaver->setValue("spectrumLimit", this->scope.spectrumLimit); settingsSaver->setValue("spectrumReference", this->scope.spectrumReference); settingsSaver->setValue("spectrumWindow", this->scope.spectrumWindow); settingsSaver->endGroup(); // View settingsSaver->beginGroup("view"); // Colors if(complete) { settingsSaver->beginGroup("color"); DsoSettingsColorValues *colors; for(int mode = 0; mode < 2; ++mode) { if(mode == 0) { colors = &this->view.color.screen; settingsSaver->beginGroup("screen"); } else { colors = &this->view.color.print; settingsSaver->beginGroup("print"); } settingsSaver->setValue("axes", colors->axes); settingsSaver->setValue("background", colors->background); settingsSaver->setValue("border", colors->border); settingsSaver->setValue("grid", colors->grid); settingsSaver->setValue("markers", colors->markers); for(int channel = 0; channel < this->scope.spectrum.count(); ++channel) settingsSaver->setValue(QString("spectrum%1").arg(channel), colors->spectrum[channel]); settingsSaver->setValue("text", colors->text); for(int channel = 0; channel < this->scope.voltage.count(); ++channel) settingsSaver->setValue(QString("voltage%1").arg(channel), colors->voltage[channel]); settingsSaver->endGroup(); } settingsSaver->endGroup(); } // Other view settings settingsSaver->setValue("digitalPhosphor", this->view.digitalPhosphor); if(complete) { settingsSaver->setValue("interpolation", this->view.interpolation); settingsSaver->setValue("screenColorImages", this->view.screenColorImages); } settingsSaver->setValue("zoom", this->view.zoom); settingsSaver->endGroup(); delete settingsSaver; return 0; }
/// \brief Read the settings from the last session or another file. /// \param fileName Optional filename to load the settings from an ini file. /// \return 0 on success, negative on error. int DsoSettings::load(const QString &fileName) { // Use main configuration if the fileName wasn't set QSettings *settingsLoader; if(fileName.isEmpty()) settingsLoader = new QSettings(this); else { settingsLoader = new QSettings(fileName, QSettings::IniFormat, this); } if(settingsLoader->status() != QSettings::NoError) return -settingsLoader->status(); // Main window layout and other general options settingsLoader->beginGroup("options"); settingsLoader->beginGroup("window"); // Docking windows and toolbars settingsLoader->beginGroup("docks"); QList<DsoSettingsOptionsWindowPanel *> docks; docks.append(&(this->options.window.dock.horizontal)); docks.append(&(this->options.window.dock.spectrum)); docks.append(&(this->options.window.dock.trigger)); docks.append(&(this->options.window.dock.voltage)); QStringList dockNames; dockNames << "horizontal" << "spectrum" << "trigger" << "voltage"; for(int dockId = 0; dockId < docks.size(); ++dockId) { settingsLoader->beginGroup(dockNames[dockId]); if(settingsLoader->contains("floating")) docks[dockId]->floating = settingsLoader->value("floating").toBool(); if(settingsLoader->contains("position")) docks[dockId]->position = settingsLoader->value("position").toPoint(); if(settingsLoader->contains("visible")) docks[dockId]->visible = settingsLoader->value("visible").toBool(); settingsLoader->endGroup(); } settingsLoader->endGroup(); settingsLoader->beginGroup("toolbars"); QList<DsoSettingsOptionsWindowPanel *> toolbars; toolbars.append(&(this->options.window.toolbar.file)); toolbars.append(&(this->options.window.toolbar.oscilloscope)); toolbars.append(&(this->options.window.toolbar.view)); QStringList toolbarNames; toolbarNames << "file" << "oscilloscope" << "view"; for(int toolbarId = 0; toolbarId < toolbars.size(); ++toolbarId) { settingsLoader->beginGroup(toolbarNames[toolbarId]); if(settingsLoader->contains("floating")) toolbars[toolbarId]->floating = settingsLoader->value("floating").toBool(); if(settingsLoader->contains("position")) toolbars[toolbarId]->position = settingsLoader->value("position").toPoint(); if(settingsLoader->contains("visible")) toolbars[toolbarId]->visible = settingsLoader->value("visible").toBool(); settingsLoader->endGroup(); } settingsLoader->endGroup(); // Main window if(settingsLoader->contains("pos")) this->options.window.position = settingsLoader->value("pos").toPoint(); if(settingsLoader->contains("size")) this->options.window.size = settingsLoader->value("size").toSize(); settingsLoader->endGroup(); // General options if(settingsLoader->contains("alwaysSave")) this->options.alwaysSave = settingsLoader->value("alwaysSave").toBool(); if(settingsLoader->contains("imageSize")) this->options.imageSize = settingsLoader->value("imageSize").toSize(); settingsLoader->endGroup(); // Oszilloskope settings settingsLoader->beginGroup("scope"); // Horizontal axis settingsLoader->beginGroup("horizontal"); if(settingsLoader->contains("format")) this->scope.horizontal.format = (Dso::GraphFormat) settingsLoader->value("format").toInt(); if(settingsLoader->contains("frequencybase")) this->scope.horizontal.frequencybase = settingsLoader->value("frequencybase").toDouble(); for(int marker = 0; marker < 2; ++marker) { QString name; name = QString("marker%1").arg(marker); if(settingsLoader->contains(name)) this->scope.horizontal.marker[marker] = settingsLoader->value(name).toDouble(); } if(settingsLoader->contains("timebase")) this->scope.horizontal.timebase = settingsLoader->value("timebase").toDouble(); if(settingsLoader->contains("recordLength")) this->scope.horizontal.recordLength = settingsLoader->value("recordLength").toUInt(); if(settingsLoader->contains("samplerate")) this->scope.horizontal.samplerate = settingsLoader->value("samplerate").toDouble(); if(settingsLoader->contains("samplerateSet")) this->scope.horizontal.samplerateSet = settingsLoader->value("samplerateSet").toBool(); settingsLoader->endGroup(); // Trigger settingsLoader->beginGroup("trigger"); if(settingsLoader->contains("filter")) this->scope.trigger.filter = settingsLoader->value("filter").toBool(); if(settingsLoader->contains("mode")) this->scope.trigger.mode = (Dso::TriggerMode) settingsLoader->value("mode").toInt(); if(settingsLoader->contains("position")) this->scope.trigger.position = settingsLoader->value("position").toDouble(); if(settingsLoader->contains("slope")) this->scope.trigger.slope = (Dso::Slope) settingsLoader->value("slope").toInt(); if(settingsLoader->contains("source")) this->scope.trigger.source = settingsLoader->value("source").toInt(); if(settingsLoader->contains("special")) this->scope.trigger.special = settingsLoader->value("special").toInt(); settingsLoader->endGroup(); // Spectrum for(int channel = 0; channel < this->scope.spectrum.count(); ++channel) { settingsLoader->beginGroup(QString("spectrum%1").arg(channel)); if(settingsLoader->contains("magnitude")) this->scope.spectrum[channel].magnitude = settingsLoader->value("magnitude").toDouble(); if(settingsLoader->contains("offset")) this->scope.spectrum[channel].offset = settingsLoader->value("offset").toDouble(); if(settingsLoader->contains("used")) this->scope.spectrum[channel].used = settingsLoader->value("used").toBool(); settingsLoader->endGroup(); } // Vertical axis for(int channel = 0; channel < this->scope.voltage.count(); ++channel) { settingsLoader->beginGroup(QString("vertical%1").arg(channel)); if(settingsLoader->contains("gain")) this->scope.voltage[channel].gain = settingsLoader->value("gain").toDouble(); if(settingsLoader->contains("misc")) this->scope.voltage[channel].misc = settingsLoader->value("misc").toInt(); if(settingsLoader->contains("offset")) this->scope.voltage[channel].offset = settingsLoader->value("offset").toDouble(); if(settingsLoader->contains("trigger")) this->scope.voltage[channel].trigger = settingsLoader->value("trigger").toDouble(); if(settingsLoader->contains("used")) this->scope.voltage[channel].used = settingsLoader->value("used").toBool(); settingsLoader->endGroup(); } if(settingsLoader->contains("spectrumLimit")) this->scope.spectrumLimit = settingsLoader->value("spectrumLimit").toDouble(); if(settingsLoader->contains("spectrumReference")) this->scope.spectrumReference = settingsLoader->value("spectrumReference").toDouble(); if(settingsLoader->contains("spectrumWindow")) this->scope.spectrumWindow = (Dso::WindowFunction) settingsLoader->value("spectrumWindow").toInt(); settingsLoader->endGroup(); // View settingsLoader->beginGroup("view"); // Colors settingsLoader->beginGroup("color"); DsoSettingsColorValues *colors; for(int mode = 0; mode < 2; ++mode) { if(mode == 0) { colors = &this->view.color.screen; settingsLoader->beginGroup("screen"); } else { colors = &this->view.color.print; settingsLoader->beginGroup("print"); } if(settingsLoader->contains("axes")) colors->axes = settingsLoader->value("axes").value<QColor>(); if(settingsLoader->contains("background")) colors->background = settingsLoader->value("background").value<QColor>(); if(settingsLoader->contains("border")) colors->border = settingsLoader->value("border").value<QColor>(); if(settingsLoader->contains("grid")) colors->grid = settingsLoader->value("grid").value<QColor>(); if(settingsLoader->contains("markers")) colors->markers = settingsLoader->value("markers").value<QColor>(); for(int channel = 0; channel < this->scope.spectrum.count(); ++channel) { QString key = QString("spectrum%1").arg(channel); if(settingsLoader->contains(key)) colors->spectrum[channel] = settingsLoader->value(key).value<QColor>(); } if(settingsLoader->contains("text")) colors->text = settingsLoader->value("text").value<QColor>(); for(int channel = 0; channel < this->scope.voltage.count(); ++channel) { QString key = QString("voltage%1").arg(channel); if(settingsLoader->contains(key)) colors->voltage[channel] = settingsLoader->value(key).value<QColor>(); } settingsLoader->endGroup(); } settingsLoader->endGroup(); // Other view settings if(settingsLoader->contains("digitalPhosphor")) this->view.digitalPhosphor = settingsLoader->value("digitalPhosphor").toBool(); if(settingsLoader->contains("interpolation")) this->view.interpolation = (Dso::InterpolationMode) settingsLoader->value("interpolation").toInt(); if(settingsLoader->contains("screenColorImages")) this->view.screenColorImages = (Dso::InterpolationMode) settingsLoader->value("screenColorImages").toBool(); if(settingsLoader->contains("zoom")) this->view.zoom = (Dso::InterpolationMode) settingsLoader->value("zoom").toBool(); settingsLoader->endGroup(); delete settingsLoader; return 0; }