clientprovisioning/cpqtsp/src/CWPSaver.cpp
author hgs
Fri, 17 Sep 2010 19:58:05 +0530
changeset 62 03849bd79877
parent 47 d316aecb87fd
permissions -rw-r--r--
201037
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
45
0f9fc722d255 201021_01
hgs
parents:
diff changeset
     1
/*
0f9fc722d255 201021_01
hgs
parents:
diff changeset
     2
* ============================================================================
0f9fc722d255 201021_01
hgs
parents:
diff changeset
     3
*  Name        : CWPSaver.cpp
0f9fc722d255 201021_01
hgs
parents:
diff changeset
     4
*  Part of     : Provisioning / ProvisioningBC
0f9fc722d255 201021_01
hgs
parents:
diff changeset
     5
*  Description : Helper class for saving Provisioning settings. Provides a progress note.
62
hgs
parents: 47
diff changeset
     6
*  Version     : %version: 3 % << Don't touch! Updated by Synergy at check-out.
45
0f9fc722d255 201021_01
hgs
parents:
diff changeset
     7
*
0f9fc722d255 201021_01
hgs
parents:
diff changeset
     8
*  Copyright © 2002-2006 Nokia.  All rights reserved.
0f9fc722d255 201021_01
hgs
parents:
diff changeset
     9
*  This material, including documentation and any related computer
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    10
*  programs, is protected by copyright controlled by Nokia.  All
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    11
*  rights are reserved.  Copying, including reproducing, storing,
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    12
*  adapting or translating, any or all of this material requires the
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    13
*  prior written consent of Nokia.  This material also contains
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    14
*  confidential information which may not be disclosed to others
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    15
*  without the prior written consent of Nokia.
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    16
* ============================================================================
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    17
*/
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    18
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    19
// INCLUDE FILES
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    20
#include <commdb.h>
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    21
#include <CWPEngine.h>
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    22
#include <CWPAdapter.h>
47
d316aecb87fd 201025_02
hgs
parents: 45
diff changeset
    23
45
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    24
#include "CWPSaver.h"
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    25
#include <HbProgressDialog>
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    26
#include <HbAction>
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    27
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    28
// CONSTANTS
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    29
const TInt KMaxWaitTime = 2000000;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    30
const TInt KRetryCount = 5;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    31
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    32
// CLASS DECLARATION
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    33
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    34
// ========================== MEMBER FUNCTIONS ===============================
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    35
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    36
// ----------------------------------------------------------------------------
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    37
// C++ default constructor.
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    38
// ----------------------------------------------------------------------------
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    39
CWPSaver::CWPSaver( CWPEngine& aEngine, TBool aSetAsDefault )
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    40
                  : CActive( EPriorityStandard ),
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    41
                    iEngine( aEngine ), 
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    42
                    iSetAsDefault( aSetAsDefault ),
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    43
                    iCurrentItem( 0 ),
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    44
                    iResult( KErrNone )
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    45
    {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    46
    }
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    47
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    48
// ----------------------------------------------------------------------------
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    49
// CWPSaver::PrepareLC
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    50
// ----------------------------------------------------------------------------
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    51
//
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    52
void CWPSaver::PrepareLC()
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    53
    {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    54
    // Assume ownership of this.
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    55
    CleanupStack::PushL( this );
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    56
    iProgress = new HbProgressDialog(HbProgressDialog::WaitDialog);
62
hgs
parents: 47
diff changeset
    57
    iProgress->setText(hbTrId("txt_deviceupdate_dblist_config_set_val_saving"));
45
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    58
    iProgress->clearActions();   
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    59
    iProgress->show();
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    60
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    61
 }
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    62
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    63
// ----------------------------------------------------------------------------
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    64
// CWPSaver::ExecuteLD
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    65
// ----------------------------------------------------------------------------
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    66
//
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    67
TInt CWPSaver::ExecuteLD( TInt& aNumSaved, TBufC<256>& Value )
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    68
    {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    69
    PrepareLC();
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    70
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    71
    // Add us to active scheduler and make sure RunL() gets called.
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    72
    CActiveScheduler::Add( this );
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    73
    CompleteRequest();
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    74
    iWait.Start();
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    75
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    76
    // Progress note has been finished/cancelled. Cache the result
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    77
    // and delete this.
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    78
    TInt result( iResult );
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    79
    aNumSaved = iCurrentItem;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    80
    Value = iValue;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    81
    CleanupStack::PopAndDestroy(); // this
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    82
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    83
    return result;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    84
    }
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    85
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    86
// ----------------------------------------------------------------------------
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    87
// Destructor
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    88
// ----------------------------------------------------------------------------
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    89
CWPSaver::~CWPSaver()
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    90
    {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    91
    Cancel();
47
d316aecb87fd 201025_02
hgs
parents: 45
diff changeset
    92
  }
