f308e072f2bb71de826d265b1f2608607ed13889
[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 class PanelSliderBar;
30
31 /**
32 * @brief Class for sliding friends list panel
33 *
34 * @author Kaj Wallin - kaj.wallin (at) ixonos.com
35 * @class FriendListPanel friendlistpanel.h "ui/friendlistpanel.h"
36 */
37 class FriendListPanel : public QWidget
38 {
39     Q_OBJECT
40
41 public:
42     /**
43     * @brief Default constructor
44     *
45     * @param parent
46     */
47     FriendListPanel(QWidget *parent = 0);
48
49 /*******************************************************************************
50  * MEMBER FUNCTIONS AND SLOTS
51  ******************************************************************************/
52 public slots:
53     /**
54     * @brief Slot to refresh friends list
55     *
56     * @param friendList
57     */
58     void friendInfoReceived(QList<User *> &friendList);
59
60     /**
61     * @brief Slot to redraw the panel after window resize event
62     *
63     * @param width Width of the window after resize
64     * @param height Height of the window after resize
65     */
66     void reDrawFriendsPanel(int width, int height);
67
68 /*******************************************************************************
69  * SIGNALS
70  ******************************************************************************/
71 signals:
72     /**
73     * @brief Signal for friend finding.
74     *
75     * @param coordinates longitude and latitude values
76     */
77     void findFriend(const QPointF &coordinates);
78
79 /*******************************************************************************
80  * DATA MEMBERS
81  ******************************************************************************/
82 private:
83     FriendListView *m_friendListView; ///< Friend list view
84     QVBoxLayout *m_friendsPanelVBox; ///< Vertical layout inside the panel
85     PanelSliderBar *m_friendsPanelSlidingBar; ///< Widget for sidebar tab item
86
87     QStateMachine *m_friendsPanelStateMachine; ///< State machine for sliding the panel
88     QState *m_friendsPanelStateClosed; ///< State of the closed panel
89     QState *m_friendsPanelStateOpened; ///< State of the opened panel
90     QSignalTransition *m_friendsPanelTransitionClose; ///< Transition signal for closing the panel
91     QSignalTransition *m_friendsPanelTransitionOpen; ///< Transition signal for opening the panel
92 };
93
94 #endif // FRIENDLISTPANEL_H