qTox  Version: nightly | Commit: bc751c8e1cac455f9690654fcfe0f560d2d7dfdd
widget.h
Go to the documentation of this file.
1 /*
2  Copyright © 2014-2019 by The qTox Project Contributors
3 
4  This file is part of qTox, a Qt-based graphical interface for Tox.
5 
6  qTox is libre software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  qTox is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with qTox. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 #pragma once
21 
22 #include "ui_mainwindow.h"
23 
24 #include <QFileInfo>
25 #include <QMainWindow>
26 #include <QPointer>
27 #include <QSystemTrayIcon>
28 
29 #include "genericchatitemwidget.h"
30 
31 #include "audio/iaudiocontrol.h"
32 #include "audio/iaudiosink.h"
33 #include "src/core/core.h"
34 #include "src/core/groupid.h"
35 #include "src/core/toxfile.h"
36 #include "src/core/toxid.h"
37 #include "src/core/toxpk.h"
40 #if DESKTOP_NOTIFICATIONS
43 #endif
44 
45 #define PIXELS_TO_ACT 7
46 
47 namespace Ui {
48 class MainWindow;
49 }
50 
51 class AddFriendForm;
52 class AlSink;
53 class Camera;
54 class ChatForm;
55 class CircleWidget;
56 class ContentDialog;
57 class ContentLayout;
58 class Core;
59 class FilesForm;
60 class Friend;
61 class FriendChatroom;
62 class FriendListWidget;
63 class FriendWidget;
65 class Group;
66 class GroupChatForm;
67 class GroupChatroom;
68 class GroupInvite;
69 class GroupInviteForm;
70 class GroupWidget;
72 class ProfileForm;
73 class ProfileInfo;
74 class QActionGroup;
75 class QMenu;
76 class QPushButton;
77 class QSplitter;
78 class QTimer;
79 class SettingsWidget;
80 class SystemTrayIcon;
81 class VideoSurface;
82 class UpdateCheck;
83 class Settings;
84 class IChatLog;
85 class ChatHistory;
86 
87 class Widget final : public QMainWindow
88 {
89  Q_OBJECT
90 
91 private:
93  {
94  AddButton,
98  None,
99  };
100 
101  enum class DialogType
102  {
103  AddDialog,
108  };
109 
110  enum class FilterCriteria
111  {
112  All = 0,
113  Online,
114  Offline,
115  Friends,
116  Groups
117  };
118 
119 public:
120  explicit Widget(Profile& _profile, IAudioControl& audio, QWidget* parent = nullptr);
121  ~Widget() override;
122  void init();
123  void setCentralWidget(QWidget* widget, const QString& widgetName);
124  QString getUsername();
125  Camera* getCamera();
126  static Widget* getInstance(IAudioControl* audio = nullptr);
128  void addFriendDialog(const Friend* frnd, ContentDialog* dialog);
129  void addGroupDialog(Group* group, ContentDialog* dialog);
130  bool newFriendMessageAlert(const ToxPk& friendId, const QString& text, bool sound = true,
131  QString filename = QString(), size_t filesize = 0);
132  bool newGroupMessageAlert(const GroupId& groupId, const ToxPk& authorPk, const QString& message,
133  bool notify);
134  bool getIsWindowMinimized();
135  void updateIcons();
136 
137  static QString fromDialogType(DialogType type);
140 
141  static void confirmExecutableOpen(const QFileInfo& file);
142 
143  void clearAllReceipts();
144 
145  static inline QIcon prepareIcon(QString path, int w = 0, int h = 0);
146 
147  bool groupsVisible() const;
148 
149  void resetIcon();
150 
151 public slots:
152  void reloadTheme();
153  void onShowSettings();
154  void onSeparateWindowClicked(bool separate);
155  void onSeparateWindowChanged(bool separate, bool clicked);
156  void setWindowTitle(const QString& title);
157  void forceShow();
158  void onConnected();
159  void onDisconnected();
160  void onStatusSet(Status::Status status);
161  void onFailedToStartCore();
162  void onBadProxyCore();
163  void onSelfAvatarLoaded(const QPixmap& pic);
164  void setUsername(const QString& username);
165  void setStatusMessage(const QString& statusMessage);
166  void addFriend(uint32_t friendId, const ToxPk& friendPk);
167  void addFriendFailed(const ToxPk& userId, const QString& errorInfo = QString());
168  void onCoreFriendStatusChanged(int friendId, Status::Status status);
169  void onFriendStatusChanged(const ToxPk& friendPk, Status::Status status);
170  void onFriendStatusMessageChanged(int friendId, const QString& message);
171  void onFriendDisplayedNameChanged(const QString& displayed);
172  void onFriendUsernameChanged(int friendId, const QString& username);
173  void onFriendAliasChanged(const ToxPk& friendId, const QString& alias);
174  void onFriendMessageReceived(uint32_t friendnumber, const QString& message, bool isAction);
175  void onReceiptReceived(int friendId, ReceiptNum receipt);
176  void onExtendedMessageSupport(uint32_t friendNumber, bool supported);
177  void onFriendExtMessageReceived(uint32_t friendNumber, const QString& message);
178  void onExtReceiptReceived(uint32_t friendNumber, uint64_t receiptId);
179  void onFriendRequestReceived(const ToxPk& friendPk, const QString& message);
180  void onFileReceiveRequested(const ToxFile& file);
181  void onEmptyGroupCreated(uint32_t groupnumber, const GroupId& groupId, const QString& title);
182  void onGroupJoined(int groupNum, const GroupId& groupId);
183  void onGroupInviteReceived(const GroupInvite& inviteInfo);
184  void onGroupInviteAccepted(const GroupInvite& inviteInfo);
185  void onGroupMessageReceived(int groupnumber, int peernumber, const QString& message, bool isAction);
186  void onGroupPeerlistChanged(uint32_t groupnumber);
187  void onGroupPeerNameChanged(uint32_t groupnumber, const ToxPk& peerPk, const QString& newName);
188  void onGroupTitleChanged(uint32_t groupnumber, const QString& author, const QString& title);
189  void titleChangedByUser(const QString& title);
190  void onGroupPeerAudioPlaying(int groupnumber, ToxPk peerPk);
191  void onGroupSendFailed(uint32_t groupnumber);
192  void onFriendTypingChanged(uint32_t friendnumber, bool isTyping);
193  void nextContact();
194  void previousContact();
195  void onFriendDialogShown(const Friend* f);
196  void onGroupDialogShown(Group* g);
197  void toggleFullscreen();
198  void refreshPeerListsLocal(const QString& username);
199  void onUpdateAvailable();
200  void onCoreChanged(Core& core);
201 
202 signals:
203  void friendRequestAccepted(const ToxPk& friendPk);
204  void friendRequested(const ToxId& friendAddress, const QString& message);
205  void statusSet(Status::Status status);
206  void statusSelected(Status::Status status);
207  void usernameChanged(const QString& username);
208  void changeGroupTitle(uint32_t groupnumber, const QString& title);
209  void statusMessageChanged(const QString& statusMessage);
210  void resized();
211  void windowStateChanged(Qt::WindowStates states);
212 
213 private slots:
214  void onAddClicked();
215  void onGroupClicked();
216  void onTransferClicked();
217  void showProfile();
218  void openNewDialog(GenericChatroomWidget* widget);
220  void onStatusMessageChanged(const QString& newStatusMessage);
221  void removeFriend(const ToxPk& friendId);
222  void copyFriendIdToClipboard(const ToxPk& friendId);
223  void removeGroup(const GroupId& groupId);
224  void setStatusOnline();
225  void setStatusAway();
226  void setStatusBusy();
227  void onIconClick(QSystemTrayIcon::ActivationReason);
228  void onUserAwayCheck();
229  void onEventIconTick();
230  void onTryCreateTrayIcon();
231  void onSetShowSystemTray(bool newValue);
232  void onSplitterMoved(int pos, int index);
233  void friendListContextMenu(const QPoint& pos);
234  void friendRequestsUpdate();
235  void groupInvitesUpdate();
236  void groupInvitesClear();
237  void onDialogShown(GenericChatroomWidget* widget);
238  void outgoingNotification();
239  void onCallEnd();
240  void incomingNotification(uint32_t friendId);
241  void onRejectCall(uint32_t friendId);
242  void onStopNotification();
243  void dispatchFile(ToxFile file);
244  void dispatchFileWithBool(ToxFile file, bool);
245  void dispatchFileSendFailed(uint32_t friendId, const QString& fileName);
246  void connectCircleWidget(CircleWidget& circleWidget);
247  void connectFriendWidget(FriendWidget& friendWidget);
248  void searchCircle(CircleWidget& circleWidget);
249  void updateFriendActivity(const Friend& frnd);
250  void registerContentDialog(ContentDialog& contentDialog) const;
251 
252 private:
253  // QMainWindow overrides
254  bool eventFilter(QObject* obj, QEvent* event) final;
255  bool event(QEvent* e) final;
256  void closeEvent(QCloseEvent* event) final;
257  void changeEvent(QEvent* event) final;
258  void resizeEvent(QResizeEvent* event) final;
259  void moveEvent(QMoveEvent* event) final;
260 
261  bool newMessageAlert(QWidget* currentWindow, bool isActive, bool sound = true, bool notify = true);
262  void setActiveToolMenuButton(ActiveToolMenuButton newActiveButton);
263  void hideMainForms(GenericChatroomWidget* chatroomWidget);
264  Group* createGroup(uint32_t groupnumber, const GroupId& groupId);
265  void removeFriend(Friend* f, bool fake = false);
266  void removeGroup(Group* g, bool fake = false);
267  void saveWindowGeometry();
268  void saveSplitterGeometry();
269  void cycleContacts(bool forward);
270  void searchContacts();
271  void changeDisplayMode();
272  void updateFilterText();
274  static bool filterGroups(FilterCriteria index);
275  static bool filterOnline(FilterCriteria index);
276  static bool filterOffline(FilterCriteria index);
277  void retranslateUi();
278  void focusChatInput();
279  void openDialog(GenericChatroomWidget* widget, bool newWindow);
280  void playNotificationSound(IAudioSink::Sound sound, bool loop = false);
282  void acceptFileTransfer(const ToxFile &file, const QString &path);
283 
284 private:
286  std::unique_ptr<QSystemTrayIcon> icon;
287  QMenu* trayMenu;
288  QAction* statusOnline;
289  QAction* statusAway;
290  QAction* statusBusy;
291  QAction* actionLogout;
292  QAction* actionQuit;
293  QAction* actionShow;
294 
295  QMenu* filterMenu;
296 
297  QActionGroup* filterGroup;
298  QAction* filterAllAction;
303 
304  QActionGroup* filterDisplayGroup;
307 
308  Ui::MainWindow* ui;
309  QSplitter* centralLayout;
310  QPoint dragPosition;
314 
317 
318  QPointer<SettingsWidget> settingsWidget;
319  std::unique_ptr<UpdateCheck> updateCheck; // ownership should be moved outside Widget once non-singleton
321  static Widget* instance;
325  bool notify(QObject* receiver, QEvent* event);
326  bool autoAwayActive = false;
327  QTimer* timer;
328  bool eventFlag;
329  bool eventIcon;
330  bool wasMaximized = false;
331  QPushButton* friendRequestsButton;
332  QPushButton* groupInvitesButton;
333  unsigned int unreadGroupInvites;
335 
336  IAudioControl& audio;
337  std::unique_ptr<IAudioSink> audioNotification;
339 
340  QMap<ToxPk, FriendWidget*> friendWidgets;
341  // Shared pointer because qmap copies stuff all over the place
342  QMap<ToxPk, std::shared_ptr<FriendMessageDispatcher>> friendMessageDispatchers;
343  // Stop gap method of linking our friend messages back to a group id.
344  // Eventual goal is to have a notification manager that works on
345  // Messages hooked up to message dispatchers but we aren't there
346  // yet
347  QMap<ToxPk, QMetaObject::Connection> friendAlertConnections;
348  QMap<ToxPk, std::shared_ptr<ChatHistory>> friendChatLogs;
349  QMap<ToxPk, std::shared_ptr<FriendChatroom>> friendChatrooms;
350  QMap<ToxPk, ChatForm*> chatForms;
351  std::map<ToxPk, std::unique_ptr<QTimer>> negotiateTimers;
352 
353  QMap<GroupId, GroupWidget*> groupWidgets;
354  QMap<GroupId, std::shared_ptr<GroupMessageDispatcher>> groupMessageDispatchers;
355 
356  // Stop gap method of linking our group messages back to a group id.
357  // Eventual goal is to have a notification manager that works on
358  // Messages hooked up to message dispatchers but we aren't there
359  // yet
360  QMap<GroupId, QMetaObject::Connection> groupAlertConnections;
361  QMap<GroupId, std::shared_ptr<IChatLog>> groupChatLogs;
362  QMap<GroupId, std::shared_ptr<GroupChatroom>> groupChatrooms;
363  QMap<GroupId, QSharedPointer<GroupChatForm>> groupChatForms;
364  Core* core = nullptr;
365 
366 
367  std::unique_ptr<MessageProcessor::SharedParams> sharedMessageProcessorParams;
368 #if DESKTOP_NOTIFICATIONS
369  std::unique_ptr<NotificationGenerator> notificationGenerator;
370  DesktopNotify notifier;
371 #endif
372 
373 #ifdef Q_OS_MAC
374  QAction* fileMenu;
375  QAction* editMenu;
376  QAction* contactMenu;
377  QMenu* changeStatusMenu;
378  QAction* editProfileAction;
379  QAction* logoutAction;
380  QAction* addContactAction;
381  QAction* nextConversationAction;
382  QAction* previousConversationAction;
383 #endif
384 };
385 
386 bool toxActivateEventHandler(const QByteArray& data);
Widget::statusSelected
void statusSelected(Status::Status status)
Settings
Definition: settings.h:51
Widget::changeGroupTitle
void changeGroupTitle(uint32_t groupnumber, const QString &title)
genericchatitemwidget.h
Widget::friendRequestAccepted
void friendRequestAccepted(const ToxPk &friendPk)
Widget::dragPosition
QPoint dragPosition
Definition: widget.h:310
Status::Status
Status
Definition: status.h:28
DesktopNotify
Definition: desktopnotify.h:31
Widget::onSeparateWindowClicked
void onSeparateWindowClicked(bool separate)
Definition: widget.cpp:777
Widget::event
bool event(QEvent *e) final
Definition: widget.cpp:2224
Widget::onSelfAvatarLoaded
void onSelfAvatarLoaded(const QPixmap &pic)
Definition: widget.cpp:688
Widget::hideMainForms
void hideMainForms(GenericChatroomWidget *chatroomWidget)
Definition: widget.cpp:998
Widget::onUserAwayCheck
void onUserAwayCheck()
Definition: widget.cpp:2261
ChatForm
Definition: chatform.h:46
Widget::filterOnline
static bool filterOnline(FilterCriteria index)
Definition: widget.cpp:2435
Widget::updateIcons
void updateIcons()
Definition: widget.cpp:532
toxid.h
Widget::onAddClicked
void onAddClicked()
Definition: widget.cpp:863
Widget::onFriendDialogShown
void onFriendDialogShown(const Friend *f)
Definition: widget.cpp:1815
Widget::ActiveToolMenuButton::AddButton
@ AddButton
Widget::copyFriendIdToClipboard
void copyFriendIdToClipboard(const ToxPk &friendId)
Definition: widget.cpp:1951
FilesForm
Definition: filesform.h:106
toxfile.h
Widget::eventFlag
bool eventFlag
Definition: widget.h:328
Widget::clearAllReceipts
void clearAllReceipts()
Definition: widget.cpp:2446
Widget::onCallEnd
void onCallEnd()
Definition: widget.cpp:1090
Widget::groupChatLogs
QMap< GroupId, std::shared_ptr< IChatLog > > groupChatLogs
Definition: widget.h:361
Widget::onGroupPeerAudioPlaying
void onGroupPeerAudioPlaying(int groupnumber, ToxPk peerPk)
Definition: widget.cpp:2050
GroupInviteForm
This form contains all group invites you received.
Definition: groupinviteform.h:40
Widget::friendWidgets
QMap< ToxPk, FriendWidget * > friendWidgets
Definition: widget.h:340
Widget::filterAllAction
QAction * filterAllAction
Definition: widget.h:298
Widget::onTryCreateTrayIcon
void onTryCreateTrayIcon()
Definition: widget.cpp:2289
Widget::friendRequestsButton
QPushButton * friendRequestsButton
Definition: widget.h:331
Widget::notify
bool notify(QObject *receiver, QEvent *event)
Profile
Handles all qTox internal paths.
Definition: profile.h:42
Widget::refreshPeerListsLocal
void refreshPeerListsLocal(const QString &username)
Definition: widget.cpp:2708
Widget::onFriendAliasChanged
void onFriendAliasChanged(const ToxPk &friendId, const QString &alias)
Definition: widget.cpp:1346
Widget::icon_size
int icon_size
Definition: widget.h:334
Widget::saveSplitterGeometry
void saveSplitterGeometry()
Definition: widget.cpp:2394
GroupInvite
This class contains information needed to create a group invite.
Definition: groupinvite.h:26
Widget::autoAwayActive
bool autoAwayActive
Definition: widget.h:326
Widget::filterGroupsAction
QAction * filterGroupsAction
Definition: widget.h:302
Widget::dispatchFile
void dispatchFile(ToxFile file)
Dispatches file to the appropriate chatlog and accepts the transfer if necessary.
Definition: widget.cpp:1106
Widget::createContentDialog
ContentDialog * createContentDialog() const
Definition: widget.cpp:1842
Widget::instance
static Widget * instance
Definition: widget.h:321
Widget::FilterCriteria::Groups
@ Groups
Widget::prepareIcon
static QIcon prepareIcon(QString path, int w=0, int h=0)
Definition: widget.cpp:2484
Widget::updateFriendActivity
void updateFriendActivity(const Friend &frnd)
Definition: widget.cpp:1735
HistMessageContentType::file
@ file
ChatHistory
Definition: chathistory.h:31
Widget::unreadGroupInvites
unsigned int unreadGroupInvites
Definition: widget.h:333
toxActivateEventHandler
bool toxActivateEventHandler(const QByteArray &data)
Definition: widget.cpp:83
Widget::filterOffline
static bool filterOffline(FilterCriteria index)
Definition: widget.cpp:2424
Widget::eventFilter
bool eventFilter(QObject *obj, QEvent *event) final
Definition: widget.cpp:504
Widget::confirmExecutableOpen
static void confirmExecutableOpen(const QFileInfo &file)
Definition: widget.cpp:911
Widget::Widget
Widget(Profile &_profile, IAudioControl &audio, QWidget *parent=nullptr)
Definition: widget.cpp:140
Widget::addFriendForm
AddFriendForm * addFriendForm
Definition: widget.h:312
Widget::contentLayout
ContentLayout * contentLayout
Definition: widget.h:311
Widget::ActiveToolMenuButton::SettingButton
@ SettingButton
Widget::addFriend
void addFriend(uint32_t friendId, const ToxPk &friendPk)
Definition: widget.cpp:1165
Widget::groupChatForms
QMap< GroupId, QSharedPointer< GroupChatForm > > groupChatForms
Definition: widget.h:363
Widget::onStatusSet
void onStatusSet(Status::Status status)
Definition: widget.cpp:770
Widget::dispatchFileWithBool
void dispatchFileWithBool(ToxFile file, bool)
Definition: widget.cpp:1141
Widget::onFriendRequestReceived
void onFriendRequestReceived(const ToxPk &friendPk, const QString &message)
Definition: widget.cpp:1717
Widget::profileInfo
ProfileInfo * profileInfo
Definition: widget.h:315
Widget::contactListWidget
FriendListWidget * contactListWidget
Definition: widget.h:323
Widget::FilterCriteria::Friends
@ Friends
notificationgenerator.h
desktopnotify.h
Widget::DialogType::ProfileDialog
@ ProfileDialog
Widget::onExtReceiptReceived
void onExtReceiptReceived(uint32_t friendNumber, uint64_t receiptId)
Definition: widget.cpp:1459
Widget::wasMaximized
bool wasMaximized
Definition: widget.h:330
Widget::onFileReceiveRequested
void onFileReceiveRequested(const ToxFile &file)
Definition: widget.cpp:1729
GroupChatForm
Definition: groupchatform.h:39
toxpk.h
Widget::audio
IAudioControl & audio
Definition: widget.h:336
GroupChatroom
Definition: groupchatroom.h:31
Widget::onGroupJoined
void onGroupJoined(int groupNum, const GroupId &groupId)
Definition: widget.cpp:2209
Widget::reloadTheme
void reloadTheme()
Definition: widget.cpp:2454
Widget::onGroupDialogShown
void onGroupDialogShown(Group *g)
Definition: widget.cpp:1820
Widget::filterMenu
QMenu * filterMenu
Definition: widget.h:295
Widget::setStatusMessage
void setStatusMessage(const QString &statusMessage)
Definition: widget.cpp:1033
Widget::actionShow
QAction * actionShow
Definition: widget.h:293
Widget::nextContact
void nextContact()
Definition: widget.cpp:2473
ProfileForm
Definition: profileform.h:51
Widget::friendListContextMenu
void friendListContextMenu(const QPoint &pos)
Definition: widget.cpp:2576
Widget::changeEvent
void changeEvent(QEvent *event) final
Definition: widget.cpp:668
Widget::negotiateTimers
std::map< ToxPk, std::unique_ptr< QTimer > > negotiateTimers
Definition: widget.h:351
Widget::friendMessageDispatchers
QMap< ToxPk, std::shared_ptr< FriendMessageDispatcher > > friendMessageDispatchers
Definition: widget.h:342
Widget::statusAway
QAction * statusAway
Definition: widget.h:289
Widget::friendRequested
void friendRequested(const ToxId &friendAddress, const QString &message)
Widget::onEmptyGroupCreated
void onEmptyGroupCreated(uint32_t groupnumber, const GroupId &groupId, const QString &title)
Definition: widget.cpp:2193
Widget::onDialogShown
void onDialogShown(GenericChatroomWidget *widget)
Definition: widget.cpp:1806
Widget::previousContact
void previousContact()
Definition: widget.cpp:2478
Widget::friendAlertConnections
QMap< ToxPk, QMetaObject::Connection > friendAlertConnections
Definition: widget.h:347
Widget::setActiveToolMenuButton
void setActiveToolMenuButton(ActiveToolMenuButton newActiveButton)
Definition: widget.cpp:2637
Widget::toggleFullscreen
void toggleFullscreen()
Definition: widget.cpp:1826
IChatLog
Definition: ichatlog.h:83
Widget::profileForm
ProfileForm * profileForm
Definition: widget.h:316
Widget::getIsWindowMinimized
bool getIsWindowMinimized()
Widget::filterOfflineAction
QAction * filterOfflineAction
Definition: widget.h:300
Widget::titleChangedByUser
void titleChangedByUser(const QString &title)
Definition: widget.cpp:2043
Widget::onSplitterMoved
void onSplitterMoved(int pos, int index)
Definition: widget.cpp:2401
Widget::filterGroup
QActionGroup * filterGroup
Definition: widget.h:297
Widget::resizeEvent
void resizeEvent(QResizeEvent *event) final
Definition: widget.cpp:677
Widget::onFriendExtMessageReceived
void onFriendExtMessageReceived(uint32_t friendNumber, const QString &message)
Definition: widget.cpp:1453
Widget::connectCircleWidget
void connectCircleWidget(CircleWidget &circleWidget)
Definition: widget.cpp:2715
Widget::groupChatrooms
QMap< GroupId, std::shared_ptr< GroupChatroom > > groupChatrooms
Definition: widget.h:362
Widget::resetIcon
void resetIcon()
Used to reset the blinking icon.
Definition: widget.cpp:2217
Widget::core
Core * core
Definition: widget.h:364
Widget::onFriendStatusMessageChanged
void onFriendStatusMessageChanged(int friendId, const QString &message)
Definition: widget.cpp:1299
SettingsWidget
Definition: settingswidget.h:42
Widget::eventIcon
bool eventIcon
Definition: widget.h:329
Widget::settings
Settings & settings
Definition: widget.h:338
Widget::onEventIconTick
void onEventIconTick()
Definition: widget.cpp:2281
Widget::removeFriend
void removeFriend(const ToxPk &friendId)
Definition: widget.cpp:1801
Widget::onCoreFriendStatusChanged
void onCoreFriendStatusChanged(int friendId, Status::Status status)
Definition: widget.cpp:1254
Widget::ActiveToolMenuButton
ActiveToolMenuButton
Definition: widget.h:92
Widget::filterDisplayGroup
QActionGroup * filterDisplayGroup
Definition: widget.h:304
Widget::statusSet
void statusSet(Status::Status status)
Widget::onSetShowSystemTray
void onSetShowSystemTray(bool newValue)
Definition: widget.cpp:2381
Widget::DialogType::SettingDialog
@ SettingDialog
Widget::onShowSettings
void onShowSettings()
Definition: widget.cpp:966
Widget::friendRequestsUpdate
void friendRequestsUpdate()
Definition: widget.cpp:2590
Widget::focusChatInput
void focusChatInput()
Definition: widget.cpp:2697
Widget::profile
Profile & profile
Definition: widget.h:285
ContentDialog
Definition: contentdialog.h:49
Widget::onGroupMessageReceived
void onGroupMessageReceived(int groupnumber, int peernumber, const QString &message, bool isAction)
Definition: widget.cpp:1999
Widget::setStatusBusy
void setStatusBusy()
Definition: widget.cpp:2351
Widget::cycleContacts
void cycleContacts(bool forward)
Definition: widget.cpp:2408
Ui
Definition: filetransferwidget.h:30
Widget::filterOnlineAction
QAction * filterOnlineAction
Definition: widget.h:299
HistMessageContentType::message
@ message
Widget::onCoreChanged
void onCoreChanged(Core &core)
Definition: widget.cpp:693
Widget::onBadProxyCore
void onBadProxyCore()
Definition: widget.cpp:757
Widget::onUpdateAvailable
void onUpdateAvailable()
Definition: widget.cpp:1835
MaskablePixmapWidget
Definition: maskablepixmapwidget.h:24
Widget::onExtendedMessageSupport
void onExtendedMessageSupport(uint32_t friendNumber, bool supported)
Definition: widget.cpp:1442
Widget::showProfile
void showProfile()
Definition: widget.cpp:982
ToxPk
This class represents a Tox Public Key, which is a part of Tox ID.
Definition: toxpk.h:26
Friend
Definition: friend.h:31
Widget::groupWidgets
QMap< GroupId, GroupWidget * > groupWidgets
Definition: widget.h:353
AddFriendForm
Definition: addfriendform.h:37
Widget::newFriendMessageAlert
bool newFriendMessageAlert(const ToxPk &friendId, const QString &text, bool sound=true, QString filename=QString(), size_t filesize=0)
Definition: widget.cpp:1566
Widget::icon
std::unique_ptr< QSystemTrayIcon > icon
Definition: widget.h:286
Widget::filterDisplayActivity
QAction * filterDisplayActivity
Definition: widget.h:306
Widget::moveEvent
void moveEvent(QMoveEvent *event) final
Definition: widget.cpp:642
Widget::ui
Ui::MainWindow * ui
Definition: widget.h:308
Widget::forceShow
void forceShow()
Definition: widget.cpp:856
Widget::usernameChanged
void usernameChanged(const QString &username)
Widget::newGroupMessageAlert
bool newGroupMessageAlert(const GroupId &groupId, const ToxPk &authorPk, const QString &message, bool notify)
Definition: widget.cpp:1622
Widget::FilterCriteria::All
@ All
Widget::removeGroup
void removeGroup(const GroupId &groupId)
Definition: widget.cpp:2102
Widget::groupInviteForm
GroupInviteForm * groupInviteForm
Definition: widget.h:313
Widget::statusOnline
QAction * statusOnline
Definition: widget.h:288
Widget::onGroupPeerlistChanged
void onGroupPeerlistChanged(uint32_t groupnumber)
Definition: widget.cpp:2010
Widget::onFriendTypingChanged
void onFriendTypingChanged(uint32_t friendnumber, bool isTyping)
Definition: widget.cpp:2370
Widget::windowStateChanged
void windowStateChanged(Qt::WindowStates states)
Widget::onDisconnected
void onDisconnected()
Definition: widget.cpp:741
Widget::actionQuit
QAction * actionQuit
Definition: widget.h:292
Widget::statusMessageChanged
void statusMessageChanged(const QString &statusMessage)
Widget::addFriendFailed
void addFriendFailed(const ToxPk &userId, const QString &errorInfo=QString())
Definition: widget.cpp:1244
Widget::openNewDialog
void openNewDialog(GenericChatroomWidget *widget)
Definition: widget.cpp:1357
Widget::getFilterCriteria
FilterCriteria getFilterCriteria() const
Definition: widget.cpp:2545
Widget::openDialog
void openDialog(GenericChatroomWidget *widget, bool newWindow)
Definition: widget.cpp:1362
Widget::acceptFileTransfer
void acceptFileTransfer(const ToxFile &file, const QString &path)
Definition: widget.cpp:112
Widget::resized
void resized()
Widget::filterFriendsAction
QAction * filterFriendsAction
Definition: widget.h:301
FriendListWidget
Definition: friendlistwidget.h:42
Widget::settingsWidget
QPointer< SettingsWidget > settingsWidget
Definition: widget.h:318
GroupWidget
Definition: groupwidget.h:30
ToxId
This class represents a Tox ID.
Definition: toxid.h:29
Widget::dispatchFileSendFailed
void dispatchFileSendFailed(uint32_t friendId, const QString &fileName)
Definition: widget.cpp:1146
Widget::centralLayout
QSplitter * centralLayout
Definition: widget.h:309
Widget::addFriendDialog
void addFriendDialog(const Friend *frnd, ContentDialog *dialog)
Definition: widget.cpp:1465
Widget::newMessageAlert
bool newMessageAlert(QWidget *currentWindow, bool isActive, bool sound=true, bool notify=true)
Definition: widget.cpp:1680
Widget::friendChatrooms
QMap< ToxPk, std::shared_ptr< FriendChatroom > > friendChatrooms
Definition: widget.h:349
groupid.h
GroupId
This class represents a long term persistent group identifier.
Definition: groupid.h:26
Group
Definition: group.h:34
Widget::onGroupClicked
void onGroupClicked()
Definition: widget.cpp:879
Widget::sharedMessageProcessorParams
std::unique_ptr< MessageProcessor::SharedParams > sharedMessageProcessorParams
Definition: widget.h:367
Widget::onReceiptReceived
void onReceiptReceived(int friendId, ReceiptNum receipt)
Definition: widget.cpp:1431
Widget::onStopNotification
void onStopNotification()
Widget::onStopNotification Stop the notification sound.
Definition: widget.cpp:1098
Widget::onGroupPeerNameChanged
void onGroupPeerNameChanged(uint32_t groupnumber, const ToxPk &peerPk, const QString &newName)
Definition: widget.cpp:2018
Widget::setStatusOnline
void setStatusOnline()
Definition: widget.cpp:2333
Widget::onGroupTitleChanged
void onGroupTitleChanged(uint32_t groupnumber, const QString &author, const QString &title)
Definition: widget.cpp:2028
Widget::audioNotification
std::unique_ptr< IAudioSink > audioNotification
Definition: widget.h:337
Widget::setUsername
void setUsername(const QString &username)
Definition: widget.cpp:1013
Widget::statusBusy
QAction * statusBusy
Definition: widget.h:290
Widget::DialogType
DialogType
Definition: widget.h:101
Widget::filterGroups
static bool filterGroups(FilterCriteria index)
Definition: widget.cpp:2413
Widget::setStatusAway
void setStatusAway()
Definition: widget.cpp:2342
Widget::trayMenu
QMenu * trayMenu
Definition: widget.h:287
Widget::onGroupSendFailed
void onGroupSendFailed(uint32_t groupnumber)
Definition: widget.cpp:2360
Widget::friendChatLogs
QMap< ToxPk, std::shared_ptr< ChatHistory > > friendChatLogs
Definition: widget.h:348
Widget::setCentralWidget
void setCentralWidget(QWidget *widget, const QString &widgetName)
Widget::onGroupInviteReceived
void onGroupInviteReceived(const GroupInvite &inviteInfo)
Definition: widget.cpp:1960
Widget::FilterCriteria
FilterCriteria
Definition: widget.h:110
Widget::DialogType::AddDialog
@ AddDialog
Widget::changeDisplayMode
void changeDisplayMode()
Definition: widget.cpp:2521
Widget::profilePicture
MaskablePixmapWidget * profilePicture
Definition: widget.h:324
Widget::timer
QTimer * timer
Definition: widget.h:327
Widget::onConnected
void onConnected()
Definition: widget.cpp:735
Widget::onGroupInviteAccepted
void onGroupInviteAccepted(const GroupInvite &inviteInfo)
Definition: widget.cpp:1990
Widget::activeChatroomWidget
GenericChatroomWidget * activeChatroomWidget
Definition: widget.h:322
Widget::retranslateUi
void retranslateUi()
Definition: widget.cpp:2649
Widget::filterDisplayName
QAction * filterDisplayName
Definition: widget.h:305
Widget::ActiveToolMenuButton::None
@ None
Widget::updateCheck
std::unique_ptr< UpdateCheck > updateCheck
Definition: widget.h:319
Widget::cleanupNotificationSound
void cleanupNotificationSound()
Definition: widget.cpp:1070
Widget::addGroupDialog
void addGroupDialog(Group *group, ContentDialog *dialog)
Definition: widget.cpp:1521
core.h
CircleWidget
Definition: circlewidget.h:27
Widget::onIconClick
void onIconClick(QSystemTrayIcon::ActivationReason)
Definition: widget.cpp:942
Widget::getUsername
QString getUsername()
Definition: widget.cpp:683
Widget::createGroup
Group * createGroup(uint32_t groupnumber, const GroupId &groupId)
Definition: widget.cpp:2107
Widget::filesForm
FilesForm * filesForm
Definition: widget.h:320
ContentLayout
Definition: contentlayout.h:25
Widget::onTransferClicked
void onTransferClicked()
Definition: widget.cpp:895
Widget::onChatroomWidgetClicked
void onChatroomWidgetClicked(GenericChatroomWidget *widget)
Definition: widget.cpp:1352
ReceiptNum
NamedType< uint32_t, struct ReceiptNumTag, Orderable > ReceiptNum
Definition: receiptnum.h:27
Widget::FilterCriteria::Offline
@ Offline
Widget::DialogType::GroupDialog
@ GroupDialog
Widget::connectFriendWidget
void connectFriendWidget(FriendWidget &friendWidget)
Definition: widget.cpp:2720
Widget::onStatusMessageChanged
void onStatusMessageChanged(const QString &newStatusMessage)
Definition: widget.cpp:1027
Widget::closeEvent
void closeEvent(QCloseEvent *event) final
Definition: widget.cpp:652
Widget::actionLogout
QAction * actionLogout
Definition: widget.h:291
Widget::setWindowTitle
void setWindowTitle(const QString &title)
Definition: widget.cpp:844
Widget::searchContacts
void searchContacts()
Definition: widget.cpp:2510
Widget::ActiveToolMenuButton::TransferButton
@ TransferButton
Widget::onFriendStatusChanged
void onFriendStatusChanged(const ToxPk &friendPk, Status::Status status)
Definition: widget.cpp:1281
Widget::groupInvitesButton
QPushButton * groupInvitesButton
Definition: widget.h:332
Widget::init
void init()
Definition: widget.cpp:156
Widget::~Widget
~Widget() override
Definition: widget.cpp:590
GenericChatroomWidget
Definition: genericchatroomwidget.h:32
ProfileInfo
Implement interface, that provides invormation about self profile. Also, provide methods to work with...
Definition: profileinfo.h:32
Widget::DialogType::TransferDialog
@ TransferDialog
Widget::showUpdateDownloadProgress
void showUpdateDownloadProgress()
Switches to the About settings page.
Definition: widget.cpp:636
VideoSurface
Definition: videosurface.h:27
Widget::outgoingNotification
void outgoingNotification()
Definition: widget.cpp:1084
Widget::onFriendUsernameChanged
void onFriendUsernameChanged(int friendId, const QString &username)
Definition: widget.cpp:1333
Widget::onFriendDisplayedNameChanged
void onFriendDisplayedNameChanged(const QString &displayed)
Definition: widget.cpp:1315
Widget::saveWindowGeometry
void saveWindowGeometry()
Definition: widget.cpp:2388
ToxFile
Definition: toxfile.h:32
Widget::groupInvitesUpdate
void groupInvitesUpdate()
Definition: widget.cpp:2613
Widget::groupInvitesClear
void groupInvitesClear()
Definition: widget.cpp:2631
Widget::groupAlertConnections
QMap< GroupId, QMetaObject::Connection > groupAlertConnections
Definition: widget.h:360
UpdateCheck
Definition: updatecheck.h:32
groupmessagedispatcher.h
Widget::updateFilterText
void updateFilterText()
Definition: widget.cpp:2537
Widget::onFailedToStartCore
void onFailedToStartCore()
Definition: widget.cpp:747
Widget::registerContentDialog
void registerContentDialog(ContentDialog &contentDialog) const
Definition: widget.cpp:1850
Widget::groupMessageDispatchers
QMap< GroupId, std::shared_ptr< GroupMessageDispatcher > > groupMessageDispatchers
Definition: widget.h:354
Widget::incomingNotification
void incomingNotification(uint32_t friendId)
Definition: widget.cpp:1075
Widget::groupsVisible
bool groupsVisible() const
Definition: widget.cpp:2570
Widget::ActiveToolMenuButton::GroupButton
@ GroupButton
FriendWidget
Definition: friendwidget.h:33
Widget::searchCircle
void searchCircle(CircleWidget &circleWidget)
Definition: widget.cpp:2561
Widget::fromDialogType
static QString fromDialogType(DialogType type)
Definition: widget.cpp:1661
Widget::getCamera
Camera * getCamera()
Widget::FilterCriteria::Online
@ Online
Widget::onSeparateWindowChanged
void onSeparateWindowChanged(bool separate, bool clicked)
Definition: widget.cpp:782
Core
Definition: core.h:59
Widget
Definition: widget.h:87
Widget::onFriendMessageReceived
void onFriendMessageReceived(uint32_t friendnumber, const QString &message, bool isAction)
Definition: widget.cpp:1420
FriendChatroom
Definition: friendchatroom.h:45
friendmessagedispatcher.h
Widget::playNotificationSound
void playNotificationSound(IAudioSink::Sound sound, bool loop=false)
Plays a sound via the audioNotification AudioSink.
Definition: widget.cpp:1046
Widget::getInstance
static Widget * getInstance(IAudioControl *audio=nullptr)
Widget::onRejectCall
void onRejectCall(uint32_t friendId)
Definition: widget.cpp:1159
Widget::chatForms
QMap< ToxPk, ChatForm * > chatForms
Definition: widget.h:350