satui/satapp/src/satappaction.cpp
author hgs
Fri, 06 Aug 2010 13:08:23 +0300
changeset 36 7c428525956b
parent 35 6aefa3341fcc
permissions -rw-r--r--
201031
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
33
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*
hgs
parents:
diff changeset
    17
*/
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#include <QEventLoop>
hgs
parents:
diff changeset
    20
#include <QCoreApplication>
hgs
parents:
diff changeset
    21
#include <QVariant>
hgs
parents:
diff changeset
    22
#include <QStringList>
hgs
parents:
diff changeset
    23
#include <QtDebug>
hgs
parents:
diff changeset
    24
hgs
parents:
diff changeset
    25
#include "satappaction.h"
hgs
parents:
diff changeset
    26
hgs
parents:
diff changeset
    27
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    28
// global des2str
hgs
parents:
diff changeset
    29
// trasmit from symbian descripter to QString
hgs
parents:
diff changeset
    30
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    31
//
hgs
parents:
diff changeset
    32
QString des2str(const TDesC& desc)
hgs
parents:
diff changeset
    33
{
hgs
parents:
diff changeset
    34
    return QString::fromUtf16(desc.Ptr(), desc.Length());
hgs
parents:
diff changeset
    35
}
hgs
parents:
diff changeset
    36
hgs
parents:
diff changeset
    37
// ======== MEMBER FUNCTIONS ==================================================
hgs
parents:
diff changeset
    38
hgs
parents:
diff changeset
    39
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    40
// SatAppAction::SatAppAction
hgs
parents:
diff changeset
    41
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    42
//
hgs
parents:
diff changeset
    43
SatAppAction::SatAppAction(int action, QObject *parent)
hgs
parents:
diff changeset
    44
: QObject(parent)
hgs
parents:
diff changeset
    45
{
hgs
parents:
diff changeset
    46
    qDebug("SATAPP: SatAppAction::SatAppAction");
hgs
parents:
diff changeset
    47
    mAction = action;
hgs
parents:
diff changeset
    48
    mResponse = ESatNoResponseFromUser;
hgs
parents:
diff changeset
    49
	mState = Active;
hgs
parents:
diff changeset
    50
    
hgs
parents:
diff changeset
    51
    //monitor application
hgs
parents:
diff changeset
    52
    SAT_ASSERT(connect(
hgs
parents:
diff changeset
    53
        qApp,SIGNAL(aboutToQuit()),
hgs
parents:
diff changeset
    54
        this,SLOT(completeWithSessionTerminated())));
hgs
parents:
diff changeset
    55
}
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    58
// SatAppAction::~SatAppAction
hgs
parents:
diff changeset
    59
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    60
//
hgs
parents:
diff changeset
    61
SatAppAction::~SatAppAction()
hgs
parents:
diff changeset
    62
{
hgs
parents:
diff changeset
    63
    if (mState==Waiting)
hgs
parents:
diff changeset
    64
        complete(); // release waiting thread
hgs
parents:
diff changeset
    65
}
hgs
parents:
diff changeset
    66
hgs
parents:
diff changeset
    67
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    68
// SatAppAction::waitUntilCompleted
hgs
parents:
diff changeset
    69
// sync method that returns when this action is completed
hgs
parents:
diff changeset
    70
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    71
//
hgs
parents:
diff changeset
    72
