summaryrefslogtreecommitdiff
path: root/libs/qtsingleapplication/examples/loader
diff options
context:
space:
mode:
authorGluzskiy Alexandr <sss@sss.chaoslab.ru>2011-11-05 03:24:07 +0200
committerGluzskiy Alexandr <sss@sss.chaoslab.ru>2011-11-05 03:24:07 +0200
commit5300c9dd1261a7f4ff8bf5a83608470e4953dd0f (patch)
tree27048ddaaaee5ae3cd6b75658c923f4bc976a327 /libs/qtsingleapplication/examples/loader
parent2f71a1e82c20f4322ea0fb2994da251de58b366f (diff)
this will be paid later
Diffstat (limited to 'libs/qtsingleapplication/examples/loader')
-rwxr-xr-xlibs/qtsingleapplication/examples/loader/file1.qsl1
-rwxr-xr-xlibs/qtsingleapplication/examples/loader/file2.qsl1
-rwxr-xr-xlibs/qtsingleapplication/examples/loader/loader.pro5
-rwxr-xr-xlibs/qtsingleapplication/examples/loader/loader.qdoc80
-rwxr-xr-xlibs/qtsingleapplication/examples/loader/main.cpp151
5 files changed, 238 insertions, 0 deletions
diff --git a/libs/qtsingleapplication/examples/loader/file1.qsl b/libs/qtsingleapplication/examples/loader/file1.qsl
new file mode 100755
index 0000000..50fcd26
--- /dev/null
+++ b/libs/qtsingleapplication/examples/loader/file1.qsl
@@ -0,0 +1 @@
+File 1
diff --git a/libs/qtsingleapplication/examples/loader/file2.qsl b/libs/qtsingleapplication/examples/loader/file2.qsl
new file mode 100755
index 0000000..4475433
--- /dev/null
+++ b/libs/qtsingleapplication/examples/loader/file2.qsl
@@ -0,0 +1 @@
+File 2
diff --git a/libs/qtsingleapplication/examples/loader/loader.pro b/libs/qtsingleapplication/examples/loader/loader.pro
new file mode 100755
index 0000000..673497a
--- /dev/null
+++ b/libs/qtsingleapplication/examples/loader/loader.pro
@@ -0,0 +1,5 @@
+TEMPLATE = app
+
+include(../../src/qtsingleapplication.pri)
+
+SOURCES += main.cpp
diff --git a/libs/qtsingleapplication/examples/loader/loader.qdoc b/libs/qtsingleapplication/examples/loader/loader.qdoc
new file mode 100755
index 0000000..2ae59e3
--- /dev/null
+++ b/libs/qtsingleapplication/examples/loader/loader.qdoc
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** 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 a Qt Solutions component.
+**
+** 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 Nokia Corporation 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."
+**
+****************************************************************************/
+
+/*! \page qtsingleapplication-example-loader.html
+ \title Loading Documents
+
+ The application in this example loads or prints the documents
+ passed as commandline parameters to further instances of this
+ application.
+
+ \quotefromfile loader/main.cpp
+ \printuntil };
+ The user interface in this application is a QMainWindow subclass
+ with a QMdiArea as the central widget. It implements a slot
+ \c handleMessage() that will be connected to the messageReceived()
+ signal of the QtSingleApplication class.
+
+ \printuntil }
+ The MainWindow constructor creates a minimal user interface.
+
+ \printto case Print:
+ The handleMessage() slot interprets the message passed in as a
+ filename that can be prepended with \e /print to indicate that
+ the file should just be printed rather than loaded.
+
+ \printto #include
+ Loading the file will also activate the window.
+
+ \printto mw
+ The \c main entry point function creates a QtSingleApplication
+ object, and creates a message to send to a running instance
+ of the application. If the message was sent successfully the
+ process exits immediately.
+
+ \printuntil }
+ If the message could not be sent the application starts up. Note
+ that \c false is passed to the call to setActivationWindow() to
+ prevent automatic activation for every message received, e.g. when
+ the application should just print a file. Instead, the message
+ handling function determines whether activation is requested, and
+ signals that by emitting the needToShow() signal. This is then
+ simply connected directly to QtSingleApplication's
+ activateWindow() slot.
+*/
diff --git a/libs/qtsingleapplication/examples/loader/main.cpp b/libs/qtsingleapplication/examples/loader/main.cpp
new file mode 100755
index 0000000..7bc5686
--- /dev/null
+++ b/libs/qtsingleapplication/examples/loader/main.cpp
@@ -0,0 +1,151 @@
+/****************************************************************************
+**
+** 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 a Qt Solutions component.
+**
+** 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 Nokia Corporation 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."
+**
+****************************************************************************/
+
+#include <qtsingleapplication.h>
+#include <QtCore/QFile>
+#include <QtGui/QMainWindow>
+#include <QtGui/QPrinter>
+#include <QtGui/QPainter>
+#include <QtGui/QTextEdit>
+#include <QtGui/QMdiArea>
+#include <QtCore/QTextStream>
+
+class MainWindow : public QMainWindow
+{
+ Q_OBJECT
+public:
+ MainWindow();
+
+public slots:
+ void handleMessage(const QString& message);
+
+signals:
+ void needToShow();
+
+private:
+ QMdiArea *workspace;
+};
+
+MainWindow::MainWindow()
+{
+ workspace = new QMdiArea(this);
+
+ setCentralWidget(workspace);
+}
+
+void MainWindow::handleMessage(const QString& message)
+{
+ enum Action {
+ Nothing,
+ Open,
+ Print
+ } action;
+
+ action = Nothing;
+ QString filename = message;
+ if (message.toLower().startsWith("/print ")) {
+ filename = filename.mid(7);
+ action = Print;
+ } else if (!message.isEmpty()) {
+ action = Open;
+ }
+ if (action == Nothing) {
+ emit needToShow();
+ return;
+ }
+
+ QFile file(filename);
+ QString contents;
+ if (file.open(QIODevice::ReadOnly))
+ contents = file.readAll();
+ else
+ contents = "[[Error: Could not load file " + filename + "]]";
+
+ QTextEdit *view = new QTextEdit;
+ view->setPlainText(contents);
+
+ switch(action) {
+ case Print:
+ {
+ QPrinter printer;
+ view->print(&printer);
+ delete view;
+ }
+ break;
+
+ case Open:
+ {
+ workspace->addSubWindow(view);
+ view->setWindowTitle(message);
+ view->show();
+ emit needToShow();
+ }
+ break;
+ default:
+ break;
+ };
+}
+
+#include "main.moc"
+
+int main(int argc, char **argv)
+{
+ QtSingleApplication instance("File loader QtSingleApplication example", argc, argv);
+ QString message;
+ for (int a = 1; a < argc; ++a) {
+ message += argv[a];
+ if (a < argc-1)
+ message += " ";
+ }
+
+ if (instance.sendMessage(message))
+ return 0;
+
+ MainWindow mw;
+ mw.handleMessage(message);
+ mw.show();
+
+ QObject::connect(&instance, SIGNAL(messageReceived(const QString&)),
+ &mw, SLOT(handleMessage(const QString&)));
+
+ instance.setActivationWindow(&mw, false);
+ QObject::connect(&mw, SIGNAL(needToShow()), &instance, SLOT(activateWindow()));
+
+ return instance.exec();
+}