idlefw/plugins/mcsplugin/settings/src/mcspluginsettingsmodel.cpp
changeset 85 7feec50967db
parent 4 1a2a00e78665
child 86 e492551a0d54
--- a/idlefw/plugins/mcsplugin/settings/src/mcspluginsettingsmodel.cpp	Tue Feb 02 00:23:10 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,596 +0,0 @@
-/*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  MCS settings plug-in model.
-*
-*/
-
-#include <eikenv.h>
-#include <itemmap.h>
-#include <mhomescreensettingsif.h>
-
-#include <aistrcnv.h>
-#include <StringLoader.h>
-#include <uri16.h>
-#include <mcspluginsettingsres.rsg>
-
-
-#include "mcspluginsettings.h"
-#include "mcspluginsettingsmodel.h"
-#include "mcspluginsettingscontainer.h"
-
-
-#include "debug.h"
-
-#include <mcsmenuitem.h>
-
-/**
- * Line format for the settings list box
- */
-_LIT(KSettingListboxLineFormat, " \t%S\t\t%S");
-_LIT( KMenuAttrParam, "param");
-_LIT( KMenuAttrLocked, "locked");
-_LIT8( KTrue, "true" );
-_LIT8( KAppUid, "271012080" );
-_LIT8( KProperNameType, "type" );
-_LIT8( KProperNameParam, "param" );
-_LIT8( KProperNameUid, "uid" );
-_LIT8( KProperNameView, "view" );
-_LIT8( KProperNameLocked, "locked" );
-_LIT8( KProperValueFolder, "folder" );
-_LIT8( KProperValueSuite, "suite" );
-_LIT8( KProperValueBookmark, "bookmark" );
-_LIT8( KProperValueAppl, "application" );
-
-
-
-using namespace HSPluginSettingsIf;
-
-// -----------------------------------------------------------------------------
-// Creates a formatted listbox line.
-// -----------------------------------------------------------------------------
-//
-TPtrC CMCSPluginSettingsModel::ListBoxLineL( const TDesC& aCaption, TInt aIndex ) const
-{
-    HBufC* title = StringLoader::LoadLC(
-            R_AI_MCS_SETTINGS_TXT_LINKN, aIndex + 1, iEnv );
-
-   TPtrC caption;
-   caption.Set(aCaption);
-
-   TUriParser parser;
-   TInt err = parser.Parse(aCaption);
-   if (err == KErrNone)
-   {
-       // Remove scheme from the url.
-       const TDesC& host = parser.Extract(EUriHost);
-       if (host.Length())
-       {
-           caption.Set(host);
-       }
-   }
-
-   // Format (" \t%S\t\t%S") without %S characters.
-   TInt formatLength = KSettingListboxLineFormat().Length();
-
-   HBufC* listBoxLine =
-       HBufC::NewLC(title->Length() + caption.Length() + formatLength);
-
-   TPtr ptr = listBoxLine->Des();
-   ptr.Format(KSettingListboxLineFormat, title, &caption);
-
-   delete iListBoxLine;
-   iListBoxLine = NULL;
-   iListBoxLine = listBoxLine;
-   CleanupStack::Pop(listBoxLine);
-   CleanupStack::PopAndDestroy(title);
-   return *iListBoxLine;
-}
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// Two phased constructor
-// ---------------------------------------------------------------------------
-//
-CMCSPluginSettingsModel* CMCSPluginSettingsModel::NewL( CMCSPluginSettings& aPlugin,
-                                                        CCoeEnv* aEnv)
-{
-    CMCSPluginSettingsModel* self = new (ELeave) CMCSPluginSettingsModel(aPlugin, aEnv);
-
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-
-    return self;
-}
-
-// ---------------------------------------------------------------------------
-// First phase construction
-// ---------------------------------------------------------------------------
-//
-CMCSPluginSettingsModel::CMCSPluginSettingsModel( CMCSPluginSettings& aPlugin, 
-                                                  CCoeEnv* aEnv )
-                                                  : iPlugin( aPlugin ), 
-                                                    iEnv( aEnv )
-{
-}
-
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CMCSPluginSettingsModel::~CMCSPluginSettingsModel()
-{
-    delete iAppList;
-    delete iBkmList;
-    iSettings.Reset();
-    delete iPluginSettings;
-    delete iPluginId;
-    delete iListBoxLine;
-}
-
-// ---------------------------------------------------------------------------
-// Second phase construction
-// ---------------------------------------------------------------------------
-//
-void CMCSPluginSettingsModel::ConstructL()
-{
-    iAppList = CMCSPluginSettingsAppList::NewL();
-    iAppList->StartL();
-    iBkmList = CMCSPluginSettingsBkmList::NewL();
-}
-
-
-// ---------------------------------------------------------------------------
-// Gets the latest settings from HSPS and updates
-// ---------------------------------------------------------------------------
-//
-void CMCSPluginSettingsModel::UpdateSettingsL( const TDesC8& aPluginId )
-    {
-    if( !iPlugin.Activated() )
-        {
-        return;
-        }
-    if( !iPluginSettings )
-        {
-        // AILaunch uid in decimal format
-        iPluginSettings = CHomescreenSettings::NewL( KAppUid, aPluginId, this );
-        iPluginId = aPluginId.AllocL();
-        }
-
-    iSettings.Reset();
-    RPointerArray<CItemMap> settingItems;
-    CleanupClosePushL( settingItems );
-
-    iPluginSettings->GetSettingsL( *iPluginId, settingItems );
-
-    TInt count = settingItems.Count();
-    for ( TInt i = 0; i < count; i++ )
-        {
-        CItemMap* itemMap = settingItems[i];
-        RPointerArray<HSPluginSettingsIf::CPropertyMap> properties;
-        properties = itemMap->Properties();
-        TSettingItem item = ItemL( properties );
-        iSettings.AppendL( item );
-        }
-    CleanupStack::Pop( &settingItems );
-    settingItems.ResetAndDestroy();
-    }
-
-// ---------------------------------------------------------------------------
-// Tries to find menuitem which matches given HSPS entry
-// ---------------------------------------------------------------------------
-//
-TSettingItem CMCSPluginSettingsModel::ItemL( 
-                 RPointerArray<HSPluginSettingsIf::CPropertyMap>& aProperties )
-    {
-    TSettingItem setting = { KErrNotFound, EApplication , EFalse };
-
-    TSettingType type = SettingTypeL( aProperties );
-    if( type == EApplication )
-        {
-        setting = iAppList->FindItemL( aProperties );
-        }
-    else if( type == EBookmark )
-        {
-        setting = iBkmList->FindItemL( aProperties );
-        }
-    
-    setting.locked = SettingLockedL( aProperties );
-
-    return setting;
-    }
-
-// ---------------------------------------------------------------------------
-// Gets Type (application or bookmark) of given HSPS entry
-// ---------------------------------------------------------------------------
-//
-TSettingType CMCSPluginSettingsModel::SettingTypeL( 
-                RPointerArray<HSPluginSettingsIf::CPropertyMap>& aProperties )
-    {
-    TSettingType type( EApplication );
-
-    for( TInt i = 0; i < aProperties.Count(); i++ )
-        {
-        TPtrC8 name = aProperties[i]->Name();
-        if( name == KProperNameType )
-            {
-            TPtrC8 value = aProperties[i]->Value();
-            if( value == KProperValueBookmark )
-                {
-                type = EBookmark;
-                }
-            else
-                {
-                type = EApplication;
-                }
-            }
-        }
-
-    return type;
-    }
-
-// ---------------------------------------------------------------------------
-// Gets locking status of given HSPS entry
-// ---------------------------------------------------------------------------
-//
-TBool CMCSPluginSettingsModel::SettingLockedL( 
-                RPointerArray<HSPluginSettingsIf::CPropertyMap>& aProperties )
-    {
-        
-    for( TInt i = 0; i <aProperties.Count(); i++ )
-        {
-        TPtrC8 name = aProperties[i]->Name();
-        if( name == KProperNameLocked )
-            {
-            TPtrC8 value = aProperties[i]->Value();
-            if( value == KTrue )
-                {
-                return ETrue;
-                }
-            }
-        }   
-    
-    return EFalse;
-    }
-
-
-// ---------------------------------------------------------------------------
-// Saves menuitem to HSPS to the given shortcut index
-// ---------------------------------------------------------------------------
-//
-void CMCSPluginSettingsModel::SaveSettingsL( const TInt& aIndex, 
-                                             CMenuItem& aMenuItem )
-    {
-
-    if ( !iPluginSettings )
-        {
-        return;
-        }
-    RPointerArray<CItemMap> settingItems;
-    CleanupClosePushL( settingItems );
-    iPluginSettings->GetSettingsL( *iPluginId, settingItems );
-    if ( aIndex >= 0 && aIndex < settingItems.Count() )
-        {
-        TBool exists( EFalse );
-        CItemMap* itemMap = settingItems[ aIndex ];
-        RPointerArray<HSPluginSettingsIf::CPropertyMap> properties;
-        properties = itemMap->Properties();
-        for ( TInt i = 0; i < properties.Count(); i++ )
-            {
-            if ( properties[ i ]->Name() == KProperNameType )
-                {
-                TPtrC type = aMenuItem.Type();
-                if ( type == KMenuTypeUrl )
-                    {
-                    properties[ i ]->SetValueL( KProperValueBookmark );
-                    }
-                else if ( type == KMenuTypeFolder )
-                    {
-                    properties[ i ]->SetValueL( KProperValueFolder );
-                    }
-                else if ( type == KMenuTypeSuite )
-                    {
-                    properties[ i ]->SetValueL( KProperValueSuite );
-                    }
-                else
-                    {
-                    properties[ i ]->SetValueL( KProperValueAppl );
-                    }
-                }
-            else if ( properties[ i ]->Name() == KProperNameUid )
-                {
-                TPtrC uid = aMenuItem.GetAttributeL( KMenuAttrUid, exists );
-                if ( exists )
-                    {
-                    HBufC8* uid8( NULL );
-                    uid8 = AiUtility::CopyToBufferL( uid8, uid );
-                    CleanupStack::PushL( uid8 );
-                    properties[ i ]->SetValueL( *uid8 );
-                    CleanupStack::PopAndDestroy( uid8 );
-                    }
-                else
-                    {
-                    properties[ i ]->SetValueL( KNullDesC8 );
-                    }
-                }
-            else if ( properties[ i ]->Name() == KProperNameView )
-                {
-                TPtrC view = aMenuItem.GetAttributeL( KMenuAttrView, exists );
-                if( exists )
-                    {
-                    HBufC8* view8( NULL );
-                    view8 = AiUtility::CopyToBufferL( view8, view );
-                    CleanupStack::PushL( view8 );
-                    properties[i]->SetValueL( *view8 );
-                    CleanupStack::PopAndDestroy( view8 );
-                    }
-                else
-                    {
-                    properties[ i ]->SetValueL( KNullDesC8 );
-                    }
-                }
-            else if ( properties[ i ]->Name() == KProperNameParam )
-                {
-                TPtrC param = aMenuItem.GetAttributeL( KMenuAttrParam, exists );
-                TBool isFolder = EFalse;
-                TPtrC type = aMenuItem.Type();
-
-                // is the item folder or suite?
-
-                if ( type == KMenuTypeFolder )
-                    {
-                    isFolder = ETrue;
-                    }
-
-                if ( exists || isFolder )
-                    {
-                    // the folder id is stored 
-                    // in param attribute in HSPS
-                    if ( isFolder )
-                        {
-                        TBuf<8> number;
-                        number.Num( aMenuItem.Id() );
-                        param.Set( number );
-                        }
-
-                    HBufC8* param8( NULL );
-                    param8 = AiUtility::CopyToBufferL( param8, param );
-                    CleanupStack::PushL( param8 );
-                    properties[ i ]->SetValueL( *param8 );
-                    CleanupStack::PopAndDestroy( param8 );
-                    }
-                else
-                    {
-                    properties[ i ]->SetValueL( KNullDesC8 );
-                    }
-                }
-            else if ( properties[ i ]->Name() == KProperNameLocked )
-                {
-                TPtrC locked = aMenuItem.GetAttributeL( KMenuAttrLocked, exists );
-                if ( exists )
-                    {
-                    HBufC8* locked8( NULL );
-                    locked8 = AiUtility::CopyToBufferL( locked8, locked );
-                    CleanupStack::PushL( locked8 );
-                    properties[ i ]->SetValueL( *locked8 );
-                    CleanupStack::PopAndDestroy( locked8 );
-                    }
-                else
-                    {
-                    properties[i]->SetValueL( KNullDesC8 );
-                    }
-                }
-            }
-        }
- // ETrue tells that modified settings are stored also to plugin reference
-    iPluginSettings->SetSettingsL( *iPluginId, settingItems, ETrue );
-    CleanupStack::Pop( &settingItems );
-    settingItems.ResetAndDestroy();
-
-    }
-
-// ---------------------------------------------------------------------------
-// Updates settings container.
-// ---------------------------------------------------------------------------
-//
-void CMCSPluginSettingsModel::UpdateSettingsContainerL( const TDesC8& aPluginId )
-{
-    if (iContainer)
-    {
-        if (iContainer->IsChangeDialogShowing())
-        {
-            iContainer->CloseChangeDialog();
-        }
-    }
-
-    UpdateSettingsL( aPluginId );
-
-    if (iContainer)
-    {
-        iContainer->ResetCurrentListL(0);
-    }
-}
-
-// ---------------------------------------------------------------------------
-// From MHomeScreenSettingsObserver - handler for HSPS setting change
-// ---------------------------------------------------------------------------
-//
-TInt CMCSPluginSettingsModel::SettingsChangedL( const TDesC8& /*aEvent*/,  
-                                                const TDesC8& /*aPluginName*/,
-                                                const TDesC8& /*aPluginUid*/, 
-                                                const TDesC8& /*aPluginId*/ )
-    {
-    return KErrNone;
-    }
-
-// ---------------------------------------------------------------------------
-// From MDesCArray
-// Returns the number of descriptor elements in a descriptor array.
-// ---------------------------------------------------------------------------
-//
-TInt CMCSPluginSettingsModel::MdcaCount() const
-{
-    return iSettings.Count();
-}
-
-// ---------------------------------------------------------------------------
-// From MDesCArray
-// Indexes into a descriptor array.
-// ---------------------------------------------------------------------------
-//
-TPtrC CMCSPluginSettingsModel::MdcaPoint( TInt aIndex ) const
-{
-    if (aIndex < 0 || aIndex >= iSettings.Count())
-    {
-        TPtrC ret(KNullDesC);
-        return ret;
-    }
-    if ( iSettings[aIndex].type == EApplication )
-        {
-        const TDesC& caption = iAppList->MdcaPoint( iSettings[aIndex].id );
-        TPtrC line; 
-        TRAP_IGNORE( line.Set( ListBoxLineL( caption, aIndex ) ) )
-        return line; 
-        }
-    else
-        {
-        const TDesC& caption = iBkmList->MdcaPoint( iSettings[aIndex].id );
-        TPtrC line;
-        TRAP_IGNORE( line.Set( ListBoxLineL( caption, aIndex ) ) )
-        return line;
-        }
-}
-
-// ---------------------------------------------------------------------------
-// Returns a setting ID for the given index.
-// ---------------------------------------------------------------------------
-//
-TInt CMCSPluginSettingsModel::ItemId( TInt aIndex ) const
-{
-    if ( aIndex >= 0 && aIndex < iSettings.Count() )
-    {
-        return iSettings[ aIndex ].id;
-    }
-
-    return KErrNotFound;
-}
-
-// ---------------------------------------------------------------------------
-// Returns a pointer to setting item for the given index
-// ---------------------------------------------------------------------------
-//
-const TSettingItem CMCSPluginSettingsModel::Item( TInt aIndex ) const
-    {
-    TSettingItem setting = { KErrNotFound, EApplication, EFalse };
-
-    if ( aIndex >= 0 && aIndex < iSettings.Count() )
-        {
-        setting = iSettings[ aIndex ];
-        }
-
-    return setting;
-    }
-
-// ---------------------------------------------------------------------------
-// Replaces shortcut item at given index by a new one.
-// ---------------------------------------------------------------------------
-//
-TBool CMCSPluginSettingsModel::ReplaceItemL( const TInt& aSettingIndex, 
-                                             TInt aId,
-                                             TSettingType aType )
-    {
-    if (aSettingIndex >= 0 && aSettingIndex < iSettings.Count())
-        {
-        // Old setting type is bookmark. Remove bookmark item from MCS 
-        // if it was created in runtime.
-        if( iSettings[aSettingIndex].type == EBookmark )
-            {
-                iBkmList->RemoveMenuItemL( iSettings[aSettingIndex].id );
-            }
-
-        // Old setting type is application.
-        // Remove app item from MCS if it was created in runtime (mailbox).
-        if ( iSettings[ aSettingIndex ].type == EApplication )
-            {
-                iAppList->RemoveMenuItemL( iSettings[ aSettingIndex ].id );
-            }
-
-        iSettings[aSettingIndex].id = aId;
-        iSettings[aSettingIndex].type = aType;
-
-        if ( aType == EApplication )
-            {
-            CMenuItem& item = iAppList->ItemL( aId );
-            SaveSettingsL( aSettingIndex, item );
-            }
-        else
-            {
-            CMenuItem& item = iBkmList->ItemL( aId );
-            SaveSettingsL( aSettingIndex, item );
-            }
-
-        return ETrue;
-        }
-    return EFalse;
-    }
-
-// ---------------------------------------------------------------------------
-// Sets a container
-// ---------------------------------------------------------------------------
-//
-void CMCSPluginSettingsModel::SetContainer(CMCSPluginSettingsContainer* aContainer)
-{
-    iContainer = aContainer;
-}
-
-// ---------------------------------------------------------------------------
-// Returns application list
-// ---------------------------------------------------------------------------
-//
-CMCSPluginSettingsAppList* CMCSPluginSettingsModel::AppList()
-{
-    return iAppList;
-}
-
-// ---------------------------------------------------------------------------
-// Returns bookmarklist
-// ---------------------------------------------------------------------------
-//
-CMCSPluginSettingsBkmList* CMCSPluginSettingsModel::BkmList()
-{
-    return iBkmList;
-}
-
-// ---------------------------------------------------------------------------
-// Updates application list
-// ---------------------------------------------------------------------------
-//
-void CMCSPluginSettingsModel::UpdateAppListL()
-{
-    iAppList->StartL();
-}
-
-// ---------------------------------------------------------------------------
-// Updates bookmark list
-// ---------------------------------------------------------------------------
-//
-void CMCSPluginSettingsModel::UpdateBkmListL()
-{
-    delete iBkmList;
-    iBkmList = NULL;
-    iBkmList = CMCSPluginSettingsBkmList::NewL();
-}
-
-// End of File.