qTox  Version: nightly | Commit: bc751c8e1cac455f9690654fcfe0f560d2d7dfdd
friendlistwidget.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 "genericchatitemlayout.h"
23 #include "src/core/core.h"
24 #include "src/model/status.h"
26 
27 #include <QWidget>
28 
29 class QVBoxLayout;
30 class QGridLayout;
31 class QPixmap;
32 class Widget;
33 class FriendWidget;
34 class GroupWidget;
35 class CircleWidget;
36 class FriendListManager;
38 class CategoryWidget;
39 class Friend;
40 class IFriendListItem;
41 
42 class FriendListWidget : public QWidget
43 {
44  Q_OBJECT
45 public:
47  explicit FriendListWidget(const Core& _core, Widget* parent, bool groupsOnTop = true);
49  void setMode(SortingMode mode);
50  SortingMode getMode() const;
51 
52  void addGroupWidget(GroupWidget* widget);
56  void addCircleWidget(int id);
57  void addCircleWidget(FriendWidget* widget = nullptr);
58  void removeCircleWidget(CircleWidget* widget);
59  void searchChatrooms(const QString& searchString, bool hideOnline = false,
60  bool hideOffline = false, bool hideGroups = false);
61 
62  void cycleContacts(GenericChatroomWidget* activeChatroomWidget, bool forward);
63 
64  void updateActivityTime(const QDateTime& date);
65 
66 signals:
67  void onCompactChanged(bool compact);
68  void connectCircleWidget(CircleWidget& circleWidget);
69  void searchCircle(CircleWidget& circleWidget);
70 
71 public slots:
72  void renameGroupWidget(GroupWidget* groupWidget, const QString& newName);
73  void renameCircleWidget(CircleWidget* circleWidget, const QString& newName);
74  void onGroupchatPositionChanged(bool top);
75  void moveWidget(FriendWidget* w, Status::Status s, bool add = false);
76  void itemsChanged();
77 
78 protected:
79  void dragEnterEvent(QDragEnterEvent* event) override;
80  void dropEvent(QDropEvent* event) override;
81 
82 private slots:
83  void dayTimeout();
84 
85 private:
86  CircleWidget* createCircleWidget(int id = -1);
87  CategoryWidget* getTimeCategoryWidget(const Friend* frd) const;
89  void cleanMainLayout();
90  QWidget* getNextWidgetForName(IFriendListItem* currentPos, bool forward) const;
91  QVector<std::shared_ptr<IFriendListItem> > getItemsFromCircle(CircleWidget* circle) const;
92 
94  QVBoxLayout* listLayout = nullptr;
95  QVBoxLayout* activityLayout = nullptr;
96  QTimer* dayTimer;
98 
99  const Core& core;
100 };
FriendListWidget::createCircleWidget
CircleWidget * createCircleWidget(int id=-1)
Definition: friendlistwidget.cpp:603
FriendListWidget::onGroupchatPositionChanged
void onGroupchatPositionChanged(bool top)
Definition: friendlistwidget.cpp:429
FriendListWidget::addCircleWidget
void addCircleWidget(int id)
Definition: friendlistwidget.cpp:382
FriendListWidget::listLayout
QVBoxLayout * listLayout
Definition: friendlistwidget.h:94
Status::Status
Status
Definition: status.h:28
FriendListWidget::moveWidget
void moveWidget(FriendWidget *w, Status::Status s, bool add=false)
Definition: friendlistwidget.cpp:563
FriendListWidget::renameGroupWidget
void renameGroupWidget(GroupWidget *groupWidget, const QString &newName)
Definition: friendlistwidget.cpp:415
FriendListWidget::onCompactChanged
void onCompactChanged(bool compact)
FriendListWidget::updateActivityTime
void updateActivityTime(const QDateTime &date)
Definition: friendlistwidget.cpp:590
settings.h
FriendListWidget::dayTimer
QTimer * dayTimer
Definition: friendlistwidget.h:96
FriendListWidget::getMode
SortingMode getMode() const
Definition: friendlistwidget.cpp:343
FriendListWidget::itemsChanged
void itemsChanged()
Definition: friendlistwidget.cpp:558
IFriendListItem
Definition: ifriendlistitem.h:26
FriendListWidget::mode
SortingMode mode
Definition: friendlistwidget.h:93
CategoryWidget
Definition: categorywidget.h:32
FriendListWidget::renameCircleWidget
void renameCircleWidget(CircleWidget *circleWidget, const QString &newName)
Definition: friendlistwidget.cpp:420
FriendListWidget::setMode
void setMode(SortingMode mode)
Definition: friendlistwidget.cpp:133
FriendListWidget::searchChatrooms
void searchChatrooms(const QString &searchString, bool hideOnline=false, bool hideOffline=false, bool hideGroups=false)
Definition: friendlistwidget.cpp:409
FriendListWidget::dayTimeout
void dayTimeout()
Definition: friendlistwidget.cpp:549
FriendListWidget::~FriendListWidget
~FriendListWidget()
Definition: friendlistwidget.cpp:125
FriendListWidget::removeCircleWidget
void removeCircleWidget(CircleWidget *widget)
Definition: friendlistwidget.cpp:404
Settings::FriendListSortingMode
FriendListSortingMode
Definition: settings.h:141
FriendListWidget::manager
FriendListManager * manager
Definition: friendlistwidget.h:97
FriendListWidget::getNextWidgetForName
QWidget * getNextWidgetForName(IFriendListItem *currentPos, bool forward) const
Definition: friendlistwidget.cpp:303
FriendListManager
Definition: friendlistmanager.h:29
FriendListWidget::removeFriendWidget
void removeFriendWidget(FriendWidget *w)
Definition: friendlistwidget.cpp:369
FriendListWidget::sortByMode
void sortByMode(SortingMode mode)
Definition: friendlistwidget.cpp:144
FriendListWidget::cycleContacts
void cycleContacts(GenericChatroomWidget *activeChatroomWidget, bool forward)
Definition: friendlistwidget.cpp:439
Friend
Definition: friend.h:31
FriendListWidget::dropEvent
void dropEvent(QDropEvent *event) override
Definition: friendlistwidget.cpp:524
FriendListWidget::removeGroupWidget
void removeGroupWidget(GroupWidget *w)
Definition: friendlistwidget.cpp:364
FriendListWidget::addGroupWidget
void addGroupWidget(GroupWidget *widget)
Definition: friendlistwidget.cpp:348
FriendListWidget::addFriendWidget
void addFriendWidget(FriendWidget *w)
Definition: friendlistwidget.cpp:359
FriendListWidget::activityLayout
QVBoxLayout * activityLayout
Definition: friendlistwidget.h:95
FriendListWidget::core
const Core & core
Definition: friendlistwidget.h:99
FriendListWidget::FriendListWidget
FriendListWidget(const Core &_core, Widget *parent, bool groupsOnTop=true)
Definition: friendlistwidget.cpp:100
FriendListWidget
Definition: friendlistwidget.h:42
GroupWidget
Definition: groupwidget.h:30
FriendListWidget::getTimeCategoryWidget
CategoryWidget * getTimeCategoryWidget(const Friend *frd) const
Definition: friendlistwidget.cpp:335
core.h
CircleWidget
Definition: circlewidget.h:27
genericchatitemlayout.h
FriendListWidget::cleanMainLayout
void cleanMainLayout()
Clears the listLayout by performing the creation and ownership inverse of sortByMode.
Definition: friendlistwidget.cpp:280
GenericChatroomWidget
Definition: genericchatroomwidget.h:32
FriendListWidget::searchCircle
void searchCircle(CircleWidget &circleWidget)
FriendListWidget::connectCircleWidget
void connectCircleWidget(CircleWidget &circleWidget)
FriendListWidget::dragEnterEvent
void dragEnterEvent(QDragEnterEvent *event) override
Definition: friendlistwidget.cpp:513
status.h
FriendWidget
Definition: friendwidget.h:33
FriendListWidget::getItemsFromCircle
QVector< std::shared_ptr< IFriendListItem > > getItemsFromCircle(CircleWidget *circle) const
Definition: friendlistwidget.cpp:322
Core
Definition: core.h:59
Widget
Definition: widget.h:87