From 3de0a98f89a6481ab9ffe89bb3d0a056599b8bda Mon Sep 17 00:00:00 2001 From: Micke Prag Date: Fri, 17 Feb 2012 15:36:36 +0100 Subject: [PATCH] Add new 'Controllers' plugin to admin controllers, see #108 --- telldus-gui/Plugins/CMakeLists.txt | 7 +- .../Plugins/Controllers/CMakeLists.txt | 41 ++++++++ .../Plugins/Controllers/ControllerView.qml | 92 ++++++++++++++++++ .../Plugins/Controllers/HeaderTitle.qml | 10 ++ telldus-gui/Plugins/Controllers/__init__.js | 25 +++++ .../Plugins/Controllers/btn_action_remove.png | Bin 0 -> 1123 bytes .../Plugins/Controllers/controller.cpp | 84 ++++++++++++++++ telldus-gui/Plugins/Controllers/controller.h | 52 ++++++++++ .../Plugins/Controllers/controllerlist.cpp | 48 +++++++++ .../Plugins/Controllers/controllerlist.h | 30 ++++++ .../Plugins/Controllers/controllersplugin.cpp | 30 ++++++ .../Plugins/Controllers/controllersplugin.h | 16 +++ telldus-gui/Plugins/Controllers/header_bg.png | Bin 0 -> 526 bytes telldus-gui/Plugins/Controllers/icon.png | Bin 0 -> 754 bytes telldus-gui/Plugins/Controllers/main.qml | 30 ++++++ telldus-gui/Plugins/Controllers/row_bg.png | Bin 0 -> 346 bytes telldus-gui/Plugins/Controllers/tellstick.png | Bin 0 -> 17555 bytes .../Plugins/Controllers/tellstick_duo.png | Bin 0 -> 26377 bytes 18 files changed, 464 insertions(+), 1 deletion(-) create mode 100644 telldus-gui/Plugins/Controllers/CMakeLists.txt create mode 100644 telldus-gui/Plugins/Controllers/ControllerView.qml create mode 100644 telldus-gui/Plugins/Controllers/HeaderTitle.qml create mode 100644 telldus-gui/Plugins/Controllers/__init__.js create mode 100644 telldus-gui/Plugins/Controllers/btn_action_remove.png create mode 100644 telldus-gui/Plugins/Controllers/controller.cpp create mode 100644 telldus-gui/Plugins/Controllers/controller.h create mode 100644 telldus-gui/Plugins/Controllers/controllerlist.cpp create mode 100644 telldus-gui/Plugins/Controllers/controllerlist.h create mode 100644 telldus-gui/Plugins/Controllers/controllersplugin.cpp create mode 100644 telldus-gui/Plugins/Controllers/controllersplugin.h create mode 100644 telldus-gui/Plugins/Controllers/header_bg.png create mode 100644 telldus-gui/Plugins/Controllers/icon.png create mode 100644 telldus-gui/Plugins/Controllers/main.qml create mode 100644 telldus-gui/Plugins/Controllers/row_bg.png create mode 100644 telldus-gui/Plugins/Controllers/tellstick.png create mode 100644 telldus-gui/Plugins/Controllers/tellstick_duo.png diff --git a/telldus-gui/Plugins/CMakeLists.txt b/telldus-gui/Plugins/CMakeLists.txt index 366d2f0d..4b29d679 100644 --- a/telldus-gui/Plugins/CMakeLists.txt +++ b/telldus-gui/Plugins/CMakeLists.txt @@ -8,11 +8,12 @@ IF (BUILD_LIBTELLDUS-GUI) SET(BUILD_PLUGIN_SYSTRAY TRUE CACHE BOOL "Build plugin 'Systray'") ENDIF (BUILD_LIBTELLDUS-GUI) +SET(BUILD_PLUGIN_CONTROLLERS FALSE CACHE BOOL "Build plugin 'Controllers admin plugin'") SET(BUILD_PLUGIN_DBUS FALSE CACHE BOOL "Build plugin 'DBus'") SET(BUILD_PLUGIN_LIVE FALSE CACHE BOOL "Build plugin 'Telldus Live!'") -SET(BUILD_PLUGIN_XPL FALSE CACHE BOOL "Build plugin 'xPL'") SET(BUILD_PLUGIN_SCHEDULERGUISIMPLE FALSE CACHE BOOL "Build plugin 'Simple Scheduler GUI'") SET(BUILD_PLUGIN_SENSORS TRUE CACHE BOOL "Build plugin 'Sensors'") +SET(BUILD_PLUGIN_XPL FALSE CACHE BOOL "Build plugin 'xPL'") ADD_SUBDIRECTORY(telldus) @@ -28,6 +29,10 @@ IF(BUILD_PLUGIN_SYSTRAY) ADD_SUBDIRECTORY(Systray) ENDIF(BUILD_PLUGIN_SYSTRAY) +IF(BUILD_PLUGIN_CONTROLLERS) + ADD_SUBDIRECTORY(Controllers) +ENDIF() + IF(BUILD_PLUGIN_DBUS) ADD_SUBDIRECTORY(DBus) ENDIF(BUILD_PLUGIN_DBUS) diff --git a/telldus-gui/Plugins/Controllers/CMakeLists.txt b/telldus-gui/Plugins/Controllers/CMakeLists.txt new file mode 100644 index 00000000..71825541 --- /dev/null +++ b/telldus-gui/Plugins/Controllers/CMakeLists.txt @@ -0,0 +1,41 @@ +SET(REQUIRE_PLUGIN_QML TRUE PARENT_SCOPE) +#SET(REQUIRE_PLUGIN_SETTINGS TRUE PARENT_SCOPE) + +SET(QT_USE_QTDECLARATIVE TRUE) + +SET( Plugin_NAME "Controllers" ) + + +SET( Plugin_SRCS + controller.cpp + controllerlist.cpp + controllersplugin.cpp +) + +SET( Plugin_HDRS + controllersplugin.h +) + +SET( Plugin_MOC_HDRS + controller.h + controllerlist.h +) + +SET( Plugin_PATH "com.telldus.controllers" ) + +SET( Plugin_EXTRA + btn_action_remove.png + ControllerView.qml + header_bg.png + HeaderTitle.qml + icon.png + main.qml + row_bg.png + tellstick.png + tellstick_duo.png +) + +FIND_PACKAGE(TelldusCore REQUIRED) +SET( Plugin_LIBRARIES ${TELLDUSCORE_LIBRARY} ) + +INCLUDE( ../TelldusCenterPlugin.cmake NO_POLICY_SCOPE ) diff --git a/telldus-gui/Plugins/Controllers/ControllerView.qml b/telldus-gui/Plugins/Controllers/ControllerView.qml new file mode 100644 index 00000000..00989020 --- /dev/null +++ b/telldus-gui/Plugins/Controllers/ControllerView.qml @@ -0,0 +1,92 @@ +import QtQuick 1.1 +import QtDesktop 0.1 + +BorderImage { + source: "row_bg.png" + border.left: 5; border.top: 5 + border.right: 5; border.bottom: 5 + width: parent.width + height: content.height + content.anchors.margins*2 + + Item { + id: content + anchors.top: parent.top + anchors.left: parent.left + anchors.margins: 5 + height: childrenRect.height + width: childrenRect.width + + Row { + spacing: 10 + Image { + source: icon(controller.type) + width: 50 + smooth: true + fillMode: Image.PreserveAspectFit + opacity: controller.available ? 1 : 0.5 + } + + Column { + Text { + color: "#004275" + text: productName(controller.type) + font.pixelSize: 15 + } + TextField { + //id: nameEdit + text: controller.name; + placeholderText: 'Enter a name for this controller' + onTextChanged: controller.name = text + } + } + Loader { + sourceComponent: tellstick + } + Image { + source: "btn_action_remove.png" + visible: !controller.available + } + } + } + + Component { + id: tellstick + Grid { + spacing: 3 + columns: 2 + Text { + color: "#004275" + text: "Serial:" + } + Text { + color: "#004275" + text: controller.serial + } + Text { + color: "#004275" + text: "Firmware version:" + } + Text { + color: "#004275" + text: controller.firmware + } + } + } + + function icon(type) { + if (type == 1) { + return "tellstick.png"; + } else if (type == 2) { + return "tellstick_duo.png"; + } + return "tellstick.png"; + } + function productName(type) { + if (type == 1) { + return "TellStick"; + } else if (type == 2) { + return "TellStick Duo"; + } + return ""; + } +} diff --git a/telldus-gui/Plugins/Controllers/HeaderTitle.qml b/telldus-gui/Plugins/Controllers/HeaderTitle.qml new file mode 100644 index 00000000..0d7ae213 --- /dev/null +++ b/telldus-gui/Plugins/Controllers/HeaderTitle.qml @@ -0,0 +1,10 @@ +import Qt 4.7 + +Text { + id: headerTitle + text: "Name" + color: "white" + font.weight: Font.Bold + height: parent.height + verticalAlignment: Text.AlignVCenter +} diff --git a/telldus-gui/Plugins/Controllers/__init__.js b/telldus-gui/Plugins/Controllers/__init__.js new file mode 100644 index 00000000..b06ea8c4 --- /dev/null +++ b/telldus-gui/Plugins/Controllers/__init__.js @@ -0,0 +1,25 @@ +/** Sensors **/ +__setupPackage__( __extension__ ); + +__postInit__ = function() { + application.allDoneLoading.connect( com.telldus.controllers.init ); +} + +com.telldus.controllers = function() { + var view = null; + + function init() { + view = new com.telldus.qml.view({}); + view.setProperty('controllerModel', com.telldus.controllers.list); + view.load("main.qml"); + view.sizeRootObjectToView(true); + application.configuration.addPage('Controllers', view, 'icon.png'); + com.telldus.controllers.list.changed.connect(application.configuration.valueChanged) + application.configuration.save.connect(com.telldus.controllers.list.save) + } + + return { //Public functions + init:init + } + +}(); diff --git a/telldus-gui/Plugins/Controllers/btn_action_remove.png b/telldus-gui/Plugins/Controllers/btn_action_remove.png new file mode 100644 index 0000000000000000000000000000000000000000..d9e5bf753f9b7134bc75ac749fba154f00515554 GIT binary patch literal 1123 zcmV-p1f2VcP)OH3AX z5cDKIfG3ZF_z*dG6Cc2h4*I>W>yKqwKJWMY zn|4VmV1+-NpPPG3K`)BW>BE!KDd(YN3@M3U9gWA2R{H%Xo-4lX?A%^nS$SiIGcZ(B z(Xd*pOt|Mmi2&tC(?_9llWz$j>dwYBDIz@4l%uZOTfH#{H z;OABhfyJ|Bf=Y<~oDw*p#7}^gCP!ON%J&zSmTuWSbNl=IKQ(kOK}6&v{1|j;eSf0= zC6&`hQC*L^-R`PgUpP28{4LCrc@vr6*_06L)Q*K{bV19$wJY-r3yX#0$f78!Aq5~D zgU>(E<|6 z@}O{vg?z+JiIotP$P6xgk-idUk`Vw2;&|!E%%9Gi7j525+yw|A04f!M#GR>faj^(n zLgJ8zj;NSkWhf>Sp)dcF~2YF-Bkr}uHrK>O5A_>DoNL9 z{CW)dEXN>n*$Tm&)y`KnR}|+`;Ak>oOr{}Bl;WU}@!yPFcP-6!)WzA^b16_9Bk?~} zE0%o}cn4Be^Bnccwd<4+?JdPUY{850|Yl&Bh++1y>zB#i!EOt{vOtg>e-M6!zI zJ52M_(DN2eWTbd5jPvLSP9FarC-QK z-APrA((0CHHadGJb{?P>g>!-Hf>au>p=eQx%`EMrrN+vrf@cJoBUATvt7#fTR7*oPA!$6G=z*kp$eF_^pjiRapTT!RY3G!f zm_+9kx?L{SB&?RUciG&V-sTFnz+yR>{4gIQJ!A#vtdUNkF~`Z>XqJF#st*hZS1kz1 zd?oxhy4#TV#^Exc?)BnX8WpwiWU@%y>GG#Ts zVD3vB8?V=PcX!{G({Wk;8XDdkuQ%4LES8z{UAEpX*zW}% p>wo+uZq0pc?n84Q@R +#include + +class Controller::PrivateData { +public: + bool available, nameChanged; + int id, type; + QString name, serial, firmware; +}; + +Controller::Controller(int id, int type, const QString &name, QObject *parent) : + QObject(parent) +{ + d = new PrivateData; + d->id = id; + d->type = type; + d->available = false; + d->nameChanged = false; + d->name = name; + + const int DATA_LENGTH = 255; + char buff[DATA_LENGTH]; + if (tdControllerValue(id, "serial", buff, DATA_LENGTH) == TELLSTICK_SUCCESS) { + d->serial = QString::fromUtf8(buff); + } + if (tdControllerValue(id, "firmware", buff, DATA_LENGTH) == TELLSTICK_SUCCESS) { + d->firmware = QString::fromUtf8(buff); + } +} + +Controller::~Controller() { + delete d; +} + +bool Controller::available() const { + return d->available; +} + +void Controller::setAvailable(bool available) { + d->available = available; + emit availableChanged(); + emit firmwareChanged(); +} + +QString Controller::firmware() const { + if (!d->available) { + return "?"; + } + return d->firmware; +} + +int Controller::id() const { + return d->id; +} + +QString Controller::name() const { + return d->name; +} + +void Controller::setName(const QString &name) { + if (name == d->name) { + return; + } + d->nameChanged = true; + d->name = name; + emit nameChanged(); +} + +void Controller::save() { + if (d->nameChanged) { + tdSetControllerValue(d->id, "name", d->name.toUtf8()); + d->nameChanged = false; + } +} + +QString Controller::serial() const { + return d->serial; +} + +int Controller::type() const { + return d->type; +} + diff --git a/telldus-gui/Plugins/Controllers/controller.h b/telldus-gui/Plugins/Controllers/controller.h new file mode 100644 index 00000000..07740c63 --- /dev/null +++ b/telldus-gui/Plugins/Controllers/controller.h @@ -0,0 +1,52 @@ +#ifndef CONTROLLER_H +#define CONTROLLER_H + +#include +#include + +class Controller : public QObject +{ + Q_OBJECT + Q_PROPERTY(bool available READ available NOTIFY availableChanged) + Q_PROPERTY(QString firmware READ firmware NOTIFY firmwareChanged) + Q_PROPERTY(int id READ id NOTIFY idChanged) + Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) + Q_PROPERTY(QString serial READ serial NOTIFY serialChanged) + Q_PROPERTY(int type READ type NOTIFY typeChanged()) + +public: + explicit Controller(int id = 0, int type = 1, const QString &name = "", QObject *parent = 0); + ~Controller(); + + bool available() const; + void setAvailable(bool available); + + QString firmware() const; + + int id() const; + + QString name() const; + void setName(const QString &name); + + void save(); + + QString serial() const; + + int type() const; + +signals: + void availableChanged(); + void firmwareChanged(); + void idChanged(); + void nameChanged(); + void serialChanged(); + void typeChanged(); + +private: + class PrivateData; + PrivateData *d; +}; + +Q_DECLARE_METATYPE(Controller*) + +#endif // CONTROLLER_H diff --git a/telldus-gui/Plugins/Controllers/controllerlist.cpp b/telldus-gui/Plugins/Controllers/controllerlist.cpp new file mode 100644 index 00000000..849999d0 --- /dev/null +++ b/telldus-gui/Plugins/Controllers/controllerlist.cpp @@ -0,0 +1,48 @@ +#include "controllerlist.h" +#include "controller.h" +#include + +#include + +class ControllerList::PrivateData { +public: + QList list; +}; + +ControllerList::ControllerList(QObject *parent) : + QAbstractListModel(parent) +{ + d = new PrivateData; + + QHash roles; + roles[Qt::UserRole+1] = "controller"; + setRoleNames(roles); + + const int DATA_LENGTH = 255; + char name[DATA_LENGTH]; + int available, controllerId, type; + while(tdController(&controllerId, &type, name, DATA_LENGTH, &available) == TELLSTICK_SUCCESS) { + Controller *controller = new Controller(controllerId, type, QString::fromUtf8(name), this); + controller->setAvailable(available); + connect(controller, SIGNAL(nameChanged()), this, SIGNAL(changed())); + d->list.append(controller); + } +} + +ControllerList::~ControllerList() { + delete d; +} + +QVariant ControllerList::data(const QModelIndex &index, int role) const { + return QVariant::fromValue(d->list.at(index.row())); +} + +int ControllerList::rowCount(const QModelIndex &parent) const { + return d->list.size(); +} + +void ControllerList::save() { + for(int i = 0; i < d->list.size(); ++i) { + d->list.at(i)->save(); + } +} diff --git a/telldus-gui/Plugins/Controllers/controllerlist.h b/telldus-gui/Plugins/Controllers/controllerlist.h new file mode 100644 index 00000000..d5884feb --- /dev/null +++ b/telldus-gui/Plugins/Controllers/controllerlist.h @@ -0,0 +1,30 @@ +#ifndef CONTROLLERLIST_H +#define CONTROLLERLIST_H + +#include +#include + +class ControllerList : public QAbstractListModel +{ + Q_OBJECT + Q_PROPERTY(int length READ rowCount) +public: + explicit ControllerList(QObject *parent = 0); + ~ControllerList(); + + virtual int rowCount(const QModelIndex &parent = QModelIndex()) const; + virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; + +signals: + void changed(); + +public slots: + void save(); + +private: + class PrivateData; + PrivateData *d; + +}; + +#endif // CONTROLLERLIST_H diff --git a/telldus-gui/Plugins/Controllers/controllersplugin.cpp b/telldus-gui/Plugins/Controllers/controllersplugin.cpp new file mode 100644 index 00000000..681ccca2 --- /dev/null +++ b/telldus-gui/Plugins/Controllers/controllersplugin.cpp @@ -0,0 +1,30 @@ +#include "controllersplugin.h" +#include "controllerlist.h" +#include "controller.h" +#include +#include + + +ControllersPlugin::ControllersPlugin ( QObject * parent ) + :QScriptExtensionPlugin( parent ) +{ +} + +ControllersPlugin::~ControllersPlugin() { +} + +void ControllersPlugin::initialize ( const QString & key, QScriptEngine * engine ) { + if (key == "com.telldus.controllers") { + qmlRegisterType("Telldus", 1, 0, "Controller"); + + QScriptValue qml = engine->globalObject().property("com").property("telldus").property("controllers"); + QScriptValue list = engine->newQObject(new ControllerList(), QScriptEngine::ScriptOwnership); + qml.setProperty("list", list); + } +} + +QStringList ControllersPlugin::keys () const { + return QStringList() << "com.telldus.controllers"; +} + +Q_EXPORT_PLUGIN2(ControllersInterface, ControllersPlugin) diff --git a/telldus-gui/Plugins/Controllers/controllersplugin.h b/telldus-gui/Plugins/Controllers/controllersplugin.h new file mode 100644 index 00000000..57cbe1d2 --- /dev/null +++ b/telldus-gui/Plugins/Controllers/controllersplugin.h @@ -0,0 +1,16 @@ +#ifndef CONTROLLERSPLUGIN_H +#define CONTROLLERSPLUGIN_H + +#include + +class ControllersPlugin : public QScriptExtensionPlugin { +public: + ControllersPlugin ( QObject * parent = 0 ); + ~ControllersPlugin (); + + virtual void initialize ( const QString & key, QScriptEngine * engine ); + virtual QStringList keys () const; +}; + + +#endif // CONTROLLERSPLUGIN_H diff --git a/telldus-gui/Plugins/Controllers/header_bg.png b/telldus-gui/Plugins/Controllers/header_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..564a158b5d9c69a045712278b45085512e0474f7 GIT binary patch literal 526 zcmV+p0`dKcP)J)aLLt2t;vW#y(ps?7Lexe~5Cei*7!%YKMm-bF*WIl%r;#8> zyemZKc-hqp|drJ&7&)e zm~n;=Rwjo=Ov}d3SsIsF14gleD$R9OL8v)^4sy82zU*t{(ch#i*h*X@o_cU1*32S@ z63y9}Y=GfVGV_RwyC)RORk&G+zpGk^VPtZ7@-EYxL?d%x-nwd9Kd~RMZQGFc4`dCN zpHCwbHQ3>#$HpQhKfp`7aLWuaJDh zzf(xRmWJPZmXLq=rzj-Dl(Mc&T_m{XP+&M|n2J+^UkCjr(bUGPafV~(dEL_WfIF;e zP{L7e6EWqp6U9V03enO|i|WVLH1eE4jv6EGP`I?VAyOA9OFFJ^ZSMjM08uy&f`RU1 Q`v3p{07*qoM6N<$f)*X<_5c6? literal 0 HcmV?d00001 diff --git a/telldus-gui/Plugins/Controllers/icon.png b/telldus-gui/Plugins/Controllers/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4badd42f0dafbb110ec9bb0c2ebe1ed0d957c1ec GIT binary patch literal 754 zcmV!sW1<6BEam5{$I63ypy?8EAv%3 z;ALa0ivUlI5_FHew-u;_WF*UxpT&Pn#4=b1Bg%)-umqR|Q?Q_wxm6a_$bwJ=q%7E~ zT3{Azhd*IkU|C--3rfNikg}jLtv-Zqfk)5{R&d}KY=*yKT3{K!A9hHsYNUCE5KT? zFR;i_z(V*AGyMwqtu6P{QNW10Jc1< zXMP3TR+ZbU;*!azQw><6lI^b^1{B_F07@xE!#0&NAQ+h-HsP99f5rcR-lG- k03Jg-!3SKn%Rd1I0Ev{!`I2XhSO5S307*qoM6N<$f)YDg9RL6T literal 0 HcmV?d00001 diff --git a/telldus-gui/Plugins/Controllers/main.qml b/telldus-gui/Plugins/Controllers/main.qml new file mode 100644 index 00000000..fb8f164b --- /dev/null +++ b/telldus-gui/Plugins/Controllers/main.qml @@ -0,0 +1,30 @@ +import QtQuick 1.1 + +//import QtDesktop 0.1 + +Item { + width: 500 //Minimum width + + Column { + spacing: 1 + anchors.fill: parent + + BorderImage { + id: header + source: "header_bg.png" + width: parent.width; height: 40 + border.left: 5; border.top: 5 + border.right: 5; border.bottom: 5 + + HeaderTitle { + text: "Controllers" + anchors.left: parent.left + anchors.leftMargin: 15 + } + } + Repeater { + model: controllerModel + delegate: ControllerView {} + } + } +} diff --git a/telldus-gui/Plugins/Controllers/row_bg.png b/telldus-gui/Plugins/Controllers/row_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..06f9d82d406405c1137c8672addb67c8054ad975 GIT binary patch literal 346 zcmV-g0j2(lP)J&&wc|Kq7zX1q*Dya3ux%UDJDitT z-3xDltk6MxnbSQ3YG5=F|1?b_UV%Gfx(jib=edUaBjCI!3Unh>*M^5>Sqfyp+vggv s$2sDxJIMz>xM99Af0^I6KlmrW0Ji3+_8HcCGynhq07*qoM6N<$f;s|{CjbBd literal 0 HcmV?d00001 diff --git a/telldus-gui/Plugins/Controllers/tellstick.png b/telldus-gui/Plugins/Controllers/tellstick.png new file mode 100644 index 0000000000000000000000000000000000000000..b437a369a260f66e78e0c3dfe07a2264bfc49e92 GIT binary patch literal 17555 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 UTM<9;`v3p{07*qoM6N<$f|C-HZU6uP literal 0 HcmV?d00001 diff --git a/telldus-gui/Plugins/Controllers/tellstick_duo.png b/telldus-gui/Plugins/Controllers/tellstick_duo.png new file mode 100644 index 0000000000000000000000000000000000000000..c3a4513a08c6ad5dd0f7ce7da1d9c3d703e98023 GIT binary patch literal 26377 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 literal 0 HcmV?d00001