/********************************************************************** ** 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" #if defined( QT_QWS_SL5XXX ) || defined( QT_QWS_IPAQ ) #include #endif #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; }