| @ -0,0 +1,27 @@ | |||||
| // SPDX-License-Identifier: GPL-3.0-or-later | |||||
| /* | |||||
| * Qt mutizone MQTT thermostat | |||||
| * | |||||
| * Copyright (C) 2019 Richard Genoud | |||||
| * | |||||
| */ | |||||
| #ifndef MAINWINDOW_H | |||||
| #define MAINWINDOW_H | |||||
| #include <QMainWindow> | |||||
| #include <QPushButton> | |||||
| #include <QtWidgets> | |||||
| class MainWindow : public QMainWindow | |||||
| { | |||||
| Q_OBJECT | |||||
| public: | |||||
| explicit MainWindow(QWidget *parent = 0); | |||||
| ~MainWindow(); | |||||
| }; | |||||
| #endif // MAINWINDOW_H | |||||
| /* vim: set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab: */ | |||||
| @ -0,0 +1,26 @@ | |||||
| // SPDX-License-Identifier: GPL-3.0-or-later | |||||
| /* | |||||
| * Qt mutizone MQTT thermostat | |||||
| * | |||||
| * Copyright (C) 2019 Richard Genoud | |||||
| * | |||||
| */ | |||||
| #ifndef ZONEITEM_H | |||||
| #define ZONEITEM_H | |||||
| #include <QWidget> | |||||
| #include <QObject> | |||||
| class ZoneItem : public QWidget | |||||
| { | |||||
| Q_OBJECT | |||||
| public: | |||||
| explicit ZoneItem(QWidget *parent = Q_NULLPTR); | |||||
| ~ZoneItem(); | |||||
| }; | |||||
| #endif // ZONEITEM_H | |||||
| /* vim: set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab: */ | |||||
| @ -0,0 +1,18 @@ | |||||
| <?xml version="1.0" encoding="utf-8"?> | |||||
| <!DOCTYPE TS> | |||||
| <TS version="2.1" language="fr_FR"> | |||||
| <context> | |||||
| <name>MainWindow</name> | |||||
| <message> | |||||
| <source>Sorico's thermostat</source> | |||||
| <translation type="unfinished"></translation> | |||||
| </message> | |||||
| </context> | |||||
| <context> | |||||
| <name>ZoneItem</name> | |||||
| <message> | |||||
| <source>Living room</source> | |||||
| <translation>Salon</translation> | |||||
| </message> | |||||
| </context> | |||||
| </TS> | |||||
| @ -0,0 +1,43 @@ | |||||
| #!/bin/sh | |||||
| devflag="" | |||||
| dirtyflag="" | |||||
| # set the version from tags | |||||
| tag="$(git describe --exact-match --tags 2>/dev/null)" | |||||
| if [ -n "$tag" ]; then | |||||
| # we are exactly on a tag (ex: 2015_09_10_08_51_version_1.6.7) | |||||
| # so we have just to extract the version | |||||
| version="$(echo "$tag" | sed "s/^.*_//")" | |||||
| else | |||||
| # we are not on a tag. | |||||
| # In this case, we want to have the previous tag version plus "dev" string | |||||
| # and the number of commits | |||||
| # git describe format is tag-x-gsha1 | |||||
| tag="$(git describe --long --tags 2>/dev/null)" | |||||
| if [ -n "$tag" ]; then | |||||
| version="$(echo "$tag" | sed "s/^.*_\(.*\)-[0-9]\+-g[^-]\+$/\1/")" | |||||
| nbcommit="$(echo "$tag" | sed "s/^.*_.*-\([0-9]\+\)-g[^-]\+$/\1/")" | |||||
| commit="$(echo "$tag" | sed "s/^.*_.*-[0-9]\+-g\([^-]\+\)$/\1/")" | |||||
| devflag="-dev" | |||||
| else | |||||
| nbcommit=0 | |||||
| version="$(git log -1 --pretty="format:%h")" | |||||
| fi | |||||
| fi | |||||
| dirtyflag=$(git diff-index --name-only HEAD) | |||||
| if [ -n "$dirtyflag" ]; then | |||||
| flag="-dirty" | |||||
| else | |||||
| flag="$devflag" | |||||
| fi | |||||
| [ "$nbcommit" -eq "$nbcommit" ] 2>/dev/null || nbcommit=0 | |||||
| printf "%s%s" "${version}" "${flag}" | |||||
| if [ "$nbcommit" -ne 0 ]; then | |||||
| printf "%03d_%s" "${nbcommit}" "${commit}" | |||||
| fi | |||||
| printf "\n" | |||||
| # /* vim: set noai ts=8 sw=8: */ | |||||
| @ -0,0 +1,42 @@ | |||||
| // SPDX-License-Identifier: GPL-3.0-or-later | |||||
| /* | |||||
| * Qt mutizone MQTT thermostat | |||||
| * | |||||
| * Copyright (C) 2019 Richard Genoud | |||||
| * | |||||
| */ | |||||
| #include <QApplication> | |||||
| #include <QInputDialog> | |||||
| #include <QTranslator> | |||||
| #include "mainwindow.h" | |||||
| int main(int argc, char *argv[]) | |||||
| { | |||||
| QTranslator qtTranslator; | |||||
| QTranslator translator; | |||||
| Q_INIT_RESOURCE(thermostat); | |||||
| QApplication a(argc, argv); | |||||
| a.setApplicationVersion(VERSION); | |||||
| /* | |||||
| * Init l10n | |||||
| */ | |||||
| if (qtTranslator.load("qt_" + QLocale::system().name(), | |||||
| QLibraryInfo::location(QLibraryInfo::TranslationsPath))) | |||||
| a.installTranslator(&qtTranslator); | |||||
| if (translator.load(":/lang/thermostat_" + QLocale::system().name() + ".qm")) | |||||
| a.installTranslator(&translator); | |||||
| MainWindow w; | |||||
| w.show(); | |||||
| return a.exec(); | |||||
| } | |||||
| /* vim: set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab: */ | |||||
| @ -0,0 +1,48 @@ | |||||
| // SPDX-License-Identifier: GPL-3.0-or-later | |||||
| /* | |||||
| * Qt mutizone MQTT thermostat | |||||
| * | |||||
| * Copyright (C) 2019 Richard Genoud | |||||
| * | |||||
| */ | |||||
| #include <QtWidgets> | |||||
| #include <QPushButton> | |||||
| #include <QTime> | |||||
| #include <QLocale> | |||||
| #include "zoneitem.h" | |||||
| #include "mainwindow.h" | |||||
| MainWindow::MainWindow(QWidget *parent) : | |||||
| QMainWindow(parent) | |||||
| { | |||||
| /* | |||||
| * Sensors-related layout | |||||
| */ | |||||
| QGridLayout *mainLayout = new QGridLayout; | |||||
| mainLayout->addWidget(new ZoneItem(this), 0, 0); | |||||
| mainLayout->addWidget(new ZoneItem(this), 0, 1); | |||||
| mainLayout->addWidget(new QPushButton(tr("Menu")), 0, 2); | |||||
| mainLayout->addWidget(new ZoneItem(this), 1, 0); | |||||
| mainLayout->addWidget(new ZoneItem(this), 1, 1); | |||||
| mainLayout->addWidget(new QPushButton(tr("Auto")), 1, 2); | |||||
| QWidget *mainWidget = new QWidget; | |||||
| mainWidget->setLayout(mainLayout); | |||||
| /* | |||||
| * Top widget | |||||
| */ | |||||
| setCentralWidget(mainWidget); | |||||
| setWindowTitle(tr("Sorico's thermostat")); | |||||
| } | |||||
| MainWindow::~MainWindow() | |||||
| { | |||||
| } | |||||
| /* vim: set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab: */ | |||||
| @ -0,0 +1,38 @@ | |||||
| // SPDX-License-Identifier: GPL-3.0-or-later | |||||
| /* | |||||
| * Qt mutizone MQTT thermostat | |||||
| * | |||||
| * Copyright (C) 2019 Richard Genoud | |||||
| * | |||||
| */ | |||||
| #include <QPushButton> | |||||
| #include <QVBoxLayout> | |||||
| #include <QWidget> | |||||
| #include <QLocale> | |||||
| #include <QLabel> | |||||
| #include "zoneitem.h" | |||||
| ZoneItem::ZoneItem(QWidget *parent) : | |||||
| QWidget(parent) | |||||
| { | |||||
| /* | |||||
| * Layout for the left part of the window | |||||
| */ | |||||
| QVBoxLayout *topLayout = new QVBoxLayout; | |||||
| QPushButton *btn = new QPushButton; | |||||
| btn->setText("20°C"); | |||||
| btn->setFlat(true); | |||||
| topLayout->addWidget(new QLabel(tr("Living room"))); | |||||
| topLayout->addWidget(btn); | |||||
| topLayout->addWidget(new QLabel("45%h")); | |||||
| this->setLayout(topLayout); | |||||
| } | |||||
| ZoneItem::~ZoneItem() | |||||
| { | |||||
| } | |||||
| /* vim: set tabstop=8 shiftwidth=8 softtabstop=0 noexpandtab: */ | |||||
| @ -0,0 +1,67 @@ | |||||
| QT += core gui | |||||
| greaterThan(QT_MAJOR_VERSION, 4): QT += widgets | |||||
| CONFIG += c++11 | |||||
| TARGET = thermostat | |||||
| TEMPLATE = app | |||||
| # The following define makes your compiler emit warnings if you use | |||||
| # any feature of Qt which as been marked as deprecated (the exact warnings | |||||
| # depend on your compiler). Please consult the documentation of the | |||||
| # deprecated API in order to know how to port your code away from it. | |||||
| DEFINES += QT_DEPRECATED_WARNINGS | |||||
| # You can also make your code fail to compile if you use deprecated APIs. | |||||
| # In order to do so, uncomment the following line. | |||||
| # You can also select to disable deprecated APIs only up to a certain version of Qt. | |||||
| DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0 | |||||
| SOURCES += src/main.cpp \ | |||||
| src/mainwindow.cpp \ | |||||
| src/zoneitem.cpp \ | |||||
| HEADERS += inc/mainwindow.h \ | |||||
| inc/zoneitem.h \ | |||||
| RESOURCES += thermostat.qrc | |||||
| TRANSLATION_DIR = lang | |||||
| TRANSLATIONS += $$TRANSLATION_DIR/thermostat_fr.ts | |||||
| # This is not working with Qt5.7 on debian. | |||||
| CONFIG += lrelease embed_translations | |||||
| target.path = /usr/bin/ | |||||
| INSTALLS += target | |||||
| VERSION = $$system(./scripts/get_tag_version.sh) | |||||
| QMAKE_CXXFLAGS += -Wall -Werror | |||||
| QMAKE_CXXFLAGS += -std=c++11 | |||||
| QMAKE_CXXFLAGS += -DVERSION=\'\"$$VERSION\"\' | |||||
| QMAKE_CXXFLAGS_DEBUG += -O0 | |||||
| QMAKE_CXXFLAGS_RELEASE += -Os | |||||
| unix: CONFIG += link_pkgconfig | |||||
| INCLUDEPATH += inc/ \ | |||||
| LUPDATE = $$shell_path($$[QT_INSTALL_BINS]/lupdate) -locations relative -no-ui-lines -no-sort | |||||
| LRELEASE = $$shell_path($$[QT_INSTALL_BINS]/lrelease) -compress -nounfinished -removeidentical | |||||
| LCONVERT = $$shell_path($$[QT_INSTALL_BINS]/lconvert) | |||||
| langupd.command = $$LUPDATE $$shell_path($$_PRO_FILE_) -ts $$_PRO_FILE_PWD_/$$TRANSLATIONS | |||||
| langrel.depends = langupd | |||||
| langrel.input = TRANSLATIONS | |||||
| langrel.output = $$TRANSLATION_DIR/${QMAKE_FILE_BASE}.qm | |||||
| langrel.commands = $$LRELEASE ${QMAKE_FILE_IN} | |||||
| langrel.CONFIG += no_link | |||||
| QMAKE_EXTRA_TARGETS += langupd | |||||
| QMAKE_EXTRA_COMPILERS += langrel | |||||
| PRE_TARGETDEPS += langupd compiler_langrel_make_all | |||||
| @ -0,0 +1,6 @@ | |||||
| <!DOCTYPE RCC> | |||||
| <RCC version="1.0"> | |||||
| <qresource prefix="/"> | |||||
| <file>lang/thermostat_fr.qm</file> | |||||
| </qresource> | |||||
| </RCC> | |||||