From 1ab111f3a560e484d616beae8b45a7e2686b3e03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathias=20Panzenb=C3=B6ck?= Date: Sun, 16 Feb 2014 06:30:55 +0100 Subject: [PATCH] const& params++, no need to rebuild menu when layout changes --- src/layout.cpp | 21 +++++++++++++++------ src/layout.h | 4 ++-- src/layout_edit.cpp | 2 +- src/layout_edit.h | 2 +- 4 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/layout.cpp b/src/layout.cpp index de64f46..2cc6744 100644 --- a/src/layout.cpp +++ b/src/layout.cpp @@ -45,7 +45,7 @@ LayoutManager::~LayoutManager() { } } -QString LayoutManager::getFileName( QString layoutname ) { +QString LayoutManager::getFileName(const QString& layoutname ) { return QString("%1%2.lyt").arg(settingsDir, layoutname); } @@ -230,8 +230,7 @@ void LayoutManager::saveAs() { void LayoutManager::saveDefault() { QFile file( settingsDir + "layout"); if (file.open(QIODevice::WriteOnly)) { - QTextStream stream(&file); - stream << currentLayout; + QTextStream(&file) << currentLayout; file.close(); } } @@ -265,9 +264,19 @@ QStringList LayoutManager::getLayoutNames() const { return result; } -void LayoutManager::setLayoutName(QString name) { - currentLayout = name; - fillPopup(); +void LayoutManager::setLayoutName(const QString& name) { + QList actions = layoutGroup->actions(); + bool found = false; + for (int i = 0; i < actions.size(); ++ i) { + QAction* action = actions[i]; + if (action->data().toString() == name) { + action->setChecked(true); + found = true; + break; + } + } + + currentLayout = found ? name : NL; if (le) { le->setLayout(name); diff --git a/src/layout.h b/src/layout.h index 7205b86..4a5f40a 100644 --- a/src/layout.h +++ b/src/layout.h @@ -71,9 +71,9 @@ class LayoutManager : public QObject { void layoutTriggered(); private: //change to the given layout name and make all the necesary adjustments - void setLayoutName(QString name); + void setLayoutName(const QString& name); //get the file name for a layout name - QString getFileName( QString layoutname ); + QString getFileName(const QString& layoutname); //the directory in wich the joystick devices are (e.g. "/dev/input") QString devdir; QString settingsDir; diff --git a/src/layout_edit.cpp b/src/layout_edit.cpp index 77d47e1..7351013 100644 --- a/src/layout_edit.cpp +++ b/src/layout_edit.cpp @@ -84,7 +84,7 @@ LayoutEdit::LayoutEdit( LayoutManager* l ): QWidget(NULL) { this->show(); } -void LayoutEdit::setLayout(QString layout) { +void LayoutEdit::setLayout(const QString &layout) { //change the text, cmbLayouts->setCurrentIndex(lm->getLayoutNames().indexOf(layout)); //update all the JoyPadWidgets. diff --git a/src/layout_edit.h b/src/layout_edit.h index eb0664a..fc68e8c 100644 --- a/src/layout_edit.h +++ b/src/layout_edit.h @@ -18,7 +18,7 @@ class LayoutEdit : public QWidget { public: LayoutEdit( LayoutManager* l ); //swap to a new layout - void setLayout(QString layout); + void setLayout(const QString& layout); //update the list of available layouts void updateLayoutList(); void updateJoypadWidgets();