soundboard/include/buttonmanager.h

58 lines
1.2 KiB
C++

#pragma once
#include <QAbstractButton>
#include <QTreeWidgetItem>
#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<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);
ButtonItem* getCurrentButton(bool create = true) const;
RowItem* addNewRow();
template<void (ButtonManagerItem::*T)()>
void perform();
};