2 Situare - A location system for Facebook
3 Copyright (C) 2010 Ixonos Plc. Authors:
5 Kaj Wallin - kaj.wallin@ixonos.com
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.
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.
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,
23 #include "sidepanel.h"
24 #include "panelsliderbar.h"
25 #include "panelsidebar.h"
27 SidePanel::SidePanel(QWidget *parent) :
30 qDebug() << __PRETTY_FUNCTION__;
32 m_panelVBox = new QVBoxLayout(this);
33 m_panelVBox->setMargin(0);
34 m_panelVBox->setContentsMargins(SLIDINGBAR_WIDTH+1, 0, SIDEBAR_WIDTH, 0);
35 m_panelVBox->setSpacing(0);
37 m_panelBase = new QWidget(this);
38 m_panelBase->setLayout(m_panelVBox);
40 QPalette pal = palette();
41 pal.setColor(QPalette::Background, QColor(0, 0, 0, 128));
42 m_panelBase->setPalette(pal);
43 m_panelBase->setAutoFillBackground(true);
45 m_panelStateMachine = new QStateMachine(this);
46 m_panelStateClosed = new QState(m_panelStateMachine);
47 m_panelStateMachine->setInitialState(m_panelStateClosed);
48 m_panelStateOpened = new QState(m_panelStateMachine);
50 m_panelTransitionOpen = m_panelStateClosed->addTransition(
51 this, SIGNAL(toggleState()), m_panelStateOpened);
52 m_panelTransitionOpen->addAnimation(new QPropertyAnimation(this, "pos", this));
54 m_panelTransitionClose = m_panelStateOpened->addTransition(
55 this, SIGNAL(toggleState()), m_panelStateClosed);
56 m_panelTransitionClose->addAnimation(new QPropertyAnimation(this, "pos", this));
58 connect(m_panelStateClosed, SIGNAL(entered()),
59 this, SLOT(stateChangedToClosed()));
60 connect(m_panelStateOpened, SIGNAL(entered()),
61 this, SLOT(stateChangedToOpen()));
66 void SidePanel::openPanel()
68 qDebug() << __PRETTY_FUNCTION__;
75 void SidePanel::closePanel()
77 qDebug() << __PRETTY_FUNCTION__;
84 void SidePanel::screenResized(const QSize &size)
86 qDebug() << __PRETTY_FUNCTION__;
87 if(currentType == SidePanel::UserPanel)
89 m_panelBase->resize(USERPANEL_WIDTH, SLIDINGBAR_HEIGHT + MARGIN_CORRECTION);
90 resize(USERPANEL_WIDTH + SLIDINGBAR_WIDTH,SLIDINGBAR_HEIGHT + MARGIN_CORRECTION);
92 else if(currentType == SidePanel::FriendPanel)
94 resize(FRIENDPANEL_WIDTH + SLIDINGBAR_WIDTH, size.height() + MARGIN_CORRECTION);
95 m_panelBase->resize(FRIENDPANEL_WIDTH, size.height() + MARGIN_CORRECTION);
96 m_panelStateClosed->assignProperty(this, "pos", QPoint(
97 size.width() - PANEL_PEEK_AMOUNT - SLIDINGBAR_WIDTH + MARGIN_CORRECTION, PANEL_TOP_Y));
98 m_panelStateOpened->assignProperty(this, "pos", QPoint(
99 size.width() - FRIENDPANEL_WIDTH - SLIDINGBAR_WIDTH + MARGIN_CORRECTION, PANEL_TOP_Y));
100 move(size.width() - PANEL_PEEK_AMOUNT - SLIDINGBAR_WIDTH + MARGIN_CORRECTION, PANEL_TOP_Y);
104 qFatal("Illegal panel type in SidePanel::screenResized");
108 void SidePanel::setType(SidePanel::PanelType type)
110 qDebug() << __PRETTY_FUNCTION__;
111 if(type == SidePanel::UserPanel) {
113 m_panelBase->move(TOP_CORNER_X,PANEL_TOP_Y);
114 m_panelBase->resize(USERPANEL_WIDTH, SLIDINGBAR_HEIGHT + MARGIN_CORRECTION);
116 PanelSliderBar *m_panelSlidingBar = new PanelSliderBar(this, LEFT);
117 m_panelSlidingBar->move(USERPANEL_WIDTH - SLIDINGBAR_WIDTH, PANEL_TOP_Y);
119 connect(m_panelSlidingBar, SIGNAL(clicked()),
120 this, SIGNAL(toggleState()));
122 // set mask to allow clicking zoom button at their default position
123 setMask(QPixmap(":/res/images/userpanel_mask.png").mask());
125 m_panelStateClosed->assignProperty(this, "pos", QPoint(
126 USERPANEL_CLOSED_X, PANEL_TOP_Y));
127 m_panelStateOpened->assignProperty(this, "pos", QPoint(
128 USERPANEL_OPENED_X, PANEL_TOP_Y));
129 setObjectName("UserPanel");
131 else if (type == SidePanel::FriendPanel) {
133 m_panelBase->move(TOP_CORNER_X + SLIDINGBAR_WIDTH,PANEL_TOP_Y);
134 m_panelBase->resize(FRIENDPANEL_WIDTH, FRIENDPANEL_HEIGHT);
136 m_panelSlidingBar = new PanelSliderBar(this, RIGHT);
137 m_panelSlidingBar->move(TOP_CORNER_X, PANEL_TOP_Y);
139 connect(m_panelSlidingBar, SIGNAL(clicked()),
140 this, SIGNAL(toggleState()));
142 m_panelStateClosed->assignProperty(this, "pos", QPoint(
143 FRIENDPANEL_CLOSED_X, PANEL_TOP_Y));
144 m_panelStateOpened->assignProperty(this, "pos", QPoint(
145 FRIENDPANEL_OPENED_X, PANEL_TOP_Y));
146 setObjectName("FriendPanel");
149 qFatal("Illegal type set for SidePanel::setType");
151 m_panelStateMachine->start();
155 void SidePanel::stateChangedToClosed()
157 qDebug() << __PRETTY_FUNCTION__;
161 void SidePanel::stateChangedToOpen()
163 qDebug() << __PRETTY_FUNCTION__;