From dfd9ecf23d3d4f0661d46aba677fa803a75f7500 Mon Sep 17 00:00:00 2001 From: Florent Berbie Date: Thu, 9 Apr 2015 21:42:13 +0200 Subject: [PATCH 1/8] Add EasterEgg widget #147 --- documents/LaTexTemplate | 2 +- fact-team.github.io | 2 +- src/gui/widgets/coffeeeastereggwidget.cpp | 14 +++++ src/gui/widgets/coffeeeastereggwidget.h | 22 ++++++++ src/gui/widgets/coffeeeastereggwidget.ui | 67 +++++++++++++++++++++++ src/src.pro | 9 ++- 6 files changed, 111 insertions(+), 5 deletions(-) create mode 100644 src/gui/widgets/coffeeeastereggwidget.cpp create mode 100644 src/gui/widgets/coffeeeastereggwidget.h create mode 100644 src/gui/widgets/coffeeeastereggwidget.ui diff --git a/documents/LaTexTemplate b/documents/LaTexTemplate index 59e0e74..5c18e6e 160000 --- a/documents/LaTexTemplate +++ b/documents/LaTexTemplate @@ -1 +1 @@ -Subproject commit 59e0e744832005315f5572cbfce69adf6ae313a7 +Subproject commit 5c18e6e55e09a899cc44aa7db8d4ae8c98824376 diff --git a/fact-team.github.io b/fact-team.github.io index 91c6818..559cd1f 160000 --- a/fact-team.github.io +++ b/fact-team.github.io @@ -1 +1 @@ -Subproject commit 91c68182b6b51ce4867ae81c37d4b14d98241708 +Subproject commit 559cd1f57b7970aa658f373568617ffc7a572858 diff --git a/src/gui/widgets/coffeeeastereggwidget.cpp b/src/gui/widgets/coffeeeastereggwidget.cpp new file mode 100644 index 0000000..42a8c51 --- /dev/null +++ b/src/gui/widgets/coffeeeastereggwidget.cpp @@ -0,0 +1,14 @@ +#include "coffeeeastereggwidget.h" +#include "ui_coffeeeastereggwidget.h" + +CoffeeEasterEggWidget::CoffeeEasterEggWidget(QWidget *parent) : + QWidget(parent), + ui(new Ui::CoffeeEasterEggWidget) +{ + ui->setupUi(this); +} + +CoffeeEasterEggWidget::~CoffeeEasterEggWidget() +{ + delete ui; +} diff --git a/src/gui/widgets/coffeeeastereggwidget.h b/src/gui/widgets/coffeeeastereggwidget.h new file mode 100644 index 0000000..0c7c7df --- /dev/null +++ b/src/gui/widgets/coffeeeastereggwidget.h @@ -0,0 +1,22 @@ +#ifndef COFFEEEASTEREGGWIDGET_H +#define COFFEEEASTEREGGWIDGET_H + +#include + +namespace Ui { +class CoffeeEasterEggWidget; +} + +class CoffeeEasterEggWidget : public QWidget +{ + Q_OBJECT + +public: + explicit CoffeeEasterEggWidget(QWidget *parent = 0); + ~CoffeeEasterEggWidget(); + +private: + Ui::CoffeeEasterEggWidget *ui; +}; + +#endif // COFFEEEASTEREGGWIDGET_H diff --git a/src/gui/widgets/coffeeeastereggwidget.ui b/src/gui/widgets/coffeeeastereggwidget.ui new file mode 100644 index 0000000..4b6ddd8 --- /dev/null +++ b/src/gui/widgets/coffeeeastereggwidget.ui @@ -0,0 +1,67 @@ + + + CoffeeEasterEggWidget + + + + 0 + 0 + 274 + 355 + + + + Form + + + + + + TextLabel + + + + + + + + 256 + 256 + + + + + 256 + 256 + + + + TextLabel + + + + + + + PushButton + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + diff --git a/src/src.pro b/src/src.pro index 374aee0..a1236fe 100644 --- a/src/src.pro +++ b/src/src.pro @@ -106,7 +106,8 @@ SOURCES += gui/mainwindow/mainwindow.cpp \ models/unit.cpp \ models/calculable.cpp \ utils/double.cpp \ - gui/widgets/userdailyhourswidget.cpp + gui/widgets/userdailyhourswidget.cpp \ + gui/widgets/coffeeeastereggwidget.cpp HEADERS += gui/mainwindow/mainwindow.h \ utils/log.h\ @@ -226,7 +227,8 @@ HEADERS += gui/mainwindow/mainwindow.h \ gui/dialogs/statisticsdialog.h \ models/unit.h \ models/calculable.h \ - gui/widgets/userdailyhourswidget.h + gui/widgets/userdailyhourswidget.h \ + gui/widgets/coffeeeastereggwidget.h FORMS += gui/mainwindow/mainwindow.ui \ @@ -249,7 +251,8 @@ FORMS += gui/mainwindow/mainwindow.ui \ gui/widgets/browseimagewidget.ui\ gui/widgets/path/chosepathwidget.ui\ gui/dialogs/statisticsdialog.ui \ - gui/widgets/userdailyhourswidget.ui + gui/widgets/userdailyhourswidget.ui \ + gui/widgets/coffeeeastereggwidget.ui RESOURCES += \ icons.qrc \ From 284177084d11cff7713086579a6bec87ee9191bc Mon Sep 17 00:00:00 2001 From: Florent Berbie Date: Thu, 9 Apr 2015 22:39:51 +0200 Subject: [PATCH 2/8] Add methods to EasterEgg --- src/gui/utils/image.cpp | 8 ++ src/gui/utils/image.h | 12 +++ src/gui/widgets/coffeeeastereggwidget.cpp | 125 ++++++++++++++++++++++ src/gui/widgets/coffeeeastereggwidget.h | 30 ++++++ src/gui/widgets/coffeeeastereggwidget.ui | 40 +++++-- 5 files changed, 207 insertions(+), 8 deletions(-) diff --git a/src/gui/utils/image.cpp b/src/gui/utils/image.cpp index 1e8ccac..e5c46d4 100644 --- a/src/gui/utils/image.cpp +++ b/src/gui/utils/image.cpp @@ -18,6 +18,14 @@ QPixmap Image::bytesToPixmap(const QByteArray bytes) return QPixmap::fromImage(QImage::fromData(bytes)); } +QPixmap Image::getImage(QString path, int width, int height) +{ + QPixmap img(path); + img.scaled(width,height,Qt::KeepAspectRatio); + + return img; +} + QByteArray Image::imageToBytes(QImage image, const QString ext) { QByteArray bytesArray; QByteArray extArray = ext.toLocal8Bit(); diff --git a/src/gui/utils/image.h b/src/gui/utils/image.h index e0af535..e2f4152 100644 --- a/src/gui/utils/image.h +++ b/src/gui/utils/image.h @@ -44,6 +44,18 @@ class Image * @return QPixmap from bytes */ static QPixmap bytesToPixmap(const QByteArray bytes); + + /** + * @brief Image::getImage Return a scaled image from the + * icon specified by it path. The image returned has a resolution of + * width*height (default 256*256) + * @param path Icon path + * @param width Icon width + * @param height Icon height + * @return Scaled image + */ + static QPixmap getImage(QString path, int width = 256, int height = 256); + }; } diff --git a/src/gui/widgets/coffeeeastereggwidget.cpp b/src/gui/widgets/coffeeeastereggwidget.cpp index 42a8c51..e34aaf6 100644 --- a/src/gui/widgets/coffeeeastereggwidget.cpp +++ b/src/gui/widgets/coffeeeastereggwidget.cpp @@ -1,14 +1,139 @@ #include "coffeeeastereggwidget.h" #include "ui_coffeeeastereggwidget.h" +namespace Gui { +namespace Widgets { CoffeeEasterEggWidget::CoffeeEasterEggWidget(QWidget *parent) : QWidget(parent), ui(new Ui::CoffeeEasterEggWidget) { ui->setupUi(this); + setupUI(); } CoffeeEasterEggWidget::~CoffeeEasterEggWidget() { delete ui; } + +void CoffeeEasterEggWidget::setupUI() { + _state = 0; + _drinked = 0; + ui->lbCoffee->setPixmap( + Gui::Utils::Image::getImage(":/icons/img/coffee_level0.png")); + ui->lbScreenControl->setText("

