Changeset 44b60a
- Timestamp:
- 01/17/12 15:32:56 (4 months ago)
- Branches:
- ('master', 'deebf2045e7119c339412580f37a1e653f7d5715')('controller-upgrade', '00f95d22e12d96ef089e0902ef62ae8ce841dc6f')
- Children:
- 848f65803c6c460de9219c4de46b5eb80d1c2c37
- Parents:
- 48daf2ca2fee9ebc88f54e65d82616c5d2d5bccc645ef2098e00e54a96cbcc13ecd9b504fe64768b
- git-author:
- Stefan Persson <stefan.persson@telldus.se>2012-01-17 15:32:56+01:00
- git-committer:
- Stefan Persson <stefan.persson@telldus.se>2012-01-17 15:32:56+01:00
- Files:
-
- 5 added
- 14 edited
-
.gitmodules (added)
-
telldus-gui/3rdparty/qt-components-desktop (added)
-
telldus-gui/3rdparty/qt-components-desktop.cmake (added)
-
telldus-gui/Plugins/QML/CMakeLists.txt (modified) (1 diff)
-
telldus-gui/Plugins/QML/qmlarray.cpp (modified) (2 diffs)
-
telldus-gui/Plugins/QML/qmlarray.h (modified) (1 diff)
-
telldus-gui/Plugins/QML/qmlview.cpp (modified) (2 diffs)
-
telldus-gui/Plugins/Sensors/CMakeLists.txt (modified) (2 diffs)
-
telldus-gui/Plugins/Sensors/SensorList.qml (added)
-
telldus-gui/Plugins/Sensors/SensorView.qml (added)
-
telldus-gui/Plugins/Sensors/__init__.js (modified) (4 diffs)
-
telldus-gui/Plugins/Sensors/main.qml (modified) (2 diffs)
-
telldus-gui/Plugins/Sensors/qmldir (modified) (1 diff)
-
telldus-gui/Plugins/Sensors/sensor.cpp (modified) (4 diffs)
-
telldus-gui/Plugins/Sensors/sensor.h (modified) (3 diffs)
-
telldus-gui/Plugins/Settings/settings.cpp (modified) (1 diff)
-
telldus-gui/Plugins/TelldusCenterPlugin.cmake (modified) (6 diffs)
-
telldus-core/CMakeLists.txt (modified) (1 diff)
-
telldus-gui/CMakeLists.txt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
telldus-gui/Plugins/QML/CMakeLists.txt
r3738b3 r9afb2c 24 24 25 25 INCLUDE( ../TelldusCenterPlugin.cmake NO_POLICY_SCOPE ) 26 27 IF (WIN32) 28 SET(QT_COMPONENTS_OUTPUT_DIR "${LIBRARY_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/Plugins/declarative") 29 ELSEIF (APPLE) 30 SET(QT_COMPONENTS_OUTPUT_DIR "${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR}/TelldusCenter.app/Contents/Plugins/declarative") 31 ELSE() 32 SET(QT_COMPONENTS_OUTPUT_DIR "${CMAKE_BINARY_DIR}/TelldusCenter/Plugins/declarative") 33 ENDIF() 34 INCLUDE( ${CMAKE_SOURCE_DIR}/3rdparty/qt-components-desktop.cmake NO_POLICY_SCOPE ) -
telldus-gui/Plugins/QML/qmlarray.cpp
r20d662 r5ce0b8 1 1 #include "qmlarray.h" 2 3 #include <QDebug> 2 #include <QMetaMethod> 4 3 5 4 class QMLArray::PrivateData { … … 36 35 } 37 36 37 void QMLArray::remove(int index) { 38 beginRemoveRows( QModelIndex(), index, index ); 39 d->list.takeAt(index); 40 endRemoveRows(); 41 } 42 43 void QMLArray::removeLater(int index) { 44 int methodIndex = this->metaObject()->indexOfMethod(QMetaObject::normalizedSignature("remove(int)")); 45 QMetaMethod method = this->metaObject()->method(methodIndex); 46 method.invoke(this, Qt::QueuedConnection, Q_ARG(int, index)); 47 } 48 38 49 int QMLArray::rowCount(const QModelIndex &parent) const { 39 50 return d->list.size(); -
telldus-gui/Plugins/QML/qmlarray.h
r20d662 r5ce0b8 20 20 public slots: 21 21 void push(const QScriptValue &v); 22 void remove(int index); 23 void removeLater(int index); 22 24 QVariant get(int index) const; 23 25 -
telldus-gui/Plugins/QML/qmlview.cpp
r61331e r5531d6 3 3 #include <QDeclarativeContext> 4 4 #include <QScriptValueIterator> 5 #include <QDeclarativeEngine> 5 6 #include <QVariant> 7 #include <QApplication> 6 8 7 9 class QMLView::PrivateData { … … 16 18 setAttribute(Qt::WA_TranslucentBackground); 17 19 setStyleSheet("background:transparent;"); 20 21 QDeclarativeEngine *eng = this->engine(); 22 QStringList paths(eng->importPathList()); 23 QDir pluginsDir = QDir(qApp->applicationDirPath()); 24 25 #if defined(Q_OS_MAC) 26 if (pluginsDir.dirName() == "MacOS") { 27 pluginsDir.cdUp(); 28 } 29 #endif 30 31 if (pluginsDir.cd("Plugins/declarative")) { 32 paths << pluginsDir.absolutePath(); 33 } 34 35 eng->setImportPathList(paths); 18 36 19 37 d = new PrivateData; -
telldus-gui/Plugins/Sensors/CMakeLists.txt
re7ec37 r394270 4 4 SET(QT_USE_QTDECLARATIVE TRUE) 5 5 6 SET( Plugin_NAME " sensors" )6 SET( Plugin_NAME "Sensors" ) 7 7 8 8 … … 34 34 qmldir 35 35 SensorValue.qml 36 SensorView.qml 37 SensorList.qml 36 38 ) 37 39 -
telldus-gui/Plugins/Sensors/__init__.js
r8e377a r645ef2 7 7 8 8 com.telldus.sensors = function() { 9 var sensorList = new com.telldus.qml.array(); 10 9 var sensorList; 11 10 function init() { 12 11 var sensorData = 0; 12 sensorList = loadSensorModel(); 13 sensorList.rowsRemoved.connect(function(){saveSensorModel();}); 14 sensorList.rowsInserted.connect(function(){saveSensorModel();}); 15 13 16 while(sensorData = com.telldus.core.sensor()) { 14 17 var p = sensorData["protocol"]; … … 20 23 if (types & type) { 21 24 sensorValue = com.telldus.core.sensorValue(p, m, id, type); 22 sensorEvent(p, m, id, type, sensorValue["value"], sensorValue["timestamp"] );25 sensorEvent(p, m, id, type, sensorValue["value"], sensorValue["timestamp"], true); 23 26 } 24 27 } … … 29 32 30 33 com.telldus.core.sensorEvent.connect(sensorEvent); 31 view = new com.telldus.qml.view({}); 34 view = new com.telldus.qml.view({ 35 deleteSensor: deleteSensor 36 }); 32 37 33 38 view.setProperty('sensorModel', sensorList); 39 saveSensorModel(); 34 40 view.load("main.qml"); 35 41 application.addWidget("sensors.gui", "icon.png", view); 36 42 } 37 43 38 function sensorEvent(protocol, model, id, dataType, value, timestamp) { 44 function createSensor(protocol, model, id, name, showInList){ 45 var sensor = new com.telldus.sensors.sensor(); 46 sensor.protocol = protocol; 47 sensor.model = model; 48 sensor.id = id; 49 sensor.name = name; 50 sensor.nameChanged.connect(function() { saveSensorModel(); }); 51 sensor.showInList = showInList; 52 sensor.showInListChanged.connect(function() { saveSensorModel(); }); 53 return sensor; 54 } 55 56 function deleteSensor(protocol, model, id){ 57 var i = 0; 58 var found = false; 59 for (; i < sensorList.length; ++i) { 60 if (sensorList.get(i).protocol != protocol) { 61 continue; 62 } 63 if (sensorList.get(i).model != model) { 64 continue; 65 } 66 if (sensorList.get(i).id != id) { 67 continue; 68 } 69 found = true; 70 break; 71 } 72 if(found){ 73 sensorList.removeLater(i); 74 } 75 } 76 77 function loadSensorModel(){ 78 var settings = new com.telldus.settings(); 79 var sensors = new com.telldus.qml.array(); 80 81 var sensorProperties = settings.value("sensors", ""); 82 if(sensorProperties){ 83 for (var i = 0; i < sensorProperties.length; i++) { 84 var sensor = createSensor(sensorProperties[i].protocol, sensorProperties[i].model, sensorProperties[i].id, sensorProperties[i].name, sensorProperties[i].showInList=="true"); 85 for (var j = 0; j < sensorProperties[i].values.length; j++) { 86 sensor.setValue(sensorProperties[i].values[j].type, sensorProperties[i].values[j].value, sensorProperties[i].values[j].lastUpdated) 87 } 88 sensors.push(sensor); 89 } 90 } 91 return sensors; 92 } 93 94 function saveSensorModel(){ 95 var settings = new com.telldus.settings(); 96 var sensorProperties = new Array(); 97 98 for (var i = 0; i < sensorList.length; ++i) { 99 var sensor = sensorList.get(i); 100 101 var allValues = new Array(); 102 if(sensor.hasHumidity){ 103 var sensorValue = sensor.sensorValue(com.telldus.core.TELLSTICK_HUMIDITY); 104 var value = {type: com.telldus.core.TELLSTICK_HUMIDITY, lastUpdated: sensorValue.lastUpdated, value: sensorValue.value}; 105 allValues.push(value); 106 } 107 if(sensor.hasTemperature){ 108 var sensorValue = sensor.sensorValue(com.telldus.core.TELLSTICK_TEMPERATURE); 109 var value = {type: com.telldus.core.TELLSTICK_TEMPERATURE, lastUpdated: sensorValue.lastUpdated, value: sensorValue.value}; 110 allValues.push(value); 111 } 112 113 var sensorProp = {protocol:sensor.protocol, model:sensor.model, id:sensor.id, values:allValues, name:sensor.name, showInList:sensor.showInList}; 114 sensorProperties.push(sensorProp); 115 } 116 117 settings.setValue("sensors", sensorProperties); 118 } 119 120 function sensorEvent(protocol, model, id, dataType, value, timestamp, avoidSave) { 121 39 122 var sensor = 0; 40 123 for (var i = 0; i < sensorList.length; ++i) { … … 53 136 54 137 if (!sensor) { 55 sensor = new com.telldus.sensors.sensor(); 56 sensor.protocol = protocol; 57 sensor.model = model; 58 sensor.id = id; 59 sensor.showInList = false; 138 sensor = createSensor(protocol, model, id, "", false); 60 139 sensorList.push(sensor); 61 print("Create new");62 } else {63 print("Update");64 140 } 65 141 66 print("Sensor event", protocol, model, id, dataType, value, timestamp);67 142 sensor.setValue(dataType, value, timestamp); 143 144 if(!avoidSave){ 145 saveSensorModel(); 146 } 68 147 } 69 148 -
telldus-gui/Plugins/Sensors/main.qml
r8e377a rc90a4c 1 1 import Qt 4.7 2 import QtDesktop 0.1 2 3 3 4 Item { … … 5 6 state: "VIEW" 6 7 7 Component { 8 id: sensorView 9 Item{ 10 id: sensorViewItem 11 visible: main.state == "EDIT" || modelData.showInList 12 height: childrenRect.height 13 width: parent.width 8 ScrollArea { 9 id: scrollArea 10 anchors.fill: parent 11 frame: false 14 12 15 BorderImage { 16 source: "row_bg.png" 17 border.left: 5; border.top: 5 18 border.right: 5; border.bottom: 5 19 height: sensorInfo.height 20 width: parent.width 13 contentHeight: sensorList.height 14 contentWidth: sensorList.width 21 15 22 Text { 23 visible: main.state == "VIEW" 24 anchors.left: parent.left 25 anchors.leftMargin: 15 26 height: 40 27 verticalAlignment: Text.AlignVCenter 28 text: modelData.name; 29 color: "#004275" 30 } 31 Rectangle{ 32 color: "white" 33 visible: main.state == "EDIT" 34 anchors.left: parent.left 35 anchors.leftMargin: 15 36 width: nameEdit.width + 4 37 height: 22 38 TextInput{ 39 id: nameEdit 40 anchors.centerIn: parent 41 text: modelData.name; 42 color: "#004275" 43 44 onActiveFocusChanged: { 45 if(!activeFocus){ 46 //todo other way? 47 modelData.setName(nameEdit.text); 48 } 49 } 50 onAccepted: { 51 modelData.setName(nameEdit.text); 52 } 53 } 54 } 55 Text{ 56 anchors.right: model.left 57 visible: main.state == "EDIT" 58 height: 40 59 verticalAlignment: Text.AlignVCenter 60 text: modelData.id 61 color: "#004275" 62 width: 50 63 } 64 Text{ 65 id: model 66 anchors.right: visibleinlistcheckbox.left 67 visible: main.state == "EDIT" 68 height: 40 69 verticalAlignment: Text.AlignVCenter 70 text: modelData.model 71 color: "#004275" 72 width: 100 73 } 74 Item{ 75 id: visibleinlistcheckbox 76 anchors.right: sensorInfo.left 77 visible: main.state == "EDIT" 78 height: 40 79 Rectangle{ 80 anchors.centerIn: parent 81 height: 10 82 width: 10 83 color: "white" 84 Text{ 85 anchors.centerIn: parent 86 color: "#004275" 87 text: modelData.showInList ? "X" : "" 88 } 89 MouseArea{ 90 anchors.fill: parent 91 onClicked: { 92 modelData.setShowInList(!modelData.showInList); 93 } 94 } 95 } 96 width: 100 97 } 98 99 Column { 100 id: sensorInfo 101 anchors.right: parent.right 102 width: 250 103 SensorValue { 104 visible: modelData.hasTemperature 105 text: visible ? modelData.sensorValue(1).value + '°C' : '' 106 icon: "icon_temp.png" 107 lastUpdated: visible ? modelData.sensorValue(1).lastUpdated : new Date() 108 } 109 SensorValue { 110 visible: modelData.hasHumidity 111 text: visible ? modelData.sensorValue(2).value + '%' : '' 112 icon: "icon_humidity.png" 113 lastUpdated: visible ? modelData.sensorValue(2).lastUpdated : new Date() 114 } 115 } 116 } 16 SensorList { 17 id: sensorList 18 width: main.width-scrollArea.verticalScrollBar.width 117 19 } 118 20 } 119 120 Column {121 spacing: 1122 BorderImage {123 id: header124 source: "header_bg.png"125 width: parent.width; height: 40126 border.left: 5; border.top: 5127 border.right: 5; border.bottom: 5128 129 HeaderTitle {130 text: "Name"131 anchors.left: parent.left132 anchors.leftMargin: 15133 }134 HeaderTitle {135 text: "ID"136 anchors.right: modelTitle.left137 visible: main.state == "EDIT"138 width: 50139 }140 HeaderTitle {141 id: modelTitle142 text: "Model"143 anchors.right: visibleinlistTitle.left144 visible: main.state == "EDIT"145 width: 100146 }147 HeaderTitle {148 id: visibleinlistTitle149 text: "Visible in list"150 anchors.right: sensorinformationTitle.left151 visible: main.state == "EDIT"152 width: 100153 }154 HeaderTitle {155 id: sensorinformationTitle156 text: "Sensor information"157 width: 150158 anchors.right: timestampTitle.left159 }160 HeaderTitle {161 id: timestampTitle162 text: "Last updated"163 width: 100164 anchors.right: parent.right165 //horizontalAlignment: Text.AlignRight166 }167 }168 Repeater {169 model: sensorModel170 delegate: sensorView171 }172 Row{173 spacing: 20174 Rectangle {175 width: 50176 height: 20177 Text{178 anchors.centerIn: parent179 text: main.state == "VIEW" ? "Edit" : "View"180 }181 MouseArea{182 anchors.fill: parent183 onClicked: {184 if(main.state == "VIEW"){185 main.state = "EDIT"186 }187 else{188 main.state ="VIEW"189 }190 }191 }192 }193 /*194 Rectangle {195 //TODO should this button exist at all, or always save?196 width: 50197 height: 20198 visible: main.state == "EDIT"199 Text{200 anchors.centerIn: parent201 text: "Cancel"202 }203 MouseArea{204 anchors.fill: parent205 onClicked: {206 main.state ="VIEW"207 }208 }209 }210 */211 }212 anchors.fill: parent213 }214 21 } -
telldus-gui/Plugins/Sensors/qmldir
r1bebae r394270 1 1 HeaderTitle 1.0 HeaderTitle.qml 2 2 SensorValue 1.0 SensorValue.qml 3 SensorView 1.0 SensorView.qml 4 SensorList 1.0 SensorList.qml -
telldus-gui/Plugins/Sensors/sensor.cpp
r8e377a r645ef2 18 18 d = new PrivateData; 19 19 d->id = 0; 20 d->showInList = false; 20 21 } 21 22 … … 47 48 48 49 QString Sensor::name() const { 49 //return QString("%1 %2").arg(this->protocol()).arg(this->id()); //TODO: Remove when name is fully implemented50 if(d->name == ""){51 return "<unnamed>";52 }53 50 return d->name; 54 51 } 55 52 56 53 void Sensor::setName(const QString &name) { 54 if (name == d->name) { 55 return; 56 } 57 57 d->name = name; 58 58 emit nameChanged(); … … 72 72 } 73 73 74 SensorValue* Sensor::sensorValue(int type) {74 QObject * Sensor::sensorValue(int type) { 75 75 return (d->values.contains(type) ? d->values[type] : 0); 76 76 } … … 95 95 96 96 bool Sensor::showInList() const{ 97 //TODO showInList and name must be persistent...98 97 return d->showInList; 99 98 } -
telldus-gui/Plugins/Sensors/sensor.h
r8e377a r645ef2 18 18 Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) 19 19 Q_PROPERTY(QString protocol READ protocol WRITE setProtocol NOTIFY protocolChanged) 20 Q_PROPERTY(bool showInList READ showInList NOTIFY showInListChanged)20 Q_PROPERTY(bool showInList READ showInList WRITE setShowInList NOTIFY showInListChanged) 21 21 22 22 public: … … 33 33 34 34 QString name() const; 35 //void setName(const QString &name);36 35 37 36 QString protocol() const; … … 41 40 bool showInList() const; 42 41 43 Q_INVOKABLE SensorValue*sensorValue(int type);42 Q_INVOKABLE QObject *sensorValue(int type); 44 43 Q_INVOKABLE void setValue(int type, const QString &value, const QDateTime ×tamp); 45 44 Q_INVOKABLE void setName(const QString &name); -
telldus-gui/Plugins/Settings/settings.cpp
r6281cf r645ef2 27 27 d->s.setValue("size", list.size()); 28 28 d->s.setValue("type", "array"); 29 //d->s.beginWriteArray("list"); //TODO write or read? What prefix? 29 30 for (int i = 0; i < list.size(); ++i) { 30 d->s.setArrayIndex(i);31 //d->s.setArrayIndex(i); 31 32 this->setValue(QString::number(i), list.at(i)); 32 33 } 34 //d->s.endArray(); 33 35 d->s.endGroup(); 34 36 -
telldus-gui/Plugins/TelldusCenterPlugin.cmake
rf834ad r69b16f 64 64 ENDIF (UPDATE_TRANSLATIONS) 65 65 66 IF(Plugin_PATH) 67 FOREACH(_FILE ${Plugin_FILES}) 68 GET_FILENAME_COMPONENT(_FILENAME ${_FILE} NAME) 69 ADD_CUSTOM_COMMAND( OUTPUT ${Plugin_PATH}/${_FILENAME} 70 COMMAND ${CMAKE_COMMAND} -E copy ${_FILE} ${Plugin_PATH}/${_FILENAME} 71 DEPENDS ${_FILE} 72 COMMENT "Copy ${_FILENAME} for plugin ${Plugin_NAME}" 73 ) 74 LIST(APPEND Plugin_TARGET_FILES "${Plugin_PATH}/${_FILENAME}") 75 IF (NOT APPLE) 76 INSTALL(FILES ${_FILE} DESTINATION "${PLUGIN_LIB_FULL_PATH}/script/${Plugin_PATH_relative}") 77 ENDIF () 78 ENDFOREACH(_FILE) 79 ENDIF(Plugin_PATH) 80 66 81 IF(Plugin_SRCS) 67 82 ADD_LIBRARY(${Plugin_NAME} SHARED … … 75 90 ${Plugin_TS} 76 91 ${Plugin_QM} 92 ${Plugin_TARGET_FILES} 77 93 ) 78 94 TARGET_LINK_LIBRARIES( ${Plugin_NAME} ${Plugin_LIBRARIES} ) … … 88 104 GET_BUNDLE_AND_EXECUTABLE(\"\${app}\" bundle exe valid) 89 105 SET(plugin \"\${bundle}/Contents/Plugins/script/${Plugin_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}\") 90 106 91 107 GET_ITEM_KEY(\"\${plugin}\" pkey) 92 108 SET(prereqs \"\") … … 94 110 FOREACH(pr \${prereqs}) 95 111 GET_ITEM_KEY(\"\${pr}\" rkey) 96 112 97 113 #Don't change the path to TelldusCore 98 114 IF (NOT \"\${rkey}\" STREQUAL \"TelldusCore\") … … 118 134 ) 119 135 INSTALL(TARGETS ${Plugin_NAME} 120 LIBRARY DESTINATION "${PLUGIN_LIB_FULL_PATH}/script" 136 LIBRARY DESTINATION "${PLUGIN_LIB_FULL_PATH}/script" 121 137 ) 122 138 ENDIF (APPLE) … … 124 140 ELSE(Plugin_SRCS) 125 141 ADD_CUSTOM_TARGET(${Plugin_NAME} ALL 126 SOURCES ${Plugin_FILES} 142 SOURCES ${Plugin_FILES} ${Plugin_TARGET_FILES} 127 143 ) 128 144 ENDIF(Plugin_SRCS) 129 130 IF(Plugin_PATH)131 ADD_CUSTOM_COMMAND( TARGET ${Plugin_NAME}132 POST_BUILD133 COMMAND ${CMAKE_COMMAND} -E make_directory ${Plugin_PATH}134 COMMENT "Creating plugin directory ${Plugin_NAME}"135 )136 FOREACH(_FILE ${Plugin_FILES})137 GET_FILENAME_COMPONENT(_FILENAME ${_FILE} NAME)138 ADD_CUSTOM_COMMAND( TARGET ${Plugin_NAME}139 POST_BUILD140 COMMAND ${CMAKE_COMMAND} -E copy ${_FILE} ${Plugin_PATH}141 COMMENT "Copy ${_FILENAME} for plugin ${Plugin_NAME}"142 )143 IF (NOT APPLE)144 INSTALL(FILES ${_FILE} DESTINATION "${PLUGIN_LIB_FULL_PATH}/script/${Plugin_PATH_relative}")145 ENDIF ()146 ENDFOREACH(_FILE)147 ENDIF(Plugin_PATH)148 149 -
telldus-core/CMakeLists.txt
rcb072c r48daf2 12 12 SET(PACKAGE_MAJOR_VERSION 2) 13 13 SET(PACKAGE_MINOR_VERSION 1) 14 SET(PACKAGE_PATCH_VERSION 0)14 SET(PACKAGE_PATCH_VERSION 1) 15 15 SET(PACKAGE_VERSION "${PACKAGE_MAJOR_VERSION}.${PACKAGE_MINOR_VERSION}.${PACKAGE_PATCH_VERSION}") 16 SET(PACKAGE_SUBVERSION )16 SET(PACKAGE_SUBVERSION "beta1") 17 17 SET(PACKAGE_SOVERSION 2) 18 18 -
telldus-gui/CMakeLists.txt
r5f0d1b r48daf2 9 9 SET(PACKAGE_MAJOR_VERSION 2) 10 10 SET(PACKAGE_MINOR_VERSION 1) 11 SET(PACKAGE_PATCH_VERSION 0)11 SET(PACKAGE_PATCH_VERSION 1) 12 12 SET(PACKAGE_SOVERSION 2) 13 13 SET(PACKAGE_VERSION "${PACKAGE_MAJOR_VERSION}.${PACKAGE_MINOR_VERSION}.${PACKAGE_PATCH_VERSION}") 14 SET(DISPLAYED_VERSION ${PACKAGE_VERSION})14 SET(DISPLAYED_VERSION "${PACKAGE_VERSION}_beta1") 15 15 16 16 SET(BRANDING "telldus" CACHE STRING "The brand to use")
Note: See TracChangeset
for help on using the changeset viewer.
