Added background for ListItemContextButtonBar
[situare] / src / ui / listitemcontextbuttonbar.h
1 /*
2     Situare - A location system for Facebook
3     Copyright (C) 2010  Ixonos Plc. Authors:
4
5         Sami Rämö - sami.ramo@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
23 #ifndef LISTITEMCONTEXTBUTTONBAR_H
24 #define LISTITEMCONTEXTBUTTONBAR_H
25
26 #include <QWidget>
27
28 class QPropertyAnimation;
29
30 class ListItemContextButtonBar : public QWidget
31 {
32     Q_OBJECT
33 public:
34     explicit ListItemContextButtonBar(QWidget *parent = 0);
35
36     ~ListItemContextButtonBar();
37
38     void paintEvent(QPaintEvent *event);
39
40     void hideContextButtonBar();
41
42     /**
43      * @brief Sets the context buttons to the context button bar
44      *
45      * @param contextButtons Pointer to context buttons
46      */
47     void setContextButtons(QWidget *contextButtons);
48
49     void showContextButtonBar();
50
51 signals:
52
53 public slots:
54     void onListItemSelectionChanged(bool itemIsSelected);
55
56 private:
57     void changeButtons();
58
59 private slots:
60     void onAnimationFinished();
61
62 private:
63     enum AnimationState {
64         StateHidden,
65         StateOpening,
66         StateClosing,
67         StateVisible
68     };
69
70     bool m_waitForOpen;
71
72     QPixmap *m_backgroundLeft;
73     QPixmap *m_backgroundMiddle;
74     QPixmap *m_backgroundRight;
75
76     QPropertyAnimation *m_animation;
77
78     QWidget *m_contextButtons;      ///< Widget for context buttons
79     QWidget *m_newContextButtons;   ///< Temporary pointer for new context buttons
80
81     AnimationState m_state;
82 };
83
84 #endif // LISTITEMCONTEXTBUTTONBAR_H