diff options
Diffstat (limited to 'Swift/QtUI/Roster/QtTreeWidget.h')
-rw-r--r-- | Swift/QtUI/Roster/QtTreeWidget.h | 111 |
1 files changed, 65 insertions, 46 deletions
diff --git a/Swift/QtUI/Roster/QtTreeWidget.h b/Swift/QtUI/Roster/QtTreeWidget.h index 7c10a6a..331458a 100644 --- a/Swift/QtUI/Roster/QtTreeWidget.h +++ b/Swift/QtUI/Roster/QtTreeWidget.h @@ -1,61 +1,80 @@ /* - * Copyright (c) 2010-2012 Kevin Smith - * Licensed under the GNU General Public License v3. - * See Documentation/Licenses/GPLv3.txt for more information. + * Copyright (c) 2010-2016 Isode Limited. + * All rights reserved. + * See the COPYING file for more information. */ #pragma once -#include <QTreeView> -#include <QModelIndex> #include <QDragEnterEvent> -#include <QDropEvent> #include <QDragMoveEvent> -#include "Swift/QtUI/Roster/RosterModel.h" -#include "Swift/QtUI/Roster/RosterDelegate.h" +#include <QDropEvent> +#include <QModelIndex> +#include <QTreeView> + +#include <Swift/Controllers/UIInterfaces/ChatWindow.h> + +#include <Swift/QtUI/Roster/RosterDelegate.h> +#include <Swift/QtUI/Roster/RosterModel.h> namespace Swift { class UIEventStream; class SettingsProvider; -class QtTreeWidget : public QTreeView{ - Q_OBJECT - public: - QtTreeWidget(UIEventStream* eventStream, SettingsProvider* settings, QWidget* parent = 0); - ~QtTreeWidget(); - void show(); - QtTreeWidgetItem* getRoot(); - void setRosterModel(Roster* roster); - Roster* getRoster() {return roster_;} - boost::signal<void (RosterItem*)> onSomethingSelectedChanged; - - private slots: - void handleItemActivated(const QModelIndex&); - void handleModelItemExpanded(const QModelIndex&, bool expanded); - void handleExpanded(const QModelIndex&); - void handleCollapsed(const QModelIndex&); - void handleClicked(const QModelIndex&); - void handleSettingChanged(const std::string& setting); - protected: - void dragEnterEvent(QDragEnterEvent* event); - void dropEvent(QDropEvent* event); - void dragMoveEvent(QDragMoveEvent* event); - - protected: - QModelIndexList getSelectedIndexes() const; - private: - void drawBranches(QPainter*, const QRect&, const QModelIndex&) const; - protected slots: - virtual void currentChanged(const QModelIndex& current, const QModelIndex& previous); - protected: - UIEventStream* eventStream_; - - private: - RosterModel* model_; - Roster* roster_; - RosterDelegate* delegate_; - QtTreeWidgetItem* treeRoot_; - SettingsProvider* settings_; +class QtTreeWidget : public QTreeView { + Q_OBJECT + public: + enum MessageTarget {MessageDefaultJID, MessageDisplayJID}; + + QtTreeWidget(UIEventStream* eventStream, SettingsProvider* settings, MessageTarget messageTarget, QWidget* parent = nullptr); + ~QtTreeWidget(); + void show(); + QtTreeWidgetItem* getRoot(); + void setRosterModel(Roster* roster); + Roster* getRoster() {return roster_;} + void refreshTooltip(); + void setMessageTarget(MessageTarget messageTarget); + JID jidFromIndex(const QModelIndex& index) const; + JID selectedJID() const; + void setOnline(bool isOnline); + + public: + boost::signals2::signal<void (RosterItem*)> onSomethingSelectedChanged; + + private slots: + void handleItemActivated(const QModelIndex&); + void handleModelItemExpanded(const QModelIndex&, bool expanded); + void handleExpanded(const QModelIndex&); + void handleCollapsed(const QModelIndex&); + void handleClicked(const QModelIndex&); + void handleSettingChanged(const std::string& setting); + void handleRefreshTooltip(); + + protected: + void dragEnterEvent(QDragEnterEvent* event); + void dropEvent(QDropEvent* event); + void dragMoveEvent(QDragMoveEvent* event); + bool event(QEvent* event); + QModelIndexList getSelectedIndexes() const; + bool isOnline() const; + + private: + void drawBranches(QPainter*, const QRect&, const QModelIndex&) const; + + protected slots: + virtual void currentChanged(const QModelIndex& current, const QModelIndex& previous); + protected: + UIEventStream* eventStream_; + + private: + RosterModel* model_; + Roster* roster_ = nullptr; + RosterDelegate* delegate_; + QtTreeWidgetItem* treeRoot_ = nullptr; + SettingsProvider* settings_; + bool tooltipShown_ = false; + MessageTarget messageTarget_; + bool isOnline_ = false; }; } |