idlefw/plugins/shortcutplugin/src/caiscutsettingscontainer.cpp
branchRCL_3
changeset 9 d0529222e3f0
parent 4 1a2a00e78665
child 10 5ef93ea513cb
child 18 bd874ee5e5e2
--- a/idlefw/plugins/shortcutplugin/src/caiscutsettingscontainer.cpp	Tue Feb 02 00:23:10 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,488 +0,0 @@
-/*
-* Copyright (c) 2005-2006 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:  Shortcut settings plug-in container.
-*
-*/
-
-
-#include <aknlists.h>
-#include <AknWaitDialog.h>
-#include <aknnotewrappers.h>
-#include <eikbtgpc.h>
-#include <gslistbox.h>
-#include <gsfwviewuids.h>
-//#include <csxhelp/ai.hlp.hrh>
-#include <aknradiobuttonsettingpage.h>
-#include <akntextsettingpage.h>
-#include <centralrepository.h>
-#include <StringLoader.h>
-
-#include <aiscutsettingsres.rsg>
-#include <aiscuttexts.rsg>
-
-#include "caiscutsettingscontainer.h"
-#include "caiscutsettingsmodel.h"
-#include "caiscutsettingsbkmlist.h"
-#include "caiscutsettingsitem.h"
-#include "aiscutpluginprivatecrkeys.h"
-#include "aiscutdefs.h"
-
-const TUid KUidAI = { 0x101F8701 }; // Active Standby Shortcuts help uid
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutSettingsContainer::CAiScutSettingsContainer()
-{
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsContainer::ConstructL(const TRect& aRect)
-{
-    iListBox = new (ELeave) CAknSettingStyleListBox;
-    BaseConstructL(aRect, R_SCUT_SETTINGS_VIEW_TITLE, NULL);
-
-    iOldType = EAiScutSettingTypeUndefined;
-
-    CheckMiddleSoftkeyLabelL();
-
-    iModel->ActivateObservers(ETrue);
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-CAiScutSettingsContainer::~CAiScutSettingsContainer()
-{
-    HideWaitNoteDialog();
-}
-
-// ---------------------------------------------------------------------------
-// Sets pointer to settings plug-in model.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsContainer::SetModel(CAiScutSettingsModel* aModel)
-{
-    iModel = aModel;
-}
-
-// ---------------------------------------------------------------------------
-// Chandles a setting change command.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsContainer::HandleChangeCommandL()
-{       
-    if ( iChangeProcessInProgress )
-        {
-        return;
-        }
-    TBool changed = EFalse;
-    TInt current = iListBox->CurrentItemIndex();
-    CAiScutSettingsItem* item = iModel->Item(current);
-    if (!item)
-    {
-        return ;
-    }
-
-    TUint32 key = item->Key();
-    TBool locked = (0 != (key & KScutFlagBitLocked));
-
-    if (locked)
-    {
-        HBufC* text = iCoeEnv->AllocReadResourceLC(R_SCUT_SETTINGS_TXT_FIXED_ITEM);
-        CAknInformationNote* note = new (ELeave) CAknInformationNote(ETrue);
-        note->ExecuteLD(*text);
-        CleanupStack::PopAndDestroy(text);
-    }
-    else
-    {
-        TAiScutSettingType oldType = item->Type();
-        TInt newType = oldType;
-
-        CDesCArrayFlat* array = iCoeEnv->ReadDesC16ArrayResourceL(
-            R_SCUT_CHANGE_TO_PAGE_LBX);
-        CleanupStack::PushL(array);
-
-        CAknListQueryDialog* dialog = new(ELeave)CAknListQueryDialog(&newType);
-        CleanupStack::PushL(dialog);
-    	dialog->PrepareLC(R_SCUT_LISTQUERY_CHANGE_TO_PAGE);
-    	CleanupStack::Pop(dialog);
-        dialog->SetItemTextArray(array);
-	    dialog->SetOwnershipType(ELbmDoesNotOwnItemArray);
-	    iChangeProcessInProgress = ETrue;
-        if (dialog->RunLD())
-        {
-            item = iModel->Item(current);
-            if (newType == EAiScutSettingTypeUrl)
-            {
-                changed = HandleUrlChangeCommandL(*item, (newType != oldType));
-            }
-            else if (newType == EAiScutSettingTypeBookmark)
-            {
-                changed = HandleBookmarkChangeCommandL(*item, (newType != oldType));
-            }
-            else
-            {
-                changed = HandleAppListChangeCommandL(*item, (newType != oldType));
-            }
-            if ( changed )
-                {
-                ResetCurrentListL(current);    
-                }
-
-        }
-        iChangeProcessInProgress = EFalse;
-        CleanupStack::PopAndDestroy(array);
-    }
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutSettingsContainer::IsChangeDialogShowing()
-{
-    return (iAppListDialog || iBkmListDialog || iEditDialog);
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsContainer::CloseChangeDialog()
-{
-    TKeyEvent keyEvent;
-
-    keyEvent.iCode      = EKeyEscape;
-    keyEvent.iScanCode  = EStdKeyEscape;
-    keyEvent.iModifiers = 0;
-    keyEvent.iRepeats   = 0;
-
-    CCoeControl* dialog = NULL;
-
-    if (iAppListDialog)
-    {
-        dialog = static_cast<CCoeControl*>(iAppListDialog);
-    }
-    else if (iBkmListDialog)
-    {
-        dialog = static_cast<CCoeControl*>(iBkmListDialog);
-    }
-    else if (iEditDialog)
-    {
-        dialog = static_cast<CCoeControl*>(iEditDialog);
-    }
-
-    if (dialog)
-    {
-        TRAP_IGNORE(dialog->OfferKeyEventL(keyEvent, EEventKey));
-    }
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsContainer::ResetCurrentListL(TInt aIndex)
-{
-    if (iModel->MdcaCount() == 0)
-    {
-        iListBox->HandleItemRemovalL();
-    }
-    else
-    {
-        iListBox->HandleItemAdditionL();
-    }
-
-    iListBox->SetCurrentItemIndex(aIndex);
-
-    CheckMiddleSoftkeyLabelL();
-}
-
-// ---------------------------------------------------------------------------
-// From CGSBaseContainer
-// Constructs the settings listbox.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsContainer::ConstructListBoxL(TInt /*aResLbxId*/)
-{
-    iListBox->ConstructL(this, EAknListBoxSelectionList);
-
-    // Set empty listbox's text.
-    HBufC* text = iCoeEnv->AllocReadResourceLC(R_SCUT_SETTINGS_TXT_ALL_FIXED);
-    iListBox->View()->SetListEmptyTextL(*text);
-    CleanupStack::PopAndDestroy(text);
-
-    iListBox->Model()->SetItemTextArray(iModel);
-    iListBox->Model()->SetOwnershipType(ELbmDoesNotOwnItemArray);
-}
-
-// ---------------------------------------------------------------------------
-// Chandles a setting change command to select application from a list.
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutSettingsContainer::HandleAppListChangeCommandL(CAiScutSettingsItem& aItem,
-    TBool /*aNew*/)
-{
-    
-    TBool changed = EFalse;
-    
-    iChangeProcessStopped = EFalse;
-    
-    if (!iModel->AppList()->IsReady())
-    {
-        ShowWaitNoteDialogL(); // Blocks until applist reports that it is ready.
-    }
-    // If wait note was "killed" then don't continue the change process
-    // If the process is not stopped here it could lead to situation where
-    // self is deleted before the ShowWaitNoteDialogL() returns
-    if ( iChangeProcessStopped )
-        {
-        return EFalse;
-        }
-
-    TUint32 key = aItem.Key();
-    TBool optional  = (0 != (key & KScutFlagBitOptionallyVisible));
-    TBool scrollkey = (0 != ((key & 0xFFFF) < EAiScutSoftKeyLeft));
-
-    if (optional && scrollkey)
-    {
-        iModel->AppList()->AddExtraItemsL();
-    }
-
-    TInt index = iModel->AppList()->FindIndex(aItem);
-    TInt oldIndex = index;
-
-    iAppListDialog = new (ELeave) CAknRadioButtonSettingPage(
-        R_SCUT_SETTINGS_APPLIST_PAGE, index, iModel->AppList());
-
-    iAppListDialog->SetSettingTextL(aItem.Title());
-    iAppListDialog->ConstructL();
-
-    if (iAppListDialog->ExecuteLD(CAknSettingPage::EUpdateWhenChanged) &&
-        index != oldIndex)
-    {
-        TUid uid;
-        TPtrC params;
-        TPtrC caption;
-        TAiScutSettingType type;
-        if (iModel->AppList()->GetDataByIndex(index, uid, params, caption, type) == KErrNone)
-        {
-            if ( type == EAiScutSettingTypeUrl )
-                {
-                aItem.ChangeUrlL( params );
-                }
-            else
-                {                
-                aItem.ChangeApplicationL(uid, params, caption);
-                }
-            iModel->SaveItemL(aItem);
-            changed = ETrue;
-        }
-    }
-
-    if (optional && scrollkey)
-    {
-        iModel->AppList()->RemoveExtraItemsL();
-    }
-
-    iAppListDialog = NULL;
-    return changed;
-}
-
-// ---------------------------------------------------------------------------
-// Chandles a setting change command to select bookmark from a list.
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutSettingsContainer::HandleBookmarkChangeCommandL(CAiScutSettingsItem& aItem,
-    TBool /*aNew*/)
-{
-
-    TBool changed = EFalse;
-    iModel->BkmList()->GetBookmarkListL();
-    TInt index = iModel->BkmList()->FindIndex(aItem);
-    TInt oldIndex = index;
-
-    iBkmListDialog = new (ELeave) CAknRadioButtonSettingPage(
-        R_SCUT_SETTINGS_APPLIST_PAGE, index, iModel->BkmList());
-
-    iBkmListDialog->SetSettingTextL(aItem.Title());
-    iBkmListDialog->ConstructL();
-
-    if (iBkmListDialog->ExecuteLD(CAknSettingPage::EUpdateWhenChanged) &&
-        index != oldIndex)
-    {
-        TPtrC params;
-        TPtrC caption;
-        if (iModel->BkmList()->GetDataByIndex(index, params, caption) == KErrNone)
-        {
-            aItem.ChangeBookmarkL(params, caption);
-            iModel->SaveItemL(aItem);
-            changed = ETrue;
-        }
-    }
-
-    iBkmListDialog = NULL;
-    return changed;
-}
-
-// ---------------------------------------------------------------------------
-// Chandles a setting change command to edit an URL.
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutSettingsContainer::HandleUrlChangeCommandL(CAiScutSettingsItem& aItem,
-    TBool aNew)
-{
-    TBool changed = EFalse;
-    HBufC* newUrl = HBufC::NewLC(NCentralRepositoryConstants::KMaxUnicodeStringLength);
-    TPtr urlPtr = newUrl->Des();
-
-    if (!aNew)
-    {
-        urlPtr.Copy(aItem.Value());
-    }
-
-    if (EditTextL(R_SCUT_TYPE_URL_PAGE , urlPtr))
-    {
-        aItem.ChangeUrlL(urlPtr);
-        iModel->SaveItemL(aItem);
-        changed = ETrue;
-    }
-
-    CleanupStack::PopAndDestroy(newUrl);
-    return changed;
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TBool CAiScutSettingsContainer::EditTextL(TInt aResId, TDes& aDes)
-{
-    TBool ret = EFalse;
-
-    iEditDialog = new (ELeave) CAknTextSettingPage(aResId, aDes);
-
-    if (iEditDialog->ExecuteLD(CAknSettingPage::EUpdateWhenChanged))
-    {
-        if (aDes.Length())
-        {
-            ret = ETrue;
-        }
-    }
-
-    iEditDialog = NULL;
-
-    return ret;
-}
-
-// ---------------------------------------------------------------------------
-// Shows the wait note dialog.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsContainer::ShowWaitNoteDialogL()
-{
-    if (!iWaitDialog)
-    {
-        iWaitDialog = new (ELeave) CAknWaitDialog(
-            (reinterpret_cast<CEikDialog**> (&iWaitDialog)),
-            ETrue                                               // aVisibilityDelayOff
-        );
-        iWaitDialog->ExecuteLD(R_SCUT_WAIT_NOTE);
-    }
-}
-
-// ---------------------------------------------------------------------------
-// Hides the wait note dialog.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsContainer::HideWaitNoteDialog()
-{
-    if (iWaitDialog)
-    {
-        TRAP_IGNORE(iWaitDialog->ProcessFinishedL()); // deletes the dialog.
-        iWaitDialog = NULL;
-    }
-}
-
-void CAiScutSettingsContainer::StopShortcutChangeProcess()
-{
-    iChangeProcessStopped = ETrue;
-    HideWaitNoteDialog();
-    if ( IsChangeDialogShowing() )
-        {
-        CloseChangeDialog();    
-        }    
-}
-
-// ---------------------------------------------------------------------------
-// Gets Help
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsContainer::GetHelpContext(TCoeHelpContext& aContext) const
-{
-    aContext.iMajor   = KUidAI;
-    //aContext.iContext = KSET_HLP_PERSONAL_SHORTCUTS; // This is specified in HRH file
-}
-
-// ---------------------------------------------------------------------------
-//
-// ---------------------------------------------------------------------------
-//
-TKeyResponse CAiScutSettingsContainer::OfferKeyEventL(
-    const TKeyEvent& aKeyEvent, TEventCode aType)
-{
-    switch (aKeyEvent.iCode)
-    {
-    case EKeyUpArrow:
-    case EKeyDownArrow:
-        {
-            TKeyResponse resp = iListBox->OfferKeyEventL(aKeyEvent, aType);
-            return resp;
-        }
-
-    case EKeyLeftArrow:
-    case EKeyRightArrow:
-        // Listbox takes all event even if it doesn't use them:
-        return EKeyWasNotConsumed;
-		
-    default:
-        break;
-    }
-
-    // Now it's iListBox's job to process the key event
-    return iListBox->OfferKeyEventL(aKeyEvent, aType);
-}
-
-// ---------------------------------------------------------------------------
-// Checks if there is a need to update the middle softkey label.
-// ---------------------------------------------------------------------------
-//
-void CAiScutSettingsContainer::CheckMiddleSoftkeyLabelL()
-{
-    CEikButtonGroupContainer* cba = CEikButtonGroupContainer::Current();
-    if (cba)
-    {
-        cba->MakeCommandVisible(EAiScutSettingsCmdChange, (iModel->MdcaCount() != 0));
-    }
-}
-
-// End of File.