did main work on the page selector
This commit is contained in:
|
Before Width: | Height: | Size: 122 B After Width: | Height: | Size: 122 B |
@@ -14,7 +14,7 @@
|
|||||||
<file>icons/songControl/volume-off.svg</file>
|
<file>icons/songControl/volume-off.svg</file>
|
||||||
<file>icons/songControl/volume-medium.svg</file>
|
<file>icons/songControl/volume-medium.svg</file>
|
||||||
<file>icons/songControl/arrow-expand.svg</file>
|
<file>icons/songControl/arrow-expand.svg</file>
|
||||||
<file>icons/songControl/home.svg</file>
|
<file>icons/home.svg</file>
|
||||||
<file>icons/songControl/magnify.svg</file>
|
<file>icons/songControl/magnify.svg</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
|||||||
@@ -11,6 +11,17 @@ Pages::Pages(QWidget* parent) :QFrame(parent) {
|
|||||||
)");
|
)");
|
||||||
|
|
||||||
this->setFixedSize(300, 180);
|
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( ) { }
|
Pages::~Pages( ) { }
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include <QFrame>
|
#include <QFrame>
|
||||||
|
#include "../../Widgets/PageNavigator/PageNavigator.h"
|
||||||
|
|
||||||
class Pages : public QFrame {
|
class Pages : public QFrame {
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,9 @@ PlaylistWidget::PlaylistWidget(QWidget* parent) : QFrame(parent) {
|
|||||||
|
|
||||||
this->setFixedWidth(300);
|
this->setFixedWidth(300);
|
||||||
|
|
||||||
|
QVBoxLayout* mainLayout = new QVBoxLayout(this);
|
||||||
|
mainLayout->addSpacing(10);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PlaylistWidget::~PlaylistWidget( ) { }
|
PlaylistWidget::~PlaylistWidget( ) { }
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include <QFrame>
|
#include <QFrame>
|
||||||
|
#include <QLayout>
|
||||||
|
|
||||||
class PlaylistWidget : public QFrame {
|
class PlaylistWidget : public QFrame {
|
||||||
|
|
||||||
|
|||||||
16
src/Public/Tools/SvgToPixmap.hpp
Normal file
16
src/Public/Tools/SvgToPixmap.hpp
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QPixmap>
|
||||||
|
#include <QString>
|
||||||
|
#include <QSvgRenderer>
|
||||||
|
#include <QPainter>
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
54
src/Public/Widgets/PageNavigator/PageNavigator.cpp
Normal file
54
src/Public/Widgets/PageNavigator/PageNavigator.cpp
Normal file
@@ -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;
|
||||||
|
}
|
||||||
|
)");
|
||||||
|
}
|
||||||
20
src/Public/Widgets/PageNavigator/PageNavigator.h
Normal file
20
src/Public/Widgets/PageNavigator/PageNavigator.h
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QLayout>
|
||||||
|
#include <QFont>
|
||||||
|
#include <QPushButton>
|
||||||
|
|
||||||
|
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( );
|
||||||
|
};
|
||||||
54
src/Public/Widgets/PageNavigator/SelectHandler.hpp
Normal file
54
src/Public/Widgets/PageNavigator/SelectHandler.hpp
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
#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;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user