From c81758a50d489ced5f03d5f54441a9a37e47a936 Mon Sep 17 00:00:00 2001
From: jonymt <johanmt@yandex.ru>
Date: Fri, 20 Sep 2019 21:50:25 +0200
Subject: [PATCH] [+] added filling combobox

---
 .../DapCommandController.cpp                  | 19 +++++++++++++-
 CellFrameDashboardGUI/DapCommandController.h  |  8 ++++++
 .../DapServiceController.cpp                  |  8 ++++++
 CellFrameDashboardGUI/DapServiceController.h  |  3 ++-
 .../DapSettingsNetworkModel.h                 |  2 +-
 .../DapUiQmlWidgetSettingsNetwork.qml         |  7 +++++
 CellFrameDashboardGUI/main.cpp                |  1 +
 .../DapChainDashboardService.cpp              |  6 +++++
 .../DapChainDashboardService.h                |  2 ++
 .../DapChainHistoryHandler.cpp                |  2 +-
 .../DapChainNetworkHandler.cpp                | 26 ++++++++++++++++---
 .../DapChainNetworkHandler.h                  |  5 +++-
 12 files changed, 80 insertions(+), 9 deletions(-)

diff --git a/CellFrameDashboardGUI/DapCommandController.cpp b/CellFrameDashboardGUI/DapCommandController.cpp
index 7a3cc5b53..a6f5629a5 100755
--- a/CellFrameDashboardGUI/DapCommandController.cpp
+++ b/CellFrameDashboardGUI/DapCommandController.cpp
@@ -63,6 +63,11 @@ void DapCommandController::setNewHistory(const QVariant& aData)
     emit sendHistory(aData);
 }
 
+void DapCommandController::changeCurrentNetwork(const QString& aNetwork)
+{
+    m_DAPRpcSocket->invokeRemoteMethod("RPCServer.changeCurrentNetwork", aNetwork);
+}
+
 void DapCommandController::processChangedLog()
 {
 //    QStringList tempLogModel;
@@ -186,12 +191,18 @@ void DapCommandController::processExecuteCommand()
 
 void DapCommandController::processGetHistory()
 {
-    qDebug() << "processGetHistory()";
     DapRpcServiceReply *reply = static_cast<DapRpcServiceReply *>(sender());
     QVariant result = reply->response().result().toArray().toVariantList();
     emit sendHistory(result);
 }
 
+void DapCommandController::processGetNetworkList()
+{
+    DapRpcServiceReply *reply = static_cast<DapRpcServiceReply *>(sender());
+    QStringList result = reply->response().result().toVariant().toStringList();
+    emit sendNetworkList(result);
+}
+
 /// Show or hide GUI client by clicking on the tray icon.
 /// @param aIsActivated Accepts true - when requesting to 
 /// display a client, falso - when requesting to hide a client.
@@ -245,6 +256,12 @@ void DapCommandController::getNodeNetwork()
     connect(reply, SIGNAL(finished()), this, SLOT(processGetNodeNetwork()));
 }
 
+void DapCommandController::getNetworkList()
+{
+    DapRpcServiceReply *reply = m_DAPRpcSocket->invokeRemoteMethod("RPCServer.getNetworkList");
+    connect(reply, SIGNAL(finished()), this, SLOT(processGetNetworkList()));
+}
+
 void DapCommandController::setNodeStatus(const bool aIsOnline)
 {
     /*DapRpcServiceReply *reply =*/ m_DAPRpcSocket->invokeRemoteMethod("RPCServer.setNodeStatus", aIsOnline);
diff --git a/CellFrameDashboardGUI/DapCommandController.h b/CellFrameDashboardGUI/DapCommandController.h
index 78152aba3..605f85ff3 100755
--- a/CellFrameDashboardGUI/DapCommandController.h
+++ b/CellFrameDashboardGUI/DapCommandController.h
@@ -49,6 +49,8 @@ signals:
     /// Signal for sending new transaction history
     void sendHistory(const QVariant& aData);
 
+    void sendNetworkList(const QStringList& aList);
+
 public:
     /// Overloaded constructor.
     /// @param apIODevice Data transfer device.
@@ -78,6 +80,8 @@ private slots:
 
     void processGetHistory();
 
+    void processGetNetworkList();
+
 public slots:
     /// Show or hide GUI client by clicking on the tray icon.
     /// @param aIsActivated Accepts true - when requesting to 
@@ -98,6 +102,8 @@ public slots:
 
     void getNodeNetwork();
 
+    void getNetworkList();
+
     void setNodeStatus(const bool aIsOnline);
 
     void executeCommand(const QString& command);
@@ -110,6 +116,8 @@ public slots:
     void getHistory();
     /// Send to model new history
     void setNewHistory(const QVariant& aData);
+
+    void changeCurrentNetwork(const QString& aNetwork);
 };
 
 #endif // COMMANDCONTROLLER_H