void SatAppAction::waitUntilCompleted()
hgs
parents:
diff changeset
    73
{
hgs
parents:
diff changeset
    74
    qDebug("SATAPP: SatAppAction::waitUntilCompleted");
hgs
parents:
diff changeset
    75
    if (mState==Completed) return; // no need to wait!
hgs
parents:
diff changeset
    76
    QEventLoop loop;
hgs
parents:
diff changeset
    77
    SAT_ASSERT(connect(
hgs
parents:
diff changeset
    78
        this,SIGNAL(actionCompleted(SatAppAction*)),
hgs
parents:
diff changeset
    79
        &loop,SLOT(quit())));
hgs
parents:
diff changeset
    80
    mState=Waiting;
hgs
parents:
diff changeset
    81
    qDebug("SATAPP: waitUntilCompleted: waiting...");
hgs
parents:
diff changeset
    82
    loop.exec();
35
hgs
parents: 33
diff changeset
    83
    // When use the FSW complete the satapp, the signal aboutToExit
hgs
parents: 33
diff changeset
    84
    // can not be recieved. temp solution
hgs
parents: 33
diff changeset
    85
    if(Waiting == mState){
hgs
parents: 33
diff changeset
    86
        mState=Completed;
hgs
parents: 33
diff changeset
    87
        mResponse=ESatSessionTerminatedByUser;
hgs
parents: 33
diff changeset
    88
    }
33
hgs
parents:
diff changeset
    89
    qDebug("SATAPP: waitUntilCompleted: ...released");
hgs
parents:
diff changeset
    90
}
hgs
parents:
diff changeset
    91
hgs
parents:
diff changeset
    92
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    93
// SatAppAction::complete
hgs
parents:
diff changeset
    94
// completes the action
hgs
parents:
diff changeset
    95
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
    96
//
hgs
parents:
diff changeset
    97
void SatAppAction::complete(TSatUiResponse resp)
hgs
parents:
diff changeset
    98
{
hgs
parents:
diff changeset
    99
    qDebug("SATAPP: SatAppAction::complete resp= %x in", resp);
hgs
parents:
diff changeset
   100
    if (mState!=Completed) {
hgs
parents:
diff changeset
   101
        qDebug("SATAPP: SatAppAction::completed");
hgs
parents:
diff changeset
   102
        setResponse(resp);
hgs
parents:
diff changeset
   103
        mState = Completed;
hgs
parents:
diff changeset
   104
        emit actionCompleted(this);
hgs
parents:
diff changeset
   105
    }
hgs
parents:
diff changeset
   106
    qDebug("SATAPP: SatAppAction::complete resp= %x out", resp);
hgs
parents:
diff changeset
   107
}
hgs
parents:
diff changeset
   108
hgs
parents:
diff changeset
   109
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   110
// SatAppAction::set
hgs
parents:
diff changeset
   111
// setter for QVariant
hgs
parents:
diff changeset
   112
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   113
//
hgs
parents:
diff changeset
   114
void SatAppAction::set(const QString& key, QVariant value)
hgs
parents:
diff changeset
   115
{
hgs
parents:
diff changeset
   116
    qDebug() << "SATAPP: SatAppAction::set(" <<
hgs
parents:
diff changeset
   117
        key << "=" << value << ")";
hgs
parents:
diff changeset
   118
    mParams[key] = value;
hgs
parents:
diff changeset
   119
}
hgs
parents:
diff changeset
   120
hgs
parents:
diff changeset
   121
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   122
// SatAppAction::set
hgs
parents:
diff changeset
   123
// setter for Symbian Descripter
hgs
parents:
diff changeset
   124
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   125
//
hgs
parents:
diff changeset
   126
void SatAppAction::set(const QString& key, const TDesC& value)
hgs
parents:
diff changeset
   127
{
hgs
parents:
diff changeset
   128
    set(key,des2str(value));
hgs
parents:
diff changeset
   129
}
hgs
parents:
diff changeset
   130
hgs
parents:
diff changeset
   131
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   132
// SatAppAction::set
hgs
parents:
diff changeset
   133
// setter for Symbian MDesCArray - Menu list
hgs
parents:
diff changeset
   134
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   135
//
hgs
parents:
diff changeset
   136
void SatAppAction::set(const QString& key, const MDesCArray& value)
hgs
parents:
diff changeset
   137
{
hgs
parents:
diff changeset
   138
    QList<QVariant> list;
hgs
parents:
diff changeset
   139
    for(int i=0; i<value.MdcaCount(); ++i)
hgs
parents:
diff changeset
   140
        list.append(des2str(value.MdcaPoint(i)));
hgs
parents:
diff changeset
   141
    set(key,list);
hgs
parents:
diff changeset
   142
}
hgs
parents:
diff changeset
   143
