--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/epoc32/include/app/CPbk2SortOrderManager.h Wed Mar 31 12:33:34 2010 +0100
@@ -0,0 +1,175 @@
+/*
+* Copyright (c) 2005-2007 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: Phonebook 2 sort order manager.
+*
+*/
+
+
+#ifndef CPBK2SORTORDERMANAGER_H
+#define CPBK2SORTORDERMANAGER_H
+
+// INCLUDE FILES
+#include <e32base.h>
+
+// FORWARD DECLARATIONS
+class MVPbkContactViewBase;
+class MVPbkFieldTypeList;
+class RFs;
+class CPbk2SortOrderManagerImpl;
+
+/**
+ * Observer interface for receiving notifications of
+ * view sort order changes.
+ */
+class MPbk2SortOrderObserver
+ {
+ public: // Interface
+
+ /**
+ * Called when sort order has changed.
+ */
+ virtual void SortOrderChanged() = 0;
+
+ protected: // Disabled functions
+ ~MPbk2SortOrderObserver()
+ {}
+ };
+
+/**
+ * Phonebook 2 sort order manager.
+ * Responsible for managing the sort order of the contacts in
+ * a contact view.
+ */
+class CPbk2SortOrderManager : public CBase
+ {
+ public: // Enumerations
+
+ /// Name display orders
+ enum TPbk2NameDisplayOrder
+ {
+ /// Last name First name
+ EPbk2NameDisplayOrderLastNameFirstName,
+ /// First name Last name
+ EPbk2NameDisplayOrderFirstNameLastName,
+ /// Last name<separator> First Name
+ EPbk2NameDisplayOrderLastNameSeparatorFirstName
+ };
+
+ public: // Construction and destruction
+
+ /**
+ * Creates a new instance of this class.
+ *
+ * @param aMasterFieldTypeList Master field type list.
+ * Can be retrieved from Virtual
+ * Phonebook contact manager.
+ * @param aFs A file system session
+ * reference for resource file
+ * handling. If NULL then
+ * an own session is created.
+ * @return A new instance of this class.
+ */
+ IMPORT_C static CPbk2SortOrderManager* NewL(
+ const MVPbkFieldTypeList& aMasterFieldTypeList,
+ RFs* aFs = NULL );
+
+ /**
+ * Destructor.
+ */
+ ~CPbk2SortOrderManager();
+
+ public: // Interface
+
+ /**
+ * Sets the contact view that this manager manages.
+ * Takes in use the sort order from the given view.
+ *
+ * @param aContactView The contact view to manage.
+ */
+ IMPORT_C void SetContactViewL(
+ MVPbkContactViewBase& aContactView );
+
+ /**
+ * Adds an observer.
+ *
+ * @param aObserver The observer to add.
+ */
+ IMPORT_C void AddObserverL(
+ MPbk2SortOrderObserver& aObserver );
+
+ /**
+ * Removes an observer.
+ *
+ * @param aObserver The observer to remove.
+ */
+ IMPORT_C void RemoveObserver(
+ MPbk2SortOrderObserver& aObserver );
+
+ /**
+ * Sets the name displaying order for the managed contact view.
+ *
+ * @param aNameDisplayOrder New name display order for
+ * the managed contact view.
+ * @param aSeparator Custom separator to be used between
+ * lastname and firstname if it exists.
+ * If KNullDesC is given, space is used
+ * as separator.
+ */
+ IMPORT_C void SetNameDisplayOrderL(
+ TPbk2NameDisplayOrder aNameDisplayOrder,
+ const TDesC& aSeparator = KNullDesC );
+
+ /**
+ * Returns the current name display order.
+ *
+ * @return Current name display order.
+ */
+ IMPORT_C TPbk2NameDisplayOrder NameDisplayOrder() const;
+
+ /**
+ * Returns the current sort order.
+ *
+ * @return Current sort order.
+ */
+ IMPORT_C const MVPbkFieldTypeList& SortOrder() const;
+
+ /**
+ * Returns the language specific default separator.
+ * This can not be changed run time.
+ *
+ * @return the language specific default separator.
+ */
+ IMPORT_C const TDesC& DefaultSeparator();
+
+ /**
+ * Returns the current separator. This the separator that
+ * can be changed run time and saved to Central Repository.
+ *
+ * @return A current separator.
+ */
+ IMPORT_C const TDesC& CurrentSeparator() const;
+
+ private: // Implementation
+ void ConstructL(
+ const MVPbkFieldTypeList& aMasterFieldTypeList,
+ RFs* aFs );
+
+ private: // Data
+ /// Own: Implementation object
+ CPbk2SortOrderManagerImpl* iImpl;
+ };
+
+#endif // CPBK2SORTORDERMANAGER_H
+
+// End of File