Created a sliding user information panel
[situare] / src / ui / friendlistpanel.h
1  /*
2     Situare - A location system for Facebook
3     Copyright (C) 2010  Ixonos Plc. Authors:
4
5         Kaj Wallin - kaj.wallin@ixonos.com
6
7     Situare is free software; you can redistribute it and/or
8     modify it under the terms of the GNU General Public License
9     version 2 as published by the Free Software Foundation.
10
11     Situare 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 Situare; if not, write to the Free Software
18     Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
19     USA.
20  */
21
22 #ifndef FRIENDLISTPANEL_H
23 #define FRIENDLISTPANEL_H
24
25 #include <QtGui>
26
27 class FriendListView;
28 class User;
29
30 /**
31 * @brief Class for sliding friends list panel
32 *
33 * @author Kaj Wallin - kaj.wallin (at) ixonos.com
34 * @class FriendListPanel friendlistpanel.h "ui/friendlistpanel.h"
35 */
36 class FriendListPanel : public QWidget
37 {
38     Q_OBJECT
39
40 public:
41     FriendListPanel(QWidget *parent = 0);
42
43 /*******************************************************************************
44  * MEMBER FUNCTIONS AND SLOTS
45  ******************************************************************************/
46 public slots:
47     void friendInfoReceived(QList<User *> &friendList);
48     void reDrawFriendsPanel(int width, int height);
49 /*******************************************************************************
50  * SIGNALS
51  ******************************************************************************/
52
53 /*******************************************************************************
54  * DATA MEMBERS
55  ******************************************************************************/
56 private:
57     FriendListView *m_friendListView;   ///< Friend list view
58
59     QVBoxLayout *m_friendsPanelVBox;
60     QPushButton *m_friendsPanelExpandButton;
61     QLabel *m_friendsPanelLabel;
62
63     QStateMachine *m_friendsPanelStateMachine;
64     QState *m_friendsPanelStateClosed;
65     QState *m_friendsPanelStateOpened;
66     QSignalTransition *m_friendsPanelTransitionClose;
67     QSignalTransition *m_friendsPanelTransitionOpen;
68 };
69
70 #endif // FRIENDLISTPANEL_H