diff --git a/include/buttonmanager.h b/include/buttonmanager.h index 5b00544..f5e2474 100644 --- a/include/buttonmanager.h +++ b/include/buttonmanager.h @@ -50,6 +50,8 @@ private: void select(QTreeWidgetItem* item); QTreeWidgetItem* getSelectedItem() const; + template + T* getSelectedItem() const; // create: allow this method to create a new Row, if nothing else is found // onlyIfSelected: only return a row if there is a selection RowItem* getCurrentRow(bool create = true, bool onlyIfSelected = false); diff --git a/src/buttonmanager.cpp b/src/buttonmanager.cpp index 2c7b99c..699d141 100644 --- a/src/buttonmanager.cpp +++ b/src/buttonmanager.cpp @@ -153,7 +153,7 @@ void ButtonManager::downButton() { void ButtonManager::itemSelected() { Log::debug << "item selected"; - ButtonManagerItem* item = dynamic_cast(getSelectedItem()); + ButtonManagerItem* item = getSelectedItem(); if(item) { // set buttons ui->editButton->setEnabled(item->hasEdit()); @@ -243,6 +243,11 @@ QTreeWidgetItem* ButtonManager::getSelectedItem() const { return items.at(0); } +template +T* ButtonManager::getSelectedItem() const { + return dynamic_cast(getSelectedItem()); +} + RowItem* ButtonManager::getCurrentRow(bool create, bool onlyIfSelected) { QTreeWidgetItem* selectedItem = getSelectedItem(); // no item selected and its allowed to use alternative messures @@ -328,7 +333,7 @@ RowItem* ButtonManager::addNewRow() { template void ButtonManager::perform() { - ButtonManagerItem* item = dynamic_cast(getSelectedItem()); + ButtonManagerItem* item = getSelectedItem(); if(item) { (item->*T)(); } else {