aboutsummaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorMorten Johan Sørvig <morten.sorvig@digia.com>2013-12-09 11:01:42 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-02-10 11:48:04 +0100
commit6c8706cdfa961a42230048e944613639a3c25536 (patch)
tree0b15fa7642d00524e05ed7b1a8c8a9871ef686d1 /examples
parent2f2ba9d199154732d942aa4c18874e40446919d5 (diff)
Rewrite the Mac native toolbar classes.
Rename the classes to QMacToolBar and QMacToolBarItem. (Keep the Qt-style ToolBar name capitalization.) API-review and document a core set of the API, remove the rest. Missing functionality can be added back later on. Add a simple QWindow-based mactoolbar example that shows the core toolbar functionality. Add manual test for more comprehensive testing. Make the QToolbarItem properties actually work, you can now change the text and icon after the toolbar has been displayed. Update license headers. Change-Id: I99fb207df7f1b3cf0d5df178aa863c77cd372a1f Reviewed-by: Morten Johan Sørvig <morten.sorvig@digia.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/macextras/macextras.pro3
-rw-r--r--examples/macextras/mactoolbar/mactoolbar.pro5
-rw-r--r--examples/macextras/mactoolbar/mactoolbar.qrc5
-rw-r--r--examples/macextras/mactoolbar/main.cpp53
-rw-r--r--examples/macextras/mactoolbar/qtlogo.pngbin0 -> 1478 bytes
-rw-r--r--examples/macextras/mactoolbar/rasterwindow.cpp87
-rw-r--r--examples/macextras/mactoolbar/rasterwindow.h59
-rw-r--r--examples/macextras/mactoolbar/toolbarcontrollerwindow.cpp81
-rw-r--r--examples/macextras/mactoolbar/toolbarcontrollerwindow.h57
9 files changed, 349 insertions, 1 deletions
diff --git a/examples/macextras/macextras.pro b/examples/macextras/macextras.pro
index 8fe1d13..a9c135d 100644
--- a/examples/macextras/macextras.pro
+++ b/examples/macextras/macextras.pro
@@ -2,4 +2,5 @@ TEMPLATE = subdirs
mac:SUBDIRS = macfunctions
mac:!ios:SUBDIRS += embeddedqwindow \
- macpasteboardmime
+ macpasteboardmime \
+ mactoolbar
diff --git a/examples/macextras/mactoolbar/mactoolbar.pro b/examples/macextras/mactoolbar/mactoolbar.pro
new file mode 100644
index 0000000..88d5cde
--- /dev/null
+++ b/examples/macextras/mactoolbar/mactoolbar.pro
@@ -0,0 +1,5 @@
+QT += macextras
+
+HEADERS += toolbarcontrollerwindow.h rasterwindow.h
+SOURCES += toolbarcontrollerwindow.cpp rasterwindow.cpp main.cpp
+RESOURCES += mactoolbar.qrc
diff --git a/examples/macextras/mactoolbar/mactoolbar.qrc b/examples/macextras/mactoolbar/mactoolbar.qrc
new file mode 100644
index 0000000..04a9419
--- /dev/null
+++ b/examples/macextras/mactoolbar/mactoolbar.qrc
@@ -0,0 +1,5 @@
+<RCC>
+ <qresource prefix="/">
+ <file>qtlogo.png</file>
+ </qresource>
+</RCC>
diff --git a/examples/macextras/mactoolbar/main.cpp b/examples/macextras/mactoolbar/main.cpp
new file mode 100644
index 0000000..460e9ed
--- /dev/null
+++ b/examples/macextras/mactoolbar/main.cpp
@@ -0,0 +1,53 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtMacExtras module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "toolbarcontrollerwindow.h"
+
+#include <QtGui/QGuiApplication>
+
+int main(int argc, char **argv)
+{
+ QGuiApplication app(argc, argv);
+
+ ToolBarControllerWindow toolbarControllerWindow;
+ toolbarControllerWindow.show();
+
+ return app.exec();
+}
diff --git a/examples/macextras/mactoolbar/qtlogo.png b/examples/macextras/mactoolbar/qtlogo.png
new file mode 100644
index 0000000..d75936b
--- /dev/null
+++ b/examples/macextras/mactoolbar/qtlogo.png
Binary files differ
diff --git a/examples/macextras/mactoolbar/rasterwindow.cpp b/examples/macextras/mactoolbar/rasterwindow.cpp
new file mode 100644
index 0000000..88abad9
--- /dev/null
+++ b/examples/macextras/mactoolbar/rasterwindow.cpp
@@ -0,0 +1,87 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtMacExtras module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "rasterwindow.h"
+
+RasterWindow::RasterWindow(QWindow *parent)
+ : QWindow(parent)
+{
+ m_backingStore = new QBackingStore(this);
+ create();
+
+ setGeometry(100, 100, 300, 200);
+}
+
+void RasterWindow::setText(const QString &text)
+{
+ m_text = text;
+ renderNow();
+}
+
+void RasterWindow::exposeEvent(QExposeEvent *)
+{
+ if (isExposed()) {
+ m_backingStore->resize(size());
+ renderNow();
+ }
+}
+
+void RasterWindow::renderNow()
+{
+ if (!isExposed())
+ return;
+
+ QRect rect(0, 0, width(), height());
+ m_backingStore->beginPaint(rect);
+
+ QPaintDevice *device = m_backingStore->paintDevice();
+ QPainter painter(device);
+
+ painter.fillRect(0, 0, width(), height(), Qt::white);
+ render(&painter);
+
+ m_backingStore->endPaint();
+ m_backingStore->flush(rect);
+}
+
+void RasterWindow::render(QPainter *painter)
+{
+ painter->drawText(QRectF(0, 0, width(), height()), Qt::AlignCenter, m_text);
+} \ No newline at end of file
diff --git a/examples/macextras/mactoolbar/rasterwindow.h b/examples/macextras/mactoolbar/rasterwindow.h
new file mode 100644
index 0000000..35f7d23
--- /dev/null
+++ b/examples/macextras/mactoolbar/rasterwindow.h
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtMacExtras module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtGui>
+
+class RasterWindow : public QWindow
+{
+ Q_OBJECT
+public:
+ explicit RasterWindow(QWindow *parent = 0);
+
+ void setText(const QString &text);
+public slots:
+ void renderNow();
+protected:
+ virtual void render(QPainter *painter);
+ void exposeEvent(QExposeEvent *event);
+
+private:
+ QBackingStore *m_backingStore;
+ QString m_text;
+}; \ No newline at end of file
diff --git a/examples/macextras/mactoolbar/toolbarcontrollerwindow.cpp b/examples/macextras/mactoolbar/toolbarcontrollerwindow.cpp
new file mode 100644
index 0000000..4aa76fb
--- /dev/null
+++ b/examples/macextras/mactoolbar/toolbarcontrollerwindow.cpp
@@ -0,0 +1,81 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtMacExtras module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "toolbarcontrollerwindow.h"
+
+ToolBarControllerWindow::ToolBarControllerWindow()
+ :RasterWindow(0)
+{
+ setTitle("QMacToolBar Example");
+ RasterWindow::setText("QMacToolBar Example");
+ resize(400, 200);
+
+ QMacToolBar *toolBar = new QMacToolBar(this);
+
+ QIcon qtIcon(QStringLiteral(":qtlogo.png"));
+
+ // add Items
+ QMacToolBarItem *item1 = toolBar->addItem(qtIcon, QStringLiteral("Foo 1"));
+ connect(item1, SIGNAL(activated()), this, SLOT(activated()));
+ QMacToolBarItem *item2 = toolBar->addItem(qtIcon, QStringLiteral("Bar 1"));
+ connect(item2, SIGNAL(activated()), this, SLOT(activated()));
+
+ toolBar->addSeparator();
+
+ QMacToolBarItem *item3 = toolBar->addItem(qtIcon, QStringLiteral("Foo 2"));
+ connect(item3, SIGNAL(activated()), this, SLOT(activated()));
+ QMacToolBarItem *item4 = toolBar->addItem(qtIcon, QStringLiteral("Bar 2"));
+ connect(item4, SIGNAL(activated()), this, SLOT(activated()));
+
+ // add allowed items for the customization menu.
+ QMacToolBarItem *item5 = toolBar->addAllowedItem(qtIcon, QStringLiteral("AllowedFoo"));
+ connect(item5, SIGNAL(activated()), this, SLOT(activated()));
+ QMacToolBarItem *item6 = toolBar->addAllowedItem(qtIcon, QStringLiteral("AllowedBar"));
+ connect(item6, SIGNAL(activated()), this, SLOT(activated()));
+
+ // Attach to the window
+ toolBar->attachToWindow(this);
+}
+
+void ToolBarControllerWindow::activated()
+{
+ QMacToolBarItem *item = static_cast<QMacToolBarItem *>(sender());
+ setText(QStringLiteral("Activated ") + item->text());
+}
diff --git a/examples/macextras/mactoolbar/toolbarcontrollerwindow.h b/examples/macextras/mactoolbar/toolbarcontrollerwindow.h
new file mode 100644
index 0000000..b7251d2
--- /dev/null
+++ b/examples/macextras/mactoolbar/toolbarcontrollerwindow.h
@@ -0,0 +1,57 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the QtMacExtras module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtCore/qdebug.h>
+#include <QtGui/QWindow>
+#include <QMacToolBar>
+
+#include "rasterwindow.h"
+
+class ToolBarControllerWindow : public RasterWindow
+{
+Q_OBJECT
+public:
+ ToolBarControllerWindow();
+public Q_SLOTS:
+ void activated();
+private:
+
+};
+