Skip to content

New year + easySkinsMechanism for anyHolidays #141

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 13 commits into from
Dec 9, 2024
Merged
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 common_utils/common_utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include <iostream>
#include <fstream>
#include <algorithm>
#include <stdint.h>
//#STOP_GRAB_TO_INCLUDES_LIST

namespace dvs {
Expand Down
7 changes: 2 additions & 5 deletions gui/animated_button.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ void AnimatedButton::leaveEvent(QEvent* event) {
}

void AnimatedButton::animateButtonPress() {

m_originalGeometry = geometry();
QPropertyAnimation* animation = new QPropertyAnimation(this, "geometry");
animation->setDuration(100);
animation->setStartValue(geometry());
Expand All @@ -59,11 +61,6 @@ void AnimatedButton::animateButtonRelease() {
animation->start(QAbstractAnimation::DeleteWhenStopped);
}


void AnimatedButton::setOriginalGeometry(const QRect& newOriginalGeometry) {
m_originalGeometry = newOriginalGeometry;
}

QColor AnimatedButton::backgroundColor() const {
return m_backgroundColor;
}
Expand Down
2 changes: 0 additions & 2 deletions gui/animated_button.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,6 @@ class AnimatedButton : public QPushButton {
public:
AnimatedButton(const QString& text, QColor startColor, QColor endColor, QWidget* parent = nullptr);

void setOriginalGeometry(const QRect& newOriginalGeometry);

QColor backgroundColor() const;

void setBackgroundColor(const QColor& color);
Expand Down
166 changes: 139 additions & 27 deletions gui/davis_gui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,10 @@
#include <QProcess>
#include <QProgressBar>
#include <QTimer>
#include <QDate>
#include <QtConcurrent/QtConcurrent>
#include <QScreen>
#include <QMovie>
#include "json_utils.h"


Expand All @@ -38,6 +40,7 @@ DavisGUI::DavisGUI(QWidget* parent)
ui->setupUi(this);
isAboutWindowShowed = false;
m_isMinStyleWindow = false;
m_skin = checkSkin();
this->setAcceptDrops(true);
QHBoxLayout* hbl = ui->horizontalLayout_menu;

Expand All @@ -53,8 +56,13 @@ DavisGUI::DavisGUI(QWidget* parent)
" background-color: transparent;"
" font-size: 13px;"
"}"
"QMenuBar:hover {"
"QMenuBar::item {"
" background-color: transparent;"
" height: 20px;" // Set a fixed height
"}"
"QMenuBar::item:selected {"
" background-color: rgb(42, 130, 218);"
" height: 20px;" // Ensure the height remains the same on hover
"}"
);
QMenu* menu_root = new QMenu("Menu");
Expand Down Expand Up @@ -105,10 +113,11 @@ DavisGUI::DavisGUI(QWidget* parent)
qpbMinMaxSize->setToolTip("Full/compact size");
connect(qpbMinMaxSize, &QPushButton::clicked, [this]() {
m_isMinStyleWindow = !m_isMinStyleWindow;
if (m_isMinStyleWindow)
if (m_isMinStyleWindow) {
setMinStyleWindow(ANIMATION_DURATION);
else
} else {
setMaxStyleWindow(ANIMATION_DURATION);
}
});
qpbMinMaxSize->setFixedSize(QSize(25, 25));
qpbMinMaxSize->setText("◰");
Expand Down Expand Up @@ -150,19 +159,31 @@ DavisGUI::DavisGUI(QWidget* parent)
connect(this, &DavisGUI::hideProgressBar, barCool, &coolProgressBar::stopAnimation);

qpbOpen = new AnimatedButton("Open", QColor(120, 120, 120), QColor(42, 130, 218), this);
qpbOpen->setGeometry(65, 180, 90, 30);
qpbOpen->setOriginalGeometry(qpbOpen->geometry());
//qpbOpen->setGeometry(65, 180, 90, 30);

qpbBuffer = new AnimatedButton("Copy from buffer or Ctrl+V",
QColor(120, 120, 120),
QColor(42, 130, 218),
this);
qpbBuffer->setGeometry(165, 180, 170, 30);
qpbBuffer->setOriginalGeometry(qpbBuffer->geometry());
//qpbBuffer->setGeometry(165, 180, 170, 30);

connect(qpbOpen, &QPushButton::released, this, &DavisGUI::selectAndShowFiles);
connect(qpbBuffer, &QPushButton::released, this, &DavisGUI::pasteFromClipboard);




// New Year
QString fileGifPath = ":/res/newYear.gif";
QMovie* movie = new QMovie(fileGifPath);
label_gif = new QLabel(this);
label_gif->setMovie(movie);
label_gif->setScaledContents(true);
movie->start();
label_gif->setGeometry(0, 28, 397, 380);
label_gif->lower();
label_gif->setVisible(false);

settingsFilePath = "settings.json";
QJsonObject settings = loadSettings(settingsFilePath);
applySettings(settings);
Expand Down Expand Up @@ -278,14 +299,28 @@ void DavisGUI::readJsonToPlot(const QString& pathToFile) {

}

Skins DavisGUI::checkSkin() {
Skins skin;
QDate currentDate = QDate::currentDate();
if ((currentDate.month() == 12 && currentDate.day() >= 15)
|| (currentDate.month() == 1 && currentDate.day() <= 15)) {
skin = Skins::NEWYEAR;
} else {
skin = Skins::DEFAULT;
}
return skin;
}

void DavisGUI::setMaxStyleWindow(int animDuration) {
m_isMinStyleWindow = false;
hideElementsDuringResize();

QPropertyAnimation* animationFrame = new QPropertyAnimation(ui->frame_panel, "geometry");
animationFrame->setEasingCurve(QEasingCurve::InOutQuad);
animationFrame->setDuration(animDuration);
animationFrame->setStartValue(ui->frame_panel->geometry());
animationFrame->setEndValue(QRect(0, 0, 397, 25));

QPropertyAnimation* animation = new QPropertyAnimation(this, "geometry");
animation->setDuration(animDuration);
animation->setEasingCurve(QEasingCurve::InOutQuad);
Expand All @@ -296,19 +331,19 @@ void DavisGUI::setMaxStyleWindow(int animDuration) {
int newHeight = 370;
int deltaW = newWidth - this->geometry().width();
animation->setEndValue(QRect(xOld - deltaW, yOld, newWidth, newHeight));

connect(animation, &QPropertyAnimation::finished, this, [this]() {
ui->label_doc->setVisible(true);
ui->label_arrow->setVisible(true);
ui->label_graph->setVisible(true);
ui->label_text->setVisible(true);
ui->frame_panel->setVisible(true);
qpbBuffer->setVisible(true);
qpbOpen->setVisible(true);
ui->label_doc->setGeometry(90, 60, 91, 91);
ui->label_arrow->setGeometry(170, 90, 50, 50);
ui->label_graph->setGeometry(210, 70, 81, 81);
ui->label_text->setGeometry(0, 230, 391, 111);
barCool->setGeometry(97, 155, 187, 2);
switch (m_skin) {
case Skins::DEFAULT:
setGeometryForMaxStyle_defaultSkin();
break;
case Skins::NEWYEAR:
setGeometryForMaxStyle_newYearSkin();
break;
default:
setGeometryForMaxStyle_defaultSkin();
break;
}
update();
});

Expand Down Expand Up @@ -340,22 +375,88 @@ void DavisGUI::setMinStyleWindow(int animDuration) {
animationFrame->setEndValue(QRect(0, 0, newWidth, 25));

connect(animation, &QPropertyAnimation::finished, this, [this]() {
ui->label_doc->setVisible(true);
ui->label_arrow->setVisible(true);
ui->label_graph->setVisible(true);
ui->frame_panel->setVisible(true);
ui->label_doc->setGeometry(40, 60, 41, 41);
ui->label_arrow->setGeometry(70, 60, 41, 41);
ui->label_graph->setGeometry(100, 60, 41, 41);
barCool->setGeometry(45, 105, 90, 2);
switch (m_skin) {
case Skins::DEFAULT:
setGeometryForMinStyle_defaultSkin();
break;
case Skins::NEWYEAR:
setGeometryForMinStyle_newYearSkin();
break;
default:
setGeometryForMinStyle_defaultSkin();
break;
}
update();
});

QParallelAnimationGroup* group = new QParallelAnimationGroup;
group->addAnimation(animation);
group->addAnimation(animationFrame);
group->start();
}

void DavisGUI::setGeometryForMaxStyle_defaultSkin() {
label_gif->setVisible(false);
label_gif->movie()->stop();
ui->label_doc->setVisible(true);
ui->label_arrow->setVisible(true);
ui->label_graph->setVisible(true);
ui->label_text->setVisible(true);
ui->frame_panel->setVisible(true);
qpbBuffer->setVisible(true);
qpbOpen->setVisible(true);
ui->label_doc->setGeometry(90, 60, 91, 91);
ui->label_arrow->setGeometry(170, 90, 50, 50);
ui->label_graph->setGeometry(210, 70, 81, 81);
ui->label_text->setGeometry(0, 230, 391, 111);
barCool->setGeometry(97, 155, 187, 2);
qpbOpen->setGeometry(65, 180, 90, 30);
qpbBuffer->setGeometry(165, 180, 170, 30);
}

void DavisGUI::setGeometryForMinStyle_defaultSkin() {
label_gif->setVisible(false);
label_gif->movie()->stop();
ui->label_doc->setVisible(true);
ui->label_arrow->setVisible(true);
ui->label_graph->setVisible(true);
ui->frame_panel->setVisible(true);
ui->label_doc->setGeometry(40, 60, 41, 41);
ui->label_arrow->setGeometry(70, 60, 41, 41);
ui->label_graph->setGeometry(100, 60, 41, 41);
barCool->setGeometry(45, 105, 90, 2);
}

void DavisGUI::setGeometryForMaxStyle_newYearSkin() {
label_gif->setVisible(true);
label_gif->movie()->start();
ui->label_doc->setVisible(false);
ui->label_arrow->setVisible(false);
ui->label_graph->setVisible(false);
ui->label_text->setVisible(false);
ui->frame_panel->setVisible(true);
qpbBuffer->setVisible(true);
qpbOpen->setVisible(true);
barCool->setGeometry(97, 367, 187, 2);
qpbOpen->setGeometry(65, 335, 90, 30);
qpbBuffer->setGeometry(165, 335, 170, 30);
label_gif->setGeometry(0, 28, 397, 380);
}

void DavisGUI::setGeometryForMinStyle_newYearSkin() {
label_gif->setVisible(true);
label_gif->movie()->start();
ui->label_doc->setVisible(false);
ui->label_arrow->setVisible(false);
ui->label_graph->setVisible(false);
ui->frame_panel->setVisible(true);
ui->label_doc->setGeometry(40, 60, 41, 41);
ui->label_arrow->setGeometry(70, 60, 41, 41);
ui->label_graph->setGeometry(100, 60, 41, 41);
barCool->setGeometry(45, 105, 90, 2);
label_gif->setGeometry(0, 28, 179, 155);
}

void DavisGUI::showAboutWindow() {
if (isAboutWindowShowed) {
delete aboutWindow;
Expand Down Expand Up @@ -779,6 +880,17 @@ void DavisGUI::mouseMoveEvent(QMouseEvent* event) {
void DavisGUI::keyPressEvent(QKeyEvent* event) {
if (event->modifiers() == Qt::ControlModifier && event->key() == Qt::Key_V) {
pasteFromClipboard();
} else if (event->modifiers() == Qt::ControlModifier && event->key() == Qt::Key_1) {
if (m_skin == Skins::DEFAULT) {
m_skin = Skins::NEWYEAR;
} else {
m_skin = Skins::DEFAULT;
}
if (m_isMinStyleWindow) {
setMinStyleWindow(0);
} else {
setMaxStyleWindow(0);
}
} else {
QMainWindow::keyPressEvent(event);
}
Expand Down
23 changes: 19 additions & 4 deletions gui/davis_gui.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,24 @@
#define DAVISGUI_H

#include <QMainWindow>
#include "about_window.h"
#include "QAction"
#include "animated_button.h"
#include <QAction>
#include <QJsonObject>
#include "QJsonArray"
#include <QJsonArray>
#include <QLabel>

#include "cool_progressbar.h"
#include "about_window.h"
#include "animated_button.h"

QT_BEGIN_NAMESPACE
namespace Ui { class DavisGUI; }
QT_END_NAMESPACE


enum class Skins {DEFAULT, NEWYEAR};



class DavisGUI : public QMainWindow {
Q_OBJECT

Expand All @@ -36,6 +43,10 @@ class DavisGUI : public QMainWindow {
private:
void setMaxStyleWindow(int animDuration);
void setMinStyleWindow(int animDuration);
void setGeometryForMaxStyle_defaultSkin();
void setGeometryForMinStyle_defaultSkin();
void setGeometryForMaxStyle_newYearSkin();
void setGeometryForMinStyle_newYearSkin();
void readPlotText(QStringList& str_lines, QString title = "");
void selectAndShowFiles();
bool checkDateTimeVariant(const QStringList& lines);
Expand All @@ -48,6 +59,8 @@ class DavisGUI : public QMainWindow {
QJsonObject loadSettings(const QString& fileName);
void applySettings(const QJsonObject& settings);
void readJsonToPlot(const QString& pathToFile);
Skins checkSkin();


private slots:
void showAboutWindow();
Expand All @@ -67,6 +80,8 @@ class DavisGUI : public QMainWindow {
QString settingsFilePath;
QJsonArray service_json_keys;
coolProgressBar* barCool;
QLabel* label_gif;
Skins m_skin;

};
#endif // DAVISGUI_H
1 change: 1 addition & 0 deletions gui/res.qrc
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@
<file>keys.json</file>
<file>user_keys_list.json</file>
<file>res/icon/D-16x16.png</file>
<file>res/newYear.gif</file>
</qresource>
</RCC>
Binary file added gui/res/newYear.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading