tstaskmonitor/server/src/tsfswmonitor.cpp
author hgs
Fri, 28 May 2010 16:17:03 +0300
changeset 96 5d243a69bdda
parent 94 dbb8300717f7
permissions -rw-r--r--
201021
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
94
hgs
parents:
diff changeset
     1
/*
96
hgs
parents: 94
diff changeset
     2
 * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents: 94
diff changeset
     3
 * All rights reserved.
hgs
parents: 94
diff changeset
     4
 * This component and the accompanying materials are made available
hgs
parents: 94
diff changeset
     5
 * under the terms of "Eclipse Public License v1.0"
hgs
parents: 94
diff changeset
     6
 * which accompanies this distribution, and is available
hgs
parents: 94
diff changeset
     7
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
94
hgs
parents:
diff changeset
     8
 *
96
hgs
parents: 94
diff changeset
     9
 * Initial Contributors:
hgs
parents: 94
diff changeset
    10
 * Nokia Corporation - initial contribution.
hgs
parents: 94
diff changeset
    11
 *
hgs
parents: 94
diff changeset
    12
 * Contributors:
hgs
parents: 94
diff changeset
    13
 *
hgs
parents: 94
diff changeset
    14
 * Description:  ws monitor implementation
hgs
parents: 94
diff changeset
    15
 *
hgs
parents: 94
diff changeset
    16
 */
94
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
#include "tsfswmonitor.h"
96
hgs
parents: 94
diff changeset
    19
#include "tsdataobserver.h"
94
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
// --------------------------------------------------------------------------
hgs
parents:
diff changeset
    22
// CTsFswMonitor::~CTsFswMonitor
hgs
parents:
diff changeset
    23
// --------------------------------------------------------------------------
hgs
parents:
diff changeset
    24
//
hgs
parents:
diff changeset
    25
CTsFswMonitor::~CTsFswMonitor()
96
hgs
parents: 94
diff changeset
    26
{
94
hgs
parents:
diff changeset
    27
    Cancel();
96
hgs
parents: 94
diff changeset
    28
    mWg.Close();
hgs
parents: 94
diff changeset
    29
    mWsSession.Close();
hgs
parents: 94
diff changeset
    30
}
94
hgs
parents:
diff changeset
    31
hgs
parents:
diff changeset
    32
// --------------------------------------------------------------------------
hgs
parents:
diff changeset
    33
// CTsFswMonitor::CTsFswMonitor
hgs
parents:
diff changeset
    34
// --------------------------------------------------------------------------
hgs
parents:
diff changeset
    35
//
96
hgs
parents: 94
diff changeset
    36
CTsFswMonitor::CTsFswMonitor(MHsDataObserver& taskListObserver) :
hgs
parents: 94
diff changeset
    37
    CActive(EPriorityStandard), mTaskListObserver(&taskListObserver)
hgs
parents: 94
diff changeset
    38
{
hgs
parents: 94
diff changeset
    39
}
94
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
// --------------------------------------------------------------------------
hgs
parents:
diff changeset
    42
// CTsFswMonitor::NewL
hgs
parents:
diff changeset
    43
// --------------------------------------------------------------------------
hgs
parents:
diff changeset
    44
//        
96
hgs
parents: 94
diff changeset
    45
CTsFswMonitor* CTsFswMonitor::NewL(MHsDataObserver& taskListObserver)
hgs
parents: 94
diff changeset
    46
{
hgs
parents: 94
diff changeset
    47
    CTsFswMonitor* self = NewLC(taskListObserver);
hgs
parents: 94
diff changeset
    48
    CleanupStack::Pop(self);
94
hgs
parents:
diff changeset
    49
    return self;
96
hgs
parents: 94
diff changeset
    50
}
94
hgs
parents:
diff changeset
    51
hgs
parents:
diff changeset
    52
// --------------------------------------------------------------------------
hgs
parents:
diff changeset
    53
// CTsFswMonitor::NewLC
hgs
parents:
diff changeset
    54
// --------------------------------------------------------------------------
hgs
parents:
diff changeset
    55
//
96
hgs
parents: 94
diff changeset
    56
CTsFswMonitor* CTsFswMonitor::NewLC(MHsDataObserver& taskListObserver)
hgs
parents: 94
diff changeset
    57
{
hgs
parents: 94
diff changeset
    58
    CTsFswMonitor* self = new (ELeave) CTsFswMonitor(taskListObserver);
hgs
parents: 94
diff changeset
    59
    CleanupStack::PushL(self);
94
hgs
parents:
diff changeset
    60
    self->ConstructL();
hgs
parents:
diff changeset
    61
    return self;
96
hgs
parents: 94
diff changeset
    62
}
hgs
parents: 94
diff changeset
    63
94
hgs
parents:
diff changeset
    64
// --------------------------------------------------------------------------
hgs
parents:
diff changeset
    65
// CTsFswMonitor::ConstructL
hgs
parents:
diff changeset
    66
// --------------------------------------------------------------------------
hgs
parents:
diff changeset
    67
//
hgs
parents:
diff changeset
    68
void CTsFswMonitor::ConstructL()
96
hgs
parents: 94
diff changeset
    69
{
hgs
parents: 94
diff changeset
    70
    CActiveScheduler::Add(this);
94
hgs
parents:
diff changeset
    71
    //Create window server observer
hgs
parents:
diff changeset
    72
    ConstractObserverL();
hgs
parents:
diff changeset
    73
    Subscribe();
96
hgs
parents: 94
diff changeset
    74
}
94
hgs
parents:
diff changeset
    75
hgs
parents:
diff changeset
    76
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    77
// Subscribe
hgs
parents:
diff changeset
    78
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    79
//
hgs
parents:
diff changeset
    80
void CTsFswMonitor::Subscribe()
96
hgs
parents: 94
diff changeset
    81
{
hgs
parents: 94
diff changeset
    82
    if (!IsActive()) {
hgs
parents: 94
diff changeset
    83
        mWsSession.EventReady(&iStatus);
94
hgs
parents:
diff changeset
    84
        SetActive();
hgs
parents:
diff changeset
    85
    }
96
hgs
parents: 94
diff changeset
    86
}
94
hgs
parents:
diff changeset
    87
hgs
parents:
diff changeset
    88
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    89
// ConstractObserverL
hgs
parents:
diff changeset
    90
// -----------------------------------------------------------------------------
hgs
parents:
diff changeset
    91
//
hgs
parents:
diff changeset
    92
void CTsFswMonitor::ConstractObserverL()
hgs
parents:
diff changeset
    93
{
96
hgs
parents: 94
diff changeset
    94
    User::LeaveIfError(mWsSession.Connect());
hgs
parents: 94
diff changeset
    95
    mWg = RWindowGroup(mWsSession);
hgs
parents: 94
diff changeset
    96
    User::LeaveIfError(mWg.Construct(reinterpret_cast<TUint32> (&mWg)));
hgs
parents: 94
diff changeset
    97
    mWg.DisableFocusChangeEvents();
hgs
parents: 94
diff changeset
    98
    mWg.DisableModifierChangedEvents();
hgs
parents: 94
diff changeset
    99
    mWg.DisableOnEvents();
hgs
parents: 94
diff changeset
   100
    mWg.DisableScreenChangeEvents();
94
hgs
parents:
diff changeset
   101
hgs
parents:
diff changeset
   102
    //enable notifications about group lists
96
hgs
parents: 94
diff changeset
   103
    User::LeaveIfError(mWg.EnableGroupListChangeEvents());
94
hgs
parents:
diff changeset
   104
}
hgs
parents:
diff changeset
   105
hgs
parents:
diff changeset
   106
void CTsFswMonitor::RunL()
hgs
parents:
diff changeset
   107
{
96
hgs
parents: 94
diff changeset
   108
    User::LeaveIfError(iStatus.Int());
94
hgs
parents:
diff changeset
   109
    TWsEvent event;
96
hgs
parents: 94
diff changeset
   110
    mWsSession.GetEvent(event);
94
hgs
parents:
diff changeset
   111
    Subscribe();//new subscribtion has to be called after picking event
96
hgs
parents: 94
diff changeset
   112
    if (EEventWindowGroupListChanged == event.Type() /*|| EEventFocusGroupChanged == event.Type()*/) {
hgs
parents: 94
diff changeset
   113
        if (mTaskListObserver) {
hgs
parents: 94
diff changeset
   114
            mTaskListObserver->DataChanged();
94
hgs
parents:
diff changeset
   115
        }
96
hgs
parents: 94
diff changeset
   116
    }
94
hgs
parents:
diff changeset
   117
}
hgs
parents:
diff changeset
   118
96
hgs
parents: 94
diff changeset
   119
TInt CTsFswMonitor::RunError(TInt /*aError*/)
94
hgs
parents:
diff changeset
   120
{
hgs
parents:
diff changeset
   121
    Subscribe();
hgs
parents:
diff changeset
   122
    return KErrNone;
hgs
parents:
diff changeset
   123
}
hgs
parents:
diff changeset
   124
hgs
parents:
diff changeset
   125
void CTsFswMonitor::DoCancel()
hgs
parents:
diff changeset
   126
{
96
hgs
parents: 94
diff changeset
   127
    if (IsActive()) {
hgs
parents: 94
diff changeset
   128
        mWsSession.EventReadyCancel();
hgs
parents: 94
diff changeset
   129
    }
94
hgs
parents:
diff changeset
   130
}
hgs
parents:
diff changeset
   131
hgs
parents:
diff changeset
   132
// end of file