From e16720841fef44dc5c97abefee5b5bb60110b0eb Mon Sep 17 00:00:00 2001
From: agsantos <aline.gondimsantos@savoirfairelinux.com>
Date: Mon, 10 Aug 2020 12:49:56 -0400
Subject: [PATCH] pluginpreferences: code change to handle windows errors

Change-Id: I885a8d8287511d6769d3c33a255c5216f12c6cac
---
 src/preferenceitemlistmodel.cpp               | 57 ++++++++++---------
 src/preferenceitemlistmodel.h                 | 35 +++++++-----
 .../components/PluginListPreferencesView.qml  |  3 +-
 3 files changed, 55 insertions(+), 40 deletions(-)

diff --git a/src/preferenceitemlistmodel.cpp b/src/preferenceitemlistmodel.cpp
index 245ee77de..eb7ce5218 100644
--- a/src/preferenceitemlistmodel.cpp
+++ b/src/preferenceitemlistmodel.cpp
@@ -21,14 +21,14 @@
 
 std::map<QString, int> mapType {{QString("List"), PreferenceItemListModel::Type::LIST}};
 
-PreferenceItemListModel::PreferenceItemListModel(QObject *parent)
+PreferenceItemListModel::PreferenceItemListModel(QObject* parent)
     : QAbstractListModel(parent)
 {}
 
 PreferenceItemListModel::~PreferenceItemListModel() {}
 
 int
