--- a/browserui/browser/FeedsInc/FeedsClientUtilities.h Thu Aug 19 09:57:56 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,759 +0,0 @@
-/*
-* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "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: Manages the feed related views and implements the FeedsViewBridge.
-*
-*/
-
-#ifndef FEEDS_CLIENT_UTILITIES_H
-#define FEEDS_CLIENT_UTILITIES_H
-
-// INCLUDES
-#include <brctlspecialloadobserver.h>
-
-#include "Preferences.h"
-#include "FeedsWaitDialog.h"
-#include "FeedsFileSearchAgent.h"
-#include "CommonConstants.h"
-#include <feedsinterface.h>
-#include <feedsmap.h>
-#include <transaction.h>
-
-// CONSTANTS
-
-// MACROS
-
-// DATA TYPES
-
-// FUNCTION PROTOTYPES
-
-// FORWARD DECLARATIONS
-class CAknViewAppUi;
-class CEikMenuPane;
-class MApiProvider;
-class CFeedsFolderView;
-class CFeedsTopicView;
-class CFeedsFeedView;
-class CBrowserGotoPane;
-
-// CLASS DECLARATION
-
-
-/**
-* Manages the feed related views and implements the FeedsViewBridge.
-* @lib FeedsViewBridge.lib
-* @since 3.1
-*/
-class CFeedsClientUtilities: public CBase,
- public MPreferencesObserver,
- public MFeedsWaitDialogListener,
- public MFeedsFileSearchAgentCallback,
- public MFeedsApiObserver
- {
- public: // Constructors and destructor
-
- static CFeedsClientUtilities* NewL( CAknViewAppUi& aAppUI, MApiProvider& aApiProvider );
-
- /**
- * Destructor.
- */
- ~CFeedsClientUtilities();
-
- public: // from MPreferencesObserver
-
- /**
- * Derived classes should implement this method, and act accordingly.
- */
- void HandlePreferencesChangeL( const TPreferencesEvent aEvent,
- TPreferencesValues& aValues,
- TBrCtlDefs::TBrCtlSettings aSettingType );
-
- public: //From MFeedsApiObserver
- /**
- * This function is called by CFeedsInterface class whenever
- * request is completed
- *
- * @param aTrans Pointer to current transaction class
- * @param aEvent event related to this call.
- */
- virtual void RequestCompleted(CTransaction* aTrans,TInt aEvent);
-
- public:
- /**
- * Request to create a network connection.
- *
- * @since 7.1
- * @param aConnectionPtr A pointer to the new connection. If NULL, the
- * proxy filter will automatically create a network connection.
- * @param aSockSvrHandle A handle to the socket server.
- * @param aNewConn A flag if a new connection was created. If the
- * connection is not new, proxy filter optimization will not
- * read the proxy again from CommsBd.
- * @param aBearerType The bearer type of the new connection
- * @return void
- */
- void NetworkConnectionNeededL( TInt* aConnectionPtr, TInt& aSockSvrHandle,
- TBool& aNewConn, TApBearerType& aBearerType );
-
- public:
-
- /**
- * Set Browser prefs to Feed engine
- * @since 3.1
- * @param aValues Browser preferences
- * @return void
- */
- void SetPreferencesToFeedL( const TPreferencesValues& aValues );
-
- /**
- * Load Url in new window
- *
- * @since 3.1
- * @return void.
- */
- void LoadUrlL( const TDesC& aUrl );
-
- /**
- * Shows the folder view, loading the folder list from the FeedsServer if need be.
- *
- * @since 3.1
- * @param aCalledFromView to recored from which view this was invoked. Default value
- * is BrowserBookmarksViewId if this argument is not specified.
- * @return void.
- */
- void ShowFolderViewL(TUid aCalledFromView = KUidBrowserBookmarksViewId);
-
- /**
- * Shows the topic view, loading the given feed associated with the given
- * folder item.
- *
- * @since 3.1
- * @return void.
- */
- void ShowTopicViewL(const CFeedsEntity& aFolderItem);
-
- /**
- * Shows the folder view and subscribes to the given feed.
- *
- * @since 3.1
- * @param aTitle The feed's title.
- * @param aUrl The feed's url.
- * @return void.
- */
- void SubscribeToL(const TDesC& aTitle, const TDesC& aUrl);
-
- /**
- * Returns the feed related mime-types. This makes
- * for a clean way to pass downloaded feeds content from the client to the FeedsServer
- * (via CFeedsClientUtilities::HandleFeedL).
- *
- * @since 3.1
- * @return An array of supported mime-types.
- */
- TPtrC SupportedMimeTypesL();
-
- /**
- * Returns Feeds Server related settings.
- *
- * @since 3.1
- * @return Feeds Server related settings.
- */
- TInt FeedsServerSettingsL(TFeedsServerSetting& aSetting);
-
- /**
- * Sets Feeds Server related settings.
- *
- * @since 3.1
- * @param aNewSettings The new settings.
- * @return void.
- */
- void SetFeedsServerSettingsL(const TFeedsServerSetting& aNewSetting);
-
- /**
- * Sets a Browser Control related settings. These settings are directly passed to all
- * Browser Control instances used by the CFeedsViewBridge. As such see the Browser
- * Control documentation for infomation about the settings.
- *
- * @since 3.1
- * @param aSetting The setting to update
- * @param aValue The new value of the setting
- * @return void.
- */
- void SetBrowserControlSettingL(TUint aSetting, TUint aValue);
-
- /**
- * Called by RequestHandlerCompleted when the root FolderItem is either ready or an error occured.
- *
- * @since 3.1
- * @param aStatus The result code of the FetchRootFolderItemL method.
- * @param aTrans The type of transaction that was made
- * @return void.
- */
- void FolderItemRequestCompleted(TInt aStatus, CTransaction::TTransactionType aTrans=CTransaction::ENone);
-
- /**
- * Leaving method which is called by FolderItemRequestCompleted
- *
- * @since 3.2
- * @param aStatus The result code of the FetchRootFolderItemL method.
- * @param aTrans The type of transaction that was made
- * @return void.
- */
- void FolderItemRequestCompletedL(TInt aStatus, CTransaction::TTransactionType aTransType=CTransaction::ENone);
-
- /**
- * Called by RequestHandlerCompleted when the FolderItem has changed. The client
- * should request an updated copy from the server.
- *
- * @since 3.1
- * @return void.
- */
- void FolderItemChanged() {};
-
- /**
- * Called by RequestHandlerCompleted when the asynchronous request is complete.
- *
- * @since 3.1
- * @pram aStatus The completion status code.
- * @return void.
- */
- void FeedRequestCompleted(TInt aStatus);
-
- /**
- * Leaving method which is called from FeedRequestCompleted
- *
- * @since 3.2
- * @pram aStatus The completion status code.
- * @return void.
- */
- void FeedRequestCompletedL(TInt aStatus);
-
- /**
- * Notifies the observer that the feed has changed. This method is called
- * when the feed is updated by the feeds server.
- *
- * @since 3.1
- * @return void.
- */
- void FeedChanged() {};
-
- /**
- * Notifies the observer that the feed's item status has changed.
- * This method is called when __another__ client updates the feed's
- * item status (via UpdateFeedItemStatusL).
- *
- * @since 3.1
- * @return void.
- */
- void FeedItemStatusChanged() {};
-
-
- public: // From MWaitDialogListener
- /**
- * Called when the user presses the cancel button.
- *
- * @since 3.0
- * @return void.
- */
- void DialogDismissedL();
-
-
- public: // New Methods.
- /**
- * Searches for a FolderItem with the given name. If "this"
- * isn't a folder it only checks whether or not it matches
- * the given name. If "this" is a folder it also checks
- * all embedded items
- *
- * @since 7.1
- * @param aName The title of the feed
- * @param aFolder The folder to be searched
- * @return void.
- */
-
- const CFeedsEntity* Search(const TDesC& aName,const CFeedsEntity& aFolder) const;
- /**
- * Searches for a FolderItem with the given id. If "this"
- * isn't a folder it only checks whether or not it matches
- * the given id. If "this" is a folder it also checks
- * all embedded items
- *
- * @since 7.1
- * @param aFolderItemId The id of the folder item.
- * @param aFolder The folder to be searched
- * @return void.
- */
-
- const CFeedsEntity* Search(TInt aFolderItemId,const CFeedsEntity& aFolder) const;
-
- /**
- * Get the root folder from the Feeds server.
- *
- * @since 3.1
- * @return void.
- */
- void FetchRootFolderL();
-
- /**
- * Add a new folder item.
- *
- * @since 3.1
- * @param aTitle The title of the item.
- * @param aUrl The url of the item.
- * @param aIsFolder True if this is a folder.
- * @param aParent The parent folder.
- * @param aFreq The frequency for auto updating.
- * @return void.
- */
- void AddFolderItemL(const TDesC& aTitle, const TDesC& aUrl,
- TBool aIsFolder, const CFeedsEntity& aParent, TInt aFreq);
-
- /**
- * Change the folder item. If this is a folder then KNullDesC
- * should be passed to the aUrl argument.
- *
- * @since 3.1
- * @param aFolderItem The item to update.
- * @param aTitle The item's title..
- * @param aUrl The item's url or KNullDesC.
- * @param aFreq The frequency for auto updating.
- * @return void
- */
- void ChangeFolderItemL(CFeedsEntity& aFolderItem,
- const TDesC& aTitle, const TDesC& aUrl, TInt aFreq);
-
- /**
- * Delete the folder items.
- *
- * @since 3.1
- * @param aFolderItem The folder item that's being deleted.
- * @return void
- */
- void DeleteFolderItemsL(RPointerArray<const CFeedsEntity>& aFolderItems);
-
- /**
- * Move the folder items to a different parent.
- *
- * @since 3.1
- * @param aFolderItem The folder item that's being moved.
- * @param aParent The folder item's new parent.
- * @return void
- */
- void MoveFolderItemsToL(RPointerArray<const CFeedsEntity>& aFolderItems,
- const CFeedsEntity& aParent);
-
- /**
- * Move the folder item to a different index.
- *
- * @since 3.1
- * @param aFolderItem The folder item that's being moved.
- * @param aIndex The new index of the folder item (within its parent).
- * @return void
- */
- void MoveFolderItemsL(RPointerArray<const CFeedsEntity>& aFolderItems,
- TInt aIndex);
-
- /**
- * Get the given feed from the Feeds server.
- *
- * @since 3.1
- * @param aFeedUrl The id of the feed to fetch.
- * @param aForceUpdate When true the server will ignore the cache.
- * @param aNoCache When true the server will not cache the feed.
- * @return void.
- */
- void FetchFeedL(const CFeedsEntity& aFeedEntity, TBool aForceUpdate = EFalse,
- TBool aNoCache = EFalse);
-
- /**
- * Updates the feed with the given id.
- *
- * @since 3.1
- * @param aFeedId The id of the feed to update.
- * @return void.
- */
- void UpdateFeedL(const CFeedsEntity& aFeedEntity);
-
- /**
- * Updates the given feeds in the background.
- *
- * @since 3.1
- * @param aFolderItems The feeds to update.
- * @return void.
- */
- void UpdateFolderItemsL(const RPointerArray<const CFeedsEntity>&
- aFolderItems);
-
- /**
- * Updates all of feeds in the background.
- *
- * @since 3.1
- * @return void.
- */
- void UpdateFolderItemsL();
-
- /**
- * Handle the menu "Import Feeds" command. This will kick off the search
- * for OMPL feeds files stored on the phone. Control will return via the
- * FeedsFileSearchComplete callback.
- *
- * @since 3.2
- * @return void.
- */
- void ImportFeedsL();
-
- /**
- * Given a filepath on the filesystem, begin import feeds from the file path
- * This will set up the path and flags and allow the feeds folder to be
- * activated before the import actually takes place.
- *
- * @since 3.2
- * @return void
- * @param a filesystem path to import from
- */
- void BeginImportOPMLFeedsFileL( TFileName& aFilepath );
-
- /**
- * Handle the menu "Export Feeds" command
- * once items have been selected and a name chosen.
- *
- * @since 3.2
- * @return void
- * @param folder items to export and a name to export to
- */
- void ExportFeedsL(RPointerArray<const CFeedsEntity>& aFolderItems, const TDesC &aExportFileName);
-
- /**
- * Shows the folder view.
- *
- * @since 3.1
- * @return void.
- */
- void ShowFolderViewLocalL();
-
- /**
- * Shows the topic view.
- *
- * @since 3.1
- * @param aInitialItem The initial item to show.
- * @return void.
- */
- void ShowTopicViewLocalL(TInt aInitialItem);
-
- /**
- * Shows the feed view.
- *
- * @since 3.1
- * @param aInitialItem The initial item to show.
- * @return void.
- */
- void ShowFeedViewLocalL(TInt aInitialItem);
-
-
- /**
- * Returns the current root folder.
- *
- * @since 3.1
- * @return The current root folder..
- */
- const CFeedsEntity* CurrentRootFolder() ;
-
- /**
- * Returns the current feed.
- *
- * @since 3.1
- * @return The current feed.
- */
- CFeedsEntity* CurrentFeed() ;
-
- /**
- * Add a menu item to the given menu.
- *
- * @since 3.1
- * @param aMenuPane The menu to add the item to.
- * @param aCommand The item's command.
- * @param aTitleId The item's title resouce-id.
- * @return void.
- */
- void AddItemL(CEikMenuPane& aMenuPane, TInt aCommand, TInt aTitleId);
-
- /**
- * Add a sub-menu to the given menu.
- *
- * @since 3.1
- * @param aMenuPane The menu to add the item to.
- * @param aCommand The cascade's command.
- * @param aTitleId The item's title resouce-id.
- * @param aCascade The cascade's resource id.
- * @return void.
- */
- void AddCascadeL(CEikMenuPane& aMenuPane, TInt aCommand,
- TInt aTitleId, TInt aCascade);
-
- /**
- * Sets the item's status (read/unread/new).
- *
- * @since 3.1
- * @param aItemIndex The index of the item to change.
- * @param aStatus The new status.
- * @return void.
- */
- void SetItemStatusL(CFeedsEntity* aItem, TFeedItemStatus aStatus);
-
- /**
- * Returns the item's status (read/unread/new).
- *
- * @since 3.1
- * @param aItemIndex The index of the item to change.
- * @return The status.
- */
- TFeedItemStatus ItemStatus(TInt aItemIndex);
-
- /**
- * Writes the item status out to the server.
- *
- * @since 3.1
- * @return Void.
- */
- void ItemStatusWriteToServerL();
-
- /**
- * Returns the Favicon to the given url or NULL if one isn't found.
- *
- * @since 3.1
- * @param aUrl The url of the Favicon.
- * @return The associated Favicon or NULL.
- */
- CGulIcon* FaviconL(const TDesC& aUrl);
-
- /**
- * Connect to the server.
- *
- * @since 3.1
- * @param aGetRootFolder If true the root folder is also fetched.
- * @return Void
- */
- void ConnectToServerL(TBool aGetRootFolder = ETrue);
-
- /**
- * Disconnect from the server.
- *
- * @since 3.1
- * @return Void
- */
- void DisconnectFromServer();
-
- /**
- * Since the folder list isn't updated after it is fetched the FeedsClientUtilities
- * tracks the last update times for feeds the user visits in the current session.
- * This method returns the "last updated" timestamp of the given item.
- *
- * @since 3.1
- * @param aItem The folder item to get the last updated time.
- * @return The timestamp.
- */
- TTime FeedUpdatedTime(const CFeedsEntity& aItem);
-
- /**
- * Resets the "last updated" cache.
- *
- * @since 3.1
- * @return Void.
- */
- void ResetFeedUpdateTime();
-
- /**
- * Update the feed's "last updated" value in the cache.
- *
- * @since 3.1
- * @param aFeed The feed to udpate the last updated time.
- * @return Void.
- */
- void UpdateFeedUpdatedTimeL(const CFeedsEntity& aFeed);
-
- /**
- * Initialize context-sensitive menu.
- * @param aResourceId Resource id of the menu pane.
- * @param aMenuPane Menu pane object being initialized.
- */
- void DynInitMenuPaneL( TInt aResourceId, CEikMenuPane* aMenuPane );
-
- /**
- * Processes commands.
- *
- * @since 3.1
- * @param aViewId the view that calls this.
- * @param aCommand the command to process.
- * @return void.
- */
- void HandleCommandL(TUid aViewId, TInt aCommand);
-
- /**
- * Sets Feeds Server related settings.
- *
- * @since 3.1
- * @return void.
- */
- void DisconnectManualUpdateConnectionL();
-
- /**
- * Disconnect connection used by FeedsView
- *
- * @since 3.1
- * @return void.
- */
- void DisconnectFeedsViewL();
-
- /**
- * Set the View Id that called Feeds
- *
- * @since 3.1
- * @param View id of the view Feeds was called from.
- */
- void SetCalledFromView(TUid aViewId);
-
- /**
- * Get the View Id that called Feeds
- *
- * @since 3.1
- * @return the view id Feeds was called from.
- */
- TUid CalledFromView();
-
- public: // from MFeedsFileSearchAgentCallback
- /**
- * Callback to this class when the search agent CActive had
- * completed its searching for feeds files
- *
- * @since 3.2
- * @return void
- * @param the number of files found
- */
-
- void FeedsFileSearchCompleteL(TInt aCount);
-
- private: // New Methods.
- /**
- * C++ default constructor. aName and
- * aSourceUrl are adopted by this method.
- */
- CFeedsClientUtilities(CAknViewAppUi& aAppUI, MApiProvider& iApiProvider);
-
- /**
- * By default Symbian 2nd phase constructor is private.
- */
- void ConstructL();
-
- /**
- * Ensures that the views and the connection to the FeedsServer are ready.
- *
- * @since 3.1
- * @param aGetRootFolder If true the root folder is also fetched.
- * @return void.
- */
- void LazyInitL(TBool aGetRootFolder);
-
- /**
- * Show a server error.
- *
- * @since 3.1
- * @param aStatus The status code.
- * @param aRequestType The type of request that was made
- * @return void.
- */
- void ShowServerError(TInt aStatus, CTransaction::TTransactionType aRequestType = CTransaction::ENone);
-
- /**
- * Init a menu item
- * @since 3.1
- * @param aMenuPane Menu pane to be initialized
- * @param aCommandId The command ID
- * @param aResourceId The resource ID
- * @param aCascadeId The cascade ID
- * @param aFlags Flags
- * @return void
- */
- void InitMenuItemL( CEikMenuPane* aMenuPane,
- TInt aCommandId,
- TInt aResourceId,
- TInt aCascadeId = 0,
- TInt aFlags = 0 );
-
- /**
- * Send the OPML using the Send UI
- *
- * @since 3.2
- * @param void.
- * @return void.
- */
- void SendOPMLFileL(void);
-
- /**
- * Returns the INITIAL status of each of the items in the feed.
- * The caller can then modify the values and call RFeed::UpdateFeedItemStatusL
- * to request the feeds server to update the feed's item status.
- *
- * @since 7.1
- * @param aItemIds The ids of the items.
- * @param aItemStatus The coresponding status of each of the items in the feed.
- * @param aFeed The feed whose items' status has to fetched.
- * @return void.
- */
- void ItemStatusL(RArray<TInt>& aItemIds,
- RArray<TFeedItemStatus>& aItemStatus, const CFeedsEntity& aFeed) const;
-
-
-
- private: // Data.
- CAknViewAppUi& iAppUI;
- MApiProvider& iApiProvider;
- TUid iNextViewId;
- TBool iIsUpdatingFeed;
- CFeedsWaitDialog* iWaitDialog;
- HBufC* iEnteredURL;
- TInt iCbaResource;
-
- CFeedsFolderView* iFolderView; // not owned
- CFeedsTopicView* iTopicView; // not owned
- CFeedsFeedView* iFeedView; // not owned
-
- TBool iIsConnected;
- RArray<TInt> iItemIds;
- RArray<TFeedItemStatus> iItemStatus;
- RArray<TFeedItemStatus> iItemStatusOrig;
-
- HBufC* iMimeTypes;
-
- RArray<TInt> iFeedUpdateTimeIds;
- RArray<TTime> iFeedUpdateTimeTimestamps;
-
- TDesC* iPendingFolderItemTitle;
- TDesC* iPendingFolderItemUrl;
- TDesC* iExportFileName;
-
- CFeedsFileSearchAgent* iSearchAgent;
- CArrayFixFlat<TBrCtlSelectOptionData>* iSearchOptList;
-
- TFileName iTempOPMLImportFilePath;
- TBool iFeedImportRequested;
- TBool iRequestCanceled;
- TUid iCalledFromView;
- TBool iIsWaitDialogDisplayed;
- RFeedsInterface iFeedsInterface;
- CTransaction::TTransactionType iCurrentRequest;
- CTransaction::TTransactionType iCanceledRequest;
- };
-
-#endif // FEEDS_CLIENT_UTILITIES_H
-
-// End of File