Fixed positioning and sizing of the ListItemContextButtonBar
[situare] / src / ui / listitemcontextbuttonbar.cpp
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 #include <QDebug>
23
24 #include "panelcommon.h"
25
26 #include "listitemcontextbuttonbar.h"
27
28 ListItemContextButtonBar::ListItemContextButtonBar(QWidget *parent) :
29     QWidget(parent),
30     m_contextButtons(0)
31 {
32     qDebug() << __PRETTY_FUNCTION__;
33 }
34
35 void ListItemContextButtonBar::setContextButtons(QWidget *contextButtons)
36 {
37     qDebug() << __PRETTY_FUNCTION__;
38
39     // Hide previous buttons (if any)
40     if (m_contextButtons)
41         m_contextButtons->setParent(0);
42
43     m_contextButtons = contextButtons;
44
45     m_contextButtons->setParent(this);
46
47     // widget must be temporarily visible so we can get the size, doesn't work with invisible widget
48     m_contextButtons->setVisible(true);
49     setFixedSize(m_contextButtons->size());
50     m_contextButtons->setVisible(false);
51
52     // center this widget horizontally to middle of the panel contents area
53     const int FROM_PANEL_CONTENTS_LEFT = PANEL_WIDTH / 2 - m_contextButtons->width() / 2;
54     const int Y = 0;
55     move(PANEL_TAB_BAR_WIDTH + PANEL_BAR_WIDTH + FROM_PANEL_CONTENTS_LEFT, Y);
56 }