idlehomescreen/examples/carouselwidgetexample/publisher/src/carouselpluginengine.cpp
author jake
Mon, 02 Aug 2010 12:02:47 +0300
branchRCL_3
changeset 29 d12a7ea0f775
permissions -rw-r--r--
Example applications for various Homescreen APIs.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
29
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
     1
/*
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
     2
* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
     3
* All rights reserved.
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
     4
* This component and the accompanying materials are made available
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
     6
* which accompanies this distribution, and is available
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
     8
*
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
     9
* Initial Contributors:
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    11
*
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    12
* Contributors:
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    13
*
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    14
* Description:  The engine class of MCS plugin. 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    15
*
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    16
*/
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    17
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    18
// System includes
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    19
#include <gulicon.h>
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    20
#include <gslauncher.h>
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    21
#include <mcsmenufilter.h>
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    22
#include <mcsmenuoperation.h>
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    23
#include <mcsmenuiconutility.h>
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    24
#include <bautils.h>
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    25
#include <StringLoader.h>
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    26
#include <aknnotedialog.h>
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    27
#include <mcspluginres.rsg>
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    28
#include <apgcli.h> 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    29
#include <apacmdln.h>
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    30
#include <gfxtranseffect/gfxtranseffect.h>      
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    31
#include <akntranseffect.h>
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    32
#include <schemehandler.h>
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    33
#include <viewcli.h>                // For CVwsSessionWrapper
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    34
#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    35
#include <viewclipartner.h>
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    36
#endif
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    37
#include <aisystemuids.hrh>
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    38
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    39
// User includes
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    40
#include "carouselpluginengine.h"
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    41
#include "carouselplugin.h"
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    42
#include "carouselplugindata.h"
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    43
#include "carouselpluginuids.hrh"
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    44
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    45
// Constants
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    46
_LIT( KMyMenuData, "matrixmenudata" );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    47
_LIT( KSkin,         "skin" );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    48
_LIT( KMif,          "mif" );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    49
_LIT( KResourceDrive, "Z:" );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    50
_LIT( KResourceFile, "mcspluginres.rsc" );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    51
_LIT( KResPath, "\\resource\\" );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    52
_LIT( KMMApplication, "mm://" );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    53
_LIT( KHideExit2, "&exit=hide" );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    54
_LIT( KSetFocusString, "!setfocus?applicationgroup_name=" );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    55
_LIT( KApplicationGroupName, "applicationgroup_name" );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    56
_LIT( KIcon, "icon" );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    57
_LIT( KMenuAttrUndefUid, "0x99999991" );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    58
_LIT( KMenuIconFile, "aimcsplugin.mif" );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    59
_LIT( KMenuBookmarkIconId, "16386" );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    60
_LIT( KMenuBookmarkMaskId, "16387" );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    61
_LIT( KMenuMailboxIconId, "16388" );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    62
_LIT( KMenuMailboxMaskId, "16389" );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    63
_LIT( KMenuTypeMailbox, "menu:mailbox" );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    64
_LIT( KPrefix, "0x" );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    65
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    66
const TUid KHomescreenUid = { AI_UID3_AIFW_COMMON };
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    67
const TUid KMMUid = { 0x101F4CD2 };
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    68
const TUid KMCSCmailUidValue = { 0x2001E277 };
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    69
const TUid KMCSCmailMailboxViewIdValue = { 0x2 };
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    70
const TUid KBrowserUid = { 0x10008D39 };
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    71
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    72
// ======== LOCAL FUNCTIONS ========
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    73
// ----------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    74
// NextIdToken
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    75
// ----------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    76
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    77
static TPtrC NextIdToken( TLex& aLexer )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    78
   {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    79
   aLexer.SkipSpace();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    80
   aLexer.Mark();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    81
  
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    82
   while( !aLexer.Eos() && !aLexer.Peek().IsSpace() && aLexer.Peek() != ')' )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    83
       {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    84
       aLexer.Inc();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    85
       }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    86
   
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    87
   return aLexer.MarkedToken();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    88
   }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    89
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    90
// ----------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    91
// Shows note dailog, with the given resource.
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    92
// ----------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    93
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    94
static void ShowNoteDlgL( TInt aResource )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    95
    {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    96
    HBufC* temp = StringLoader::LoadLC( aResource );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    97
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    98
    CAknNoteDialog* dialog = new (ELeave) CAknNoteDialog(
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
    99
    CAknNoteDialog::EConfirmationTone,
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   100
    CAknNoteDialog::ENoTimeout );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   101
    CleanupStack::PushL( dialog );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   102
    dialog->SetTextL( temp->Des() );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   103
    dialog->ExecuteDlgLD( R_MCS_DISABLE_OPEN_ITEM_DLG );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   104
    CleanupStack::Pop( dialog );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   105
    CleanupStack::PopAndDestroy( temp );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   106
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   107
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   108
// ----------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   109
// Parses uid in Hexadecimal format from the given string.
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   110
// ----------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   111
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   112
TUid ParseHexUidFromString(const TDesC& aUidString )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   113
    {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   114
    TUid uid( KNullUid ); 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   115
    const TInt pos( aUidString.FindF( KPrefix ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   116
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   117
    if ( pos != KErrNotFound )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   118
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   119
        TLex lex( aUidString.Mid( pos + KPrefix().Length() ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   120
        
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   121
        // Hex parsing needs unsigned int
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   122
        TUint32 value( 0 );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   123
        const TInt parseResult( lex.Val( value, EHex ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   124
        
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   125
        if ( parseResult == KErrNone )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   126
            {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   127
            TInt32 value32( value );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   128
            uid.iUid = value32;   
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   129
            }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   130
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   131
    return uid;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   132
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   133
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   134
// ----------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   135
// Start transition effect. User has launched the application with the given uid.
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   136
// ----------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   137
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   138
void StartEffect( TUid aUid )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   139
    {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   140
    //start a full screen effect
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   141
    GfxTransEffect::BeginFullScreen( 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   142
        AknTransEffect::EApplicationStart,
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   143
        TRect(), 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   144
        AknTransEffect::EParameterType, 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   145
        AknTransEffect::GfxTransParam( aUid,
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   146
        AknTransEffect::TParameter::EActivateExplicitContinue ));
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   147
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   148
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   149
// ============================ MEMBER FUNCTIONS ===============================
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   150
// ----------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   151
// CMCSPluginEngine::CMCSPluginEngine
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   152
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   153
// ----------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   154
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   155
CCarouselPluginEngine::CCarouselPluginEngine( CCarouselPlugin& aPlugin, 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   156
    const TDesC8& aInstanceUid ) 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   157
    : iPlugin( aPlugin ), iInstanceUid( aInstanceUid )    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   158
    {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   159
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   160
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   161
// ----------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   162
// CMCSPluginEngine::NewL
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   163
// 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   164
// ----------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   165
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   166
CCarouselPluginEngine* CCarouselPluginEngine::NewL( CCarouselPlugin& aPlugin, 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   167
    const TDesC8& aInstanceUid )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   168
    {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   169
    CCarouselPluginEngine* self = 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   170
        new( ELeave ) CCarouselPluginEngine( aPlugin, aInstanceUid );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   171
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   172
    CleanupStack::PushL( self );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   173
    self->ConstructL();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   174
    CleanupStack::Pop( self );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   175
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   176
    return self;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   177
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   178
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   179
// ----------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   180
// CMCSPluginEngine::ConstructL
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   181
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   182
// ----------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   183
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   184
void CCarouselPluginEngine::ConstructL()
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   185
    {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   186
    TFullName resourceFile( KResourceDrive );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   187
    resourceFile.Append( KResPath );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   188
    resourceFile.Append( KResourceFile );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   189
    BaflUtils::NearestLanguageFile(
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   190
        CCoeEnv::Static()->FsSession(),
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   191
        resourceFile );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   192
    iResourceOffset =
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   193
        CCoeEnv::Static()->AddResourceFileL( resourceFile );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   194
    InitL();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   195
    StartObservingL();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   196
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   197
    // Get "Undefined" item
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   198
    CMenuFilter* filter = CMenuFilter::NewL();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   199
    CleanupStack::PushL( filter );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   200
    filter->HaveAttributeL( KMenuAttrUid, KMenuAttrUndefUid );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   201
    iUndefinedItemHeader = FindMenuItemL( *filter );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   202
    CleanupStack::PopAndDestroy( filter );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   203
    iUndefinedItem = CMenuItem::OpenL( iMenu, iUndefinedItemHeader );    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   204
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   205
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   206
// ----------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   207
// CMCSPluginEngine::~CMCSPluginEngine
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   208
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   209
// ----------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   210
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   211
CCarouselPluginEngine::~CCarouselPluginEngine()
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   212
    {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   213
    StopObserving();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   214
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   215
    delete iPluginData;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   216
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   217
    // Notifier close has to be before iMenu close
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   218
    iNotifier.Close();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   219
    iMenu.Close();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   220
    delete iWatcher;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   221
    delete iNotifyWatcher;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   222
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   223
    CCoeEnv::Static()->DeleteResourceFile( iResourceOffset );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   224
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   225
    delete iUndefinedItem;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   226
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   227
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   228
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   229
// CMCSPluginEngine::InitL
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   230
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   231
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   232
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   233
void CCarouselPluginEngine::InitL()
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   234
    {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   235
    iMenu.OpenL( KMyMenuData );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   236
    iPluginData = CCarouselPluginData::NewL( *this, iInstanceUid );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   237
    iWatcher = CCarouselPluginWatcher::NewL( CCarouselPluginWatcher::EOperation );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   238
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   239
    TInt err( iNotifier.Open( iMenu ) ); 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   240
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   241
    if ( err == KErrNone )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   242
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   243
        iNotifyWatcher = CCarouselPluginWatcher::NewL( CCarouselPluginWatcher::ENotify );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   244
        
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   245
        iNotifier.Notify( 0,
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   246
            RMenuNotifier::EItemsAddedRemoved,
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   247
            iNotifyWatcher->iStatus );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   248
        iNotifyWatcher->WatchNotify( this );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   249
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   250
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   251
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   252
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   253
// CMCSPluginEngine::StartObservingL
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   254
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   255
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   256
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   257
void CCarouselPluginEngine::StartObservingL()
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   258
    {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   259
    // registering to mailbox db. changes observing
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   260
    iMsvSession = CMsvSession::OpenAsObserverL( *this );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   261
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   262
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   263
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   264
// CMCSPluginEngine::StopObserving
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   265
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   266
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   267
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   268
void CCarouselPluginEngine::StopObserving()
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   269
    {       
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   270
    delete iMsvSession;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   271
    iMsvSession = NULL;    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   272
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   273
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   274
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   275
// CMCSPluginEngine::MenuDataL
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   276
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   277
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   278
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   279
CCarouselData& CCarouselPluginEngine::MenuDataL( const TInt& aIndex )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   280
    {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   281
    return iPluginData->DataItemL( aIndex );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   282
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   283
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   284
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   285
// CMCSPluginEngine::MenuItemCount
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   286
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   287
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   288
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   289
TInt CCarouselPluginEngine::MenuItemCount()
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   290
    {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   291
    return iPluginData->DataCount();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   292
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   293
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   294
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   295
// CMCSPluginEngine::FindMenuItemL
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   296
// Returns the menu item header, which matches the given filter.
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   297
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   298
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   299
TMenuItem CCarouselPluginEngine::FindMenuItemL( CMenuFilter& aFilter )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   300
    {    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   301
    TMenuItem item;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   302
    const TInt root( iMenu.RootFolderL() );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   303
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   304
    RArray<TMenuItem> items;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   305
    CleanupClosePushL( items );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   306
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   307
    iMenu.GetItemsL( items, root, &aFilter, ETrue );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   308
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   309
    if ( items.Count() > 0 )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   310
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   311
        item = items[0];
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   312
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   313
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   314
    CleanupStack::PopAndDestroy( &items );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   315
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   316
    return item;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   317
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   318
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   319
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   320
// CMCSPluginEngine::FetchMenuItemL
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   321
// Returns the actual menu item for the given header.
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   322
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   323
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   324
CMenuItem* CCarouselPluginEngine::FetchMenuItemL( CCarouselData& aData )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   325
    {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   326
    CMenuItem* item = NULL;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   327
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   328
    TRAP_IGNORE( item = CMenuItem::OpenL( iMenu, aData.MenuItem().Id() ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   329
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   330
    if( item )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   331
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   332
        return item; 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   333
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   334
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   335
    if( aData.MenuItem().Type() == KMenuTypeUrl )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   336
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   337
        item = CreateBkmItemL( aData );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   338
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   339
    else if( aData.MenuItem().Type() == KMenuTypeMailbox )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   340
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   341
        item = CreateMailboxItemL( aData);
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   342
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   343
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   344
    return item;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   345
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   346
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   347
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   348
// 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   349
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   350
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   351
CMenuItem* CCarouselPluginEngine::CreateBkmItemL( CCarouselData& aData )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   352
    {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   353
    CMenuItem* item( NULL );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   354
    if( aData.MenuItem().Id() != KErrNotFound )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   355
        {        
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   356
        item = CMenuItem::CreateL( iMenu, KMenuTypeUrl, 0, 0 );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   357
        CleanupStack::PushL( item );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   358
        item->SetAttributeL( KMenuAttrLongName, aData.Name() );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   359
        item->SetAttributeL( KMenuAttrIconFile, KMenuIconFile );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   360
        item->SetAttributeL( KMenuAttrIconId, KMenuBookmarkIconId );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   361
        item->SetAttributeL( KMenuAttrMaskId, KMenuBookmarkMaskId );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   362
        CleanupStack::Pop( item );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   363
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   364
    return item;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   365
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   366
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   367
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   368
// 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   369
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   370
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   371
CMenuItem* CCarouselPluginEngine::CreateMailboxItemL( CCarouselData& aData )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   372
    {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   373
    CMenuItem* item( NULL );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   374
    if( aData.MenuItem().Id() != KErrNotFound )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   375
        {   
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   376
        item = CMenuItem::CreateL( iMenu, KMenuTypeMailbox, 0, 0 );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   377
        CleanupStack::PushL( item );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   378
        item->SetAttributeL( KMenuAttrLongName, aData.Name() );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   379
        item->SetAttributeL( KMenuAttrIconFile, KMenuIconFile );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   380
        item->SetAttributeL( KMenuAttrIconId, KMenuMailboxIconId );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   381
        item->SetAttributeL( KMenuAttrMaskId, KMenuMailboxMaskId );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   382
        CleanupStack::Pop( item );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   383
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   384
    return item;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   385
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   386
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   387
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   388
// CMCSPluginEngine::ItemIconL
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   389
// Returns MCS default icon if attribute is 'icon' else parses the
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   390
// skin definition from attribute and sets attributes to aMenuItem.
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   391
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   392
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   393
CGulIcon* CCarouselPluginEngine::ItemIconL( CMenuItem* aMenuItem, 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   394
    const TDesC& aAttr )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   395
    {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   396
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   397
    CMenuItem* menuItem;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   398
  
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   399
    // check if item exists in MCS
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   400
    if ( aMenuItem )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   401
        { 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   402
        TUint32 flags = aMenuItem->Flags();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   403
        TUint32 isHidden = flags & TMenuItem::EHidden;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   404
        TUint32 isMissing = flags & TMenuItem::EMissing;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   405
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   406
        if ( iUndefinedItem && ( isHidden || isMissing ) )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   407
            {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   408
            menuItem = iUndefinedItem;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   409
            }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   410
        else
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   411
            {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   412
            menuItem = aMenuItem;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   413
            }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   414
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   415
    else 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   416
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   417
        // item not found in MCS. Use Undefined Icon
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   418
        menuItem = iUndefinedItem;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   419
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   420
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   421
    CAknIcon* icon( NULL );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   422
    CGulIcon* gIcon( NULL );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   423
    TBool exists( ETrue );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   424
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   425
    if ( aAttr != KIcon )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   426
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   427
        // Resolve secondary icon definition from attribute
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   428
        TPtrC iconDef( menuItem->GetAttributeL( aAttr, exists ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   429
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   430
        if ( exists )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   431
            {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   432
            exists = ConstructMenuItemForIconL( iconDef, *menuItem );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   433
            }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   434
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   435
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   436
    if ( exists )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   437
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   438
        icon = MenuIconUtility::GetItemIconL( *menuItem );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   439
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   440
        if ( icon )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   441
            {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   442
            CleanupStack::PushL( icon );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   443
            
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   444
            gIcon = CGulIcon::NewL( icon->Bitmap(), icon->Mask() );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   445
            
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   446
            // Detach and delete
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   447
            icon->SetBitmap( NULL );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   448
            icon->SetMask( NULL );    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   449
            
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   450
            CleanupStack::PopAndDestroy( icon );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   451
            }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   452
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   453
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   454
    return gIcon;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   455
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   456
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   457
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   458
// CMCSPluginEngine::ItemTextL
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   459
// Returns text string for the given attribute
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   460
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   461
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   462
TPtrC CCarouselPluginEngine::ItemTextL( CMenuItem* aMenuItem, const TDesC& aAttr )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   463
    {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   464
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   465
    CMenuItem* menuItem;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   466
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   467
    // check if item exists in MCS
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   468
    if ( aMenuItem )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   469
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   470
        TUint32 flags = aMenuItem->Flags();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   471
        TUint32 isHidden = flags & TMenuItem::EHidden;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   472
        TUint32 isMissing = flags & TMenuItem::EMissing;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   473
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   474
        // if item is hidden or missing (mmc card removed)
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   475
        // use "Undefined" text instead
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   476
        if ( iUndefinedItem && ( isHidden || isMissing ) )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   477
            {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   478
            menuItem = iUndefinedItem;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   479
            }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   480
        else
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   481
            {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   482
            menuItem = aMenuItem;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   483
            }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   484
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   485
    else 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   486
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   487
        // item not found in MCS. Use "Undefined" text
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   488
        menuItem = iUndefinedItem;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   489
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   490
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   491
    TBool exists( KErrNotFound );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   492
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   493
    TPtrC name( menuItem->GetAttributeL( aAttr, exists ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   494
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   495
    if ( exists )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   496
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   497
        return name;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   498
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   499
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   500
    return KNullDesC();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   501
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   502
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   503
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   504
// CMCSPluginEngine::LaunchItemL
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   505
// Calls the open command for the given menu item header
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   506
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   507
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   508
void CCarouselPluginEngine::LaunchItemL( const TInt& aIndex )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   509
    {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   510
    if ( iBackupRestore )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   511
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   512
        ShowNoteDlgL( R_MCS_DISABLE_OPEN_ITEM ); 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   513
        return;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   514
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   515
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   516
    CCarouselData& dataItem( iPluginData->DataItemL( aIndex ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   517
    // run item based on its type
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   518
    TPtrC type( dataItem.MenuItem().Type());
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   519
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   520
    // run folder
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   521
    if ( type == KMenuTypeFolder )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   522
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   523
        LaunchFolderItemL( dataItem );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   524
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   525
    else if( type == KMenuTypeUrl )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   526
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   527
        LaunchBookmarkItemL( dataItem );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   528
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   529
    else if( type == KMenuTypeMailbox )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   530
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   531
        LaunchMailboxItemL( dataItem );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   532
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   533
    else
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   534
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   535
        LaunchMCSItemL( dataItem );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   536
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   537
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   538
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   539
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   540
// 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   541
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   542
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   543
void CCarouselPluginEngine::LaunchFolderItemL( CCarouselData& aData )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   544
    {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   545
    CMenuItem* item = NULL;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   546
    TRAP_IGNORE( item = CMenuItem::OpenL( iMenu, aData.MenuItem().Id() ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   547
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   548
    // item does not exist at all in MCS
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   549
    if ( item == NULL )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   550
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   551
        ShowNoteDlgL( R_MCS_DISABLE_OPEN_ITEM_MISSING );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   552
        return;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   553
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   554
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   555
    CleanupStack::PushL( item );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   556
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   557
    StartEffect( KMMUid );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   558
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   559
    // message for MM application
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   560
    HBufC8* message; 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   561
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   562
    // prepare message for launching folder
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   563
    TBool hasApplicationGroupName( EFalse );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   564
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   565
    TPtrC applicationGroupName( item->GetAttributeL(
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   566
        KApplicationGroupName, hasApplicationGroupName ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   567
                                                      
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   568
    if ( !hasApplicationGroupName )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   569
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   570
        return;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   571
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   572
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   573
    message = HBufC8::NewLC( KMMApplication().Length() + 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   574
                             KSetFocusString().Length() +
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   575
                             applicationGroupName.Length() + 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   576
                             KHideExit2().Length() );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   577
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   578
    message->Des().Copy( KMMApplication );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   579
    message->Des().Append( KSetFocusString );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   580
    message->Des().Append( applicationGroupName );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   581
    message->Des().Append( KHideExit2 );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   582
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   583
    // find MM application
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   584
    TApaTaskList taskList( CCoeEnv::Static()->WsSession() );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   585
    TApaTask task( taskList.FindApp( KMMUid ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   586
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   587
    if ( task.Exists() )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   588
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   589
        // MM is already running in background - send APA Message
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   590
        task.SendMessage( 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   591
            TUid::Uid( KUidApaMessageSwitchOpenFileValue ), *message );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   592
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   593
    else
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   594
        { 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   595
        // MM not running yet - use Command Line Tail
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   596
        RApaLsSession appArcSession;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   597
        CleanupClosePushL( appArcSession );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   598
        
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   599
        User::LeaveIfError( appArcSession.Connect() );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   600
        
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   601
        TApaAppInfo appInfo;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   602
        TInt err( appArcSession.GetAppInfo( appInfo, KMMUid ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   603
        
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   604
        if ( err == KErrNone )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   605
            {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   606
            CApaCommandLine* cmdLine = CApaCommandLine::NewLC();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   607
            cmdLine->SetExecutableNameL( appInfo.iFullName );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   608
            cmdLine->SetCommandL( EApaCommandRun );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   609
            cmdLine->SetTailEndL( *message );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   610
            appArcSession.StartApp( *cmdLine );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   611
            CleanupStack::PopAndDestroy( cmdLine );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   612
            }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   613
        CleanupStack::PopAndDestroy( &appArcSession ); 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   614
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   615
    CleanupStack::PopAndDestroy( message );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   616
    CleanupStack::PopAndDestroy( item );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   617
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   618
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   619
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   620
// 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   621
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   622
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   623
void CCarouselPluginEngine::LaunchBookmarkItemL( CCarouselData& aData )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   624
    {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   625
    StartEffect( KBrowserUid );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   626
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   627
    CSchemeHandler* urlHandler = CSchemeHandler::NewL( aData.Value());    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   628
    CleanupStack::PushL( urlHandler );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   629
    urlHandler->HandleUrlStandaloneL();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   630
    CleanupStack::PopAndDestroy( urlHandler );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   631
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   632
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   633
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   634
// 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   635
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   636
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   637
void CCarouselPluginEngine::LaunchMailboxItemL( CCarouselData& aData )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   638
    {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   639
    TInt id( aData.MenuItem().Id());
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   640
    if ( id == KErrNotFound )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   641
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   642
        ShowNoteDlgL( R_MCS_DISABLE_OPEN_ITEM_MISSING );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   643
        return;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   644
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   645
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   646
    StartEffect( KMCSCmailUidValue );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   647
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   648
    TUid uId = TUid::Uid( id );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   649
    const TVwsViewId viewId( KMCSCmailUidValue, KMCSCmailMailboxViewIdValue );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   650
    CVwsSessionWrapper* vwsSession = CVwsSessionWrapper::NewL();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   651
    vwsSession->CreateActivateViewEvent( viewId, uId, KNullDesC8() );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   652
    delete vwsSession;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   653
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   654
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   655
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   656
// 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   657
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   658
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   659
void CCarouselPluginEngine::LaunchMCSItemL( CCarouselData& aData )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   660
    {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   661
    if( iWatcher->IsActive())
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   662
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   663
        return;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   664
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   665
    CMenuItem* item = NULL;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   666
    TRAP_IGNORE( item = CMenuItem::OpenL( iMenu, aData.MenuItem().Id() ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   667
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   668
    // item does not exist at all in MCS
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   669
    if ( item == NULL )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   670
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   671
        ShowNoteDlgL( R_MCS_DISABLE_OPEN_ITEM_MISSING );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   672
        return;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   673
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   674
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   675
    CleanupStack::PushL( item );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   676
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   677
    TBool attrExists = ETrue;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   678
    TPtrC uid = item->GetAttributeL( KMenuAttrUid, attrExists );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   679
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   680
    // trying to run hidden or missing application (e.g. unistalled app 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   681
    // or app on MMC which was removed )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   682
    // -> We display a note for a user that this is not possible¨
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   683
    TUint32 isHidden = item->Flags() & TMenuItem::EHidden;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   684
    TUint32 isMissing = item->Flags() & TMenuItem::EMissing;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   685
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   686
    if ( ( attrExists && uid == KMenuAttrUndefUid ) || isHidden || isMissing )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   687
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   688
        CleanupStack::PopAndDestroy( item );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   689
        ShowNoteDlgL( R_MCS_DISABLE_OPEN_ITEM_MISSING );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   690
        return;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   691
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   692
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   693
    if ( attrExists )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   694
        {      
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   695
        StartEffect( ParseHexUidFromString( uid ));
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   696
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   697
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   698
    // run application/shortcut
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   699
    CMenuOperation* operation( item->HandleCommandL(
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   700
        KMenuCmdOpen, KNullDesC8, iWatcher->iStatus ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   701
    iWatcher->Watch( operation );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   702
    CleanupStack::PopAndDestroy( item );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   703
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   704
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   705
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   706
// CMCSPluginEngine::HandleNotifyL
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   707
// Handle the change in Menu Content
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   708
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   709
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   710
void CCarouselPluginEngine::HandleNotifyL()
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   711
    {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   712
    TInt count( iPluginData->DataCount() );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   713
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   714
    for ( TInt i = 0; i < count; i++ )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   715
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   716
        CCarouselData& data( iPluginData->DataItemL( i ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   717
        data.SetDirty( ETrue );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   718
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   719
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   720
    iPlugin.PublishL();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   721
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   722
    // Notification must be activated again
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   723
    iNotifyWatcher->Cancel();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   724
    iNotifier.Notify( 0,
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   725
        RMenuNotifier::EItemsAddedRemoved,
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   726
        iNotifyWatcher->iStatus );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   727
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   728
    iNotifyWatcher->WatchNotify( this );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   729
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   730
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   731
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   732
// CMCSPluginEngine::HandleSessionEventL
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   733
// Handles an event from the message server.
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   734
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   735
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   736
void CCarouselPluginEngine::HandleSessionEventL( TMsvSessionEvent aEvent, 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   737
    TAny* aArg1, TAny* /*aArg2*/, TAny* /*aArg3*/)
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   738
    {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   739
    switch ( aEvent )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   740
        {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   741
        case EMsvEntriesDeleted:
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   742
            {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   743
            CMsvEntrySelection* sel = static_cast<CMsvEntrySelection*>( aArg1 );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   744
            TInt count( sel->Count());
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   745
            for( TInt i = 0; i < count; i++ )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   746
                {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   747
                iPluginData->RemoveDataL( sel->At( i ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   748
                }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   749
            }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   750
            break;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   751
        default:
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   752
            break;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   753
        }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   754
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   755
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   756
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   757
// CMCSPluginEngine::SetBackupRestore
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   758
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   759
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   760
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   761
void CCarouselPluginEngine::SetBackupRestore( TBool aBackupRestore )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   762
    {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   763
    iBackupRestore = aBackupRestore;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   764
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   765
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   766
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   767
// CMCSPluginEngine::ShowSettingsL
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   768
// Launch General Settings plugin
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   769
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   770
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   771
void CCarouselPluginEngine::ShowSettingsL()
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   772
    { 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   773
    TUid uid = {AI_UID_ECOM_IMPLEMENTATION_SETTINGS_MCSPLUGIN};
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   774
    
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   775
    CGSLauncher* launcher = CGSLauncher::NewLC();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   776
    launcher->LaunchGSViewL ( uid, KHomescreenUid, iInstanceUid );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   777
    CleanupStack::PopAndDestroy( launcher );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   778
    }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   779
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   780
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   781
// CMCSPluginEngine::ConstructMenuItemForIconL
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   782
// Syntax: skin(major minor):mif(filename bimapId maskId)
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   783
// ---------------------------------------------------------------------------
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   784
//
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   785
TBool CCarouselPluginEngine::ConstructMenuItemForIconL( const TDesC& aPath, 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   786
    CMenuItem& aMenuItem )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   787
   {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   788
   TInt pos( aPath.Locate( ':' ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   789
   if ( pos == KErrNotFound )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   790
       {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   791
       pos = aPath.Length();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   792
       }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   793
   TPtrC skin( aPath.Left( pos ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   794
   TInt sf( skin.FindF( KSkin ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   795
   
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   796
   if ( sf == KErrNotFound )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   797
       {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   798
       return EFalse;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   799
       }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   800
   
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   801
   TPtrC temp( skin.Mid( sf + KSkin().Length() ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   802
   TLex input( temp );   
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   803
   input.SkipSpace();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   804
   
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   805
   if ( !input.Eos() && input.Peek() == '(' )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   806
       {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   807
       input.Inc();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   808
       }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   809
   TPtrC majorId( NextIdToken( input ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   810
   TPtrC minorId( NextIdToken( input ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   811
   
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   812
   aMenuItem.SetAttributeL( KMenuAttrIconSkinMajorId, majorId );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   813
   aMenuItem.SetAttributeL( KMenuAttrIconSkinMinorId, minorId );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   814
   
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   815
   if ( aPath.Length() > pos && 
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   816
      ( aPath.Mid( pos + 1 ).FindF( KMif ) != KErrNotFound ) )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   817
       {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   818
       TPtrC mif( aPath.Mid( pos + 1 ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   819
       TInt mf( mif.FindF( KMif ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   820
       
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   821
       TLex input1( mif.Mid( mf + KMif().Length() ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   822
       input1.SkipSpace();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   823
       
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   824
       if ( !input1.Eos() && input1.Peek() == '(' )
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   825
          {
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   826
          input1.Inc();
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   827
          }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   828
       
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   829
       TPtrC file( NextIdToken( input1 ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   830
       TPtrC bitmapId( NextIdToken( input1 ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   831
       TPtrC maskId( NextIdToken( input1 ) );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   832
       
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   833
       aMenuItem.SetAttributeL( KMenuAttrIconFile, file );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   834
       aMenuItem.SetAttributeL( KMenuAttrIconId, bitmapId );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   835
       aMenuItem.SetAttributeL( KMenuAttrMaskId, maskId );
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   836
       }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   837
   
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   838
   return ETrue;
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   839
   }
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   840
d12a7ea0f775 Example applications for various Homescreen APIs.
jake
parents:
diff changeset
   841
// End of file