A header with the proper copyright/lincence statement was added into each source...
[toast/confclerk.git] / src / gui / tabwidget.cpp
1 /*
2  * Copyright (C) 2010 Ixonos Plc.
3  *
4  * This file is part of fosdem-schedule.
5  *
6  * fosdem-schedule is free software: you can redistribute it and/or modify it
7  * under the terms of the GNU General Public License as published by the Free
8  * Software Foundation, either version 2 of the License, or (at your option)
9  * any later version.
10  *
11  * fosdem-schedule is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
14  * more details.
15  *
16  * You should have received a copy of the GNU General Public License along with
17  * fosdem-schedule.  If not, see <http://www.gnu.org/licenses/>.
18  */
19 #include "tabwidget.h"
20
21 #include <QMouseEvent>
22 #include <QPainter>
23 #include <QTabBar>
24
25 TabWidget::TabWidget(QWidget *aParent)
26     : QTabWidget(aParent)
27     , mPressPoint(0,0)
28 {
29     mInfoImage = QImage(":/icons/info.png");
30 }
31
32 void TabWidget::paintEvent(QPaintEvent *event)
33 {
34     Q_UNUSED(event);
35
36     int height = tabBar()->tabRect(currentIndex()).height();
37     QImage image = mInfoImage.scaled(QSize(height,height),Qt::KeepAspectRatioByExpanding,Qt::SmoothTransformation);
38     QPainter painter(this);
39     painter.drawImage(rect().topRight()-QPoint(image.width(),0),image);
40 }
41
42 void TabWidget::mousePressEvent(QMouseEvent *event)
43 {
44     mPressPoint = event->pos();
45 }
46
47 void TabWidget::mouseReleaseEvent(QMouseEvent *event)
48 {
49     int height = tabBar()->tabRect(currentIndex()).height();
50     QImage image = mInfoImage.scaled(QSize(height,height),Qt::KeepAspectRatioByExpanding,Qt::SmoothTransformation);
51     QPoint topLeft = rect().topRight()-QPoint(image.width(),0);
52     QRect infoRect = QRect(topLeft, topLeft+QPoint(image.width(),image.height()));
53     if( (infoRect.contains(event->pos())) && (infoRect.contains(mPressPoint)) )
54     {
55         emit(infoIconClicked());
56     }
57 }
58