1 /****************************************************************************
3 ** This file is part of a Qt Solutions component.
5 ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
7 ** Contact: Qt Software Information (qt-info@nokia.com)
10 ** Licensees holding valid Qt Commercial licenses may use this file in
11 ** accordance with the Qt Solutions Commercial License Agreement provided
12 ** with the Software or, alternatively, in accordance with the terms
13 ** contained in a written agreement between you and Nokia.
15 ** GNU Lesser General Public License Usage
16 ** Alternatively, this file may be used under the terms of the GNU Lesser
17 ** General Public License version 2.1 as published by the Free Software
18 ** Foundation and appearing in the file LICENSE.LGPL included in the
19 ** packaging of this file. Please review the following information to
20 ** ensure the GNU Lesser General Public License version 2.1 requirements
21 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23 ** In addition, as a special exception, Nokia gives you certain
24 ** additional rights. These rights are described in the Nokia Qt LGPL
25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
28 ** GNU General Public License Usage
29 ** Alternatively, this file may be used under the terms of the GNU
30 ** General Public License version 3.0 as published by the Free Software
31 ** Foundation and appearing in the file LICENSE.GPL included in the
32 ** packaging of this file. Please review the following information to
33 ** ensure the GNU General Public License version 3.0 requirements will be
34 ** met: http://www.gnu.org/copyleft/gpl.html.
36 ** Please note Third Party Software included with Qt Solutions may impose
37 ** additional restrictions and it is the user's responsibility to ensure
38 ** that they have met the licensing requirements of the GPL, LGPL, or Qt
39 ** Solutions Commercial license and the relevant license of the Third
40 ** Party Software they are using.
42 ** If you are unsure which license is appropriate for your use, please
43 ** contact the sales department at qt-sales@nokia.com.
45 ****************************************************************************/
48 #include "qtsinglecoreapplication.h"
49 #include "qtlocalpeer.h"
52 \class QtSingleCoreApplication qtsinglecoreapplication.h
53 \brief A variant of the QtSingleApplication class for non-GUI applications.
55 This class is a variant of QtSingleApplication suited for use in
56 console (non-GUI) applications. It is an extension of
57 QCoreApplication (instead of QApplication). It does not require
60 The API and usage is identical to QtSingleApplication, except that
61 functions relating to the "activation window" are not present, for
62 obvious reasons. Please refer to the QtSingleApplication
63 documentation for explanation of the usage.
65 A QtSingleCoreApplication instance can communicate to a
66 QtSingleApplication instance if they share the same application
67 id. Hence, this class can be used to create a light-weight
68 command-line tool that sends commands to a GUI application.
70 \sa QtSingleApplication
74 Creates a QtSingleCoreApplication object. The application identifier
75 will be QCoreApplication::applicationFilePath(). \a argc and \a
76 argv are passed on to the QCoreAppliation constructor.
79 QtSingleCoreApplication::QtSingleCoreApplication(int &argc, char **argv)
80 : QCoreApplication(argc, argv)
82 peer = new QtLocalPeer(this);
83 connect(peer, SIGNAL(messageReceived(const QString&)), SIGNAL(messageReceived(const QString&)));
88 Creates a QtSingleCoreApplication object with the application
89 identifier \a appId. \a argc and \a argv are passed on to the
90 QCoreAppliation constructor.
92 QtSingleCoreApplication::QtSingleCoreApplication(const QString &appId, int &argc, char **argv)
93 : QCoreApplication(argc, argv)
95 peer = new QtLocalPeer(this, appId);
96 connect(peer, SIGNAL(messageReceived(const QString&)), SIGNAL(messageReceived(const QString&)));
101 Returns true if another instance of this application is running;
104 This function does not find instances of this application that are
105 being run by a different user (on Windows: that are running in
111 bool QtSingleCoreApplication::isRunning()
113 return peer->isClient();
118 Tries to send the text \a message to the currently running
119 instance. The QtSingleCoreApplication object in the running instance
120 will emit the messageReceived() signal when it receives the
123 This function returns true if the message has been sent to, and
124 processed by, the current instance. If there is no instance
125 currently running, or if the running instance fails to process the
126 message within \a timeout milliseconds, this function return false.
128 \sa isRunning(), messageReceived()
131 bool QtSingleCoreApplication::sendMessage(const QString &message, int timeout)
133 return peer->sendMessage(message, timeout);
138 Returns the application identifier. Two processes with the same
139 identifier will be regarded as instances of the same application.
142 QString QtSingleCoreApplication::id() const
144 return peer->applicationId();
149 \fn void QtSingleCoreApplication::messageReceived(const QString& message)
151 This signal is emitted when the current instance receives a \a
152 message from another instance of this application.