Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
/*.user
build/*
174 changes: 112 additions & 62 deletions MainWindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,73 +17,107 @@
#include "ui_MainWindow.h"

#include <QMouseEvent>
#include <QFileDialog>
#include <QTextStream>
#include <QDebug>

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);

initPieMenu();

QObject::connect(ui->button_count_slider, &QSlider::sliderMoved, this, [&](int32_t pos)
{
pie_menu->setButtonCount(pos);

for (int32_t i = 0; i < pos; i++)
{
pie_menu->setButtonIcon(i, ":/icons/image-line-icon.png");
}

pie_menu->update();

ui->button_count_label->setText(QString::number(pos));
this->setWindowTitle(this -> windowTitle().append(". QT version ").append(qVersion()));
//
/** button count */
QObject::connect(ui->button_count_slider, &QSlider::valueChanged, this, [&](int32_t pos) {
pie_menu->setButtonCount(pos);

for (int32_t i = 0; i < pos; i++) {
pie_menu->setButtonIcon(i, ":/icons/image-line-icon.png");
}

pie_menu->update();
ui->button_count_label->setText(QString::number(pos));
});
/** Base angle */
QObject::connect(ui->base_angle_slider, &QSlider::valueChanged, this, [&](int32_t pos) {
pie_menu->setBaseAngle(pos);
pie_menu->update();
ui->base_angle_label->setText(QString::number(pos));
});

/** Stroke width */
QObject::connect(ui->stroke_width_slider, &QSlider::valueChanged, this, [&](int32_t pos) {
pie_menu->setStrokeWidth(pos);
pie_menu->update();
ui->stroke_width_slider->setValue(pos);
ui->stroke_width_label->setText(QString("%0 px").arg(QString::number(pos)));
});
/** Close button radius */
QObject::connect(ui->close_radius_slider, &QSlider::valueChanged, this, [&](int32_t pos) {
pie_menu->setCloseButtonRadius(pos);
pie_menu->update();
ui->close_radius_slider->setValue(pos);
ui->close_button_radius_label->setText(QString("%0 px").arg(QString::number(pos)));
});
/** Pin button radius */
QObject::connect(ui->pin_radius_slider, &QSlider::valueChanged, this, [&](int32_t pos) {
pie_menu->setPinButtonRadius(pos);
pie_menu->update();
ui->pin_radius_slider->setValue(pos);
ui->pin_button_radius_label->setText(QString("%0 px").arg(QString::number(pos)));
});
/** Checkboxes */
QObject::connect(ui->disable_button_checkbox, &QCheckBox::clicked, this, [&](bool value) {
pie_menu->setButtonEnabled(0, !value);
pie_menu->update();
});
/** Aleternative */
QObject::connect(ui->alternate_colors_checkbox, &QCheckBox::clicked, this, [&](bool value) {
pie_menu->setAlternateColors(value);
pie_menu->update();
});