diff --git a/CellFrameDashboardGUI/DapServiceController.cpp b/CellFrameDashboardGUI/DapServiceController.cpp
index 3b8f210af..3b60c7bbe 100755
--- a/CellFrameDashboardGUI/DapServiceController.cpp
+++ b/CellFrameDashboardGUI/DapServiceController.cpp
@@ -59,6 +59,9 @@ void DapServiceController::init(DapServiceClient *apDapServiceClient)
     connect(m_pDapCommandController, SIGNAL(sendHistory(QVariant)), this, SLOT(processGetHistory(QVariant)));
 
     connect(m_pDapCommandController, &DapCommandController::sendHistory, &DapScreenHistoryModel::getInstance(), &DapScreenHistoryModel::receiveNewData);
+
+    connect(m_pDapCommandController, &DapCommandController::sendNetworkList, &DapSettingsNetworkModel::getInstance(), &DapSettingsNetworkModel::setNetworkList);
+    connect(&DapSettingsNetworkModel::getInstance(), &DapSettingsNetworkModel::currentNetworkChanged, m_pDapCommandController, &DapCommandController::changeCurrentNetwork);
 }
 
 QString DapServiceController::getBrand() const
@@ -235,6 +238,11 @@ void DapServiceController::processGetHistory(const QVariant& aData)
     DapScreenHistoryModel::getInstance().receiveNewData(aData);
 }
 
+void DapServiceController::getNetworkList()
+{
+    m_pDapCommandController->getNetworkList();
+}
+
 
 /// Get an instance of a class.
 /// @return Instance of a class.
diff --git a/CellFrameDashboardGUI/DapServiceController.h b/CellFrameDashboardGUI/DapServiceController.h
index 36f5ba190..9e40b9068 100755
--- a/CellFrameDashboardGUI/DapServiceController.h
+++ b/CellFrameDashboardGUI/DapServiceController.h
@@ -15,6 +15,7 @@
 #include "DapChainWalletsModel.h"
 #include "DapChainNodeNetworkModel.h"
 #include "DapScreenHistoryModel.h"
+#include "DapSettingsNetworkModel.h"
 
 class DapServiceController : public QObject
 {
@@ -80,7 +81,7 @@ public:
 
     void getWalletInfo(const QString& asWalletName);
 
-
+    void getNetworkList();
 
 signals:
     /// The signal is emitted when the Brand company property changes.
diff --git a/CellFrameDashboardGUI/DapSettingsNetworkModel.h b/CellFrameDashboardGUI/DapSettingsNetworkModel.h
index 215eecb59..11f16c3b0 100644
--- a/CellFrameDashboardGUI/DapSettingsNetworkModel.h
+++ b/CellFrameDashboardGUI/DapSettingsNetworkModel.h
@@ -28,7 +28,7 @@ public:
     QVariant data(const QModelIndex& index, int role) const;
     QHash<int, QByteArray> roleNames() const;
 
-    QString getCurrentNetwork() const;
+    Q_INVOKABLE QString getCurrentNetwork() const;
 
 public slots:
     void setNetworkList(const QStringList& aNetworkList);
diff --git a/CellFrameDashboardGUI/DapUiQmlWidgetSettingsNetwork.qml b/CellFrameDashboardGUI/DapUiQmlWidgetSettingsNetwork.qml
index 74a143e5f..9612bcd24 100644
--- a/CellFrameDashboardGUI/DapUiQmlWidgetSettingsNetwork.qml
+++ b/CellFrameDashboardGUI/DapUiQmlWidgetSettingsNetwork.qml
@@ -14,5 +14,12 @@ DapUiQmlWidgetSettingsNetworkForm {
         anchors.topMargin: 13 * pt
         model: dapSettingsNetworkModel
         textRole: "network"
+        currentIndex: find(dapSettingsNetworkModel.CurrentNetwork)
+
+        onCurrentTextChanged: {
+            console.debug(currentText);
+            if(dapSettingsNetworkModel.CurrentNetwork != currentText)
+                dapSettingsNetworkModel.CurrentNetwork = currentText;
+        }
     }
 }
diff --git a/CellFrameDashboardGUI/main.cpp b/CellFrameDashboardGUI/main.cpp
index ab633386f..b53c3f7c9 100755
--- a/CellFrameDashboardGUI/main.cpp
+++ b/CellFrameDashboardGUI/main.cpp
@@ -54,6 +54,7 @@ int main(int argc, char *argv[])
     dapServiceClient.init();
     controller.getWallets();
     controller.getHistory();
+    controller.getNetworkList();
 
     DapScreenHistoryFilterModel::getInstance()
             .setSourceModel(&DapScreenHistoryModel::getInstance());
diff --git a/CellFrameDashboardService/DapChainDashboardService.cpp b/CellFrameDashboardService/DapChainDashboardService.cpp
index 718223759..a117d4403 100755
--- a/CellFrameDashboardService/DapChainDashboardService.cpp
+++ b/CellFrameDashboardService/DapChainDashboardService.cpp
@@ -101,6 +101,12 @@ void DapChainDashboardService::setCurrentNetwork(const QString& aNetwork)
     m_pDapChainNetworkHandler->setCurrentNetwork(aNetwork);
 }
 
