QVariant UserConfiguration::SetOption(QString key_, QString config_, QVariant default_) { if (this->UserOptions.contains(key_)) { // we must not add 2 same throw new Huggle::Exception("This option is already in a list you can't have multiple same keys in it", BOOST_CURRENT_FUNCTION); } QString d_ = default_.toString(); QString value = ConfigurationParse(key_, config_, d_); HuggleOption *h; switch (default_.type()) { case QVariant::Int: h = new HuggleOption(key_, value.toInt(), value == d_); break; case QVariant::Bool: h = new HuggleOption(key_, Generic::SafeBool(value), value == d_); break; default: h = new HuggleOption(key_, value, value == d_); break; } this->UserOptions.insert(key_, h); return h->GetVariant(); }
QString Configuration::GetSafeUserString(QString key_, QString default_value) { HuggleOption *option = this->GetOption(key_); if (option != nullptr) return option->GetVariant().toString(); return default_value; }
QString Configuration::MakeLocalUserConfig() { /// \todo rewrite to save all SharedConfig only if different from project QString configuration_ = "<nowiki>\n"; configuration_ += "enable:true\n"; configuration_ += "version:" + HuggleConfiguration->HuggleVersion + "\n\n"; configuration_ += "speedy-message-title:Speedy deleted\n"; configuration_ += "report-summary:" + HuggleConfiguration->ProjectConfig_ReportSummary + "\n"; configuration_ += "prod-message-summary:Notification: Proposed deletion of [[$1]]\n"; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // huggle 2 options configuration_ += "auto-advance:false\n"; configuration_ += "auto-whitelist:true\n"; configuration_ += "username-listed:true\n"; configuration_ += "admin:true\n"; configuration_ += "patrol-speedy:true\n"; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// configuration_ += "confirm-multiple:" + Bool2String(HuggleConfiguration->ProjectConfig_ConfirmMultipleEdits) + "\n"; configuration_ += "confirm-page:" + Bool2String(HuggleConfiguration->ProjectConfig_ConfirmPage) + "\n"; configuration_ += "confirm-same:" + Bool2String(HuggleConfiguration->ProjectConfig_ConfirmSame) + "\n"; configuration_ += "confirm-self-revert:" + Bool2String(HuggleConfiguration->ProjectConfig_ConfirmOnSelfRevs) + "\n"; configuration_ += "confirm-warned:" + Bool2String(HuggleConfiguration->ProjectConfig_ConfirmWarned) + "\n"; configuration_ += "confirm-range:" + Bool2String(HuggleConfiguration->ProjectConfig_ConfirmRange) + "\n"; configuration_ += "default-summary:" + HuggleConfiguration->ProjectConfig_DefaultSummary + "\n"; configuration_ += "// this option will change the behaviour of automatic resolution, be carefull\n"; configuration_ += "revert-auto-multiple-edits:" + Bool2String(HuggleConfiguration->RevertOnMultipleEdits) + "\n"; configuration_ += "automatically-resolve-conflicts:" + Bool2String(HuggleConfiguration->UserConfig_AutomaticallyResolveConflicts) + "\n"; configuration_ += "confirm-page:" + Bool2String(HuggleConfiguration->ProjectConfig_ConfirmPage) + "\n"; configuration_ += "confirm-same:" + Bool2String(HuggleConfiguration->ProjectConfig_ConfirmSame) + "\n"; configuration_ += "software-rollback:" + Bool2String(HuggleConfiguration->EnforceManualSoftwareRollback) + "\n"; configuration_ += "diff-font-size:" + QString::number(HuggleConfiguration->SystemConfig_FontSize) + "\n"; configuration_ += "RevertOnMultipleEdits:" + Bool2String(HuggleConfiguration->RevertOnMultipleEdits) + "\n"; configuration_ += "HistoryLoad:" + Bool2String(HuggleConfiguration->UserConfig_HistoryLoad) + "\n"; configuration_ += "OnNext:" + QString::number(static_cast<int>(HuggleConfiguration->UserConfig_GoNext)) + "\n"; configuration_ += "DeleteEditsAfterRevert:" + Bool2String(HuggleConfiguration->UserConfig_DeleteEditsAfterRevert) + "\n"; configuration_ += "SkipToLastEdit:" + Bool2String(HuggleConfiguration->UserConfig_LastEdit) + "\n"; configuration_ += "RemoveOldestQueueEdits:" + Bool2String(HuggleConfiguration->UserConfig_RemoveOldQueueEdits) + "\n"; configuration_ += "TruncateEdits:" + Bool2String(HuggleConfiguration->UserConfig_TruncateEdits) + "\n"; configuration_ += "TalkpageFreshness:" + QString::number(HuggleConfiguration->UserConfig_TalkPageFreshness) + "\n"; configuration_ += "DisplayTitle:" + Bool2String(HuggleConfiguration->UserConfig_DisplayTitle) + "\n"; configuration_ += "// Periodically check if you received new messages and display a notification box if you get them\n"; configuration_ += "CheckTP:" + Bool2String(HuggleConfiguration->UserConfig_CheckTP) + "\n"; configuration_ += "ManualWarning:" + Bool2String(HuggleConfiguration->UserConfig_ManualWarning) + "\n"; configuration_ += "// HAN\n"; configuration_ += "HAN_DisplayUserTalk:" + Bool2String(HuggleConfiguration->UserConfig_HAN_DisplayUserTalk) + "\n"; configuration_ += "HAN_DisplayBots:" + Bool2String(HuggleConfiguration->UserConfig_HAN_DisplayBots) + "\n"; configuration_ += "HAN_DisplayUser:"******"\n"; configuration_ += "QueueID:" + HuggleConfiguration->UserConfig_QueueID + "\n"; QStringList kl = HuggleConfiguration->UserOptions.keys(); foreach (QString item, kl) { HuggleOption *option = HuggleConfiguration->GetOption(item); if (option == nullptr) { // this must never happen throw new Huggle::Exception("Option key was nullptr during store", "QString Configuration::MakeLocalUserConfig()"); } if (!option->IsDefault()) { if (option->GetVariant().type() != QVariant::StringList) { // in case we modified this item we store it configuration_ += item + ":" + option->GetVariant().toString() + "\n"; } else { QStringList list = option->GetVariant().toStringList(); configuration_ += item + ":\n"; int x = 0; while (x < list.count()) { if (x+1 < list.count()) { configuration_ += " " + list.at(x) + ",\n"; } else { configuration_ += " " + list.at(x) + "\n\n"; } x++; } } } }