soundboard/include/buttonmanageritems.h

129 lines
2.9 KiB
C
Raw Normal View History

2021-12-21 15:44:51 +01:00
#pragma once
#include "config.h"
#include <QTreeWidgetItem>
// interface
class ButtonManagerItem : public QTreeWidgetItem {
protected:
2021-12-22 14:58:08 +01:00
ButtonManagerItem(QTreeWidgetItem* parent, int type, uint8_t pos);
2021-12-21 15:44:51 +01:00
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();
template<typename T>
T* getParent() const;
template<typename T>
T* getChild(int index) const;
2021-12-25 14:01:15 +01:00
template<typename T>
T* getLastChild() const;
template<typename T>
T* getSibling(int index) const;
template<typename T>
T* getItemAbove() const;
template<typename T>
T* getItemBelow() const;
void reenumerateAllSiblings();
2021-12-25 14:37:34 +01:00
void expandTree(); // expand this and every parent item
2021-12-21 15:44:51 +01:00
protected:
2021-12-22 14:58:08 +01:00
QTreeWidgetItem* mparent = nullptr;
uint8_t pos = 0;
void updateAllPosBellow(int8_t diff, uint8_t size);
virtual void updatePosition();
2021-12-21 15:44:51 +01:00
};
class RowItem : public ButtonManagerItem {
public:
RowItem(QTreeWidgetItem* parent, uint8_t rownr, Config::RootConfig& conf);
const static int TYPE = 1000;
2021-12-22 14:58:08 +01:00
virtual bool hasRemove() const override;
virtual bool hasMoveUp() const override;
virtual bool hasMoveDown() const override;
2021-12-21 15:44:51 +01:00
2021-12-22 14:58:08 +01:00
virtual void remove() override;
virtual void moveUp() override;
virtual void moveDown() override;
2021-12-21 15:44:51 +01:00
2021-12-21 20:19:24 +01:00
uint8_t getRow() const; // returns the number of this row
std::vector<Config::ButtonConfig>& getConfig();
2021-12-21 15:44:51 +01:00
private:
Config::RootConfig& conf;
//called when the row was moved
2021-12-22 14:58:08 +01:00
void updatePosition() override;
2021-12-21 15:44:51 +01:00
};
2021-12-21 20:19:24 +01:00
class ButtonItem : public ButtonManagerItem {
public:
ButtonItem(RowItem* parent, uint8_t buttonnr, Config::RootConfig& conf);
const static int TYPE = 1001;
virtual bool hasEdit() const override;
2021-12-22 12:52:25 +01:00
virtual bool hasRemove() const override;
2021-12-22 14:58:08 +01:00
virtual bool hasMoveUp() const override;
virtual bool hasMoveDown() const override;
2021-12-22 12:52:25 +01:00
virtual void edit() override;
2021-12-22 12:52:25 +01:00
virtual void remove() override;
2021-12-22 14:58:08 +01:00
virtual void moveUp() override;
virtual void moveDown() override;
2021-12-22 12:52:25 +01:00
2021-12-21 20:19:24 +01:00
// triggered from the view when the name was changed
void nameWasChanged();
2022-04-02 13:46:11 +02:00
void keyWasChanged();
2021-12-21 20:19:24 +01:00
Config::ButtonConfig& getConfig();
private:
Config::RootConfig& conf;
2021-12-22 14:58:08 +01:00
void moveToRowAbove();
2021-12-22 19:00:43 +01:00
void moveToRowBelow();
2021-12-22 02:08:11 +01:00
};
class SampleItem : public ButtonManagerItem {
public:
SampleItem(ButtonItem* parent, uint8_t samplenr, Config::RootConfig& conf);
const static int TYPE = 1002;
2021-12-22 13:39:19 +01:00
virtual bool hasEdit() const override;
2021-12-22 12:52:25 +01:00
virtual bool hasRemove() const override;
virtual bool hasMoveUp() const override;
virtual bool hasMoveDown() const override;
2021-12-22 12:52:25 +01:00
2021-12-22 13:39:19 +01:00
virtual void edit() override;
2021-12-22 12:52:25 +01:00
virtual void remove() override;
virtual void moveUp() override;
virtual void moveDown() override;
2021-12-22 12:52:25 +01:00
2021-12-22 02:08:11 +01:00
Config::SampleConfig& getConfig();
private:
Config::RootConfig& conf;
2021-12-22 12:52:25 +01:00
//called when a sample was moved
2021-12-22 14:58:08 +01:00
void updatePosition() override;
void moveToButtonAbove();
void moveToButtonBelow();
2021-12-21 20:19:24 +01:00
};