--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/filebrowser/src/FBSettingViewDlg.cpp Wed Sep 01 12:30:35 2010 +0100
@@ -0,0 +1,463 @@
+/*
+* 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:
+*
+*/
+
+
+// INCLUDE FILES
+#include "FBSettingViewDlg.h"
+#include "FBModel.h"
+#include "FB.hrh"
+#include "FBStd.h"
+#include <filebrowser.rsg>
+
+#include <aknsettingitemlist.h>
+#include <CAknMemorySelectionSettingItem.h>
+#include <aknlists.h>
+#include <akntitle.h>
+#include <aknnavi.h>
+#include <aknnavide.h>
+#include <StringLoader.h>
+#include <aknnotewrappers.h>
+
+// ===================================== MEMBER FUNCTIONS =====================================
+
+CFileBrowserSettingViewDlg* CFileBrowserSettingViewDlg::NewL(TFileBrowserSettings& aSettings)
+ {
+ CFileBrowserSettingViewDlg* self = new(ELeave) CFileBrowserSettingViewDlg(aSettings);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// --------------------------------------------------------------------------------------------
+
+CFileBrowserSettingViewDlg::~CFileBrowserSettingViewDlg()
+ {
+ // restore default navi pane
+ if (iNaviContainer)
+ iNaviContainer->Pop();
+
+ if (iSettingItemArray)
+ {
+ iSettingItemArray->ResetAndDestroy();
+ delete iSettingItemArray;
+ }
+
+ if (iDecoratedTabGroup)
+ delete iDecoratedTabGroup;
+ }
+
+// --------------------------------------------------------------------------------------------
+
+CFileBrowserSettingViewDlg::CFileBrowserSettingViewDlg(TFileBrowserSettings& aSettings) : iSettings(aSettings)
+ {
+ }
+
+// --------------------------------------------------------------------------------------------
+
+void CFileBrowserSettingViewDlg::ConstructL()
+ {
+ // construct a menu bar
+ CAknDialog::ConstructL(R_FILEBROWSER_SETTINGS_MENUBAR);
+
+ CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane();
+
+ // set empty navi pane label
+ iNaviContainer = static_cast<CAknNavigationControlContainer*>(sp->ControlL(TUid::Uid(EEikStatusPaneUidNavi)));
+ iNaviContainer->PushDefaultL();
+
+ // set title text
+ CAknTitlePane* tp = static_cast<CAknTitlePane*>( sp->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
+ tp->SetTextL( _L("Settings") );
+
+ // create a tab group
+ iDecoratedTabGroup = iNaviContainer->CreateTabGroupL(this);
+ iTabGroup = static_cast<CAknTabGroup*>(iDecoratedTabGroup->DecoratedControl());
+ iTabGroup->SetTabFixedWidthL(KTabWidthWithTwoLongTabs);
+
+ // add tabs
+ iTabGroup->AddTabL(ETabGeneral, _L("General"));
+ iTabGroup->AddTabL(ETabFileOps, _L("Operations"));
+ iTabGroup->SetActiveTabByIndex(ETabGeneral);
+
+ iNaviContainer->PushL( *iDecoratedTabGroup );
+ }
+
+// --------------------------------------------------------------------------------------------
+
+void CFileBrowserSettingViewDlg::HandleListBoxEventL(CEikListBox* /*aListBox*/, TListBoxEvent aEventType)
+ {
+ switch (aEventType)
+ {
+ case EEventEnterKeyPressed:
+ case EEventItemDoubleClicked:
+ ShowSettingPageL(EFalse);
+ break;
+ default:
+ break;
+ }
+ }
+
+// --------------------------------------------------------------------------------------------
+
+void CFileBrowserSettingViewDlg::TabChangedL(TInt /*aIndex*/)
+ {
+ iListBox->SetCurrentItemIndex(0);
+
+ SetVisibilitiesOfSettingItemsL();
+ }
+
+// --------------------------------------------------------------------------------------------
+
+void CFileBrowserSettingViewDlg::ProcessCommandL(TInt aCommandId)
+ {
+ CAknDialog::ProcessCommandL(aCommandId);
+
+ switch (aCommandId)
+ {
+ case EFileBrowserCmdSettingsChange:
+ ShowSettingPageL(ETrue);
+ break;
+ case EFileBrowserCmdSettingsExit:
+ TryExitL(EAknCmdExit);
+ break;
+ default:
+ break;
+ }
+ }
+
+// --------------------------------------------------------------------------------------------
+
+TKeyResponse CFileBrowserSettingViewDlg::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType)
+ {
+ if (iTabGroup == NULL)
+ {
+ return EKeyWasNotConsumed;
+ }
+
+ TInt active = iTabGroup->ActiveTabIndex();
+ TInt count = iTabGroup->TabCount();
+
+ switch ( aKeyEvent.iCode )
+ {
+ case EKeyLeftArrow:
+ if (active > 0)
+ {
+ active--;
+ iTabGroup->SetActiveTabByIndex(active);
+ TabChangedL(active);
+ }
+ break;
+
+ case EKeyRightArrow:
+ if((active + 1) < count)
+ {
+ active++;
+ iTabGroup->SetActiveTabByIndex(active);
+ TabChangedL(active);
+ }
+ break;
+ }
+
+ return CAknDialog::OfferKeyEventL(aKeyEvent, aType);
+ }
+
+// --------------------------------------------------------------------------------------------
+
+void CFileBrowserSettingViewDlg::PreLayoutDynInitL()
+ {
+ iListBox = static_cast<CAknSettingStyleListBox*>( Control(EFileBrowserSettingItemList) );
+ iListBox->SetMopParent(this);
+ iListBox->CreateScrollBarFrameL(ETrue);
+ iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto);
+ iListBox->SetListBoxObserver(this);
+
+ iSettingItemArray = new(ELeave) CAknSettingItemArray(16, EFalse, 0);
+
+ CTextListBoxModel* model = iListBox->Model();
+ model->SetItemTextArray(iSettingItemArray);
+ model->SetOwnershipType(ELbmDoesNotOwnItemArray);
+
+ UpdateListBoxL();
+ }
+
+// --------------------------------------------------------------------------------------------
+
+TBool CFileBrowserSettingViewDlg::OkToExitL(TInt aButtonId)
+ {
+ return CAknDialog::OkToExitL(aButtonId);
+ }
+
+// --------------------------------------------------------------------------------------------
+
+void CFileBrowserSettingViewDlg::ShowSettingPageL(TInt aCalledFromMenu)
+ {
+ TInt listIndex = iListBox->CurrentItemIndex();
+ TInt realIndex = iSettingItemArray->ItemIndexFromVisibleIndex(listIndex);
+ CAknSettingItem* item = iSettingItemArray->At(realIndex);
+ item->EditItemL(aCalledFromMenu);
+ item->StoreL();
+ SetVisibilitiesOfSettingItemsL();
+ DrawNow();
+
+ if (realIndex == ESettingListBypassPlatformSecuritySelection && iSettings.iBypassPlatformSecurity)
+ {
+ _LIT(KMessage, "Gives TCB rights to file operations, use at your own risk");
+ CAknInformationNote* note = new(ELeave) CAknInformationNote;
+ note->ExecuteLD(KMessage);
+ }
+ }
+
+// --------------------------------------------------------------------------------------------
+
+void CFileBrowserSettingViewDlg::SetVisibilitiesOfSettingItemsL()
+ {
+ if (iSettingItemArray->Count() > 0)
+ {
+ switch (iTabGroup->ActiveTabIndex())
+ {
+ case ETabGeneral:
+ {
+ ((*iSettingItemArray)[ESettingListDisplayModeSelection])->SetHidden(EFalse);
+ ((*iSettingItemArray)[ESettingListFileViewModeSelection])->SetHidden(EFalse);
+ ((*iSettingItemArray)[ESettingListShowSubdirectoryInfoSelection])->SetHidden(EFalse);
+ ((*iSettingItemArray)[ESettingListShowAssociatedIconsSelection])->SetHidden(EFalse);
+ ((*iSettingItemArray)[ESettingListRememberLastPathSelection])->SetHidden(EFalse);
+ ((*iSettingItemArray)[ESettingListRememberFolderSelection])->SetHidden(EFalse);
+ ((*iSettingItemArray)[ESettingListEnableToolbar])->SetHidden(EFalse);
+
+ ((*iSettingItemArray)[ESettingListSupportNetworkDrivesSelection])->SetHidden(ETrue);
+ ((*iSettingItemArray)[ESettingListBypassPlatformSecuritySelection])->SetHidden(ETrue);
+ ((*iSettingItemArray)[ESettingListRemoveFileLocksSelection])->SetHidden(ETrue);
+ ((*iSettingItemArray)[ESettingListIgnoreProtectionsAttsSelection])->SetHidden(ETrue);
+ ((*iSettingItemArray)[ESettingListRemoveROMWriteProtectionSelection])->SetHidden(ETrue);
+ }
+ break;
+
+ case ETabFileOps:
+ {
+ ((*iSettingItemArray)[ESettingListDisplayModeSelection])->SetHidden(ETrue);
+ ((*iSettingItemArray)[ESettingListFileViewModeSelection])->SetHidden(ETrue);
+ ((*iSettingItemArray)[ESettingListShowSubdirectoryInfoSelection])->SetHidden(ETrue);
+ ((*iSettingItemArray)[ESettingListShowAssociatedIconsSelection])->SetHidden(ETrue);
+ ((*iSettingItemArray)[ESettingListRememberLastPathSelection])->SetHidden(ETrue);
+ ((*iSettingItemArray)[ESettingListRememberFolderSelection])->SetHidden(ETrue);
+ ((*iSettingItemArray)[ESettingListEnableToolbar])->SetHidden(ETrue);
+
+ ((*iSettingItemArray)[ESettingListSupportNetworkDrivesSelection])->SetHidden(EFalse);
+ ((*iSettingItemArray)[ESettingListBypassPlatformSecuritySelection])->SetHidden(EFalse);
+ ((*iSettingItemArray)[ESettingListRemoveFileLocksSelection])->SetHidden(EFalse);
+ ((*iSettingItemArray)[ESettingListIgnoreProtectionsAttsSelection])->SetHidden(EFalse);
+ ((*iSettingItemArray)[ESettingListRemoveROMWriteProtectionSelection])->SetHidden(EFalse);
+ }
+ break;
+
+ default:
+ User::Panic(_L("TabIOOB"), 50);
+ break;
+ }
+
+ #ifdef FILEBROWSER_LITE
+ ((*iSettingItemArray)[ESettingListBypassPlatformSecuritySelection])->SetHidden(ETrue);
+ #endif
+
+ #if(defined __SERIES60_30__ || defined __SERIES60_31__ || defined __S60_32__)
+ ((*iSettingItemArray)[ESettingListEnableToolbar])->SetHidden(ETrue);
+ #else
+ if ( !AknLayoutUtils::PenEnabled() )
+ {
+ ((*iSettingItemArray)[ESettingListEnableToolbar])->SetHidden(ETrue);
+ }
+ #endif
+
+ iSettingItemArray->RecalculateVisibleIndicesL();
+ iListBox->HandleItemAdditionL();
+ iListBox->UpdateScrollBarsL();
+ }
+ }
+
+// --------------------------------------------------------------------------------------------
+
+void CFileBrowserSettingViewDlg::UpdateListBoxL()
+ {
+ iSettingItemArray->ResetAndDestroy();
+
+ // create items
+ TInt ordinal(0);
+
+ AddSettingItemL(ESettingListDisplayModeSelection,
+ R_DISPLAYMODESELECTION_SETTING_TITLE,
+ R_DISPLAYMODESELECTION_SETTING_PAGE,
+ R_DISPLAYMODESELECTION_SETTING_TEXTS,
+ ordinal++);
+
+ AddSettingItemL(ESettingListFileViewModeSelection,
+ R_FILEVIEWMODESELECTION_SETTING_TITLE,
+ R_FILEVIEWMODESELECTION_SETTING_PAGE,
+ R_FILEVIEWMODESELECTION_SETTING_TEXTS,
+ ordinal++);
+
+ AddSettingItemL(ESettingListShowSubdirectoryInfoSelection,
+ R_SHOWSUBDIRECTORYINFOSELECTION_SETTING_TITLE,
+ R_BINARY_SETTING_PAGE,
+ R_YESNO_BINARYSELECTION_TEXTS,
+ ordinal++);
+
+ AddSettingItemL(ESettingListShowAssociatedIconsSelection,
+ R_SHOWASSOCIATEDICONSSELECTION_SETTING_TITLE,
+ R_BINARY_SETTING_PAGE,
+ R_YESNO_BINARYSELECTION_TEXTS,
+ ordinal++);
+
+ AddSettingItemL(ESettingListRememberLastPathSelection,
+ R_REMEMBERLASTPATHSELECTION_SETTING_TITLE,
+ R_BINARY_SETTING_PAGE,
+ R_YESNO_BINARYSELECTION_TEXTS,
+ ordinal++);
+
+ AddSettingItemL(ESettingListRememberFolderSelection,
+ R_REMEMBERFOLDERSELECTION_SETTING_TITLE,
+ R_BINARY_SETTING_PAGE,
+ R_YESNO_BINARYSELECTION_TEXTS,
+ ordinal++);
+
+ AddSettingItemL(ESettingListEnableToolbar,
+ R_ENABLETOOLBAR_SETTING_TITLE,
+ R_BINARY_SETTING_PAGE,
+ R_YESNO_BINARYSELECTION_TEXTS,
+ ordinal++);
+
+ AddSettingItemL(ESettingListSupportNetworkDrivesSelection,
+ R_SUPPORTNETWORKDRIVESSELECTION_SETTING_TITLE,
+ R_BINARY_SETTING_PAGE,
+ R_YESNO_BINARYSELECTION_TEXTS,
+ ordinal++);
+
+ AddSettingItemL(ESettingListBypassPlatformSecuritySelection,
+ R_BYPASSPLATFORMSECURITYSELECTION_SETTING_TITLE,
+ R_BINARY_SETTING_PAGE,
+ R_YESNO_BINARYSELECTION_TEXTS,
+ ordinal++);
+
+ AddSettingItemL(ESettingListRemoveFileLocksSelection,
+ R_REMOVEFILELOCKSSELECTION_SETTING_TITLE,
+ R_BINARY_SETTING_PAGE,
+ R_YESNO_BINARYSELECTION_TEXTS,
+ ordinal++);
+
+ AddSettingItemL(ESettingListIgnoreProtectionsAttsSelection,
+ R_IGNOREPROTECTIONATTSSELECTION_SETTING_TITLE,
+ R_BINARY_SETTING_PAGE,
+ R_YESNO_BINARYSELECTION_TEXTS,
+ ordinal++);
+
+ AddSettingItemL(ESettingListRemoveROMWriteProtectionSelection,
+ R_REMOVEROMWRITEPROTECTIONSELECTION_SETTING_TITLE,
+ R_BINARY_SETTING_PAGE,
+ R_YESNO_BINARYSELECTION_TEXTS,
+ ordinal++);
+
+ SetVisibilitiesOfSettingItemsL();
+ }
+
+// --------------------------------------------------------------------------------------------
+
+void CFileBrowserSettingViewDlg::AddSettingItemL(TInt aId,
+ TInt aTitleResource,
+ TInt aSettingPageResource,
+ TInt aAssociatedResource,
+ TInt aOrdinal)
+ {
+ // create a setting item
+ CAknSettingItem* settingItem = NULL;
+
+ switch (aId)
+ {
+ case ESettingListDisplayModeSelection:
+ settingItem = new(ELeave) CAknEnumeratedTextPopupSettingItem(aId, iSettings.iDisplayMode);
+ break;
+
+ case ESettingListFileViewModeSelection:
+ settingItem = new(ELeave) CAknEnumeratedTextPopupSettingItem(aId, iSettings.iFileViewMode);
+ break;
+
+ case ESettingListShowSubdirectoryInfoSelection:
+ settingItem = new(ELeave) CAknBinaryPopupSettingItem(aId, iSettings.iShowSubDirectoryInfo);
+ break;
+
+ case ESettingListShowAssociatedIconsSelection:
+ settingItem = new(ELeave) CAknBinaryPopupSettingItem(aId, iSettings.iShowAssociatedIcons);
+ break;
+
+ case ESettingListRememberLastPathSelection:
+ settingItem = new(ELeave) CAknBinaryPopupSettingItem(aId, iSettings.iRememberLastPath);
+ break;
+
+ case ESettingListRememberFolderSelection:
+ settingItem = new(ELeave) CAknBinaryPopupSettingItem(aId, iSettings.iRememberFolderSelection);
+ break;
+
+ case ESettingListEnableToolbar:
+ settingItem = new(ELeave) CAknBinaryPopupSettingItem(aId, iSettings.iEnableToolbar);
+ break;
+
+ case ESettingListSupportNetworkDrivesSelection:
+ settingItem = new(ELeave) CAknBinaryPopupSettingItem(aId, iSettings.iSupportNetworkDrives);
+ break;
+
+ case ESettingListBypassPlatformSecuritySelection:
+ settingItem = new(ELeave) CAknBinaryPopupSettingItem(aId, iSettings.iBypassPlatformSecurity);
+ break;
+
+ case ESettingListRemoveFileLocksSelection:
+ settingItem = new(ELeave) CAknBinaryPopupSettingItem(aId, iSettings.iRemoveFileLocks);
+ break;
+
+ case ESettingListIgnoreProtectionsAttsSelection:
+ settingItem = new(ELeave) CAknBinaryPopupSettingItem(aId, iSettings.iIgnoreProtectionsAtts);
+ break;
+
+ case ESettingListRemoveROMWriteProtectionSelection:
+ settingItem = new(ELeave) CAknBinaryPopupSettingItem(aId, iSettings.iRemoveROMWriteProrection);
+ break;
+
+
+ default:
+ User::Panic(_L("NotSetItem"), 50);
+ break;
+ }
+
+ CleanupStack::PushL(settingItem);
+
+ // get title text
+ HBufC* itemTitle = StringLoader::LoadLC(aTitleResource);
+
+ // construct the setting item
+ settingItem->ConstructL(EFalse, aOrdinal, *itemTitle, NULL, aSettingPageResource,
+ EAknCtPopupSettingList, NULL, aAssociatedResource);
+
+ // append the setting item to settingitem array
+ iSettingItemArray->InsertL(aOrdinal, settingItem);
+
+ CleanupStack::PopAndDestroy(); //itemTitle
+ CleanupStack::Pop(); //settingItem
+ }
+
+// --------------------------------------------------------------------------------------------
+
+// End of File
+