hgs
parents:
diff changeset
   144
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   145
// SatAppAction::set
hgs
parents:
diff changeset
   146
// setter for CArrayFixFlat<TInt> - mene icon
hgs
parents:
diff changeset
   147
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   148
//
hgs
parents:
diff changeset
   149
void SatAppAction::set(const QString& key, CArrayFixFlat<TInt>& value)
hgs
parents:
diff changeset
   150
{
hgs
parents:
diff changeset
   151
    QList<QVariant> list;
hgs
parents:
diff changeset
   152
    for(int i=0; i<value.Count(); ++i)
hgs
parents:
diff changeset
   153
        list.append(value[i]);
hgs
parents:
diff changeset
   154
    set(key,list);
hgs
parents:
diff changeset
   155
}
hgs
parents:
diff changeset
   156
hgs
parents:
diff changeset
   157
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   158
// SatAppAction::set
hgs
parents:
diff changeset
   159
// setter for TTimeIntervalSeconds - duration
hgs
parents:
diff changeset
   160
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   161
//
hgs
parents:
diff changeset
   162
void SatAppAction::set(const QString& key, TTimeIntervalSeconds& value)
hgs
parents:
diff changeset
   163
{
hgs
parents:
diff changeset
   164
    int value_millisec = value.Int() * 1000; // sec->millisec
hgs
parents:
diff changeset
   165
    set(key,value_millisec);
hgs
parents:
diff changeset
   166
}
hgs
parents:
diff changeset
   167
hgs
parents:
diff changeset
   168
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   169
// SatAppAction::set
hgs
parents:
diff changeset
   170
// setter for TTimeIntervalMicroSeconds - duration
hgs
parents:
diff changeset
   171
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   172
//
hgs
parents:
diff changeset
   173
void SatAppAction::set(const QString& key, TTimeIntervalMicroSeconds& value)
hgs
parents:
diff changeset
   174
{
hgs
parents:
diff changeset
   175
    int value_millisec = value.Int64() / 1000; // microsec->millisec
hgs
parents:
diff changeset
   176
    set(key,value_millisec);
hgs
parents:
diff changeset
   177
}
hgs
parents:
diff changeset
   178
hgs
parents:
diff changeset
   179
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   180
// SatAppAction::value
hgs
parents:
diff changeset
   181
// getter by key
hgs
parents:
diff changeset
   182
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   183
//
hgs
parents:
diff changeset
   184
QVariant SatAppAction::value(const QString& key)
hgs
parents:
diff changeset
   185
{
hgs
parents:
diff changeset
   186
    if (!mParams.contains(key))
hgs
parents:
diff changeset
   187
    {
hgs
parents:
diff changeset
   188
        // lazy-fetch params implementation goes here.
hgs
parents:
diff changeset
   189
        // for instance if Icon is requested, request for the icons here.
hgs
parents:
diff changeset
   190
        // however at this moment, all parameters should be present.
hgs
parents:
diff changeset
   191
        qFatal("SATAPP: SatAppAction::value - param missing: %s",
hgs
parents:
diff changeset
   192
            key.toLatin1().data());
hgs
parents:
diff changeset
   193
    }
hgs
parents:
diff changeset
   194
    return mParams[key];
hgs
parents:
diff changeset
   195
}
hgs
parents:
diff changeset
   196
hgs
parents:
diff changeset
   197
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   198
// SatAppAction::hasValue
hgs
parents:
diff changeset
   199
// ----------------------------------------------------------------------------
hgs
parents:
diff changeset
   200
//
hgs
parents:
diff changeset
   201
bool SatAppAction::hasValue(const QString& key)
hgs
parents:
diff changeset
   202
{
hgs
parents:
diff changeset
   203
    return mParams.contains(key);
hgs
parents:
diff changeset
   204
}
hgs
parents:
diff changeset
   205
hgs
parents:
diff changeset
   206
//End of file