Added method for setting the context buttons
[situare] / src / ui / panelcontextbuttonbar.cpp
1 /*
2     Situare - A location system for Facebook
3     Copyright (C) 2010  Ixonos Plc. Authors:
4
5         Pekka Nissinen - pekka.nissinen@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 #include <QDebug>
23 #include <QPainter>
24
25 #include "imagebutton.h"
26
27 #include "panelcontextbuttonbar.h"
28
29 const int CONTEXT_BUTTON_BAR_WIDTH = 78;
30
31 PanelContextButtonBar::PanelContextButtonBar(QWidget *parent)
32     : QWidget(parent)
33 {
34     qDebug() << __PRETTY_FUNCTION__;
35
36     m_barTile.load(":/res/images/panel_context_button_bar_tile.png");
37     m_barTop.load(":/res/images/panel_context_button_bar_top.png");
38
39     setFixedWidth(CONTEXT_BUTTON_BAR_WIDTH);
40 }
41
42 void PanelContextButtonBar::paintEvent(QPaintEvent *event)
43 {
44     qDebug() << __PRETTY_FUNCTION__;
45
46     Q_UNUSED(event);
47
48     const int CONTEXT_BUTTON_BAR_RECT_X = 0;
49
50     const int CONTEXT_BUTTON_BAR_TOP_HEIGHT = 32;
51     const int CONTEXT_BUTTON_BAR_TOP_X = 0;
52     const int CONTEXT_BUTTON_BAR_TOP_Y = 0;
53
54     QPainter painter(this);
55
56     m_barRect.setRect(CONTEXT_BUTTON_BAR_RECT_X, CONTEXT_BUTTON_BAR_TOP_HEIGHT,
57                       CONTEXT_BUTTON_BAR_WIDTH, height() - CONTEXT_BUTTON_BAR_TOP_HEIGHT);
58
59     painter.drawPixmap(CONTEXT_BUTTON_BAR_TOP_X, CONTEXT_BUTTON_BAR_TOP_Y, m_barTop);
60     painter.drawTiledPixmap(m_barRect, m_barTile);
61
62 }
63
64 void PanelContextButtonBar::setContextButtons(const QList<ImageButton *> &contextButtonList)
65 {
66     qDebug() << __PRETTY_FUNCTION__;
67
68     const int CONTEXT_BUTTON_HEIGHT = 74;
69     const int CONTEXT_BUTTON_MARGIN_LEFT = 2;
70     const int CONTEXT_BUTTON_MARGIN_TOP = 10;
71
72     // Hide previous buttons (if any)
73     for (int i = 0; i < m_contextButtonList.size(); i ++) {
74         m_contextButtonList.at(i)->setParent(0);
75     }
76
77     m_contextButtonList = contextButtonList;
78
79     for (int i = 0; i < m_contextButtonList.size(); i ++) {
80         m_contextButtonList.at(i)->setParent(this);
81         m_contextButtonList.at(i)->setVisible(true);
82         m_contextButtonList.at(i)->move(CONTEXT_BUTTON_MARGIN_LEFT,
83                                         CONTEXT_BUTTON_MARGIN_TOP + (CONTEXT_BUTTON_HEIGHT * i));
84     }
85
86     setFixedHeight(CONTEXT_BUTTON_MARGIN_TOP + (CONTEXT_BUTTON_HEIGHT * contextButtonList.size()));
87
88     emit positionChangeRequested();
89 }