examples/widgets/tablet/mainwindow.cpp
changeset 0 1918ee327afb
child 3 41300fa6a67c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/widgets/tablet/mainwindow.cpp	Mon Jan 11 14:00:40 2010 +0000
@@ -0,0 +1,275 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the examples 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 <QtGui>
+
+#include "mainwindow.h"
+#include "tabletcanvas.h"
+
+//! [0]
+MainWindow::MainWindow(TabletCanvas *canvas)
+{
+    myCanvas = canvas;
+    createActions();
+    createMenus();
+
+    myCanvas->setColor(Qt::red);
+    myCanvas->setLineWidthType(TabletCanvas::LineWidthPressure);
+    myCanvas->setAlphaChannelType(TabletCanvas::NoAlpha);
+    myCanvas->setColorSaturationType(TabletCanvas::NoSaturation);
+
+    setWindowTitle(tr("Tablet Example"));
+    setCentralWidget(myCanvas);
+}
+//! [0]
+
+//! [1]
+void MainWindow::brushColorAct()
+{
+    QColor color = QColorDialog::getColor(myCanvas->color());
+
+    if (color.isValid())
+        myCanvas->setColor(color);
+}
+//! [1]
+
+//! [2]
+void MainWindow::alphaActionTriggered(QAction *action)
+{
+    if (action == alphaChannelPressureAction) {
+        myCanvas->setAlphaChannelType(TabletCanvas::AlphaPressure);
+    } else if (action == alphaChannelTiltAction) {
+        myCanvas->setAlphaChannelType(TabletCanvas::AlphaTilt);
+    } else {
+        myCanvas->setAlphaChannelType(TabletCanvas::NoAlpha);
+    }
+}
+//! [2]
+
+//! [3]
+void MainWindow::lineWidthActionTriggered(QAction *action)
+{
+    if (action == lineWidthPressureAction) {
+        myCanvas->setLineWidthType(TabletCanvas::LineWidthPressure);
+    } else if (action == lineWidthTiltAction) {
+        myCanvas->setLineWidthType(TabletCanvas::LineWidthTilt);
+    } else {
+        myCanvas->setLineWidthType(TabletCanvas::NoLineWidth);
+    }
+}
+//! [3]
+
+//! [4]
+void MainWindow::saturationActionTriggered(QAction *action)
+{
+    if (action == colorSaturationVTiltAction) {
+        myCanvas->setColorSaturationType(TabletCanvas::SaturationVTilt);
+    } else if (action == colorSaturationHTiltAction) {
+        myCanvas->setColorSaturationType(TabletCanvas::SaturationHTilt);
+    } else if (action == colorSaturationPressureAction) {
+        myCanvas->setColorSaturationType(TabletCanvas::SaturationPressure);
+    } else {
+        myCanvas->setColorSaturationType(TabletCanvas::NoSaturation);
+    }
+}
+//! [4]
+
+//! [5]
+void MainWindow::saveAct()
+{
+    QString path = QDir::currentPath() + "/untitled.png";
+    QString fileName = QFileDialog::getSaveFileName(this, tr("Save Picture"),
+                             path);
+
+    if (!myCanvas->saveImage(fileName))
+        QMessageBox::information(this, "Error Saving Picture",
+                                 "Could not save the image");
+}
+//! [5]
+
+//! [6]
+void MainWindow::loadAct()
+{
+    QString fileName = QFileDialog::getOpenFileName(this, tr("Open Picture"),
+                                                    QDir::currentPath());
+
+    if (!myCanvas->loadImage(fileName))
+        QMessageBox::information(this, "Error Opening Picture",
+                                 "Could not open picture");
+}
+//! [6]
+
+//! [7]
+void MainWindow::aboutAct()
+{
+    QMessageBox::about(this, tr("About Tablet Example"),
+                       tr("This example shows use of a Wacom tablet in Qt"));
+}
+//! [7]
+
+//! [8]
+void MainWindow::createActions()
+{
+//! [8]
+    brushColorAction = new QAction(tr("&Brush Color..."), this);
+    brushColorAction->setShortcut(tr("Ctrl+C"));
+    connect(brushColorAction, SIGNAL(triggered()),
+            this, SLOT(brushColorAct()));
+
+//! [9]
+    alphaChannelPressureAction = new QAction(tr("&Pressure"), this);
+    alphaChannelPressureAction->setCheckable(true);
+
+    alphaChannelTiltAction = new QAction(tr("&Tilt"), this);
+    alphaChannelTiltAction->setCheckable(true);
+
+    noAlphaChannelAction = new QAction(tr("No Alpha Channel"), this);
+    noAlphaChannelAction->setCheckable(true);
+    noAlphaChannelAction->setChecked(true);
+
+    alphaChannelGroup = new QActionGroup(this);
+    alphaChannelGroup->addAction(alphaChannelPressureAction);
+    alphaChannelGroup->addAction(alphaChannelTiltAction);
+    alphaChannelGroup->addAction(noAlphaChannelAction);
+    connect(alphaChannelGroup, SIGNAL(triggered(QAction *)),
+            this, SLOT(alphaActionTriggered(QAction *)));
+
+//! [9]
+    colorSaturationVTiltAction = new QAction(tr("&Vertical Tilt"), this);
+    colorSaturationVTiltAction->setCheckable(true);
+
+    colorSaturationHTiltAction = new QAction(tr("&Horizontal Tilt"), this);
+    colorSaturationHTiltAction->setCheckable(true);
+
+    colorSaturationPressureAction = new QAction(tr("&Pressure"), this);
+    colorSaturationPressureAction->setCheckable(true);
+
+    noColorSaturationAction = new QAction(tr("&No Color Saturation"), this);
+    noColorSaturationAction->setCheckable(true);
+    noColorSaturationAction->setChecked(true);
+
+    colorSaturationGroup = new QActionGroup(this);
+    colorSaturationGroup->addAction(colorSaturationVTiltAction);
+    colorSaturationGroup->addAction(colorSaturationHTiltAction);
+    colorSaturationGroup->addAction(colorSaturationPressureAction);
+    colorSaturationGroup->addAction(noColorSaturationAction);
+    connect(colorSaturationGroup, SIGNAL(triggered(QAction *)),
+            this, SLOT(saturationActionTriggered(QAction *)));
+
+    lineWidthPressureAction = new QAction(tr("&Pressure"), this);
+    lineWidthPressureAction->setCheckable(true);
+    lineWidthPressureAction->setChecked(true);
+
+    lineWidthTiltAction = new QAction(tr("&Tilt"), this);
+    lineWidthTiltAction->setCheckable(true);
+
+    lineWidthFixedAction = new QAction(tr("&Fixed"), this);
+    lineWidthFixedAction->setCheckable(true);
+
+    lineWidthGroup = new QActionGroup(this);
+    lineWidthGroup->addAction(lineWidthPressureAction);
+    lineWidthGroup->addAction(lineWidthTiltAction);
+    lineWidthGroup->addAction(lineWidthFixedAction);
+    connect(lineWidthGroup, SIGNAL(triggered(QAction *)),
+            this, SLOT(lineWidthActionTriggered(QAction *)));
+
+    exitAction = new QAction(tr("E&xit"), this);
+    exitAction->setShortcuts(QKeySequence::Quit);
+    connect(exitAction, SIGNAL(triggered()),
+            this, SLOT(close()));
+
+    loadAction = new QAction(tr("&Open..."), this);
+    loadAction->setShortcuts(QKeySequence::Open);
+    connect(loadAction, SIGNAL(triggered()),
+            this, SLOT(loadAct()));
+
+    saveAction = new QAction(tr("&Save As..."), this);
+    saveAction->setShortcuts(QKeySequence::SaveAs);
+    connect(saveAction, SIGNAL(triggered()),
+            this, SLOT(saveAct()));
+
+    aboutAction = new QAction(tr("A&bout"), this);
+    aboutAction->setShortcut(tr("Ctrl+B"));
+    connect(aboutAction, SIGNAL(triggered()),
+            this, SLOT(aboutAct()));
+
+    aboutQtAction = new QAction(tr("About &Qt"), this);
+    aboutQtAction->setShortcut(tr("Ctrl+Q"));
+    connect(aboutQtAction, SIGNAL(triggered()),
+            qApp, SLOT(aboutQt()));
+//! [10]
+}
+//! [10]
+
+//! [11]
+void MainWindow::createMenus()
+{
+    fileMenu = menuBar()->addMenu(tr("&File"));
+    fileMenu->addAction(loadAction);
+    fileMenu->addAction(saveAction);
+    fileMenu->addSeparator();
+    fileMenu->addAction(exitAction);
+
+    brushMenu = menuBar()->addMenu(tr("&Brush"));
+    brushMenu->addAction(brushColorAction);
+
+    tabletMenu = menuBar()->addMenu(tr("&Tablet"));
+
+    lineWidthMenu = tabletMenu->addMenu(tr("&Line Width"));
+    lineWidthMenu->addAction(lineWidthPressureAction);
+    lineWidthMenu->addAction(lineWidthTiltAction);
+    lineWidthMenu->addAction(lineWidthFixedAction);
+
+    alphaChannelMenu = tabletMenu->addMenu(tr("&Alpha Channel"));
+    alphaChannelMenu->addAction(alphaChannelPressureAction);
+    alphaChannelMenu->addAction(alphaChannelTiltAction);
+    alphaChannelMenu->addAction(noAlphaChannelAction);
+
+    colorSaturationMenu = tabletMenu->addMenu(tr("&Color Saturation"));
+    colorSaturationMenu->addAction(colorSaturationVTiltAction);
+    colorSaturationMenu->addAction(colorSaturationHTiltAction);
+    colorSaturationMenu->addAction(noColorSaturationAction);
+
+    helpMenu = menuBar()->addMenu("&Help");
+    helpMenu->addAction(aboutAction);
+    helpMenu->addAction(aboutQtAction);
+}
+//! [11]