securitydialogs/AutolockSrv/src/keycapturingapplication.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 03 May 2010 13:20:16 +0300
changeset 17 8957df7b0072
permissions -rw-r--r--
Revision: 201015 Kit: 201018

#include <QSymbianEvent>
#include <QFile>
#include <QTextStream>
#include <QDebug>

#include <W32STD.H>
#include <eikenv.h>

#include "keycapturingapplication.h"

/*!
    
 */
void writeDebug(const QString &message)
{
    QFile file("c:/keycapturingapplication.log");
    if (!file.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) {
        qDebug() << "DialogLauncherView::writeDebug - file open failed";
        return;
    }
    
    QTextStream out(&file);
    out << message << "\n";
    
    file.close();
}

/*!
    
 */
KeyCapturingApplication::KeyCapturingApplication(int &argc, char *argv[], int keyCode) : 
    HbApplication(argc, argv), mKeyCode(keyCode), mKeyCaptureHandle(-1)
{
    CEikonEnv *env = CEikonEnv::Static();
    mKeyCaptureHandle = env->RootWin().CaptureKey(keyCode, 0, 0);
}

/*!
    
 */
KeyCapturingApplication::~KeyCapturingApplication()
{
    CEikonEnv *env = CEikonEnv::Static();
    env->RootWin().CancelCaptureKey(mKeyCaptureHandle);
}
    
bool KeyCapturingApplication::symbianEventFilter(const QSymbianEvent *event)
{
    if (event->type() == QSymbianEvent::WindowServerEvent) {
        const TWsEvent* wsEvent = event->windowServerEvent();
        if (wsEvent->Type() == EEventKey) {
            writeDebug(QString("Key Event:"));
            writeDebug(QString("\tkey code: %1").arg(wsEvent->Key()->iCode));
            writeDebug(QString("\tscan code: %1").arg(wsEvent->Key()->iScanCode));
            if (wsEvent->Key()->iCode == mKeyCode)
            {
                emit capturedKeyEvent();
            }
        }
    }
    return HbApplication::symbianEventFilter(event);
}