#pragma once #include #include #include "configdialog.h" #include "buttonmanageritems.h" #include "mainwindow.h" namespace Ui { class ButtonManager; } class ButtonManager : public ConfigDialog { Q_OBJECT public: explicit ButtonManager(Config& conf, MainWindow *parent = nullptr); ~ButtonManager(); private slots: //buttons: void addButton(); void editButton(); void deleteButton(); void upButton(); void downButton(); void itemSelected(); void itemChanged(QTreeWidgetItem* item, int column); void itemDoubleClicked(QTreeWidgetItem* item); private: Ui::ButtonManager *ui; MainWindow* mainW = nullptr; virtual void saveChanges() override; virtual void loadConfig() override; virtual QDialogButtonBox* getButtonBox() override; 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); ButtonItem* getCurrentButton(bool create = true) const; RowItem* addNewRow(); template void perform(); };