summaryrefslogtreecommitdiffstats
blob: 75bcf526ec56a83d99467b4a8ba0a82907715408 (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
/*
 * Copyright (c) 2010 Kevin Smith
 * Licensed under the GNU General Public License v3.
 * See Documentation/Licenses/GPLv3.txt for more information.
 */

#pragma once

#include "Swiften/Elements/StatusShow.h"

#include <QWidget>
#include <QMap>
#include <QIcon>

class QComboBox;
class QLabel;
class QStackedWidget;
class QListWidget;
class QListWidgetItem;
class QMovie;

namespace Swift {
	class QtLineEdit;
	class QtElidingLabel;
	class QtStatusWidget : public QWidget {
		Q_OBJECT
		public:
			QtStatusWidget(QWidget *parent);
			~QtStatusWidget();
			StatusShow::Type getSelectedStatusShow();
			void setStatusType(StatusShow::Type type);
			void setConnecting();
		signals:
			void onChangeStatusRequest(StatusShow::Type showType, const QString& text);
		public slots:
			void setStatusText(const QString& text);
		private slots:
			void generateList();
			void handleClicked();
			void handleEditComplete();
			void handleEditCancelled();
			void handleApplicationFocusChanged(QWidget* old, QWidget* now);
		protected slots:
			virtual void mousePressEvent(QMouseEvent* event);
			void handleItemClicked(QListWidgetItem* item);
			static QString getNoMessage();
		private:
			void viewMode();
			void setNewToolTip();
			//QComboBox *types_;
			QStackedWidget* stack_;
			QLabel* statusIcon_;
			QtElidingLabel* statusTextLabel_;
			QtLineEdit* statusEdit_;
			QString statusText_;
			QString newStatusText_;
			QMap<StatusShow::Type, QIcon> icons_;
			StatusShow::Type selectedStatusType_;
			bool isClicking_;
			QListWidget* menu_;
			QCursor editCursor_;
			QCursor viewCursor_;
			bool editing_;
			QMovie* connectingMovie_;
			bool connecting_;
			static const QString NO_MESSAGE;
	};
}