Add support for the TI backend
This commit is contained in:
parent
801f44e8d2
commit
c58f38d183
@ -94,6 +94,21 @@ void ZigbeeAdaptersProxy::setOnlyUnused(bool onlyUnused)
|
||||
}
|
||||
}
|
||||
|
||||
QString ZigbeeAdaptersProxy::serialPortFilter() const
|
||||
{
|
||||
return m_serialPortFilter;
|
||||
}
|
||||
|
||||
void ZigbeeAdaptersProxy::setSerialPortFilter(const QString &serialPortFilter)
|
||||
{
|
||||
if (m_serialPortFilter != serialPortFilter) {
|
||||
m_serialPortFilter = serialPortFilter;
|
||||
emit serialPortFilterChanged();
|
||||
invalidateFilter();
|
||||
emit countChanged();
|
||||
}
|
||||
}
|
||||
|
||||
ZigbeeAdapter *ZigbeeAdaptersProxy::get(int index) const
|
||||
{
|
||||
if (index >= 0 && index < m_manager->adapters()->rowCount()) {
|
||||
@ -122,5 +137,9 @@ bool ZigbeeAdaptersProxy::filterAcceptsRow(int source_row, const QModelIndex &so
|
||||
}
|
||||
}
|
||||
|
||||
if (!m_serialPortFilter.isEmpty() && m_serialPortFilter != adapter->serialPort()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -48,6 +48,7 @@ class ZigbeeAdaptersProxy : public QSortFilterProxyModel
|
||||
// Optional filtering
|
||||
Q_PROPERTY(ZigbeeAdaptersProxy::HardwareFilter hardwareFilter READ hardwareFilter WRITE setHardwareFilter NOTIFY hardwareFilterChanged)
|
||||
Q_PROPERTY(bool onlyUnused READ onlyUnused WRITE setOnlyUnused NOTIFY onlyUnusedChanged)
|
||||
Q_PROPERTY(QString serialPortFilter READ serialPortFilter WRITE setSerialPortFilter NOTIFY serialPortFilterChanged)
|
||||
|
||||
public:
|
||||
enum HardwareFilter {
|
||||
@ -68,6 +69,9 @@ public:
|
||||
bool onlyUnused() const;
|
||||
void setOnlyUnused(bool onlyUnused);
|
||||
|
||||
QString serialPortFilter() const;
|
||||
void setSerialPortFilter(const QString &serialPortFilter);
|
||||
|
||||
Q_INVOKABLE ZigbeeAdapter* get(int index) const;
|
||||
|
||||
protected:
|
||||
@ -78,11 +82,13 @@ signals:
|
||||
void managerChanged();
|
||||
void hardwareFilterChanged(HardwareFilter hardwareFilter);
|
||||
void onlyUnusedChanged();
|
||||
void serialPortFilterChanged();
|
||||
|
||||
private:
|
||||
ZigbeeManager *m_manager = nullptr;
|
||||
HardwareFilter m_hardwareFilter = HardwareFilterNone;
|
||||
bool m_onlyUnused = false;
|
||||
QString m_serialPortFilter;
|
||||
};
|
||||
|
||||
#endif // ZIGBEEADAPTERSPROXY_H
|
||||
|
||||
@ -91,6 +91,36 @@ void ZigbeeNodesProxy::setShowCoordinator(bool showCoordinator)
|
||||
}
|
||||
}
|
||||
|
||||
bool ZigbeeNodesProxy::showOnline() const
|
||||
{
|
||||
return m_showOnline;
|
||||
}
|
||||
|
||||
void ZigbeeNodesProxy::setShowOnline(bool showOnline)
|
||||
{
|
||||
if (m_showOnline != showOnline) {
|
||||
m_showOnline = showOnline;
|
||||
emit showOnlineChanged();
|
||||
invalidateFilter();
|
||||
emit countChanged();
|
||||
}
|
||||
}
|
||||
|
||||
bool ZigbeeNodesProxy::showOffline() const
|
||||
{
|
||||
return m_showOffline;
|
||||
}
|
||||
|
||||
void ZigbeeNodesProxy::setShowOffline(bool showOffline)
|
||||
{
|
||||
if (m_showOffline != showOffline) {
|
||||
m_showOffline = showOffline;
|
||||
emit showOfflineChanged();
|
||||
invalidateFilter();
|
||||
emit countChanged();
|
||||
}
|
||||
}
|
||||
|
||||
bool ZigbeeNodesProxy::newOnTop() const
|
||||
{
|
||||
return m_newOnTop;
|
||||
@ -120,6 +150,12 @@ bool ZigbeeNodesProxy::filterAcceptsRow(int source_row, const QModelIndex &sourc
|
||||
if (!m_showCoordinator && node->type() == ZigbeeNode::ZigbeeNodeTypeCoordinator) {
|
||||
return false;
|
||||
}
|
||||
if (!m_showOnline && node->reachable()) {
|
||||
return false;
|
||||
}
|
||||
if (!m_showOffline && !node->reachable()) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -42,7 +42,10 @@ class ZigbeeNodesProxy : public QSortFilterProxyModel
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(int count READ rowCount NOTIFY countChanged)
|
||||
Q_PROPERTY(ZigbeeNodes *zigbeeNodes READ zigbeeNodes WRITE setZigbeeNodes NOTIFY zigbeeNodesChanged)
|
||||
|
||||
Q_PROPERTY(bool showCoordinator READ showCoordinator WRITE setShowCoordinator NOTIFY showCoordinatorChanged)
|
||||
Q_PROPERTY(bool showOnline READ showOnline WRITE setShowOnline NOTIFY showOnlineChanged)
|
||||
Q_PROPERTY(bool showOffline READ showOffline WRITE setShowOffline NOTIFY showOfflineChanged)
|
||||
|
||||
Q_PROPERTY(bool newOnTop READ newOnTop WRITE setNewOnTop NOTIFY newOnTopChanged)
|
||||
|
||||
@ -55,6 +58,12 @@ public:
|
||||
bool showCoordinator() const;
|
||||
void setShowCoordinator(bool showCoordinator);
|
||||
|
||||
bool showOnline() const;
|
||||
void setShowOnline(bool showOnline);
|
||||
|
||||
bool showOffline() const;
|
||||
void setShowOffline(bool showOffline);
|
||||
|
||||
bool newOnTop() const;
|
||||
void setNewOnTop(bool newOnTop);
|
||||
|
||||
@ -65,6 +74,8 @@ signals:
|
||||
void zigbeeNodesChanged(ZigbeeNodes *zigbeeNodes);
|
||||
void showCoordinatorChanged();
|
||||
void newOnTopChanged();
|
||||
void showOnlineChanged();
|
||||
void showOfflineChanged();
|
||||
|
||||
protected:
|
||||
bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override;
|
||||
@ -74,6 +85,8 @@ private:
|
||||
ZigbeeNodes *m_zigbeeNodes = nullptr;
|
||||
|
||||
bool m_showCoordinator = true;
|
||||
bool m_showOnline = true;
|
||||
bool m_showOffline = true;
|
||||
|
||||
bool m_newOnTop = false;
|
||||
|
||||
|
||||
@ -271,5 +271,6 @@
|
||||
<file>ui/images/sensors/co.svg</file>
|
||||
<file>ui/images/sensors/gas.svg</file>
|
||||
<file>ui/images/contact-group.svg</file>
|
||||
<file>ui/images/zigbee/TI.svg</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
@ -45,7 +45,7 @@ Page {
|
||||
|
||||
Flickable {
|
||||
anchors.fill: parent
|
||||
contentHeight: layout.implicitHeight + (layout.isGrid ? app.margins * 2 : 0)
|
||||
contentHeight: layout.implicitHeight + app.margins
|
||||
clip: true
|
||||
|
||||
GridLayout {
|
||||
|
||||
46
nymea-app/ui/images/zigbee/TI.svg
Normal file
46
nymea-app/ui/images/zigbee/TI.svg
Normal file
@ -0,0 +1,46 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="113mm"
|
||||
height="113mm"
|
||||
viewBox="0 0 113 113"
|
||||
version="1.1"
|
||||
id="svg5"
|
||||
inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)"
|
||||
sodipodi:docname="TI.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview7"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:document-units="mm"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.60756173"
|
||||
inkscape:cx="-86.410973"
|
||||
inkscape:cy="383.50013"
|
||||
inkscape:window-width="1468"
|
||||
inkscape:window-height="933"
|
||||
inkscape:window-x="68"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1" />
|
||||
<defs
|
||||
id="defs2" />
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<path
|
||||
style="fill:#808080;stroke-width:1;fill-opacity:1"
|
||||
d="m 72.994252,110.39645 c -6.34159,-0.70539 -12.743813,-5.22391 -17.33733,-12.236248 -1.573038,-2.40136 -3.540241,-6.22708 -6.292342,-12.23706 -1.256507,-2.74393 -2.673617,-5.70906 -3.149141,-6.58919 -3.23453,-5.98664 -5.893201,-8.03385 -9.55658,-7.35866 -2.030035,0.37415 -2.991389,0.99956 -5.458884,3.55131 -2.820611,2.91693 -3.216789,3.14529 -5.459613,3.14708 -1.450524,0.001 -1.850993,-0.072 -2.782749,-0.50865 -2.081887,-0.97553 -4.142624,-3.41625 -5.611155,-6.64583 -0.329118,-0.72379 -1.09697,-2.5713 -1.706337,-4.10559 -2.235698,-5.629103 -2.574904,-6.08099 -8.9994825,-11.988999 -4.187126,-3.85046 -5.925958,-6.777279 -6.515093,-10.966291 L -2.215e-4,43.564076 H 15.552812 31.105844 V 23.043465 2.5228553 h 12.988541 12.988548 l 0.0486,10.5897647 0.0486,10.589762 3.682542,0.09413 3.682537,0.09413 -1.220831,6.730388 -1.220839,6.730382 h -3.732478 c -2.052859,0 -3.732472,0.0249 -3.732472,0.05529 0,0.03038 -0.55067,2.801225 -1.223713,6.15739 -0.673034,3.356164 -1.223704,6.126992 -1.223704,6.157397 0,0.03038 1.652004,0.05529 3.671122,0.05529 2.115745,0 3.671115,0.07357 3.671115,0.173638 0,0.0955 -0.801745,3.562519 -1.781655,7.704484 -3.474829,14.687701 -3.538006,14.992131 -3.561972,17.164671 -0.02078,1.8811 0.0093,2.04394 0.598501,3.24082 0.703745,1.42962 1.495813,2.17436 3.144893,2.95702 2.56172,1.21579 5.537262,1.51667 15.000592,1.51689 l 7.09356,1.5e-4 0.19765,-0.98838 c 0.10871,-0.54361 0.67089,-3.52992 1.2493,-6.63625 0.57841,-3.10632 1.09532,-5.82909 1.1487,-6.05057 0.0952,-0.39521 0.045,-0.40411 -2.69499,-0.47863 -3.23887,-0.0881 -3.8443,-0.2879 -4.20761,-1.38874 -0.25449,-0.7711 -0.23228,-0.92759 0.5326,-3.75433 0.42986,-1.588587 2.37166,-9.633047 3.14695,-13.037185 0.096,-0.421717 0.11289,-0.423588 3.81392,-0.423588 h 3.71746 l 1.23874,-6.212662 1.23876,-6.212663 h -3.73967 -3.73966 l 0.10162,-0.423589 c 0.1363,-0.568132 2.35296,-12.80238 2.35296,-12.98652 0,-0.07964 5.04073,-0.144792 11.20162,-0.144792 h 11.201609 l 0.004,6.824519 c 0.002,3.753484 0.085,7.38646 0.18438,8.073277 0.26153,1.807904 1.01422,4.03216 1.83089,5.410505 0.83425,1.407995 2.61269,3.407701 3.54076,3.981283 l 0.6529,0.403517 v 10.600522 10.600526 l -0.70598,0.12881 c -1.16987,0.21345 -7.15311,2.26312 -9.36606,3.20853 -4.522999,1.93228 -9.312539,4.60712 -12.193699,6.80988 -1.61558,1.23517 -4.8512,4.3971 -6.15414,6.01397 -2.91442,3.61661 -4.56534,7.34411 -4.99279,11.27291 -0.15988,1.46946 0.1891,5.427728 0.64731,7.342238 0.19826,0.82835 0.61997,2.13196 0.93713,2.89689 0.31717,0.76494 0.57666,1.45344 0.57666,1.52999 0,0.23952 -1.87063,0.95684 -3.17547,1.21768 -1.71677,0.34319 -4.00439,0.46001 -5.57873,0.2849 z M 60.945233,67.991142 c 0.134204,-0.56234 8.566159,-43.966373 8.566159,-44.094836 0,-0.05486 2.25074,-0.09979 5.00164,-0.09979 4.67542,0 4.99524,0.02149 4.90333,0.329458 -0.10844,0.363428 -8.58713,43.973248 -8.58713,44.167618 0,0.0666 -2.24664,0.12113 -4.99254,0.12113 H 60.844144 Z M 70.841942,17.25752 c 0.007,-0.182921 0.28234,-2.154024 0.61186,-4.380228 l 0.59913,-4.0476437 4.94189,-0.05019 c 4.62173,-0.04694 4.94107,-0.02865 4.92918,0.282394 -0.007,0.182921 -0.28234,2.1540237 -0.61186,4.3802277 l -0.59913,4.047644 -4.94189,0.05019 c -4.62172,0.04694 -4.94107,0.02865 -4.92918,-0.282394 z"
|
||||
id="path854" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.4 KiB |
@ -85,10 +85,12 @@ SettingsPageBase {
|
||||
Repeater {
|
||||
model: zigbeeManager.networks
|
||||
delegate: BigTile {
|
||||
id: networkDelegate
|
||||
Layout.fillWidth: true
|
||||
interactive: false
|
||||
property ZigbeeNetwork network: zigbeeManager.networks.get(index)
|
||||
|
||||
onClicked: pageStack.push(Qt.resolvedUrl("ZigbeeNetworkPage.qml"), { zigbeeManager: zigbeeManager, network: zigbeeManager.networks.get(index) })
|
||||
onClicked: pageStack.push(Qt.resolvedUrl("ZigbeeNetworkPage.qml"), { zigbeeManager: zigbeeManager, network: networkDelegate.network })
|
||||
|
||||
header: RowLayout {
|
||||
ColorIcon {
|
||||
@ -152,23 +154,36 @@ SettingsPageBase {
|
||||
|
||||
RowLayout {
|
||||
Label {
|
||||
Layout.fillWidth: true
|
||||
text: qsTr("MAC address:")
|
||||
text: qsTr("Adapter:")
|
||||
}
|
||||
|
||||
Label {
|
||||
text: model.macAddress
|
||||
Layout.fillWidth: true
|
||||
text: adaptersProxy.count > 0 ? adaptersProxy.get(0).description : ""
|
||||
elide: Text.ElideRight
|
||||
|
||||
ZigbeeAdaptersProxy {
|
||||
id: adaptersProxy
|
||||
manager: zigbeeManager
|
||||
serialPortFilter: networkDelegate.network.serialPort
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
Label {
|
||||
Layout.fillWidth: true
|
||||
text: qsTr("Firmware version:")
|
||||
}
|
||||
Label {
|
||||
text: model.firmwareVersion
|
||||
Label {
|
||||
Layout.fillWidth: true
|
||||
text: offlineNodes.count == 0
|
||||
? qsTr("%n device(s)", "", networkDelegate.network.nodes.count)
|
||||
: qsTr("%n device(s) (%1 disconnected)", "", networkDelegate.network.nodes.count).arg(offlineNodes.count)
|
||||
|
||||
ZigbeeNodesProxy {
|
||||
id: offlineNodes
|
||||
zigbeeNodes: networkDelegate.network.nodes
|
||||
showCoordinator: false
|
||||
showOnline: false
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user