]> git.sur5r.net Git - minitube/blob - src/qtsingleapplication/qtsinglecoreapplication.cpp
9b7fc40bd09dcdd405a2249416d950d0039dbfd2
[minitube] / src / qtsingleapplication / qtsinglecoreapplication.cpp
1 /****************************************************************************
2 **
3 ** This file is part of a Qt Solutions component.
4 ** 
5 ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
6 ** 
7 ** Contact:  Qt Software Information (qt-info@nokia.com)
8 ** 
9 ** Commercial Usage  
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.
14 ** 
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.
22 ** 
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
26 ** package.
27 ** 
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.
35 ** 
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.
41 ** 
42 ** If you are unsure which license is appropriate for your use, please
43 ** contact the sales department at qt-sales@nokia.com.
44 ** 
45 ****************************************************************************/
46
47
48 #include "qtsinglecoreapplication.h"
49 #include "qtlocalpeer.h"
50
51 /*!
52     \class QtSingleCoreApplication qtsinglecoreapplication.h
53     \brief A variant of the QtSingleApplication class for non-GUI applications.
54
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
58     the QtGui library.
59
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.
64
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.
69
70     \sa QtSingleApplication
71 */
72
73 /*!
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.
77 */
78
79 QtSingleCoreApplication::QtSingleCoreApplication(int &argc, char **argv)
80     : QCoreApplication(argc, argv)
81 {
82     peer = new QtLocalPeer(this);
83     connect(peer, SIGNAL(messageReceived(const QString&)), SIGNAL(messageReceived(const QString&)));
84 }
85
86
87 /*!
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.
91 */
92 QtSingleCoreApplication::QtSingleCoreApplication(const QString &appId, int &argc, char **argv)
93     : QCoreApplication(argc, argv)
94 {
95     peer = new QtLocalPeer(this, appId);
96     connect(peer, SIGNAL(messageReceived(const QString&)), SIGNAL(messageReceived(const QString&)));
97 }
98
99
100 /*!
101     Returns true if another instance of this application is running;
102     otherwise false.
103
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
106     another session).
107
108     \sa sendMessage()
109 */
110
111 bool QtSingleCoreApplication::isRunning()
112 {
113     return peer->isClient();
114 }
115
116
117 /*!
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
121     message.
122
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.
127
128     \sa isRunning(), messageReceived()
129 */
130
131 bool QtSingleCoreApplication::sendMessage(const QString &message, int timeout)
132 {
133     return peer->sendMessage(message, timeout);
134 }
135
136
137 /*!
138     Returns the application identifier. Two processes with the same
139     identifier will be regarded as instances of the same application.
140 */
141
142 QString QtSingleCoreApplication::id() const
143 {
144     return peer->applicationId();
145 }
146
147
148 /*!
149     \fn void QtSingleCoreApplication::messageReceived(const QString& message)
150
151     This signal is emitted when the current instance receives a \a
152     message from another instance of this application.
153
154     \sa sendMessage()
155 */