QObject::connect(ui->base_angle_slider, &QSlider::sliderMoved, this, [&](int32_t pos)
{
pie_menu->setBaseAngle(pos);
/** Close button as a regular button */
QObject::connect(ui->closeButtonAsAction, &QCheckBox::clicked, this, [&](bool value) {
pie_menu->setCloseButtonAsRegularButton(value);
pie_menu->update();

ui->base_angle_label->setText(QString("%0°").arg(QString::number(pos)));
ui->closeButtonAsAction->setChecked(value);
});

QObject::connect(ui->stroke_width_slider, &QSlider::sliderMoved, this, [&](int32_t pos)
{
pie_menu->setStrokeWidth(pos);
/** Show pin button */
QObject::connect(ui->removePinButton, &QCheckBox::clicked, this, [&](bool value) {
pie_menu->setShowPinButton(!value);
if(value) {
pie_menu->setPinned(true);
}
pie_menu->update();

ui->stroke_width_label->setText(QString("%0 px").arg(QString::number(pos)));
ui->removePinButton->setChecked(value);
});

QObject::connect(ui->close_radius_slider, &QSlider::sliderMoved, this, [&](int32_t pos)
{
pie_menu->setCloseButtonRadius(pos);
pie_menu->update();

ui->close_button_radius_label->setText(QString("%0 px").arg(QString::number(pos)));

/** Pie radius */
QObject::connect(ui->pieRadiusSlider, &QSlider::valueChanged, this, [&](int32_t pos) {
pie_menu->setPieRadius(pos);
ui->pieRadiusSlider->setValue(pos);
ui->pieRadiusLabel->setText(QString("%0 px").arg(QString::number(pos)));
});

QObject::connect(ui->pin_radius_slider, &QSlider::sliderMoved, this, [&](int32_t pos)
{
pie_menu->setPinButtonRadius(pos);
pie_menu->update();

ui->pin_button_radius_label->setText(QString("%0 px").arg(QString::number(pos)));
/** Move to center */
QObject::connect(ui->centerButton, &QPushButton::clicked, this, [&](bool) {
pie_menu->move(this->geometry().width() / 2 - pie_menu->geometry().width() / 2,
this->geometry().height() / 2 - pie_menu->geometry().height() / 2);
});

QObject::connect(ui->alternate_colors_checkbox, &QCheckBox::clicked, this, [&](bool value)
{
pie_menu->setAlternateColors(value);
pie_menu->update();
/** Load theme */
QObject::connect(ui->loadTheme, &QPushButton::clicked, this, [&](bool) {
QFileDialog fd;
fd.setOptions(QFileDialog::DontUseNativeDialog | QFileDialog::ReadOnly);
fd.exec();

QString filename = fd.selectedFiles().at(0);
qDebug()<< filename;
loadTheme(QFile(filename));
});
/** About QT And Theme */
QObject::connect(ui->aboutQt, SIGNAL(clicked()), qApp, SLOT(aboutQt()));

QObject::connect(ui->disable_button_checkbox, &QCheckBox::clicked, this, [&](bool value)
{
pie_menu->setButtonEnabled(0, !value);
pie_menu->update();
});
initPieMenu();
loadTheme(QFile(":/settings/black.qss"));
}

void MainWindow::initPieMenu()
Expand All @@ -92,16 +126,18 @@ void MainWindow::initPieMenu()
pie_menu->setCloseButtonIcon(QIcon(":/icons/close-line-icon.png"));
pie_menu->setPinButtonIcon(QIcon(":/icons/pushpin-icon.png"));

pie_menu->setButtonCount(4);
emit this->ui->stroke_width_slider->valueChanged(5);
emit this->ui->button_count_slider->valueChanged(4);
emit this->ui->pieRadiusSlider->valueChanged(50);
emit this->ui->removePinButton->clicked(true);
emit this->ui->closeButtonAsAction->clicked(true);

for (int32_t i = 0; i < 4; i++)
{
for (int32_t i = 0; i < 4; i++) {
pie_menu->setButtonIcon(i, ":/icons/image-line-icon.png");
}

QObject::connect(pie_menu, &PieMenu::buttonClicked, this, [&](uint8_t index)
{
ui->label->setText(QString("You clicked button #%0").arg(index));
QObject::connect(pie_menu, &PieMenu::buttonClicked, this, [&](uint8_t index) {
ui->label->setText(QString("You are clicked button #%0").arg(index));
});
}

Expand All @@ -112,14 +148,28 @@ MainWindow::~MainWindow()

void MainWindow::mouseReleaseEvent(QMouseEvent *event)
{
if (event->button() == Qt::RightButton)
{
if (event->button() == Qt::RightButton) {
pie_menu->display();
}
else
{
else {
pie_menu->hideIfNotPinned();
}

QMainWindow::mouseReleaseEvent(event);
}

void MainWindow::loadTheme(QFile file)
{
if (file.exists()) {
file.open(QIODevice::ReadOnly | QIODevice::Text);

QTextStream instream(& file);
QString style;
while (!instream.atEnd()) {
style = instream.readAll();
}
this->setStyleSheet(style);
}
}


5 changes: 4 additions & 1 deletion MainWindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#define MAINWINDOW_H

#include <QMainWindow>
#include <QFile>
#include <PieMenu.h>

QT_BEGIN_NAMESPACE
Expand All @@ -35,7 +36,9 @@ class MainWindow : public QMainWindow

/// \brief Default destructor for the main window
~MainWindow(void) override;


void loadTheme(QFile file);

protected:
/// \brief Overridden event handler to open the pie menu
/// \param event: Pointer to the mouse event
Expand Down
Loading