diff --git a/cockatrice/src/sequenceEdit/sequenceedit.cpp b/cockatrice/src/sequenceEdit/sequenceedit.cpp index ed754211..4d8aa404 100644 --- a/cockatrice/src/sequenceEdit/sequenceedit.cpp +++ b/cockatrice/src/sequenceEdit/sequenceedit.cpp @@ -71,6 +71,16 @@ void SequenceEdit::restoreDefault() updateSettings(); } +void SequenceEdit::refreshShortcut() +{ + lineEdit->setText(settingsCache->shortcuts().getShortcutString(shorcutName)); +} + +void SequenceEdit::clear() +{ + this->lineEdit->setText(""); +} + bool SequenceEdit::eventFilter(QObject *, QEvent * event) { if(event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) diff --git a/cockatrice/src/sequenceEdit/sequenceedit.h b/cockatrice/src/sequenceEdit/sequenceedit.h index 0a016c2c..7f7a7aca 100644 --- a/cockatrice/src/sequenceEdit/sequenceedit.h +++ b/cockatrice/src/sequenceEdit/sequenceedit.h @@ -14,11 +14,14 @@ class SequenceEdit : public QWidget public: SequenceEdit(QString _shorcutName, QWidget *parent = 0); QString getSecuence(); + void refreshShortcut(); + void clear(); signals: private slots: void removeLastShortcut(); void restoreDefault(); + protected: bool eventFilter(QObject *, QEvent *event); private: diff --git a/cockatrice/src/sequenceEdit/shortcutstab.cpp b/cockatrice/src/sequenceEdit/shortcutstab.cpp index b28a1466..d5c3091f 100644 --- a/cockatrice/src/sequenceEdit/shortcutstab.cpp +++ b/cockatrice/src/sequenceEdit/shortcutstab.cpp @@ -1,10 +1,17 @@ #include "shortcutstab.h" #include "ui_shortcutstab.h" +#include "../settingscache.h" +#include + ShortcutsTab::ShortcutsTab() : ui(new Ui::shortcutsTab) { ui->setupUi(this); + connect(ui->btnResetAll,SIGNAL(clicked()),this,SLOT(resetShortcuts())); + connect(ui->btnClearAll,SIGNAL(clicked()),this,SLOT(clearShortcuts())); + connect(&settingsCache->shortcuts(),SIGNAL(allShortCutsReset()),this,SLOT(refreshEdits())); + connect(&settingsCache->shortcuts(),SIGNAL(allShortCutsClear()),this,SLOT(afterClear())); } void ShortcutsTab::retranslateUi() @@ -16,3 +23,39 @@ ShortcutsTab::~ShortcutsTab() { delete ui; } + +void ShortcutsTab::resetShortcuts() +{ + if(QMessageBox::question(this,tr("Restore all default shortcuts"), + tr("Do you really want to restore all default shortcuts?")) == QMessageBox::Yes) + { + settingsCache->shortcuts().resetAllShortcuts(); + } +} + +void ShortcutsTab::refreshEdits() +{ + QList edits = this->findChildren(); + for(int i= 0; i < edits.length(); ++i) + { + edits.at(i)->refreshShortcut(); + } +} + +void ShortcutsTab::clearShortcuts() +{ + if(QMessageBox::question(this,tr("Clear all default shortcuts"), + tr("Do you really want to clear all shortcuts?")) == QMessageBox::Yes) + { + settingsCache->shortcuts().clearAllShortcuts(); + } +} + +void ShortcutsTab::afterClear() +{ + QList edits = this->findChildren(); + for(int i= 0; i < edits.length(); ++i) + { + edits.at(i)->clear(); + } +} diff --git a/cockatrice/src/sequenceEdit/shortcutstab.h b/cockatrice/src/sequenceEdit/shortcutstab.h index c2e88d39..10396e10 100644 --- a/cockatrice/src/sequenceEdit/shortcutstab.h +++ b/cockatrice/src/sequenceEdit/shortcutstab.h @@ -17,7 +17,11 @@ public: ShortcutsTab(); void retranslateUi(); ~ShortcutsTab(); - +private slots: + void resetShortcuts(); + void refreshEdits(); + void clearShortcuts(); + void afterClear(); private: Ui::shortcutsTab *ui; }; diff --git a/cockatrice/src/sequenceEdit/ui_shortcutstab.h b/cockatrice/src/sequenceEdit/ui_shortcutstab.h index 261fc6a8..d642a9fc 100644 --- a/cockatrice/src/sequenceEdit/ui_shortcutstab.h +++ b/cockatrice/src/sequenceEdit/ui_shortcutstab.h @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -18,6 +19,8 @@ QT_BEGIN_NAMESPACE +#define WIKI "https://github.com/Cockatrice/Cockatrice/wiki/Custom-Keyboard-Shortcuts" + class Ui_shortcutsTab { public: @@ -267,6 +270,9 @@ public: SequenceEdit *Player_aAlwaysRevealTopCard; QSpacerItem *verticalSpacer_3; QWidget * tab_4; + QLabel *faqLabel; + QPushButton *btnResetAll; + QPushButton *btnClearAll; void setupUi(QWidget *shortcutsTab) { @@ -1402,7 +1408,24 @@ public: grid->addItem(new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding),1,0); tabWidget->addTab(tab_4, QString()); - gridLayout_9->addWidget(tabWidget, 0, 0, 1, 1); + + faqLabel = new QLabel(shortcutsTab); + faqLabel->setTextInteractionFlags(Qt::LinksAccessibleByMouse); + faqLabel->setOpenExternalLinks(true); + + btnResetAll = new QPushButton(shortcutsTab); + btnClearAll = new QPushButton(shortcutsTab); + + btnResetAll->setIcon(QPixmap("theme:icons/update")); + btnClearAll->setIcon(QPixmap("theme:icons/clearsearch")); + + QHBoxLayout *buttonsLayout = new QHBoxLayout(shortcutsTab); + buttonsLayout->addWidget(btnClearAll); + buttonsLayout->addWidget(btnResetAll); + + gridLayout_9->addWidget(tabWidget, 0, 0, 1, 2); + gridLayout_9->addWidget(faqLabel,1,0,1,1); + gridLayout_9->addLayout(buttonsLayout,1,1,1,1,Qt::AlignRight); tabWidget->setCurrentIndex(0); grid->setSpacing(3); @@ -1557,6 +1580,9 @@ public: lbl_Player_aAlwaysRevealTopCard->setText(QApplication::translate("shortcutsTab", "Always reveal top card", 0)); tabWidget->setTabText(tabWidget->indexOf(tab_3), QApplication::translate("shortcutsTab", "Draw | Move | View | Gameplay", 0)); tabWidget->setTabText(tabWidget->indexOf(tab_4), QApplication::translate("shortcutsTab","Counters", 0)); + faqLabel->setText(QString("%2").arg(WIKI).arg(QApplication::translate("shortcutsTab","How to set custom shortcuts",0))); + btnResetAll->setText(QApplication::translate("shortcutsTab","Restore all default shortcuts",0)); + btnClearAll->setText(QApplication::translate("shortcutsTab","Clear all shortcuts",0)); } // retranslateUi }; diff --git a/cockatrice/src/shortcutssettings.cpp b/cockatrice/src/shortcutssettings.cpp index 47af0f88..36e678c1 100644 --- a/cockatrice/src/shortcutssettings.cpp +++ b/cockatrice/src/shortcutssettings.cpp @@ -119,6 +119,24 @@ bool ShortcutsSettings::isValid(QString name, QString Sequences) return true; } +void ShortcutsSettings::resetAllShortcuts() +{ + for(QMap >::const_iterator it = defaultShortCuts.begin(); + it != defaultShortCuts.end(); ++it){ + setShortcuts(it.key(), it.value()); + } + emit allShortCutsReset(); +} + +void ShortcutsSettings::clearAllShortcuts() +{ + for(QMap >::const_iterator it = shortCuts.begin(); + it != shortCuts.end(); ++it){ + setShortcuts(it.key(), ""); + } + emit allShortCutsClear(); +} + void ShortcutsSettings::fillDefaultShorcuts() { defaultShortCuts["MainWindow/aCheckCardUpdates"] = parseSequenceString(""); diff --git a/cockatrice/src/shortcutssettings.h b/cockatrice/src/shortcutssettings.h index 89f3d602..1f82ee02 100644 --- a/cockatrice/src/shortcutssettings.h +++ b/cockatrice/src/shortcutssettings.h @@ -24,9 +24,13 @@ public: void setShortcuts(QString name, QString Sequences); bool isValid(QString name, QString Sequences); + + void resetAllShortcuts(); + void clearAllShortcuts(); signals: void shortCutchanged(); - + void allShortCutsReset(); + void allShortCutsClear(); private: QString settingsFilePath; QMap > shortCuts;