soundboard/include/buttonmanageritems.h

93 lines
2.0 KiB
C++

#pragma once
#include "config.h"
#include <QTreeWidgetItem>
// interface
class ButtonManagerItem : public QTreeWidgetItem {
protected:
ButtonManagerItem(QTreeWidgetItem* parent, int type);
public:
virtual ~ButtonManagerItem();
virtual bool hasEdit() const;
virtual bool hasRemove() const;
virtual bool hasMoveUp() const;
virtual bool hasMoveDown() const;
virtual void edit();
virtual void remove();
virtual void moveUp();
virtual void moveDown();
protected:
QTreeWidgetItem* mparent;
};
class RowItem : public ButtonManagerItem {
public:
RowItem(QTreeWidgetItem* parent, uint8_t rownr, Config::RootConfig& conf);
const static int TYPE = 1000;
virtual bool hasRemove() const;
virtual bool hasMoveUp() const;
virtual bool hasMoveDown() const;
virtual void remove();
virtual void moveUp();
virtual void moveDown();
uint8_t getRow() const; // returns the number of this row
std::vector<Config::ButtonConfig>& getConfig();
private:
Config::RootConfig& conf;
uint8_t pos = 0;
//called when the row was moved
void updatePosition();
};
class ButtonItem : public ButtonManagerItem {
public:
ButtonItem(RowItem* parent, uint8_t buttonnr, Config::RootConfig& conf);
const static int TYPE = 1001;
virtual bool hasRemove() const override;
virtual void remove() override;
// triggered from the view when the name was changed
void nameWasChanged();
Config::ButtonConfig& getConfig();
private:
Config::RootConfig& conf;
uint8_t buttonnr = 0;
RowItem* row = nullptr;
};
class SampleItem : public ButtonManagerItem {
public:
SampleItem(ButtonItem* parent, uint8_t samplenr, Config::RootConfig& conf);
const static int TYPE = 1002;
virtual bool hasEdit() const override;
virtual bool hasRemove() const override;
virtual void edit() override;
virtual void remove() override;
Config::SampleConfig& getConfig();
private:
Config::RootConfig& conf;
uint8_t samplenr = 0;
ButtonItem* button = nullptr;
//called when a sample was moved
void updatePosition();
};