summary refs log tree commit diff
diff options
context:
space:
mode:
authorJedi18 <targetakhil@gmail.com>2021-02-17 19:51:35 +0530
committerJedi18 <targetakhil@gmail.com>2021-02-17 19:58:41 +0530
commit0b6c82dfffd20a264dd54ee838a33a7e157adb59 (patch)
tree2f5e3226c81f16d21d977892e097fea667ed3161
parentadd matrix link for completed item (diff)
downloadnheko-0b6c82dfffd20a264dd54ee838a33a7e157adb59.tar.xz
added bool to choose between showing only rooms with aliases and all of the rooms
-rw-r--r--src/RoomsModel.cpp23
-rw-r--r--src/RoomsModel.h6
-rw-r--r--src/timeline/InputBar.cpp4
3 files changed, 20 insertions, 13 deletions
diff --git a/src/RoomsModel.cpp b/src/RoomsModel.cpp
index 6ace8ef7..213d84df 100644
--- a/src/RoomsModel.cpp
+++ b/src/RoomsModel.cpp
@@ -3,18 +3,26 @@
 #include "Cache_p.h"
 #include "CompletionModelRoles.h"
 
-RoomsModel::RoomsModel(QObject *parent)
+RoomsModel::RoomsModel(bool showOnlyRoomWithAliases, QObject *parent)
   : QAbstractListModel(parent)
+  , showOnlyRoomWithAliases_(showOnlyRoomWithAliases)
 {
-        rooms_    = cache::joinedRooms();
-        roomInfos = cache::getRoomInfo(rooms_);
+        std::vector<std::string> rooms_ = cache::joinedRooms();
+        roomInfos                       = cache::getRoomInfo(rooms_);
 
         for (const auto &r : rooms_) {
                 auto roomAliasesList = cache::client()->getRoomAliases(r);
 
-                if (roomAliasesList) {
-                        roomAliases.push_back(QString::fromStdString(roomAliasesList->alias));
+                if (showOnlyRoomWithAliases_) {
+                        if (roomAliasesList) {
+                                roomids.push_back(QString::fromStdString(r));
+                                roomAliases.push_back(
+                                  QString::fromStdString(roomAliasesList->alias));
+                        }
+                } else {
                         roomids.push_back(QString::fromStdString(r));
+                        roomAliases.push_back(
+                          roomAliasesList ? QString::fromStdString(roomAliasesList->alias) : "");
                 }
         }
 }
@@ -43,14 +51,13 @@ RoomsModel::data(const QModelIndex &index, int role) const
                 case Roles::RoomAlias:
                         return roomAliases[index.row()];
                 case CompletionModel::SearchRole2:
-                        return roomAliases[index.row()];
+                case Roles::RoomName:
+                        return QString::fromStdString(roomInfos.at(roomids[index.row()]).name);
                 case Roles::AvatarUrl:
                         return QString::fromStdString(
                           roomInfos.at(roomids[index.row()]).avatar_url);
                 case Roles::RoomID:
                         return roomids[index.row()];
-                case Roles::RoomName:
-                        return QString::fromStdString(roomInfos.at(roomids[index.row()]).name);
                 }
         }
         return {};
diff --git a/src/RoomsModel.h b/src/RoomsModel.h
index 88cb5c68..0e006448 100644
--- a/src/RoomsModel.h
+++ b/src/RoomsModel.h
@@ -16,18 +16,18 @@ public:
                 RoomName,
         };
 
-        RoomsModel(QObject *parent = nullptr);
+        RoomsModel(bool showOnlyRoomWithAliases = false, QObject *parent = nullptr);
         QHash<int, QByteArray> roleNames() const override;
         int rowCount(const QModelIndex &parent = QModelIndex()) const override
         {
                 (void)parent;
-                return (int)roomAliases.size();
+                return (int)roomids.size();
         }
         QVariant data(const QModelIndex &index, int role) const override;
 
 private:
-        std::vector<std::string> rooms_;
         std::vector<QString> roomids;
         std::vector<QString> roomAliases;
         std::map<QString, RoomInfo> roomInfos;
+        bool showOnlyRoomWithAliases_;
 };
diff --git a/src/timeline/InputBar.cpp b/src/timeline/InputBar.cpp
index 49fa5249..5ef38ac7 100644
--- a/src/timeline/InputBar.cpp
+++ b/src/timeline/InputBar.cpp
@@ -19,11 +19,11 @@
 #include "MainWindow.h"
 #include "MatrixClient.h"
 #include "Olm.h"
+#include "RoomsModel.h"
 #include "TimelineModel.h"
 #include "TimelineViewManager.h"
 #include "UserSettingsPage.h"
 #include "UsersModel.h"
-#include "RoomsModel.h"
 #include "Utils.h"
 #include "dialogs/PreviewUploadOverlay.h"
 #include "emoji/EmojiModel.h"
@@ -188,7 +188,7 @@ InputBar::completerFor(QString completerName)
                 emojiModel->setParent(proxy);
                 return proxy;
         } else if (completerName == "room") {
-                auto roomModel = new RoomsModel();
+                auto roomModel = new RoomsModel(true);
                 auto proxy     = new CompletionProxyModel(roomModel);
                 roomModel->setParent(proxy);
                 return proxy;