Skip to content

Commit 1ef145d

Browse files
authored
Configurable Chat History as List view (#2560)
Swaps ChatTextEdit with ChatTextList if list view is enabled. This leaves ui.chatEdit in main window as nullptr. This means that ui.chatEdit cannot be translated automatically because we set the field to nullptr when using ChatTextList.
1 parent 2afbb7a commit 1ef145d

15 files changed

+619
-49
lines changed

ChangeLog.txt

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ Default Qt Client
1414
- Last login time shown in "User Accounts" dialog
1515
- Ability to sort by "Last Login Time" in "User Accounts" dialog
1616
- Ability to send toast notifications on Linux and Windows
17+
- Ability to change chat history to list view in "Preferences" dialog
1718
- Improve "Server Properties" dialog accessibility
1819
- WebRTC updated from r4332 to r6818
1920
- Qt updated to 6.9.0beta3 on macOS and Windows

Client/qtTeamTalk/CMakeLists.txt

+2
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ if (Qt5_FOUND OR Qt6_FOUND)
9898
useraccountsmodel.h encryptionsetupdlg.h utiltt.h utilxml.h
9999
utilos.h serverdlg.h moveusersdlg.h useraccountdlg.h soundeventsmodel.h
100100
mytableview.h mytabwidget.h shortcutsmodel.h utilmedia.h
101+
chattextlist.h
101102

102103
main.cpp mainwindow.cpp preferencesdlg.cpp uservideowidget.cpp
103104
channelstree.cpp channeldlg.cpp userinfodlg.cpp
@@ -119,6 +120,7 @@ if (Qt5_FOUND OR Qt6_FOUND)
119120
useraccountsmodel.cpp encryptionsetupdlg.cpp utiltt.cpp utilxml.cpp
120121
utilos.cpp serverdlg.cpp moveusersdlg.cpp useraccountdlg.cpp soundeventsmodel.cpp
121122
mytableview.cpp mytabwidget.cpp shortcutsmodel.cpp utilmedia.cpp
123+
chattextlist.cpp
122124
mainwindow.ui channel.ui preferences.ui
123125
serverlist.ui userinfo.ui bannedusers.ui useraccounts.ui
124126
serverproperties.ui uservideo.ui keycomp.ui textmessage.ui

Client/qtTeamTalk/chattextedit.cpp

+10
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,18 @@ QString getTextMessagePrefix(const TextMessage& msg, const User& user)
122122
ChatTextEdit::ChatTextEdit(QWidget * parent/* = 0*/)
123123
: QPlainTextEdit(parent)
124124
{
125+
setAccessibleName(tr("History"));
126+
125127
new UrlSyntaxHighlighter(document());
126128
viewport()->setMouseTracking(true);
129+
setTabChangesFocus(true);
130+
setUndoRedoEnabled(false);
131+
setReadOnly(true);
132+
setTextInteractionFlags(Qt::TextInteractionFlag::LinksAccessibleByKeyboard |
133+
Qt::TextInteractionFlag::LinksAccessibleByMouse |
134+
Qt::TextInteractionFlag::TextBrowserInteraction |
135+
Qt::TextInteractionFlag::TextSelectableByKeyboard |
136+
Qt::TextInteractionFlag::TextSelectableByMouse);
127137
}
128138

129139
QString ChatTextEdit::getTimeStamp(const QDateTime& tm, bool force_ts)

Client/qtTeamTalk/chattextedit.h

+22-6
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,36 @@
2222

2323
#include <QPlainTextEdit>
2424

25-
class ChatTextEdit : public QPlainTextEdit
25+
class ChatTextHistory
26+
{
27+
public:
28+
virtual ~ChatTextHistory() = default;
29+
30+
virtual void updateServer(const ServerProperties& srvprop) = 0;
31+
virtual void joinedChannel(int channelid) = 0;
32+
33+
virtual QString addTextMessage(const MyTextMessage& msg) = 0;
34+
virtual void addLogMessage(const QString& msg) = 0;
35+
36+
virtual bool hasFocus() const = 0;
37+
virtual void setFocus() = 0;
38+
};
39+
40+
class ChatTextEdit : public QPlainTextEdit, public ChatTextHistory
2641
{
2742
Q_OBJECT
2843

2944
public:
3045
ChatTextEdit(QWidget * parent = 0);
3146

32-
void updateServer(const ServerProperties& srvprop);
33-
34-
void joinedChannel(int channelid);
47+
void updateServer(const ServerProperties& srvprop) override;
3548

36-
QString addTextMessage(const MyTextMessage& msg);
37-
void addLogMessage(const QString& msg);
49+
void joinedChannel(int channelid) override;
3850

51+
QString addTextMessage(const MyTextMessage& msg) override;
52+
void addLogMessage(const QString& msg) override;
53+
bool hasFocus() const override { return QPlainTextEdit::hasFocus(); }
54+
void setFocus() override { QPlainTextEdit::setFocus(); }
3955
signals:
4056
void clearHistory();
4157
private:

0 commit comments

Comments
 (0)