getSelectedItem with integrated cast

This commit is contained in:
mrbesen 2021-12-22 21:20:25 +01:00
parent df58358c42
commit f28f15e3e0
Signed by untrusted user: MrBesen
GPG Key ID: 596B2350DCD67504
2 changed files with 9 additions and 2 deletions

View File

@ -50,6 +50,8 @@ private:
void select(QTreeWidgetItem* item);
QTreeWidgetItem* getSelectedItem() const;
template<typename T>
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);

View File

@ -153,7 +153,7 @@ void ButtonManager::downButton() {
void ButtonManager::itemSelected() {
Log::debug << "item selected";
ButtonManagerItem* item = dynamic_cast<ButtonManagerItem*>(getSelectedItem());
ButtonManagerItem* item = getSelectedItem<ButtonManagerItem>();
if(item) {
// set buttons
ui->editButton->setEnabled(item->hasEdit());
@ -243,6 +243,11 @@ QTreeWidgetItem* ButtonManager::getSelectedItem() const {
return items.at(0);
}
template<typename T>
T* ButtonManager::getSelectedItem() const {
return dynamic_cast<T*>(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 (ButtonManagerItem::*T)()>
void ButtonManager::perform() {
ButtonManagerItem* item = dynamic_cast<ButtonManagerItem*>(getSelectedItem());
ButtonManagerItem* item = getSelectedItem<ButtonManagerItem>();
if(item) {
(item->*T)();
} else {