mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-04-27 07:48:01 -07:00
Refactred settings to use settingscache & ini files
This commit is contained in:
parent
9c28cdd1f5
commit
c8d59eec5e
29 changed files with 780 additions and 241 deletions
|
|
@ -1,5 +1,6 @@
|
|||
#include "settingscache.h"
|
||||
#include <QSettings>
|
||||
#include <QFile>
|
||||
#if QT_VERSION >= 0x050000
|
||||
#include <QStandardPaths>
|
||||
#else
|
||||
|
|
@ -11,7 +12,7 @@ QString SettingsCache::getSettingsPath()
|
|||
QString file = "";
|
||||
|
||||
#ifndef PORTABLE_BUILD
|
||||
#if QT_VERSION >= 0x050000
|
||||
#if QT_VERSION >= 0x050000
|
||||
file = QStandardPaths::writableLocation(QStandardPaths::DataLocation);
|
||||
#else
|
||||
file = QDesktopServices::storageLocation(QDesktopServices::DataLocation);
|
||||
|
|
@ -19,17 +20,117 @@ QString SettingsCache::getSettingsPath()
|
|||
file.append("/settings/");
|
||||
#endif
|
||||
|
||||
return file;
|
||||
return file;
|
||||
}
|
||||
|
||||
void SettingsCache::translateLegacySettings()
|
||||
{
|
||||
//NOTE Please remove this legacy setting translation after 2016-9-1 (+1 year after creation)
|
||||
|
||||
//Layouts
|
||||
QFile layoutFile(getSettingsPath()+"layouts/deckLayout.ini");
|
||||
if(layoutFile.exists())
|
||||
if(layoutFile.copy(getSettingsPath()+"layouts.ini"))
|
||||
layoutFile.remove();
|
||||
|
||||
QStringList usedKeys;
|
||||
QSettings legacySetting;
|
||||
|
||||
//Sets
|
||||
legacySetting.beginGroup("sets");
|
||||
QStringList setsGroups = legacySetting.childGroups();
|
||||
for(int i = 0; i < setsGroups.size(); i++){
|
||||
legacySetting.beginGroup(setsGroups.at(i));
|
||||
cardDatabase().setEnabled(setsGroups.at(i), legacySetting.value("enabled").toBool());
|
||||
cardDatabase().setIsKnown(setsGroups.at(i), legacySetting.value("isknown").toBool());
|
||||
cardDatabase().setSortKey(setsGroups.at(i), legacySetting.value("sortkey").toUInt());
|
||||
legacySetting.endGroup();
|
||||
}
|
||||
QStringList setsKeys = legacySetting.allKeys();
|
||||
for (int i = 0; i < setsKeys.size(); ++i) {
|
||||
usedKeys.append("sets/"+setsKeys.at(i));
|
||||
}
|
||||
legacySetting.endGroup();
|
||||
|
||||
//Servers
|
||||
legacySetting.beginGroup("server");
|
||||
servers().setPreviousHostLogin(legacySetting.value("previoushostlogin").toInt());
|
||||
servers().setPreviousHostList(legacySetting.value("previoushosts").toStringList());
|
||||
servers().setPrevioushostindex(legacySetting.value("previoushostindex").toInt());
|
||||
servers().setHostName(legacySetting.value("hostname").toString());
|
||||
servers().setPort(legacySetting.value("port").toString());
|
||||
servers().setPlayerName(legacySetting.value("playername").toString());
|
||||
servers().setPassword(legacySetting.value("password").toString());
|
||||
servers().setSavePassword(legacySetting.value("save_password").toInt());
|
||||
servers().setAutoConnect(legacySetting.value("auto_connect").toInt());
|
||||
usedKeys.append(legacySetting.allKeys());
|
||||
QStringList allKeysServer = legacySetting.allKeys();
|
||||
for (int i = 0; i < allKeysServer.size(); ++i) {
|
||||
usedKeys.append("server/"+allKeysServer.at(i));
|
||||
}
|
||||
legacySetting.endGroup();
|
||||
|
||||
//Messages
|
||||
legacySetting.beginGroup("messages");
|
||||
QStringList allMessages = legacySetting.allKeys();
|
||||
for (int i = 0; i < allMessages.size(); ++i) {
|
||||
if(allMessages.at(i) != "count"){
|
||||
QString temp = allMessages.at(i);
|
||||
int index = temp.remove("msg").toInt();
|
||||
messages().setMessageAt(index,legacySetting.value(allMessages.at(i)).toString());
|
||||
}
|
||||
}
|
||||
messages().setCount(legacySetting.value("count").toInt());
|
||||
QStringList allKeysmessages = legacySetting.allKeys();
|
||||
for (int i = 0; i < allKeysmessages.size(); ++i) {
|
||||
usedKeys.append("messages/"+allKeysmessages.at(i));
|
||||
}
|
||||
legacySetting.endGroup();
|
||||
|
||||
//Game filters
|
||||
legacySetting.beginGroup("filter_games");
|
||||
gameFilters().setUnavailableGamesVisible(legacySetting.value("unavailable_games_visible").toBool());
|
||||
gameFilters().setShowPasswordProtectedGames(legacySetting.value("show_password_protected_games").toBool());
|
||||
gameFilters().setGameNameFilter(legacySetting.value("game_name_filter").toString());
|
||||
gameFilters().setMinPlayers(legacySetting.value("min_players").toInt());
|
||||
gameFilters().setMaxPlayers(legacySetting.value("max_players").toInt());
|
||||
|
||||
QStringList allFilters = legacySetting.allKeys();
|
||||
for (int i = 0; i < allFilters.size(); ++i) {
|
||||
if(allFilters.at(i).startsWith("game_type")){
|
||||
gameFilters().setGameTypeEnabled(allFilters.at(i), legacySetting.value(allFilters.at(i)).toBool());
|
||||
}
|
||||
}
|
||||
QStringList allKeysfilter_games = legacySetting.allKeys();
|
||||
for (int i = 0; i < allKeysfilter_games.size(); ++i) {
|
||||
usedKeys.append("filter_games/"+allKeysfilter_games.at(i));
|
||||
}
|
||||
legacySetting.endGroup();
|
||||
|
||||
QStringList allLegacyKeys = legacySetting.allKeys();
|
||||
for (int i = 0; i < allLegacyKeys.size(); ++i) {
|
||||
if(usedKeys.contains(allLegacyKeys.at(i)))
|
||||
continue;
|
||||
settings->setValue(allLegacyKeys.at(i), legacySetting.value(allLegacyKeys.at(i)));
|
||||
}
|
||||
}
|
||||
|
||||
SettingsCache::SettingsCache()
|
||||
{
|
||||
settings = new QSettings(this);
|
||||
shortcutsSettings = new ShortcutsSettings(getSettingsPath(),this);
|
||||
QString settingsPath = getSettingsPath();
|
||||
settings = new QSettings(settingsPath+"global.ini", QSettings::IniFormat, this);
|
||||
shortcutsSettings = new ShortcutsSettings(settingsPath,this);
|
||||
cardDatabaseSettings = new CardDatabaseSettings(settingsPath,this);
|
||||
serversSettings = new ServersSettings(settingsPath,this);
|
||||
messageSettings = new MessageSettings(settingsPath,this);
|
||||
gameFiltersSettings = new GameFiltersSettings(settingsPath, this);
|
||||
layoutsSettings = new LayoutsSettings(settingsPath, this);
|
||||
|
||||
if(!QFile(settingsPath+"global.ini").exists())
|
||||
translateLegacySettings();
|
||||
|
||||
lang = settings->value("personal/lang").toString();
|
||||
keepalive = settings->value("personal/keepalive", 5).toInt();
|
||||
|
||||
deckPath = settings->value("paths/decks").toString();
|
||||
replaysPath = settings->value("paths/replays").toString();
|
||||
picsPath = settings->value("paths/pics").toString();
|
||||
|
|
@ -119,17 +220,6 @@ SettingsCache::SettingsCache()
|
|||
spectatorsCanTalk = settings->value("game/spectatorscantalk", false).toBool();
|
||||
spectatorsCanSeeEverything = settings->value("game/spectatorscanseeeverything", false).toBool();
|
||||
clientID = settings->value("personal/clientid", "notset").toString();
|
||||
|
||||
QString file = getSettingsPath();
|
||||
file.append("layouts/deckLayout.ini");
|
||||
|
||||
QSettings layout_settings(file , QSettings::IniFormat);
|
||||
deckEditorLayoutState = layout_settings.value("layouts/deckEditor_state").toByteArray();
|
||||
deckEditorGeometry = layout_settings.value("layouts/deckEditor_geometry").toByteArray();
|
||||
|
||||
deckEditorCardSize = layout_settings.value("layouts/deckEditor_CardSize", QSize(250,500)).toSize();
|
||||
deckEditorFilterSize = layout_settings.value("layouts/deckEditor_FilterSize", QSize(250,250)).toSize();
|
||||
deckEditorDeckSize = layout_settings.value("layouts/deckEditor_DeckSize", QSize(250,360)).toSize();
|
||||
}
|
||||
|
||||
void SettingsCache::setCardInfoViewMode(const int _viewMode) {
|
||||
|
|
@ -502,56 +592,6 @@ QStringList SettingsCache::getCountries() const
|
|||
return countries;
|
||||
}
|
||||
|
||||
void SettingsCache::setDeckEditorLayoutState(const QByteArray &value)
|
||||
{
|
||||
deckEditorLayoutState = value;
|
||||
|
||||
QString file = getSettingsPath();
|
||||
file.append("layouts/deckLayout.ini");
|
||||
QSettings layout_settings(file , QSettings::IniFormat);
|
||||
layout_settings.setValue("layouts/deckEditor_state",value);
|
||||
}
|
||||
|
||||
void SettingsCache::setDeckEditorGeometry(const QByteArray &value)
|
||||
{
|
||||
deckEditorGeometry = value;
|
||||
|
||||
QString file = getSettingsPath();
|
||||
file.append("layouts/deckLayout.ini");
|
||||
QSettings layout_settings(file , QSettings::IniFormat);
|
||||
layout_settings.setValue("layouts/deckEditor_geometry",value);
|
||||
}
|
||||
|
||||
void SettingsCache::setDeckEditorCardSize(const QSize &value)
|
||||
{
|
||||
deckEditorCardSize = value;
|
||||
|
||||
QString file = getSettingsPath();
|
||||
file.append("layouts/deckLayout.ini");
|
||||
QSettings layout_settings(file , QSettings::IniFormat);
|
||||
layout_settings.setValue("layouts/deckEditor_CardSize",value);
|
||||
}
|
||||
|
||||
void SettingsCache::setDeckEditorDeckSize(const QSize &value)
|
||||
{
|
||||
deckEditorDeckSize = value;
|
||||
|
||||
QString file = getSettingsPath();
|
||||
file.append("layouts/deckLayout.ini");
|
||||
QSettings layout_settings(file , QSettings::IniFormat);
|
||||
layout_settings.setValue("layouts/deckEditor_DeckSize",value);
|
||||
}
|
||||
|
||||
void SettingsCache::setDeckEditorFilterSize(const QSize &value)
|
||||
{
|
||||
deckEditorFilterSize = value;
|
||||
|
||||
QString file = getSettingsPath();
|
||||
file.append("layouts/deckLayout.ini");
|
||||
QSettings layout_settings(file , QSettings::IniFormat);
|
||||
layout_settings.setValue("layouts/deckEditor_FilterSize",value);
|
||||
}
|
||||
|
||||
void SettingsCache::setGameDescription(const QString _gameDescription)
|
||||
{
|
||||
gameDescription = _gameDescription;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue