--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/landmarksui/app/src/CLmkCategorySettingsView.cpp Wed Sep 01 12:31:27 2010 +0100
@@ -0,0 +1,346 @@
+/*
+ * Copyright (c) 2002 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: LandmarksUi Content File -
+ *
+ */
+
+// INCLUDE FILES
+#include <eikmenup.h>
+#include <eiktxlbx.h>
+#include <landmarks.rsg>
+#include "landmarks.hrh"
+#include "CLmkAppUi.h"
+#include "CLmkAppCategorySettingsImpl.h"
+#include "CLmkCategorySettingsContainer.h"
+#include "CLmkCategorySettingsView.h"
+#include "CLmkCategoryContentsView.h"
+
+// ================= MEMBER FUNCTIONS =======================
+// ----------------------------------------------------------------------------
+// CLmkCategorySettingsView::NewLC( MLmkKeyProcessor& aKeyProcessor )
+// Two-phased constructor.
+// ----------------------------------------------------------------------------
+//
+CLmkCategorySettingsView* CLmkCategorySettingsView::NewLC(
+ MLmkKeyProcessor& aKeyProcessor)
+ {
+ CLmkCategorySettingsView* self = new (ELeave) CLmkCategorySettingsView(
+ aKeyProcessor);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+// ----------------------------------------------------------------------------
+// CLmkCategorySettingsView::CLmkCategorySettingsView
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// ----------------------------------------------------------------------------
+//
+CLmkCategorySettingsView::CLmkCategorySettingsView(
+ MLmkKeyProcessor& aKeyProcessor) :
+ CLmkBaseView(aKeyProcessor)
+ {
+ }
+
+// ----------------------------------------------------------------------------
+// CLmkCategorySettingsView::ConstructL
+// Symbian 2nd phase constructor can leave.
+// ----------------------------------------------------------------------------
+//
+void CLmkCategorySettingsView::ConstructL()
+ {
+ BaseConstructL(R_LMK_CATEGORY_SETTINGS_VIEW);
+ }
+
+// ----------------------------------------------------------------------------
+// CLmkCategorySettingsView::~CLmkCategorySettingsView
+// ----------------------------------------------------------------------------
+//
+CLmkCategorySettingsView::~CLmkCategorySettingsView()
+ {
+ if (iContainer)
+ {
+ AppUi()->RemoveFromViewStack(*this, iContainer);
+ }
+ delete iContainer;
+ }
+
+// ----------------------------------------------------------------------------
+// CLmkCategorySettingsView::ProcessKeyEventL
+// ----------------------------------------------------------------------------
+//
+TBool CLmkCategorySettingsView::ProcessKeyEventL(const TKeyEvent& aKeyEvent,
+ TEventCode aType)
+ {
+ return CLmkBaseView::ProcessKeyEventL(aKeyEvent, aType);
+ }
+
+// ----------------------------------------------------------------------------
+// TUid CLmkCategorySettingsView::Id
+// ----------------------------------------------------------------------------
+//
+TUid CLmkCategorySettingsView::Id() const
+ {
+ return TUid::Uid(ELmkCategorySettingsView);
+ }
+
+// ----------------------------------------------------------------------------
+// CLmkCategorySettingsView::HandleCommandL
+// ----------------------------------------------------------------------------
+//
+void CLmkCategorySettingsView::HandleCommandL(TInt aCommand)
+ {
+ AknSelectionService::HandleMarkableListProcessCommandL(aCommand,
+ &(iContainer->ListBox()));
+
+ switch (aCommand)
+ {
+ case EAknSoftkeyBack:
+ {
+ if (iPrevViewId == ELmkCategoryContentsView)
+ {
+ CLmkCategoryContentsView
+ * view =
+ static_cast<CLmkCategoryContentsView*> (AppUi()->View(
+ TUid::Uid(iPrevViewId)));
+ if (view->IsContainerPtrValid())
+ {
+ AppUi()->ActivateLocalViewL(TUid::Uid(iPrevViewId));
+ }
+ else
+ {
+ AppUi()->ActivateLocalViewL(TUid::Uid(ELmkByCategoryView));
+ }
+ }
+ else
+ {
+ AppUi()->ActivateLocalViewL(TUid::Uid(iPrevViewId));
+ }
+ break;
+ }
+ case ELmkCmdNewCategory:
+ case ELmkCmdChangeIcon:
+ case ELmkCmdRenameCat:
+ case ELmkCmdDeleteCat:
+ {
+ iContainer->SelectorImpl().ProcessCommandL(aCommand);
+ break;
+ }
+ default:
+ {
+ (static_cast<CLmkAppUi*> (AppUi()))->HandleCommandL(aCommand);
+ break;
+ }
+ }
+ }
+
+// ---------------------------------------------------------
+// CLmkCategorySettingsView::DynInitMenuPaneL
+// ---------------------------------------------------------
+//
+void CLmkCategorySettingsView::DynInitMenuPaneL(TInt aResourceId,
+ CEikMenuPane* aMenuPane)
+ {
+ CEikTextListBox& listbox = iContainer->ListBox();
+ AknSelectionService::HandleMarkableListDynInitMenuPane(aResourceId,
+ aMenuPane, &listbox);
+
+ TInt count(listbox.Model()->NumberOfItems());
+ TInt markedCount = listbox.SelectionIndexes()->Count();
+ CLmkAppCategorySettingsImpl& LCategorySettingsImpl =
+ iContainer->SelectorImpl();
+ // Checkif the category is a global category only when some items present
+ TBool retVal = EFalse;
+
+ if (count > 0)
+ {
+ retVal = LCategorySettingsImpl.IsPredefinedCategoryL();
+ }
+
+ switch (aResourceId)
+ {
+ case R_LMK_CATEGORY_SETTINGS_MENU1:
+ {
+ if (retVal || count == 0)
+ {
+ aMenuPane->SetItemDimmed(ELmkCmdRenameCat, ETrue);
+ aMenuPane->SetItemDimmed(ELmkCmdDeleteCat, ETrue);
+ }
+ else
+ {
+ if (markedCount > 0)
+ {
+ aMenuPane->SetItemDimmed(ELmkCmdRenameCat, ETrue);
+ }
+ }
+ break;
+ }
+ case R_LMK_CATEGORY_SETTINGS_MENU2:
+ {
+ if (count == 0)
+ {
+ aMenuPane->SetItemDimmed(ELmkCmdChangeIcon, ETrue);
+ }
+ break;
+ }
+ case R_LMK_CATEGORY_SETTINGS_OK_MENU:
+ {
+ aMenuPane->SetItemDimmed(ELmkCmdNewCategory, ETrue);
+ if (retVal)
+ {
+ aMenuPane->SetItemDimmed(ELmkCmdRenameCat, ETrue);
+ aMenuPane->SetItemDimmed(ELmkCmdDeleteCat, ETrue);
+ }
+ if (count == 0)
+ {
+ aMenuPane->SetItemDimmed(ELmkCmdRenameCat, ETrue);
+ aMenuPane->SetItemDimmed(ELmkCmdDeleteCat, ETrue);
+ aMenuPane->SetItemDimmed(ELmkCmdChangeIcon, ETrue);
+ }
+ else
+ {
+ if (markedCount > 1)
+ {
+ aMenuPane->SetItemDimmed(ELmkCmdRenameCat, ETrue);
+ }
+ }
+ break;
+ }
+ case R_LMK_MAIN_MENU:
+ {
+ CLmkBaseView::HandleHelpFeature(aMenuPane);
+ break;
+ }
+ default:
+ {
+ break;
+ }
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CLmkCategorySettingsView::DoActivateL
+// ----------------------------------------------------------------------------
+//
+void CLmkCategorySettingsView::DoActivateL(const TVwsViewId& aPrevViewId,
+ TUid /*aCustomMessageId*/, const TDesC8& /*aCustomMessage*/)
+ {
+ iPrevViewId = aPrevViewId.iViewUid.iUid;
+
+#ifdef _DEBUG
+ RDebug::Print(_L( "CLmkCategorySettingsView::DoActivateL() called" ));
+#endif
+
+ if (!iContainer)
+ {
+ iContainer = CLmkCategorySettingsContainer::NewL(*this, this,
+ ClientRect(), *this);
+
+ AppUi()->AddToStackL(*this, iContainer);
+#ifdef RD_SCALABLE_UI_V2
+ //for touch event
+ iContainer->ListBox().SetListBoxObserver(this);
+#endif//RD_SCALABLE_UI_V2
+ }
+ }
+
+// ----------------------------------------------------------------------------
+// CLmkCategorySettingsView::DoDeactivate
+// ----------------------------------------------------------------------------
+//
+void CLmkCategorySettingsView::DoDeactivate()
+ {
+ if (iContainer)
+ {
+ AppUi()->RemoveFromViewStack(*this, iContainer);
+ }
+ delete iContainer;
+ iContainer = NULL;
+ }
+// ----------------------------------------------------------------------------
+// CLmkCategorySettingsView::Update()
+// ----------------------------------------------------------------------------
+//
+void CLmkCategorySettingsView::Update()
+ {
+ iContainer->SetRect(ClientRect());
+ }
+
+// ---------------------------------------------------------
+// CLmkBaseView::EnableMskMenuL()
+// ---------------------------------------------------------
+//
+void CLmkCategorySettingsView::EnableMskMenuL(TBool aEnable)
+ {
+ CEikButtonGroupContainer* cbaGrp = Cba();
+ if (aEnable)
+ {
+ cbaGrp->SetCommandSetL(R_LMK_SOFTKEYS_OPTIONS_BACK_CONTEXTOPTIONS);
+ //cbaGrp->MakeCommandVisible(EAknSoftkeyContextOptions,ETrue);
+ cbaGrp->DrawDeferred();
+ MenuBar()->SetContextMenuTitleResourceId(
+ R_LMK_CATEGORY_SETTINGS_CONTEXT_MENUBAR);
+ }
+ else
+ {
+ cbaGrp->MakeCommandVisible(EAknSoftkeyContextOptions, EFalse);
+ }
+ }
+
+#ifdef RD_SCALABLE_UI_V2
+// ---------------------------------------------------------
+// CLmkCategorySettingsView::HandleListBoxEventL()
+// ---------------------------------------------------------
+//
+void CLmkCategorySettingsView::HandleListBoxEventL(CEikListBox* aListBox,
+ TListBoxEvent aEventType)
+ {
+ TInt count(aListBox->Model()->NumberOfItems());
+ if( count == 0 )
+ return;
+
+ TInt markedCount = aListBox->SelectionIndexes()->Count();
+
+ switch (aEventType)
+ {
+ case EEventItemSingleClicked:
+ {
+ if( markedCount > 0 )
+ {
+ CEikMenuBar* menubar = MenuBar();
+ if (menubar)
+ {
+ menubar->SetContextMenuTitleResourceId(R_LMK_CATEGORY_SETTINGS_OK_MENUBAR);
+ TRAP_IGNORE( menubar->TryDisplayContextMenuBarL() );
+ }
+ }
+ else
+ {
+ CLmkAppCategorySettingsImpl& LCategorySettingsImpl =
+ iContainer->SelectorImpl();
+ // Checkif the category is a global category only when some items present
+ TBool retVal = LCategorySettingsImpl.IsPredefinedCategoryL();
+ if( retVal )
+ HandleCommandL( ELmkCmdChangeIcon );
+ else
+ HandleCommandL( ELmkCmdRenameCat );
+ }
+ break;
+ }
+ default:
+ break;
+ }
+ }
+#endif//RD_SCALABLE_UI_V2
+// End of File