Commit e9bad2ca authored by Jeff's avatar Jeff
Browse files

Merge branch 'master' into fix_1387

Conflicts:
	cockatrice/CMakeLists.txt
	cockatrice/src/tab_game.h
	cockatrice/src/tab_room.cpp
parents b3d96cc5 b2ab2c6e
#include "shortcutssettings.h"
#include <QFile>
#include <QStringList>
ShortcutsSettings::ShortcutsSettings(QString settingsPath, QObject *parent) : QObject(parent)
{
this->settingsFilePath = settingsPath;
this->settingsFilePath.append("shortcuts.ini");
fillDefaultShorcuts();
shortCuts = QMap<QString,QList<QKeySequence> >(defaultShortCuts);
bool exists = QFile(settingsFilePath).exists();
QSettings shortCutsFile(settingsFilePath, QSettings::IniFormat);
if(exists){
shortCutsFile.beginGroup("Custom");
const QStringList customKeys = shortCutsFile.allKeys();
for(QStringList::const_iterator it = customKeys.constBegin(); it != customKeys.constEnd(); ++it)
{
QString stringSecuence = shortCutsFile.value(*it).toString();
QList<QKeySequence> secuenceList = parseSecuenceString(stringSecuence);
shortCuts.insert(*it, secuenceList);
}
shortCutsFile.endGroup();
}
}
QList<QKeySequence> ShortcutsSettings::getShortcut(QString name)
{
if(shortCuts.contains(name))
return shortCuts.value(name);
return defaultShortCuts.value(name, QList<QKeySequence>());
}
QKeySequence ShortcutsSettings::getSingleShortcut(QString name)
{
return getShortcut(name).at(0);
}
QString ShortcutsSettings::getDefaultShortcutString(QString name)
{
return stringifySecuence(defaultShortCuts.value(name));
}
QString ShortcutsSettings::getShortcutString(QString name)
{
return stringifySecuence(shortCuts.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;
}
QList<QKeySequence> ShortcutsSettings::parseSecuenceString(QString stringSecuence)
{
QStringList secuences = stringSecuence.split(";");
QList<QKeySequence> secuenceList;
for(QStringList::const_iterator ss = secuences.constBegin(); ss != secuences.constEnd(); ++ss)
{
secuenceList.append(QKeySequence(*ss, QKeySequence::PortableText));
}
return secuenceList;
}
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();
emit shortCutchanged();
}
void ShortcutsSettings::setShortcuts(QString name, QKeySequence secuence)
{
setShortcuts(name, QList<QKeySequence>() << secuence);
}
void ShortcutsSettings::setShortcuts(QString name, QString secuences)
{
setShortcuts(name,parseSecuenceString(secuences));
}
bool ShortcutsSettings::isValid(QString name, QString secuences)
{
QString checkKey = name.left(name.indexOf("/"));
QStringList stringSecuences = secuences.split(";");
QList<QString> allKeys = shortCuts.keys();
for(int i=0; i < allKeys.size(); i++){
QString key = allKeys.at(i);
if(key.startsWith(checkKey) || key.startsWith("MainWindow") || checkKey.startsWith("MainWindow"))
{
QString storedSecuence = stringifySecuence(shortCuts.value(key));
for(int j = 0; j < stringSecuences.size(); j++)
{
if(storedSecuence.contains(stringSecuences.at(j)))
return false;
}
}
}
return true;
}
void ShortcutsSettings::fillDefaultShorcuts()
{
defaultShortCuts["MainWindow/aCheckCardUpdates"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aConnect"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aDeckEditor"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aDisconnect"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aExit"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aFullScreen"] = parseSecuenceString("Ctrl+F");
defaultShortCuts["MainWindow/aRegister"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aSettings"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aSinglePlayer"] = parseSecuenceString("");
defaultShortCuts["MainWindow/aWatchReplay"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aAnalyzeDeck"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aClearFilterAll"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aClearFilterOne"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aClose"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aDecrement"] = parseSecuenceString("-");
defaultShortCuts["TabDeckEditor/aEditSets"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aEditTokens"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aIncrement"] = parseSecuenceString("+");
defaultShortCuts["TabDeckEditor/aLoadDeck"] = parseSecuenceString("Ctrl+O");
defaultShortCuts["TabDeckEditor/aLoadDeckFromClipboard"] = parseSecuenceString("Ctrl+V");
defaultShortCuts["TabDeckEditor/aNewDeck"] = parseSecuenceString("Ctrl+N");
defaultShortCuts["TabDeckEditor/aOpenCustomFolder"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aPrintDeck"] = parseSecuenceString("Ctrl+P");
defaultShortCuts["TabDeckEditor/aRemoveCard"] = parseSecuenceString("Del");
defaultShortCuts["TabDeckEditor/aResetLayout"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aSaveDeck"] = parseSecuenceString("Ctrl+S");
defaultShortCuts["TabDeckEditor/aSaveDeckAs"] = parseSecuenceString("");
defaultShortCuts["TabDeckEditor/aSaveDeckToClipboard"] = parseSecuenceString("Ctrl+C");
defaultShortCuts["DeckViewContainer/loadLocalButton"] = parseSecuenceString("Ctrl+O");
defaultShortCuts["DeckViewContainer/loadRemoteButton"] = parseSecuenceString("Ctrl+Alt+O");
defaultShortCuts["Player/aDec"] = parseSecuenceString("F11");
defaultShortCuts["Player/aInc"] = parseSecuenceString("F12");
defaultShortCuts["Player/aSet"] = parseSecuenceString("Ctrl+L");
defaultShortCuts["Player/aCloseMostRecentZoneView"] = parseSecuenceString("Esc");
defaultShortCuts["Player/IncP"] = parseSecuenceString("Ctrl++");
defaultShortCuts["Player/aAlwaysRevealTopCard"] = parseSecuenceString("Ctrl+N");
defaultShortCuts["Player/aAttach"] = parseSecuenceString("Ctrl+A");
defaultShortCuts["Player/aCCGreen"] = parseSecuenceString("");
defaultShortCuts["Player/aCCRed"] = parseSecuenceString("");
defaultShortCuts["Player/aCCYellow"] = parseSecuenceString("");
defaultShortCuts["Player/aClone"] = parseSecuenceString("Ctrl+J");
defaultShortCuts["Player/aCreateAnotherToken"] = parseSecuenceString("Ctrl+G");
defaultShortCuts["Player/aCreateToken"] = parseSecuenceString("Ctrl+T");
defaultShortCuts["Player/aDecP"] = parseSecuenceString("Ctrl+-");
defaultShortCuts["Player/aDecPT"] = parseSecuenceString("Ctrl+Alt+-");
defaultShortCuts["Player/aDecT"] = parseSecuenceString("Alt+-");
defaultShortCuts["Player/aDoesntUntap"] = parseSecuenceString("");
defaultShortCuts["Player/aDrawArrow"] = parseSecuenceString("");
defaultShortCuts["Player/aDrawCard"] = parseSecuenceString("Ctrl+D");
defaultShortCuts["Player/aDrawCards"] = parseSecuenceString("Ctrl+E");
defaultShortCuts["Player/aFlip"] = parseSecuenceString("");
defaultShortCuts["Player/aIncPT"] = parseSecuenceString("Ctrl+Alt++");
defaultShortCuts["Player/aIncT"] = parseSecuenceString("Alt++");
defaultShortCuts["Player/aMoveToBottomLibrary"] = parseSecuenceString("");
defaultShortCuts["Player/aMoveToExile"] = parseSecuenceString("");
defaultShortCuts["Player/aMoveToGraveyard"] = parseSecuenceString("Ctrl+Del");
defaultShortCuts["Player/aMoveToHand"] = parseSecuenceString("");
defaultShortCuts["Player/aMoveToTopLibrary"] = parseSecuenceString("");
defaultShortCuts["Player/aMulligan"] = parseSecuenceString("Ctrl+M");
defaultShortCuts["Player/aPeek"] = parseSecuenceString("");
defaultShortCuts["Player/aPlay"] = parseSecuenceString("");
defaultShortCuts["Player/aRCGreen"] = parseSecuenceString("");
defaultShortCuts["Player/aRCRed"] = parseSecuenceString("");
defaultShortCuts["Player/aRCYellow"] = parseSecuenceString("");
defaultShortCuts["Player/aRollDie"] = parseSecuenceString("Ctrl+I");
defaultShortCuts["Player/aSCGreen"] = parseSecuenceString("");
defaultShortCuts["Player/aSCRed"] = parseSecuenceString("");
defaultShortCuts["Player/aSCYellow"] = parseSecuenceString("");
defaultShortCuts["Player/aSetAnnotation"] = parseSecuenceString("");
defaultShortCuts["Player/aSetPT"] = parseSecuenceString("Ctrl+P");
defaultShortCuts["Player/aShuffle"] = parseSecuenceString("Ctrl+S");
defaultShortCuts["Player/aTap"] = parseSecuenceString("");
defaultShortCuts["Player/aUnattach"] = parseSecuenceString("");
defaultShortCuts["Player/aUndoDraw"] = parseSecuenceString("Ctrl+Shift+D");
defaultShortCuts["Player/aUntap"] = parseSecuenceString("");
defaultShortCuts["Player/aUntapAll"] = parseSecuenceString("Ctrl+U");
defaultShortCuts["Player/aViewGraveyard"] = parseSecuenceString("F4");
defaultShortCuts["Player/aViewLibrary"] = parseSecuenceString("F3");
defaultShortCuts["Player/aViewRfg"] = parseSecuenceString("");
defaultShortCuts["Player/aViewSideboard"] = parseSecuenceString("Ctrl+F3");
defaultShortCuts["Player/aViewTopCards"] = parseSecuenceString("Ctrl+W");
defaultShortCuts["Player/aConcede"] = parseSecuenceString("F2");
defaultShortCuts["Player/aLeaveGame"] = parseSecuenceString("Ctrl+Q");
defaultShortCuts["Player/aNextPhase"] = parseSecuenceString("Ctrl+Space;Tab");
defaultShortCuts["Player/aNextTurn"] = parseSecuenceString("Ctrl+Return;Ctrl+Enter");
defaultShortCuts["Player/aRemoveLocalArrows"] = parseSecuenceString("Ctrl+R");
defaultShortCuts["Player/aRotateViewCCW"] = parseSecuenceString("Ctrl+[");
defaultShortCuts["Player/aRotateViewCW"] = parseSecuenceString("Ctrl+]");
defaultShortCuts["Player/phase0"] = parseSecuenceString("F5");
defaultShortCuts["Player/phase1"] = parseSecuenceString("");
defaultShortCuts["Player/phase10"] = parseSecuenceString("F10");
defaultShortCuts["Player/phase2"] = parseSecuenceString("F6");
defaultShortCuts["Player/phase3"] = parseSecuenceString("F7");
defaultShortCuts["Player/phase4"] = parseSecuenceString("F8");
defaultShortCuts["Player/phase5"] = parseSecuenceString("");
defaultShortCuts["Player/phase6"] = parseSecuenceString("");
defaultShortCuts["Player/phase7"] = parseSecuenceString("");
defaultShortCuts["Player/phase8"] = parseSecuenceString("");
defaultShortCuts["Player/phase9"] = parseSecuenceString("F9");
defaultShortCuts["tab_room/aClearChat"] = parseSecuenceString("F12");
defaultShortCuts["DlgLoadDeckFromClipboard/refreshButton"] = parseSecuenceString("F5");
}
#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);
QKeySequence getSingleShortcut(QString name);
QString getDefaultShortcutString(QString name);
QString getShortcutString(QString name);
void setShortcuts(QString name, QList<QKeySequence> secuence);
void setShortcuts(QString name, QKeySequence secuence);
void setShortcuts(QString name, QString secuences);
bool isValid(QString name, QString secuences);
signals:
void shortCutchanged();
private:
QString settingsFilePath;
QMap<QString,QList<QKeySequence> > shortCuts;
QMap<QString,QList<QKeySequence> > defaultShortCuts;
void fillDefaultShorcuts();
QString stringifySecuence(QList<QKeySequence> secuence) const;
QList<QKeySequence> parseSecuenceString(QString stringSecuence);
};
#endif // SHORTCUTSSETTINGS_H
......@@ -256,37 +256,41 @@ void TabDeckEditor::createFiltersDock()
void TabDeckEditor::createMenus()
{
aNewDeck = new QAction(QString(), this);
aNewDeck->setShortcuts(QKeySequence::New);
connect(aNewDeck, SIGNAL(triggered()), this, SLOT(actNewDeck()));
aLoadDeck = new QAction(QString(), this);
aLoadDeck->setShortcuts(QKeySequence::Open);
connect(aLoadDeck, SIGNAL(triggered()), this, SLOT(actLoadDeck()));
aSaveDeck = new QAction(QString(), this);
aSaveDeck->setShortcuts(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()));
aOpenCustomsetsFolder = new QAction(QString(), this);
connect(aOpenCustomsetsFolder, SIGNAL(triggered()), this, SLOT(actOpenCustomsetsFolder()));
aLoadDeckFromClipboard = new QAction(QString(), this);
connect(aLoadDeckFromClipboard, SIGNAL(triggered()), this, SLOT(actLoadDeckFromClipboard()));
aLoadDeckFromClipboard->setShortcuts(QKeySequence::Paste);
aSaveDeckToClipboard = new QAction(QString(), this);
connect(aSaveDeckToClipboard, SIGNAL(triggered()), this, SLOT(actSaveDeckToClipboard()));
aSaveDeckToClipboard->setShortcuts(QKeySequence::Copy);
aPrintDeck = new QAction(QString(), this);
aPrintDeck->setShortcuts(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);
connect(aClose, SIGNAL(triggered()), this, SLOT(closeRequest()));
aOpenCustomFolder = new QAction(QString(), this);
connect(aOpenCustomFolder, SIGNAL(triggered()), this, SLOT(actOpenCustomFolder()));
aOpenCustomsetsFolder = new QAction(QString(), this);
connect(aOpenCustomsetsFolder, SIGNAL(triggered()), this, SLOT(actOpenCustomsetsFolder()));
aEditSets = new QAction(QString(), this);
connect(aEditSets, SIGNAL(triggered()), this, SLOT(actEditSets()));
aEditTokens = new QAction(QString(), this);
connect(aEditTokens, SIGNAL(triggered()), this, SLOT(actEditTokens()));
......@@ -464,6 +468,30 @@ void TabDeckEditor::freeDocksSize()
filterDock->setMaximumSize(5000,5000);
}
void TabDeckEditor::refreshShortcuts()
{
aNewDeck->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aNewDeck"));
aLoadDeck->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aLoadDeck"));
aSaveDeck->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aSaveDeck"));
aSaveDeckAs->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aSaveDeckAs"));
aLoadDeckFromClipboard->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aLoadDeckFromClipboard"));
aPrintDeck->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aPrintDeck"));
aAnalyzeDeck->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aAnalyzeDeck"));
aClose->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aClose"));
aOpenCustomFolder->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aOpenCustomFolder"));
aEditSets->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aEditSets"));
aEditTokens->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aEditTokens"));
aResetLayout->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aResetLayout"));
aClearFilterAll->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aClearFilterAll"));
aClearFilterOne->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aClearFilterOne"));
aSaveDeckToClipboard->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aSaveDeckToClipboard"));
aClearFilterOne->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aClearFilterOne"));
aClose->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aClose"));
aRemoveCard->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aRemoveCard"));
aIncrement->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aIncrement"));
aDecrement->setShortcuts(settingsCache->shortcuts().getShortcut("TabDeckEditor/aDecrement"));
}
void TabDeckEditor::loadLayout()
{
MainWindow->restoreState(settingsCache->getDeckEditorLayoutState());
......@@ -504,6 +532,9 @@ TabDeckEditor::TabDeckEditor(TabSupervisor *_tabSupervisor, QWidget *parent)
this->installEventFilter(this);
retranslateUi();
connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()),this,SLOT(refreshShortcuts()));
refreshShortcuts();
QTimer::singleShot(0, this, SLOT(checkFirstRunDetected()));
QTimer::singleShot(0, this, SLOT(loadLayout()));
}
......@@ -519,7 +550,6 @@ void TabDeckEditor::retranslateUi()
aClearFilterAll->setText(tr("&Clear all filters"));
aClearFilterOne->setText(tr("Delete selected"));
aClearFilterOne->setShortcut(QKeySequence("Backspace"));
nameLabel->setText(tr("Deck &name:"));
commentsLabel->setText(tr("&Comments:"));
......@@ -539,17 +569,15 @@ void TabDeckEditor::retranslateUi()
aOpenCustomFolder->setText(tr("Open custom image folder"));
aOpenCustomsetsFolder->setText(tr("Open custom sets folder"));
aClose->setText(tr("&Close"));
aClose->setShortcut(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"));
aIncrement->setText(tr("&Increment number"));
aIncrement->setShortcut(QKeySequence("+"));
aDecrement->setText(tr("&Decrement number"));
aDecrement->setShortcut(QKeySequence("-"));
deckMenu->setTitle(tr("&Deck Editor"));
dbMenu->setTitle(tr("C&ard Database"));
......
......@@ -83,6 +83,7 @@ class TabDeckEditor : public Tab {
void loadLayout();
void restartLayout();
void freeDocksSize();
void refreshShortcuts();
private:
CardInfo *currentCardInfo() const;
......
......@@ -123,14 +123,14 @@ DeckViewContainer::DeckViewContainer(int _playerId, TabGame *parent)
setLayout(deckViewLayout);
retranslateUi();
connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()),this,SLOT(refreshShortcuts()));
refreshShortcuts();
}
void DeckViewContainer::retranslateUi()
{
loadLocalButton->setText(tr("Load local deck"));
loadLocalButton->setShortcut(QKeySequence("Ctrl+O"));
loadRemoteButton->setText(tr("Load deck from server"));
loadRemoteButton->setShortcut(QKeySequence("Ctrl+Alt+O"));
readyStartButton->setText(tr("Ready to s&tart"));
updateSideboardLockButtonText();
}
......@@ -151,6 +151,58 @@ void DeckViewContainer::updateSideboardLockButtonText()
sideboardLockButton->setText(tr("S&ideboard locked"));
}
void DeckViewContainer::refreshShortcuts()
{
loadLocalButton->setShortcut(settingsCache->shortcuts().getSingleShortcut("DeckViewContainer/loadLocalButton"));
loadRemoteButton->setShortcut(settingsCache->shortcuts().getSingleShortcut("DeckViewContainer/loadRemoteButton"));
}
void TabGame::refreshShortcuts()
{
for (int i = 0; i < phaseActions.size(); ++i) {
QAction *temp = phaseActions.at(i);
switch (i) {
case 0: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase0")); break;
case 1: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase1")); break;
case 2: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase2")); break;
case 3: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase3")); break;
case 4: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase4")); break;
case 5: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase5")); break;
case 6: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase6")); break;
case 7: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase7")); break;
case 8: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase8")); break;
case 9: temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase9")); break;
case 10:temp->setShortcuts(settingsCache->shortcuts().getShortcut("Player/phase10")); break;
default: ;
}
}
if (aNextPhase) {
aNextPhase->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aNextPhase"));
}
if (aNextTurn) {
aNextTurn->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aNextTurn"));
}
if (aRemoveLocalArrows) {
aRemoveLocalArrows->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aRemoveLocalArrows"));
}
if (aRotateViewCW) {
aRotateViewCW->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aRotateViewCW"));
}
if (aRotateViewCCW) {
aRotateViewCCW->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aRotateViewCCW"));
}
if (aConcede) {
aConcede->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aConcede"));
}
if (aLeaveGame) {
aLeaveGame->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aLeaveGame"));
}
if (aCloseReplay) {
aCloseReplay->setShortcuts(settingsCache->shortcuts().getShortcut("Player/aCloseReplay"));
}
}
void DeckViewContainer::loadLocalDeck()
{
QFileDialog dialog(this, tr("Load deck"));
......@@ -362,6 +414,8 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, GameReplay *_replay)
addTabMenu(gameMenu);
retranslateUi();
connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()),this,SLOT(refreshShortcuts()));
refreshShortcuts();
setLayout(superMainLayout);
splitter->restoreState(settingsCache->getTabGameSplitterSizes());
......@@ -472,18 +526,10 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, QList<AbstractClient *> &_client
for (int i = 0; i < phasesToolbar->phaseCount(); ++i) {
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;
default: ;
}
phasesMenu->addAction(temp);
phaseActions.append(temp);
}
phasesMenu->addSeparator();
phasesMenu->addAction(aNextPhase);
......@@ -502,6 +548,8 @@ TabGame::TabGame(TabSupervisor *_tabSupervisor, QList<AbstractClient *> &_client
addTabMenu(gameMenu);
retranslateUi();
connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()),this,SLOT(refreshShortcuts()));
refreshShortcuts();
setLayout(mainLayout);
splitter->restoreState(settingsCache->getTabGameSplitterSizes());
......@@ -560,37 +608,29 @@ void TabGame::retranslateUi()
gameMenu->setTitle(tr("&Game"));
if (aNextPhase) {
aNextPhase->setText(tr("Next &phase"));
aNextPhase->setShortcuts(QList<QKeySequence>() << QKeySequence("Ctrl+Space") << QKeySequence("Tab"));
}
if (aNextTurn) {
aNextTurn->setText(tr("Next &turn"));
aNextTurn->setShortcuts(QList<QKeySequence>() << QKeySequence("Ctrl+Return") << QKeySequence("Ctrl+Enter"));
}
if (aRemoveLocalArrows) {
aRemoveLocalArrows->setText(tr("&Remove all local arrows"));
aRemoveLocalArrows->setShortcut(QKeySequence("Ctrl+R"));
}
if (aRotateViewCW) {
aRotateViewCW->setText(tr("Rotate View Cl&ockwise"));
aRotateViewCW->setShortcut(QKeySequence("Ctrl+]"));
}
if (aRotateViewCCW) {
aRotateViewCCW->setText(tr("Rotate View Co&unterclockwise"));
aRotateViewCCW->setShortcut(QKeySequence("Ctrl+["));
}
if (aGameInfo)
aGameInfo->setText(tr("Game &information"));
if (aConcede) {
aConcede->setText(tr("&Concede"));
aConcede->setShortcut(QKeySequence("F2"));
}
if (aLeaveGame) {
aLeaveGame->setText(tr("&Leave game"));
aLeaveGame->setShortcut(QKeySequence("Ctrl+Q"));
}
if (aCloseReplay) {
aCloseReplay->setText(tr("C&lose replay"));
aCloseReplay->setShortcut(QKeySequence("Ctrl+Q"));
}
if (sayLabel)
......
......@@ -86,6 +86,7 @@ private slots:
void sideboardPlanChanged();
void sideboardLockButtonClicked();
void updateSideboardLockButtonText();
void refreshShortcuts();
signals:
void newCardAdded(AbstractCardItem *card);
public:
......@@ -203,8 +204,12 @@ private slots:
void addMentionTag(QString value);
void commandFinished(const Response &response);
<<<<<<< HEAD
void actCompleterChanged();
=======
void refreshShortcuts();
>>>>>>> master
public:
TabGame(TabSupervisor *_tabSupervisor, QList<AbstractClient *> &_clients, const Event_GameJoined &event, const QMap<int, QString> &_roomGameTypes);
TabGame(TabSupervisor *_tabSupervisor, GameReplay *replay);
......
......@@ -63,7 +63,6 @@ TabRoom::TabRoom(TabSupervisor *_tabSupervisor, AbstractClient *_client, ServerI
QMenu *chatSettingsMenu = new QMenu(this);
aClearChat = chatSettingsMenu->addAction(QString());
aClearChat->setShortcut(QKeySequence("F12"));
connect(aClearChat, SIGNAL(triggered()), this, SLOT(actClearChat()));
chatSettingsMenu->addSeparator();
......@@ -127,6 +126,8 @@ TabRoom::TabRoom(TabSupervisor *_tabSupervisor, AbstractClient *_client, ServerI
sayEdit->setCompleter(completer);
actCompleterChanged();
connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()),this,SLOT(refreshShortcuts()));
refreshShortcuts();
}
TabRoom::~TabRoom()
......@@ -277,6 +278,11 @@ void TabRoom::processRoomSayEvent(const Event_RoomSay &event)
emit userEvent(false);
}
void TabRoom::refreshShortcuts()
{
aClearChat->setShortcuts(settingsCache->shortcuts().getShortcut("tab_room/aClearChat"));
}
void TabRoom::addMentionTag(QString mentionTag) {
sayEdit->insert(mentionTag + " ");
sayEdit->setFocus();
......@@ -290,4 +296,129 @@ PendingCommand *TabRoom::prepareRoomCommand(const ::google::protobuf::Message &c
void TabRoom::sendRoomCommand(PendingCommand *pend)
{
client->sendCommand(pend);
<<<<<<< HEAD
}
=======
}
CustomLineEdit::CustomLineEdit(QWidget *parent)
: QLineEdit(parent)
{
}
void CustomLineEdit::focusOutEvent(QFocusEvent * e){
QLineEdit::focusOutEvent(e);
if (c->popup()->isVisible()){
//Remove Popup
c->popup()->hide();
//Truncate the line to last space or whole string
QString textValue = text();
int lastIndex = textValue.length();
int lastWordStartIndex = textValue.lastIndexOf(" ") + 1;
int leftShift = qMin(lastIndex, lastWordStartIndex);
setText(textValue.left(leftShift));
//Insert highlighted line from popup
insert(c->completionModel()->index(c->popup()->currentIndex().row(), 0).data().toString() + " ");
//Set focus back to the textbox since tab was pressed
setFocus();
}
}
void CustomLineEdit::keyPressEvent(QKeyEvent * event)
{
switch (event->key()){
case Qt::Key_Return:
case Qt::Key_Enter:
case Qt::Key_Escape:
if (c->popup()->isVisible()){
event->ignore();
//Remove Popup
c->popup()->hide();
//Truncate the line to last space or whole string
QString textValue = text();
int lastIndexof = textValue.lastIndexOf(" ");
QString finalString = textValue.left(lastIndexof);
//Add a space if there's a word
if (finalString != "")
finalString += " ";
setText(finalString);
return;
}
break;
case Qt::Key_Space:
if (c->popup()->isVisible()){
event->ignore();
//Remove Popup
c->popup()->hide();
//Truncate the line to last space or whole string
QString textValue = text();
int lastIndex = textValue.length();
int lastWordStartIndex = textValue.lastIndexOf(" ") + 1;
int leftShift = qMin(lastIndex, lastWordStartIndex);
setText(textValue.left(leftShift));
//Insert highlighted line from popup
insert(c->completionModel()->index(c->popup()->currentIndex().row(), 0).data().toString() + " ");
return;
}
break;
default:
break;
}
QLineEdit::keyPressEvent(event);
//Wait until the first character after @
if (!c || text().right(1).contains("@"))
return;
//Set new completion prefix
c->setCompletionPrefix(cursorWord(text()));
if (c->completionPrefix().length() < 1){
c->popup()->hide();
return;
}
//Draw completion box
QRect cr = cursorRect();
cr.setWidth(c->popup()->sizeHintForColumn(0) + c->popup()->verticalScrollBar()->sizeHint().width());
c->complete(cr);
//Select first item in the completion popup
QItemSelectionModel* sm = new QItemSelectionModel(c->completionModel());
c->popup()->setSelectionModel(sm);
sm->select(c->completionModel()->index(0, 0), QItemSelectionModel::ClearAndSelect);
sm->setCurrentIndex(c->completionModel()->index(0, 0), QItemSelectionModel::NoUpdate);
}
QString CustomLineEdit::cursorWord(const QString &line) const
{
return line.mid(line.left(cursorPosition()).lastIndexOf(" ") + 1,
cursorPosition() - line.left(cursorPosition()).lastIndexOf(" ") - 1);
}
void CustomLineEdit::insertCompletion(QString arg)
{
QString s_arg = arg + " ";
setText(text().replace(text().left(cursorPosition()).lastIndexOf(" ") + 1,
cursorPosition() - text().left(cursorPosition()).lastIndexOf(" ") - 1, s_arg));
}
void CustomLineEdit::setCompleter(QCompleter* completer)
{
c = completer;
c->setWidget(this);
connect(c, SIGNAL(activated(QString)),this, SLOT(insertCompletion(QString)));
}
void CustomLineEdit::updateCompleterModel(QStringList completionList)
{
if (!c || c->popup()->isVisible())
return;
QStringListModel *model;
model = (QStringListModel*)(c->model());
if (model == NULL)
model = new QStringListModel();
QStringList updatedList = completionList;
model->setStringList(updatedList);
}
>>>>>>> master
......@@ -74,6 +74,7 @@ private slots:
void processJoinRoomEvent(const Event_JoinRoom &event);
void processLeaveRoomEvent(const Event_LeaveRoom &event);
void processRoomSayEvent(const Event_RoomSay &event);
void refreshShortcuts();
public:
TabRoom(TabSupervisor *_tabSupervisor, AbstractClient *_client, ServerInfo_User *_ownUser, const ServerInfo_Room &info);
~TabRoom();
......
......@@ -461,7 +461,6 @@ void MainWindow::retranslateUi()
aWatchReplay->setText(tr("&Watch replay..."));
aDeckEditor->setText(tr("&Deck editor"));
aFullScreen->setText(tr("&Full screen"));
aFullScreen->setShortcut(QKeySequence("Ctrl+F"));
aRegister->setText(tr("&Register to server..."));
aSettings->setText(tr("&Settings..."));
aExit->setText(tr("&Exit"));
......@@ -471,10 +470,10 @@ void MainWindow::retranslateUi()
#else
cockatriceMenu->setTitle(tr("&Cockatrice"));
#endif
aAbout->setText(tr("&About Cockatrice"));
helpMenu->setTitle(tr("&Help"));
aCheckCardUpdates->setText(tr("Check for card updates..."));
tabSupervisor->retranslateUi();
}
......@@ -593,6 +592,9 @@ MainWindow::MainWindow(QWidget *parent)
createTrayActions();
createTrayIcon();
}
connect(&settingsCache->shortcuts(), SIGNAL(shortCutchanged()),this,SLOT(refreshShortcuts()));
refreshShortcuts();
}
MainWindow::~MainWindow()
......@@ -772,3 +774,17 @@ void MainWindow::cardUpdateFinished(int, QProcess::ExitStatus)
// this will force a database reload
settingsCache->setCardDatabasePath(settingsCache->getCardDatabasePath());
}
void MainWindow::refreshShortcuts()
{
aConnect->setShortcuts(settingsCache->shortcuts().getShortcut("MainWindow/aConnect"));
aDisconnect->setShortcuts(settingsCache->shortcuts().getShortcut("MainWindow/aDisconnect"));
aSinglePlayer->setShortcuts(settingsCache->shortcuts().getShortcut("MainWindow/aSinglePlayer"));
aWatchReplay->setShortcuts(settingsCache->shortcuts().getShortcut("MainWindow/aWatchReplay"));
aDeckEditor->setShortcuts(settingsCache->shortcuts().getShortcut("MainWindow/aDeckEditor"));
aFullScreen->setShortcuts(settingsCache->shortcuts().getShortcut("MainWindow/aFullScreen"));
aRegister->setShortcuts(settingsCache->shortcuts().getShortcut("MainWindow/aRegister"));
aSettings->setShortcuts(settingsCache->shortcuts().getShortcut("MainWindow/aSettings"));
aExit->setShortcuts(settingsCache->shortcuts().getShortcut("MainWindow/aExit"));
aCheckCardUpdates->setShortcuts(settingsCache->shortcuts().getShortcut("MainWindow/aCheckCardUpdates"));
}
......@@ -73,6 +73,7 @@ private slots:
void actCheckCardUpdates();
void cardUpdateError(QProcess::ProcessError err);
void cardUpdateFinished(int exitCode, QProcess::ExitStatus exitStatus);
void refreshShortcuts();
private:
static const QString appName;
void setClientStatusTitle();
......
......@@ -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
)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment