1 /*******************************************************************************
3 This file is part of mDictionary.
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.
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.
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/>.
18 Copyright 2010 Comarch S.A.
20 *******************************************************************************/
22 /*! \file MenuWidget.cpp
23 \brief Displays custom menu with tab widget containing all submenus.
25 \author Mateusz Półrola <mateusz.polrola@comarch.pl>
28 #include "MenuWidget.h"
32 MenuWidget::MenuWidget(QWidget *parent) :
33 QWidgetAction(parent) {
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;}");
43 MenuWidget::~MenuWidget() {
44 //because tabWidget has no parent we must destroy it
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);
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);
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
71 if(applicationMenu==0) {
72 applicationMenu = parent;
73 Q_EMIT setApplicationMenu(applicationMenu);
79 void MenuWidget::hideMenu() {
80 tabWidget->parentWidget()->hide();
84 void MenuWidget::showMenu() {
85 tabWidget->parentWidget()->show();