Added a few missing comment blocks and cleaned up code a bit
[situare] / src / ui / paneltab.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 <QMouseEvent>
24 #include <QPainter>
25 #include <QRect>
26
27 #include "paneltab.h"
28
29 const int TAB_WIDTH = 66;
30 const int TAB_WIDTH_ACTIVE = 74;
31 const int TAB_HEIGHT = 66;
32
33 PanelTab::PanelTab(QWidget *parent)
34     : QToolButton(parent),
35       m_tabActive(false),
36       m_tabSelected(false)
37 {
38     qDebug() << __PRETTY_FUNCTION__;
39
40     m_tabPixmaps[0].load(":/res/images/tab_inactive.png");
41     m_tabPixmaps[1].load(":/res/images/tab_inactive2.png");
42     m_tabPixmaps[2].load(":/res/images/tab_active.png");
43
44 //    m_tabRect.setRect(TAB_WIDTH_ACTIVE - TAB_WIDTH, 0, TAB_WIDTH, TAB_HEIGHT);
45
46     setCheckable(true);
47
48     setFixedSize(TAB_WIDTH_ACTIVE, TAB_HEIGHT);
49 }
50
51 void PanelTab::mouseMoveEvent(QMouseEvent *event)
52 {
53     qDebug() << __PRETTY_FUNCTION__;
54
55     if(m_tabSelected) {
56         if(!rect().contains(event->pos()))
57             setDown(false);
58         else
59             setDown(true);
60     }
61 }
62
63 void PanelTab::mousePressEvent(QMouseEvent *event)
64 {
65     qDebug() << __PRETTY_FUNCTION__;
66
67     if(event->button() == Qt::LeftButton) {
68         setDown(true);
69         m_tabSelected = true;
70     }
71 }
72
73 void PanelTab::mouseReleaseEvent(QMouseEvent *event)
74 {
75     qDebug() << __PRETTY_FUNCTION__;
76
77     if(this->rect().contains(event->pos())) {
78         click();
79
80         if(isChecked()) {
81             setChecked(false);
82 //            m_tabRect.setRect(TAB_WIDTH_ACTIVE - TAB_WIDTH, 0, TAB_WIDTH, TAB_HEIGHT);
83         } else {
84             setChecked(true);
85 //            m_tabRect.setRect(0, 0, TAB_WIDTH_ACTIVE, TAB_HEIGHT);
86         }
87     }
88
89     setDown(false);
90     m_tabSelected = false;
91 }
92
93 void PanelTab::paintEvent(QPaintEvent *)
94 {
95     qDebug() << __PRETTY_FUNCTION__;
96
97     QPainter painter(this);
98
99     if(isChecked()) {
100         m_tabRect.setRect(0, 0, TAB_WIDTH_ACTIVE, TAB_HEIGHT);
101         painter.drawPixmap(m_tabRect, m_tabPixmaps[2]);
102     } else {
103         m_tabRect.setRect(TAB_WIDTH_ACTIVE - TAB_WIDTH, 0, TAB_WIDTH, TAB_HEIGHT);
104         painter.drawPixmap(m_tabRect, m_tabPixmaps[0]);
105     }
106
107     if(isDown())
108         icon().paint(&painter, m_tabRect, Qt::AlignCenter, QIcon::Selected);
109     else if(isChecked())
110         icon().paint(&painter, m_tabRect, Qt::AlignCenter, QIcon::Normal);
111     else
112         icon().paint(&painter, m_tabRect, Qt::AlignCenter, QIcon::Disabled);
113 }
114
115 void PanelTab::setActive(bool state)
116 {
117     qDebug() << __PRETTY_FUNCTION__;
118
119     if(state)
120         setChecked(true);
121     else
122         setChecked(false);
123 }