From ba1178d5ffb44f726c9548b069f62847d3d8e086 Mon Sep 17 00:00:00 2001
From: alexandr <alexandrmruchok@gmail.com>
Date: Tue, 13 Oct 2020 21:53:45 +0300
Subject: [PATCH] [*] DapNetwork::DapNetwork(const QString& a_name, QObject *
 a_parent /*= nullptr*/) [+] DapNetworksList::findNetwork();
 DapNetworksList::fill()

---
 chain/wallet/DapNetwork.cpp             |  5 ++--
 chain/wallet/DapNetwork.h               |  2 +-
 chain/wallet/models/DapNetworksList.cpp | 32 +++++++++++++++++++++++++
 chain/wallet/models/DapNetworksList.h   |  6 +++++
 4 files changed, 42 insertions(+), 3 deletions(-)

diff --git a/chain/wallet/DapNetwork.cpp b/chain/wallet/DapNetwork.cpp
index eb11868a..aeaf3e5a 100644
--- a/chain/wallet/DapNetwork.cpp
+++ b/chain/wallet/DapNetwork.cpp
@@ -1,7 +1,8 @@
 #include "DapNetwork.h"
 
-DapNetwork::DapNetwork(QObject * a_parent /*= nullptr*/)
-    :QObject(a_parent)
+DapNetwork::DapNetwork(const QString& a_name, QObject * a_parent /*= nullptr*/)
+    : QObject(a_parent)
+    , m_name(a_name)
 {
 }
 
diff --git a/chain/wallet/DapNetwork.h b/chain/wallet/DapNetwork.h
index 8736babc..771d51ed 100644
--- a/chain/wallet/DapNetwork.h
+++ b/chain/wallet/DapNetwork.h
@@ -15,7 +15,7 @@ public:
         //...
     };
 
-    Q_INVOKABLE explicit DapNetwork(QObject * a_parent = nullptr);
+    Q_INVOKABLE explicit DapNetwork(const QString& a_name, QObject * a_parent = nullptr);
 
     Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
     Q_PROPERTY(QString state READ stateString NOTIFY stateChanged)
diff --git a/chain/wallet/models/DapNetworksList.cpp b/chain/wallet/models/DapNetworksList.cpp
index 8509b88b..4c980098 100644
--- a/chain/wallet/models/DapNetworksList.cpp
+++ b/chain/wallet/models/DapNetworksList.cpp
@@ -1,4 +1,5 @@
 #include "DapNetworksList.h"
+#include <QDebug>
 
 DapNetworksList::DapNetworksList(QObject *a_parrent /*= nullptr*/)
     :QObject(a_parrent)
@@ -15,3 +16,34 @@ QList<QObject *> DapNetworksList::model()
     }
     return listModel;
 }
+
+DapNetwork *DapNetworksList::findNetwork(const QString &a_name)
+{
+
+    auto it = std::find_if(m_networks.begin(), m_networks.end(), [a_name](DapNetwork* a_network){
+        return a_network->name() == a_name;
+    });
+    if (it == m_networks.end())
+        return nullptr;
+    return *it;
+}
+
+void DapNetworksList::fill(QVariant a_stringList)
+{
+    if (!a_stringList.isValid() || !a_stringList.canConvert<QStringList>())
+    {
+        qWarning() << "wrong parametr in DapNetworksList::fill";
+        return;
+    }
+
+    for (QString curNetworkName: a_stringList.toStringList())
+    {
+        DapNetwork* network = this->findNetwork(curNetworkName);
+        if (!network)
+        {
+            network = new DapNetwork(curNetworkName, this);
+            m_networks.append(network);
+            //TODO: get state
+        }
+    }
+}
diff --git a/chain/wallet/models/DapNetworksList.h b/chain/wallet/models/DapNetworksList.h
index bde64472..164b421d 100644
--- a/chain/wallet/models/DapNetworksList.h
+++ b/chain/wallet/models/DapNetworksList.h
@@ -11,8 +11,14 @@ public:
 
     DapNetworksList(QObject *a_parrent = nullptr);
 
+
     QList<QObject*> model();
 
+    DapNetwork* findNetwork(const QString& a_name);
+
+public slots:
+    void fill(QVariant a_stringList);
+
 private:
     QList<DapNetwork*> m_networks;
 };
-- 
GitLab