45
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    93
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    94
// ----------------------------------------------------------------------------
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    95
// CWPSaver::DoCancel
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    96
// ----------------------------------------------------------------------------
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    97
//
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    98
void CWPSaver::DoCancel()
0f9fc722d255 201021_01
hgs
parents:
diff changeset
    99
    {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   100
    }
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   101
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   102
// ----------------------------------------------------------------------------
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   103
// CWPSaver::RunL
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   104
// ----------------------------------------------------------------------------
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   105
//
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   106
void CWPSaver::RunL()
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   107
    {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   108
    // Choose whether to save or set as default
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   109
    TInt err( KErrNone );
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   110
    if( iSetAsDefault )
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   111
        {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   112
        TRAP( err, 
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   113
            if( iEngine.CanSetAsDefault( iCurrentItem ) )
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   114
                {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   115
                iEngine.SetAsDefaultL( iCurrentItem );
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   116
                } );
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   117
        }
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   118
    else
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   119
        {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   120
        TRAP(err, QT_TRYCATCH_LEAVING( iEngine.SaveL( iCurrentItem ) )); 
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   121
        }
47
d316aecb87fd 201025_02
hgs
parents: 45
diff changeset
   122
    if( err != KErrNone )
45
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   123
        {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   124
        // For all other errors, pass them through.
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   125
        iValue = iEngine.SummaryText(iCurrentItem);
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   126
        delete iProgress;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   127
        iProgress = NULL;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   128
        User::LeaveIfError( err );
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   129
        }
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   130
    // Succesful save, so reset retry count
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   131
    iRetryCount = 0;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   132
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   133
    // Normal progress
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   134
    if( iCurrentItem == iEngine.ItemCount()-1 )
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   135
        {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   136
        //iProgress->cancel();
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   137
        //iProgress->close();
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   138
        delete iProgress;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   139
        iProgress = NULL;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   140
        iWait.AsyncStop();       
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   141
        }
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   142
    else
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   143
        {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   144
        //CEikProgressInfo* progressInfo = iDialog->GetProgressInfoL();
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   145
        iCurrentItem++;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   146
        //progressInfo->SetAndDraw(iCurrentItem);
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   147
        CompleteRequest();
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   148
        }
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   149
    }
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   150
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   151
// ----------------------------------------------------------------------------
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   152
// CWPSaver::RunError
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   153
// ----------------------------------------------------------------------------
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   154
//
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   155
TInt CWPSaver::RunError( TInt aError )
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   156
    {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   157
    // There was a leave in RunL(). Store the error and
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   158
    // stop the dialog.
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   159
    iResult = aError;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   160
    iWait.AsyncStop();
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   161
    return KErrNone;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   162
    }
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   163
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   164
// ----------------------------------------------------------------------------
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   165
// CWPSaver::CompleteRequest
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   166
// ----------------------------------------------------------------------------
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   167
//
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   168
void CWPSaver::CompleteRequest()
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   169
    {
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   170
    // Schedule an immediate complete. Make sure that there
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   171
    // is no timer alive first
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   172
    Cancel();
47
d316aecb87fd 201025_02
hgs
parents: 45
diff changeset
   173
    //iRetryTimer->Cancel();
45
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   174
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   175
    SetActive();
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   176
    TRequestStatus* sp = &iStatus;
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   177
    User::RequestComplete( sp, KErrNone );
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   178
    }
0f9fc722d255 201021_01
hgs
parents:
diff changeset
   179