1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). 4 ** All rights reserved. 5 ** 6 ** Contact: Nokia Corporation (qt-info@nokia.com) 7 ** 8 ** This file is part of a Qt Solutions component. 9 ** 10 ** You may use this file under the terms of the BSD license as follows: 11 ** 12 ** "Redistribution and use in source and binary forms, with or without 13 ** modification, are permitted provided that the following conditions are 14 ** met: 15 ** * Redistributions of source code must retain the above copyright 16 ** notice, this list of conditions and the following disclaimer. 17 ** * Redistributions in binary form must reproduce the above copyright 18 ** notice, this list of conditions and the following disclaimer in 19 ** the documentation and/or other materials provided with the 20 ** distribution. 21 ** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor 22 ** the names of its contributors may be used to endorse or promote 23 ** products derived from this software without specific prior written 24 ** permission. 25 ** 26 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 27 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 28 ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 29 ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 30 ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 31 ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 32 ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 33 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 34 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 35 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 36 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." 37 ** 38 ****************************************************************************/ 39 40 #ifndef QTSINGLEAPPLICATION_H 41 #define QTSINGLEAPPLICATION_H 42 43 #include <QtGui/QApplication> 44 45 class QtLocalPeer; 46 47 #if defined(Q_WS_WIN) 48 # if !defined(QT_QTSINGLEAPPLICATION_EXPORT) && !defined(QT_QTSINGLEAPPLICATION_IMPORT) 49 # define QT_QTSINGLEAPPLICATION_EXPORT 50 # elif defined(QT_QTSINGLEAPPLICATION_IMPORT) 51 # if defined(QT_QTSINGLEAPPLICATION_EXPORT) 52 # undef QT_QTSINGLEAPPLICATION_EXPORT 53 # endif 54 # define QT_QTSINGLEAPPLICATION_EXPORT __declspec(dllimport) 55 # elif defined(QT_QTSINGLEAPPLICATION_EXPORT) 56 # undef QT_QTSINGLEAPPLICATION_EXPORT 57 # define QT_QTSINGLEAPPLICATION_EXPORT __declspec(dllexport) 58 # endif 59 #else 60 # define QT_QTSINGLEAPPLICATION_EXPORT 61 #endif 62 63 class QT_QTSINGLEAPPLICATION_EXPORT QtSingleApplication : public QApplication 64 { 65 Q_OBJECT 66 67 public: 68 QtSingleApplication(int &argc, char **argv, bool GUIenabled = true); 69 QtSingleApplication(const QString &id, int &argc, char **argv); 70 QtSingleApplication(int &argc, char **argv, Type type); 71 #if defined(Q_WS_X11) 72 QtSingleApplication(Display* dpy, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0); 73 QtSingleApplication(Display *dpy, int &argc, char **argv, Qt::HANDLE visual = 0, Qt::HANDLE cmap= 0); 74 QtSingleApplication(Display* dpy, const QString &appId, int argc, char **argv, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0); 75 #endif 76 77 bool isRunning(); 78 QString id() const; 79 80 void setActivationWindow(QWidget* aw, bool activateOnMessage = true); 81 QWidget* activationWindow() const; 82 83 // Obsolete: 84 void initialize(bool dummy = true) 85 { isRunning(); Q_UNUSED(dummy) } 86 87 public Q_SLOTS: 88 bool sendMessage(const QString &message, int timeout = 5000); 89 void activateWindow(); 90 91 92 Q_SIGNALS: 93 void messageReceived(const QString &message); 94 95 96 private: 97 void sysInit(const QString &appId = QString()); 98 QtLocalPeer *peer; 99 QWidget *actWin; 100 }; 101 102 #endif // QTSINGLEAPPLICATION_H 103