-PreferenceItemListModel::rowCount(const QModelIndex &parent) const
+PreferenceItemListModel::rowCount(const QModelIndex& parent) const
 {
     if (!parent.isValid()) {
         /*
@@ -43,7 +43,7 @@ PreferenceItemListModel::rowCount(const QModelIndex &parent) const
 }
 
 int
-PreferenceItemListModel::columnCount(const QModelIndex &parent) const
+PreferenceItemListModel::columnCount(const QModelIndex& parent) const
 {
     Q_UNUSED(parent);
     /*
@@ -53,36 +53,35 @@ PreferenceItemListModel::columnCount(const QModelIndex &parent) const
 }
 
 QVariant
-PreferenceItemListModel::data(const QModelIndex &index, int role) const
+PreferenceItemListModel::data(const QModelIndex& index, int role) const
 {
     auto preferenceList = LRCInstance::pluginModel().getPluginPreferences(pluginId_);
     if (!index.isValid() || preferenceList.size() <= index.row()) {
         return QVariant();
-    }    
+    }
 
     auto details = preferenceList.at(index.row());
     int type = Type::DEFAULT;
     auto it = mapType.find(details["type"]);
-    if (it != mapType.end())
-    {
+    if (it != mapType.end()) {
         type = mapType[details["type"]];
     }
 
     switch (role) {
-        case Role::PreferenceKey:
-            return QVariant(details["key"]);
-        case Role::PreferenceName:
-            return QVariant(details["title"]);
-        case Role::PreferenceSummary:
-            return QVariant(details["summary"]);
-        case Role::PreferenceType:
-            return QVariant(type);
-        case Role::PreferenceDefaultValue:
-            return QVariant(details["defaultValue"]);
-        case Role::PreferenceEntries:
-            return QVariant(details["entries"]);
-        case Role::PreferenceEntryValues:
-            return QVariant(details["entryValues"]);
+    case Role::PreferenceKey:
+        return QVariant(details["key"]);
+    case Role::PreferenceName:
+        return QVariant(details["title"]);
+    case Role::PreferenceSummary:
+        return QVariant(details["summary"]);
+    case Role::PreferenceType:
+        return QVariant(type);
+    case Role::PreferenceDefaultValue:
+        return QVariant(details["defaultValue"]);
+    case Role::PreferenceEntries:
+        return QVariant(details["entries"]);
+    case Role::PreferenceEntryValues:
+        return QVariant(details["entryValues"]);
     }
     return QVariant();
 }
@@ -98,12 +97,12 @@ PreferenceItemListModel::roleNames() const
     roles[PreferenceDefaultValue] = "PreferenceDefaultValue";
     roles[PreferenceEntries] = "PreferenceEntries";
     roles[PreferenceEntryValues] = "PreferenceEntryValues";
-    
+
     return roles;
 }
 
 QModelIndex
-PreferenceItemListModel::index(int row, int column, const QModelIndex &parent) const
+PreferenceItemListModel::index(int row, int column, const QModelIndex& parent) const
 {
     Q_UNUSED(parent);
     if (column != 0) {
@@ -117,14 +116,14 @@ PreferenceItemListModel::index(int row, int column, const QModelIndex &parent) c
 }
 
 QModelIndex
-PreferenceItemListModel::parent(const QModelIndex &child) const
+PreferenceItemListModel::parent(const QModelIndex& child) const
 {
     Q_UNUSED(child);
     return QModelIndex();
 }
 
 Qt::ItemFlags
-PreferenceItemListModel::flags(const QModelIndex &index) const
+PreferenceItemListModel::flags(const QModelIndex& index) const
 {
     auto flags = QAbstractItemModel::flags(index) | Qt::ItemNeverHasChildren | Qt::ItemIsSelectable;
     if (!index.isValid()) {
@@ -147,7 +146,13 @@ PreferenceItemListModel::pluginId() const
 }
 
 void
-PreferenceItemListModel::setPluginId(const QString &pluginId)
+PreferenceItemListModel::setPluginId(const QString& pluginId)
 {
     pluginId_ = pluginId;
 }
+
+int
+PreferenceItemListModel::preferencesCount()
+{
+    return LRCInstance::pluginModel().getPluginPreferences(pluginId_).size();
+}
\ No newline at end of file
diff --git a/src/preferenceitemlistmodel.h b/src/preferenceitemlistmodel.h
index 4c53d74cc..931c00e39 100644
--- a/src/preferenceitemlistmodel.h
+++ b/src/preferenceitemlistmodel.h
@@ -29,32 +29,41 @@ class PreferenceItemListModel : public QAbstractListModel
     Q_OBJECT
 
     Q_PROPERTY(QString pluginId READ pluginId WRITE setPluginId)
+    Q_PROPERTY(int preferencesCount READ preferencesCount)
 public:
-    enum Role { PreferenceKey = Qt::UserRole + 1, PreferenceName, PreferenceSummary, PreferenceType, PreferenceDefaultValue, PreferenceEntries, PreferenceEntryValues};
+    enum Role {
+        PreferenceKey = Qt::UserRole + 1,
+        PreferenceName,
+        PreferenceSummary,
+        PreferenceType,
+        PreferenceDefaultValue,
+        PreferenceEntries,
+        PreferenceEntryValues
+    };
 
     typedef enum {
-    LIST,
-    DEFAULT,
+        LIST,
+        DEFAULT,
     } Type;
 
     Q_ENUM(Role)
 
-    explicit PreferenceItemListModel(QObject *parent = 0);
+    explicit PreferenceItemListModel(QObject* parent = 0);
     ~PreferenceItemListModel();
 
     /*
      * QAbstractListModel override.
      */
-    int rowCount(const QModelIndex &parent = QModelIndex()) const override;
-    int columnCount(const QModelIndex &parent) const override;
-    QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
+    int rowCount(const QModelIndex& parent = QModelIndex()) const override;
+    int columnCount(const QModelIndex& parent) const override;
+    QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
     /*
      * Override role name as access point in qml.
      */
     QHash<int, QByteArray> roleNames() const override;
-    QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const;
-    QModelIndex parent(const QModelIndex &child) const;
-    Qt::ItemFlags flags(const QModelIndex &index) const;
+    QModelIndex index(int row, int column = 0, const QModelIndex& parent = QModelIndex()) const;
+    QModelIndex parent(const QModelIndex& child) const;
+    Qt::ItemFlags flags(const QModelIndex& index) const;
 
     /*
      * This function is to reset the model when there's new plugin added or modified.
@@ -62,9 +71,9 @@ public:
     Q_INVOKABLE void reset();
 
     QString pluginId() const;
-    void setPluginId(const QString &pluginId);
-// signals:
-//     void pluginIdChanged();
+    void setPluginId(const QString& pluginId);
+    int preferencesCount();
+
 private:
     QString pluginId_;
 };
diff --git a/src/settingsview/components/PluginListPreferencesView.qml b/src/settingsview/components/PluginListPreferencesView.qml
index 2bce00218..5635dfbf8 100644
--- a/src/settingsview/components/PluginListPreferencesView.qml
+++ b/src/settingsview/components/PluginListPreferencesView.qml
@@ -70,7 +70,8 @@ Rectangle {
     }
 
     function getSize(pluginId, show){
-        size = 50 * ClientWrapper.pluginModel.getPluginPreferences(pluginId).length
+        preferenceItemListModel.pluginId = pluginId
+        size = 50 * preferenceItemListModel.preferencesCount
         if (show) {
             height = 200 + size
             pluginPreferenceView.height = size
-- 
GitLab