Merge branch 'master' of https://git.itsblue.de/Fenoglio/omobileddisplay
This commit is contained in:
commit
95abf60e86
37 changed files with 217 additions and 159 deletions
4
.gitmodules
vendored
4
.gitmodules
vendored
|
@ -1,3 +1,3 @@
|
|||
[submodule "OmobiDisplayApp/QBluetoothLeUart"]
|
||||
path = OmobiDisplayApp/QBluetoothLeUart
|
||||
[submodule "LedDisplayController/QBluetoothLeUart"]
|
||||
path = LedDisplayController/QBluetoothLeUart
|
||||
url = https://itsblue.dev/itsblue-development/QBluetoothLeUart.git
|
||||
|
|
|
@ -11,13 +11,13 @@ TEMPLATE = app
|
|||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||
|
||||
SOURCES += \
|
||||
leddisplaybackend.cpp \
|
||||
main.cpp \
|
||||
omobidisplaybackend.cpp \
|
||||
omobidisplaytextmodel.cpp
|
||||
leddisplaytextmodel.cpp
|
||||
|
||||
HEADERS += \
|
||||
omobidisplaybackend.h \
|
||||
omobidisplaytextmodel.h
|
||||
leddisplaybackend.h \
|
||||
leddisplaytextmodel.h
|
||||
|
||||
RESOURCES += \
|
||||
ressources/qml/qml.qrc \
|
||||
|
@ -63,3 +63,10 @@ contains(ANDROID_TARGET_ARCH,armeabi-v7a) {
|
|||
ANDROID_ABIS = \
|
||||
armeabi-v7a
|
||||
}
|
||||
|
||||
contains(ANDROID_TARGET_ARCH,) {
|
||||
ANDROID_ABIS = \
|
||||
armeabi-v7a
|
||||
}
|
||||
|
||||
ANDROID_ABIS = armeabi-v7a arm64-v8a
|
1
LedDisplayController/QBluetoothLeUart
Submodule
1
LedDisplayController/QBluetoothLeUart
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit d75f55a3a16a833599cd93e1fb22f2500a94dcf5
|
|
@ -1,10 +1,10 @@
|
|||
#include "omobidisplaybackend.h"
|
||||
#include "leddisplaybackend.h"
|
||||
|
||||
OmobiDisplayBackend::OmobiDisplayBackend(QObject *parent) : QObject(parent)
|
||||
LedDisplayBackend::LedDisplayBackend(QObject *parent) : QObject(parent)
|
||||
{
|
||||
this->bleClient = new QBluetoothLeUartClient();
|
||||
this->bleClient->setUUIDs("92fecb20-1406-426a-afa5-cd5c1f306462", "92fecb21-1406-426a-afa5-cd5c1f306462", "92fecb22-1406-426a-afa5-cd5c1f306462");
|
||||
this->displayTextModel = new OmobiDisplayTextModel(this);
|
||||
this->displayTextModel = new LedDisplayTextModel(this);
|
||||
this->textSetsBuffer.clear();
|
||||
this->displayBrightness = -1;
|
||||
this->waitingCommands = 0;
|
||||
|
@ -14,26 +14,26 @@ OmobiDisplayBackend::OmobiDisplayBackend(QObject *parent) : QObject(parent)
|
|||
this->keepAliveTimer = new QTimer(this);
|
||||
this->keepAliveTimer->setInterval(5000);
|
||||
this->keepAliveTimer->setSingleShot(false);
|
||||
connect(this->keepAliveTimer, &QTimer::timeout, this, &OmobiDisplayBackend::sendBluetoothKeepAlive);
|
||||
connect(this->keepAliveTimer, &QTimer::timeout, this, &LedDisplayBackend::sendBluetoothKeepAlive);
|
||||
|
||||
connect(this->bleClient, &QBluetoothLeUartClient::stateChanged, this, &OmobiDisplayBackend::handleBluetoothStateChange);
|
||||
connect(this->bleClient, &QBluetoothLeUartClient::foundNewDevice, this, &OmobiDisplayBackend::handleFoundNewDevice);
|
||||
connect(this->bleClient, &QBluetoothLeUartClient::dataReceived, this, &OmobiDisplayBackend::handleBluetoothDataReceived);
|
||||
connect(this->bleClient, &QBluetoothLeUartClient::connectedToDevice, this, &OmobiDisplayBackend::handleBluetoothDeviceConected);
|
||||
connect(this->displayTextModel, &OmobiDisplayTextModel::dataChanged, this, &OmobiDisplayBackend::handleDisplayTextModelDataChanged);
|
||||
connect(this->displayTextModel, &OmobiDisplayTextModel::rowsInserted, this, &OmobiDisplayBackend::handleDisplayTextModelRowsInserted);
|
||||
connect(this->displayTextModel, &OmobiDisplayTextModel::rowsRemoved, this, &OmobiDisplayBackend::handleDisplayTextModelRowsRemoved);
|
||||
connect(this->bleClient, &QBluetoothLeUartClient::stateChanged, this, &LedDisplayBackend::handleBluetoothStateChange);
|
||||
connect(this->bleClient, &QBluetoothLeUartClient::foundNewDevice, this, &LedDisplayBackend::handleFoundNewDevice);
|
||||
connect(this->bleClient, &QBluetoothLeUartClient::dataReceived, this, &LedDisplayBackend::handleBluetoothDataReceived);
|
||||
connect(this->bleClient, &QBluetoothLeUartClient::connectedToDevice, this, &LedDisplayBackend::handleBluetoothDeviceConected);
|
||||
connect(this->displayTextModel, &LedDisplayTextModel::dataChanged, this, &LedDisplayBackend::handleDisplayTextModelDataChanged);
|
||||
connect(this->displayTextModel, &LedDisplayTextModel::rowsInserted, this, &LedDisplayBackend::handleDisplayTextModelRowsInserted);
|
||||
connect(this->displayTextModel, &LedDisplayTextModel::rowsRemoved, this, &LedDisplayBackend::handleDisplayTextModelRowsRemoved);
|
||||
|
||||
this->setState(Idle);
|
||||
this->bleClient->startScanningForDevices();
|
||||
}
|
||||
|
||||
|
||||
void OmobiDisplayBackend::startScanning() {
|
||||
void LedDisplayBackend::startScanning() {
|
||||
this->bleClient->startScanningForDevices();
|
||||
}
|
||||
|
||||
void OmobiDisplayBackend::authenticate(QString code) {
|
||||
void LedDisplayBackend::authenticate(QString code) {
|
||||
// tell display to send over existing model data
|
||||
this->setState(Authenticating);
|
||||
|
||||
|
@ -47,16 +47,11 @@ void OmobiDisplayBackend::authenticate(QString code) {
|
|||
this->sendBluetoothCommand(AuthenticateCommand, QVariantMap{{"secret", this->lastDisplaySecret}});
|
||||
}
|
||||
|
||||
void OmobiDisplayBackend::handleBluetoothScanningError(QBluetoothLeUartClient::BluetoothScanError error) {
|
||||
if(error == QBluetoothLeUartClient::LocationPermissionDeniedError) {
|
||||
#ifdef Q_OS_ANDROID
|
||||
// try to get permission
|
||||
//QtAndroid::requestPermissions({"android.permission.ACCESS_FINE_LOCATION", "android.permission.ACCESS_COARSE_LOCATION"}, NULL);
|
||||
#endif
|
||||
}
|
||||
void LedDisplayBackend::handleBluetoothScanningError(QBluetoothLeUartClient::BluetoothScanError error) {
|
||||
Q_UNUSED(error)
|
||||
}
|
||||
|
||||
void OmobiDisplayBackend::handleBluetoothStateChange(QBluetoothLeUartClient::BluetoothLeUartClientState state){
|
||||
void LedDisplayBackend::handleBluetoothStateChange(QBluetoothLeUartClient::BluetoothLeUartClientState state){
|
||||
switch(state){
|
||||
case QBluetoothLeUartClient::Idle: {
|
||||
this->setState(Idle);
|
||||
|
@ -102,18 +97,18 @@ void OmobiDisplayBackend::handleBluetoothStateChange(QBluetoothLeUartClient::Blu
|
|||
this->keepAliveTimer->stop();
|
||||
}
|
||||
|
||||
void OmobiDisplayBackend::handleBluetoothDeviceConected() {
|
||||
void LedDisplayBackend::handleBluetoothDeviceConected() {
|
||||
if(this->settings->contains(this->bleClient->getCurrentDevice()->getAddress()))
|
||||
this->authenticate(this->settings->value(this->bleClient->getCurrentDevice()->getAddress()).toString());
|
||||
else
|
||||
this->setState(AuthenticationRequired);
|
||||
}
|
||||
|
||||
void OmobiDisplayBackend::handleFoundNewDevice(QBluetoothLeUartDevice* device) {
|
||||
void LedDisplayBackend::handleFoundNewDevice(QBluetoothLeUartDevice* device) {
|
||||
qDebug() << "Found a device: name: " << device->getName() << " address: " << device->getAddress();
|
||||
}
|
||||
|
||||
void OmobiDisplayBackend::handleDisplayTextModelDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles) {
|
||||
void LedDisplayBackend::handleDisplayTextModelDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles) {
|
||||
|
||||
qDebug() << "Data changed: topLeft: " << topLeft << " bottomRight: " << bottomRight << " roles: " << roles;
|
||||
|
||||
|
@ -121,21 +116,21 @@ void OmobiDisplayBackend::handleDisplayTextModelDataChanged(const QModelIndex &t
|
|||
this->updateDisplayTextSetParameter(topLeft.row(), role);
|
||||
}
|
||||
|
||||
void OmobiDisplayBackend::handleDisplayTextModelRowsInserted(const QModelIndex &parent, int first, int last) {
|
||||
void LedDisplayBackend::handleDisplayTextModelRowsInserted(const QModelIndex &parent, int first, int last) {
|
||||
qDebug() << "Rows inserted: parent: " << parent << " first: " << first << " last " << last;
|
||||
for(int i = 0; i < OmobiDisplayTextModel::OmobiDisplayTextModelRoleCount; i++) {
|
||||
for(int i = 0; i < LedDisplayTextModel::LedDisplayTextModelRoleCount; i++) {
|
||||
this->updateDisplayTextSetParameter(first, i);
|
||||
}
|
||||
}
|
||||
|
||||
void OmobiDisplayBackend::handleDisplayTextModelRowsRemoved(const QModelIndex &parent, int first, int last) {
|
||||
void LedDisplayBackend::handleDisplayTextModelRowsRemoved(const QModelIndex &parent, int first, int last) {
|
||||
qDebug() << "Rows removed: parent: " << parent << " first: " << first << " last " << last;
|
||||
// Setting Text to "" will delete the item
|
||||
this->updateDisplayTextSetParameter(first, OmobiDisplayTextModel::TextRole, "");
|
||||
this->updateDisplayTextSetParameter(first, LedDisplayTextModel::TextRole, "");
|
||||
}
|
||||
|
||||
|
||||
void OmobiDisplayBackend::sendBluetoothCommand(OmobiDisplayCommand command, QVariant data) {
|
||||
void LedDisplayBackend::sendBluetoothCommand(OmobiDisplayCommand command, QVariant data) {
|
||||
QVariantMap commandMap = {
|
||||
{"header", command},
|
||||
{"data", data}
|
||||
|
@ -153,7 +148,7 @@ void OmobiDisplayBackend::sendBluetoothCommand(OmobiDisplayCommand command, QVar
|
|||
this->bleClient->sendData(doc.toJson(QJsonDocument::Compact));
|
||||
}
|
||||
|
||||
void OmobiDisplayBackend::sendBluetoothKeepAlive() {
|
||||
void LedDisplayBackend::sendBluetoothKeepAlive() {
|
||||
QJsonDocument doc = QJsonDocument::fromVariant(QVariantMap{{"header", KeepAliveCommand}});
|
||||
|
||||
//qDebug() << "Sending keep alive: \n" << qPrintable(doc.toJson(QJsonDocument::Indented));
|
||||
|
@ -161,8 +156,8 @@ void OmobiDisplayBackend::sendBluetoothKeepAlive() {
|
|||
this->bleClient->sendData(doc.toJson(QJsonDocument::Compact));
|
||||
}
|
||||
|
||||
void OmobiDisplayBackend::handleBluetoothDataReceived(QString s){
|
||||
//qDebug() << "New data: \n" << qPrintable(s);
|
||||
void LedDisplayBackend::handleBluetoothDataReceived(QString s){
|
||||
qDebug() << "New data: \n" << qPrintable(s);
|
||||
|
||||
QJsonParseError parseError;
|
||||
QJsonDocument doc = QJsonDocument::fromJson(s.toUtf8(), &parseError);
|
||||
|
@ -204,6 +199,8 @@ void OmobiDisplayBackend::handleBluetoothDataReceived(QString s){
|
|||
this->displayTextModel->maximumTextLength = data["maximumTextLength"].toInt();
|
||||
this->displayTextModel->maximumTextSets = data["maximumTextSets"].toInt();
|
||||
|
||||
qDebug() << "text sets are: " << this->textSetsBuffer;
|
||||
|
||||
this->displayTextModel->setTexts(this->textSetsBuffer);
|
||||
this->textSetsBuffer.clear();
|
||||
|
||||
|
@ -251,11 +248,11 @@ void OmobiDisplayBackend::handleBluetoothDataReceived(QString s){
|
|||
}
|
||||
|
||||
|
||||
void OmobiDisplayBackend::updateDisplayTextSetParameter(int index, int parameter) {
|
||||
void LedDisplayBackend::updateDisplayTextSetParameter(int index, int parameter) {
|
||||
this->updateDisplayTextSetParameter(index, parameter, this->displayTextModel->data(index, parameter).toString());
|
||||
}
|
||||
|
||||
void OmobiDisplayBackend::updateDisplayTextSetParameter(int index, int parameter, QString value) {
|
||||
void LedDisplayBackend::updateDisplayTextSetParameter(int index, int parameter, QString value) {
|
||||
if(this->state == Initing)
|
||||
return;
|
||||
qDebug() << "Updating data at index: " << index << " parameter: " << parameter << " and value: " << value;
|
||||
|
@ -269,20 +266,20 @@ void OmobiDisplayBackend::updateDisplayTextSetParameter(int index, int parameter
|
|||
this->sendBluetoothCommand(SetTextSetParameterCommand, dataMap);
|
||||
}
|
||||
|
||||
QBluetoothLeUartClient* OmobiDisplayBackend::getBleClient() {
|
||||
QBluetoothLeUartClient* LedDisplayBackend::getBleClient() {
|
||||
return this->bleClient;
|
||||
}
|
||||
|
||||
|
||||
OmobiDisplayTextModel* OmobiDisplayBackend::getDisplayTextModel() {
|
||||
LedDisplayTextModel* LedDisplayBackend::getDisplayTextModel() {
|
||||
return this->displayTextModel;
|
||||
}
|
||||
|
||||
OmobiDisplayBackend::OmobiDisplayAppState OmobiDisplayBackend::getState() {
|
||||
LedDisplayBackend::OmobiDisplayAppState LedDisplayBackend::getState() {
|
||||
return this->state;
|
||||
}
|
||||
|
||||
void OmobiDisplayBackend::refreshLoadingState() {
|
||||
void LedDisplayBackend::refreshLoadingState() {
|
||||
if(this->state != Initing && this->state != Loading)
|
||||
return;
|
||||
|
||||
|
@ -296,7 +293,7 @@ void OmobiDisplayBackend::refreshLoadingState() {
|
|||
this->waitingCommands--;
|
||||
}
|
||||
|
||||
void OmobiDisplayBackend::setState(OmobiDisplayAppState state) {
|
||||
void LedDisplayBackend::setState(OmobiDisplayAppState state) {
|
||||
if(state == this->state)
|
||||
return;
|
||||
|
||||
|
@ -309,11 +306,11 @@ void OmobiDisplayBackend::setState(OmobiDisplayAppState state) {
|
|||
this->bleClient->startScanningForDevices();
|
||||
}
|
||||
|
||||
int OmobiDisplayBackend::getDisplayBrightness() {
|
||||
int LedDisplayBackend::getDisplayBrightness() {
|
||||
return this->displayBrightness;
|
||||
}
|
||||
|
||||
void OmobiDisplayBackend::setDisplayBrightness(int brightness) {
|
||||
void LedDisplayBackend::setDisplayBrightness(int brightness) {
|
||||
if(brightness == this->displayBrightness)
|
||||
return;
|
||||
|
||||
|
@ -325,11 +322,11 @@ void OmobiDisplayBackend::setDisplayBrightness(int brightness) {
|
|||
}
|
||||
|
||||
|
||||
void OmobiDisplayBackend::setDisplayCode(QString code) {
|
||||
void LedDisplayBackend::setDisplayCode(QString code) {
|
||||
this->sendBluetoothCommand(SetDisplayCodeCommand, QVariantMap{{"displayCode",code}});
|
||||
}
|
||||
|
||||
void OmobiDisplayBackend::setDisplayName(QString name) {
|
||||
void LedDisplayBackend::setDisplayName(QString name) {
|
||||
// This will restart the display!!
|
||||
this->sendBluetoothCommand(SetDisplayNameCommand, QVariantMap{{"displayName", name}});
|
||||
}
|
|
@ -8,18 +8,18 @@
|
|||
#include <QSettings>
|
||||
|
||||
#include <qbluetoothleuartclient.h>
|
||||
#include <omobidisplaytextmodel.h>
|
||||
#include <leddisplaytextmodel.h>
|
||||
|
||||
class OmobiDisplayBackend : public QObject
|
||||
class LedDisplayBackend : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(QBluetoothLeUartClient* bleClient READ getBleClient NOTIFY bleClientChanged)
|
||||
Q_PROPERTY(OmobiDisplayAppState state READ getState WRITE setState NOTIFY stateChanged)
|
||||
Q_PROPERTY(OmobiDisplayTextModel* displayTextModel READ getDisplayTextModel NOTIFY displayTextModelChanged)
|
||||
Q_PROPERTY(LedDisplayTextModel* displayTextModel READ getDisplayTextModel NOTIFY displayTextModelChanged)
|
||||
Q_PROPERTY(int displayBrightness READ getDisplayBrightness WRITE setDisplayBrightness NOTIFY displayBrightnessChanged)
|
||||
|
||||
public:
|
||||
explicit OmobiDisplayBackend(QObject *parent = nullptr);
|
||||
explicit LedDisplayBackend(QObject *parent = nullptr);
|
||||
|
||||
enum OmobiDisplayAppState {
|
||||
Idle,
|
||||
|
@ -36,6 +36,11 @@ public:
|
|||
};
|
||||
Q_ENUM(OmobiDisplayAppState)
|
||||
|
||||
static void init() {
|
||||
qmlRegisterType<LedDisplayBackend>("de.itsblue.LedDisplayController", 1, 0, "LedDisplayBackend");
|
||||
qmlRegisterUncreatableType<LedDisplayTextModel>("de.itsblue.LedDisplayController", 1, 0, "LedDisplayTextModel", "LedDisplayTextModel cannot be created");
|
||||
};
|
||||
|
||||
private:
|
||||
enum OmobiDisplayCommand {
|
||||
AuthenticateCommand = 0,
|
||||
|
@ -57,7 +62,7 @@ private:
|
|||
OmobiDisplayAppState state;
|
||||
QBluetoothLeUartClient *bleClient;
|
||||
QTimer *keepAliveTimer;
|
||||
OmobiDisplayTextModel* displayTextModel;
|
||||
LedDisplayTextModel* displayTextModel;
|
||||
int waitingCommands;
|
||||
QList<QMap<int, QVariant>> textSetsBuffer;
|
||||
int displayBrightness;
|
||||
|
@ -70,7 +75,7 @@ public slots:
|
|||
Q_INVOKABLE void authenticate(QString secret);
|
||||
Q_INVOKABLE QBluetoothLeUartClient* getBleClient();
|
||||
Q_INVOKABLE OmobiDisplayAppState getState();
|
||||
Q_INVOKABLE OmobiDisplayTextModel* getDisplayTextModel();
|
||||
Q_INVOKABLE LedDisplayTextModel* getDisplayTextModel();
|
||||
Q_INVOKABLE int getDisplayBrightness();
|
||||
Q_INVOKABLE void setDisplayBrightness(int brightness);
|
||||
Q_INVOKABLE void setDisplayCode(QString code);
|
|
@ -1,39 +1,39 @@
|
|||
#include "omobidisplaytextmodel.h"
|
||||
#include "leddisplaytextmodel.h"
|
||||
|
||||
OmobiDisplayTextModel::OmobiDisplayTextModel(QObject* parent) : QAbstractListModel(parent)
|
||||
LedDisplayTextModel::LedDisplayTextModel(QObject* parent) : QAbstractListModel(parent)
|
||||
{
|
||||
this->maximumTextSets = 0;
|
||||
this->maximumTextLength = 0;
|
||||
|
||||
connect(this, &OmobiDisplayTextModel::rowsInserted, this, &OmobiDisplayTextModel::rowCountChanged);
|
||||
connect(this, &OmobiDisplayTextModel::rowsRemoved, this, &OmobiDisplayTextModel::rowCountChanged);
|
||||
connect(this, &LedDisplayTextModel::rowsInserted, this, &LedDisplayTextModel::rowCountChanged);
|
||||
connect(this, &LedDisplayTextModel::rowsRemoved, this, &LedDisplayTextModel::rowCountChanged);
|
||||
}
|
||||
|
||||
int OmobiDisplayTextModel::rowCount(const QModelIndex &) const
|
||||
int LedDisplayTextModel::rowCount(const QModelIndex &) const
|
||||
{
|
||||
return this->texts.length();
|
||||
}
|
||||
|
||||
QVariant OmobiDisplayTextModel::data(const QModelIndex &index, int role) const
|
||||
QVariant LedDisplayTextModel::data(const QModelIndex &index, int role) const
|
||||
{
|
||||
return this->data(index.row(), role);
|
||||
}
|
||||
|
||||
QVariant OmobiDisplayTextModel::data(int row, int role) const {
|
||||
QVariant LedDisplayTextModel::data(int row, int role) const {
|
||||
if (row < rowCount()) {
|
||||
if(this->texts[row].contains(role)) {
|
||||
if(role == IndexRole)
|
||||
return row;
|
||||
|
||||
QVariant value = this->texts[row][role];
|
||||
value.convert(this->roleDataTypes[OmobiDisplayTextModelRole(role)]);
|
||||
value.convert(this->roleDataTypes[LedDisplayTextModelRole(role)]);
|
||||
return value;
|
||||
}
|
||||
}
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
QHash<int, QByteArray> OmobiDisplayTextModel::roleNames() const
|
||||
QHash<int, QByteArray> LedDisplayTextModel::roleNames() const
|
||||
{
|
||||
static const QHash<int, QByteArray> roles {
|
||||
{ TextRole, "text" },
|
||||
|
@ -42,6 +42,7 @@ QHash<int, QByteArray> OmobiDisplayTextModel::roleNames() const
|
|||
{ ColorRole, "color" },
|
||||
{ AlignmentRole, "alignment" },
|
||||
{ ScrollRole, "scroll" },
|
||||
{ ScrollDirectionRole, "scrollDirection" },
|
||||
{ ScrollSpeedRole, "scrollSpeed" },
|
||||
{ ScrollCountRole, "scrollCount" },
|
||||
{ IndexRole, "index" }
|
||||
|
@ -49,13 +50,14 @@ QHash<int, QByteArray> OmobiDisplayTextModel::roleNames() const
|
|||
return roles;
|
||||
}
|
||||
|
||||
void OmobiDisplayTextModel::append(
|
||||
void LedDisplayTextModel::append(
|
||||
QString text,
|
||||
bool active,
|
||||
unsigned int runtime,
|
||||
QString color,
|
||||
QString alignment,
|
||||
unsigned int alignment,
|
||||
bool scroll,
|
||||
unsigned int scrollDirection,
|
||||
unsigned int scrollSpeed,
|
||||
unsigned int scrollCount
|
||||
) {
|
||||
|
@ -74,6 +76,7 @@ void OmobiDisplayTextModel::append(
|
|||
{ ColorRole, color },
|
||||
{ AlignmentRole, alignment },
|
||||
{ ScrollRole, scroll },
|
||||
{ ScrollDirectionRole, scrollDirection},
|
||||
{ ScrollSpeedRole, scrollSpeed },
|
||||
{ ScrollCountRole, scrollCount }
|
||||
};
|
||||
|
@ -81,14 +84,14 @@ void OmobiDisplayTextModel::append(
|
|||
this->append(roles);
|
||||
}
|
||||
|
||||
void OmobiDisplayTextModel::append(const QMap<int, QVariant> &roles) {
|
||||
void LedDisplayTextModel::append(const QMap<int, QVariant> &roles) {
|
||||
int row = this->texts.length();
|
||||
this->beginInsertRows(QModelIndex(), row, row);
|
||||
this->texts.insert(row, roles);
|
||||
this->endInsertRows();
|
||||
}
|
||||
|
||||
bool OmobiDisplayTextModel::setData(const QModelIndex &index, const QVariant &value, int role) {
|
||||
bool LedDisplayTextModel::setData(const QModelIndex &index, const QVariant &value, int role) {
|
||||
if (index.row() >= rowCount() || !this->texts[index.row()].contains(role))
|
||||
return false;
|
||||
|
||||
|
@ -107,7 +110,7 @@ bool OmobiDisplayTextModel::setData(const QModelIndex &index, const QVariant &va
|
|||
return true;
|
||||
}
|
||||
|
||||
void OmobiDisplayTextModel::remove(int row)
|
||||
void LedDisplayTextModel::remove(int row)
|
||||
{
|
||||
if (row < 0 || row >= this->rowCount())
|
||||
return;
|
||||
|
@ -117,12 +120,12 @@ void OmobiDisplayTextModel::remove(int row)
|
|||
endRemoveRows();
|
||||
}
|
||||
|
||||
void OmobiDisplayTextModel::clear() {
|
||||
void LedDisplayTextModel::clear() {
|
||||
for(int i = 0; i < this->texts.length(); i++)
|
||||
this->remove(i);
|
||||
}
|
||||
|
||||
bool OmobiDisplayTextModel::setTexts(QList<QMap<int, QVariant>> texts) {
|
||||
bool LedDisplayTextModel::setTexts(QList<QMap<int, QVariant>> texts) {
|
||||
this->beginResetModel();
|
||||
this->resetInternalData();
|
||||
this->texts.clear();
|
||||
|
@ -134,11 +137,11 @@ bool OmobiDisplayTextModel::setTexts(QList<QMap<int, QVariant>> texts) {
|
|||
return true;
|
||||
}
|
||||
|
||||
QList<QMap<int, QVariant>> OmobiDisplayTextModel::getTexts() {
|
||||
QList<QMap<int, QVariant>> LedDisplayTextModel::getTexts() {
|
||||
return this->texts;
|
||||
}
|
||||
|
||||
QMap<int, QVariant> OmobiDisplayTextModel::getText(const QModelIndex &index) {
|
||||
QMap<int, QVariant> LedDisplayTextModel::getText(const QModelIndex &index) {
|
||||
if (index.row() < this->rowCount())
|
||||
return this->texts[index.row()];
|
||||
|
||||
|
@ -146,6 +149,6 @@ QMap<int, QVariant> OmobiDisplayTextModel::getText(const QModelIndex &index) {
|
|||
}
|
||||
|
||||
|
||||
int OmobiDisplayTextModel::getMaximumTextSets() {
|
||||
int LedDisplayTextModel::getMaximumTextSets() {
|
||||
return this->maximumTextSets;
|
||||
}
|
|
@ -1,33 +1,34 @@
|
|||
#ifndef OMOBIDISPLAYTEXTMODEL_H
|
||||
#define OMOBIDISPLAYTEXTMODEL_H
|
||||
#ifndef LEDDISPLAYTEXTMODEL_H
|
||||
#define LEDDISPLAYTEXTMODEL_H
|
||||
|
||||
#include <QAbstractListModel>
|
||||
#include <QObject>
|
||||
#include <QColor>
|
||||
#include <QDebug>
|
||||
|
||||
class OmobiDisplayTextModel : public QAbstractListModel
|
||||
class LedDisplayTextModel : public QAbstractListModel
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(int rowCount READ rowCount NOTIFY rowCountChanged)
|
||||
Q_PROPERTY(int maximumTextSets READ getMaximumTextSets NOTIFY maximumTextSetsChanged)
|
||||
|
||||
public:
|
||||
friend class OmobiDisplayBackend;
|
||||
friend class LedDisplayBackend;
|
||||
|
||||
enum OmobiDisplayTextModelRole {
|
||||
enum LedDisplayTextModelRole {
|
||||
TextRole = Qt::DisplayRole,
|
||||
ActiveRole,
|
||||
RuntimeRole,
|
||||
ColorRole,
|
||||
AlignmentRole,
|
||||
ScrollRole,
|
||||
ScrollDirectionRole,
|
||||
ScrollSpeedRole,
|
||||
ScrollCountRole,
|
||||
IndexRole,
|
||||
OmobiDisplayTextModelRoleCount
|
||||
LedDisplayTextModelRoleCount
|
||||
};
|
||||
Q_ENUM(OmobiDisplayTextModelRole)
|
||||
Q_ENUM(LedDisplayTextModelRole)
|
||||
|
||||
enum OmobiDisplayTextAlignment
|
||||
{
|
||||
|
@ -46,8 +47,9 @@ public:
|
|||
bool active,
|
||||
unsigned int runtime,
|
||||
QString color,
|
||||
QString alignment,
|
||||
unsigned int alignment,
|
||||
bool scroll,
|
||||
unsigned int scrollDirection,
|
||||
unsigned int scrollSpeed,
|
||||
unsigned int scrollCount
|
||||
);
|
||||
|
@ -60,7 +62,7 @@ public:
|
|||
Q_INVOKABLE int getMaximumTextSets();
|
||||
|
||||
protected:
|
||||
OmobiDisplayTextModel(QObject* parent = nullptr);
|
||||
LedDisplayTextModel(QObject* parent = nullptr);
|
||||
|
||||
bool setTexts(QList<QMap<int, QVariant>> json);
|
||||
QList<QMap<int, QVariant>> getTexts();
|
||||
|
@ -74,13 +76,14 @@ private:
|
|||
int maximumTextSets;
|
||||
int maximumTextLength;
|
||||
|
||||
const QMap<OmobiDisplayTextModelRole, QVariant::Type> roleDataTypes = {
|
||||
const QMap<LedDisplayTextModelRole, QVariant::Type> roleDataTypes = {
|
||||
{TextRole, QVariant::String},
|
||||
{ActiveRole, QVariant::Bool},
|
||||
{RuntimeRole, QVariant::Int},
|
||||
{ColorRole, QVariant::String},
|
||||
{AlignmentRole, QVariant::Int},
|
||||
{ScrollRole, QVariant::Bool},
|
||||
{ScrollDirectionRole, QVariant::Int},
|
||||
{ScrollSpeedRole, QVariant::Int},
|
||||
{ScrollCountRole, QVariant::Int},
|
||||
{IndexRole, QVariant::Int}
|
||||
|
@ -91,4 +94,4 @@ signals:
|
|||
void maximumTextSetsChanged();
|
||||
};
|
||||
|
||||
#endif // OMOBIDISPLAYTEXTMODEL_H
|
||||
#endif // LEDDISPLAYTEXTMODEL_H
|
|
@ -9,8 +9,8 @@
|
|||
#include <QtAndroidExtras>
|
||||
#endif
|
||||
|
||||
#include "omobidisplaybackend.h"
|
||||
#include "omobidisplaytextmodel.h"
|
||||
#include "leddisplaybackend.h"
|
||||
#include "leddisplaytextmodel.h"
|
||||
|
||||
/*void permissionCallback(const QtAndroid::PermissionResultMap& results) {
|
||||
for(QtAndroid::PermissionResult result : results) {
|
||||
|
@ -32,8 +32,7 @@ int main(int argc, char *argv[])
|
|||
translator.load(":/" + QLocale::system().name() + ".qm");
|
||||
app.installTranslator(&translator);
|
||||
|
||||
qmlRegisterType<OmobiDisplayBackend>("de.itsblue.omobidisplayapp", 1, 0, "OmobiDisplayBackend");
|
||||
qmlRegisterUncreatableType<OmobiDisplayTextModel>("de.itsblue.omobidisplayapp", 1, 0, "OmobiDisplayTextModel", "OmobiDisplayTextModel cannot be created");
|
||||
LedDisplayBackend::init();
|
||||
QBluetoothLeUartClient::init();
|
||||
|
||||
QQuickStyle::setStyle("Material");
|
|
@ -20,10 +20,13 @@ Item {
|
|||
property double glowScale: 1
|
||||
property double glowOpacity: Math.pow( control.opacity, 100 ) * 0.5
|
||||
property bool interactive: true
|
||||
property int horizontalPadding: width * 0.15
|
||||
property int verticalPadding: height * 0.15
|
||||
|
||||
signal clicked
|
||||
|
||||
function checkIsDarkColor(color) {
|
||||
|
||||
var c = color.substring(1); // strip #
|
||||
var rgb = parseInt(c, 16); // convert rrggbb to decimal
|
||||
var r = (rgb >> 16) & 0xff; // extract red
|
||||
|
@ -96,8 +99,8 @@ Item {
|
|||
id: contentText
|
||||
anchors.centerIn: background
|
||||
|
||||
width: background.width * 0.7
|
||||
height: background.height * 0.7
|
||||
width: background.width - 2 * control.horizontalPadding
|
||||
height: background.height - 2 * control.verticalPadding
|
||||
|
||||
font.pixelSize: height
|
||||
fontSizeMode: Text.Fit
|
|
@ -1,7 +1,7 @@
|
|||
import QtQuick 2.0
|
||||
import QtQuick.Controls 2.9
|
||||
import QtQuick.Layouts 1.0
|
||||
import de.itsblue.omobidisplayapp 1.0
|
||||
import de.itsblue.LedDisplayController 1.0
|
||||
import de.itsblue.bluetoothleuart 1.0
|
||||
import QtQuick.Controls.Material 2.0
|
||||
import QtGraphicalEffects 1.0
|
||||
|
@ -30,41 +30,35 @@ Page {
|
|||
|
||||
Chip {
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: mainLayout.height * 0.05
|
||||
Layout.preferredHeight: 35
|
||||
Layout.alignment: Layout.Center
|
||||
|
||||
color: "white"
|
||||
verticalPadding: height * 0.25
|
||||
horizontalPadding: width * 0.05
|
||||
|
||||
color: "#ffffff"
|
||||
text: root.statusText
|
||||
|
||||
onClicked: {
|
||||
backend.bleClient.startScanningForDevices()
|
||||
if(parseInt(root.state) === LedDisplayBackend.LocationPermissionDenied && !backend.bleClient.isLocationPermissionGranted())
|
||||
backend.bleClient.requestLocationPermission()
|
||||
else
|
||||
backend.bleClient.startScanningForDevices()
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
spacing: mainLayout.anchors.margins
|
||||
BusyIndicator {
|
||||
id: busyIndicator
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.leftMargin: width * 0.05
|
||||
anchors.rightMargin: 0
|
||||
|
||||
Text {
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
font.pixelSize: parent.height * 0.4
|
||||
text: root.statusText
|
||||
}
|
||||
|
||||
BusyIndicator {
|
||||
Layout.fillHeight: true
|
||||
Layout.preferredWidth: height
|
||||
|
||||
id: busyIndicator
|
||||
|
||||
scale: 0.8
|
||||
|
||||
opacity: root.working ? 1:0
|
||||
anchors {
|
||||
right: parent.right
|
||||
}
|
||||
|
||||
height: parent.height
|
||||
width: height
|
||||
|
||||
scale: 0.8
|
||||
|
||||
opacity: root.working ? 1:0
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -154,7 +148,7 @@ Page {
|
|||
color: "lightgrey"
|
||||
font.pixelSize: parent.height * 0.6
|
||||
font.bold: true
|
||||
text: parseInt(root.state) === OmobiDisplayBackend.Scanning ? "...":"?"
|
||||
text: parseInt(root.state) === LedDisplayBackend.Scanning ? "...":"?"
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -170,7 +164,7 @@ Page {
|
|||
font.pixelSize: noDisplaysRect.height * 0.3
|
||||
|
||||
color: Qt.darker("lightgrey", 1.1)
|
||||
text: parseInt(root.state) === OmobiDisplayBackend.Scanning ? qsTr("Still scanning"):qsTr("No displays found")
|
||||
text: parseInt(root.state) === LedDisplayBackend.Scanning ? qsTr("Still scanning"):qsTr("No displays found")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -334,7 +328,7 @@ Page {
|
|||
|
||||
states: [
|
||||
State {
|
||||
name: OmobiDisplayBackend.Idle
|
||||
name: LedDisplayBackend.Idle
|
||||
|
||||
PropertyChanges {
|
||||
target: root
|
||||
|
@ -348,7 +342,7 @@ Page {
|
|||
}
|
||||
},
|
||||
State {
|
||||
name: OmobiDisplayBackend.BluetoothOff
|
||||
name: LedDisplayBackend.BluetoothOff
|
||||
PropertyChanges {
|
||||
target: bluetoothOffItem
|
||||
opacity: 1
|
||||
|
@ -364,7 +358,7 @@ Page {
|
|||
}
|
||||
},
|
||||
State {
|
||||
name: OmobiDisplayBackend.LocationPermissionDenied
|
||||
name: LedDisplayBackend.LocationPermissionDenied
|
||||
|
||||
PropertyChanges {
|
||||
target: noPermissionItem
|
||||
|
@ -381,7 +375,7 @@ Page {
|
|||
}
|
||||
},
|
||||
State {
|
||||
name: OmobiDisplayBackend.Scanning
|
||||
name: LedDisplayBackend.Scanning
|
||||
|
||||
PropertyChanges {
|
||||
target: root
|
||||
|
@ -398,7 +392,7 @@ Page {
|
|||
}
|
||||
},
|
||||
State {
|
||||
name: OmobiDisplayBackend.ReadyToConnect
|
||||
name: LedDisplayBackend.ReadyToConnect
|
||||
|
||||
PropertyChanges {
|
||||
target: root
|
||||
|
@ -408,7 +402,7 @@ Page {
|
|||
},
|
||||
|
||||
State {
|
||||
name: OmobiDisplayBackend.AuthenticationRequired
|
||||
name: LedDisplayBackend.AuthenticationRequired
|
||||
|
||||
PropertyChanges {
|
||||
target: authenticationDialog
|
||||
|
@ -427,7 +421,7 @@ Page {
|
|||
}
|
||||
},
|
||||
State {
|
||||
name: OmobiDisplayBackend.Authenticating
|
||||
name: LedDisplayBackend.Authenticating
|
||||
|
||||
PropertyChanges {
|
||||
target: availableDisplaysListView
|
||||
|
@ -442,7 +436,7 @@ Page {
|
|||
},
|
||||
|
||||
State {
|
||||
name: OmobiDisplayBackend.Connecting
|
||||
name: LedDisplayBackend.Connecting
|
||||
|
||||
PropertyChanges {
|
||||
target: availableDisplaysListView
|
||||
|
@ -456,7 +450,7 @@ Page {
|
|||
}
|
||||
},
|
||||
State {
|
||||
name: OmobiDisplayBackend.Initing
|
||||
name: LedDisplayBackend.Initing
|
||||
|
||||
PropertyChanges {
|
||||
target: availableDisplaysListView
|
|
@ -4,7 +4,7 @@ import QtQuick.Layouts 1.0
|
|||
import QtQuick.Controls.Material 2.0
|
||||
import QtGraphicalEffects 1.0
|
||||
|
||||
import de.itsblue.omobidisplayapp 1.0
|
||||
import de.itsblue.LedDisplayController 1.0
|
||||
import de.itsblue.bluetoothleuart 1.0
|
||||
|
||||
Page {
|
||||
|
@ -34,7 +34,7 @@ Page {
|
|||
|
||||
Chip {
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: mainLayout.height * 0.05
|
||||
Layout.preferredHeight: 35
|
||||
Layout.alignment: Layout.Center
|
||||
|
||||
interactive: false
|
||||
|
@ -105,6 +105,9 @@ Page {
|
|||
|
||||
DisplayEditDialog {
|
||||
id: displayEditDialog
|
||||
|
||||
Material.theme: root.Material.theme
|
||||
Material.accent: root.Material.accent
|
||||
}
|
||||
|
||||
Dialog {
|
||||
|
@ -127,9 +130,11 @@ Page {
|
|||
closePolicy: Popup.NoAutoClose
|
||||
modal: true
|
||||
|
||||
Material.theme: root.Material.theme
|
||||
Material.accent: root.Material.accent
|
||||
|
||||
contentItem: ColumnLayout {
|
||||
BusyIndicator {
|
||||
|
||||
}
|
||||
|
||||
Text {
|
||||
|
@ -141,10 +146,10 @@ Page {
|
|||
|
||||
states: [
|
||||
State {
|
||||
name: OmobiDisplayBackend.Connected
|
||||
name: LedDisplayBackend.Connected
|
||||
},
|
||||
State {
|
||||
name: OmobiDisplayBackend.Loading
|
||||
name: LedDisplayBackend.Loading
|
||||
|
||||
PropertyChanges {
|
||||
target: loadingDialog
|
|
@ -3,7 +3,7 @@ import QtQuick.Controls 2.12
|
|||
import QtQuick.Layouts 1.9
|
||||
import QtQuick.Controls.Material 2.0
|
||||
|
||||
import de.itsblue.omobidisplayapp 1.0
|
||||
import de.itsblue.LedDisplayController 1.0
|
||||
|
||||
Dialog {
|
||||
id: control
|
|
@ -3,7 +3,7 @@ import QtQuick.Controls 2.9
|
|||
import QtQuick.Layouts 1.9
|
||||
import QtQuick.Controls.Material 2.0
|
||||
|
||||
import de.itsblue.omobidisplayapp 1.0
|
||||
import de.itsblue.LedDisplayController 1.0
|
||||
|
||||
ListView {
|
||||
id: control
|
|
@ -3,7 +3,7 @@ import QtQuick.Controls 2.12
|
|||
import QtQuick.Layouts 1.9
|
||||
import QtQuick.Controls.Material 2.0
|
||||
|
||||
import de.itsblue.omobidisplayapp 1.0
|
||||
import de.itsblue.LedDisplayController 1.0
|
||||
|
||||
Dialog {
|
||||
id: control
|
||||
|
@ -31,6 +31,7 @@ Dialog {
|
|||
editingModel.color = colorColorPicker.value
|
||||
editingModel.alignment = alignmentComboBox.currentIndex
|
||||
editingModel.scroll = scrollSwitch.checked
|
||||
editingModel.scrollDirection = scrollDirectionComboBox.currentIndex
|
||||
editingModel.scrollSpeed = scrollSpeedSpinBox.value
|
||||
editingModel.scrollCount = scrollCountSpinBox.value
|
||||
}
|
||||
|
@ -39,8 +40,9 @@ Dialog {
|
|||
activeSwitch.checked,
|
||||
runtimeSpinBox.value,
|
||||
colorColorPicker.value,
|
||||
alignmentComboBox.currentText,
|
||||
alignmentComboBox.currentIndex,
|
||||
scrollSwitch.checked,
|
||||
scrollDirectionComboBox.currentIndex,
|
||||
scrollSpeedSpinBox.value,
|
||||
scrollCountSpinBox.value
|
||||
)
|
||||
|
@ -83,6 +85,7 @@ Dialog {
|
|||
id: runtimeSpinBox
|
||||
Layout.fillWidth: true
|
||||
editable: true
|
||||
from: 1
|
||||
to: 3600
|
||||
text: qsTr("Runtime (in s)")
|
||||
}
|
||||
|
@ -96,7 +99,7 @@ Dialog {
|
|||
ComboBoxDelegate {
|
||||
id: alignmentComboBox
|
||||
Layout.fillWidth: true
|
||||
model: ["left", "center", "right"]
|
||||
model: [qsTr("left"), qsTr("center"), qsTr("right")]
|
||||
text: qsTr("Alignment")
|
||||
}
|
||||
|
||||
|
@ -106,6 +109,13 @@ Dialog {
|
|||
text: qsTr("Scroll")
|
||||
}
|
||||
|
||||
ComboBoxDelegate {
|
||||
id: scrollDirectionComboBox
|
||||
Layout.fillWidth: true
|
||||
model: [qsTr("right to left"), qsTr("left to right")]
|
||||
text: qsTr("Scroll direction")
|
||||
}
|
||||
|
||||
SpinBoxDelegate {
|
||||
id: scrollSpeedSpinBox
|
||||
Layout.fillWidth: true
|
||||
|
@ -117,7 +127,7 @@ Dialog {
|
|||
SpinBoxDelegate {
|
||||
id: scrollCountSpinBox
|
||||
Layout.fillWidth: true
|
||||
from: 0
|
||||
from: 1
|
||||
editable: true
|
||||
text: qsTr("Scroll count")
|
||||
}
|
||||
|
@ -165,6 +175,7 @@ Dialog {
|
|||
colorColorPicker.value = editingModel.color
|
||||
alignmentComboBox.currentIndex = editingModel.alignment
|
||||
scrollSwitch.checked = editingModel.scroll
|
||||
scrollDirectionComboBox.currentIndex = editingModel.scrollDirection
|
||||
scrollSpeedSpinBox.value = editingModel.scrollSpeed
|
||||
scrollCountSpinBox.value = editingModel.scrollCount
|
||||
|
||||
|
@ -181,11 +192,12 @@ Dialog {
|
|||
function reset() {
|
||||
activeSwitch.checked = true
|
||||
textTextField.value = ""
|
||||
runtimeSpinBox.value = 0
|
||||
colorColorPicker.value = ""
|
||||
runtimeSpinBox.value = 1
|
||||
colorColorPicker.value = "#ffffff"
|
||||
alignmentComboBox.currentIndex = 0
|
||||
scrollSwitch.checked = false
|
||||
scrollDirectionComboBox.currentIndex = 0
|
||||
scrollSpeedSpinBox.value = 5
|
||||
scrollCountSpinBox.value = 0
|
||||
scrollCountSpinBox.value = 1
|
||||
}
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
import QtQuick 2.12
|
||||
import QtQuick.Controls 2.0
|
||||
import QtQuick.Window 2.12
|
||||
import de.itsblue.omobidisplayapp 1.0
|
||||
import de.itsblue.LedDisplayController 1.0
|
||||
import de.itsblue.bluetoothleuart 1.0
|
||||
import QtQuick.Controls.Material 2.0
|
||||
import QtQuick.Layouts 1.0
|
||||
|
@ -24,7 +24,7 @@ ApplicationWindow {
|
|||
anchors.fill: parent
|
||||
|
||||
Material.accent: "#0094ff"
|
||||
Material.theme: Material.System
|
||||
Material.theme: Material.Light
|
||||
|
||||
header: ToolBar {
|
||||
id: headerToolBar
|
||||
|
@ -97,7 +97,7 @@ ApplicationWindow {
|
|||
}
|
||||
}
|
||||
|
||||
OmobiDisplayBackend {
|
||||
LedDisplayBackend {
|
||||
id: backend
|
||||
}
|
||||
|
||||
|
@ -171,7 +171,7 @@ ApplicationWindow {
|
|||
|
||||
states: [
|
||||
State {
|
||||
name: OmobiDisplayBackend.Idle
|
||||
name: LedDisplayBackend.Idle
|
||||
PropertyChanges {
|
||||
target: mainStack
|
||||
currentComponent: connectPageComp
|
||||
|
@ -179,7 +179,7 @@ ApplicationWindow {
|
|||
},
|
||||
|
||||
State {
|
||||
name: OmobiDisplayBackend.BluetoothOff
|
||||
name: LedDisplayBackend.BluetoothOff
|
||||
PropertyChanges {
|
||||
target: mainStack
|
||||
currentComponent: connectPageComp
|
||||
|
@ -187,7 +187,7 @@ ApplicationWindow {
|
|||
},
|
||||
|
||||
State {
|
||||
name: OmobiDisplayBackend.LocationPermissionDenied
|
||||
name: LedDisplayBackend.LocationPermissionDenied
|
||||
PropertyChanges {
|
||||
target: mainStack
|
||||
currentComponent: connectPageComp
|
||||
|
@ -195,7 +195,7 @@ ApplicationWindow {
|
|||
},
|
||||
|
||||
State {
|
||||
name: OmobiDisplayBackend.Scanning
|
||||
name: LedDisplayBackend.Scanning
|
||||
PropertyChanges {
|
||||
target: mainStack
|
||||
currentComponent: connectPageComp
|
||||
|
@ -203,7 +203,7 @@ ApplicationWindow {
|
|||
},
|
||||
|
||||
State {
|
||||
name: OmobiDisplayBackend.ReadyToConnect
|
||||
name: LedDisplayBackend.ReadyToConnect
|
||||
PropertyChanges {
|
||||
target: mainStack
|
||||
currentComponent: connectPageComp
|
||||
|
@ -211,7 +211,7 @@ ApplicationWindow {
|
|||
},
|
||||
|
||||
State {
|
||||
name: OmobiDisplayBackend.Connecting
|
||||
name: LedDisplayBackend.Connecting
|
||||
PropertyChanges {
|
||||
target: mainStack
|
||||
currentComponent: connectPageComp
|
||||
|
@ -219,7 +219,7 @@ ApplicationWindow {
|
|||
},
|
||||
|
||||
State {
|
||||
name: OmobiDisplayBackend.AuthenticationRequired
|
||||
name: LedDisplayBackend.AuthenticationRequired
|
||||
PropertyChanges {
|
||||
target: mainStack
|
||||
currentComponent: connectPageComp
|
||||
|
@ -227,7 +227,7 @@ ApplicationWindow {
|
|||
},
|
||||
|
||||
State {
|
||||
name: OmobiDisplayBackend.Authenticating
|
||||
name: LedDisplayBackend.Authenticating
|
||||
PropertyChanges {
|
||||
target: mainStack
|
||||
currentComponent: connectPageComp
|
||||
|
@ -235,7 +235,7 @@ ApplicationWindow {
|
|||
},
|
||||
|
||||
State {
|
||||
name: OmobiDisplayBackend.Initing
|
||||
name: LedDisplayBackend.Initing
|
||||
PropertyChanges {
|
||||
target: mainStack
|
||||
currentComponent: connectPageComp
|
||||
|
@ -243,7 +243,7 @@ ApplicationWindow {
|
|||
},
|
||||
|
||||
State {
|
||||
name: OmobiDisplayBackend.Connected
|
||||
name: LedDisplayBackend.Connected
|
||||
PropertyChanges {
|
||||
target: mainStack
|
||||
currentComponent: connectedPageComp
|
||||
|
@ -259,7 +259,7 @@ ApplicationWindow {
|
|||
},
|
||||
|
||||
State {
|
||||
name: OmobiDisplayBackend.Loading
|
||||
name: LedDisplayBackend.Loading
|
||||
PropertyChanges {
|
||||
target: mainStack
|
||||
currentComponent: connectedPageComp
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 7.1 KiB |
Binary file not shown.
|
@ -55,6 +55,24 @@
|
|||
<source>No displays found. Tap to scan again</source>
|
||||
<translation>Keine Displays gefunden. Tippe um erneut zu suchen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bluetooth is turned off</source>
|
||||
<translation>Bluetooth ist ausgeschaltet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error:
|
||||
Location permission denied!</source>
|
||||
<translation>Fehler:
|
||||
Standort-Berechtigung verweigert!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>This app requires location permission in order for Bluetooth to work, it will not actually access your location.</source>
|
||||
<translation>Diese App benötigt die Standort-Berechtigung, damit sie Bluetooth verwenden kann. Sie wird nicht auf deinen Standort zugreifen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tap here to continue</source>
|
||||
<translation>Tippe hier um fortzufahren</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ConnectedPage</name>
|
|
@ -1 +0,0 @@
|
|||
Subproject commit 76e457593e889885fd410fdbcdd659706a1eceb8
|
|
@ -59,6 +59,7 @@ public:
|
|||
ColorParameter,
|
||||
AlignmentParameter,
|
||||
ScrollParameter,
|
||||
ScrollDirectionParameter,
|
||||
ScrollSpeedParameter,
|
||||
ScrollCountParameter,
|
||||
IndexParameter,
|
||||
|
@ -126,6 +127,7 @@ private:
|
|||
char color[7];
|
||||
text_align_t alignment;
|
||||
bool scroll;
|
||||
int scrollDirection;
|
||||
int scrollSpeed; /*!< Between 0 and 10 */
|
||||
uint16_t scrollCount;
|
||||
} text_set_t;
|
||||
|
@ -138,7 +140,7 @@ private:
|
|||
} sets_t;
|
||||
|
||||
// storage variables
|
||||
const text_set_t defaultTextSet {"", false, 0, "", AlignCenter, false, 0, 0};
|
||||
const text_set_t defaultTextSet {"", false, 0, "", AlignCenter, false, 0, 0, 0};
|
||||
sets_t text_sets;
|
||||
|
||||
// storage control
|
||||
|
|
|
@ -292,6 +292,12 @@ LedDisplayController::GetSetTextSetParameterExitCode LedDisplayController::getSe
|
|||
returnValue = currentTextSet->scroll ? "true" : "false";
|
||||
break;
|
||||
|
||||
case ScrollDirectionParameter:
|
||||
if(set)
|
||||
currentTextSet->scrollDirection = value->toInt();
|
||||
else
|
||||
returnValue = currentTextSet->scrollDirection;
|
||||
break;
|
||||
case ScrollSpeedParameter:
|
||||
if (set)
|
||||
{
|
||||
|
|
|
@ -110,6 +110,10 @@ void OmobiLedDisplay::onDataReceived(String dataString)
|
|||
textSetIndex,
|
||||
LedDisplayController::DisplayTextSetParameter(textSetParameter));
|
||||
|
||||
Serial.println("sending parameter: " + String(textSetParameter) + " with value: " + this->ledDisplayController->getTextSetParameter(
|
||||
textSetIndex,
|
||||
LedDisplayController::DisplayTextSetParameter(textSetParameter)));
|
||||
|
||||
String json;
|
||||
serializeJson(doc, json);
|
||||
this->bleServer->sendData(json);
|
||||
|
|
Loading…
Reference in a new issue