Update widgets module. Raster example initial.

This commit is contained in:
IlyaShurupov 2024-04-12 15:27:40 +03:00
parent 9e339defd6
commit 9cfae3fe3e
48 changed files with 1169 additions and 530 deletions

View file

@ -18,7 +18,8 @@ using namespace tp;
class LibraryViewer : public Application {
public:
LibraryViewer() : gui(&library, &player) {
LibraryViewer() :
gui(&library, &player) {
library.loadJson(getHome() + "Library.json");
library.checkExisting();
@ -27,22 +28,22 @@ public:
void processFrame(EventHandler* eventHandler) override {
auto rec = RectF{ { 0, 0 }, mWindow->getSize() };
gui.updateConfigCache(mWidgetManager);
gui.proc(*eventHandler, rec, rec);
}
void drawFrame(Canvas* canvas) override {
gui.draw(*canvas);
}
void drawFrame(Canvas* canvas) override { gui.draw(*canvas); }
private:
Player player;
Library library;
tp::WidgetManager mWidgetManager;
LibraryWidget<EventHandler, Canvas> gui;
};
int main() {
tp::GlobalGUIConfig config;
tp::gGlobalGUIConfig = &config;
LibraryViewer lib;
lib.run();

View file

@ -18,15 +18,10 @@ namespace tp {
col.mColor.setNoTransition({ 0.15f, 0.15f, 0.15f, 0.f });
};
void proc(const Events& events, const RectF& areaParent, const RectF& area) override {
void procBody(const Events& events) override {
mSelected = false;
this->mArea = area;
this->mVisible = area.isOverlap(areaParent);
if (!this->mVisible) return;
if (!mTrack) return;
if (!areaParent.isOverlap(area)) return;
if (area.isInside(events.getPointer())) {
if (this->mArea.isInside(events.getPointer())) {
col.set({ 0.15f, 0.15f, 0.15f, 1.f });
mSelected = events.isReleased(InputID::MOUSE1);
} else {
@ -34,8 +29,7 @@ namespace tp {
}
}
void draw(Canvas& canvas) override {
if (!this->mVisible) return;
void drawBody(Canvas& canvas) override {
if (!mTrack) return;
canvas.rect(this->mArea, col.get(), 4.f);
@ -82,16 +76,7 @@ namespace tp {
items.append({ "Date Last Played" });
}
void proc(const Events&, const RectF& areaParent, const RectF& area) override {
this->mArea = area;
this->mVisible = area.isOverlap(areaParent);
if (!this->mVisible) return;
if (!mTrack) return;
// renderUI();
}
void draw(Canvas&) override {
if (!this->mVisible) return;
void drawBody(Canvas&) override {
if (!mTrack) return;
// canvas.rect(this->mArea, { 0.13f, 0.13f, 0.13f, 1.f }, 4.f);
renderUI();
@ -220,11 +205,7 @@ namespace tp {
}
}
void proc(const Events& events, const RectF& areaParent, const RectF& aArea) override {
this->mArea = aArea;
this->mVisible = this->mArea.isOverlap(areaParent);
if (!this->mVisible) return;
void procBody(const Events& events) override {
filter();
mSplitView.proc(events, this->mArea, this->mArea);
@ -242,9 +223,7 @@ namespace tp {
// mCurrentTrack.proc(events, this->mArea, mSplitView.getFirst());
}
void draw(Canvas& canvas) override {
if (!this->mVisible) return;
void drawBody(Canvas& canvas) override {
canvas.rect(this->mArea, { 0.1f, 0.1f, 0.1f, 1.f });
mSplitView.draw(canvas);
@ -283,6 +262,14 @@ namespace tp {
mCurrentTrackInfo.isSongFilterChanged = false;
}
void updateConfigCache(WidgetManager& wm) override {
wm.setActiveId("LibraryWidget");
mSplitView.updateConfigCache(wm);
mCurrentTrack.updateConfigCache(wm);
mCurrentTrackInfo.updateConfigCache(wm);
mSongList.updateConfigCache(wm);
}
private:
Library* mLibrary = nullptr;
Player* mPlayer = nullptr;