" + "Pour bien bosser, il faut du café!" + "

"); + ui->btnCoffeeMaker->setText("Faire le café !"); + ui->btnCoffeeMaker->setEnabled(true); + /* + ":/icons/img/coffee_level0.png" + ":/icons/img/coffee_level1.png" + ":/icons/img/coffee_level2.png" + ":/icons/img/coffee_level3.png" + ":/icons/img/coffee_level4.png" + ":/icons/img/coffee_ready.png" + */ +} + +void CoffeeEasterEggWidget::makeCoffeeInProgress() +{ + QTimer *timer = new QTimer(this); + connect(timer, SIGNAL(timeout()), this, SLOT(nextState())); + timer->start(1000); + +} + +void CoffeeEasterEggWidget::makeCoffeeFirstStep() { + _state = 1; + ui->lbCoffee->setPixmap( + Gui::Utils::Image::getImage(":/icons/img/coffee_level1.png")); + ui->lbScreenControl->setText("

" + "Chauffage de l'eau..." + "

"); + ui->btnCoffeeMaker->setText("Faire le café !"); + ui->btnCoffeeMaker->setEnabled(false); +} + +void CoffeeEasterEggWidget::makeCoffeeSecondStep() { + _state = 2; + ui->lbCoffee->setPixmap( + Gui::Utils::Image::getImage(":/icons/img/coffee_level2.png")); + ui->lbScreenControl->setText("

" + "En train de moudre le café..." + "

"); + ui->btnCoffeeMaker->setText("Faire le café !"); + ui->btnCoffeeMaker->setEnabled(false); +} + +void CoffeeEasterEggWidget::makeCoffeeThirdStep() { + _state = 3; + ui->lbCoffee->setPixmap( + Gui::Utils::Image::getImage(":/icons/img/coffee_level3.png")); + ui->lbScreenControl->setText("

" + "Préparation du café" + "

"); + ui->btnCoffeeMaker->setText("Faire le café !"); + ui->btnCoffeeMaker->setEnabled(false); +} + +void CoffeeEasterEggWidget::makeCoffeeFourthStep() { + _state = 4; + ui->lbCoffee->setPixmap( + Gui::Utils::Image::getImage(":/icons/img/coffee_level4.png")); + ui->lbScreenControl->setText("

" + "Préparation du café..." + "

"); + ui->btnCoffeeMaker->setText("Faire le café !"); + ui->btnCoffeeMaker->setEnabled(false); +} + +void CoffeeEasterEggWidget::makeCoffeeReadyStep() { + _state = 5; + if (!isDrinked()) { + ui->lbCoffee->setPixmap( + Gui::Utils::Image::getImage(":/icons/img/coffee_ready.png")); + ui->lbScreenControl->setText("

" + "Café prêt :)" + "

