From f28f15e3e0014ad29a35b843f4ea9d964650d445 Mon Sep 17 00:00:00 2001 From: mrbesen Date: Wed, 22 Dec 2021 21:20:25 +0100 Subject: [PATCH] getSelectedItem with integrated cast --- include/buttonmanager.h | 2 ++ src/buttonmanager.cpp | 9 +++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) 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 {