Shorcut read from settings
This commit is contained in:
parent
644ea0482f
commit
b0bf94e378
14 changed files with 353 additions and 78 deletions
|
@ -94,6 +94,7 @@ SET(cockatrice_SOURCES
|
|||
src/qt-json/json.cpp
|
||||
src/soundengine.cpp
|
||||
src/pending_command.cpp
|
||||
src/shortcutssettings.cpp
|
||||
${VERSION_STRING_CPP}
|
||||
)
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include "abstractcounter.h"
|
||||
#include "player.h"
|
||||
#include "settingscache.h"
|
||||
#include <QPainter>
|
||||
#include <QMenu>
|
||||
#include <QAction>
|
||||
|
@ -65,9 +66,17 @@ void AbstractCounter::retranslateUi()
|
|||
void AbstractCounter::setShortcutsActive()
|
||||
{
|
||||
if (name == "life") {
|
||||
aSet->setShortcut(QKeySequence("Ctrl+L"));
|
||||
aDec->setShortcut(QKeySequence("F11"));
|
||||
aInc->setShortcut(QKeySequence("F12"));
|
||||
aSet->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"AbstractCounter/aSet",
|
||||
QKeySequence("Ctrl+L")));
|
||||
|
||||
aDec->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"AbstractCounter/aDec",
|
||||
QKeySequence("F11")));
|
||||
|
||||
aInc->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"AbstractCounter/aInc",
|
||||
QKeySequence("F12")));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include <QMessageBox>
|
||||
#include "dlg_load_deck_from_clipboard.h"
|
||||
#include "deck_loader.h"
|
||||
#include "settingscache.h"
|
||||
|
||||
DlgLoadDeckFromClipboard::DlgLoadDeckFromClipboard(QWidget *parent)
|
||||
: QDialog(parent), deckList(0)
|
||||
|
@ -17,7 +18,9 @@ DlgLoadDeckFromClipboard::DlgLoadDeckFromClipboard(QWidget *parent)
|
|||
contentsEdit = new QPlainTextEdit;
|
||||
|
||||
refreshButton = new QPushButton(tr("&Refresh"));
|
||||
refreshButton->setShortcut(QKeySequence("F5"));
|
||||
refreshButton->setShortcut(settingsCache->shortcuts().getSingleShortcut(
|
||||
"DlgLoadDeckFromClipboard/refreshButton",
|
||||
QKeySequence("F5")));
|
||||
connect(refreshButton, SIGNAL(clicked()), this, SLOT(actRefresh()));
|
||||
|
||||
QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include "gameview.h"
|
||||
#include "gamescene.h"
|
||||
#include "settingscache.h"
|
||||
#include <QResizeEvent>
|
||||
#include <QAction>
|
||||
#include <QRubberBand>
|
||||
|
@ -19,7 +20,9 @@ GameView::GameView(QGraphicsScene *scene, QWidget *parent)
|
|||
connect(scene, SIGNAL(sigStopRubberBand()), this, SLOT(stopRubberBand()));
|
||||
|
||||
aCloseMostRecentZoneView = new QAction(this);
|
||||
aCloseMostRecentZoneView->setShortcut(QKeySequence("Esc"));
|
||||
aCloseMostRecentZoneView->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"GameView/aCloseMostRecentZoneView",
|
||||
QKeySequence("Esc")));
|
||||
connect(aCloseMostRecentZoneView, SIGNAL(triggered()), scene, SLOT(closeMostRecentZoneView()));
|
||||
addAction(aCloseMostRecentZoneView);
|
||||
|
||||
|
|
|
@ -691,25 +691,44 @@ void Player::retranslateUi()
|
|||
aFlip->setText(tr("&Flip"));
|
||||
aPeek->setText(tr("&Peek at card face"));
|
||||
aClone->setText(tr("&Clone"));
|
||||
aClone->setShortcut(QKeySequence("Ctrl+J"));
|
||||
aClone->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"Player/aClone", QKeySequence("Ctrl+J")));
|
||||
|
||||
aAttach->setText(tr("Attac&h to card..."));
|
||||
aAttach->setShortcut(QKeySequence("Ctrl+A"));
|
||||
aAttach->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"Player/aAttach", QKeySequence("Ctrl+A")));
|
||||
|
||||
aUnattach->setText(tr("Unattac&h"));
|
||||
aDrawArrow->setText(tr("&Draw arrow..."));
|
||||
|
||||
aIncP->setText(tr("&Increase power"));
|
||||
aIncP->setShortcut(QKeySequence("Ctrl++"));
|
||||
aIncP->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"Player/IncP", QKeySequence("Ctrl++")));
|
||||
|
||||
aDecP->setText(tr("&Decrease power"));
|
||||
aDecP->setShortcut(QKeySequence("Ctrl+-"));
|
||||
aDecP->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"Player/aDecP", QKeySequence("Ctrl+-")));
|
||||
|
||||
aIncT->setText(tr("I&ncrease toughness"));
|
||||
aIncT->setShortcut(QKeySequence("Alt++"));
|
||||
aIncT->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"Player/aIncT", QKeySequence("Alt++")));
|
||||
|
||||
aDecT->setText(tr("D&ecrease toughness"));
|
||||
aDecT->setShortcut(QKeySequence("Alt+-"));
|
||||
aDecT->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"Player/aDecT", QKeySequence("Alt+-")));
|
||||
|
||||
aIncPT->setText(tr("In&crease power and toughness"));
|
||||
aIncPT->setShortcut(QKeySequence("Ctrl+Alt++"));
|
||||
aIncPT->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"Player/aIncPT", QKeySequence("Ctrl+Alt++")));
|
||||
|
||||
aDecPT->setText(tr("Dec&rease power and toughness"));
|
||||
aDecPT->setShortcut(QKeySequence("Ctrl+Alt+-"));
|
||||
aDecPT->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"Player/aDecPT", QKeySequence("Ctrl+Alt+-")));
|
||||
|
||||
aSetPT->setText(tr("Set &power and toughness..."));
|
||||
aSetPT->setShortcut(QKeySequence("Ctrl+P"));
|
||||
aSetPT->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"Player/aSetPT", QKeySequence("Ctrl+P")));
|
||||
|
||||
aSetAnnotation->setText(tr("&Set annotation..."));
|
||||
QStringList counterColors;
|
||||
counterColors.append(tr("Red"));
|
||||
|
@ -725,7 +744,8 @@ void Player::retranslateUi()
|
|||
aMoveToBottomLibrary->setText(tr("&Bottom of library"));
|
||||
aMoveToHand->setText(tr("&Hand"));
|
||||
aMoveToGraveyard->setText(tr("&Graveyard"));
|
||||
aMoveToGraveyard->setShortcut(QKeySequence("Ctrl+Del"));
|
||||
aMoveToGraveyard->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"Player/aMoveToGraveyard", QKeySequence("Ctrl+Del")));
|
||||
aMoveToExile->setText(tr("&Exile"));
|
||||
|
||||
QMapIterator<QString, CardZone *> zoneIterator(zones);
|
||||
|
@ -737,20 +757,50 @@ void Player::setShortcutsActive()
|
|||
{
|
||||
shortcutsActive = true;
|
||||
|
||||
aViewSideboard->setShortcut(QKeySequence("Ctrl+F3"));
|
||||
aViewLibrary->setShortcut(QKeySequence("F3"));
|
||||
aViewTopCards->setShortcut(QKeySequence("Ctrl+W"));
|
||||
aViewGraveyard->setShortcut(QKeySequence("F4"));
|
||||
aDrawCard->setShortcut(QKeySequence("Ctrl+D"));
|
||||
aDrawCards->setShortcut(QKeySequence("Ctrl+E"));
|
||||
aUndoDraw->setShortcut(QKeySequence("Ctrl+Shift+D"));
|
||||
aMulligan->setShortcut(QKeySequence("Ctrl+M"));
|
||||
aShuffle->setShortcut(QKeySequence("Ctrl+S"));
|
||||
aUntapAll->setShortcut(QKeySequence("Ctrl+U"));
|
||||
aRollDie->setShortcut(QKeySequence("Ctrl+I"));
|
||||
aCreateToken->setShortcut(QKeySequence("Ctrl+T"));
|
||||
aCreateAnotherToken->setShortcut(QKeySequence("Ctrl+G"));
|
||||
aAlwaysRevealTopCard->setShortcut(QKeySequence("Ctrl+N"));
|
||||
aViewSideboard->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"Player/aViewSideboard", QKeySequence("Ctrl+F3")));
|
||||
|
||||
aViewLibrary->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"Player/aViewLibrary", QKeySequence("F3")));
|
||||
|
||||
aViewTopCards->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"Player/aViewTopCards", QKeySequence("Ctrl+W")));
|
||||
|
||||
aViewGraveyard->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"Player/aViewGraveyard", QKeySequence("F4")));
|
||||
|
||||
aDrawCard->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"Player/aDrawCard", QKeySequence("Ctrl+D")));
|
||||
|
||||
aDrawCards->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"Player/aDrawCards", QKeySequence("Ctrl+E")));
|
||||
|
||||
aUndoDraw->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"Player/aUndoDraw", QKeySequence("Ctrl+Shift+D")));
|
||||
|
||||
aMulligan->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"Player/aMulligan", QKeySequence("Ctrl+M")));
|
||||
|
||||
aShuffle->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"Player/aShuffle", QKeySequence("Ctrl+S")));
|
||||
|
||||
aUntapAll->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"Player/aUntapAll", QKeySequence("Ctrl+U")));
|
||||
|
||||
aRollDie->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"Player/aRollDie", QKeySequence("Ctrl+I")));
|
||||
|
||||
aCreateToken->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"Player/aCreateToken",
|
||||
QKeySequence("Ctrl+T")));
|
||||
|
||||
aCreateAnotherToken->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"Player/aCreateAnotherToken",
|
||||
QKeySequence("Ctrl+G")));
|
||||
|
||||
aAlwaysRevealTopCard->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"Player/aAlwaysRevealTopCard",
|
||||
QKeySequence("Ctrl+N")));
|
||||
|
||||
QMapIterator<int, AbstractCounter *> counterIterator(counters);
|
||||
while (counterIterator.hasNext())
|
||||
|
@ -788,10 +838,15 @@ void Player::initSayMenu()
|
|||
QSettings settings;
|
||||
settings.beginGroup("messages");
|
||||
int count = settings.value("count", 0).toInt();
|
||||
QString base = settingsCache->shortcuts().getSingleShortcut(
|
||||
"Player/say", QKeySequence("Ctrl")).toString();
|
||||
base = base.append("+");
|
||||
|
||||
for (int i = 0; i < count; i++) {
|
||||
QAction *newAction = new QAction(settings.value(QString("msg%1").arg(i)).toString(), this);
|
||||
if (i <= 10)
|
||||
newAction->setShortcut(QKeySequence(QString("Ctrl+%1").arg((i + 1) % 10)));
|
||||
if (i <= 10){
|
||||
newAction->setShortcut(QKeySequence(base + QString::number((i + 1) % 10)));
|
||||
}
|
||||
connect(newAction, SIGNAL(triggered()), this, SLOT(actSayMessage()));
|
||||
sayMenu->addAction(newAction);
|
||||
}
|
||||
|
@ -805,13 +860,20 @@ void Player::setDeck(const DeckLoader &_deck)
|
|||
createPredefinedTokenMenu->clear();
|
||||
predefinedTokens.clear();
|
||||
InnerDecklistNode *tokenZone = dynamic_cast<InnerDecklistNode *>(deck->getRoot()->findChild("tokens"));
|
||||
|
||||
QString base = settingsCache->shortcuts().getSingleShortcut(
|
||||
"Player/token", QKeySequence("Alt")).toString();
|
||||
base = base.append("+");
|
||||
|
||||
if (tokenZone)
|
||||
for (int i = 0; i < tokenZone->size(); ++i) {
|
||||
const QString tokenName = tokenZone->at(i)->getName();
|
||||
predefinedTokens.append(tokenName);
|
||||
QAction *a = createPredefinedTokenMenu->addAction(tokenName);
|
||||
if (i < 10)
|
||||
a->setShortcut(QKeySequence("Alt+" + QString::number((i + 1) % 10)));
|
||||
{
|
||||
a->setShortcut(QKeySequence(base + QString::number((i + 1) % 10)));
|
||||
}
|
||||
connect(a, SIGNAL(triggered()), this, SLOT(actCreatePredefinedToken()));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,17 +6,17 @@
|
|||
#include <QDesktopServices>
|
||||
#endif
|
||||
|
||||
QString SettingsCache::getLayoutsSettingsPath()
|
||||
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);
|
||||
#endif
|
||||
file.append("/settings/layouts/");
|
||||
file.append("/settings/");
|
||||
#endif
|
||||
|
||||
return file;
|
||||
|
@ -25,6 +25,7 @@ QString SettingsCache::getLayoutsSettingsPath()
|
|||
SettingsCache::SettingsCache()
|
||||
{
|
||||
settings = new QSettings(this);
|
||||
shortcutsSettings = new ShortcutsSettings(getSettingsPath(),this);
|
||||
|
||||
lang = settings->value("personal/lang").toString();
|
||||
keepalive = settings->value("personal/keepalive", 5).toInt();
|
||||
|
@ -118,8 +119,8 @@ SettingsCache::SettingsCache()
|
|||
spectatorsCanSeeEverything = settings->value("game/spectatorscanseeeverything", false).toBool();
|
||||
clientID = settings->value("personal/clientid", "notset").toString();
|
||||
|
||||
QString file = getLayoutsSettingsPath();
|
||||
file.append("deckLayout.ini");
|
||||
QString file = getSettingsPath();
|
||||
file.append("layouts/deckLayout.ini");
|
||||
|
||||
QSettings layout_settings(file , QSettings::IniFormat);
|
||||
deckEditorLayoutState = layout_settings.value("layouts/deckEditor_state").toByteArray();
|
||||
|
@ -497,8 +498,8 @@ void SettingsCache::setDeckEditorLayoutState(const QByteArray &value)
|
|||
{
|
||||
deckEditorLayoutState = value;
|
||||
|
||||
QString file = getLayoutsSettingsPath();
|
||||
file.append("deckLayout.ini");
|
||||
QString file = getSettingsPath();
|
||||
file.append("layouts/deckLayout.ini");
|
||||
QSettings layout_settings(file , QSettings::IniFormat);
|
||||
layout_settings.setValue("layouts/deckEditor_state",value);
|
||||
}
|
||||
|
@ -507,8 +508,8 @@ void SettingsCache::setDeckEditorGeometry(const QByteArray &value)
|
|||
{
|
||||
deckEditorGeometry = value;
|
||||
|
||||
QString file = getLayoutsSettingsPath();
|
||||
file.append("deckLayout.ini");
|
||||
QString file = getSettingsPath();
|
||||
file.append("layouts/deckLayout.ini");
|
||||
QSettings layout_settings(file , QSettings::IniFormat);
|
||||
layout_settings.setValue("layouts/deckEditor_geometry",value);
|
||||
}
|
||||
|
@ -517,8 +518,8 @@ void SettingsCache::setDeckEditorCardSize(const QSize &value)
|
|||
{
|
||||
deckEditorCardSize = value;
|
||||
|
||||
QString file = getLayoutsSettingsPath();
|
||||
file.append("deckLayout.ini");
|
||||
QString file = getSettingsPath();
|
||||
file.append("layouts/deckLayout.ini");
|
||||
QSettings layout_settings(file , QSettings::IniFormat);
|
||||
layout_settings.setValue("layouts/deckEditor_CardSize",value);
|
||||
}
|
||||
|
@ -527,8 +528,8 @@ void SettingsCache::setDeckEditorDeckSize(const QSize &value)
|
|||
{
|
||||
deckEditorDeckSize = value;
|
||||
|
||||
QString file = getLayoutsSettingsPath();
|
||||
file.append("deckLayout.ini");
|
||||
QString file = getSettingsPath();
|
||||
file.append("layouts/deckLayout.ini");
|
||||
QSettings layout_settings(file , QSettings::IniFormat);
|
||||
layout_settings.setValue("layouts/deckEditor_DeckSize",value);
|
||||
}
|
||||
|
@ -537,8 +538,8 @@ void SettingsCache::setDeckEditorFilterSize(const QSize &value)
|
|||
{
|
||||
deckEditorFilterSize = value;
|
||||
|
||||
QString file = getLayoutsSettingsPath();
|
||||
file.append("deckLayout.ini");
|
||||
QString file = getSettingsPath();
|
||||
file.append("layouts/deckLayout.ini");
|
||||
QSettings layout_settings(file , QSettings::IniFormat);
|
||||
layout_settings.setValue("layouts/deckEditor_FilterSize",value);
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include <QObject>
|
||||
#include <QSize>
|
||||
#include <QStringList>
|
||||
#include "shortcutssettings.h"
|
||||
|
||||
// the falbacks are used for cards without a muid
|
||||
#define PIC_URL_DEFAULT "http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid=!cardid!&type=card"
|
||||
|
@ -45,7 +46,7 @@ signals:
|
|||
void masterVolumeChanged(int value);
|
||||
private:
|
||||
QSettings *settings;
|
||||
|
||||
ShortcutsSettings *shortcutsSettings;
|
||||
QByteArray mainWindowGeometry;
|
||||
QString lang;
|
||||
QString deckPath, replaysPath, picsPath, cardDatabasePath, tokenDatabasePath;
|
||||
|
@ -102,7 +103,7 @@ private:
|
|||
int keepalive;
|
||||
QByteArray deckEditorLayoutState, deckEditorGeometry;
|
||||
QSize deckEditorFilterSize, deckEditorDeckSize, deckEditorCardSize;
|
||||
QString getLayoutsSettingsPath();
|
||||
QString getSettingsPath();
|
||||
|
||||
public:
|
||||
SettingsCache();
|
||||
|
@ -187,6 +188,7 @@ public:
|
|||
void setDeckEditorDeckSize(const QSize &value);
|
||||
QSize getDeckEditorFilterSize() const { return deckEditorFilterSize; }
|
||||
void setDeckEditorFilterSize(const QSize &value);
|
||||
ShortcutsSettings& shortcuts() const { return *shortcutsSettings; }
|
||||
|
||||
public slots:
|
||||
void setMainWindowGeometry(const QByteArray &_mainWindowGeometry);
|
||||
|
|
102
cockatrice/src/shortcutssettings.cpp
Normal file
102
cockatrice/src/shortcutssettings.cpp
Normal file
|
@ -0,0 +1,102 @@
|
|||
#include "shortcutssettings.h"
|
||||
|
||||
#include <QDebug>
|
||||
QList<QKeySequence> ShortcutsSettings::parseSecuenceString(QString stringSecuence)
|
||||
{
|
||||
QStringList secuences = stringSecuence.split(";");
|
||||
QList<QKeySequence> secuenceList;
|
||||
for(QStringList::const_iterator ss = secuences.cbegin(); ss != secuences.cend(); ++ss)
|
||||
{
|
||||
secuenceList.append(QKeySequence(*ss, QKeySequence::PortableText));
|
||||
}
|
||||
|
||||
return secuenceList;
|
||||
}
|
||||
|
||||
ShortcutsSettings::ShortcutsSettings(QString settingsPath, QObject *parent) : QObject(parent)
|
||||
{
|
||||
this->settingsFilePath = settingsPath;
|
||||
this->settingsFilePath.append("shortcuts.ini");
|
||||
QSettings shortCutsFile(settingsFilePath, QSettings::IniFormat);
|
||||
|
||||
shortCutsFile.beginGroup("Custom");
|
||||
const QStringList customKeys = shortCutsFile.allKeys();
|
||||
for(QStringList::const_iterator it = customKeys.cbegin(); it != customKeys.cend(); ++it)
|
||||
{
|
||||
QString stringSecuence = shortCutsFile.value(*it).toString();
|
||||
QList<QKeySequence> secuenceList = parseSecuenceString(stringSecuence);
|
||||
shortCuts.insert(*it, secuenceList);
|
||||
}
|
||||
shortCutsFile.endGroup();
|
||||
|
||||
shortCutsFile.beginGroup("Defaults");
|
||||
const QStringList defaultKeys = shortCutsFile.allKeys();
|
||||
for(QStringList::const_iterator it = defaultKeys.cbegin(); it != defaultKeys.cend(); ++it)
|
||||
{
|
||||
QString stringSecuence = shortCutsFile.value(*it).toString();
|
||||
QList<QKeySequence> secuenceList = parseSecuenceString(stringSecuence);
|
||||
defaultShortCuts.insert(*it, secuenceList);
|
||||
}
|
||||
shortCutsFile.endGroup();
|
||||
}
|
||||
|
||||
QList<QKeySequence> ShortcutsSettings::getShortcut(QString name, QList<QKeySequence> defaultShortCut)
|
||||
{
|
||||
if(shortCuts.contains(name))
|
||||
return shortCuts.value(name);
|
||||
|
||||
setShortcuts(name, defaultShortCut);
|
||||
|
||||
defaultShortCuts[name] = defaultShortCut;
|
||||
|
||||
QSettings shortCutsFile(settingsFilePath, QSettings::IniFormat);
|
||||
shortCutsFile.beginGroup("Defaults");
|
||||
shortCutsFile.setValue(name, stringifySecuence(defaultShortCut));
|
||||
shortCutsFile.endGroup();
|
||||
return defaultShortCut;
|
||||
}
|
||||
|
||||
QList<QKeySequence> ShortcutsSettings::getShortcut(QString name, QKeySequence defaultShortCut)
|
||||
{
|
||||
return getShortcut(name, QList<QKeySequence>() << defaultShortCut);
|
||||
}
|
||||
|
||||
QKeySequence ShortcutsSettings::getSingleShortcut(QString name, QKeySequence defaultShortCut)
|
||||
{
|
||||
return getShortcut(name,defaultShortCut).at(0);
|
||||
}
|
||||
|
||||
QList<QKeySequence> ShortcutsSettings::getDefaultShortCut(QString name)
|
||||
{
|
||||
return defaultShortCuts.value(name);
|
||||
}
|
||||
|
||||
QString ShortcutsSettings::stringifySecuence(QList<QKeySequence> secuence) const
|
||||
{
|
||||
QString stringSecuence;
|
||||
for(int i=0; i < secuence.size(); ++i)
|
||||
{
|
||||
stringSecuence.append(secuence.at(i).toString(QKeySequence::PortableText));
|
||||
if(i < secuence.size() - 1)
|
||||
stringSecuence.append(";");
|
||||
}
|
||||
|
||||
return stringSecuence;
|
||||
}
|
||||
|
||||
void ShortcutsSettings::setShortcuts(QString name, QList<QKeySequence> secuence)
|
||||
{
|
||||
shortCuts[name] = secuence;
|
||||
|
||||
QSettings shortCutsFile(settingsFilePath, QSettings::IniFormat);
|
||||
shortCutsFile.beginGroup("Custom");
|
||||
QString stringSecuence = stringifySecuence(secuence);
|
||||
shortCutsFile.setValue(name, stringSecuence);
|
||||
shortCutsFile.endGroup();
|
||||
}
|
||||
|
||||
void ShortcutsSettings::setShortcuts(QString name, QKeySequence secuence)
|
||||
{
|
||||
setShortcuts(name, QList<QKeySequence>() << secuence);
|
||||
}
|
||||
|
37
cockatrice/src/shortcutssettings.h
Normal file
37
cockatrice/src/shortcutssettings.h
Normal file
|
@ -0,0 +1,37 @@
|
|||
#ifndef SHORTCUTSSETTINGS_H
|
||||
#define SHORTCUTSSETTINGS_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QSettings>
|
||||
#include <QMap>
|
||||
#include <QKeySequence>
|
||||
|
||||
class ShortcutsSettings : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
ShortcutsSettings(QString settingsFilePath, QObject *parent = 0);
|
||||
~ShortcutsSettings() { }
|
||||
|
||||
QList<QKeySequence> getShortcut(QString name, QList<QKeySequence> defaultShortCut);
|
||||
QList<QKeySequence> getShortcut(QString name, QKeySequence defaultShortCut);
|
||||
QKeySequence getSingleShortcut(QString name, QKeySequence defaultShortCut);
|
||||
QList<QKeySequence> getDefaultShortCut(QString name);
|
||||
|
||||
void setShortcuts(QString name, QList<QKeySequence> secuence);
|
||||
void setShortcuts(QString name, QKeySequence secuence);
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
|
||||
private:
|
||||
QString settingsFilePath;
|
||||
QMap<QString,QList<QKeySequence> > shortCuts;
|
||||
QMap<QString,QList<QKeySequence> > defaultShortCuts;
|
||||
|
||||
QString stringifySecuence(QList<QKeySequence> secuence) const;
|
||||
QList<QKeySequence> parseSecuenceString(QString stringSecuence);
|
||||
};
|
||||
|
||||
#endif // SHORTCUTSSETTINGS_H
|
|
@ -254,26 +254,44 @@ void TabDeckEditor::createFiltersDock()
|
|||
void TabDeckEditor::createMenus()
|
||||
{
|
||||
aNewDeck = new QAction(QString(), this);
|
||||
aNewDeck->setShortcuts(QKeySequence::New);
|
||||
aNewDeck->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"TabDeckEditor/aNewDeck",
|
||||
QKeySequence::New));
|
||||
connect(aNewDeck, SIGNAL(triggered()), this, SLOT(actNewDeck()));
|
||||
|
||||
aLoadDeck = new QAction(QString(), this);
|
||||
aLoadDeck->setShortcuts(QKeySequence::Open);
|
||||
aLoadDeck->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"TabDeckEditor/aLoadDeck",
|
||||
QKeySequence::Open));
|
||||
connect(aLoadDeck, SIGNAL(triggered()), this, SLOT(actLoadDeck()));
|
||||
|
||||
aSaveDeck = new QAction(QString(), this);
|
||||
aSaveDeck->setShortcuts(QKeySequence::Save);
|
||||
aSaveDeck->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"TabDeckEditor/aSaveDeck",
|
||||
QKeySequence::Save));
|
||||
|
||||
connect(aSaveDeck, SIGNAL(triggered()), this, SLOT(actSaveDeck()));
|
||||
aSaveDeckAs = new QAction(QString(), this);
|
||||
// aSaveDeckAs->setShortcuts(QKeySequence::SaveAs);
|
||||
connect(aSaveDeckAs, SIGNAL(triggered()), this, SLOT(actSaveDeckAs()));
|
||||
|
||||
aLoadDeckFromClipboard = new QAction(QString(), this);
|
||||
connect(aLoadDeckFromClipboard, SIGNAL(triggered()), this, SLOT(actLoadDeckFromClipboard()));
|
||||
aLoadDeckFromClipboard->setShortcuts(QKeySequence::Paste);
|
||||
aLoadDeckFromClipboard->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"TabDeckEditor/aLoadDeckFromClipboard",
|
||||
QKeySequence::Paste));
|
||||
|
||||
aSaveDeckToClipboard = new QAction(QString(), this);
|
||||
connect(aSaveDeckToClipboard, SIGNAL(triggered()), this, SLOT(actSaveDeckToClipboard()));
|
||||
aSaveDeckToClipboard->setShortcuts(QKeySequence::Copy);
|
||||
aSaveDeckToClipboard->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"TabDeckEditor/aSaveDeckToClipboard",
|
||||
QKeySequence::Copy));
|
||||
|
||||
aPrintDeck = new QAction(QString(), this);
|
||||
aPrintDeck->setShortcuts(QKeySequence::Print);
|
||||
aPrintDeck->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"TabDeckEditor/aPrintDeck",QKeySequence::Print));
|
||||
connect(aPrintDeck, SIGNAL(triggered()), this, SLOT(actPrintDeck()));
|
||||
|
||||
aAnalyzeDeck = new QAction(QString(), this);
|
||||
connect(aAnalyzeDeck, SIGNAL(triggered()), this, SLOT(actAnalyzeDeck()));
|
||||
aClose = new QAction(QString(), this);
|
||||
|
@ -514,7 +532,9 @@ void TabDeckEditor::retranslateUi()
|
|||
|
||||
aClearFilterAll->setText(tr("&Clear all filters"));
|
||||
aClearFilterOne->setText(tr("Delete selected"));
|
||||
aClearFilterOne->setShortcut(QKeySequence("Backspace"));
|
||||
aClearFilterOne->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"TabDeckEditor/aClearFilterOne",
|
||||
QKeySequence("Backspace")));
|
||||
|
||||
nameLabel->setText(tr("Deck &name:"));
|
||||
commentsLabel->setText(tr("&Comments:"));
|
||||
|
@ -533,17 +553,27 @@ void TabDeckEditor::retranslateUi()
|
|||
aAnalyzeDeck->setText(tr("&Analyze deck on deckstats.net"));
|
||||
aOpenCustomFolder->setText(tr("Open custom image folder"));
|
||||
aClose->setText(tr("&Close"));
|
||||
aClose->setShortcut(QKeySequence("Ctrl+Q"));
|
||||
aClose->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"TabDeckEditor/aClose",
|
||||
QKeySequence("Ctrl+Q")));
|
||||
|
||||
aAddCard->setText(tr("Add card to &maindeck"));
|
||||
aAddCardToSideboard->setText(tr("Add card to &sideboard"));
|
||||
|
||||
aRemoveCard->setText(tr("&Remove row"));
|
||||
aRemoveCard->setShortcut(QKeySequence("Del"));
|
||||
aRemoveCard->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"TabDeckEditor/aRemoveCard",
|
||||
QKeySequence("Del")));
|
||||
|
||||
aIncrement->setText(tr("&Increment number"));
|
||||
aIncrement->setShortcut(QKeySequence("+"));
|
||||
aIncrement->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"TabDeckEditor/aIncrement",
|
||||
QKeySequence("+")));
|
||||
|
||||
aDecrement->setText(tr("&Decrement number"));
|
||||
aDecrement->setShortcut(QKeySequence("-"));
|
||||
aDecrement->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"TabDeckEditor/aDecrement",
|
||||
QKeySequence("-")));
|
||||
|
||||
deckMenu->setTitle(tr("&Deck Editor"));
|
||||
dbMenu->setTitle(tr("C&ard Database"));
|
||||
|
|
|
@ -125,9 +125,13 @@ DeckViewContainer::DeckViewContainer(int _playerId, TabGame *parent)
|
|||
void DeckViewContainer::retranslateUi()
|
||||
{
|
||||
loadLocalButton->setText(tr("Load local deck"));
|
||||
loadLocalButton->setShortcut(QKeySequence("Ctrl+O"));
|
||||
loadLocalButton->setShortcut(settingsCache->shortcuts().getSingleShortcut(
|
||||
"DeckViewContainer/loadLocalButton",
|
||||
QKeySequence("Ctrl+O")));
|
||||
loadRemoteButton->setText(tr("Load deck from server"));
|
||||
loadRemoteButton->setShortcut(QKeySequence("Ctrl+Alt+O"));
|
||||
loadRemoteButton->setShortcut(settingsCache->shortcuts().getSingleShortcut(
|
||||
"DeckViewContainer/loadRemoteButton",
|
||||
QKeySequence("Ctrl+Alt+O")));
|
||||
readyStartButton->setText(tr("Ready to s&tart"));
|
||||
updateSideboardLockButtonText();
|
||||
}
|
||||
|
@ -469,12 +473,12 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, QList<AbstractClient *> &_client
|
|||
QAction *temp = new QAction(QString(), this);
|
||||
connect(temp, SIGNAL(triggered()), this, SLOT(actPhaseAction()));
|
||||
switch (i) {
|
||||
case 0: temp->setShortcut(QKeySequence("F5")); break;
|
||||
case 2: temp->setShortcut(QKeySequence("F6")); break;
|
||||
case 3: temp->setShortcut(QKeySequence("F7")); break;
|
||||
case 4: temp->setShortcut(QKeySequence("F8")); break;
|
||||
case 9: temp->setShortcut(QKeySequence("F9")); break;
|
||||
case 10: temp->setShortcut(QKeySequence("F10")); break;
|
||||
case 0: temp->setShortcuts(settingsCache->shortcuts().getShortcut("TabGame/phase0" ,QKeySequence("F5"))); break;
|
||||
case 2: temp->setShortcuts(settingsCache->shortcuts().getShortcut("TabGame/phase2" ,QKeySequence("F6"))); break;
|
||||
case 3: temp->setShortcuts(settingsCache->shortcuts().getShortcut("TabGame/phase3" ,QKeySequence("F7"))); break;
|
||||
case 4: temp->setShortcuts(settingsCache->shortcuts().getShortcut("TabGame/phase4" ,QKeySequence("F8"))); break;
|
||||
case 9: temp->setShortcuts(settingsCache->shortcuts().getShortcut("TabGame/phase9" ,QKeySequence("F9"))); break;
|
||||
case 10:temp->setShortcuts(settingsCache->shortcuts().getShortcut("TabGame/phase10" ,QKeySequence("F10"))); break;
|
||||
default: ;
|
||||
}
|
||||
phasesMenu->addAction(temp);
|
||||
|
@ -545,37 +549,57 @@ void TabGame::retranslateUi()
|
|||
gameMenu->setTitle(tr("&Game"));
|
||||
if (aNextPhase) {
|
||||
aNextPhase->setText(tr("Next &phase"));
|
||||
aNextPhase->setShortcuts(QList<QKeySequence>() << QKeySequence("Ctrl+Space") << QKeySequence("Tab"));
|
||||
aNextPhase->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"TabGame/aNextPhase",
|
||||
QList<QKeySequence>()
|
||||
<< QKeySequence("Ctrl+Space")
|
||||
<< QKeySequence("Tab")));
|
||||
}
|
||||
if (aNextTurn) {
|
||||
aNextTurn->setText(tr("Next &turn"));
|
||||
aNextTurn->setShortcuts(QList<QKeySequence>() << QKeySequence("Ctrl+Return") << QKeySequence("Ctrl+Enter"));
|
||||
aNextTurn->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"TabGame/aNextTurn",
|
||||
QList<QKeySequence>()
|
||||
<< QKeySequence("Ctrl+Return")
|
||||
<< QKeySequence("Ctrl+Enter")));
|
||||
}
|
||||
if (aRemoveLocalArrows) {
|
||||
aRemoveLocalArrows->setText(tr("&Remove all local arrows"));
|
||||
aRemoveLocalArrows->setShortcut(QKeySequence("Ctrl+R"));
|
||||
aRemoveLocalArrows->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"TabGame/aRemoveLocalArrows",
|
||||
QKeySequence("Ctrl+R")));
|
||||
}
|
||||
if (aRotateViewCW) {
|
||||
aRotateViewCW->setText(tr("Rotate View Cl&ockwise"));
|
||||
aRotateViewCW->setShortcut(QKeySequence("Ctrl+]"));
|
||||
aRotateViewCW->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"TabGame/aRotateViewCW",
|
||||
QKeySequence("Ctrl+]")));
|
||||
}
|
||||
if (aRotateViewCCW) {
|
||||
aRotateViewCCW->setText(tr("Rotate View Co&unterclockwise"));
|
||||
aRotateViewCCW->setShortcut(QKeySequence("Ctrl+["));
|
||||
aRotateViewCCW->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"TabGame/aRotateViewCCW",
|
||||
QKeySequence("Ctrl+[")));
|
||||
}
|
||||
if (aGameInfo)
|
||||
aGameInfo->setText(tr("Game &information"));
|
||||
if (aConcede) {
|
||||
aConcede->setText(tr("&Concede"));
|
||||
aConcede->setShortcut(QKeySequence("F2"));
|
||||
aConcede->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"TabGame/aRotateViewCCW",
|
||||
QKeySequence("F2")));
|
||||
}
|
||||
if (aLeaveGame) {
|
||||
aLeaveGame->setText(tr("&Leave game"));
|
||||
aLeaveGame->setShortcut(QKeySequence("Ctrl+Q"));
|
||||
aLeaveGame->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"TabGame/aLeaveGame",
|
||||
QKeySequence("Ctrl+Q")));
|
||||
}
|
||||
if (aCloseReplay) {
|
||||
aCloseReplay->setText(tr("C&lose replay"));
|
||||
aCloseReplay->setShortcut(QKeySequence("Ctrl+Q"));
|
||||
aCloseReplay->setShortcuts(settingsCache->shortcuts().getShortcut(
|
||||
"TabGame/aCloseReplay",
|
||||
QKeySequence("Ctrl+Q")));
|
||||
}
|
||||
|
||||
if (sayLabel)
|
||||
|
|
|
@ -59,7 +59,7 @@ TabRoom::TabRoom(TabSupervisor *_tabSupervisor, AbstractClient *_client, ServerI
|
|||
QMenu *chatSettingsMenu = new QMenu(this);
|
||||
|
||||
aClearChat = chatSettingsMenu->addAction(QString());
|
||||
aClearChat->setShortcut(QKeySequence("F12"));
|
||||
aClearChat->setShortcuts(settingsCache->shortcuts().getShortcut("tab_room/aClearChat", QKeySequence("F12")));
|
||||
connect(aClearChat, SIGNAL(triggered()), this, SLOT(actClearChat()));
|
||||
|
||||
chatSettingsMenu->addSeparator();
|
||||
|
|
|
@ -458,7 +458,7 @@ void MainWindow::retranslateUi()
|
|||
aWatchReplay->setText(tr("&Watch replay..."));
|
||||
aDeckEditor->setText(tr("&Deck editor"));
|
||||
aFullScreen->setText(tr("&Full screen"));
|
||||
aFullScreen->setShortcut(QKeySequence("Ctrl+F"));
|
||||
aFullScreen->setShortcuts(settingsCache->shortcuts().getShortcut("MainWindow/aFullScreen", QKeySequence("Ctrl+F")));
|
||||
aRegister->setText(tr("&Register to server..."));
|
||||
aSettings->setText(tr("&Settings..."));
|
||||
aExit->setText(tr("&Exit"));
|
||||
|
|
|
@ -13,6 +13,7 @@ SET(oracle_SOURCES
|
|||
src/oracleimporter.cpp
|
||||
../cockatrice/src/carddatabase.cpp
|
||||
../cockatrice/src/settingscache.cpp
|
||||
../cockatrice/src/shortcutssettings.cpp
|
||||
../cockatrice/src/qt-json/json.cpp
|
||||
)
|
||||
|
||||
|
|
Loading…
Reference in a new issue