Clean and order documentation in source files. Source ready to beta 2 release
[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     \brief Displays custom menu with tab widget containing all submenus.
24
25     \author Mateusz Półrola <mateusz.polrola@comarch.pl>
26 */
27
28 #include "MenuWidget.h"
29 #include <QDebug>
30 #include <QtGui>
31
32 MenuWidget::MenuWidget(QWidget *parent) :
33     QWidgetAction(parent) {
34
35     //creates custom tab widget, and sets style sheet to have centered tabs
36     tabWidget = new MenuTabWidget();
37     tabWidget->setStyleSheet("QTabWidget::tab-bar {alignment: center;}");
38
39     applicationMenu = 0;
40
41 }
42
43 MenuWidget::~MenuWidget() {
44     //because tabWidget has no parent we must destroy it
45    delete tabWidget;
46 }
47
48 void MenuWidget::addSubMenu(QString title, QWidget *widget) {
49     QScrollArea* sa = new QScrollArea(tabWidget);
50     sa->setWidget(widget);
51     sa->setWidgetResizable(true);
52     sa->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
53     tabWidget->addTab(sa, title);
54 }
55
56
57 void MenuWidget::removeSubMenu(QString title) {
58     for(int i = 0; i < tabWidget->count(); i++) {
59         if(tabWidget->tabText(i) == title) {
60             tabWidget->removeTab(i);
61             break;
62         }
63     }
64 }
65
66 QWidget* MenuWidget::createWidget(QWidget *parent) {
67     /*When we have request to create new widget we return tabWidget.
68     When the menu is closing, tabWidget will receive hideEvent which will set
69     its parent to 0 (NULL) and prevent it from delete, so we can still use this
70     widget*/
71     if(applicationMenu==0) {
72         applicationMenu = parent;
73         Q_EMIT setApplicationMenu(applicationMenu);
74     }
75     return tabWidget;
76 }
77
78
79 void MenuWidget::hideMenu() {
80     tabWidget->parentWidget()->hide();
81 }
82
83
84 void MenuWidget::showMenu() {
85     tabWidget->parentWidget()->show();
86 }