--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/plugins/shortcutplugin/src/caiscutsettingsbkmlist.cpp Thu Dec 17 08:54:17 2009 +0200
@@ -0,0 +1,307 @@
+/*
+* 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: Bookmark list for settings listbox
+*
+*/
+
+
+#include <StringLoader.h>
+#include <ActiveFavouritesDbNotifier.h> // For CActiveFavouritesDbNotifier
+
+#include <aiscutsettingsres.rsg>
+#include <aiscuttexts.rsg>
+
+#include "caiscutsettingsmodel.h"
+#include "caiscutsettingsapplist.h"
+#include "caiscutsettingsbkmlist.h"
+#include "taiscutparser.h"
+#include "caiscutsettingsitem.h"
+#include "aiscutdefs.h"
+
+#include "debug.h"
+
+
+_LIT( KText, "bkm=0x%x" );
+const TInt KTBUF16 = 16;
+
+// ======== MEMBER FUNCTIONS ========
+
+CAiScutSettingsBkmList::CAiScutSettingsBkmList(
+ CCoeEnv* aEnv,
+ CAiScutSettingsModel* aModel,
+ MAiScutListObserver& aObserver
+ )
+ : iEnv(aEnv)
+ , iModel(aModel)
+ , iObserver(aObserver)
+{
+}
+
+void CAiScutSettingsBkmList::ConstructL()
+{
+}
+
+CAiScutSettingsBkmList* CAiScutSettingsBkmList::NewL(
+ CCoeEnv* aEnv,
+ CAiScutSettingsModel* aModel,
+ MAiScutListObserver& aObserver)
+{
+ CAiScutSettingsBkmList* self = new (ELeave) CAiScutSettingsBkmList(
+ aEnv, aModel, aObserver);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+}
+
+CAiScutSettingsBkmList::~CAiScutSettingsBkmList()
+{
+ iListItems.ResetAndDestroy();
+ delete iBookmarkDbObserver;
+}
+
+// ---------------------------------------------------------------------------
+// From MDesCArray
+// Returns the number of descriptor elements in a descriptor array.
+// ---------------------------------------------------------------------------
+//
+TInt CAiScutSettingsBkmList::MdcaCount() const
+{
+ return iListItems.Count();
+}
+
+// ---------------------------------------------------------------------------
+// From MDesCArray
+// Indexes into a descriptor array.
+// ---------------------------------------------------------------------------
+//
+TPtrC CAiScutSettingsBkmList::MdcaPoint(TInt aIndex) const
+{
+ if (aIndex < 0 || aIndex >= iListItems.Count())
+ {
+ TPtrC ret(KNullDesC);
+ return ret;
+ }
+ return iListItems[aIndex]->Caption();
+}
+
+// ---------------------------------------------------------------------------
+// Gets bookmark list.
+// ---------------------------------------------------------------------------
+//
+void CAiScutSettingsBkmList::GetBookmarkListL()
+{
+ iListItems.ResetAndDestroy();
+
+ iModel->ReadBookmarksL();
+
+ TInt count = iModel->BookmarkCount();
+
+ for (TInt i = count - 1; i >= 0; i--) // newest on top
+ {
+ CFavouritesItem* item = iModel->GetBookmark(i);
+
+ TUid uid = TUid::Uid(item->Uid());
+ TPtrC name = item->Name();
+
+ AddBookmarkL(uid, name);
+ }
+}
+
+// ---------------------------------------------------------------------------
+// Tells the bookmark list to start or stop observing for changes.
+// ---------------------------------------------------------------------------
+//
+void CAiScutSettingsBkmList::SetObservingL(TBool aObserving)
+{
+ delete iBookmarkDbObserver;
+ iBookmarkDbObserver = NULL;
+
+ if (aObserving)
+ {
+
+ iBookmarkDbObserver = new (ELeave) CActiveFavouritesDbNotifier(
+ iModel->FavouritesDb(), *this);
+ iBookmarkDbObserver->Start();
+ }
+
+ iObserving = aObserving;
+}
+
+// ---------------------------------------------------------------------------
+// Finds the index of the given settings item in the bookmark list.
+// ---------------------------------------------------------------------------
+//
+TInt CAiScutSettingsBkmList::FindIndex(CAiScutSettingsItem& aItem)
+{
+ TInt index = KErrNotFound;
+
+ TAiScutParser parser;
+ parser.Parse(aItem.Value());
+ TUid uid = parser.ParseUid(parser.Get(EScutDefParamValue));
+
+ for (TInt i = iListItems.Count() - 1; i >= 0; --i)
+ {
+ if (iListItems[i]->Uid() == uid)
+ {
+ index = i;
+ break;
+ }
+ }
+
+ return index;
+}
+
+// ---------------------------------------------------------------------------
+// Returns target bookmark data from the given index.
+// ---------------------------------------------------------------------------
+//
+TInt CAiScutSettingsBkmList::GetDataByIndex(
+ TInt aIndex, TPtrC& aParams, TPtrC& aCaption) const
+{
+ if (aIndex >= 0 && aIndex < iListItems.Count())
+ {
+ CBkmListItem* item = iListItems[aIndex];
+ aParams.Set(item->Params());
+ aCaption.Set(item->Caption());
+ return KErrNone;
+ }
+
+ return KErrNotFound;
+}
+
+// ---------------------------------------------------------------------------
+// Adds an bookmark to the list.
+// ---------------------------------------------------------------------------
+//
+void CAiScutSettingsBkmList::AddBookmarkL(TUid aUid, const TDesC& aCaption)
+{
+ CBkmListItem* listItem = CBkmListItem::NewLC(aUid, aCaption);
+
+ TBuf<KTBUF16> buf;
+ buf.Format( KText, aUid.iUid );
+
+ listItem->SetParamsL(buf);
+ TLinearOrder<CBkmListItem> sortMethod(CBkmListItem::CompareCaption);
+ User::LeaveIfError(iListItems.InsertInOrderAllowRepeats(listItem, sortMethod));
+ CleanupStack::Pop(listItem);
+}
+
+// ---------------------------------------------------------------------------
+// Updates the bookmark list.
+// ---------------------------------------------------------------------------
+//
+void CAiScutSettingsBkmList::UpdateBkmListL()
+{
+ GetBookmarkListL();
+ iObserver.HandleScutListEventL(MAiScutListObserver::EBkmListUpdated, EFalse);
+}
+
+// -----------------------------------------------------------------------------
+// From class MFavouritesDbObserver.
+// Handles database event.
+// -----------------------------------------------------------------------------
+//
+void CAiScutSettingsBkmList::HandleFavouritesDbEventL(RDbNotifier::TEvent aEvent)
+{
+ __PRINT( __DBG_FORMAT( "XAI: CAiScutSettingsBkmList::HandleFavouritesDbEventL aEvent = %d"), aEvent);
+
+ if (aEvent == RDbNotifier::ECommit)
+ {
+ UpdateBkmListL();
+ }
+}
+
+// ---------------------------------------------------------------------------
+//Nested class to store individual bookmark list items
+// ---------------------------------------------------------------------------
+//
+CAiScutSettingsBkmList::CBkmListItem::CBkmListItem(TUid aUid) : iUid(aUid)
+{
+}
+
+void CAiScutSettingsBkmList::CBkmListItem::ConstructL(const TDesC& aCaption)
+{
+ iCaption = aCaption.AllocL();
+}
+
+CAiScutSettingsBkmList::CBkmListItem* CAiScutSettingsBkmList::CBkmListItem::NewLC(
+ TUid aUid, const TDesC& aCaption)
+{
+ CBkmListItem* self = new (ELeave) CBkmListItem(aUid);
+ CleanupStack::PushL(self);
+ self->ConstructL(aCaption);
+ return self;
+}
+
+CAiScutSettingsBkmList::CBkmListItem::~CBkmListItem()
+{
+ delete iCaption;
+ delete iParams;
+}
+
+// ---------------------------------------------------------------------------
+// Compare method used to add the items to the list in sorted order.
+// ---------------------------------------------------------------------------
+//
+TInt CAiScutSettingsBkmList::CBkmListItem::CompareCaption(const CBkmListItem& aFirst,
+ const CBkmListItem& aSecond)
+{
+ return aFirst.iCaption->Des().CompareC(*aSecond.iCaption);
+}
+
+// ---------------------------------------------------------------------------
+// Returns the item target bookmark uid.
+// ---------------------------------------------------------------------------
+//
+TUid CAiScutSettingsBkmList::CBkmListItem::Uid() const
+{
+ return iUid;
+}
+
+// ---------------------------------------------------------------------------
+// Returns the item target bookmark caption.
+// ---------------------------------------------------------------------------
+//
+TPtrC CAiScutSettingsBkmList::CBkmListItem::Caption() const
+{
+ return TPtrC(*iCaption);
+}
+
+// ---------------------------------------------------------------------------
+// Returns the possible parameters for item target.
+// ---------------------------------------------------------------------------
+//
+TPtrC CAiScutSettingsBkmList::CBkmListItem::Params() const
+{
+ TPtrC params;
+ if (iParams)
+ {
+ params.Set(*iParams);
+ }
+ return params;
+}
+
+// ---------------------------------------------------------------------------
+// Sets the parameters for the item target.
+// ---------------------------------------------------------------------------
+//
+void CAiScutSettingsBkmList::CBkmListItem::SetParamsL(const TDesC& aParams)
+{
+ HBufC* newParams = aParams.AllocL();
+ delete iParams;
+ iParams = newParams;
+}
+
+// End of File.