-rw-r--r-- | libopie2/opiecore/oapplication.cpp | 7 | ||||
-rw-r--r-- | libopie2/opiecore/oapplication.h | 11 |
2 files changed, 18 insertions, 0 deletions
diff --git a/libopie2/opiecore/oapplication.cpp b/libopie2/opiecore/oapplication.cpp index 0ce61d8..0164957 100644 --- a/libopie2/opiecore/oapplication.cpp +++ b/libopie2/opiecore/oapplication.cpp @@ -1,142 +1,149 @@ /* This file is part of the Opie Project Copyright (C) 2003 Michael 'Mickey' Lauer <mickey@Vanille.de> =. .=l. .>+-= _;:, .> :=|. This program is free software; you can .> <`_, > . <= redistribute it and/or modify it under :`=1 )Y*s>-.-- : the terms of the GNU Library General Public .="- .-=="i, .._ License as published by the Free Software - . .-<_> .<> Foundation; either version 2 of the License, ._= =} : or (at your option) any later version. .%`+i> _;_. .i_,=:_. -<s. This program is distributed in the hope that + . -:. = it will be useful, but WITHOUT ANY WARRANTY; : .. .:, . . . without even the implied warranty of =_ + =;=|` MERCHANTABILITY or FITNESS FOR A _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU ..}^=.= = ; Library General Public License for more ++= -. .` .: details. : = ...= . :.=- -. .:....=;==+<; You should have received a copy of the GNU -_. . . )=. = Library General Public License along with -- :-=` this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include <opie2/oapplication.h> #include <opie2/oconfig.h> #include <opie2/odebug.h> +#include <qcopchannel_qws.h> + + #include <signal.h> #include <stdio.h> using namespace Opie::Core; OApplication* OApplication::_instance = 0; /************************************************************************************************** * OApplicationPrivate **************************************************************************************************/ namespace Opie { namespace Core { namespace Internal { class OApplicationPrivate { public: OApplicationPrivate() {}; ~OApplicationPrivate() {}; }; } /************************************************************************************************** * OApplication **************************************************************************************************/ OApplication::OApplication( int& argc, char** argv, Type type ) :QPEApplication( argc, argv, type ), _appname( QString::null ), _config( 0 ) { init(); } OApplication::OApplication( int& argc, char** argv, const QCString& rAppName ) :QPEApplication( argc, argv ), _appname( rAppName ), _config( 0 ) { init(); } OApplication::~OApplication() { delete d; if ( _config ) delete _config; OApplication::_instance = 0; // after deconstruction of the one-and-only application object, // the construction of another object is allowed } OConfig* OApplication::config() { if ( !_config ) { _config = new OConfig( _appname ); } return _config; } void OApplication::init() { d = new Internal::OApplicationPrivate(); if ( !OApplication::_instance ) { OApplication::_instance = this; + + QCopChannel *chan = new QCopChannel("QPE/System", this, "OApplication System Channel"); + connect(chan,SIGNAL(received(const QCString&,const QByteArray&)), + this,SIGNAL(systemMessageSignal(const QCString&,const QByteArray&))); /* register SIGSEGV handler to give programs an option * to exit gracefully, e.g. save or close devices or files. struct sigaction sa; sa.sa_handler = ( void (*)(int) ) &segv_handler; sa.sa_flags = SA_SIGINFO | SA_RESTART; sigemptyset(&sa.sa_mask); sigaction(SIGSEGV, &sa, NULL); */ } else { ofatal << "OApplication: Can't create more than one OApplication object. Aborting." << oendl; //FIXME exit gracefully ? ::exit( -1 ); } } void OApplication::showMainWidget( QWidget* widget, bool nomax ) { QPEApplication::showMainWidget( widget, nomax ); widget->setCaption( _appname ); } void OApplication::setTitle( const QString& title ) const { if ( mainWidget() ) { if ( !title.isNull() ) mainWidget()->setCaption( QString(_appname) + QString( " - " ) + title ); else mainWidget()->setCaption( _appname ); } } } } diff --git a/libopie2/opiecore/oapplication.h b/libopie2/opiecore/oapplication.h index d34e6b1..709d73a 100644 --- a/libopie2/opiecore/oapplication.h +++ b/libopie2/opiecore/oapplication.h @@ -56,62 +56,73 @@ class OApplication : public QPEApplication OApplication( int& argc, char** argv, Type type=GuiClient); /** * Constructor. Parses command-line arguments and sets the window caption. * * @param rAppName application name. Will be used for finding the * associated message, icon and configuration files * */ OApplication( int& argc, char** argv, const QCString& rAppName ); /** * Destructor. Destroys the application object and its children. */ virtual ~OApplication(); /** * @returns the process-wide application object * * This is similar to the global @ref QApplication pointer qApp. It * allows access to the single global OApplication object, since * more than one cannot be created in the same application. It * saves you the trouble of having to pass the pointer explicitly * to every function that may require it. */ static OApplication* oApplication() { return _instance; }; /** * Returns the application name as given during creation. * * @returns a reference to the application name */ const QCString& appName() const { return _appname; }; /** * @returns the application session config object. * * @see OConfig */ OConfig* config(); /** * Shows the main @a widget and sets the name of the application as window caption. */ virtual void showMainWidget( QWidget* widget, bool nomax = false ); /** * Set the application title. The application title will be concatenated * to the application name given in the constructor. * * @param title the title. If not given, resets caption to appname */ virtual void setTitle( const QString& title = QString::null ) const; + signals: + + /** + * Emit signals when messages are received on QPE/System + * QCOP Channel. + * + * @param msg The QCOP Message + * @param data The QCOP Data + */ + void systemMessageSignal(const QCString& msg, const QByteArray& data); + protected: void init(); private: const QCString _appname; static OApplication* _instance; OConfig* _config; Internal::OApplicationPrivate* d; }; } // Core } // Opie #endif // OAPPLICATION_H |