--- /dev/null
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtGui module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <private/qabstractmenubarimpl_p.h>
+
+QAbstractMenuBarImpl::~QAbstractMenuBarImpl()
+{}
** $QT_END_LICENSE$
**
****************************************************************************/
-#ifndef QABSTRACTMENUBARINTERFACE_P_H
-#define QABSTRACTMENUBARINTERFACE_P_H
+#ifndef QABSTRACTMENUBARIMPL_P_H
+#define QABSTRACTMENUBARIMPL_P_H
-#include <qfactoryinterface.h>
#include <qglobal.h>
-#include <qplugin.h>
#ifndef QT_NO_MENUBAR
class QObject;
class QWidget;
-class QAbstractMenuBarInterface;
-
-struct QMenuBarImplFactoryInterface : public QFactoryInterface
-{
- virtual QAbstractMenuBarInterface* createImpl() = 0;
-};
-
-#define QMenuBarImplFactoryInterface_iid "com.nokia.qt.QMenuBarImplFactoryInterface"
-Q_DECLARE_INTERFACE(QMenuBarImplFactoryInterface, QMenuBarImplFactoryInterface_iid)
-
/**
* The platform-specific implementation of a menubar
*/
-class QAbstractMenuBarInterface
+class Q_GUI_EXPORT QAbstractMenuBarImpl
{
public:
- QAbstractMenuBarInterface() {}
- virtual ~QAbstractMenuBarInterface() {}
+ virtual ~QAbstractMenuBarImpl();
// QMenuBarPrivate::init()
virtual void init(QMenuBar *) = 0;
- virtual void setVisible(bool visible) = 0;
+ // QMenuBar::setVisible()
+ virtual bool allowSetVisible() const = 0;
virtual void actionEvent(QActionEvent *) = 0;
#endif // QT_NO_MENUBAR
-#endif // QABSTRACTMENUBARINTERFACE_P_H
+#endif // QABSTRACTMENUBARIMPL_P_H
#include <qtoolbar.h>
#include <qtoolbutton.h>
#include <qwhatsthis.h>
-#include <qpluginloader.h>
#ifndef QT_NO_MENUBAR
Q_Q(QMenuBar);
q->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Minimum);
q->setAttribute(Qt::WA_CustomWhatsThis);
-
- impl = qt_guiMenuBarImplFactory()->createImpl();
+ impl = new QMenuBarImpl;
impl->init(q);
q->setBackgroundRole(QPalette::Button);
void QMenuBar::setVisible(bool visible)
{
Q_D(QMenuBar);
- d->impl->setVisible(visible);
+ if (!d->impl->allowSetVisible()) {
+ return;
+ }
+ QWidget::setVisible(visible);
}
/*!
#include "qguifunctions_wince.h"
#endif
-#include "qabstractmenubarinterface_p.h"
+#include "qabstractmenubarimpl_p.h"
#ifndef QT_NO_MENUBAR
#ifdef Q_WS_S60
#ifdef QT3_SUPPORT
bool doAutoResize;
#endif
- QAbstractMenuBarInterface *impl;
+ QAbstractMenuBarImpl *impl;
#ifdef QT_SOFTKEYS_ENABLED
QAction *menuBarAction;
#endif
#include "qmenu.h"
#include "qmenubar.h"
-#include <private/qfactoryloader_p.h>
-
QT_BEGIN_NAMESPACE
QMenuBarImpl::~QMenuBarImpl()
#endif
}
-void QMenuBarImpl::setVisible(bool visible)
+bool QMenuBarImpl::allowSetVisible() const
{
#if defined(Q_WS_MAC) || defined(Q_OS_WINCE) || defined(Q_WS_S60)
+ // FIXME: Port this to a setVisible() method
+ /*
if (isNativeMenuBar()) {
if (!visible)
- menuBar->QWidget::setVisible(false);
+ QWidget::setVisible(false);
return;
}
+ */
+ return !isNativeMenuBar();
#endif
- menuBar->QWidget::setVisible(visible);
+ return true;
}
void QMenuBarImpl::actionEvent(QActionEvent *e)
return false;
}
-struct QMenuBarImplFactory : public QMenuBarImplFactoryInterface
-{
- QAbstractMenuBarInterface* createImpl() { return new QMenuBarImpl; }
- virtual QStringList keys() const { return QStringList(); }
-};
-
-QMenuBarImplFactoryInterface *qt_guiMenuBarImplFactory()
-{
- static QMenuBarImplFactoryInterface *factory = 0;
- if (!factory) {
-#ifndef QT_NO_LIBRARY
- QFactoryLoader loader(QMenuBarImplFactoryInterface_iid, QLatin1String("/menubar"));
- factory = qobject_cast<QMenuBarImplFactoryInterface *>(loader.instance(QLatin1String("default")));
-#endif // QT_NO_LIBRARY
- if (!factory) {
- static QMenuBarImplFactory def;
- factory = &def;
- }
- }
- return factory;
-}
-
QT_END_NAMESPACE
#endif // QT_NO_MENUBAR
#ifndef QT_NO_MENUBAR
-#include "qabstractmenubarinterface_p.h"
+#include "qabstractmenubarimpl_p.h"
QT_BEGIN_NAMESPACE
class QMenuBar;
-class QMenuBarImpl : public QAbstractMenuBarInterface
+class QMenuBarImpl : public QAbstractMenuBarImpl
{
public:
~QMenuBarImpl();
virtual void init(QMenuBar *);
- virtual void setVisible(bool visible);
+ virtual bool allowSetVisible() const;
virtual void actionEvent(QActionEvent *e);
#endif
};
-QMenuBarImplFactoryInterface *qt_guiMenuBarImplFactory();
-
QT_END_NAMESPACE
#endif // QT_NO_MENUBAR
widgets/qbuttongroup.h \
widgets/qabstractbutton.h \
widgets/qabstractbutton_p.h \
- widgets/qabstractmenubarinterface_p.h \
+ widgets/qabstractmenubarimpl_p.h \
widgets/qabstractslider.h \
widgets/qabstractslider_p.h \
widgets/qabstractspinbox.h \
widgets/qprintpreviewwidget.h
SOURCES += \
widgets/qabstractbutton.cpp \
+ widgets/qabstractmenubarimpl_p.cpp \
widgets/qabstractslider.cpp \
widgets/qabstractspinbox.cpp \
widgets/qcalendarwidget.cpp \