be3e2afbe1c2581043feea1751601b6502386f99
[mdictionary] / src / mdictionary / gui / MenuWidget.cpp
1 /*******************************************************************************
2
3     This file is part of mDictionary.
4
5     mDictionary is free software: you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation, either version 3 of the License, or
8     (at your option) any later version.
9
10     mDictionary is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14
15     You should have received a copy of the GNU General Public License
16     along with mDictionary.  If not, see <http://www.gnu.org/licenses/>.
17
18     Copyright 2010 Comarch S.A.
19
20 *******************************************************************************/
21
22 //! \file MenuWidget.cpp
23 //! \author Mateusz Półrola <mateusz.polrola@comarch.pl>
24
25 #include "MenuWidget.h"
26 #include <QDebug>
27 #include <QtGui>
28
29 MenuWidget::MenuWidget(QWidget *parent) :
30     QWidgetAction(parent) {
31
32     //creates custom tab widget, and sets style sheet to have centered tabs
33     tabWidget = new MenuTabWidget();
34     tabWidget->setStyleSheet("QTabWidget::tab-bar {alignment: center;}");
35
36     applicationMenu = 0;
37
38 }
39
40 MenuWidget::~MenuWidget() {
41     //because tabWidget has no parent we must destroy it
42    delete tabWidget;
43 }
44
45 void MenuWidget::addSubMenu(QString title, QWidget *widget) {
46     QScrollArea* sa = new QScrollArea(tabWidget);
47     sa->setWidget(widget);
48     sa->setWidgetResizable(true);
49     sa->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
50     tabWidget->addTab(sa, title);
51 }
52
53
54 void MenuWidget::removeSubMenu(QString title) {
55     for(int i = 0; i < tabWidget->count(); i++) {
56         if(tabWidget->tabText(i) == title) {
57             tabWidget->removeTab(i);
58             break;
59         }
60     }
61 }
62
63 QWidget* MenuWidget::createWidget(QWidget *parent) {
64     /*When we have request to create new widget we return tabWidget.
65     When the menu is closing, tabWidget will receive hideEvent which will set
66     its parent to 0 (NULL) and prevent it from delete, so we can still use this
67     widget*/
68     if(applicationMenu==0) {
69         applicationMenu = parent;
70         Q_EMIT setApplicationMenu(applicationMenu);
71     }
72     return tabWidget;
73 }
74
75
76 void MenuWidget::hideMenu() {
77     tabWidget->parentWidget()->hide();
78 }
79
80
81 void MenuWidget::showMenu() {
82     tabWidget->parentWidget()->show();
83 }