命名规范
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
#pragma once
|
||||
#include <QAction>
|
||||
#include "Background.h"
|
||||
#include "Content.h"
|
||||
// #define SETTER3(class_name, Type, prop, value) \
|
||||
// Type prop;
|
||||
//
|
||||
// #define SETTER2(class_name, Type, prop) \
|
||||
// class_name& set_##prop(const Type& prop) { this->##prop = prop; return *this;} \
|
||||
// Type prop;
|
||||
//
|
||||
// #define SETTER(Type, prop, value) \
|
||||
// auto& set_##prop(const Type& prop) { this->##prop = prop; return *this;} \
|
||||
// Type prop = value;
|
||||
struct Button : Base {
|
||||
Q_OBJECT
|
||||
public:
|
||||
Background background;
|
||||
Content content;
|
||||
Button() {
|
||||
paintAbles.append(&background);
|
||||
paintAbles.append(&content);
|
||||
}
|
||||
[[nodiscard]] QSize sizeHint() const override {
|
||||
auto ret = content.sizeHint();
|
||||
if (background.border) {
|
||||
int a = background.border->len * 2;
|
||||
ret += QSize(a, a);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
};
|
||||
inline Button* create_icon(const QString& path, const QColor& background, const Handle_Mouse& f) {
|
||||
auto ret = new Button();
|
||||
ret->content.set_icon(path, QColor(Qt::color0));
|
||||
ret->background.set_color(background);
|
||||
ret->background.mouse_handlers.append(f);
|
||||
return ret;
|
||||
};
|
||||
struct Switch_Button : Base {
|
||||
Q_OBJECT
|
||||
public:
|
||||
Background background;
|
||||
Content content1;
|
||||
Content content2;
|
||||
Switch_Button() {
|
||||
paintAbles.append(&background);
|
||||
paintAbles.append(&content1);
|
||||
paintAbles.append(&content2);
|
||||
content1.show = true;
|
||||
content2.show = false;
|
||||
}
|
||||
[[nodiscard]] QSize sizeHint() const override {
|
||||
auto ret = content1.show ? content1.sizeHint() : content2.sizeHint();
|
||||
if (background.border) {
|
||||
int a = background.border->len * 2;
|
||||
ret += QSize(a, a);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
};
|
||||
inline Switch_Button* create_switch_icon(const QColor& background, const QString& path, const Handle_Mouse& f,
|
||||
const QString& path2, const Handle_Mouse& f2) {
|
||||
auto ret = new Switch_Button();
|
||||
ret->content1.set_icon(path, QColor(Qt::color0));
|
||||
ret->content2.set_icon(path2, QColor(Qt::color0));
|
||||
ret->background.set_color(background);
|
||||
ret->background.mouse_handlers.append([ret, f, f2](QEvent::Type t, QMouseEvent* e) {
|
||||
if (t == QEvent::MouseButtonPress) {
|
||||
if (ret->content1.show) {
|
||||
f(t, e);
|
||||
}
|
||||
else {
|
||||
f2(t, e);
|
||||
}
|
||||
std::swap(ret->content1.show, ret->content2.show);
|
||||
ret->update();
|
||||
}
|
||||
});
|
||||
return ret;
|
||||
}
|
||||
Reference in New Issue
Block a user