Add new 'Controllers' plugin to admin controllers, see #108
This commit is contained in:
parent
345ff62a93
commit
3de0a98f89
18 changed files with 464 additions and 1 deletions
|
@ -8,11 +8,12 @@ IF (BUILD_LIBTELLDUS-GUI)
|
||||||
SET(BUILD_PLUGIN_SYSTRAY TRUE CACHE BOOL "Build plugin 'Systray'")
|
SET(BUILD_PLUGIN_SYSTRAY TRUE CACHE BOOL "Build plugin 'Systray'")
|
||||||
ENDIF (BUILD_LIBTELLDUS-GUI)
|
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_DBUS FALSE CACHE BOOL "Build plugin 'DBus'")
|
||||||
SET(BUILD_PLUGIN_LIVE FALSE CACHE BOOL "Build plugin 'Telldus Live!'")
|
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_SCHEDULERGUISIMPLE FALSE CACHE BOOL "Build plugin 'Simple Scheduler GUI'")
|
||||||
SET(BUILD_PLUGIN_SENSORS TRUE CACHE BOOL "Build plugin 'Sensors'")
|
SET(BUILD_PLUGIN_SENSORS TRUE CACHE BOOL "Build plugin 'Sensors'")
|
||||||
|
SET(BUILD_PLUGIN_XPL FALSE CACHE BOOL "Build plugin 'xPL'")
|
||||||
|
|
||||||
ADD_SUBDIRECTORY(telldus)
|
ADD_SUBDIRECTORY(telldus)
|
||||||
|
|
||||||
|
@ -28,6 +29,10 @@ IF(BUILD_PLUGIN_SYSTRAY)
|
||||||
ADD_SUBDIRECTORY(Systray)
|
ADD_SUBDIRECTORY(Systray)
|
||||||
ENDIF(BUILD_PLUGIN_SYSTRAY)
|
ENDIF(BUILD_PLUGIN_SYSTRAY)
|
||||||
|
|
||||||
|
IF(BUILD_PLUGIN_CONTROLLERS)
|
||||||
|
ADD_SUBDIRECTORY(Controllers)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
IF(BUILD_PLUGIN_DBUS)
|
IF(BUILD_PLUGIN_DBUS)
|
||||||
ADD_SUBDIRECTORY(DBus)
|
ADD_SUBDIRECTORY(DBus)
|
||||||
ENDIF(BUILD_PLUGIN_DBUS)
|
ENDIF(BUILD_PLUGIN_DBUS)
|
||||||
|
|
41
telldus-gui/Plugins/Controllers/CMakeLists.txt
Normal file
41
telldus-gui/Plugins/Controllers/CMakeLists.txt
Normal file
|
@ -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 )
|
92
telldus-gui/Plugins/Controllers/ControllerView.qml
Normal file
92
telldus-gui/Plugins/Controllers/ControllerView.qml
Normal file
|
@ -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 "";
|
||||||
|
}
|
||||||
|
}
|
10
telldus-gui/Plugins/Controllers/HeaderTitle.qml
Normal file
10
telldus-gui/Plugins/Controllers/HeaderTitle.qml
Normal file
|
@ -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
|
||||||
|
}
|
25
telldus-gui/Plugins/Controllers/__init__.js
Normal file
25
telldus-gui/Plugins/Controllers/__init__.js
Normal file
|
@ -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
|
||||||
|
}
|
||||||
|
|
||||||
|
}();
|
BIN
telldus-gui/Plugins/Controllers/btn_action_remove.png
Normal file
BIN
telldus-gui/Plugins/Controllers/btn_action_remove.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
84
telldus-gui/Plugins/Controllers/controller.cpp
Normal file
84
telldus-gui/Plugins/Controllers/controller.cpp
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
#include "controller.h"
|
||||||
|
#include <telldus-core.h>
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
52
telldus-gui/Plugins/Controllers/controller.h
Normal file
52
telldus-gui/Plugins/Controllers/controller.h
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
#ifndef CONTROLLER_H
|
||||||
|
#define CONTROLLER_H
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
#include <QMetaType>
|
||||||
|
|
||||||
|
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
|
48
telldus-gui/Plugins/Controllers/controllerlist.cpp
Normal file
48
telldus-gui/Plugins/Controllers/controllerlist.cpp
Normal file
|
@ -0,0 +1,48 @@
|
||||||
|
#include "controllerlist.h"
|
||||||
|
#include "controller.h"
|
||||||
|
#include <telldus-core.h>
|
||||||
|
|
||||||
|
#include <QDebug>
|
||||||
|
|
||||||
|
class ControllerList::PrivateData {
|
||||||
|
public:
|
||||||
|
QList<Controller *> list;
|
||||||
|
};
|
||||||
|
|
||||||
|
ControllerList::ControllerList(QObject *parent) :
|
||||||
|
QAbstractListModel(parent)
|
||||||
|
{
|
||||||
|
d = new PrivateData;
|
||||||
|
|
||||||
|
QHash<int, QByteArray> 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();
|
||||||
|
}
|
||||||
|
}
|
30
telldus-gui/Plugins/Controllers/controllerlist.h
Normal file
30
telldus-gui/Plugins/Controllers/controllerlist.h
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
#ifndef CONTROLLERLIST_H
|
||||||
|
#define CONTROLLERLIST_H
|
||||||
|
|
||||||
|
#include <QAbstractListModel>
|
||||||
|
#include <QScriptValue>
|
||||||
|
|
||||||
|
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
|
30
telldus-gui/Plugins/Controllers/controllersplugin.cpp
Normal file
30
telldus-gui/Plugins/Controllers/controllersplugin.cpp
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
#include "controllersplugin.h"
|
||||||
|
#include "controllerlist.h"
|
||||||
|
#include "controller.h"
|
||||||
|
#include <QScriptEngine>
|
||||||
|
#include <QtDeclarative>
|
||||||
|
|
||||||
|
|
||||||
|
ControllersPlugin::ControllersPlugin ( QObject * parent )
|
||||||
|
:QScriptExtensionPlugin( parent )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
ControllersPlugin::~ControllersPlugin() {
|
||||||
|
}
|
||||||
|
|
||||||
|
void ControllersPlugin::initialize ( const QString & key, QScriptEngine * engine ) {
|
||||||
|
if (key == "com.telldus.controllers") {
|
||||||
|
qmlRegisterType<Controller>("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)
|
16
telldus-gui/Plugins/Controllers/controllersplugin.h
Normal file
16
telldus-gui/Plugins/Controllers/controllersplugin.h
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
#ifndef CONTROLLERSPLUGIN_H
|
||||||
|
#define CONTROLLERSPLUGIN_H
|
||||||
|
|
||||||
|
#include <QScriptExtensionPlugin>
|
||||||
|
|
||||||
|
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
|
BIN
telldus-gui/Plugins/Controllers/header_bg.png
Normal file
BIN
telldus-gui/Plugins/Controllers/header_bg.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 526 B |
BIN
telldus-gui/Plugins/Controllers/icon.png
Normal file
BIN
telldus-gui/Plugins/Controllers/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 754 B |
30
telldus-gui/Plugins/Controllers/main.qml
Normal file
30
telldus-gui/Plugins/Controllers/main.qml
Normal file
|
@ -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 {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
BIN
telldus-gui/Plugins/Controllers/row_bg.png
Normal file
BIN
telldus-gui/Plugins/Controllers/row_bg.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 346 B |
BIN
telldus-gui/Plugins/Controllers/tellstick.png
Normal file
BIN
telldus-gui/Plugins/Controllers/tellstick.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
BIN
telldus-gui/Plugins/Controllers/tellstick_duo.png
Normal file
BIN
telldus-gui/Plugins/Controllers/tellstick_duo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
Loading…
Add table
Add a link
Reference in a new issue