examples/Messaging/TextMTM/txti/TXTI.CPP

00001 // Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
00002 // All rights reserved.
00003 // This component and the accompanying materials are made available
00004 // under the terms of "Eclipse Public License v1.0"
00005 // which accompanies this distribution, and is available
00006 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
00007 //
00008 // Initial Contributors:
00009 // Nokia Corporation - initial contribution.
00010 //
00011 // Contributors:
00012 //
00013 // Description:
00014 //
00015 
00016 // Standard includes
00017 #include <coemain.h>    // CCoeEnv
00018 
00019 // Messaging includes
00020 #include <mtclbase.h> 
00021 #include <msvstd.hrh>
00022 #include <mtmdef.hrh>
00023 #include <msvuids.h>
00024 #include <msvids.h>
00025 
00026 // Specific includes
00027 #include "TXUT.H"
00028 #include "TXTUCMDS.H"
00029 #include "TXCLIENT.H"
00030 #include "TXTI.H"
00031 #include "Txtipan.h"
00032 #include <txti.rsg>
00033 #include <txti.mbg>
00034 #include <mtmuidef.hrh>
00035 #include <mtmuidsdef.hrh>
00036 
00037 // Constants
00038 const TInt KTxtiMtmUdZoomNumberOfStates = 1;
00039 
00040 #ifdef __WINS__
00041 // on wins, assume built to z:
00042 _LIT(KTxtiMtmUdResourceFile,"Z:\\resource\\messaging\\TXTI.RSC");
00043 _LIT(KTxtiMtmUdBitmapFile,"Z:\\resource\\messaging\\TXTI.MBM");
00044 #else
00045 _LIT(KTxtiMtmUdResourceFile,"Z:\\resource\\messaging\\TXTI.RSC");
00046 _LIT(KTxtiMtmUdBitmapFile,"Z:\\resource\\messaging\\TXTI.MBM");
00047 #endif //WINS
00048 
00049 _LIT(KTxtiReadyToSend,"Ready To Send");
00050 //
00051 //      TTxtiBitmapIndexes: index to bitmap sets
00052 //      3 sets for messages (at different priority levels), and 1 for a service
00053 //
00054 enum TTxtiBitmapIndexes
00055         {
00056         ETxtiLowPriority=0,
00057         ETxtiNormalPriority,
00058         ETxtiHighPriority,
00059         ETxtiService,
00060         ETxtiFolder
00061         };
00062 
00063 // This constant is required for TechView. It's defined in MTMExtendedCapabilities.hrh
00064 // but we define it ourselves to keep this code generic, and not depend on TechView-specific headers
00065 #define KUidMtmQueryCanCreateNewMsgValue 0x10008b24
00066 
00067 //
00068 // CTxtiMtmUiData: UI Data MTM
00069 //
00070 
00071 //
00072 //      Construction, initialisation, and destruction 
00073 //
00074 
00075 CTxtiMtmUiData* CTxtiMtmUiData::NewL(CRegisteredMtmDll& aRegisteredDll)
00076         {
00077         CTxtiMtmUiData* base=new(ELeave) CTxtiMtmUiData(aRegisteredDll);
00078         CleanupStack::PushL(base);
00079         base->ConstructL();
00080         CleanupStack::Pop();
00081         return base;
00082         }
00083 
00084 CTxtiMtmUiData::~CTxtiMtmUiData()
00085         { 
00086         }
00087 
00088 void CTxtiMtmUiData::PopulateArraysL()
00089 // Initialise bitmaps and function information 
00090         {
00091         // Read MTM-specific operation information 
00092         ReadFunctionsFromResourceFileL(R_TEXTUD_FUNCTION_ARRAY);
00093 
00094         // Populate bitmap array
00095         CreateBitmapsL(KTxtiMtmUdZoomNumberOfStates, KTxtiMtmUdBitmapFile, EMbmTxtiTextl1, EMbmTxtiFold1);
00096         }
00097 
00098 CTxtiMtmUiData::CTxtiMtmUiData(CRegisteredMtmDll& aRegisteredDll)
00099         :       CBaseMtmUiData(aRegisteredDll)
00100         {}
00101 
00102 
00103 void CTxtiMtmUiData::GetResourceFileName(TFileName& aFileName) const
00104 // Resource file loading
00105         { 
00106         aFileName=KTxtiMtmUdResourceFile; 
00107         }
00108 
00109 
00110 //
00111 //      MTM-specific functionality 
00112 //
00113 
00114 TInt CTxtiMtmUiData::OperationSupportedL(TInt aOperationId, const TMsvEntry& aContext) const
00115 // Context-sensitive operation query 
00116         {
00117         TInt aReasonResourceId=0;       // 0 means "operation is available"
00118         
00119         if (aContext.iMtm!=KUidMsgTypeText) return R_TEXTUD_NOT_SUPPORTED;
00120 
00121         const TBool isMessage=aContext.iType==KUidMsvMessageEntry;
00122         const TBool isService=aContext.iType==KUidMsvServiceEntry;
00123         
00124         if (aOperationId==ETxtuCommandRefreshMBox)
00125                 {
00126                 // Only allow refresh on services
00127                 if (!isService)
00128                 aReasonResourceId=R_TEXTUD_ONLY_REFRESH_SERVICES;
00129                 }
00130         else if (aOperationId==ETxtuCommandExportText)
00131                 {
00132                 // Only allow export on local messages
00133                 if ( (!isMessage) || (aContext.iServiceId != KMsvLocalServiceIndexEntryId) )
00134                 aReasonResourceId=R_TEXTUD_ONLY_MESSAGES;
00135                 }
00136         return aReasonResourceId;
00137         }
00138 
00139 
00140 TInt CTxtiMtmUiData::QueryCapability(TUid aCapability, TInt& aResponse) const
00141 // Query for capability 
00142         {
00143         switch (aCapability.iUid)
00144                 {
00145         // Supported valued capabilities
00146         case KUidMtmQueryMaxBodySizeValue:
00147                 aResponse=KMaxTextMessageSize;
00148                 break;
00149         case KUidMtmQueryMaxTotalMsgSizeValue:
00150                 aResponse=KMaxTextMessageSize;
00151                 break;
00152 
00153         // Supported non-valued capabilities
00154         // boolean returns
00155         case KUidMtmQuerySupportedBodyValue:    
00156         case KUidMtmQueryCanSendMsgValue:       
00157         case KUidMtmQueryOffLineAllowedValue:
00158         case KUidMtmQueryCanReceiveMsgValue:
00159         case KUidMtmQueryCanCreateNewMsgValue:
00160                 aResponse=ETrue;
00161                 break;
00162 
00163         // Non-supported capabilities
00164         // Boolean returns
00165         case KUidMtmQuerySupportAttachmentsValue:
00166                 aResponse=EFalse;
00167                 break;
00168         default:
00169                 return KErrNotSupported;
00170                 };
00171         return KErrNone;
00172         }
00173 
00174 const CBaseMtmUiData::CBitmapArray& CTxtiMtmUiData::ContextIcon(const TMsvEntry& aContext, TInt /*aStateFlags*/) const
00175 // Get context-specific icon
00176 // Text UI Data MTM has 3 sets of message icons relating to the priority of the message
00177         {
00178         __ASSERT_ALWAYS(aContext.iMtm==KUidMsgTypeText, Panic(ETxtiMtmUdWrongMtm));
00179         __ASSERT_ALWAYS(aContext.iType!=KUidMsvAttachmentEntry, Panic(ETxtiMtmUdNoIconForAttachment));
00180 
00181         TInt retIndex=ETxtiLowPriority;
00182         if (aContext.iType == KUidMsvServiceEntry)
00183                 retIndex=ETxtiService;
00184         else if (aContext.iType == KUidMsvFolderEntry)
00185                 retIndex=ETxtiFolder;
00186         else if (aContext.Priority()==EMsvMediumPriority)
00187                 retIndex=ETxtiNormalPriority;
00188         else if (aContext.Priority()==EMsvHighPriority)
00189                 retIndex=ETxtiHighPriority;
00190         return *iIconArrays->At(retIndex);
00191         }
00192 
00193 //
00194 // Context-specific information
00195 //
00196 
00197 TBool CTxtiMtmUiData::CanOpenEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const
00198         {
00199         __ASSERT_ALWAYS(aContext.iMtm==KUidMsgTypeText, Panic(ETxtiMtmUdWrongMtm));
00200         __ASSERT_ALWAYS(aContext.iType!=KUidMsvAttachmentEntry, Panic(ETxtiMtmUdAttachmentsNotSupported));
00201 
00202         aReasonResourceId=0;
00203         if ( aContext.iType != KUidMsvMessageEntry )
00204                 {
00205                 aReasonResourceId=R_TEXTUD_ONLY_MESSAGES;
00206                 return KErrNotSupported;
00207                 }
00208         else
00209                 return KErrNone;
00210         }
00211 
00212 TBool CTxtiMtmUiData::CanCloseEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const
00213         {
00214         __ASSERT_ALWAYS(aContext.iMtm==KUidMsgTypeText, Panic(ETxtiMtmUdWrongMtm));
00215         __ASSERT_ALWAYS(aContext.iType!=KUidMsvAttachmentEntry, Panic(ETxtiMtmUdAttachmentsNotSupported));
00216 
00217         aReasonResourceId=0;
00218         if ( aContext.iType != KUidMsvMessageEntry )
00219                 {
00220                 aReasonResourceId=R_TEXTUD_ONLY_MESSAGES;
00221                 return KErrNotSupported;
00222                 }
00223         else
00224                 return KErrNone;
00225         }
00226 
00227 TBool CTxtiMtmUiData::CanViewEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const
00228         {
00229         __ASSERT_ALWAYS(aContext.iMtm==KUidMsgTypeText, Panic(ETxtiMtmUdWrongMtm));
00230         __ASSERT_ALWAYS(aContext.iType!=KUidMsvAttachmentEntry, Panic(ETxtiMtmUdAttachmentsNotSupported));
00231 
00232         aReasonResourceId=0;
00233         if ( aContext.iType != KUidMsvMessageEntry )
00234                 {
00235                 aReasonResourceId=R_TEXTUD_ONLY_MESSAGES;
00236                 return KErrNotSupported;
00237                 }
00238         else
00239                 return KErrNone;
00240         }
00241 
00242 TBool CTxtiMtmUiData::CanEditEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const
00243         {
00244         __ASSERT_ALWAYS(aContext.iMtm==KUidMsgTypeText, Panic(ETxtiMtmUdWrongMtm));
00245         __ASSERT_ALWAYS(aContext.iType!=KUidMsvAttachmentEntry, Panic(ETxtiMtmUdAttachmentsNotSupported));
00246 
00247         aReasonResourceId=0;
00248         if ( aContext.iType == KUidMsvFolderEntry )
00249                 {
00250                 aReasonResourceId=R_TEXTUD_CAN_NOT_EDIT_FOLDERS;
00251                 return KErrNotSupported;
00252                 }
00253         else
00254                 return KErrNone;
00255         }
00256 
00257 
00258 TBool CTxtiMtmUiData::CanDeleteFromEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const
00259         {
00260         __ASSERT_ALWAYS(aContext.iMtm==KUidMsgTypeText, Panic(ETxtiMtmUdWrongMtm));
00261         __ASSERT_ALWAYS(aContext.iType!=KUidMsvAttachmentEntry, Panic(ETxtiMtmUdAttachmentsNotSupported));
00262         
00263         aReasonResourceId=0;
00264         return KErrNone;
00265         }
00266 
00267 TBool CTxtiMtmUiData::CanCopyMoveToEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const
00268         {
00269         __ASSERT_ALWAYS(aContext.iMtm==KUidMsgTypeText, Panic(ETxtiMtmUdWrongMtm));
00270         __ASSERT_ALWAYS(aContext.iType!=KUidMsvAttachmentEntry, Panic(ETxtiMtmUdAttachmentsNotSupported));
00271 
00272         aReasonResourceId=0;
00273         return KErrNone;
00274         }
00275 
00276 TBool CTxtiMtmUiData::CanCopyMoveFromEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const
00277         {
00278         __ASSERT_ALWAYS(aContext.iMtm==KUidMsgTypeText, Panic(ETxtiMtmUdWrongMtm));
00279         __ASSERT_ALWAYS(aContext.iType!=KUidMsvAttachmentEntry, Panic(ETxtiMtmUdAttachmentsNotSupported));
00280 
00281         aReasonResourceId=0;
00282         return KErrNone;
00283         }
00284 
00285 TBool CTxtiMtmUiData::CanReplyToEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const
00286 //
00287 // MTM UI does not support replying.
00288 //
00289     {
00290         __ASSERT_ALWAYS(aContext.iMtm==KUidMsgTypeText, Panic(ETxtiMtmUdWrongMtm));
00291         __ASSERT_ALWAYS(aContext.iType!=KUidMsvAttachmentEntry, Panic(ETxtiMtmUdAttachmentsNotSupported));
00292         
00293         aReasonResourceId=R_TEXTUD_NOT_SUPPORTED;
00294         return KErrNotSupported;
00295     }
00296 
00297 TBool CTxtiMtmUiData::CanForwardEntryL(const TMsvEntry& aContext, TInt& aReasonResourceId) const
00298 //
00299 // MTM UI does not supports forwarding.
00300 //
00301     {
00302         __ASSERT_ALWAYS(aContext.iMtm==KUidMsgTypeText, Panic(ETxtiMtmUdWrongMtm));
00303         __ASSERT_ALWAYS(aContext.iType!=KUidMsvAttachmentEntry, Panic(ETxtiMtmUdAttachmentsNotSupported));
00304 
00305         aReasonResourceId=R_TEXTUD_NOT_SUPPORTED;
00306         return KErrNotSupported;
00307     }
00308 
00309 
00310 TBool CTxtiMtmUiData::CanCreateEntryL(const TMsvEntry& aParent, TMsvEntry& aNewEntry, 
00311                                                                           TInt& aReasonResourceId) const
00312         {
00313         __ASSERT_ALWAYS(aNewEntry.iMtm==KUidMsgTypeText, Panic(ETxtiMtmUdWrongMtm));
00314         __ASSERT_ALWAYS(aNewEntry.iType!=KUidMsvAttachmentEntry, Panic(ETxtiMtmUdAttachmentsNotSupported));
00315 
00316         aReasonResourceId=0;
00317         // --- Can create services if they are off root ---
00318         if (aNewEntry.iType == KUidMsvServiceEntry)
00319                 return (aParent.Id() == KMsvRootIndexEntryIdValue);
00320 
00321         // --- Can create messages in local folders ---
00322         if (aNewEntry.iType == KUidMsvMessageEntry)
00323                 return (aParent.iMtm.iUid == KMsvLocalServiceIndexEntryIdValue);
00324 
00325         return KErrNotSupported;
00326         }
00327 
00328 TBool CTxtiMtmUiData::CanDeleteServiceL(const TMsvEntry& aService, TInt& aReasonResourceId)const
00329         {
00330         __ASSERT_ALWAYS(aService.iMtm==KUidMsgTypeText, Panic(ETxtiMtmUdWrongMtm));
00331 
00332         aReasonResourceId=0;
00333         return KErrNone;
00334         }
00335 
00336 TBool CTxtiMtmUiData::CanCancelL(const TMsvEntry& /*aContext*/, TInt& /*aReasonResourceId*/) const
00337         {
00338         return EFalse;  
00339         }
00340 
00341 HBufC* CTxtiMtmUiData::StatusTextL(const TMsvEntry& /*aContext*/) const
00342         {
00343         HBufC* statusBuffer = HBufC::NewL(15);
00344         *statusBuffer = KTxtiReadyToSend;
00345         return statusBuffer;
00346         }

Generated on Thu Jan 21 10:32:59 2010 for TB10.1 Example Applications by  doxygen 1.5.3