summaryrefslogtreecommitdiffstats
blob: 685598976033c9690d065ba41382a40082d3ae93 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/*
 * Copyright (c) 2010 Kevin Smith
 * Licensed under the GNU General Public License v3.
 * See Documentation/Licenses/GPLv3.txt for more information.
 */

#pragma once

#include <QColor>
#include <QVariant>
#include <string>

#include "Swiften/Roster/TreeWidgetFactory.h"
#include "Swiften/Roster/TreeWidget.h"
#include "Swiften/Roster/TreeWidgetItem.h"
#include "Swift/QtUI/QtSwiftUtil.h"

namespace Swift {
	enum RosterRoles {
		StatusTextRole = Qt::UserRole,
		AvatarRole = Qt::UserRole + 1,
		PresenceIconRole = Qt::UserRole + 2,
		StatusShowTypeRole = Qt::UserRole + 3
	};
	
class QtTreeWidget;
class QtTreeWidgetItem : public QObject, public TreeWidgetItem {
	Q_OBJECT
	public:
			~QtTreeWidgetItem();
			void addChild(QtTreeWidgetItem* child);
			void removeChild(QtTreeWidgetItem* child);
			QtTreeWidgetItem* getParentItem();
			int rowCount();
			int rowOf(QtTreeWidgetItem* item);
			int row();
			QtTreeWidgetItem* getItem(int row);
			QVariant data(int role);
			QIcon getPresenceIcon(); 
			QtTreeWidgetItem(QtTreeWidgetItem* parentItem);
			void setText(const std::string& text);
			void setAvatarPath(const std::string& path);
			void setStatusText(const std::string& text);
			void setStatusShow(StatusShow::Type show);
			void setTextColor(unsigned long color);
			void setBackgroundColor(unsigned long color);
			void setExpanded(bool b);
			void parentItemHasBeenDeleted();
			void hide();
			void show();
			bool isShown();
			bool isContact() const;
			bool isExpanded();
			const QString& getName() const {return displayName_;};
			const QString& getLowerName() const {return displayNameLower_;};
			StatusShow::Type getStatusShow() const {return statusShowType_;};
			StatusShow::Type getStatusShowMerged() const {return mergedShowType_;};

			QWidget* getCollapsedRosterWidget();
			QWidget* getExpandedRosterWidget();
			bool operator<(const QtTreeWidgetItem& item) const;
			
		signals:
			void changed(QtTreeWidgetItem*);
		private slots:
			void handleChanged(QtTreeWidgetItem* item);
		private:
			QString toolTipString();
			QList<QtTreeWidgetItem*> children_;
			QList<QtTreeWidgetItem*> shownChildren_;
			QtTreeWidgetItem* parent_;
			QString displayName_;
			QString displayNameLower_;
			QString statusText_;
			QColor textColor_;
			QColor backgroundColor_;
			QVariant avatar_;
			bool shown_;
			bool expanded_;
			StatusShow::Type statusShowType_;
			StatusShow::Type mergedShowType_;
};

bool itemLessThan(QtTreeWidgetItem* left, QtTreeWidgetItem* right);

}