From 7d24cfad2a564436950b5f42e74c0bd51481f5a9 Mon Sep 17 00:00:00 2001 From: kergoth Date: Thu, 08 May 2003 16:48:20 +0000 Subject: Start work on a new launcher. This commit is simply a minimal Opie QWS server. --- (limited to 'core/qws/oqwsserver.cpp') diff --git a/core/qws/oqwsserver.cpp b/core/qws/oqwsserver.cpp new file mode 100644 index 0000000..1c61d19 --- a/dev/null +++ b/core/qws/oqwsserver.cpp @@ -0,0 +1,196 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qtopia Environment. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include + +#include "oqwsserver.h" +#include "qcopbridge.h" +#include "transferserver.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined( QT_QWS_SL5XXX ) || defined( QT_QWS_IPAQ ) +#include +#endif + +#include + +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +using namespace Opie; + +OQWSServer::OQWSServer( int& argc, char **argv, Type appType ) + : QPEApplication( argc, argv, appType ) +{ + startServers(); +} + +OQWSServer::~OQWSServer() +{ + terminateServers(); +} + +bool OQWSServer::eventFilter ( QObject *o, QEvent *e ) +{ +#if 0 + if ( e-> type ( ) == QEvent::KeyPress || e-> type ( ) == QEvent::KeyRelease ) { + QKeyEvent *ke = (QKeyEvent *) e; + + const ODeviceButton *db = ODevice::inst ( )-> buttonForKeycode ( ke-> key ( )); + + if ( db ) { + if (checkButtonAction ( db, ke-> key ( ), e-> type ( ) == QEvent::KeyPress, ke-> isAutoRepeat ( ))) + return true; //checkButtonAction retrune false if events should be routed through + } + } +#endif + return QPEApplication::eventFilter ( o, e ); +} + +#ifdef Q_WS_QWS + +bool OQWSServer::qwsEventFilter( QWSEvent *e ) +{ +#if 0 + qpedesktop->checkMemory(); + + if ( e->type == QWSEvent::Key ) { + QWSKeyEvent * ke = (QWSKeyEvent *) e; + ushort keycode = ke-> simpleData. keycode; + + if ( !loggedin && keycode != Key_F34 ) + return true; + + bool press = ke-> simpleData. is_press; + bool autoRepeat = ke-> simpleData. is_auto_repeat; + + if ( !keyboardGrabbed ( )) { + // app that registers key/message to be sent back to the app, when it doesn't have focus, + // when user presses key, unless keyboard has been requested from app. + // will not send multiple repeats if user holds key + // i.e. one shot + + if ( keycode != 0 && press && !autoRepeat ) { + for ( KeyRegisterList::Iterator it = keyRegisterList.begin(); it != keyRegisterList.end(); ++it ) { + if (( *it ). getKeyCode ( ) == keycode ) { + QCopEnvelope (( *it ). getChannel ( ), ( *it ). getMessage ( )); + return true; + } + } + } + } + + if ( keycode == HardKey_Suspend ) { + if ( press ) + emit power ( ); + return true; + } + else if ( keycode == HardKey_Backlight ) { + if ( press ) + emit backlight ( ); + return true; + } + else if ( keycode == Key_F32 ) { + if ( press ) + QCopEnvelope e( "QPE/Desktop", "startSync()" ); + return true; + } + else if ( keycode == Key_F31 && !ke-> simpleData. modifiers ) { // Symbol Key -> show Unicode IM + if ( press ) + emit symbol ( ); + return true; + } + else if ( keycode == Key_NumLock ) { + if ( press ) + emit numLockStateToggle ( ); + } + else if ( keycode == Key_CapsLock ) { + if ( press ) + emit capsLockStateToggle(); + } + if (( press && !autoRepeat ) || ( !press && autoRepeat )) { + if ( m_keyclick_sound ) + ODevice::inst ( )-> keySound ( ); + } + } + else if ( e-> type == QWSEvent::Mouse ) { + QWSMouseEvent * me = ( QWSMouseEvent * ) e; + static bool up = true; + + if ( me-> simpleData. state & LeftButton ) { + if ( up ) { + up = false; + if ( m_screentap_sound ) + ODevice::inst ( ) -> touchSound ( ); + } + } + else { + up = true; + } + } +#endif + return QPEApplication::qwsEventFilter ( e ); +} + +#endif + +void OQWSServer::startServers() +{ + // start qcop bridge server + m_qcopBridge = new QCopBridge( 4243 ); + if ( !m_qcopBridge->ok() ) { + delete m_qcopBridge; + m_qcopBridge = 0; + } + // start transfer server + m_transferServer = new TransferServer( 4242 ); + if ( !m_transferServer->ok() ) { + delete m_transferServer; + m_transferServer = 0; + } +// if ( !transferServer || !qcopBridge ) +// startTimer( 2000 ); +} + +void OQWSServer::terminateServers() +{ + delete m_transferServer; + delete m_qcopBridge; + m_transferServer = 0; + m_qcopBridge = 0; +} -- cgit v0.9.0.2