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
|
ZigbeeAdapter *ZigbeeAdaptersProxy::get(int index) const
|
||||||
{
|
{
|
||||||
if (index >= 0 && index < m_manager->adapters()->rowCount()) {
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -48,6 +48,7 @@ class ZigbeeAdaptersProxy : public QSortFilterProxyModel
|
|||||||
// Optional filtering
|
// Optional filtering
|
||||||
Q_PROPERTY(ZigbeeAdaptersProxy::HardwareFilter hardwareFilter READ hardwareFilter WRITE setHardwareFilter NOTIFY hardwareFilterChanged)
|
Q_PROPERTY(ZigbeeAdaptersProxy::HardwareFilter hardwareFilter READ hardwareFilter WRITE setHardwareFilter NOTIFY hardwareFilterChanged)
|
||||||
Q_PROPERTY(bool onlyUnused READ onlyUnused WRITE setOnlyUnused NOTIFY onlyUnusedChanged)
|
Q_PROPERTY(bool onlyUnused READ onlyUnused WRITE setOnlyUnused NOTIFY onlyUnusedChanged)
|
||||||
|
Q_PROPERTY(QString serialPortFilter READ serialPortFilter WRITE setSerialPortFilter NOTIFY serialPortFilterChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum HardwareFilter {
|
enum HardwareFilter {
|
||||||
@ -68,6 +69,9 @@ public:
|
|||||||
bool onlyUnused() const;
|
bool onlyUnused() const;
|
||||||
void setOnlyUnused(bool onlyUnused);
|
void setOnlyUnused(bool onlyUnused);
|
||||||
|
|
||||||
|
QString serialPortFilter() const;
|
||||||
|
void setSerialPortFilter(const QString &serialPortFilter);
|
||||||
|
|
||||||
Q_INVOKABLE ZigbeeAdapter* get(int index) const;
|
Q_INVOKABLE ZigbeeAdapter* get(int index) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@ -78,11 +82,13 @@ signals:
|
|||||||
void managerChanged();
|
void managerChanged();
|
||||||
void hardwareFilterChanged(HardwareFilter hardwareFilter);
|
void hardwareFilterChanged(HardwareFilter hardwareFilter);
|
||||||
void onlyUnusedChanged();
|
void onlyUnusedChanged();
|
||||||
|
void serialPortFilterChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ZigbeeManager *m_manager = nullptr;
|
ZigbeeManager *m_manager = nullptr;
|
||||||
HardwareFilter m_hardwareFilter = HardwareFilterNone;
|
HardwareFilter m_hardwareFilter = HardwareFilterNone;
|
||||||
bool m_onlyUnused = false;
|
bool m_onlyUnused = false;
|
||||||
|
QString m_serialPortFilter;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // ZIGBEEADAPTERSPROXY_H
|
#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
|
bool ZigbeeNodesProxy::newOnTop() const
|
||||||
{
|
{
|
||||||
return m_newOnTop;
|
return m_newOnTop;
|
||||||
@ -120,6 +150,12 @@ bool ZigbeeNodesProxy::filterAcceptsRow(int source_row, const QModelIndex &sourc
|
|||||||
if (!m_showCoordinator && node->type() == ZigbeeNode::ZigbeeNodeTypeCoordinator) {
|
if (!m_showCoordinator && node->type() == ZigbeeNode::ZigbeeNodeTypeCoordinator) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (!m_showOnline && node->reachable()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!m_showOffline && !node->reachable()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -42,7 +42,10 @@ class ZigbeeNodesProxy : public QSortFilterProxyModel
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
Q_PROPERTY(int count READ rowCount NOTIFY countChanged)
|
Q_PROPERTY(int count READ rowCount NOTIFY countChanged)
|
||||||
Q_PROPERTY(ZigbeeNodes *zigbeeNodes READ zigbeeNodes WRITE setZigbeeNodes NOTIFY zigbeeNodesChanged)
|
Q_PROPERTY(ZigbeeNodes *zigbeeNodes READ zigbeeNodes WRITE setZigbeeNodes NOTIFY zigbeeNodesChanged)
|
||||||
|
|
||||||
Q_PROPERTY(bool showCoordinator READ showCoordinator WRITE setShowCoordinator NOTIFY showCoordinatorChanged)
|
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)
|
Q_PROPERTY(bool newOnTop READ newOnTop WRITE setNewOnTop NOTIFY newOnTopChanged)
|
||||||
|
|
||||||
@ -55,6 +58,12 @@ public:
|
|||||||
bool showCoordinator() const;
|
bool showCoordinator() const;
|
||||||
void setShowCoordinator(bool showCoordinator);
|
void setShowCoordinator(bool showCoordinator);
|
||||||
|
|
||||||
|
bool showOnline() const;
|
||||||
|
void setShowOnline(bool showOnline);
|
||||||
|
|
||||||
|
bool showOffline() const;
|
||||||
|
void setShowOffline(bool showOffline);
|
||||||
|
|
||||||
bool newOnTop() const;
|
bool newOnTop() const;
|
||||||
void setNewOnTop(bool newOnTop);
|
void setNewOnTop(bool newOnTop);
|
||||||
|
|
||||||
@ -65,6 +74,8 @@ signals:
|
|||||||
void zigbeeNodesChanged(ZigbeeNodes *zigbeeNodes);
|
void zigbeeNodesChanged(ZigbeeNodes *zigbeeNodes);
|
||||||
void showCoordinatorChanged();
|
void showCoordinatorChanged();
|
||||||
void newOnTopChanged();
|
void newOnTopChanged();
|
||||||
|
void showOnlineChanged();
|
||||||
|
void showOfflineChanged();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override;
|
bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override;
|
||||||
@ -74,6 +85,8 @@ private:
|
|||||||
ZigbeeNodes *m_zigbeeNodes = nullptr;
|
ZigbeeNodes *m_zigbeeNodes = nullptr;
|
||||||
|
|
||||||
bool m_showCoordinator = true;
|
bool m_showCoordinator = true;
|
||||||
|
bool m_showOnline = true;
|
||||||
|
bool m_showOffline = true;
|
||||||
|
|
||||||
bool m_newOnTop = false;
|
bool m_newOnTop = false;
|
||||||
|
|
||||||
|
|||||||
@ -271,5 +271,6 @@
|
|||||||
<file>ui/images/sensors/co.svg</file>
|
<file>ui/images/sensors/co.svg</file>
|
||||||
<file>ui/images/sensors/gas.svg</file>
|
<file>ui/images/sensors/gas.svg</file>
|
||||||
<file>ui/images/contact-group.svg</file>
|
<file>ui/images/contact-group.svg</file>
|
||||||
|
<file>ui/images/zigbee/TI.svg</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
|||||||
@ -45,7 +45,7 @@ Page {
|
|||||||
|
|
||||||
Flickable {
|
Flickable {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
contentHeight: layout.implicitHeight + (layout.isGrid ? app.margins * 2 : 0)
|
contentHeight: layout.implicitHeight + app.margins
|
||||||
clip: true
|
clip: true
|
||||||
|
|
||||||
GridLayout {
|
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 {
|
Repeater {
|
||||||
model: zigbeeManager.networks
|
model: zigbeeManager.networks
|
||||||
delegate: BigTile {
|
delegate: BigTile {
|
||||||
|
id: networkDelegate
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
interactive: false
|
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 {
|
header: RowLayout {
|
||||||
ColorIcon {
|
ColorIcon {
|
||||||
@ -152,23 +154,36 @@ SettingsPageBase {
|
|||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
Label {
|
Label {
|
||||||
Layout.fillWidth: true
|
text: qsTr("Adapter:")
|
||||||
text: qsTr("MAC address:")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Label {
|
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 {
|
||||||
Label {
|
Layout.fillWidth: true
|
||||||
Layout.fillWidth: true
|
text: offlineNodes.count == 0
|
||||||
text: qsTr("Firmware version:")
|
? qsTr("%n device(s)", "", networkDelegate.network.nodes.count)
|
||||||
}
|
: qsTr("%n device(s) (%1 disconnected)", "", networkDelegate.network.nodes.count).arg(offlineNodes.count)
|
||||||
Label {
|
|
||||||
text: model.firmwareVersion
|
ZigbeeNodesProxy {
|
||||||
|
id: offlineNodes
|
||||||
|
zigbeeNodes: networkDelegate.network.nodes
|
||||||
|
showCoordinator: false
|
||||||
|
showOnline: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user