"); + ui->btnCoffeeMaker->setText("Faire le café !"); + ui->btnCoffeeMaker->setEnabled(false); + _drinked++; + } else { + setupUI(); + } + +} + +bool CoffeeEasterEggWidget::isDrinked() { + return _drinked == 3; +} + +void CoffeeEasterEggWidget::nextState() { + switch(_state) { + case 0: + setupUI(); + break; + case 1: + makeCoffeeFirstStep(); + break; + case 2: + makeCoffeeSecondStep(); + break; + case 3: + makeCoffeeThirdStep(); + break; + case 4: + makeCoffeeFourthStep(); + break; + case 5: + makeCoffeeReadyStep(); + break; + default: + setupUI(); + } +} + + +} +} diff --git a/src/gui/widgets/coffeeeastereggwidget.h b/src/gui/widgets/coffeeeastereggwidget.h index 0c7c7df..02c53d3 100644 --- a/src/gui/widgets/coffeeeastereggwidget.h +++ b/src/gui/widgets/coffeeeastereggwidget.h @@ -2,21 +2,51 @@ #define COFFEEEASTEREGGWIDGET_H #include +#include +#include "gui/utils/image.h" namespace Ui { class CoffeeEasterEggWidget; } +namespace Gui { +namespace Widgets { + +/** + * @brief The CoffeeEasterEggWidget class + */ class CoffeeEasterEggWidget : public QWidget { Q_OBJECT public: + /** + * @brief CoffeeEasterEggWidget + * @param parent + */ explicit CoffeeEasterEggWidget(QWidget *parent = 0); ~CoffeeEasterEggWidget(); + void setupUI(); + + void makeCoffeeInProgress(); + + void makeCoffeeFirstStep(); + void makeCoffeeSecondStep(); + void makeCoffeeThirdStep(); + void makeCoffeeFourthStep(); + void makeCoffeeReadyStep(); + bool isDrinked(); + +public slots: + void nextState(); private: Ui::CoffeeEasterEggWidget *ui; + int _state; + int _drinked; + }; +} +} #endif // COFFEEEASTEREGGWIDGET_H diff --git a/src/gui/widgets/coffeeeastereggwidget.ui b/src/gui/widgets/coffeeeastereggwidget.ui index 4b6ddd8..e175420 100644 --- a/src/gui/widgets/coffeeeastereggwidget.ui +++ b/src/gui/widgets/coffeeeastereggwidget.ui @@ -7,7 +7,7 @@ 0 0 274 - 355 + 364 @@ -15,14 +15,29 @@ - + + + + 0 + 48 + + + + + 16777215 + 72 + + + + QFrame::StyledPanel + - TextLabel + <html><head/><body><p align="center">Pour bien bosser, il faut du café!</p></body></html> - + 256 @@ -36,14 +51,21 @@ - TextLabel + + + + true - + - PushButton + Faire le café ! + + + + :/icons/img/coffee_ready.png:/icons/img/coffee_ready.png @@ -62,6 +84,8 @@ - + + + From 1ce535e15f5fd658ee1729db05fe7ddf36dfdbbe Mon Sep 17 00:00:00 2001 From: Florent Berbie Date: Thu, 9 Apr 2015 23:04:23 +0200 Subject: [PATCH 3/8] Change mainWindow #147 --- src/gui/mainwindow/mainwindow.cpp | 44 +++++++++++----- src/gui/mainwindow/mainwindow.h | 12 +++++ src/gui/mainwindow/mainwindow.ui | 63 ++++++++++++++++++++++- src/gui/widgets/coffeeeastereggwidget.cpp | 3 +- src/gui/widgets/coffeeeastereggwidget.h | 3 +- src/gui/widgets/coffeeeastereggwidget.ui | 22 +++++++- 6 files changed, 129 insertions(+), 18 deletions(-) diff --git a/src/gui/mainwindow/mainwindow.cpp b/src/gui/mainwindow/mainwindow.cpp index 7eaabe6..7e789bb 100644 --- a/src/gui/mainwindow/mainwindow.cpp +++ b/src/gui/mainwindow/mainwindow.cpp @@ -237,6 +237,10 @@ void MainWindow::responsiveBillingTable() } } +bool MainWindow::isEasterEgg(const QString filter) { + return filter == "FleuryMigeon42"; +} + void MainWindow::billingIsPaid() @@ -576,6 +580,11 @@ void MainWindow::changeDocsTable() updateButtons(); } +void MainWindow::changeEasterEgg() +{ + ui->stackedWidget->setCurrentIndex(3); +} + void MainWindow::customersTableToProjectsTable() { updateTableProjects(getCurrentCustomerId()); @@ -685,15 +694,22 @@ void MainWindow::openContextualMenuTree(const QPoint point) void MainWindow::updateTableCustomers(QString filter, const int row) { - ui->tblCustomers->setModel( - Databases::CustomerDatabase::instance()->getCustomersTable(filter)); + if (!isEasterEgg(filter)) { + ui->tblCustomers->setModel( + Databases::CustomerDatabase::instance()->getCustomersTable(filter)); - if (row > -1) { - ui->tblCustomers->selectRow(row); + if (row > -1) { + ui->tblCustomers->selectRow(row); + } else { + ui->tblCustomers->clearSelection(); + } + responsiveCustomerTable(); } else { - ui->tblCustomers->clearSelection(); + + qDebug() << "test"; + changeEasterEgg(); } - responsiveCustomerTable(); + } void MainWindow::updateTableProjects(const int pId, const int row) @@ -744,13 +760,17 @@ void MainWindow::updateCostAndTurnover() ui->tblCustomers->currentIndex().row()); } -void MainWindow::updateTree(QString filter) -{ - if (ui->trCustomers->model() != NULL) { - delete ui->trCustomers->model(); +void MainWindow::updateTree(QString filter) { + if (!isEasterEgg(filter)) { + if (ui->trCustomers->model() != NULL) { + delete ui->trCustomers->model(); + } + ui->trCustomers->setModel( + Databases::CustomerDatabase::instance()->getTree(filter)); + } else { + changeEasterEgg(); } - ui->trCustomers->setModel( - Databases::CustomerDatabase::instance()->getTree(filter)); + } void MainWindow::updateButtons() diff --git a/src/gui/mainwindow/mainwindow.h b/src/gui/mainwindow/mainwindow.h index 65f0c3e..849d11c 100644 --- a/src/gui/mainwindow/mainwindow.h +++ b/src/gui/mainwindow/mainwindow.h @@ -135,6 +135,13 @@ class MainWindow : public QMainWindow */ void responsiveBillingTable(); + /** + * @brief MainWindow::isEasterEgg Return TRUE if search filter is + * FleuryMigeon42 else FALSE + * @param filter Search filter + * @return boolean + */ + bool isEasterEgg(const QString filter); public slots: /** * @brief MainWindow::addCustomer open window to add a new customer @@ -286,6 +293,11 @@ private slots: * when we change the selected doc in tblQuotes */ void changeDocsTable(); + /** + * @brief MainWindow::changeEasterEgg function to update the view + * when we change the selected dock in easter egg + */ + void changeEasterEgg(); /** * @brief MainWindow::customersTableToProjectsTable changes projects with * the index diff --git a/src/gui/mainwindow/mainwindow.ui b/src/gui/mainwindow/mainwindow.ui index b1d9564..882fdd4 100644 --- a/src/gui/mainwindow/mainwindow.ui +++ b/src/gui/mainwindow/mainwindow.ui @@ -22,7 +22,7 @@ - 0 + 3 @@ -387,6 +387,59 @@ + + + + + + + 400 + 400 + + + + + + + + Qt::Horizontal + + + + 206 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + @@ -397,7 +450,7 @@ 0 0 1413 - 27 + 20 @@ -796,6 +849,12 @@ lockProject() + + Gui::Widgets::CoffeeEasterEggWidget + QWidget +
gui/widgets/coffeeeastereggwidget.h
+ 1 +
diff --git a/src/gui/widgets/coffeeeastereggwidget.cpp b/src/gui/widgets/coffeeeastereggwidget.cpp index e34aaf6..b2cc437 100644 --- a/src/gui/widgets/coffeeeastereggwidget.cpp +++ b/src/gui/widgets/coffeeeastereggwidget.cpp @@ -36,8 +36,7 @@ void CoffeeEasterEggWidget::setupUI() { */ } -void CoffeeEasterEggWidget::makeCoffeeInProgress() -{ +void CoffeeEasterEggWidget::makeCoffeeInProgress() { QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(nextState())); timer->start(1000); diff --git a/src/gui/widgets/coffeeeastereggwidget.h b/src/gui/widgets/coffeeeastereggwidget.h index 02c53d3..fbad954 100644 --- a/src/gui/widgets/coffeeeastereggwidget.h +++ b/src/gui/widgets/coffeeeastereggwidget.h @@ -29,7 +29,7 @@ class CoffeeEasterEggWidget : public QWidget void setupUI(); - void makeCoffeeInProgress(); + void makeCoffeeFirstStep(); void makeCoffeeSecondStep(); @@ -39,6 +39,7 @@ class CoffeeEasterEggWidget : public QWidget bool isDrinked(); public slots: + void makeCoffeeInProgress(); void nextState(); private: Ui::CoffeeEasterEggWidget *ui; diff --git a/src/gui/widgets/coffeeeastereggwidget.ui b/src/gui/widgets/coffeeeastereggwidget.ui index e175420..dab59b7 100644 --- a/src/gui/widgets/coffeeeastereggwidget.ui +++ b/src/gui/widgets/coffeeeastereggwidget.ui @@ -87,5 +87,25 @@ - + + + btnCoffeeMaker + clicked() + CoffeeEasterEggWidget + makeCoffeeInProgress() + + + 209 + 347 + + + 544 + 341 + + + + + + makeCoffeeInProgress() + From 0cef8e680667931b3b901910804e9f9cf1f6c04d Mon Sep 17 00:00:00 2001 From: Florent Berbie Date: Thu, 9 Apr 2015 23:20:24 +0200 Subject: [PATCH 4/8] Add documentation on easter eg widget #147 --- src/gui/widgets/coffeeeastereggwidget.cpp | 8 --- src/gui/widgets/coffeeeastereggwidget.h | 59 +++++++++++++++++++---- 2 files changed, 50 insertions(+), 17 deletions(-) diff --git a/src/gui/widgets/coffeeeastereggwidget.cpp b/src/gui/widgets/coffeeeastereggwidget.cpp index b2cc437..f47d9e2 100644 --- a/src/gui/widgets/coffeeeastereggwidget.cpp +++ b/src/gui/widgets/coffeeeastereggwidget.cpp @@ -26,14 +26,6 @@ void CoffeeEasterEggWidget::setupUI() { "

"); ui->btnCoffeeMaker->setText("Faire le café !"); ui->btnCoffeeMaker->setEnabled(true); - /* - ":/icons/img/coffee_level0.png" - ":/icons/img/coffee_level1.png" - ":/icons/img/coffee_level2.png" - ":/icons/img/coffee_level3.png" - ":/icons/img/coffee_level4.png" - ":/icons/img/coffee_ready.png" - */ } void CoffeeEasterEggWidget::makeCoffeeInProgress() { diff --git a/src/gui/widgets/coffeeeastereggwidget.h b/src/gui/widgets/coffeeeastereggwidget.h index fbad954..7e00a98 100644 --- a/src/gui/widgets/coffeeeastereggwidget.h +++ b/src/gui/widgets/coffeeeastereggwidget.h @@ -13,7 +13,9 @@ namespace Gui { namespace Widgets { /** - * @brief The CoffeeEasterEggWidget class + * @author Florent Berbie + * @brief The CoffeeEasterEggWidget class Easter egg class because we need + * coffee */ class CoffeeEasterEggWidget : public QWidget { @@ -21,31 +23,70 @@ class CoffeeEasterEggWidget : public QWidget public: /** - * @brief CoffeeEasterEggWidget - * @param parent + * @brief CoffeeEasterEggWidget::CoffeeEasterEggWidget Construct a + * CoffeeEasterEggWidget + * @param parent QWidget parent */ explicit CoffeeEasterEggWidget(QWidget *parent = 0); ~CoffeeEasterEggWidget(); + /** + * @brief CoffeeEasterEggWidget::setupUI Init user interface + */ void setupUI(); - - + /** + * @brief CoffeeEasterEggWidget::makeCoffeeFirstStep First step to make + * coffee + */ void makeCoffeeFirstStep(); + + /** + * @brief CoffeeEasterEggWidget::makeCoffeeSecondStep Second step to make + * coffee + */ void makeCoffeeSecondStep(); + + /** + * @brief CoffeeEasterEggWidget::makeCoffeeThirdStep Third step to make + * coffee + */ void makeCoffeeThirdStep(); + + /** + * @brief CoffeeEasterEggWidget::makeCoffeeFourthStep Fourth step to make + * coffee + */ void makeCoffeeFourthStep(); + + /** + * @brief CoffeeEasterEggWidget::makeCoffeeReadyStep Last step to make + * coffee + */ void makeCoffeeReadyStep(); + + /** + * @brief CoffeeEasterEggWidget::isDrinked Return TRUE if coffee has been + * drinked, else FALSE + * @return boolean + */ bool isDrinked(); public slots: + /** + * @brief CoffeeEasterEggWidget::makeCoffeeInProgress Make Coffee + */ void makeCoffeeInProgress(); + + /** + * @brief CoffeeEasterEggWidget::nextState Go to the next state to make + * coffee + */ void nextState(); private: - Ui::CoffeeEasterEggWidget *ui; - int _state; - int _drinked; - + Ui::CoffeeEasterEggWidget *ui; //!< User interface + int _state; //!< current state to make coffee + int _drinked; //!< coffee has been drinked }; } } From ea79c4f7e7972b2c2673c9c7db6dd923e2b7bbc2 Mon Sep 17 00:00:00 2001 From: Florent Berbie Date: Sat, 11 Apr 2015 12:13:15 +0200 Subject: [PATCH 5/8] Amazing, FactDev is also a coffeeMaker ;) --- src/gui/docks/searchdock.cpp | 10 ++++++++-- src/gui/docks/searchdock.h | 7 +++++++ src/gui/mainwindow/mainwindow.cpp | 4 +--- src/gui/mainwindow/mainwindow.ui | 23 +++++++++++++++++++++-- src/gui/widgets/coffeeeastereggwidget.cpp | 19 +++++++++++++++---- src/gui/widgets/coffeeeastereggwidget.h | 2 ++ 6 files changed, 54 insertions(+), 11 deletions(-) diff --git a/src/gui/docks/searchdock.cpp b/src/gui/docks/searchdock.cpp index 8dc4312..31ac772 100644 --- a/src/gui/docks/searchdock.cpp +++ b/src/gui/docks/searchdock.cpp @@ -3,7 +3,8 @@ namespace Gui { namespace Docks { -SearchDock::SearchDock(QWidget* parent, Qt::WindowFlags flags) : QDockWidget(parent, flags), ui(new Ui::SearchDock) +SearchDock::SearchDock(QWidget* parent, Qt::WindowFlags flags) + : QDockWidget(parent, flags), ui(new Ui::SearchDock) { ui->setupUi(this); @@ -18,6 +19,7 @@ SearchDock::~SearchDock() void SearchDock::search(QString text) { Models::Search s; + _text = text; QString styleSearchBackground = "background: url(:/icons/searchMini);" "background-position: right;" @@ -30,7 +32,7 @@ void SearchDock::search(QString text) "height: 25px;" "border: 1px solid #bbb;"; if(ui->leSearch->text() != "") { - ui->leSearch->setStyleSheet(styleSearchNoBackground); + ui->leSearch->setStyleSheet(styleSearchNoBackground); } else { ui->leSearch->setStyleSheet(styleSearchBackground); } @@ -44,6 +46,10 @@ void SearchDock::search(QString text) emit textChanged(s.getFilter()); } +QString SearchDock::getText() const +{ + return _text; +} } diff --git a/src/gui/docks/searchdock.h b/src/gui/docks/searchdock.h index be44dcf..2d129ce 100644 --- a/src/gui/docks/searchdock.h +++ b/src/gui/docks/searchdock.h @@ -26,6 +26,12 @@ class SearchDock : public QDockWidget explicit SearchDock(QWidget *parent=0, Qt::WindowFlags flags = 0); ~SearchDock(); + /** + * @brief SearchDock::getText Get the current text searched + * @return Text searched + */ + QString getText() const; + public slots: /** * @brief SearchDock::search Search elements in database which correspond @@ -43,6 +49,7 @@ public slots: private: Ui::SearchDock *ui; //!< User interface + QString _text; //!< Search text }; diff --git a/src/gui/mainwindow/mainwindow.cpp b/src/gui/mainwindow/mainwindow.cpp index 7e789bb..2002752 100644 --- a/src/gui/mainwindow/mainwindow.cpp +++ b/src/gui/mainwindow/mainwindow.cpp @@ -238,7 +238,7 @@ void MainWindow::responsiveBillingTable() } bool MainWindow::isEasterEgg(const QString filter) { - return filter == "FleuryMigeon42"; + return _searchDock->getText() == "FleuryMigeon42"; } @@ -705,8 +705,6 @@ void MainWindow::updateTableCustomers(QString filter, const int row) { } responsiveCustomerTable(); } else { - - qDebug() << "test"; changeEasterEgg(); } diff --git a/src/gui/mainwindow/mainwindow.ui b/src/gui/mainwindow/mainwindow.ui index 882fdd4..2c86c7a 100644 --- a/src/gui/mainwindow/mainwindow.ui +++ b/src/gui/mainwindow/mainwindow.ui @@ -7,7 +7,7 @@ 0 0 1413 - 492 + 548 @@ -425,7 +425,7 @@ - + Qt::Vertical @@ -438,6 +438,19 @@ + + + + Qt::Vertical + + + + 20 + 40 + + + +
@@ -596,6 +609,12 @@ 1 + + + 0 + 0 + + 9 diff --git a/src/gui/widgets/coffeeeastereggwidget.cpp b/src/gui/widgets/coffeeeastereggwidget.cpp index f47d9e2..655aac5 100644 --- a/src/gui/widgets/coffeeeastereggwidget.cpp +++ b/src/gui/widgets/coffeeeastereggwidget.cpp @@ -29,9 +29,11 @@ void CoffeeEasterEggWidget::setupUI() { } void CoffeeEasterEggWidget::makeCoffeeInProgress() { - QTimer *timer = new QTimer(this); - connect(timer, SIGNAL(timeout()), this, SLOT(nextState())); - timer->start(1000); + _timer = new QTimer(this); + _state = 1; + connect(_timer, SIGNAL(timeout()), this, SLOT(nextState())); + _timer->start(1000); + qDebug() << "makeCoffeeInProgress"; } @@ -44,6 +46,7 @@ void CoffeeEasterEggWidget::makeCoffeeFirstStep() { "

"); ui->btnCoffeeMaker->setText("Faire le café !"); ui->btnCoffeeMaker->setEnabled(false); + _state = 2; } void CoffeeEasterEggWidget::makeCoffeeSecondStep() { @@ -55,6 +58,7 @@ void CoffeeEasterEggWidget::makeCoffeeSecondStep() { "

"); ui->btnCoffeeMaker->setText("Faire le café !"); ui->btnCoffeeMaker->setEnabled(false); + _state = 3; } void CoffeeEasterEggWidget::makeCoffeeThirdStep() { @@ -66,6 +70,7 @@ void CoffeeEasterEggWidget::makeCoffeeThirdStep() { "

"); ui->btnCoffeeMaker->setText("Faire le café !"); ui->btnCoffeeMaker->setEnabled(false); + _state = 4; } void CoffeeEasterEggWidget::makeCoffeeFourthStep() { @@ -77,6 +82,7 @@ void CoffeeEasterEggWidget::makeCoffeeFourthStep() { "

"); ui->btnCoffeeMaker->setText("Faire le café !"); ui->btnCoffeeMaker->setEnabled(false); + _state = 5; } void CoffeeEasterEggWidget::makeCoffeeReadyStep() { @@ -91,7 +97,10 @@ void CoffeeEasterEggWidget::makeCoffeeReadyStep() { ui->btnCoffeeMaker->setEnabled(false); _drinked++; } else { - setupUI(); + _timer->stop(); + delete _timer; + setupUI(); + } } @@ -101,6 +110,7 @@ bool CoffeeEasterEggWidget::isDrinked() { } void CoffeeEasterEggWidget::nextState() { + qDebug() << "nextState -->" + _state; switch(_state) { case 0: setupUI(); @@ -123,6 +133,7 @@ void CoffeeEasterEggWidget::nextState() { default: setupUI(); } + } diff --git a/src/gui/widgets/coffeeeastereggwidget.h b/src/gui/widgets/coffeeeastereggwidget.h index 7e00a98..1b68419 100644 --- a/src/gui/widgets/coffeeeastereggwidget.h +++ b/src/gui/widgets/coffeeeastereggwidget.h @@ -3,6 +3,7 @@ #include #include +#include #include "gui/utils/image.h" namespace Ui { @@ -85,6 +86,7 @@ public slots: void nextState(); private: Ui::CoffeeEasterEggWidget *ui; //!< User interface + QTimer *_timer; //!< Timer of coffeeMaker int _state; //!< current state to make coffee int _drinked; //!< coffee has been drinked }; From 3e5f5d5bd5ecdc2d0c268d4f61c5f82fd71eb841 Mon Sep 17 00:00:00 2001 From: Florent Berbie Date: Mon, 13 Apr 2015 09:08:35 +0200 Subject: [PATCH 6/8] Add enum for step to make coffee --- src/database/customerdatabase.cpp | 3 -- src/gui/widgets/coffeeeastereggwidget.cpp | 37 +++++++++++------------ src/gui/widgets/coffeeeastereggwidget.h | 17 +++++++++-- 3 files changed, 32 insertions(+), 25 deletions(-) diff --git a/src/database/customerdatabase.cpp b/src/database/customerdatabase.cpp index 08d4cf4..7a3a004 100755 --- a/src/database/customerdatabase.cpp +++ b/src/database/customerdatabase.cpp @@ -238,7 +238,6 @@ QPixmap CustomerDatabase::getCustomerImage(const int pId) void CustomerDatabase::setCustomerImage(Models::Customer &pCustomer) { QSqlQuery q; - qDebug() << pCustomer.getLastname() << " - " << pCustomer.getImage()->size(); QByteArray byteArray = Gui::Utils::Image::pixmapToBytes( *pCustomer.getImage(), pCustomer.getExtensionImage()); @@ -256,8 +255,6 @@ void CustomerDatabase::setCustomerImage(Models::Customer &pCustomer) { lastError(q), 1.3); } - qDebug() << pCustomer.getLastname() << " - " << "Image inserted"; - } QSharedPointer CustomerDatabase::getCustomer(const int pId) { diff --git a/src/gui/widgets/coffeeeastereggwidget.cpp b/src/gui/widgets/coffeeeastereggwidget.cpp index 655aac5..fd5d439 100644 --- a/src/gui/widgets/coffeeeastereggwidget.cpp +++ b/src/gui/widgets/coffeeeastereggwidget.cpp @@ -17,7 +17,7 @@ CoffeeEasterEggWidget::~CoffeeEasterEggWidget() } void CoffeeEasterEggWidget::setupUI() { - _state = 0; + _state = INIT; _drinked = 0; ui->lbCoffee->setPixmap( Gui::Utils::Image::getImage(":/icons/img/coffee_level0.png")); @@ -30,15 +30,13 @@ void CoffeeEasterEggWidget::setupUI() { void CoffeeEasterEggWidget::makeCoffeeInProgress() { _timer = new QTimer(this); - _state = 1; + _state = FIRST_STEP; connect(_timer, SIGNAL(timeout()), this, SLOT(nextState())); _timer->start(1000); - qDebug() << "makeCoffeeInProgress"; - } void CoffeeEasterEggWidget::makeCoffeeFirstStep() { - _state = 1; + _state = FIRST_STEP; ui->lbCoffee->setPixmap( Gui::Utils::Image::getImage(":/icons/img/coffee_level1.png")); ui->lbScreenControl->setText("

" @@ -46,11 +44,11 @@ void CoffeeEasterEggWidget::makeCoffeeFirstStep() { "

"); ui->btnCoffeeMaker->setText("Faire le café !"); ui->btnCoffeeMaker->setEnabled(false); - _state = 2; + _state = SECOND_STEP; } void CoffeeEasterEggWidget::makeCoffeeSecondStep() { - _state = 2; + _state = SECOND_STEP; ui->lbCoffee->setPixmap( Gui::Utils::Image::getImage(":/icons/img/coffee_level2.png")); ui->lbScreenControl->setText("

" @@ -58,11 +56,11 @@ void CoffeeEasterEggWidget::makeCoffeeSecondStep() { "

"); ui->btnCoffeeMaker->setText("Faire le café !"); ui->btnCoffeeMaker->setEnabled(false); - _state = 3; + _state = THIRD_STEP; } void CoffeeEasterEggWidget::makeCoffeeThirdStep() { - _state = 3; + _state = THIRD_STEP; ui->lbCoffee->setPixmap( Gui::Utils::Image::getImage(":/icons/img/coffee_level3.png")); ui->lbScreenControl->setText("

" @@ -70,11 +68,11 @@ void CoffeeEasterEggWidget::makeCoffeeThirdStep() { "

"); ui->btnCoffeeMaker->setText("Faire le café !"); ui->btnCoffeeMaker->setEnabled(false); - _state = 4; + _state = FOURTH_STEP; } void CoffeeEasterEggWidget::makeCoffeeFourthStep() { - _state = 4; + _state = FOURTH_STEP; ui->lbCoffee->setPixmap( Gui::Utils::Image::getImage(":/icons/img/coffee_level4.png")); ui->lbScreenControl->setText("

" @@ -82,11 +80,11 @@ void CoffeeEasterEggWidget::makeCoffeeFourthStep() { "

"); ui->btnCoffeeMaker->setText("Faire le café !"); ui->btnCoffeeMaker->setEnabled(false); - _state = 5; + _state = READY; } void CoffeeEasterEggWidget::makeCoffeeReadyStep() { - _state = 5; + _state = READY; if (!isDrinked()) { ui->lbCoffee->setPixmap( Gui::Utils::Image::getImage(":/icons/img/coffee_ready.png")); @@ -110,24 +108,23 @@ bool CoffeeEasterEggWidget::isDrinked() { } void CoffeeEasterEggWidget::nextState() { - qDebug() << "nextState -->" + _state; switch(_state) { - case 0: + case INIT: setupUI(); break; - case 1: + case FIRST_STEP: makeCoffeeFirstStep(); break; - case 2: + case SECOND_STEP: makeCoffeeSecondStep(); break; - case 3: + case THIRD_STEP: makeCoffeeThirdStep(); break; - case 4: + case FOURTH_STEP: makeCoffeeFourthStep(); break; - case 5: + case READY: makeCoffeeReadyStep(); break; default: diff --git a/src/gui/widgets/coffeeeastereggwidget.h b/src/gui/widgets/coffeeeastereggwidget.h index 1b68419..147b58d 100644 --- a/src/gui/widgets/coffeeeastereggwidget.h +++ b/src/gui/widgets/coffeeeastereggwidget.h @@ -13,6 +13,18 @@ class CoffeeEasterEggWidget; namespace Gui { namespace Widgets { +/** + * @brief The CoffeeState enum + */ +enum CoffeeState { + INIT, + FIRST_STEP, + SECOND_STEP, + THIRD_STEP, + FOURTH_STEP, + READY +}; + /** * @author Florent Berbie * @brief The CoffeeEasterEggWidget class Easter egg class because we need @@ -22,6 +34,7 @@ class CoffeeEasterEggWidget : public QWidget { Q_OBJECT + public: /** * @brief CoffeeEasterEggWidget::CoffeeEasterEggWidget Construct a @@ -86,8 +99,8 @@ public slots: void nextState(); private: Ui::CoffeeEasterEggWidget *ui; //!< User interface - QTimer *_timer; //!< Timer of coffeeMaker - int _state; //!< current state to make coffee + QTimer *_timer; //!< Timer of coffeeMaker + CoffeeState _state; //!< current state to make coffee int _drinked; //!< coffee has been drinked }; } From 29351790e485da29d081903c34e332e72e7b5862 Mon Sep 17 00:00:00 2001 From: Florent Berbie Date: Mon, 13 Apr 2015 10:18:09 +0200 Subject: [PATCH 7/8] Add tests for hierarchicalSystem --- tests/tests.pro | 6 ++++-- tests/utils/hierarchicalsystemtest.cpp | 18 ++++++++++++++++++ tests/utils/hierarchicalsystemtest.h | 19 +++++++++++++++++++ 3 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 tests/utils/hierarchicalsystemtest.cpp create mode 100644 tests/utils/hierarchicalsystemtest.h diff --git a/tests/tests.pro b/tests/tests.pro index 0ab66f6..10d8038 100644 --- a/tests/tests.pro +++ b/tests/tests.pro @@ -37,7 +37,8 @@ database/customerdatabasetest.h \ utils/itemtypetest.h \ models/contributorylisttest.h \ utils/pointerstest.h \ - models/statisticmodeltest.h + models/statisticmodeltest.h \ + utils/hierarchicalsystemtest.h SOURCES += \ #QTestRunner/main.cpp \ @@ -62,7 +63,8 @@ database/customerdatabasetest.cpp \ models/contributorylisttest.cpp \ main.cpp \ utils/pointerstest.cpp \ - models/statisticmodeltest.cpp + models/statisticmodeltest.cpp \ + utils/hierarchicalsystemtest.cpp RESOURCES += \ test.qrc diff --git a/tests/utils/hierarchicalsystemtest.cpp b/tests/utils/hierarchicalsystemtest.cpp new file mode 100644 index 0000000..d5f0fe0 --- /dev/null +++ b/tests/utils/hierarchicalsystemtest.cpp @@ -0,0 +1,18 @@ +#include "hierarchicalsystemtest.h" +#include + +HierarchicalSystemTest::HierarchicalSystemTest() { + +} + +void HierarchicalSystemTest::numberOfCustomersTest() { + Utils::HierarchicalSystem h; + QVERIFY(50 == h.getCustomers().size()); +} + +void HierarchicalSystemTest::numberOfProjectsTest() +{ + Utils::HierarchicalSystem h; + QVERIFY(74 == h.getProjects().size()); +} + diff --git a/tests/utils/hierarchicalsystemtest.h b/tests/utils/hierarchicalsystemtest.h new file mode 100644 index 0000000..ef63464 --- /dev/null +++ b/tests/utils/hierarchicalsystemtest.h @@ -0,0 +1,19 @@ +#ifndef HIERARCHICALSYSTEMTEST_H +#define HIERARCHICALSYSTEMTEST_H +#include "QTestRunner/testrunner.h" +#include "utils/hierarchicalsystem.h" + +class HierarchicalSystemTest : public QObject +{ + Q_OBJECT + +public: + HierarchicalSystemTest(); +private slots: + void numberOfCustomersTest(); + void numberOfProjectsTest(); +}; + +DECLARE_TEST(HierarchicalSystemTest) + +#endif // HIERARCHICALSYSTEMTEST_H From cb18fd1f599a48c4b74db6db4332b3f512f479cd Mon Sep 17 00:00:00 2001 From: Antoine de Roquemaurel Date: Mon, 13 Apr 2015 11:30:42 +0200 Subject: [PATCH 8/8] CHange Qt link for Travis correction --- .travis.yml | 2 +- documents/LaTexTemplate | 2 +- fact-team.github.io | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index a96c6b8..1e90473 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,7 +21,7 @@ install: - sudo apt-get install libmysqld-dev libmysqlclient-dev libqt5sql5-mysql libqt4-sql-mysql - sudo apt-get install mlocate - sudo apt-get install xvfb - - wget -O Qt5.2.0.tar.xz https://www.dropbox.com/s/mkqtb8teeydsmrk/Qt5.2.0.tar.xz?dl=0 + - wget -O Qt5.2.0.tar.xz https://www.dropbox.com/s/vkqlecsep2mqp22/Qt5.2.0.tar.xz?dl=0 - mkdir ~/Qt5.2.0 - tar -xJf Qt5.2.0.tar.xz -C ~/Qt5.2.0 - sudo chmod -R 777 ~/Qt5.2.0/ diff --git a/documents/LaTexTemplate b/documents/LaTexTemplate index 5c18e6e..59e0e74 160000 --- a/documents/LaTexTemplate +++ b/documents/LaTexTemplate @@ -1 +1 @@ -Subproject commit 5c18e6e55e09a899cc44aa7db8d4ae8c98824376 +Subproject commit 59e0e744832005315f5572cbfce69adf6ae313a7 diff --git a/fact-team.github.io b/fact-team.github.io index 559cd1f..91c6818 160000 --- a/fact-team.github.io +++ b/fact-team.github.io @@ -1 +1 @@ -Subproject commit 559cd1f57b7970aa658f373568617ffc7a572858 +Subproject commit 91c68182b6b51ce4867ae81c37d4b14d98241708