examples/ForumNokia/S60_3rd_Edition_TextMTM_Example/modules/Util/inc/txut.h

00001 // TXUT.H
00002 //
00003 // � 2004 Nokia Corporation.  All rights reserved.
00004 //
00005 
00006 #ifndef __TXUT_H__
00007 #define __TXUT_H__
00008 
00009 #include <e32std.h>
00010 #include <msvapi.h>             // TMsvId, CMsvOperation, CMsvSession
00011 
00012 
00013 // TextMTM UIDs
00014 LOCAL_D const TInt KUidMsgTypeTextValue = 0x10005247; 
00015 LOCAL_D const TUid KUidMsgTypeText = { KUidMsgTypeTextValue};
00016 LOCAL_D const TUid KTxtMtmTechnologyTypeUid     = {KUidMsgTypeTextValue };
00017 
00018 LOCAL_D const TUid KUidMsvMtmTextServerDLL      ={0x101FDA9C};
00019 LOCAL_D const TUid KUidMsvMtmTextClientDLL      ={0x101FDA9B};
00020 LOCAL_D const TUid KUidMsvMtmTextUiDLL          ={0x101FDA9D};
00021 LOCAL_D const TUid KUidMsvMtmTextUiDataDLL      ={0x101FDA9E};
00022 LOCAL_D const TUid KUidTextMtmVersion1          ={ KUidMsgTypeTextValue};
00023 
00024 // Constants
00025 LOCAL_D const TInt KUidTxtMTMSettingsValue = 0x1000525A; 
00026 LOCAL_D const TUid KUidTxtMTMSettings={KUidTxtMTMSettingsValue};
00027 LOCAL_D const TInt KMaxTextMessageSize = 0xFFFF;
00028 
00029 
00030 //
00031 //      TTxtProgress: Operation progress information
00032 //
00033 class TTxtProgress 
00034         {
00035 public:
00036         TInt            iTotalMsgs;
00037         TInt            iMsgsProcessed;
00038         TInt            iErrorCode;     // client side needs to be informed of an error
00039         TMsvId          iNewId;         // Used with CreateL, or any copy/move, storing the last moved message id.
00040         };
00041 
00042 //
00043 //  Package buffer of progress structure
00044 //
00045 typedef TPckgBuf<TTxtProgress> TTxtProgressBuf;
00046 
00047 //
00048 // TxtUtils: Generic static utility functions
00049 // 
00050 class TxtUtils
00051         {
00052 public: 
00053         // Build file name for associated entry, given its entry.
00054         IMPORT_C static void GetEntryFileNameL(TFileName& aFileName, TMsvEntry& aEntry);
00055     // Prepends the drive letter to aFileName found in aLocation 
00056     IMPORT_C static void FindFileL(const TDesC& aFileName, const TDesC& aLocation, TFileName& aRetVal);
00057         };
00058 
00059 //
00060 // TMTMTxtSettings: contains the settings for a service. It can be stored in the CMsvStore
00061 // associated with the service entry.
00062 //
00063 class TMTMTxtSettings 
00064         {
00065 public:
00066         IMPORT_C void StoreL(CMsvStore& aMsvStore) const;
00067         IMPORT_C void RestoreL(const CMsvStore& aMessageStore );
00068         IMPORT_C void ExternalizeL( RMsvWriteStream& aWriteStream ) const;
00069         IMPORT_C void InternalizeL( RMsvReadStream& aReadStream );
00070 
00071 public:
00072         TPtrC RootFolder() const;
00073         void SetRootFolder(const TDesC& aRootFolder);
00074 
00075 private:
00076         TFileName iRootFolder;
00077  
00078 
00079         };
00080 
00081 
00082 //
00083 // CMsvOpWait:
00084 //      Allows a synchronous wait on a operation
00085 //
00086 
00087 class CMsvOpWait: public CActive
00088         {
00089 public:
00090         IMPORT_C static CMsvOpWait* NewLC(TInt aPriority=EPriorityStandard);
00091         IMPORT_C ~CMsvOpWait();
00092         IMPORT_C void Start();
00093 
00094 protected:
00095         CMsvOpWait(TInt aPriority);
00096 
00097 protected:
00098     // from CActive
00099         virtual void RunL();
00100         virtual void DoCancel();
00101         };
00102 
00103 
00104 //
00105 // CMsvCompOperation: 
00106 //      An operation which is already completed on construction
00107 //
00108 class CMsvCompOperation : public CMsvOperation
00109         {
00110 public:
00111         IMPORT_C static CMsvCompOperation* NewL(CMsvSession& aMsvSession, TUid aMtm, const TDesC8& aProgress, TMsvId aService, TRequestStatus& aObserverRequestStatus, TInt aErr=KErrNone);
00112         IMPORT_C ~CMsvCompOperation();
00113 
00114 public:
00115     // from CMsvOperation
00116         virtual const TDesC8& ProgressL();
00117 
00118 private:
00119         CMsvCompOperation(CMsvSession& aSession, TRequestStatus& aObserverRequestStatus);
00120         void ConstructL(TUid aMtm, TInt aError, const TDesC8& aProgress, TMsvId aService);
00121 
00122 private:
00123         // from CActive
00124         virtual void DoCancel();
00125         virtual void RunL();
00126 
00127 private:
00128         HBufC8* iProgress;
00129         };
00130 
00131 
00132 //
00133 // inline implementations
00134 //
00135 inline void TMTMTxtSettings::SetRootFolder(const TDesC& aRootFolder) 
00136         {
00137         iRootFolder = aRootFolder;
00138         }
00139 
00140 inline TPtrC TMTMTxtSettings::RootFolder() const 
00141         { 
00142         return iRootFolder; 
00143         }
00144 
00145 class CRepository;
00146 
00151 class CMTMTxtSettings: public CBase
00152         {
00153 public:
00154         IMPORT_C static CMTMTxtSettings* NewL();
00155         ~CMTMTxtSettings();
00156         // load, save, and delete text mtm settings
00157         IMPORT_C void LoadSettingsL(TMsvId aServiceId, TMTMTxtSettings& aSettings) const;
00158         IMPORT_C void SaveSettingsL(TMsvId aServiceId, const TMTMTxtSettings& aSettings);
00159         IMPORT_C void DeleteSettingsL(TMsvId aServiceId);
00160         // handle a setting that specifies what the default service is
00161         IMPORT_C TMsvId DefaultServiceL() const;
00162         IMPORT_C void SetDefaultServiceL(TMsvId aService);
00163         IMPORT_C void DeleteDefaultServiceSettingL();
00164         
00165 private:
00166         void ConstructL();      
00167         void CreateOrSetL(TUint aKey, const TDesC& aValue);
00168         void CreateOrSetL(TUint aKey, TInt aValue);
00169         TUint32 FindAccountL(TMsvId aService) const;
00170         TUint GetNextAccountSlotL();
00171         void DeleteSettingL(TUint32 settingId);
00172         
00173 private:
00174         CRepository* iRepository;
00175         };
00176 #endif // __TXUT_H__
00177 

Generated by  doxygen 1.6.2