From 2e342361a5eb8b091d21ca551a27eb93aff0162f Mon Sep 17 00:00:00 2001 From: Matt Lowe Date: Tue, 13 Jan 2015 00:33:27 +0100 Subject: [PATCH] Clear chat Users can now clear the chat in the main lobby. This removes unwanted text and clears up memory when the client has been open a long time. --- cockatrice/src/chatview.cpp | 4 ++++ cockatrice/src/chatview.h | 1 + cockatrice/src/tab_room.cpp | 8 ++++++++ cockatrice/src/tab_room.h | 2 ++ 4 files changed, 15 insertions(+) diff --git a/cockatrice/src/chatview.cpp b/cockatrice/src/chatview.cpp index f2b8485c..4a1871b5 100644 --- a/cockatrice/src/chatview.cpp +++ b/cockatrice/src/chatview.cpp @@ -175,6 +175,10 @@ void ChatView::appendMessage(QString message, QString sender, UserLevelFlags use verticalScrollBar()->setValue(verticalScrollBar()->maximum()); } +void ChatView::clearChat() { + document()->clear(); +} + void ChatView::enterEvent(QEvent * /*event*/) { setMouseTracking(true); diff --git a/cockatrice/src/chatview.h b/cockatrice/src/chatview.h index 1e8a2022..67849262 100644 --- a/cockatrice/src/chatview.h +++ b/cockatrice/src/chatview.h @@ -37,6 +37,7 @@ public: void retranslateUi(); void appendHtml(const QString &html); void appendMessage(QString message, QString sender = QString(), UserLevelFlags userLevel = UserLevelFlags(), bool playerBold = false); + void clearChat(); protected: void enterEvent(QEvent *event); void leaveEvent(QEvent *event); diff --git a/cockatrice/src/tab_room.cpp b/cockatrice/src/tab_room.cpp index a4bb9ce0..fa307e7d 100644 --- a/cockatrice/src/tab_room.cpp +++ b/cockatrice/src/tab_room.cpp @@ -53,6 +53,9 @@ TabRoom::TabRoom(TabSupervisor *_tabSupervisor, AbstractClient *_client, ServerI aIgnoreUnregisteredUsers = chatSettingsMenu->addAction(QString()); aIgnoreUnregisteredUsers->setCheckable(true); connect(aIgnoreUnregisteredUsers, SIGNAL(triggered()), this, SLOT(actIgnoreUnregisteredUsers())); + chatSettingsMenu->addSeparator(); + aClearChat = chatSettingsMenu->addAction(QString()); + connect(aClearChat, SIGNAL(triggered()), this, SLOT(actClearChat())); connect(settingsCache, SIGNAL(ignoreUnregisteredUsersChanged()), this, SLOT(ignoreUnregisteredUsersChanged())); QToolButton *chatSettingsButton = new QToolButton; chatSettingsButton->setIcon(QIcon(":/resources/icon_settings.svg")); @@ -114,6 +117,7 @@ void TabRoom::retranslateUi() roomMenu->setTitle(tr("&Room")); aLeaveRoom->setText(tr("&Leave room")); aIgnoreUnregisteredUsers->setText(tr("&Ignore unregistered users in chat")); + aClearChat->setText(tr("&Clear chat")); } void TabRoom::closeRequest() @@ -172,6 +176,10 @@ void TabRoom::ignoreUnregisteredUsersChanged() aIgnoreUnregisteredUsers->setChecked(settingsCache->getIgnoreUnregisteredUsers()); } +void TabRoom::actClearChat() { + chatView->clearChat(); +} + void TabRoom::processRoomEvent(const RoomEvent &event) { switch (static_cast(getPbExtension(event))) { diff --git a/cockatrice/src/tab_room.h b/cockatrice/src/tab_room.h index 857f37a2..600513a2 100644 --- a/cockatrice/src/tab_room.h +++ b/cockatrice/src/tab_room.h @@ -44,6 +44,7 @@ private: QMenu *roomMenu; QAction *aLeaveRoom; QAction *aIgnoreUnregisteredUsers; + QAction * aClearChat; QString sanitizeHtml(QString dirty) const; signals: void roomClosing(TabRoom *tab); @@ -53,6 +54,7 @@ private slots: void sayFinished(const Response &response); void actLeaveRoom(); void actIgnoreUnregisteredUsers(); + void actClearChat(); void ignoreUnregisteredUsersChanged(); void processListGamesEvent(const Event_ListGames &event);