summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2020-02-20 20:51:07 +0100
committerNicolas Werner <nicolas.werner@hotmail.de>2020-02-20 20:51:07 +0100
commit6bdc75d07319b3b2a846ee4a905288ec0d9371f6 (patch)
tree855cd92fb12a652f9959d0a1e64b15db82ba3e79 /src
parentClear user colors on theme change (diff)
downloadnheko-6bdc75d07319b3b2a846ee4a905288ec0d9371f6.tar.xz
Reset user colors on theme change (in qml timeline)
Diffstat (limited to 'src')
-rw-r--r--src/Cache.cpp51
-rw-r--r--src/Cache.h9
-rw-r--r--src/Cache_p.h6
-rw-r--r--src/MainWindow.cpp3
-rw-r--r--src/timeline/TimelineModel.cpp15
-rw-r--r--src/timeline/TimelineModel.h2
-rw-r--r--src/timeline/TimelineViewManager.cpp11
-rw-r--r--src/timeline/TimelineViewManager.h2
8 files changed, 15 insertions, 84 deletions
diff --git a/src/Cache.cpp b/src/Cache.cpp

index e73f7754..caa3f1ec 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp
@@ -2186,7 +2186,6 @@ Cache::roomMembers(const std::string &room_id) QHash<QString, QString> Cache::DisplayNames; QHash<QString, QString> Cache::AvatarUrls; -QHash<QString, QString> Cache::UserColors; QString Cache::displayName(const QString &room_id, const QString &user_id) @@ -2218,16 +2217,6 @@ Cache::avatarUrl(const QString &room_id, const QString &user_id) return QString(); } -QString -Cache::userColor(const QString &user_id) -{ - if (UserColors.contains(user_id)) { - return UserColors[user_id]; - } - - return QString(); -} - void Cache::insertDisplayName(const QString &room_id, const QString &user_id, @@ -2259,24 +2248,6 @@ Cache::removeAvatarUrl(const QString &room_id, const QString &user_id) } void -Cache::insertUserColor(const QString &user_id, const QString &color_name) -{ - UserColors.insert(user_id, color_name); -} - -void -Cache::removeUserColor(const QString &user_id) -{ - UserColors.remove(user_id); -} - -void -Cache::clearUserColors() -{ - UserColors.clear(); -} - -void to_json(json &j, const RoomInfo &info) { j["name"] = info.name; @@ -2425,12 +2396,6 @@ avatarUrl(const QString &room_id, const QString &user_id) return instance_->avatarUrl(room_id, user_id); } -QString -userColor(const QString &user_id) -{ - return instance_->userColor(user_id); -} - void removeDisplayName(const QString &room_id, const QString &user_id) { @@ -2441,11 +2406,6 @@ removeAvatarUrl(const QString &room_id, const QString &user_id) { instance_->removeAvatarUrl(room_id, user_id); } -void -removeUserColor(const QString &user_id) -{ - instance_->removeUserColor(user_id); -} void insertDisplayName(const QString &room_id, const QString &user_id, const QString &display_name) @@ -2457,17 +2417,6 @@ insertAvatarUrl(const QString &room_id, const QString &user_id, const QString &a { instance_->insertAvatarUrl(room_id, user_id, avatar_url); } -void -insertUserColor(const QString &user_id, const QString &color_name) -{ - instance_->insertUserColor(user_id, color_name); -} - -void -clearUserColors() -{ - instance_->clearUserColors(); -} //! Load saved data for the display names & avatars. void diff --git a/src/Cache.h b/src/Cache.h
index 69b3ef2d..bb042ea9 100644 --- a/src/Cache.h +++ b/src/Cache.h
@@ -43,25 +43,16 @@ QString displayName(const QString &room_id, const QString &user_id); QString avatarUrl(const QString &room_id, const QString &user_id); -QString -userColor(const QString &user_id); void removeDisplayName(const QString &room_id, const QString &user_id); void removeAvatarUrl(const QString &room_id, const QString &user_id); -void -removeUserColor(const QString &user_id); void insertDisplayName(const QString &room_id, const QString &user_id, const QString &display_name); void insertAvatarUrl(const QString &room_id, const QString &user_id, const QString &avatar_url); -void -insertUserColor(const QString &user_id, const QString &color_name); - -void -clearUserColors(); //! Load saved data for the display names & avatars. void diff --git a/src/Cache_p.h b/src/Cache_p.h
index eacb28a7..137408b9 100644 --- a/src/Cache_p.h +++ b/src/Cache_p.h
@@ -51,11 +51,9 @@ public: static std::string displayName(const std::string &room_id, const std::string &user_id); static QString displayName(const QString &room_id, const QString &user_id); static QString avatarUrl(const QString &room_id, const QString &user_id); - static QString userColor(const QString &user_id); static void removeDisplayName(const QString &room_id, const QString &user_id); static void removeAvatarUrl(const QString &room_id, const QString &user_id); - static void removeUserColor(const QString &user_id); static void insertDisplayName(const QString &room_id, const QString &user_id, @@ -63,9 +61,6 @@ public: static void insertAvatarUrl(const QString &room_id, const QString &user_id, const QString &avatar_url); - static void insertUserColor(const QString &user_id, const QString &color_name); - - static void clearUserColors(); //! Load saved data for the display names & avatars. void populateMembers(); @@ -484,7 +479,6 @@ private: static QHash<QString, QString> DisplayNames; static QHash<QString, QString> AvatarUrls; - static QHash<QString, QString> UserColors; OlmSessionStorage session_storage; }; diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp
index 1b378ca9..17a04a41 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp
@@ -115,9 +115,6 @@ MainWindow::MainWindow(QWidget *parent) connect( userSettingsPage_, SIGNAL(trayOptionChanged(bool)), trayIcon_, SLOT(setVisible(bool))); - connect(userSettingsPage_, &UserSettingsPage::themeChanged, this, []() { - cache::clearUserColors(); - }); connect( userSettingsPage_, &UserSettingsPage::themeChanged, chat_page_, &ChatPage::themeChanged); connect(trayIcon_, diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp
index 8de6bec6..cad39bc5 100644 --- a/src/timeline/TimelineModel.cpp +++ b/src/timeline/TimelineModel.cpp
@@ -196,9 +196,6 @@ TimelineModel::TimelineModel(TimelineViewManager *manager, QString room_id, QObj if (idx >= 0) emit dataChanged(index(idx, 0), index(idx, 0)); }); - - connect( - ChatPage::instance(), &ChatPage::themeChanged, this, [this]() { userColors.clear(); }); } QHash<int, QByteArray> @@ -650,15 +647,6 @@ TimelineModel::addBackwardsEvents(const mtx::responses::Messages &msgs) prev_batch_token_ = QString::fromStdString(msgs.end); } -QColor -TimelineModel::userColor(QString id, QColor background) -{ - if (!userColors.contains(id)) - userColors.insert( - id, QColor(utils::generateContrastingHexColor(id, background.name()))); - return userColors.value(id); -} - QString TimelineModel::displayName(QString id) const { @@ -1446,7 +1434,8 @@ TimelineModel::formatTypingUsers(const std::vector<QString> &users, QColor bg) auto formatUser = [this, bg](const QString &user_id) -> QString { auto uncoloredUsername = escapeEmoji(displayName(user_id).toHtmlEscaped()); - QString prefix = QString("<font color=\"%1\">").arg(userColor(user_id, bg).name()); + QString prefix = + QString("<font color=\"%1\">").arg(manager_->userColor(user_id, bg).name()); // color only parts that don't have a font already specified QString coloredUsername; diff --git a/src/timeline/TimelineModel.h b/src/timeline/TimelineModel.h
index 642e9bbc..f06de5d9 100644 --- a/src/timeline/TimelineModel.h +++ b/src/timeline/TimelineModel.h
@@ -165,7 +165,6 @@ public: bool canFetchMore(const QModelIndex &) const override; void fetchMore(const QModelIndex &) override; - Q_INVOKABLE QColor userColor(QString id, QColor background); Q_INVOKABLE QString displayName(QString id) const; Q_INVOKABLE QString avatarUrl(QString id) const; Q_INVOKABLE QString formatDateSeparator(QDate date) const; @@ -248,7 +247,6 @@ private: bool paginationInProgress = false; bool isProcessingPending = false; - QHash<QString, QColor> userColors; QString currentId; std::vector<QString> typingUsers_; diff --git a/src/timeline/TimelineViewManager.cpp b/src/timeline/TimelineViewManager.cpp
index 7cd1432d..14f903a1 100644 --- a/src/timeline/TimelineViewManager.cpp +++ b/src/timeline/TimelineViewManager.cpp
@@ -18,6 +18,8 @@ Q_DECLARE_METATYPE(mtx::events::collections::TimelineEvents) void TimelineViewManager::updateColorPalette() { + userColors.clear(); + if (settings->theme() == "light") { QPalette lightActive(/*windowText*/ QColor("#333"), /*button*/ QColor("#333"), @@ -53,6 +55,15 @@ TimelineViewManager::updateColorPalette() } } +QColor +TimelineViewManager::userColor(QString id, QColor background) +{ + if (!userColors.contains(id)) + userColors.insert( + id, QColor(utils::generateContrastingHexColor(id, background.name()))); + return userColors.value(id); +} + TimelineViewManager::TimelineViewManager(QSharedPointer<UserSettings> userSettings, QWidget *parent) : imgProvider(new MxcImageProvider()) , colorImgProvider(new ColorImageProvider()) diff --git a/src/timeline/TimelineViewManager.h b/src/timeline/TimelineViewManager.h
index 625999c9..338101c7 100644 --- a/src/timeline/TimelineViewManager.h +++ b/src/timeline/TimelineViewManager.h
@@ -40,6 +40,7 @@ public: Q_INVOKABLE TimelineModel *activeTimeline() const { return timeline_; } Q_INVOKABLE bool isInitialSync() const { return isInitialSync_; } Q_INVOKABLE void openImageOverlay(QString mxcUrl, QString eventId) const; + Q_INVOKABLE QColor userColor(QString id, QColor background); signals: void clearRoomMessageCount(QString roomid); @@ -118,4 +119,5 @@ private: QString replyingEvent_; QSharedPointer<UserSettings> settings; + QHash<QString, QColor> userColors; };