uiservicetab/vimpstcmdprocess/src/cvimpstcmdfactory.cpp
changeset 0 5e5d6b214f4f
child 9 9fdee5e1da30
equal deleted inserted replaced
-1:000000000000 0:5e5d6b214f4f
       
     1 /*
       
     2 * Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  implementation for CVIMPSTCmdFactory
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 // INCLUDE FILES
       
    20 #include "cvimpstcmdfactory.h"
       
    21 #include "cvimpstprocessarray.h"
       
    22 #include "cvimpstcmdcca.h"
       
    23 #include "cvimpstcmdlogin.h"
       
    24 #include "cvimpstcmdlogout.h"
       
    25 #include "cvimpstcmdcancellogin.h"
       
    26 
       
    27 #include "mvimpstcmdobserver.h"
       
    28 #include "mvimpstengine.h"
       
    29 #include "tvimpstconsts.h"
       
    30 #include "cvimpststoragemanagerfactory.h"
       
    31 #include "cvimpstcmdaddcontact.h"
       
    32 #include "cvimpstcmddeletecontact.h"
       
    33 #include "tvimpstconsts.h"
       
    34 #include "cvimpstcmdchangeownstatus.h"
       
    35 #include "cvimpstcmdchangeownmessage.h"
       
    36 #include "cvimpstcmdsearch.h"
       
    37 #include "cvimstcmdfriendrequest.h"
       
    38 #include "cvimpstcmdchangeownavtar.h"
       
    39 #include "cvimpstcmdcloseconversation.h"
       
    40 #include "cvimpstcmdaddtopbk.h"
       
    41 #include "cvimpstcmdprocessselectedcontact.h"
       
    42 #include "cvimpstcmdblockcontact.h"
       
    43 #include "cvimpstcmdunblockcontact.h"
       
    44 #include "cvimpstcmdfetchblockedlist.h"
       
    45 
       
    46 
       
    47 // ================= MEMBER FUNCTIONS =======================
       
    48 
       
    49 
       
    50 // --------------------------------------------------------------------------
       
    51 // CVIMPSTCmdFactory::CVIMPSTCmdFactory
       
    52 // --------------------------------------------------------------------------
       
    53 //
       
    54 CVIMPSTCmdFactory::CVIMPSTCmdFactory(MVIMPSTEngine& aEngine) :
       
    55 iEngine(aEngine)
       
    56     {
       
    57     }
       
    58 
       
    59 
       
    60 // --------------------------------------------------------------------------
       
    61 // CVIMPSTCmdFactory::ConstructL
       
    62 // --------------------------------------------------------------------------
       
    63 //
       
    64 void CVIMPSTCmdFactory::ConstructL()
       
    65     {
       
    66     
       
    67     TUint32 serviceId = iEngine.ServiceId();
       
    68     
       
    69     //Make sure we initialise the Storage view for this service
       
    70     HBufC* storeName = HBufC::NewLC( KVIMPSTUISPSMaxPropertyLength );
       
    71 	
       
    72 	TPtr storeNamePtr( storeName->Des() );  
       
    73 	
       
    74 	iEngine.ContactStoreIdL(storeNamePtr);
       
    75 	
       
    76     CVIMPSTStorageManagerFactory::InitialiseViewL(serviceId, *storeName, iEngine.ServiceName());
       
    77     
       
    78     CleanupStack::PopAndDestroy(); //storeName	
       
    79     
       
    80     iEngine.IntializeStorageL();
       
    81     	
       
    82     
       
    83     //create the array process
       
    84     iArrayProcess =  CVIMPSTProcessArray::NewL( iEngine );
       
    85 
       
    86 	iEngine.RegisterServiceSessionObserverL(this);
       
    87 	
       
    88     }
       
    89 
       
    90 
       
    91 // --------------------------------------------------------------------------
       
    92 // CVIMPSTCmdFactory::NewL
       
    93 // --------------------------------------------------------------------------
       
    94 //
       
    95 CVIMPSTCmdFactory* CVIMPSTCmdFactory::NewL(MVIMPSTEngine& aEngine)
       
    96     {
       
    97     CVIMPSTCmdFactory* self = new (ELeave) CVIMPSTCmdFactory(aEngine);
       
    98     CleanupStack::PushL(self);
       
    99     self->ConstructL();
       
   100     CleanupStack::Pop(self);
       
   101     return self;
       
   102     }
       
   103 
       
   104 
       
   105 // --------------------------------------------------------------------------
       
   106 // CVIMPSTCmdFactory::~CVIMPSTCmdFactory
       
   107 // --------------------------------------------------------------------------
       
   108 //
       
   109 CVIMPSTCmdFactory::~CVIMPSTCmdFactory()
       
   110     {
       
   111     
       
   112     iEngine.UnIntializeStorage();
       
   113     iEngine.UnRegisterServiceSessionObserver(this);
       
   114     
       
   115     iObservers.Reset();
       
   116     iObservers.Close();
       
   117     
       
   118     delete iArrayProcess;
       
   119     iArrayProcess = NULL;   
       
   120 
       
   121     }
       
   122 
       
   123 
       
   124 // --------------------------------------------------------------------------
       
   125 // CVIMPSTCmdFactory::CreateCommandForIdL
       
   126 // --------------------------------------------------------------------------
       
   127 //
       
   128 MVIMPSTCmd* CVIMPSTCmdFactory::CreateCommandForIdL(
       
   129         TImCommandId aCommandId,TAny* aData /*NULL*/) 
       
   130     {
       
   131     
       
   132     MVIMPSTCmd* commd = NULL;
       
   133 	
       
   134 	//Instantiate appropriate command    
       
   135     switch ( aCommandId )
       
   136 	    {
       
   137        	case ELoginService:    
       
   138     		{     		
       
   139     		commd = CVIMPSTCmdLogin::NewL(aCommandId,*(TUint32*)aData, iEngine);
       
   140     		break;	
       
   141     		}
       
   142     		
       
   143 	    case ELogoutService:
       
   144 	    	{	    	
       
   145     		commd = CVIMPSTCmdLogout::NewL(aCommandId,*(TUint32*)aData, iEngine);
       
   146     		break;		
       
   147 	    	}
       
   148 	    case ELaunchCCA:
       
   149 	    	{
       
   150 	    	commd = CVIMPSTCmdCCA::NewL(aCommandId,     									
       
   151     									(*(TLaunchCCAData*)aData).iIndex,
       
   152     									(*(TLaunchCCAData*)aData).iConnection,
       
   153     									*iArrayProcess, 
       
   154     									iEngine );
       
   155 	    	break;
       
   156 		    		
       
   157 	    	}
       
   158 	    case EAddContact:
       
   159 	    	{
       
   160 	    	commd = CVIMPSTCmdAddContact::NewL(aCommandId,*(TDesC*) aData, iEngine);
       
   161 	    	break;
       
   162 		    		
       
   163 	    	}
       
   164 	    case EDeleteContact:
       
   165 	    	{
       
   166 	    	commd = CVIMPSTCmdDeleteContact::NewL(aCommandId,*(MVPbkContactLink**) aData, iEngine);
       
   167 	    	break;
       
   168 		    		
       
   169 	    	}
       
   170 	    case EChangeOwnStatus:
       
   171 	    	{
       
   172 	    	commd = CVIMPSTCmdChangeOwnStatus::NewL(aCommandId,*(TStatusAndStatusText*) aData, iEngine);
       
   173 	    	break;
       
   174 		    		
       
   175 	    	}
       
   176 	    case EChangeOwnMessage:
       
   177 	    	{
       
   178 	    	commd = CVIMPSTCmdChangeOwnMessage::NewL(aCommandId,*(TStatusAndStatusText*) aData, iEngine);
       
   179 	    	break;
       
   180 		    		
       
   181 	    	}	    	    	
       
   182 	     case ESearch:
       
   183 	    	{
       
   184 	    	commd = CVIMPSTCmdSearch::NewL(aCommandId,*(RArray<TVIMPSTSearchKeyData>*) aData, iEngine);
       
   185 	    	break;
       
   186 		    		
       
   187 	    	}	 
       
   188 	     case EFriendAccpeted:
       
   189 	     case EFriendRejected:
       
   190 	         {
       
   191 	         commd = CVIMPSTCmdFriendRequest::NewL(aCommandId,*(TDesC*) aData, iEngine);
       
   192 	         break;
       
   193 	         }    
       
   194 	     case EChangeOwnAvtar:
       
   195 	         {
       
   196 	         commd = CVIMPSTCmdChangeOwnAvtar::NewL(aCommandId,*(TAvatarData*) aData, iEngine);
       
   197 	         break;
       
   198 	         }
       
   199 	     case ECloseConversation:
       
   200 	         {
       
   201 	         commd = CVIMPSTCmdCloseConversation::NewL(aCommandId,*(TDesC*) aData, iEngine);
       
   202 	         break;
       
   203 	         }
       
   204 	         
       
   205 	     case EAddToPbk:
       
   206 	         {
       
   207 	         commd = CVIMPSTCmdAddToPbk::NewL(aCommandId,*(MVIMPSTStorageContact*) aData, iEngine);
       
   208 	         break;
       
   209 	         }
       
   210 	     case ECancelLogin:
       
   211 	         {
       
   212 	         commd = CVIMPSTCmdCancelLogin::NewL(aCommandId ,iEngine);
       
   213 	         break;
       
   214 	         }
       
   215 	     case ECmdProcessAcceptedContactNew:    
       
   216 	     case ECmdProcessSelectedContactNew:
       
   217 	     case ECmdProcessAcceptedContactExist:
       
   218 	     case ECmdProcessSelectedContactExist:
       
   219 	         {
       
   220 	         commd = CVIMPSTCmdProcessSelectedContact::NewL( aCommandId, *(TVPbkSelectedData*)aData, iEngine );	                 
       
   221 	         break;
       
   222 	         }
       
   223 	     case ECmdBlockContact:
       
   224              {
       
   225              commd = CVIMPSTCmdBlockContact::NewL(aCommandId,*(TDesC*) aData, *iArrayProcess , iEngine);
       
   226              break;
       
   227                      
       
   228              }
       
   229 	     case ECmdUnBlockContact:
       
   230              {
       
   231              commd = CVIMPSTCmdUnBlockContact::NewL(aCommandId,*(TDesC*) aData, iEngine);
       
   232              break;
       
   233                      
       
   234              }
       
   235 		case EFetchBlockedList:
       
   236 			{
       
   237              commd = CVIMPSTCmdFetchBlockedContactList::NewL(aCommandId, iEngine);
       
   238 			break;
       
   239 			}
       
   240     	default:
       
   241     		{
       
   242     		break;	
       
   243     		}
       
   244 	    		
       
   245 	    }   
       
   246 	    
       
   247     return commd;
       
   248     
       
   249     }
       
   250 
       
   251 // --------------------------------------------------------------------------
       
   252 // CVIMPSTCmdFactory::HandleServiceEventL
       
   253 // --------------------------------------------------------------------------
       
   254 //
       
   255 void CVIMPSTCmdFactory::HandleServiceEventL
       
   256 	    			( TVIMPSTEnums::TVIMPSTRegistrationState aState,TInt aServiceError )
       
   257 	{
       
   258 	// need not to store update complete state
       
   259 	iArrayProcess->SetLoginStateL( aState );
       
   260 	for( TInt index( 0 ); index < iObservers.Count(); ++index )
       
   261 		{
       
   262 		iObservers[index]->HandleCommandEventL(aState,aServiceError);
       
   263 		}
       
   264 
       
   265 	}
       
   266 // --------------------------------------------------------------------------
       
   267 // CVIMPSTCmdFactory::AddObserver
       
   268 // --------------------------------------------------------------------------
       
   269 //
       
   270 void CVIMPSTCmdFactory::AddObserverL(MVIMPSTCmdObserver* aObserver)
       
   271 	{
       
   272 	if( iObservers.Find( aObserver ) == KErrNotFound )
       
   273         {
       
   274         User::LeaveIfError( iObservers.Append( aObserver ) );
       
   275         }
       
   276 
       
   277 	}
       
   278 // --------------------------------------------------------------------------
       
   279 // CVIMPSTCmdFactory::RemoveObserver
       
   280 // --------------------------------------------------------------------------
       
   281 //
       
   282 void CVIMPSTCmdFactory::RemoveObserver(MVIMPSTCmdObserver* aObserver)
       
   283 	{
       
   284 	
       
   285 	TInt index( iObservers.Find( aObserver) );
       
   286     
       
   287     if( index != KErrNotFound )
       
   288         {
       
   289         iObservers.Remove( index );
       
   290         }
       
   291     
       
   292 	}
       
   293 
       
   294 
       
   295 // --------------------------------------------------------------------------
       
   296 // CVIMPSTCmdFactory::GetProcessInterface
       
   297 // --------------------------------------------------------------------------
       
   298 //
       
   299 MVIMPSTProcessArray& CVIMPSTCmdFactory::GetProcessInterface() 
       
   300 	{
       
   301 	return *iArrayProcess; 	
       
   302 	}	
       
   303 // End of File
       
   304