Browse Source

add thermostat sofware skeleton

master
Richard Genoud 5 years ago
parent
commit
61517e5bfd
9 changed files with 315 additions and 0 deletions
  1. +27
    -0
      soft/thermostat/inc/mainwindow.h
  2. +26
    -0
      soft/thermostat/inc/zoneitem.h
  3. +18
    -0
      soft/thermostat/lang/thermostat_fr.ts
  4. +43
    -0
      soft/thermostat/scripts/get_tag_version.sh
  5. +42
    -0
      soft/thermostat/src/main.cpp
  6. +48
    -0
      soft/thermostat/src/mainwindow.cpp
  7. +38
    -0
      soft/thermostat/src/zoneitem.cpp
  8. +67
    -0
      soft/thermostat/thermostat.pro
  9. +6
    -0
      soft/thermostat/thermostat.qrc

+ 27
- 0
soft/thermostat/inc/mainwindow.h View File

@ -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: */

+ 26
- 0
soft/thermostat/inc/zoneitem.h View File

@ -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: */

+ 18
- 0
soft/thermostat/lang/thermostat_fr.ts View File

@ -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&apos;s thermostat</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ZoneItem</name>
<message>
<source>Living room</source>
<translation>Salon</translation>
</message>
</context>
</TS>

+ 43
- 0
soft/thermostat/scripts/get_tag_version.sh View File

@ -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: */

+ 42
- 0
soft/thermostat/src/main.cpp View File

@ -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: */

+ 48
- 0
soft/thermostat/src/mainwindow.cpp View File

@ -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: */

+ 38
- 0
soft/thermostat/src/zoneitem.cpp View File

@ -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: */

+ 67
- 0
soft/thermostat/thermostat.pro View File

@ -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

+ 6
- 0
soft/thermostat/thermostat.qrc View File

@ -0,0 +1,6 @@
<!DOCTYPE RCC>
<RCC version="1.0">
<qresource prefix="/">
<file>lang/thermostat_fr.qm</file>
</qresource>
</RCC>

Loading…
Cancel
Save