diff --git a/assets/icons/songControl/home.svg b/assets/icons/home.svg
similarity index 100%
rename from assets/icons/songControl/home.svg
rename to assets/icons/home.svg
diff --git a/assets/resources.qrc b/assets/resources.qrc
index 26c4512..1c9cbad 100755
--- a/assets/resources.qrc
+++ b/assets/resources.qrc
@@ -14,7 +14,7 @@
icons/songControl/volume-off.svg
icons/songControl/volume-medium.svg
icons/songControl/arrow-expand.svg
- icons/songControl/home.svg
+ icons/home.svg
icons/songControl/magnify.svg
diff --git a/src/Public/Modules/PageNavigator/pages.cpp b/src/Public/Modules/PageNavigator/pages.cpp
index 2dd9a9c..a916f65 100755
--- a/src/Public/Modules/PageNavigator/pages.cpp
+++ b/src/Public/Modules/PageNavigator/pages.cpp
@@ -11,6 +11,17 @@ Pages::Pages(QWidget* parent) :QFrame(parent) {
)");
this->setFixedSize(300, 180);
+
+ QVBoxLayout* layout = new QVBoxLayout(this);
+
+ PageNavigator* home = new PageNavigator("Home", ":icons/home.svg");
+ PageNavigator* localFiles = new PageNavigator("Local Files", ":icons/home.svg");
+ PageNavigator* playlist = new PageNavigator("Playlist", ":icons/songControl/magnify.svg");
+
+
+ layout->addWidget(home);
+ layout->addWidget(localFiles);
+ layout->addWidget(playlist);
}
Pages::~Pages( ) { }
diff --git a/src/Public/Modules/PageNavigator/pages.h b/src/Public/Modules/PageNavigator/pages.h
index 7be1ca3..e9a98c0 100755
--- a/src/Public/Modules/PageNavigator/pages.h
+++ b/src/Public/Modules/PageNavigator/pages.h
@@ -2,6 +2,7 @@
#include
#include
+#include "../../Widgets/PageNavigator/PageNavigator.h"
class Pages : public QFrame {
diff --git a/src/Public/Modules/PlaylistNavigator/PlaylistWidget.cpp b/src/Public/Modules/PlaylistNavigator/PlaylistWidget.cpp
index be0cd52..18d0d57 100755
--- a/src/Public/Modules/PlaylistNavigator/PlaylistWidget.cpp
+++ b/src/Public/Modules/PlaylistNavigator/PlaylistWidget.cpp
@@ -9,6 +9,9 @@ PlaylistWidget::PlaylistWidget(QWidget* parent) : QFrame(parent) {
this->setFixedWidth(300);
+ QVBoxLayout* mainLayout = new QVBoxLayout(this);
+ mainLayout->addSpacing(10);
+
}
PlaylistWidget::~PlaylistWidget( ) { }
diff --git a/src/Public/Modules/PlaylistNavigator/PlaylistWidget.h b/src/Public/Modules/PlaylistNavigator/PlaylistWidget.h
index 455a626..e90efe7 100755
--- a/src/Public/Modules/PlaylistNavigator/PlaylistWidget.h
+++ b/src/Public/Modules/PlaylistNavigator/PlaylistWidget.h
@@ -2,6 +2,7 @@
#include
#include
+#include
class PlaylistWidget : public QFrame {
diff --git a/src/Public/Tools/SvgToPixmap.hpp b/src/Public/Tools/SvgToPixmap.hpp
new file mode 100644
index 0000000..417bd5c
--- /dev/null
+++ b/src/Public/Tools/SvgToPixmap.hpp
@@ -0,0 +1,16 @@
+#pragma once
+
+#include
+#include
+#include
+#include
+
+static QPixmap RenderSvg(QString path, int w, int h) {
+ QSvgRenderer renderer(path);
+ QPixmap pixmap(w, h);
+ pixmap.fill(Qt::transparent);
+ QPainter painter(&pixmap);
+ renderer.render(&painter);
+
+ return pixmap;
+}
diff --git a/src/Public/Widgets/PageNavigator/PageNavigator.cpp b/src/Public/Widgets/PageNavigator/PageNavigator.cpp
new file mode 100644
index 0000000..0d96fc8
--- /dev/null
+++ b/src/Public/Widgets/PageNavigator/PageNavigator.cpp
@@ -0,0 +1,54 @@
+#include "PageNavigator.h"
+#include "SelectHandler.hpp"
+
+PageNavigator::PageNavigator(QString text, QString icon, QWidget* parent)
+ :m_text(new QLabel(text)), m_icon(new QLabel( )) {
+
+ m_icon->setPixmap(icon);
+
+ setObjectName("PageNavigator");
+ setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ setStyleSheet(R"(
+ #PageNavigator{
+ border: 4px solid #414141;
+ border-radius: 8px;
+ color: #E0E0E0;
+ }
+ )");
+
+ QFont font = m_text->font( );
+ font.setPointSize(16);
+ font.setWeight(QFont::Bold);
+ m_text->setFont(font);
+
+ QHBoxLayout* layout = new QHBoxLayout(this);
+ layout->addWidget(m_icon, 0, Qt::AlignLeft);
+ layout->addWidget(m_text, 1, Qt::AlignLeft);
+
+ connect(this, &QPushButton::clicked, [this]( ) {
+ SelectHandler* sh = SelectHandler::GetInstance( );
+
+ sh->setSelected(this);
+ });
+
+}
+
+void PageNavigator::unselect( ) {
+ setStyleSheet(R"(
+ #PageNavigator{
+ border: 4px solid #414141;
+ border-radius: 6px;
+ color: #E0E0E0;
+ }
+ )");
+}
+
+void PageNavigator::select( ) {
+ setStyleSheet(R"(
+ #PageNavigator{
+ border: 4px solid #81D4FA;
+ border-radius: 6px;
+ color: #E0E0E0;
+ }
+ )");
+}
diff --git a/src/Public/Widgets/PageNavigator/PageNavigator.h b/src/Public/Widgets/PageNavigator/PageNavigator.h
new file mode 100644
index 0000000..d19d869
--- /dev/null
+++ b/src/Public/Widgets/PageNavigator/PageNavigator.h
@@ -0,0 +1,20 @@
+#pragma once
+
+#include
+#include
+#include
+#include
+#include
+
+class PageNavigator :public QPushButton {
+ Q_OBJECT
+private:
+ QLabel* m_text;
+ QLabel* m_icon;
+
+public:
+ PageNavigator(QString text, QString icon, QWidget* parent = nullptr);
+
+ void unselect( );
+ void select( );
+};
diff --git a/src/Public/Widgets/PageNavigator/SelectHandler.hpp b/src/Public/Widgets/PageNavigator/SelectHandler.hpp
new file mode 100644
index 0000000..3c0a33a
--- /dev/null
+++ b/src/Public/Widgets/PageNavigator/SelectHandler.hpp
@@ -0,0 +1,54 @@
+#pragma once
+
+#include
+#include "PageNavigator.h"
+
+/*
+ Singleton to handle PageNavigator widget selects
+*/
+class SelectHandler {
+public:
+ static SelectHandler* GetInstance( );
+
+ ~SelectHandler( ) { }
+ SelectHandler(const SelectHandler&) = delete;
+ void operator=(const SelectHandler&) = delete;
+
+ void setSelected(PageNavigator* newSelected);
+
+ PageNavigator* getSelected( );
+
+private:
+ SelectHandler( ) { }
+
+ static SelectHandler* instance;
+
+ PageNavigator* selected = nullptr;
+};
+
+SelectHandler* SelectHandler::instance = nullptr;
+
+SelectHandler* SelectHandler::GetInstance( ) {
+ if (instance == nullptr)
+ instance = new SelectHandler( );
+ return instance;
+}
+
+void SelectHandler::setSelected(PageNavigator* newSelected) {
+ if (!newSelected && (newSelected == selected))
+ return;
+
+ if (this->selected == nullptr) {
+ this->selected = newSelected;
+ newSelected->select( );
+ return;
+ }
+
+ selected->unselect( );
+ newSelected->select( );
+ this->selected = newSelected;
+}
+
+PageNavigator* SelectHandler::getSelected( ) {
+ return selected;
+}