+void DapChainDashboardService::changeCurrentNetwork(const QString& aNetwork)
+{
+    m_pDapChainNetworkHandler->setCurrentNetwork(aNetwork);
+    m_pDapChainHistoryHandler->setCurrentNetwork(aNetwork);
+}
+
 void DapChainDashboardService::doRequestWallets()
 {
     m_pDapChainHistoryHandler->onRequestNewHistory(m_pDapChainWalletHandler->getWallets());
diff --git a/CellFrameDashboardService/DapChainDashboardService.h b/CellFrameDashboardService/DapChainDashboardService.h
index f9e230784..46bffd981 100755
--- a/CellFrameDashboardService/DapChainDashboardService.h
+++ b/CellFrameDashboardService/DapChainDashboardService.h
@@ -110,6 +110,8 @@ public slots:
 
     void setCurrentNetwork(const QString& aNetwork);
 
+    void changeCurrentNetwork(const QString& aNetwork);
+
 private slots:
     void doRequestWallets();
     void doSendNewHistory(const QVariant& aData);
diff --git a/CellFrameDashboardService/DapChainHistoryHandler.cpp b/CellFrameDashboardService/DapChainHistoryHandler.cpp
index bf44fd19d..9dfbfa587 100644
--- a/CellFrameDashboardService/DapChainHistoryHandler.cpp
+++ b/CellFrameDashboardService/DapChainHistoryHandler.cpp
@@ -22,7 +22,7 @@ void DapChainHistoryHandler::onRequestNewHistory(const QMap<QString, QVariant>&
     for(int i = 0; i < wallets.count(); i++)
     {
         QProcess process;
-        process.start(QString(CLI_PATH) + " tx_history -net private -chain gdb -addr " + wallets.at(i).toString());
+        process.start(QString(CLI_PATH) + " tx_history -net " + m_CurrentNetwork + " -chain gdb -addr " + wallets.at(i).toString());
         process.waitForFinished(-1);
 
         QByteArray result = process.readAll();
diff --git a/CellFrameDashboardService/DapChainNetworkHandler.cpp b/CellFrameDashboardService/DapChainNetworkHandler.cpp
index 3eda1cde0..9f0e31eb9 100644
--- a/CellFrameDashboardService/DapChainNetworkHandler.cpp
+++ b/CellFrameDashboardService/DapChainNetworkHandler.cpp
@@ -1,16 +1,34 @@
 #include "DapChainNetworkHandler.h"
 
-DapChainNetworkHandler::DapChainNetworkHandler(QObject *parent) : QObject(parent)
+DapChainNetworkHandler::DapChainNetworkHandler(QObject *parent) : QObject(parent),
+    m_CurrentNetwork(-1)
 {
 
 }
 
-QStringList DapChainNetworkHandler::getNetworkList() const
+QStringList DapChainNetworkHandler::getNetworkList()
 {
-    return QStringList();
+    QStringList network;
+    /// TODO: It's test. We should change it later
+    QFile file("network.txt");
+    if(file.open(QIODevice::ReadOnly | QIODevice::Text))
+    {
+        QString data = QString::fromStdString(file.readAll().toStdString());
+        network = data.split(": ").at(1).split(", ");
+    }
+
+    if(!network.isEmpty())
+    {
+        if(m_CurrentNetwork.isEmpty() || !m_NetworkList.contains(m_CurrentNetwork))
+            m_CurrentNetwork = network.at(0);
+        emit changeCurrentNetwork(m_CurrentNetwork);
+    }
+
+    return network;
 }
 
 void DapChainNetworkHandler::setCurrentNetwork(const QString& aNetwork)
 {
-    emit changeCurrentNetwork(aNetwork);
+    if(m_NetworkList.contains(aNetwork))
+        emit changeCurrentNetwork(aNetwork);
 }
diff --git a/CellFrameDashboardService/DapChainNetworkHandler.h b/CellFrameDashboardService/DapChainNetworkHandler.h
index 3bd57ac55..6174cb347 100644
--- a/CellFrameDashboardService/DapChainNetworkHandler.h
+++ b/CellFrameDashboardService/DapChainNetworkHandler.h
@@ -4,17 +4,20 @@
 #include <QObject>
 #include <QString>
 
+#include <QFile>
+
 class DapChainNetworkHandler : public QObject
 {
     Q_OBJECT
 
 private:
+    QString m_CurrentNetwork;
     QStringList m_NetworkList;
 
 public:
     explicit DapChainNetworkHandler(QObject *parent = nullptr);
 
-    QStringList getNetworkList() const;
+    QStringList getNetworkList();
 
 public slots:
     void setCurrentNetwork(const QString& aNetwork);
-- 
GitLab