diff -r edfc90759b9f -r 18b321db4884 imageeditor/imageeditorApp/src/ImageEditorAppUi.cpp --- a/imageeditor/imageeditorApp/src/ImageEditorAppUi.cpp Fri Jan 29 13:53:17 2010 +0200 +++ b/imageeditor/imageeditorApp/src/ImageEditorAppUi.cpp Thu Jun 03 18:57:10 2010 +0800 @@ -1,30 +1,27 @@ /* -* Copyright (c) 2010 Ixonos Plc. -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of the "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: -* Ixonos Plc -* -* Description: -* Image Editor AppUI class. -* -*/ - - + * Copyright (c) 2010 Ixonos Plc. + * All rights reserved. + * This component and the accompanying materials are made available + * under the terms of the "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: + * Ixonos Plc + * + * Description: + * Image Editor AppUI class. + * + */ // INCLUDE FILES #include #include #include #include #include - #include #include #include @@ -34,1110 +31,1097 @@ #include #include #include - #include #include #include #include #include - #ifdef VERBOSE #include #endif - #include #include - #include #include "ImageEditorUI.hrh" #include "ImageEditorPanics.h" - #include "imageeditoruids.hrh" #include "commondefs.h" -//#include "platform_security_literals.hrh" - #include "ImageEditorApp.h" #include "ImageEditorAppUi.h" #include "ImageEditorUIView.h" #include "ImageEditorUI.hrh" #include "ImageEditorError.h" #include "PluginInfo.h" - #include "ImageEditorPluginLocator.h" #include "ImageEditorPluginManager.h" #include "ImageEditorImageController.h" - +#include "ImageEditorUIContainer.h" #include "ImageEditorUtils.h" #include "ResolutionUtil.h" #include "Callback.h" - // CONSTANTS - // Panic category _LIT(KComponentName, "ImageEditorAppUi"); - -const TInt KObConstructCallBackID = 1; -const TInt KObInitPluginID = 1000; -const TInt KObReturnFromPluginID = 1001; -const TInt KObCancelCallbackID = 1002; -const TInt KObUndoDCallbackID = 1003; -const TInt KObSendCallbackID = 1004; -const TInt KObPrintCallbackID = 1005; -const TInt KObSaveCallbackID = 1006; +_LIT(KDrawPlugin,"draw.pgn"); +_LIT(KNull,""); + +const TInt KObConstructCallBackID = 1; +const TInt KObInitPluginID = 1000; +const TInt KObReturnFromPluginID = 1001; +const TInt KObCancelCallbackID = 1002; +const TInt KObUndoDCallbackID = 1003; +const TInt KObSendCallbackID = 1004; +const TInt KObPrintCallbackID = 1005; +const TInt KObSaveCallbackID = 1006; //============================================================================= CImageEditorAppUi::CImageEditorAppUi() : - // Initialize application flags and variables - iDocumentName(), - iSourceFileName(), - iImageSaved (EFalse), - iForeground (ETrue), - iExitFromApp (EFalse), - iSaveOnExit (ETrue), - iSysExit (EFalse), - iBusy (ETrue), - iOrientationChanged (EFalse), - iSaving (EFalse), - iSending (EFalse), - iPrinting (EFalse), - iCancelling (EFalse), - iFullScreen (EFalse), - iPluginsScanned (EFalse), - iImageLoaded (EFalse), - iEditorReady (EFalse), - iCancelTextInputActive (EFalse), - iProcessPriorityAltered (EFalse) -{ - -} + // Initialize application flags and variables + iDocumentName(), iSourceFileName(), iImageSaved(EFalse), + iForeground(ETrue), iExitFromApp(EFalse), iSaveOnExit(ETrue), + iSysExit(EFalse), iBusy(ETrue), iOrientationChanged(EFalse), + iSaving(EFalse), iSending(EFalse), iPrinting(EFalse), iCancelling( + EFalse), iFullScreen(EFalse), iPluginsScanned(EFalse), + iImageLoaded(EFalse), iEditorReady(EFalse), iCancelTextInputActive( + EFalse), iProcessPriorityAltered(EFalse) + { + + } //============================================================================= void CImageEditorAppUi::ConstructL() -{ - LOG(KImageEditorLogFile, "CImageEditorAppUi::ConstructL"); + { + LOG(KImageEditorLogFile, "CImageEditorAppUi::ConstructL"); // Initialize UI with standard values, read application resource file, // read default document #ifdef LANDSCAPE_ONLY - BaseConstructL( EAppOrientationLandscape | EAknEnableSkin | EAknEnableMSK ); + BaseConstructL( EAppOrientationLandscape | EAknEnableSkin | EAknEnableMSK ); #else #ifdef LANDSCAPE_SUPPORT - BaseConstructL( EAppOrientationAutomatic|EAknEnableSkin | EAknEnableMSK ); + BaseConstructL(EAppOrientationAutomatic | EAknEnableSkin | EAknEnableMSK); #else - BaseConstructL( EAknEnableSkin | EAknEnableMSK ); + BaseConstructL( EAknEnableSkin | EAknEnableMSK ); #endif #endif // LANDSCAPE_SUPPORT - - // Set busy - SetBusy(); - - // Create main view - CImageEditorUIView * view = new (ELeave) CImageEditorUIView; - CleanupStack::PushL (view); - view->ConstructL(); - view->ConstructMenuAndCbaEarlyL(); + // Set busy + SetBusy(); + + // Create main view + CImageEditorUIView * view = new (ELeave) CImageEditorUIView; + CleanupStack::PushL(view); + view->ConstructL(); + view->ConstructMenuAndCbaEarlyL(); iEditorView = view; - AddViewL (view); // transfers ownership - CleanupStack::Pop(); // view - LOG (KImageEditorLogFile, "CImageEditorAppUi: Main view created"); - - // Activate view - ActivateLocalViewL ( iEditorView->Id() ); - LOG(KImageEditorLogFile, "CImageEditorAppUi: View activated"); - - // Set default navi pane text - ClearTitlePaneTextL(); - ClearNaviPaneTextL(); - - // Create CObCallback instance + AddViewL(view); // transfers ownership + CleanupStack::Pop(); // view + LOG (KImageEditorLogFile, "CImageEditorAppUi: Main view created"); + + // Activate view + ActivateLocalViewL(iEditorView->Id()); + LOG(KImageEditorLogFile, "CImageEditorAppUi: View activated"); + + // Set default navi pane text + ClearTitlePaneTextL(); + ClearNaviPaneTextL(); + + // Create CObCallback instance iConstructionState = EConstructionStateAlloc; - iCallback = CObCallback::NewL ( (MObCallbackMethod *)this ); - iCallback->DoCallback (KObConstructCallBackID); - - // Volume key observer instance - iVolumeKeyObserver = CImageEditorRemConObserver::NewL( *this ); - + iCallback = CObCallback::NewL((MObCallbackMethod *) this); + iCallback->DoCallback(KObConstructCallBackID); + + // Volume key observer instance + iVolumeKeyObserver = CImageEditorRemConObserver::NewL(*this); + + iStandby = EFalse; #ifdef S60_31_VOLUME_KEYS iMGXRemConTarget = CMGXRemConTarget::NewL( this ); #endif -} + } //============================================================================= CImageEditorAppUi::~CImageEditorAppUi() -{ - LOG(KImageEditorLogFile, "CImageEditorAppUi::~CImageEditorAppUi() starting..."); + { + LOG(KImageEditorLogFile, "CImageEditorAppUi::~CImageEditorAppUi() starting..."); //KillWaitNote(); if (iWaitNote != NULL) { - delete iWaitNote; - iWaitNote = NULL; + delete iWaitNote; + iWaitNote = NULL; } - - delete iLocator; - delete iImageController; - delete iEditorManager; + + delete iLocator; + delete iImageController; + delete iEditorManager; delete iSendAppUi; delete iCallback; iSourceImageMgAlbumIdList.Close(); - iEditorView = NULL; - + iEditorView = NULL; + iFile.Close(); - + #ifdef S60_31_VOLUME_KEYS delete iMGXRemConTarget; #endif - + // deleted by CCoeEnv iResolutionUtil = NULL; delete iVolumeKeyObserver; - LOG(KImageEditorLogFile, "CImageEditorAppUi: AppUi deleted"); -} + LOG(KImageEditorLogFile, "CImageEditorAppUi: AppUi deleted"); + } //============================================================================= -void CImageEditorAppUi::OperationReadyL ( - TOperationCode aOpId, - TInt aError - ) -{ - LOGFMT2(KImageEditorLogFile, "CImageEditorAppUi:OperationReadyL (aOpId:%d, aError:%d)", (TInt)aOpId, aError); - - // Kill wait note - KillWaitNote(); - - // Handle error - if ( aError != KErrNone ) +void CImageEditorAppUi::OperationReadyL(TOperationCode aOpId, TInt aError) { - switch ( aOpId ) + LOGFMT2(KImageEditorLogFile, "CImageEditorAppUi:OperationReadyL (aOpId:%d, aError:%d)", (TInt)aOpId, aError); + + // Kill wait note + KillWaitNote(); + + // Handle error + if (aError != KErrNone) { + switch (aOpId) + { case EOperationCodeLoad: case EOperationCodeBlockLoad: case EOperationCodeSearch: - { - - if (KErrCancel == aError) - { - // Loading image was cancelled. - User::Leave (KSIEEErrorOkToExit); - } - else - { - User::Leave (KSIEEOpenFile); - } - break; - } - case EOperationCodeSave: - case EOperationCodeBlockSave: - { - LOG(KImageEditorLogFile, "CImageEditorAppUi: Save cancelled"); + { + + if (KErrCancel == aError) + { + // Loading image was cancelled. + User::Leave(KSIEEErrorOkToExit); + } + else + { + User::Leave(KSIEEOpenFile); + } + break; + } + case EOperationCodeSave: + case EOperationCodeBlockSave: + { + LOG(KImageEditorLogFile, "CImageEditorAppUi: Save cancelled"); #ifdef VERBOSE - LOGFMT3(KImageEditorLogFile, "\tiSourceFileName: %S, iDocumentName: %S, iTempSaveFileName: %S", &iSourceFileName, &iDocumentName, &iTempSaveFileName); + LOGFMT3(KImageEditorLogFile, "\tiSourceFileName: %S, iDocumentName: %S, iTempSaveFileName: %S", &iSourceFileName, &iDocumentName, &iTempSaveFileName); #endif - iSaving = EFalse; - - // delete the temporary files - DeleteTempFiles(); - - // Reset bitmap sink and screen size - UpdateScreenRectL(); - iOrientationChanged = EFalse; - - - if (!iExitFromApp) - { - - if (iSending) - { - // Restore document name - iEditorManager->SetImageName (iDocumentName); - iSending = EFalse; - } - if (KErrCancel == aError) - { - // KErrCancel means user cancel, not an error. - ResetBusy(); - } - else - { - // Leave in case of error. - User::Leave (KSIEESaveFile); - } - } - else - { - TInt exit = 0; - if (iSaveOnExit) - { - exit = ((CImageEditorUIView *)iEditorView)->LaunchExitWithoutSavingQueryL(); - } - - if (exit == EImageEditorSoftkeyCmdYes || !iSaveOnExit) - { - // If the image has not been saved before, the reserved target - // file has zero size and can be deleted. - TEntry entry; - TInt err = iEikonEnv->FsSession().Entry( iDocumentName, entry ); - if ( err == KErrNone && entry.iSize == 0 ) - { - BaflUtils::DeleteFile (iEikonEnv->FsSession(), iDocumentName); - } - - // Exit the application - User::Leave (KSIEEErrorOkToExit); - } - else - { - iExitFromApp = EFalse; - ResetBusy(); - } - } - SetOrientationL(EAppUiOrientationUnspecified); - break; - } - default: - { - User::Leave (aError); - break; - } + iSaving = EFalse; + + // delete the temporary files + DeleteTempFiles(); + + // Reset bitmap sink and screen size + UpdateScreenRectL(); + iOrientationChanged = EFalse; + + if (!iExitFromApp) + { + + if (iSending) + { + // Restore document name + iEditorManager->SetImageName(iDocumentName); + iSending = EFalse; + } + if (KErrCancel == aError) + { + // KErrCancel means user cancel, not an error. + ResetBusy(); + } + else + { + // Leave in case of error. + User::Leave(KSIEESaveFile); + } + } + else + { + TInt exit = 0; + if (iSaveOnExit) + { + exit + = ((CImageEditorUIView *) iEditorView)->LaunchExitWithoutSavingQueryL(); + } + + if (exit == EImageEditorSoftkeyCmdYes || !iSaveOnExit) + { + // If the image has not been saved before, the reserved target + // file has zero size and can be deleted. + TEntry entry; + TInt err = iEikonEnv->FsSession().Entry(iDocumentName, + entry); + if (err == KErrNone && entry.iSize == 0) + { + BaflUtils::DeleteFile(iEikonEnv->FsSession(), + iDocumentName); + } + + // Exit the application + User::Leave(KSIEEErrorOkToExit); + } + else + { + iExitFromApp = EFalse; + ResetBusy(); + } + } + SetOrientationL(EAppUiOrientationUnspecified); + break; + } + default: + { + User::Leave(aError); + break; + } + } } - } else - { - switch ( aOpId ) { + switch (aOpId) + { case EOperationCodeLoad: case EOperationCodeBlockLoad: - { - LOG(KImageEditorLogFile, "CImageEditorAppUi: Image loaded"); - - // Find out whether the source file belongs to any albums - ImageEditorUtils::FindAlbumsForImageFileL ( - iSourceImageMgAlbumIdList, - iSourceFileName ); - - // Generate the name for the saved file - TInt err = ImageEditorUtils::GenerateNewDocumentNameL ( - iEikonEnv->FsSession(), - iSourceFileName, - iDocumentName, - &iSourceImageMgAlbumIdList ); + { + LOG(KImageEditorLogFile, "CImageEditorAppUi: Image loaded"); + + // Find out whether the source file belongs to any albums + ImageEditorUtils::FindAlbumsForImageFileL( + iSourceImageMgAlbumIdList, iSourceFileName); + + // Generate the name for the saved file + TInt err = ImageEditorUtils::GenerateNewDocumentNameL( + iEikonEnv->FsSession(), iSourceFileName, iDocumentName, + &iSourceImageMgAlbumIdList); // Delete old temp files, which could exist if the exit was not clean DeleteTempFiles(); - - // If there is not enough disk space to save the edited image, show - // error note but continue anyway (user can free up memory before saving) - if (KSIEENotEnoughDiskSpace == err) - { - ShowErrorNoteL (err); - } - else if (KErrNone != err) - { - // Fatal error - User::Leave (err); - } - iEditorManager->SetImageName (iDocumentName); - iImageLoaded = ETrue; - InitializeUiItemsL(); - - if (!iOrientationChanged) - { - // Immediately display the loaded image - ((CImageEditorUIView *)iEditorView)-> - SetImageL ( iEditorManager->GetPreviewImage() ); - } - - ApplicationReadyL(); - + + // If there is not enough disk space to save the edited image, show + // error note but continue anyway (user can free up memory before saving) + if (KSIEENotEnoughDiskSpace == err) + { + ShowErrorNoteL(err); + } + else if (KErrNone != err) + { + // Fatal error + User::Leave(err); + } + iEditorManager->SetImageName(iDocumentName); + iImageLoaded = ETrue; + InitializeUiItemsL(); + + if (!iOrientationChanged) + { + // Immediately display the loaded image + ((CImageEditorUIView *) iEditorView)-> SetImageL( + iEditorManager->GetPreviewImage()); + } + + ApplicationReadyL(); + // Do not have to keep file open anymore. // Fixes problem with Online Printing iFile.Close(); - break; - } + break; + } case EOperationCodeSave: case EOperationCodeBlockSave: - { - LOG(KImageEditorLogFile, "CImageEditorAppUi: Image saved"); + { + LOG(KImageEditorLogFile, "CImageEditorAppUi: Image saved"); #ifdef VERBOSE - LOGFMT3(KImageEditorLogFile, "\tiSourceFileName: %S, iDocumentName: %S, iTempSaveFileName: %S", &iSourceFileName, &iDocumentName, &iTempSaveFileName); + LOGFMT3(KImageEditorLogFile, "\tiSourceFileName: %S, iDocumentName: %S, iTempSaveFileName: %S", &iSourceFileName, &iDocumentName, &iTempSaveFileName); #endif - ResetBusy(); - iSaving = EFalse; - - RFs & fs = iEikonEnv->FsSession(); - if ( BaflUtils::FileExists (fs, iTempSaveFileName )) - { - // Image has been successfully saved - iImageSaved = ETrue; - - CFileMan* fileMan = CFileMan::NewL( fs ); - CleanupStack::PushL( fileMan ); - - // the temporary image file and the target file are located in the same drive - if ( iTempSaveFileName.Left(1) == iDocumentName.Left(1) ) - { - User::LeaveIfError( fileMan->Rename( iTempSaveFileName, iDocumentName )); - } - // the temporary image file and the target file are not in the same drive - else - { - User::LeaveIfError( fileMan->Move( iTempSaveFileName, iDocumentName )); - } - CleanupStack::PopAndDestroy(); //fileMan - - // Source file changes (at least if saved with a new name) - iSourceFileName = iDocumentName; - - // Update title - SetFileNameTitlePaneL(iDocumentName); - iEditorManager->SetImageName(iDocumentName); - - LOGFMT(KImageEditorLogFile, "CImageEditorAppUi: Temp file renamed to %S", &iDocumentName); - - // Purge undo stack if on the way to exit. - // Don't purge if printing or sending the image. - if( iExitFromApp ) - { - iEditorManager->PurgeUndoRedoHistory(); - } - - FinalizeSaveL(); - } - - if (iExitFromApp) - { - DeleteTempFiles(); - User::Leave (KSIEEErrorOkToExit); - } - else - { - if (iSending) - { - // Restore document name - SetBusy(); - iEditorManager->SetImageName (iDocumentName); - iCallback->DoCallback (KObSendCallbackID); - } - - if (iPrinting) - { - // Restore document name - SetBusy(); - iEditorManager->SetImageName (iDocumentName); - iCallback->DoCallback (KObPrintCallbackID); - } - - // Reset bitmap sink and screen size - UpdateScreenRectL(); - - // Set saved image name for printing - ((CImageEditorUIView *)iEditorView)->SetImageFileName(iDocumentName); - - } - - // Update menu - SetUndoFlag (); - SetOrientationL(EAppUiOrientationUnspecified); - LOG(KImageEditorLogFile, "CImageEditorAppUi: Saving procedure completed"); - break; - } - - default: - { - break; - } - } - } -} + ResetBusy(); + iSaving = EFalse; + + RFs & fs = iEikonEnv->FsSession(); + if (BaflUtils::FileExists(fs, iTempSaveFileName)) + { + // Image has been successfully saved + iImageSaved = ETrue; + + CFileMan* fileMan = CFileMan::NewL(fs); + CleanupStack::PushL(fileMan); + + // the temporary image file and the target file are located in the same drive + if (iTempSaveFileName.Left(1) == iDocumentName.Left(1)) + { + User::LeaveIfError(fileMan->Rename(iTempSaveFileName, + iDocumentName)); + } + // the temporary image file and the target file are not in the same drive + else + { + User::LeaveIfError(fileMan->Move(iTempSaveFileName, + iDocumentName)); + } + CleanupStack::PopAndDestroy(); //fileMan + + // Source file changes (at least if saved with a new name) + iSourceFileName = iDocumentName; + + // Update title + SetFileNameTitlePaneL(iDocumentName); + iEditorManager->SetImageName(iDocumentName); + + LOGFMT(KImageEditorLogFile, "CImageEditorAppUi: Temp file renamed to %S", &iDocumentName); + + // Purge undo stack if on the way to exit. + // Don't purge if printing or sending the image. + if (iExitFromApp) + { + iEditorManager->PurgeUndoRedoHistory(); + } + + FinalizeSaveL(); + } + + if (iExitFromApp) + { + DeleteTempFiles(); + User::Leave(KSIEEErrorOkToExit); + } + else + { + if (iSending) + { + // Restore document name + SetBusy(); + iEditorManager->SetImageName(iDocumentName); + iCallback->DoCallback(KObSendCallbackID); + } + + if (iPrinting) + { + // Restore document name + SetBusy(); + iEditorManager->SetImageName(iDocumentName); + iCallback->DoCallback(KObPrintCallbackID); + } + + // Reset bitmap sink and screen size + UpdateScreenRectL(); + + // Set saved image name for printing + ((CImageEditorUIView *) iEditorView)->SetImageFileName( + iDocumentName); + + } + + // Update menu + SetUndoFlag(); + SetOrientationL(EAppUiOrientationUnspecified); + LOG(KImageEditorLogFile, "CImageEditorAppUi: Saving procedure completed"); + break; + } + + default: + { + break; + } + } + } + } //============================================================================= -void CImageEditorAppUi::RenderL () -{ - LOG(KImageEditorLogFile, "CImageEditorAppUi: Rendering..."); +void CImageEditorAppUi::RenderL() + { + LOG(KImageEditorLogFile, "CImageEditorAppUi: Rendering..."); SetBusy(); iEditorManager->ProcessImageL(); - ((CImageEditorUIView *)iEditorView)->GetContainer()->DrawNow(); + ((CImageEditorUIView *) iEditorView)->GetContainer()->DrawNow(); ResetBusy(); -} + } //============================================================================= -TKeyResponse CImageEditorAppUi::HandleKeyEventL ( - const TKeyEvent & aKeyEvent, - TEventCode aType - ) -{ - LOGFMT2(KImageEditorLogFile, "CImageEditorAppUi:HandleKeyEventL (aKeyEvent: %d, aType:\t %d)", aKeyEvent,aType); - - TKeyResponse response = EKeyWasNotConsumed; - - // if we are busy doing something +TKeyResponse CImageEditorAppUi::HandleKeyEventL(const TKeyEvent & aKeyEvent, + TEventCode aType) + { + LOGFMT2(KImageEditorLogFile, "CImageEditorAppUi:HandleKeyEventL (aKeyEvent: %d, aType:\t %d)", aKeyEvent,aType); + + TKeyResponse response = EKeyWasNotConsumed; + + // if we are busy doing something // then we consume the key - if ( iBusy || (iConstructionState != EConstructionStateReady) ) - { - response = EKeyWasConsumed; - } + if (iBusy || (iConstructionState != EConstructionStateReady)) + { + response = EKeyWasConsumed; + } // we are only interested in real key events // rather than ups or downs else if (aType != EEventKey) - { - // These are handled separately here because pressing shift key doesn't - // give EEventKey event at all - if ( aType == EEventKeyDown ) - { - switch (aKeyEvent.iScanCode) - { - case EStdKeyLeftShift: - { - iEditorView->HandleCommandL (EImageEditorPreGlobalZoomChange); - ZoomL( EZoomIn ); - iEditorView->HandleCommandL (EImageEditorGlobalZoomChanged); - response = EKeyWasConsumed; - break; - } - case EStdKeyRightShift: - { - iEditorView->HandleCommandL (EImageEditorPreGlobalZoomChange); - ZoomL( EZoomOut ); - iEditorView->HandleCommandL (EImageEditorGlobalZoomChanged); - response = EKeyWasConsumed; - break; - } - } - } - - response = EKeyWasNotConsumed; - } + { + // These are handled separately here because pressing shift key doesn't + // give EEventKey event at all + if (aType == EEventKeyDown) + { + switch (aKeyEvent.iScanCode) + { + case EStdKeyLeftShift: + { + iEditorView->HandleCommandL(EImageEditorPreGlobalZoomChange); + ZoomL(EZoomIn); + iEditorView->HandleCommandL(EImageEditorGlobalZoomChanged); + response = EKeyWasConsumed; + break; + } + case EStdKeyRightShift: + { + iEditorView->HandleCommandL(EImageEditorPreGlobalZoomChange); + ZoomL(EZoomOut); + iEditorView->HandleCommandL(EImageEditorGlobalZoomChanged); + response = EKeyWasConsumed; + break; + } + } + } + + response = EKeyWasNotConsumed; + } // scan codes for numbers are their ASCII codes - else - { - TBool rotated = LandscapeScreenOrientation(); - - switch (aKeyEvent.iScanCode) - { - - case 0x30: // 0 - { -#ifdef FULLSCREEN_AVAILABLE - if (iFullScreen) - { - ResetFullScreenL(); - } - else - { - SetFullScreenL(); - } - response = EKeyWasConsumed; -#endif // FULLSCREEN_AVAILABLE - break; - } -#ifndef LANDSCAPE_ROTATE_HOTKEYS - case 0x31: // 1 -#else - case 0x33: // 3 -#endif - { - RotateL (ERotationCounterClockwise); - response = EKeyWasConsumed; - break; - } - - case 0x32: // 2 + else + { + TBool rotated = LandscapeScreenOrientation(); + + switch (aKeyEvent.iScanCode) { - if (!rotated) - { - PanL (EDirectionUp); - response = EKeyWasConsumed; - } - else + + case 0x30: // 0 { - PanL (EDirectionLeft); - response = EKeyWasConsumed; +#ifdef FULLSCREEN_AVAILABLE + if (iFullScreen) + { + ResetFullScreenL(); + } + else + { + SetFullScreenL(); + } + response = EKeyWasConsumed; +#endif // FULLSCREEN_AVAILABLE + break; } - break; - } - #ifndef LANDSCAPE_ROTATE_HOTKEYS - case 0x33: // 3 -#else - case 0x39: // 9 -#endif - { - RotateL (ERotationClockwise); - response = EKeyWasConsumed; - break; - } - - case 0x34: // 4 - { - if (!rotated) + case 0x31: // 1 +#else + case 0x33: // 3 +#endif { - PanL (EDirectionLeft); - response = EKeyWasConsumed; - } - else - { - PanL (EDirectionDown); - response = EKeyWasConsumed; + RotateL(ERotationCounterClockwise); + response = EKeyWasConsumed; + break; } - break; - } - case 0x35: // 5 - { - // No function - break; - } - - case 0x36: // 6 - { - if (!rotated) + + case 0x32: // 2 + { + if (!rotated) { - PanL (EDirectionRight); - response = EKeyWasConsumed; + PanL(EDirectionUp); + response = EKeyWasConsumed; } else { - PanL (EDirectionUp); - response = EKeyWasConsumed; - } - break; - } - - case 0x38: // 8 - { - if (!rotated) + PanL(EDirectionLeft); + response = EKeyWasConsumed; + } + break; + } + +#ifndef LANDSCAPE_ROTATE_HOTKEYS + case 0x33: // 3 +#else + case 0x39: // 9 +#endif + { + RotateL(ERotationClockwise); + response = EKeyWasConsumed; + break; + } + + case 0x34: // 4 + { + if (!rotated) + { + PanL(EDirectionLeft); + response = EKeyWasConsumed; + } + else + { + PanL(EDirectionDown); + response = EKeyWasConsumed; + } + break; + } + case 0x35: // 5 + { + // No function + break; + } + + case 0x36: // 6 + { + if (!rotated) + { + PanL(EDirectionRight); + response = EKeyWasConsumed; + } + else { - PanL (EDirectionDown); - response = EKeyWasConsumed; + PanL(EDirectionUp); + response = EKeyWasConsumed; + } + break; + } + + case 0x38: // 8 + { + if (!rotated) + { + PanL(EDirectionDown); + response = EKeyWasConsumed; + } + else + { + PanL(EDirectionRight); + response = EKeyWasConsumed; + } + break; + } + + // following cases handle four directions and select key + case EStdKeyRightArrow: + { + PanL(EDirectionRight); + response = EKeyWasConsumed; + break; + } + case EStdKeyLeftArrow: + { + PanL(EDirectionLeft); + response = EKeyWasConsumed; + break; + } + case EStdKeyUpArrow: + { + PanL(EDirectionUp); + response = EKeyWasConsumed; + break; + } + case EStdKeyDownArrow: + { + PanL(EDirectionDown); + response = EKeyWasConsumed; + break; + } + case EStdKeyEnter: + { + TBool zoomedIn = + ((CImageEditorUIView *) iEditorView)->InZoomingState(); + if (zoomedIn) + { + iEditorView->HandleCommandL(EImageEditorPreGlobalZoomChange); + ZoomL(EZoomIn); + iEditorView->HandleCommandL(EImageEditorGlobalZoomChanged); } else { - PanL (EDirectionRight); - response = EKeyWasConsumed; + // display the plugin selection grid if not in zoomed state + HandleCommandL(EImageEditorMenuCmdApplyEffect); + } + response = EKeyWasConsumed; + break; + } + case 0x2a: // * + case EStdKeyNkpAsterisk: // * + case EStdKeyIncVolume: + { + if (iEditorManager->IsPluginLoaded()) + { + if (iEditorManager->GetZoomMode() == EZoomIn3) + { + response = EKeyWasConsumed; + break; + } + } + iEditorView->HandleCommandL(EImageEditorPreGlobalZoomChange); + ZoomL(EZoomIn); + iEditorView->HandleCommandL(EImageEditorGlobalZoomChanged); + response = EKeyWasConsumed; + break; + } + case 0x23: // # + case EStdKeyHash: // # + case EStdKeyDecVolume: + { + if (iEditorManager->IsPluginLoaded()) + { + if (iEditorManager->GetZoomMode() == EZoomNormal) + { + response = EKeyWasConsumed; + break; + } } - break; - } - - // following cases handle four directions and select key - case EStdKeyRightArrow: - { - PanL (EDirectionRight); - response = EKeyWasConsumed; - break; - } - case EStdKeyLeftArrow: - { - PanL (EDirectionLeft); - response = EKeyWasConsumed; - break; - } - case EStdKeyUpArrow: - { - PanL (EDirectionUp); - response = EKeyWasConsumed; - break; - } - case EStdKeyDownArrow: - { - PanL (EDirectionDown); - response = EKeyWasConsumed; - break; - } - case EStdKeyEnter: - { - TBool zoomedIn = ( ( CImageEditorUIView *)iEditorView )->InZoomingState(); - if ( zoomedIn ) - { - iEditorView->HandleCommandL (EImageEditorPreGlobalZoomChange); - ZoomL( EZoomIn ); - iEditorView->HandleCommandL (EImageEditorGlobalZoomChanged); - } - else - { - // display the plugin selection grid if not in zoomed state - HandleCommandL( EImageEditorMenuCmdApplyEffect ); - } - response = EKeyWasConsumed; - break; - } - case 0x2a: // * - case EStdKeyNkpAsterisk: // * - case EStdKeyIncVolume: - { - if ( iEditorManager->IsPluginLoaded() ) - { - if ( iEditorManager->GetZoomMode()== EZoomIn3 ) - { - response = EKeyWasConsumed; - break; - } - } - iEditorView->HandleCommandL (EImageEditorPreGlobalZoomChange); - ZoomL (EZoomIn); - iEditorView->HandleCommandL (EImageEditorGlobalZoomChanged); - response = EKeyWasConsumed; - break; - } - case 0x23: // # - case EStdKeyHash: // # - case EStdKeyDecVolume: - { - if ( iEditorManager->IsPluginLoaded() ) - { - if ( iEditorManager->GetZoomMode()== EZoomNormal ) - { - response = EKeyWasConsumed; - break; - } - } - iEditorView->HandleCommandL (EImageEditorPreGlobalZoomChange); - ZoomL (EZoomOut); - iEditorView->HandleCommandL (EImageEditorGlobalZoomChanged); + iEditorView->HandleCommandL(EImageEditorPreGlobalZoomChange); + ZoomL(EZoomOut); + iEditorView->HandleCommandL(EImageEditorGlobalZoomChanged); response = EKeyWasConsumed; - break; - } - case EStdKeyYes: // green answer call key - { - if (!iEditorManager->IsPluginLoaded()) - { - // when touch is enabled, dialer application is launched - // by the framework and application should not consume - // this key. Otherwise image is saved and send menu opened. - if ( !AknLayoutUtils::PenEnabled() ) - { - if ( !iSending ) - { - SaveChangesAndSendL(); - } - response = EKeyWasConsumed; - } - else - { - response = EKeyWasNotConsumed; - } - } - break; - } - case EStdKeyDevice3: // Select key (OK key) - { - // display the plugin selection grid - HandleCommandL(EImageEditorMenuCmdApplyEffect); - response = EKeyWasConsumed; - break; - } - case EStdKeyNo: // end key - { - iBusy = ETrue; - response = EKeyWasNotConsumed; - break; - } - - default: - { - response = EKeyWasNotConsumed; - break; - } - } - } + break; + } + case EStdKeyYes: // green answer call key + { + if (!iEditorManager->IsPluginLoaded()) + { + // when touch is enabled, dialer application is launched + // by the framework and application should not consume + // this key. Otherwise image is saved and send menu opened. + if (!AknLayoutUtils::PenEnabled()) + { + if (!iSending) + { + SaveChangesAndSendL(); + } + response = EKeyWasConsumed; + } + else + { + response = EKeyWasNotConsumed; + } + } + break; + } + case EStdKeyDevice3: // Select key (OK key) + { + // display the plugin selection grid + HandleCommandL(EImageEditorMenuCmdApplyEffect); + response = EKeyWasConsumed; + break; + } + case EStdKeyNo: // end key + { + iBusy = ETrue; + response = EKeyWasNotConsumed; + break; + } + + default: + { + response = EKeyWasNotConsumed; + break; + } + } + } return response; -} + } //============================================================================= -void CImageEditorAppUi::HandleCommandL (TInt aCommand) -{ - LOGFMT(KImageEditorLogFile, "CImageEditorAppUi:HandleCommandL (%d)", aCommand); - - switch ( aCommand ) - { - - /** - * - * MENU COMMANDS - * - */ - - // Launch plug-in selection grid - case EImageEditorMenuCmdApplyEffect: +void CImageEditorAppUi::HandleCommandL(TInt aCommand) + { + LOGFMT(KImageEditorLogFile, "CImageEditorAppUi:HandleCommandL (%d)", aCommand); + + switch (aCommand) { + + /** + * + * MENU COMMANDS + * + */ + + // Launch plug-in selection grid + case EImageEditorMenuCmdApplyEffect: + { SetBusy(); - iCallback->DoCallback (KObInitPluginID); - break; - } - - // Undo effect + iCallback->DoCallback(KObInitPluginID); + break; + } + + // Undo effect case EImageEditorMenuCmdUndo: - { + { SetBusy(); - iCallback->DoCallback (KObUndoDCallbackID); - break; - } - - // Switch to full screen + iCallback->DoCallback(KObUndoDCallbackID); + break; + } + + // Switch to full screen case EImageEditorMenuCmdFullScreen: - { + { #ifdef FULLSCREEN_AVAILABLE - SetFullScreenL(); + SetFullScreenL(); #endif // FULLSCREEN_AVAILABLE - break; - } - - // Switch to normal screen + break; + } + + // Switch to normal screen case EImageEditorMenuCmdNormalScreen: - { + { #ifdef FULLSCREEN_AVAILABLE - ResetFullScreenL(); + ResetFullScreenL(); #endif // FULLSCREEN_AVAILABLE - break; - } - - // Increase Zoom - case EImageEditorMenuCmdZoomIn: - { - ZoomL (EZoomIn); - break; - } - - // Decrease Zoom - case EImageEditorMenuCmdZoomOut: - { - ZoomL (EZoomOut); - break; - } - - // Set zoom to minimum (=normal image) - case EImageEditorMenuCmdFitToScreen: - { - ZoomL( EZoomMin ); - break; - } - - // Launch CSHelp - case EAknCmdHelp: - case EImageEditorMenuCmdHelp: - { - CArrayFix* context = CCoeAppUi::AppHelpContextL(); - if (context) - { - HlpLauncher::LaunchHelpApplicationL(iEikonEnv->WsSession(), context); - } - break; - } - case EImageEditorMenuCmdSave: - { - if ( ! ((CImageEditorUIView*) iEditorView)->IsMemoryInCriticalLevel() ) - { - QueryAndSaveL(); - } - break; - } - - // Close editor - case EImageEditorMenuCmdExit: - { - TBool exitNow = ETrue; - if ( iEditorManager->IsImageChanged() ) - { - if ( ! ((CImageEditorUIView*) iEditorView)->IsMemoryInCriticalLevel() ) - { - // launch "Save changes?" query - TInt result = ((CImageEditorUIView *)iEditorView)->LaunchSaveChangesQueryL(); - if( result == EImageEditorSoftkeyCmdYes ) - { - if (QueryAndSaveL()) - { - SetBusy(); - iExitFromApp = ETrue; - exitNow = EFalse; - LOG(KImageEditorLogFile, "CImageEditorAppUi:HandleCommandL: Hide application from Fast-swap window."); - CAknAppUi::HideApplicationFromFSW(ETrue); - } - else - { - iExitFromApp = EFalse; - exitNow = EFalse; - } - - } - else if( result == EImageEditorSoftkeyCmdNo ) - { - // do nothing, exitNow == ETrue - } - else - { - // Automatic cancel may have occurred, don't exit - iExitFromApp = EFalse; - exitNow = EFalse; - } - } - } - - if (exitNow) - { - DeleteTempFiles(); - RunAppShutter(); - - - //Exit(); - } - break; - } - - /** - * - * SOFTKEY COMMANDS - * - */ - - // Back softkey pressed => Close editor + break; + } + + // Increase Zoom + case EImageEditorMenuCmdZoomIn: + { + ZoomL(EZoomIn); + break; + } + + // Decrease Zoom + case EImageEditorMenuCmdZoomOut: + { + ZoomL(EZoomOut); + break; + } + + // Set zoom to minimum (=normal image) + case EImageEditorMenuCmdFitToScreen: + { + ZoomL(EZoomMin); + break; + } + + // Launch CSHelp + case EAknCmdHelp: + case EImageEditorMenuCmdHelp: + { + CArrayFix* context = CCoeAppUi::AppHelpContextL(); + if (context) + { + HlpLauncher::LaunchHelpApplicationL(iEikonEnv->WsSession(), + context); + } + break; + } + case EImageEditorMenuCmdSave: + { + if (!((CImageEditorUIView*) iEditorView)->IsMemoryInCriticalLevel()) + { + QueryAndSaveL(); + } + break; + } + + // Close editor + case EImageEditorMenuCmdExit: + { + TBool exitNow = ETrue; + if (iEditorManager->IsImageChanged()) + { + if (!((CImageEditorUIView*) iEditorView)->IsMemoryInCriticalLevel()) + { + // launch "Save changes?" query + TInt + result = + ((CImageEditorUIView *) iEditorView)->LaunchSaveChangesQueryL(); + if (result == EImageEditorSoftkeyCmdYes) + { + if (QueryAndSaveL()) + { + SetBusy(); + iExitFromApp = ETrue; + exitNow = EFalse; + LOG(KImageEditorLogFile, "CImageEditorAppUi:HandleCommandL: Hide application from Fast-swap window."); + CAknAppUi::HideApplicationFromFSW(ETrue); + } + else + { + iExitFromApp = EFalse; + exitNow = EFalse; + } + + } + else if (result == EImageEditorSoftkeyCmdNo) + { + // do nothing, exitNow == ETrue + } + else + { + // Automatic cancel may have occurred, don't exit + iExitFromApp = EFalse; + exitNow = EFalse; + } + } + } + + if (exitNow) + { + DeleteTempFiles(); + RunAppShutter(); + + //Exit(); + } + break; + } + + /** + * + * SOFTKEY COMMANDS + * + */ + + // Back softkey pressed => Close editor case EImageEditorSoftkeyCmdBack: - { - TBool exitNow = ETrue; - if (iSaving || iCancelling) - { - // ignore - } - if ( ! ((CImageEditorUIView*) iEditorView)->IsMemoryInCriticalLevel() ) - { - if ( iEditorManager->IsImageChanged() ) - { - // launch "Save changes?" query - TInt result = ((CImageEditorUIView *)iEditorView)->LaunchSaveChangesQueryL(); - if( result == EImageEditorSoftkeyCmdYes ) - { - if (QueryAndSaveL()) - { - SetBusy(); - iExitFromApp = ETrue; - exitNow = EFalse; - LOG(KImageEditorLogFile, "CImageEditorAppUi:HandleCommandL: Hide application from Fast-swap window."); - CAknAppUi::HideApplicationFromFSW(ETrue); - } - else - { - iExitFromApp = EFalse; - exitNow = EFalse; - } - - } - else if( result == EImageEditorSoftkeyCmdNo ) - { - // do nothing, exitNow == ETrue - } - else - { - // Automatic cancel may have occurred, don't exit - iExitFromApp = EFalse; - exitNow = EFalse; - } - } - } - - if (exitNow) - { - DeleteTempFiles(); - RunAppShutter(); - //ProcessCommandL(EAknCmdExit); - } - break; - } - - /** - * - * SYSTEM COMMANDS - * - */ - - case EEikCmdExit: - { - LOG(KImageEditorLogFile, "CImageEditorAppUi: EEikCmdExit caught"); + { + TBool exitNow = ETrue; + if (iSaving || iCancelling) + { + // ignore + } + if (!((CImageEditorUIView*) iEditorView)->IsMemoryInCriticalLevel()) + { + if (iEditorManager->IsImageChanged()) + { + // launch "Save changes?" query + TInt + result = + ((CImageEditorUIView *) iEditorView)->LaunchSaveChangesQueryL(); + if (result == EImageEditorSoftkeyCmdYes) + { + if (QueryAndSaveL()) + { + SetBusy(); + iExitFromApp = ETrue; + exitNow = EFalse; + LOG(KImageEditorLogFile, "CImageEditorAppUi:HandleCommandL: Hide application from Fast-swap window."); + CAknAppUi::HideApplicationFromFSW(ETrue); + } + else + { + iExitFromApp = EFalse; + exitNow = EFalse; + } + + } + else if (result == EImageEditorSoftkeyCmdNo) + { + // do nothing, exitNow == ETrue + } + else + { + // Automatic cancel may have occurred, don't exit + iExitFromApp = EFalse; + exitNow = EFalse; + } + } + } + + if (exitNow) + { + DeleteTempFiles(); + RunAppShutter(); + //ProcessCommandL(EAknCmdExit); + } + break; + } + + /** + * + * SYSTEM COMMANDS + * + */ + + case EEikCmdExit: + { + LOG(KImageEditorLogFile, "CImageEditorAppUi: EEikCmdExit caught"); DeleteTempFiles(); - Exit(); - break; - } - - /** - * - * MISC COMMANDS - * - */ - - // Render image - case EImageEditorCmdRender: - { - RenderL(); - break; - } - - case EImageEditorCmdViewReady: - { - - LOG(KImageEditorLogFile, "CImageEditorAppUi: View ready"); + Exit(); + break; + } + + /** + * + * MISC COMMANDS + * + */ + + // Render image + case EImageEditorCmdRender: + { + RenderL(); + break; + } + case EImageEditorResetFullScreen: + { + ResetFullScreenL(); + } + case EImageEditorCmdViewReady: + { + + LOG(KImageEditorLogFile, "CImageEditorAppUi: View ready"); iEditorReady = ETrue; - // Initialize UI items - InitializeUiItemsL(); + // Initialize UI items + InitializeUiItemsL(); ApplicationReadyL(); - break; - } + break; + } case EImageEditorApplyPlugin: - { + { // Return from plug-in - SetBusy(); - iCallback->DoCallback (KObReturnFromPluginID); - break; - } - - case EImageEditorCancelPlugin: - { + SetBusy(); + iCallback->DoCallback(KObReturnFromPluginID); + break; + } + + case EImageEditorCancelPlugin: + { SetBusy(); iCancelling = ETrue; - iCallback->DoCallback (KObCancelCallbackID); - break; - } - - case EImageEditorAddFilterToEngine: - { - // Add the current plugin parameters to engine - // and continue with the same plugin +// ResetFullScreenL(); + iPluginName.Copy(KNull); + iCallback->DoCallback(KObCancelCallbackID); + break; + } + + case EImageEditorAddFilterToEngine: + { + // Add the current plugin parameters to engine + // and continue with the same plugin iEditorManager->AddFilterToEngineL(); - break; - } - - case EImageEditorStoreParameters: - { - break; - } - - case EImageEditorUndoFilter: - { - // Undo one filter (can be called if one plugin - // has put more than one filter to the engine) - SetBusy(); - iEditorManager->UndoL(); - SetUndoFlag(); - ((CImageEditorUIView *)iEditorView)->GetContainer()->DrawNow(); + break; + } + + case EImageEditorStoreParameters: + { + break; + } + + case EImageEditorUndoFilter: + { + // Undo one filter (can be called if one plugin + // has put more than one filter to the engine) + SetBusy(); + iEditorManager->UndoL(); + SetUndoFlag(); + ((CImageEditorUIView *) iEditorView)->GetContainer()->DrawNow(); ResetBusy(); - break; - } - - case EImageEditorSaveAndPrint: - { - if ( iEditorManager->IsImageChanged() ) - { - iPrinting = ETrue; - SaveImageL(); - } - else - { - SetBusy(); - iCallback->DoCallback (KObPrintCallbackID); - } - break; - } - case EImageEditorResetZoom: - { - // If this is called rendering must be done separately - iEditorManager->ZoomL( EZoomMin ); - ((CImageEditorUIView *)iEditorView)->SetZoomModeL( iEditorManager->GetZoomMode() ); - break; - } - case EImageEditorCmdTouchPan: - { - TouchPanL(); - break; - } - case EImageEditorOpenContextMenu: - { - CAknViewAppUi::ProcessCommandL(EAknSoftkeyContextOptions); - break; - } - default: - { - // CSendUi commands - if (aCommand >= EImageEditorMenuCmdSend && - aCommand < EImageEditorMenuCmdSendLast) - { - SetBusy(); - SaveChangesAndSendL(); - break; - } - - /** - * - * BEVERLY HILLS - * - */ - else - { - // Do not handle unknown commands - ResetBusy(); - break; - } - } + break; + } + + case EImageEditorSaveAndPrint: + { + if (iEditorManager->IsImageChanged()) + { + iPrinting = ETrue; + SaveImageL(); + } + else + { + SetBusy(); + iCallback->DoCallback(KObPrintCallbackID); + } + break; + } + case EImageEditorResetZoom: + { + // If this is called rendering must be done separately + iEditorManager->ZoomL(EZoomMin); + ((CImageEditorUIView *) iEditorView)->SetZoomModeL( + iEditorManager->GetZoomMode()); + break; + } + case EImageEditorCmdTouchPan: + { + TouchPanL(); + break; + } + case EImageEditorOpenContextMenu: + { + CAknViewAppUi::ProcessCommandL(EAknSoftkeyContextOptions); + break; + } + default: + { + // CSendUi commands + if (aCommand >= EImageEditorMenuCmdSend && aCommand + < EImageEditorMenuCmdSendLast) + { + SetBusy(); + SaveChangesAndSendL(); + break; + } + + /** + * + * BEVERLY HILLS + * + */ + else + { + // Do not handle unknown commands + ResetBusy(); + break; + } + } + } } -} //============================================================================= -void CImageEditorAppUi::HandleWsEventL ( - const TWsEvent & aEvent, - CCoeControl * aDestination - ) -{ +void CImageEditorAppUi::HandleWsEventL(const TWsEvent & aEvent, + CCoeControl * aDestination) + { #ifdef VERBOSE - LOGFMT3 (KImageEditorLogFile, "CImageEditorAppUi::HandleWsEventL: aEvent.Type() == %d, aEvent.Key().iCode == %d, aEvent.Key().iScanCode == %d", aEvent.Type(), (TInt)aEvent.Key()->iCode, (TInt)aEvent.Key()->iScanCode); + LOGFMT3 (KImageEditorLogFile, "CImageEditorAppUi::HandleWsEventL: aEvent.Type() == %d, aEvent.Key().iCode == %d, aEvent.Key().iScanCode == %d", aEvent.Type(), (TInt)aEvent.Key()->iCode, (TInt)aEvent.Key()->iScanCode); #endif - switch ( aEvent.Type() ) - { - - case EEventFocusLost: - { + switch (aEvent.Type()) + { + + case EEventFocusLost: + { iForeground = EFalse; break; - } - - case EEventFocusGained: - { - - // Update the screen rect when we gain focus. - // This isn't really needed every time, it should only do this if something has changed - if (iImageController) - { - UpdateScreenRectL(); - } - - if (iFullScreen) - { - StatusPane()->MakeVisible ( EFalse ); - } + } + + case EEventFocusGained: + { + + // Update the screen rect when we gain focus. + // This isn't really needed every time, it should only do this if something has changed + if (iImageController) + { + UpdateScreenRectL(); + } + + if (iFullScreen) + { + StatusPane()->MakeVisible(EFalse); + } iForeground = ETrue; break; - } + } default: - { + { break; - } - - } - - if ( ( aEvent.Type() == KAknUidValueEndKeyCloseEvent) && iEditorManager->IsImageChanged() ) + } + + } + + if ((aEvent.Type() == KAknUidValueEndKeyCloseEvent) + && iEditorManager->IsImageChanged()) { if (iCancelling) { return; } - iExitFromApp = ETrue; + iExitFromApp = ETrue; if (iSaving) { iImageController->CancelOperation(ETrue); @@ -1146,215 +1130,215 @@ return; } - TInt err = ImageEditorUtils::GenerateNewDocumentNameL ( - iEikonEnv->FsSession(), - iSourceFileName, - iDocumentName, - &iSourceImageMgAlbumIdList - ); - SaveImageOverWriteL( EFalse ); + TInt err = ImageEditorUtils::GenerateNewDocumentNameL( + iEikonEnv->FsSession(), iSourceFileName, iDocumentName, + &iSourceImageMgAlbumIdList); + SaveImageOverWriteL(EFalse); } else { - TInt err( 0 ); - TRAP( err, CAknViewAppUi::HandleWsEventL( aEvent, aDestination ) ); + TInt err(0); + TRAP( err, CAknViewAppUi::HandleWsEventL( aEvent, aDestination ) ); } -} - + } //============================================================================= void CImageEditorAppUi::HandleScreenDeviceChangedL() - { - - LOG(KImageEditorLogFile, "CImageEditorAppUi::HandleScreenDeviceChangedL()"); - - // Work-a-round to avoid softkeys to drawn incorrectly - // when a dialog is open when changing to view mode - if (iConstructionState == EConstructionStateReady && - iSaving == EFalse && - iSending == EFalse ) - { - StopDisplayingMenuBar(); - } - - CAknViewAppUi::HandleScreenDeviceChangedL(); - - TBool visibleFlag = EFalse; - if (((CImageEditorUIView *)iEditorView)->GetContainer()) - { - visibleFlag = ((CImageEditorUIView *)iEditorView)->GetContainer()->IsVisible(); - } - - // If orientation changes during loading - screen bitmap need to be recreated - // In the start-up there can be event from system without screen device change - if (!iImageLoaded && iConstructionState != EConstructionStateAlloc ) - { - iOrientationChanged = ETrue; - // Set landscape parameter - if (LandscapeScreenOrientation()) - { - iResolutionUtil->SetLandscape(ETrue); - } - else - { - iResolutionUtil->SetLandscape(EFalse); - } - - iResolutionUtil->UpdateScreenMode(); - TRect rect; - iResolutionUtil->GetClientRect(rect); - CCoeControl * control = ((CImageEditorUIView *)iEditorView)->GetContainer(); + { + + LOG(KImageEditorLogFile, "CImageEditorAppUi::HandleScreenDeviceChangedL()"); + // Work-a-round to avoid softkeys to drawn incorrectly + // when a dialog is open when changing to view mode + if (iConstructionState == EConstructionStateReady && iSaving == EFalse + && iSending == EFalse) + { + StopDisplayingMenuBar(); + } + + CAknViewAppUi::HandleScreenDeviceChangedL(); + + //called while screen mode change + if (!iStandby) + { + if (iPluginName == KDrawPlugin) + { + InitialHorizontalDrawPlugin(); + } + } + iStandby = EFalse; + + TBool visibleFlag = EFalse; + if (((CImageEditorUIView *) iEditorView)->GetContainer()) + { + visibleFlag + = ((CImageEditorUIView *) iEditorView)->GetContainer()->IsVisible(); + } + + // If orientation changes during loading - screen bitmap need to be recreated + // In the start-up there can be event from system without screen device change + if (!iImageLoaded && iConstructionState != EConstructionStateAlloc) + { + iOrientationChanged = ETrue; + // Set landscape parameter + if (LandscapeScreenOrientation()) + { + iResolutionUtil->SetLandscape(ETrue); + } + else + { + iResolutionUtil->SetLandscape(EFalse); + } + + iResolutionUtil->UpdateScreenMode(); + TRect rect; + iResolutionUtil->GetClientRect(rect); + CCoeControl * control = + ((CImageEditorUIView *) iEditorView)->GetContainer(); control->SetRect(rect); - } - - // Update screen rects if we are currently in the foreground. - else if ((iForeground && iImageController) || visibleFlag) - { - UpdateScreenRectL(); - } - -} + } + + // Update screen rects if we are currently in the foreground. + else if ((iForeground && iImageController) || visibleFlag) + { + UpdateScreenRectL(); + } + + } //============================================================================= TBool CImageEditorAppUi::LandscapeScreenOrientation() -{ - - LOG(KImageEditorLogFile, "CImageEditorAppUi::LandscapeScreenOrientation()"); - - TBool orientation = EFalse; + { + + LOG(KImageEditorLogFile, "CImageEditorAppUi::LandscapeScreenOrientation()"); + + TBool orientation = EFalse; #ifdef LANDSCAPE_SUPPORT - TRect rect; - - AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EScreen, rect); - - if ( rect.iBr.iX > rect.iBr.iY ) - { - orientation = ETrue; - } + TRect rect; + + AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EScreen, rect); + + if (rect.iBr.iX > rect.iBr.iY) + { + orientation = ETrue; + } else - { - orientation = EFalse; - } + { + orientation = EFalse; + } #endif - LOGFMT(KImageEditorLogFile, "CImageEditorAppUi: Orientation (%d)", (TInt)orientation); - - return orientation; -} + LOGFMT(KImageEditorLogFile, "CImageEditorAppUi: Orientation (%d)", (TInt)orientation); + + return orientation; + } //============================================================================= -void CImageEditorAppUi::HandleForegroundEventL (TBool aForeground) -{ - LOG(KImageEditorLogFile, "CImageEditorAppUi::HandleForegroundEventL()"); +void CImageEditorAppUi::HandleForegroundEventL(TBool aForeground) + { + LOG(KImageEditorLogFile, "CImageEditorAppUi::HandleForegroundEventL()"); if (aForeground) - { - if ( !BaflUtils::FileExists( iEikonEnv->Static()->FsSession() , iSourceFileName ) ) + { + if (!BaflUtils::FileExists(iEikonEnv->Static()->FsSession(), + iSourceFileName)) { DeleteTempFiles(); RunAppShutter(); } - if ( iProcessPriorityAltered ) - { - // Return to normal priority. - RProcess myProcess; - TProcessPriority priority = myProcess.Priority(); - if ( priority < iOriginalProcessPriority ) + if (iProcessPriorityAltered) { - myProcess.SetPriority( iOriginalProcessPriority ); + // Return to normal priority. + RProcess myProcess; + TProcessPriority priority = myProcess.Priority(); + if (priority < iOriginalProcessPriority) + { + myProcess.SetPriority(iOriginalProcessPriority); + } + iProcessPriorityAltered = EFalse; + iStandby = ETrue; } - iProcessPriorityAltered = EFalse; + + // Check that application is in sync with the system + if (!iImageLoaded && iConstructionState != EConstructionStateAlloc) + { + iOrientationChanged = ETrue; + } + else if (iResolutionUtil && LandscapeScreenOrientation() + != iResolutionUtil->GetLandscape()) + { + UpdateScreenRectL(); + } + + iEditorView->HandleCommandL(EImageEditorFocusGained); } - - // Check that application is in sync with the system - if (!iImageLoaded && iConstructionState != EConstructionStateAlloc ) - { - iOrientationChanged = ETrue; - } - else if (iResolutionUtil && LandscapeScreenOrientation() != iResolutionUtil->GetLandscape()) - { - UpdateScreenRectL(); - } - - iEditorView->HandleCommandL (EImageEditorFocusGained); - } else - { - iEditorView->HandleCommandL (EImageEditorFocusLost); + { + iEditorView->HandleCommandL(EImageEditorFocusLost); // Set the priority to low. This is needed to handle the situations // where the engine is performing heavy processing while the application // is in background. RProcess myProcess; iOriginalProcessPriority = myProcess.Priority(); - myProcess.SetPriority( EPriorityLow ); + myProcess.SetPriority(EPriorityLow); iProcessPriorityAltered = ETrue; - - + iStandby = ETrue; + + } + CAknViewAppUi::HandleForegroundEventL(aForeground); } - CAknViewAppUi::HandleForegroundEventL (aForeground); -} - //============================================================================= -TBool CImageEditorAppUi::ProcessCommandParametersL ( - TApaCommand aCommand, - TFileName & aDocumentName, - const TDesC8 & aTail - ) -{ - LOG(KImageEditorLogFile, "CImageEditorAppUi::ProcessCommandParametersL"); - - /* ------------- : test only ---------- - if ( this->ContainerAppUi() == NULL ) // launched as standalone +TBool CImageEditorAppUi::ProcessCommandParametersL(TApaCommand aCommand, + TFileName & aDocumentName, const TDesC8 & aTail) { - aDocumentName = _L("C:\\Data\\Images\\test.jpg"); - }; - // ---------------- test only ------------- */ - + LOG(KImageEditorLogFile, "CImageEditorAppUi::ProcessCommandParametersL"); + // Store command parameter document name - iDocumentName.Copy (aDocumentName); - - // Save original document name - iSourceFileName.Copy(aDocumentName); - - // Set document name for printing - ((CImageEditorUIView *)iEditorView)->SetImageFileName(iDocumentName); - - // Return default action - return CAknViewAppUi::ProcessCommandParametersL (aCommand, aDocumentName, aTail); + iDocumentName.Copy(aDocumentName); + + // Save original document name + iSourceFileName.Copy(aDocumentName); + + // Set document name for printing + ((CImageEditorUIView *) iEditorView)->SetImageFileName(iDocumentName); + + // Return default action + return CAknViewAppUi::ProcessCommandParametersL(aCommand, aDocumentName, + aTail); } //============================================================================= void CImageEditorAppUi::OpenFileL(RFile &aFile) - { - LOG(KImageEditorLogFile, "CImageEditorAppUi::OpenFileL"); + { + LOG(KImageEditorLogFile, "CImageEditorAppUi::OpenFileL"); // This function should be called only when editor is started // as an embedded application. - // Store command parameter document name - aFile.FullName(iDocumentName); + // Store command parameter document name + aFile.FullName(iDocumentName); // Open file for editor // File must be opened until editor is closed, otherwise // shared session is lost -> Error code -14. - RFs& fs = iEikonEnv->FsSession(); - fs.ShareProtected(); + RFs& fs = iEikonEnv->FsSession(); + fs.ShareProtected(); TInt err = iFile.Open(fs, iDocumentName, EFileRead | EFileShareReadersOnly); if (KErrNone != err) { - User::LeaveIfError(iFile.Open(fs, iDocumentName, EFileRead | EFileShareAny)); + User::LeaveIfError(iFile.Open(fs, iDocumentName, EFileRead + | EFileShareAny)); } - // Save original document name - aFile.FullName(iSourceFileName); - - // Set document name for printing - ((CImageEditorUIView *)iEditorView)->SetImageFileName(iDocumentName); + // Save original document name + aFile.FullName(iSourceFileName); + + // Set document name for printing + ((CImageEditorUIView *) iEditorView)->SetImageFileName(iDocumentName); // If OpenFileL was not called when the startup sequence reached // the point where it needs the document name, the construction was @@ -1363,763 +1347,746 @@ { // Resume construction iConstructionState = EConstructionStateLoadImage; - iCallback->DoCallback (KObConstructCallBackID); + iCallback->DoCallback(KObConstructCallBackID); } - } + } //============================================================================= CArrayFix* CImageEditorAppUi::HelpContextL() const -{ - CArrayFixFlat* array = - new(ELeave)CArrayFixFlat(1); - CleanupStack::PushL(array); - - TBool zoomedIn = ( ( CImageEditorUIView *)iEditorView )->InZoomingState(); - if ( zoomedIn ) - { - array->AppendL(TCoeHelpContext(TUid::Uid(UID_IMAGE_EDITOR), KSIE_HLP_ZOOMING)); - } - else - { - array->AppendL(TCoeHelpContext(TUid::Uid(UID_IMAGE_EDITOR), KSIE_HLP_MAIN)); - } - - CleanupStack::Pop(array); - return array; -} + { + CArrayFixFlat* array = new (ELeave) CArrayFixFlat< + TCoeHelpContext> (1); + CleanupStack::PushL(array); + + TBool zoomedIn = ((CImageEditorUIView *) iEditorView)->InZoomingState(); + if (zoomedIn) + { + array->AppendL(TCoeHelpContext(TUid::Uid(UID_IMAGE_EDITOR), + KSIE_HLP_ZOOMING)); + } + else + { + array->AppendL(TCoeHelpContext(TUid::Uid(UID_IMAGE_EDITOR), + KSIE_HLP_MAIN)); + } + + CleanupStack::Pop(array); + return array; + } //============================================================================= -void CImageEditorAppUi::InitializePluginL () -{ - LOG(KImageEditorLogFile, "CImageEditorAppUi: Initialising plugin"); - - // Get pointer to the view - CImageEditorUIView * view = (CImageEditorUIView *)iEditorView; - +void CImageEditorAppUi::InitializePluginL() + { + LOG(KImageEditorLogFile, "CImageEditorAppUi: Initialising plugin"); + + // Get pointer to the view + CImageEditorUIView * view = (CImageEditorUIView *) iEditorView; + // Close the previous plug-in iEditorManager->ClosePlugin(); + + // Open a new plug-in + CPluginInfo * pgn_info = view->GetSelectedPluginInfoL(); + + if (pgn_info) + { + iEditorManager->OpenPluginL(pgn_info->PluginDll()->Des()); + iPluginName.Copy(pgn_info->PluginDll()->Des()); - // Open a new plug-in - CPluginInfo * pgn_info = view->GetSelectedPluginInfoL(); - - if (pgn_info) - { - iEditorManager->OpenPluginL ( pgn_info->PluginDll()->Des() ); - - LOG(KImageEditorLogFile, "CImageEditorAppUi: Plugin opened"); - - // current rect - TRect rect; - iResolutionUtil->GetClientRect(rect); - - // Create a plug-in control - // Ownership is moved to the plug-in - CCoeControl * control = NULL; - TInt err = iEditorManager->CreatePluginControlL ( - rect, - view->GetContainer(), - control - ); - - LOG(KImageEditorLogFile, "CImageEditorAppUi: Plugin control created"); - - // The plug-in activation was cancelled - if (err != KErrNone) - { - // Cancel plug-in - iCancelling = ETrue; - iCallback->DoCallback (KObCancelCallbackID); - } - - // Activate plug-in - else - { - - // Register control to UI - view->ActivatePluginL (control); - - LOG(KImageEditorLogFile, "CImageEditorAppUi: Plugin activated"); - - - // If the filter did not have a control, close plug-in - if ( !control ) - { - iEditorManager->ClosePlugin(); - - } - - // Set the last opened image to editor view - ((CImageEditorUIView *)iEditorView)->SetImageL ( - iEditorManager->GetPreviewImage() - ); - - ResetBusy(); - } - } + //judge if it is draw plug-in + if (iPluginName != KNull && iPluginName == KDrawPlugin) + { + ((CImageEditorUIContainer *) ((CImageEditorUIView *) iEditorView)->GetContainer())->IsDrawPlugin(ETrue); + SetFullScreenL(); + } + else + { + ((CImageEditorUIContainer *) ((CImageEditorUIView *) iEditorView)->GetContainer())->IsDrawPlugin(EFalse); + } + + LOG(KImageEditorLogFile, "CImageEditorAppUi: Plugin opened"); + + // current rect + TRect rect; + iResolutionUtil->GetClientRect(rect); + + // Create a plug-in control + // Ownership is moved to the plug-in + CCoeControl * control = NULL; + TInt err = iEditorManager->CreatePluginControlL(rect,view->GetContainer(), control); + + LOG(KImageEditorLogFile, "CImageEditorAppUi: Plugin control created"); + + // The plug-in activation was cancelled + if (err != KErrNone) + { + // Cancel plug-in + iCancelling = ETrue; + iCallback->DoCallback(KObCancelCallbackID); + } + // Activate plug-in + else + { + // Register control to UI + view->ActivatePluginL(control); + + LOG(KImageEditorLogFile, "CImageEditorAppUi: Plugin activated"); + + // If the filter did not have a control, close plug-in + if (!control) + { + iEditorManager->ClosePlugin(); + } + + // Set the last opened image to editor view + ((CImageEditorUIView *) iEditorView)->SetImageL(iEditorManager->GetPreviewImage()); + + ResetBusy(); + } + } + else - { + { ResetBusy(); + } } -} //============================================================================= -void CImageEditorAppUi::CreatePluginLocatorL () -{ - iLocator = CPluginLocator::NewL(); -} - -//============================================================================= -void CImageEditorAppUi::CreateEditorManagerL () -{ - iEditorManager = CImageEditorPluginManager::NewL(); -} +void CImageEditorAppUi::CreatePluginLocatorL() + { + iLocator = CPluginLocator::NewL(); + } //============================================================================= -void CImageEditorAppUi::CreateImageControllerL () -{ - iImageController = CImageController::NewL (this, iEditorManager); -} +void CImageEditorAppUi::CreateEditorManagerL() + { + iEditorManager = CImageEditorPluginManager::NewL(); + } //============================================================================= -void CImageEditorAppUi::LoadPluginsL () -{ - // Scan plug-ins - iLocator->ScanPluginsL (); -} +void CImageEditorAppUi::CreateImageControllerL() + { + iImageController = CImageController::NewL(this, iEditorManager); + } //============================================================================= -void CImageEditorAppUi::InitializeUiItemsL () -{ - - LOG (KImageEditorLogFile, "CImageEditorAppUi: InitializeUiItemsL"); - - // Set UI items - if (iEditorReady && iPluginsScanned && iImageLoaded) - { - for (TInt i = 0, c = iLocator->CountPlugins(); i < c; ++i) - { - ((CImageEditorUIView *)iEditorView)->AddPluginUiItemL (iLocator->GetPluginInfo(i)); - } - - // Set the last opened image to editor view - ((CImageEditorUIView *)iEditorView)->SetImageL ( - iEditorManager->GetPreviewImage() - ); - - SetFileNameTitlePaneL(iSourceFileName); - - ((CImageEditorUIView *)iEditorView)->SetZoomModeL( iEditorManager->GetZoomMode() ); +void CImageEditorAppUi::LoadPluginsL() + { + // Scan plug-ins + iLocator->ScanPluginsL(); + } + +//============================================================================= +void CImageEditorAppUi::InitializeUiItemsL() + { + + LOG (KImageEditorLogFile, "CImageEditorAppUi: InitializeUiItemsL"); + + // Set UI items + if (iEditorReady && iPluginsScanned && iImageLoaded) + { + for (TInt i = 0, c = iLocator->CountPlugins(); i < c; ++i) + { + ((CImageEditorUIView *) iEditorView)->AddPluginUiItemL(iLocator->GetPluginInfo(i)); + } + + SetFileNameTitlePaneL(iSourceFileName); + + ((CImageEditorUIView *) iEditorView)->SetZoomModeL(iEditorManager->GetZoomMode()); LOG (KImageEditorLogFile, "CImageEditorAppUi: Plugins initialized"); - - } -} + } + } //============================================================================= void CImageEditorAppUi::ApplicationReadyL() -{ - LOG (KImageEditorLogFile, "CImageEditorAppUi: ApplicationReadyLL"); - - // Set UI items - if (iEditorReady && iPluginsScanned && iImageLoaded) - { - if ( iOrientationChanged ) - { - LOG(KImageEditorLogFile, - "CImageEditorAppUi: Orientation changed, updating screen rect"); - // Check that application is in sync with the system - // This should fix the problem with screen update after image is loading when - // screen is folded during loading - UpdateScreenRectL(); - iOrientationChanged = EFalse; - } - else if ( ( LandscapeScreenOrientation() && - ( StatusPane()->CurrentLayoutResId() != - R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT ) ) ) - { - LOG(KImageEditorLogFile, - "CImageEditorAppUi: Status pane needs to be changed->updating screen rect"); - // Updating screen rect updates also status pane to correct "flat version" - UpdateScreenRectL(); - } - + { + LOG (KImageEditorLogFile, "CImageEditorAppUi: ApplicationReadyLL"); + + // Set UI items + if (iEditorReady && iPluginsScanned && iImageLoaded) + { + if (iOrientationChanged) + { + LOG(KImageEditorLogFile, "CImageEditorAppUi: Orientation changed, updating screen rect"); + // Check that application is in sync with the system + // This should fix the problem with screen update after image is loading when + // screen is folded during loading + UpdateScreenRectL(); + iOrientationChanged = EFalse; + } + else if ((LandscapeScreenOrientation() + && (StatusPane()->CurrentLayoutResId() + != R_AVKON_WIDESCREEN_PANE_LAYOUT_USUAL_FLAT))) + { + LOG(KImageEditorLogFile,"CImageEditorAppUi: Status pane needs to be changed->updating screen rect"); + // Updating screen rect updates also status pane to correct "flat version" + UpdateScreenRectL(); + } + TRect screenRect; CResolutionUtil::Self()->GetClientRect(screenRect); iOldScreenRect = screenRect; ResetBusy(); - + // Open Plugin selection grid right away when application start is finished //HandleCommandL(EImageEditorMenuCmdApplyEffect); - + + } } -} - //============================================================================= -void CImageEditorAppUi::LoadImageL () -{ - LOGFMT (KImageEditorLogFile, "CImageEditorAppUi: Loading image (%S)", &iSourceFileName); +void CImageEditorAppUi::LoadImageL() + { + + LOGFMT (KImageEditorLogFile, "CImageEditorAppUi: Loading image (%S)", &iSourceFileName); // Load the image to be edited - iImageController->LoadImageL (iSourceFileName); -} + iImageController->LoadImageL(iSourceFileName); + } //============================================================================= -void CImageEditorAppUi::SaveImageL () -{ - LOG(KImageEditorLogFile, "CImageEditorAppUi: Saving image"); - - // Check if source image still exists - if (!BaflUtils::FileExists(iEikonEnv->FsSession(), iSourceFileName)) - { - if (iExitFromApp) - { - TInt exit = - ((CImageEditorUIView *)iEditorView)->LaunchExitWithoutSavingQueryL(); - if (exit) - { - // Exit - User::Leave (KSIEEErrorOkToExit); - } - else - { - iExitFromApp = EFalse; - User::Leave(KSIEEInternal); - } - } - else - { - User::Leave(KSIEEInternal); - } - } - - // Check document name if not saved yet or memory card removed - if ( !iImageSaved || - !BaflUtils::PathExists(iEikonEnv->FsSession(), iTempSaveFileName.Left(3))) - { - // If not saved yet, check that document name is valid - SetImageNameL(); - } +void CImageEditorAppUi::SaveImageL() + { + + LOG(KImageEditorLogFile, "CImageEditorAppUi: Saving image"); + + // Check if source image still exists + if (!BaflUtils::FileExists(iEikonEnv->FsSession(), iSourceFileName)) + { + if (iExitFromApp) + { + TInt exit = ((CImageEditorUIView *) iEditorView)->LaunchExitWithoutSavingQueryL(); + if (exit) + { + // Exit + User::Leave(KSIEEErrorOkToExit); + } + else + { + iExitFromApp = EFalse; + User::Leave(KSIEEInternal); + } + } + else + { + User::Leave(KSIEEInternal); + } + } + + // Check document name if not saved yet or memory card removed + if (!iImageSaved || !BaflUtils::PathExists(iEikonEnv->FsSession(), + iTempSaveFileName.Left(3))) + { + // If not saved yet, check that document name is valid + SetImageNameL(); + } // Set temp save image name to engine - iEditorManager->SetImageName (iTempSaveFileName); - - SetLayoutAwareApp(EFalse); - // Launch save wait note - LaunchSaveWaitNoteL (); - - iCallback->DoCallback (KObSaveCallbackID); - -} + iEditorManager->SetImageName(iTempSaveFileName); + + SetLayoutAwareApp(EFalse); + // Launch save wait note + LaunchSaveWaitNoteL(); + + iCallback->DoCallback(KObSaveCallbackID); + + } //============================================================================= void CImageEditorAppUi::SetImageNameL() - { - - // Create new document name - // (note that this also selects the drive where the image is saved) - TInt err = ImageEditorUtils::GenerateNewDocumentNameL ( - iEikonEnv->FsSession(), - iSourceFileName, - iDocumentName, - &iSourceImageMgAlbumIdList - ); - User::LeaveIfError (err); // cannot save the image - iEditorManager->SetImageName (iDocumentName); - - // Change title pane text - SetFileNameTitlePaneL(iSourceFileName); + { + + // Create new document name + // (note that this also selects the drive where the image is saved) + TInt err = ImageEditorUtils::GenerateNewDocumentNameL( + iEikonEnv->FsSession(), iSourceFileName, iDocumentName, + &iSourceImageMgAlbumIdList); + User::LeaveIfError(err); // cannot save the image + iEditorManager->SetImageName(iDocumentName); + + // Change title pane text + SetFileNameTitlePaneL(iSourceFileName); // Check that everything is in order with the file - CheckFileL (iDocumentName); - - // Generate temporary save file name - TParse tempFileParser; - tempFileParser.Set (KTempSaveFile, &KTempPath, &iDocumentName); - iTempSaveFileName.Copy (tempFileParser.FullName()); - BaflUtils::EnsurePathExistsL (iEikonEnv->FsSession(), iTempSaveFileName); - - } - + CheckFileL(iDocumentName); + + // Generate temporary save file name + TParse tempFileParser; + tempFileParser.Set(KTempSaveFile, &KTempPath, &iDocumentName); + iTempSaveFileName.Copy(tempFileParser.FullName()); + BaflUtils::EnsurePathExistsL(iEikonEnv->FsSession(), iTempSaveFileName); + + } //============================================================================= void CImageEditorAppUi::SaveChangesAndSendL() -{ - - LOG(KImageEditorLogFile, "CImageEditorAppUi::SaveChangesAndSendL()"); - - iSending = ETrue; - - // Delete old temp files if exists - DeleteTempFiles(); - - if (iEditorManager->IsImageChanged()) - { - // Save image - SaveImageL(); - - } - // Otherwise send last saved image - else - { - SendImageL (); - } - -} + { + + LOG(KImageEditorLogFile, "CImageEditorAppUi::SaveChangesAndSendL()"); + + iSending = ETrue; + + // Delete old temp files if exists + DeleteTempFiles(); + + if (iEditorManager->IsImageChanged()) + { + // Save image + SaveImageL(); + } + // Otherwise send last saved image + else + { + SendImageL(); + } + + } //============================================================================= -void CImageEditorAppUi::SendImageL () -{ - LOG(KImageEditorLogFile, "CImageEditorAppUi::SendImageL()"); - - ResetBusy(); - - RFs& fs = iEikonEnv->FsSession(); - TFileName fileToSend; - - // Check if image has been modified and saved - if (BaflUtils::FileExists(fs, iDocumentName)) - { - fileToSend.Append(iDocumentName); - } - // Use source file if no changes done - else - { - fileToSend.Append(iSourceFileName); - } - - LOGFMT(KImageEditorLogFile, "CImageEditorAppUi: Sending image: %S", &fileToSend); - - iEikonEnv->SetBusy(ETrue); - +void CImageEditorAppUi::SendImageL() + { + LOG(KImageEditorLogFile, "CImageEditorAppUi::SendImageL()"); + + ResetBusy(); + + RFs& fs = iEikonEnv->FsSession(); + TFileName fileToSend; + + // Check if image has been modified and saved + if (BaflUtils::FileExists(fs, iDocumentName)) + { + fileToSend.Append(iDocumentName); + } + // Use source file if no changes done + else + { + fileToSend.Append(iSourceFileName); + } + + LOGFMT(KImageEditorLogFile, "CImageEditorAppUi: Sending image: %S", &fileToSend); + + iEikonEnv->SetBusy(ETrue); + // Launch send query dialog - TSendingCapabilities cap( 0, 0, TSendingCapabilities::ESupportsAttachments ); - ((CImageEditorUIView *)iEditorView)->LaunchSendQueryL(cap, fileToSend); - - iSending = EFalse; - iEikonEnv->SetBusy(EFalse); -} + TSendingCapabilities cap(0, 0, TSendingCapabilities::ESupportsAttachments); + ((CImageEditorUIView *) iEditorView)->LaunchSendQueryL(cap, fileToSend); + + iSending = EFalse; + iEikonEnv->SetBusy(EFalse); + } //============================================================================= -void CImageEditorAppUi::CheckFileL (const TDesC & aFileName) const -{ +void CImageEditorAppUi::CheckFileL(const TDesC & aFileName) const + { RFs & fs = iEikonEnv->FsSession(); // Is file name valid - if ( !fs.IsValidName (aFileName) ) - { - User::Leave ( KSIEESaveFile ); + if (!fs.IsValidName(aFileName)) + { + User::Leave(KSIEESaveFile); + } } -} - //============================================================================= -TBool CImageEditorAppUi::CallbackMethodL (TInt aParam) -{ +TBool CImageEditorAppUi::CallbackMethodL(TInt aParam) + { LOGFMT(KImageEditorLogFile, "CImageEditorAppUi::CallbackMethodL (%d)", aParam); - TBool ret = EFalse; - - switch (aParam) - { - - case KObConstructCallBackID: + TBool ret = EFalse; + + switch (aParam) { - - switch (iConstructionState) - { - - case EConstructionStateAlloc: - { - // Launch wait note - LaunchLoadWaitNoteL(); - - // Initialize resolution utility. CResolutionUtil::InitializeL() - // Returns the singleton instance of the class, creating it if - // it does not yet exist. - iResolutionUtil = CResolutionUtil::InitializeL(); + case KObConstructCallBackID: + { + switch (iConstructionState) + { + case EConstructionStateAlloc: + { + // Launch wait note + LaunchLoadWaitNoteL(); + + // Initialize resolution utility. CResolutionUtil::InitializeL() + // Returns the singleton instance of the class, creating it if + // it does not yet exist. + iResolutionUtil = CResolutionUtil::InitializeL(); iResolutionUtil->SetFullScreen(EFalse); #ifdef LANDSCAPE_SUPPORT - // Set landscape parameter - if (LandscapeScreenOrientation()) - { - iResolutionUtil->SetLandscape(ETrue); - } - else - { - iResolutionUtil->SetLandscape(EFalse); - } + // Set landscape parameter + if (LandscapeScreenOrientation()) + { + iResolutionUtil->SetLandscape(ETrue); + } + else + { + iResolutionUtil->SetLandscape(EFalse); + } #else #ifdef LANDSCAPE_ONLY iResolutionUtil->SetLandscape(ETrue); #else - iResolutionUtil->SetLandscape(EFalse); + iResolutionUtil->SetLandscape(EFalse); #endif #endif // LANDSCAPE_SUPPORT - - iResolutionUtil->UpdateScreenMode(); - LOG(KImageEditorLogFile, "CImageEditorAppUi: Resolution set"); - - // Create the Send UI instance - iSendAppUi = CSendUi::NewL(); - ((CImageEditorUIView *)iEditorView)->SetSendAppUi(iSendAppUi); - - // Create plug-in locator - CreatePluginLocatorL(); + iResolutionUtil->UpdateScreenMode(); + LOG(KImageEditorLogFile, "CImageEditorAppUi: Resolution set"); + + // Create the Send UI instance + iSendAppUi = CSendUi::NewL(); + ((CImageEditorUIView *) iEditorView)->SetSendAppUi(iSendAppUi); + + // Create plug-in locator + CreatePluginLocatorL(); LOG(KImageEditorLogFile, "Locator created"); - // Create plug-in manager - CreateEditorManagerL(); + + // Create plug-in manager + CreateEditorManagerL(); LOG(KImageEditorLogFile, "Manager created"); - // Create image controller - CreateImageControllerL(); + + // Create image controller + CreateImageControllerL(); LOG(KImageEditorLogFile, "Image Controller created"); - iConstructionState = EConstructionStateLoadImage; - ret = ETrue; - break; - } - - case EConstructionStateLoadImage: - { + iConstructionState = EConstructionStateLoadImage; + ret = ETrue; + break; + } + + case EConstructionStateLoadImage: + { LOG(KImageEditorLogFile, "Loading image"); // iSourceFileName is available (in embedded mode) only after // CImageEditorDocument::OpenFileL has been called by the system. // If that has not been done if (!iSourceFileName.Length()) - { + { iConstructionState = EConstructionStateWaitForStartupParameters; ret = EFalse; - } + } else - { - // Kill wait note before loading image. - // Some corrupted images loading stacks if wait note is displayd - //KillWaitNote(); - - // Relaunch wait note - //LaunchLoadWaitNoteL(); - - // Load image - LoadImageL(); - - SetFileNameTitlePaneL(iSourceFileName); - iConstructionState = EConstructionStateScanPlugins; - ret = ETrue; + { + // Kill wait note before loading image. + // Some corrupted images loading stacks if wait note is displayd + //KillWaitNote(); + + // Relaunch wait note + //LaunchLoadWaitNoteL(); + + // Load image + LoadImageL(); + + SetFileNameTitlePaneL(iSourceFileName); + iConstructionState = EConstructionStateScanPlugins; + ret = ETrue; + } + break; } - break; - } - - case EConstructionStateScanPlugins: - { + + case EConstructionStateScanPlugins: + { LOG(KImageEditorLogFile, "Scanning plugins"); - LoadPluginsL(); - iConstructionState = EConstructionStateInitUi; - ret = ETrue; - break; - } - - case EConstructionStateInitUi: - { + LoadPluginsL(); + iConstructionState = EConstructionStateInitUi; + ret = ETrue; + break; + } + + case EConstructionStateInitUi: + { LOG(KImageEditorLogFile, "Init UI"); - // Initialize UI items - iPluginsScanned = ETrue; - InitializeUiItemsL(); - iConstructionState = EConstructionStateReady; - ret = ETrue; - break; - } - - default: - { + // Initialize UI items + iPluginsScanned = ETrue; + InitializeUiItemsL(); + iConstructionState = EConstructionStateReady; + ret = ETrue; + break; + } + + default: + { LOG(KImageEditorLogFile, "Ready"); KillWaitNote(); - ApplicationReadyL(); - break; - } - } - break; - } + ApplicationReadyL(); + break; + } + } + break; + } case KObReturnFromPluginID: - { - SetUndoFlag(); + { + SetUndoFlag(); iEditorManager->ShowPluginPopup(); iEditorManager->ClosePlugin(); - - __ASSERT_ALWAYS( iEditorView, User::Panic(KComponentName, EImageEditorPanicNoView) ); - ((CImageEditorUIView *)iEditorView)->ActivateMainViewL(); - - ((CImageEditorUIView *)iEditorView)->SetImageL ( - iEditorManager->GetPreviewImage()); - + __ASSERT_ALWAYS( iEditorView, User::Panic(KComponentName, EImageEditorPanicNoView) ); + ((CImageEditorUIView *) iEditorView)->ActivateMainViewL(); + + //Only for draw plug-in + if (iPluginName != KNull && iPluginName == KDrawPlugin) + { + iPluginName.Copy(KNull); + ResetFullScreenL(); + } + ResetBusy(); break; - } + } case KObInitPluginID: - { - InitializePluginL (); - SetUndoFlag(); + { + InitializePluginL(); + SetUndoFlag(); break; - } + } case KObCancelCallbackID: - { + { + TRect rect; + CResolutionUtil::Self()->GetClientRect(rect); + CCoeControl* control = ((CImageEditorUIView *) iEditorView)->GetContainer(); + control->SetRect(rect); + iEditorManager->ClosePlugin(); - iEditorManager->UndoL(); - - - __ASSERT_ALWAYS( iEditorView, User::Panic(KComponentName, EImageEditorPanicNoView) ); - ((CImageEditorUIView *)iEditorView)->ActivateMainViewL(); - - ((CImageEditorUIView *)iEditorView)->SetImageL ( - iEditorManager->GetPreviewImage()); - - SetUndoFlag(); + iEditorManager->UndoL(); + + __ASSERT_ALWAYS( iEditorView, User::Panic(KComponentName, EImageEditorPanicNoView) ); + ((CImageEditorUIView *) iEditorView)->ActivateMainViewL(); + + ((CImageEditorUIView *) iEditorView)->SetImageL(iEditorManager->GetPreviewImage()); + + SetUndoFlag(); ResetBusy(); iCancelling = EFalse; break; - } + } case KObUndoDCallbackID: - { - iEditorManager->UndoL(); - SetUndoFlag(); - ((CImageEditorUIView *)iEditorView)->GetContainer()->DrawNow(); + { + iEditorManager->UndoL(); + SetUndoFlag(); + ((CImageEditorUIView *) iEditorView)->GetContainer()->DrawNow(); ResetBusy(); break; - } + } case KObSendCallbackID: - { - SendImageL (); - ResetBusy(); + { + SendImageL(); + ResetBusy(); + break; + } + + case KObPrintCallbackID: + { + // Reset first otherwise canceling print application + // leaves busy state active + iPrinting = EFalse; + ResetBusy(); + ((CImageEditorUIView *) iEditorView)-> HandleCommandL(EImageEditorDoPrint); break; + } + + case KObSaveCallbackID: + { + // Start saving + iImageController->SaveImageL(iTempSaveFileName); + iSaving = ETrue; + break; + } + + default: + { + break; + } } - case KObPrintCallbackID: - { - // Reset first otherwise canceling print application - // leaves busy state active - iPrinting = EFalse; - ResetBusy(); - ((CImageEditorUIView *)iEditorView)-> - HandleCommandL(EImageEditorDoPrint); - break; - } - - case KObSaveCallbackID: - { - // Start saving - iImageController->SaveImageL (iTempSaveFileName); - - iSaving = ETrue; - break; - } - - default: + return ret; + } + +//============================================================================= +void CImageEditorAppUi::SetBusy() + { + LOG(KImageEditorLogFile, "CImageEditorAppUi: SetBusy()"); + if (iEditorView) { - break; + ((CImageEditorUIView *) iEditorView)->SetBusy(); + } + iBusy = ETrue; + } + +//============================================================================= +void CImageEditorAppUi::ResetBusy() + { + + LOG(KImageEditorLogFile, "CImageEditorAppUi: ResetBusy()"); + // Keep busy until application is fully constructed + if (iConstructionState == EConstructionStateReady) + { + if (iEditorView) + { + ((CImageEditorUIView *) iEditorView)->ResetBusy(); + } + iBusy = EFalse; } } - return ret; -} - -//============================================================================= -void CImageEditorAppUi::SetBusy () -{ - LOG(KImageEditorLogFile, "CImageEditorAppUi: SetBusy()"); - if (iEditorView) - { - ((CImageEditorUIView *)iEditorView)->SetBusy(); - } - iBusy = ETrue; -} - -//============================================================================= -void CImageEditorAppUi::ResetBusy () -{ - LOG(KImageEditorLogFile, "CImageEditorAppUi: ResetBusy()"); - // Keep busy until application is fully constructed - if (iConstructionState == EConstructionStateReady) - { - if (iEditorView) - { - ((CImageEditorUIView *)iEditorView)->ResetBusy(); - } - iBusy = EFalse; - } -} - //============================================================================= -void CImageEditorAppUi::SetFullScreenL () -{ - __ASSERT_ALWAYS( iEditorView, User::Panic(KComponentName, EImageEditorPanicNoView) ); - - LOG(KImageEditorLogFile, "CImageEditorAppUi: Setting full screen"); - - iFullScreen = ETrue; - - // Set to full screen mode - ((CImageEditorUIView *)iEditorView)->SetFullScreen(); - - // In the startup image controller might not be created yet - if (iImageController) - { - // Update new screen resolution - UpdateScreenRectL(); - } - - -} +void CImageEditorAppUi::SetFullScreenL() + { + __ASSERT_ALWAYS( iEditorView, User::Panic(KComponentName, EImageEditorPanicNoView) ); + + LOG(KImageEditorLogFile, "CImageEditorAppUi: Setting full screen"); + + iFullScreen = ETrue; + + // Set to full screen mode + ((CImageEditorUIView *) iEditorView)->SetFullScreen(); + + // In the startup image controller might not be created yet + if (iImageController) + { + // Update new screen resolution + UpdateScreenRectL(); + } + + } //============================================================================= -void CImageEditorAppUi::ResetFullScreenL () -{ - __ASSERT_ALWAYS( iEditorView, User::Panic(KComponentName, EImageEditorPanicNoView) ); - - LOG(KImageEditorLogFile, "CImageEditorAppUi: Resetting full screen"); - - iFullScreen = EFalse; - - // Set to full screen mode - ((CImageEditorUIView *)iEditorView)->ResetFullScreen(); - - // In the startup image controller might not be created yet - if (iImageController) - { - UpdateScreenRectL(); - } - -} +void CImageEditorAppUi::ResetFullScreenL() + { + __ASSERT_ALWAYS( iEditorView, User::Panic(KComponentName, EImageEditorPanicNoView) ); + + LOG(KImageEditorLogFile, "CImageEditorAppUi: Resetting full screen"); + + iFullScreen = EFalse; + + // Set to full screen mode + ((CImageEditorUIView *) iEditorView)->ResetFullScreen(); + + // In the startup image controller might not be created yet + if (iImageController) + { + UpdateScreenRectL(); + } + + } //============================================================================= -void CImageEditorAppUi::SetUndoFlag () -{ - if (iEditorView) - { - ((CImageEditorUIView *)iEditorView)->SetUndoFlag( iEditorManager->CanUndo() ); - ((CImageEditorUIView *)iEditorView)->SetSaveFlag( iEditorManager->IsImageChanged() ); - } -} +void CImageEditorAppUi::SetUndoFlag() + { + if (iEditorView) + { + ((CImageEditorUIView *) iEditorView)->SetUndoFlag(iEditorManager->CanUndo()); + ((CImageEditorUIView *) iEditorView)->SetSaveFlag(iEditorManager->IsImageChanged()); + } + } //============================================================================= -void CImageEditorAppUi::SetTitlePaneTextL (const TDesC & aText) -{ - const TInt KMaximumTitleTextLength = 13; - - if (iEditorView) - { - HBufC * title_text = HBufC::NewLC ( aText.Length() ); - TPtr title_text_ptr = title_text->Des(); - - // No truncation - if ( aText.Length() - 4 < KMaximumTitleTextLength ) - { - // Copy whole file name - title_text_ptr.Copy (aText); - } - - // With truncation - else - { - - // Copy maximum amount of the file - title_text_ptr.Copy ( aText.Left (KMaximumTitleTextLength) ); - - // Append horizontal ellipsis - title_text_ptr.Append ( KBaflCharTruncation ); - - // Append sequence number - _LIT(KSearchWildcard, "*-???"); - TInt offset = aText.Match (KSearchWildcard); - if ( offset != KErrNotFound ) - { - title_text_ptr.Append ( aText.Mid (offset, 4) ); - } - - } - - // Set title pane text - ((CImageEditorUIView *)iEditorView)->SetTitlePaneTextL (title_text_ptr); - - CleanupStack::PopAndDestroy(); // title_text - } -} +void CImageEditorAppUi::SetTitlePaneTextL(const TDesC & aText) + { + const TInt KMaximumTitleTextLength = 13; + + if (iEditorView) + { + HBufC * title_text = HBufC::NewLC(aText.Length()); + TPtr title_text_ptr = title_text->Des(); + + // No truncation + if (aText.Length() - 4 < KMaximumTitleTextLength) + { + // Copy whole file name + title_text_ptr.Copy(aText); + } + // With truncation + else + { + // Copy maximum amount of the file + title_text_ptr.Copy(aText.Left(KMaximumTitleTextLength)); + + // Append horizontal ellipsis + title_text_ptr.Append(KBaflCharTruncation); + // Append sequence number + _LIT(KSearchWildcard, "*-???"); + TInt offset = aText.Match(KSearchWildcard); + if (offset != KErrNotFound) + { + title_text_ptr.Append(aText.Mid(offset, 4)); + } + } + // Set title pane text + ((CImageEditorUIView *) iEditorView)->SetTitlePaneTextL(title_text_ptr); + + CleanupStack::PopAndDestroy(); // title_text + } + } //============================================================================= -void CImageEditorAppUi::ClearTitlePaneTextL () -{ - if (iEditorView) - { - ((CImageEditorUIView *)iEditorView)->ClearTitlePaneTextL (); - } -} - +void CImageEditorAppUi::ClearTitlePaneTextL() + { + if (iEditorView) + { + ((CImageEditorUIView *) iEditorView)->ClearTitlePaneTextL(); + } + } //============================================================================= -void CImageEditorAppUi::SetFileNameTitlePaneL (const TDesC& aFullFileName) -{ - TParsePtrC parser (aFullFileName); - SetTitlePaneTextL ( parser.Name() ); -} +void CImageEditorAppUi::SetFileNameTitlePaneL(const TDesC& aFullFileName) + { + TParsePtrC parser(aFullFileName); + SetTitlePaneTextL(parser.Name()); + } //============================================================================= void CImageEditorAppUi::ClearNaviPaneTextL() -{ - if (iEditorView) - { - ((CImageEditorUIView *)iEditorView)->ClearNaviPaneTextL(); - } -} - + { + if (iEditorView) + { + ((CImageEditorUIView *) iEditorView)->ClearNaviPaneTextL(); + } + } //============================================================================= void CImageEditorAppUi::UpdateScreenRectL() - { - LOG(KImageEditorLogFile, "CImageEditorAppUi::UpdateScreenRectL()"); - - if (iEditorView == NULL || - iEditorManager == NULL || - iImageController == NULL) + { + LOG(KImageEditorLogFile, "CImageEditorAppUi::UpdateScreenRectL()"); + + if (iEditorView == NULL || iEditorManager == NULL || iImageController == NULL) { return; } - - iEditorView->HandleCommandL (EImageEditorPreScreenModeChange); - - // Set Full screen parameter - iResolutionUtil->SetFullScreen(iFullScreen); + + iEditorView->HandleCommandL(EImageEditorPreScreenModeChange); + + // Set Full screen parameter + iResolutionUtil->SetFullScreen(iFullScreen); #ifdef LANDSCAPE_SUPPORT - // Set landscape parameter - if (LandscapeScreenOrientation()) - { - iResolutionUtil->SetLandscape(ETrue); - } - else - { - iResolutionUtil->SetLandscape(EFalse); - } + // Set landscape parameter + if (LandscapeScreenOrientation()) + { + iResolutionUtil->SetLandscape(ETrue); + } + else + { + iResolutionUtil->SetLandscape(EFalse); + } #else #ifdef LANDSCAPE_ONLY iResolutionUtil->SetLandscape(ETrue); #else - iResolutionUtil->SetLandscape(EFalse); + iResolutionUtil->SetLandscape(EFalse); #endif #endif - // Update view layout - ((CImageEditorUIView *)iEditorView)->UpdateLayoutL( - iEikonEnv->ScreenDevice()->CurrentScreenMode()); + // Update view layout + ((CImageEditorUIView *) iEditorView)->UpdateLayoutL(iEikonEnv->ScreenDevice()->CurrentScreenMode()); LOGFMT(KImageEditorLogFile, "CImageEditorAppUi: CurrentScreenMode() = %d", iEikonEnv->ScreenDevice()->CurrentScreenMode() ); - // Set current screen size to resolution util - iResolutionUtil->UpdateScreenMode(); + // Set current screen size to resolution util + iResolutionUtil->UpdateScreenMode(); // Check if screen size has changed TRect newScreenRect; @@ -2129,37 +2096,38 @@ LOG(KImageEditorLogFile, "CImageEditorAppUi: Not setting new preview image"); return; } - iOldScreenRect = newScreenRect; - - LOG(KImageEditorLogFile, "CImageEditorAppUi: Setting new preview image"); - - // Create screen bitmap for new screen size - iImageController->CreatePreviewBitmapL(); - if ((iConstructionState == EConstructionStateReady || - iConstructionState == EConstructionStateInitUi) && - !iSaving && iImageLoaded ) - { - iEditorManager->SetScreenSizeL(); - } - + + iOldScreenRect = newScreenRect; + + LOG(KImageEditorLogFile, "CImageEditorAppUi: Setting new preview image"); + + // Create screen bitmap for new screen size + iImageController->CreatePreviewBitmapL(); + if ((iConstructionState == EConstructionStateReady || iConstructionState + == EConstructionStateInitUi) && !iSaving && iImageLoaded) + { + iEditorManager->SetScreenSizeL(); + } + // Set the new image pointer to editor view if (!iSaving) { - ((CImageEditorUIView *)iEditorView)->SetImageL ( - iEditorManager->GetPreviewImage() - ); + ((CImageEditorUIView *) iEditorView)->SetImageL( + iEditorManager->GetPreviewImage()); } else // if saving cannot update new image until saving is completed. { - iOrientationChanged = ETrue; - ((CImageEditorUIView *)iEditorView)->SetImageL ( NULL ); + iOrientationChanged = ETrue; + ((CImageEditorUIView *) iEditorView)->SetImageL(NULL); } // Set container extent to whole screen - CCoeControl * control = ((CImageEditorUIView *)iEditorView)->GetContainer(); + CCoeControl * control = + ((CImageEditorUIView *) iEditorView)->GetContainer(); if (control) { - if (iFullScreen) + //if it is draw plug-in + if (iFullScreen || iPluginName == KDrawPlugin) { control->SetExtentToWholeScreen(); } @@ -2170,748 +2138,777 @@ control->SetRect(rect); } - if (control->IsFocused()) - { - control->DrawNow(); - } - } - - iEditorView->HandleCommandL (EImageEditorPostScreenModeChange); - - } - + if (control->IsFocused()) + { + control->DrawNow(); + } + } + + iEditorView->HandleCommandL(EImageEditorPostScreenModeChange); + + } //============================================================================= -void CImageEditorAppUi::ZoomL (const TZoom aZoom) - { - __ASSERT_ALWAYS( iEditorView, User::Panic(KComponentName, EImageEditorPanicNoView) ); - __ASSERT_ALWAYS( iEditorManager, User::Panic(KComponentName, EImageEditorPanicNoEditorManager) ); - SetBusy(); - - // Zoom - iEditorManager->ZoomL (aZoom); - - RenderL(); +void CImageEditorAppUi::ZoomL(const TZoom aZoom) + { + __ASSERT_ALWAYS( iEditorView, User::Panic(KComponentName, EImageEditorPanicNoView) ); + __ASSERT_ALWAYS( iEditorManager, User::Panic(KComponentName, EImageEditorPanicNoEditorManager) ); + SetBusy(); + + // Zoom + iEditorManager->ZoomL(aZoom); + + RenderL(); iEditorManager->GetSystemParameters(); - // Inform the view about current zoom mode - ((CImageEditorUIView *)iEditorView)-> - SetZoomModeL( iEditorManager->GetZoomMode() ); - } + // Inform the view about current zoom mode + ((CImageEditorUIView *) iEditorView)-> SetZoomModeL(iEditorManager->GetZoomMode()); + } //============================================================================= -void CImageEditorAppUi::PanL (TDirection aDirection) -{ - __ASSERT_ALWAYS( iEditorView, User::Panic(KComponentName, EImageEditorPanicNoView) ); - __ASSERT_ALWAYS( iEditorManager, User::Panic(KComponentName, EImageEditorPanicNoEditorManager) ); - - iEditorView->HandleCommandL (EImageEditorPreGlobalPanChange); - - SetBusy(); +void CImageEditorAppUi::PanL(TDirection aDirection) + { + __ASSERT_ALWAYS( iEditorView, User::Panic(KComponentName, EImageEditorPanicNoView) ); + __ASSERT_ALWAYS( iEditorManager, User::Panic(KComponentName, EImageEditorPanicNoEditorManager) ); + + iEditorView->HandleCommandL(EImageEditorPreGlobalPanChange); + + SetBusy(); // Pan - iEditorManager->PanL (aDirection); - - RenderL(); - iEditorManager->GetSystemParameters(); - - ResetBusy(); - - iEditorView->HandleCommandL (EImageEditorGlobalPanChanged); -} + iEditorManager->PanL(aDirection); + + RenderL(); + iEditorManager->GetSystemParameters(); + + ResetBusy(); + + iEditorView->HandleCommandL(EImageEditorGlobalPanChanged); + } //============================================================================= -void CImageEditorAppUi::TouchPanL () -{ - __ASSERT_ALWAYS( iEditorView, User::Panic(KComponentName, EImageEditorPanicNoView) ); - __ASSERT_ALWAYS( iEditorManager, User::Panic(KComponentName, EImageEditorPanicNoEditorManager) ); - - iEditorView->HandleCommandL (EImageEditorPreGlobalPanChange); - - SetBusy(); - - // Fetch directions - TInt xMovement(0); - TInt yMovement(0); - - ((CImageEditorUIView *)iEditorView)->GetTouchPanDirections( xMovement, yMovement ); - +void CImageEditorAppUi::TouchPanL() + { + __ASSERT_ALWAYS( iEditorView, User::Panic(KComponentName, EImageEditorPanicNoView) ); + __ASSERT_ALWAYS( iEditorManager, User::Panic(KComponentName, EImageEditorPanicNoEditorManager) ); + + iEditorView->HandleCommandL(EImageEditorPreGlobalPanChange); + + SetBusy(); + + // Fetch directions + TInt xMovement(0); + TInt yMovement(0); + + ((CImageEditorUIView *) iEditorView)->GetTouchPanDirections(xMovement,yMovement); + // Pan - iEditorManager->PanL( xMovement, yMovement ); - - RenderL(); - iEditorManager->GetSystemParameters(); - - ResetBusy(); - - iEditorView->HandleCommandL (EImageEditorGlobalPanChanged); -} + iEditorManager->PanL(xMovement, yMovement); + + RenderL(); + iEditorManager->GetSystemParameters(); + + ResetBusy(); + + iEditorView->HandleCommandL(EImageEditorGlobalPanChanged); + } //============================================================================= -void CImageEditorAppUi::RotateL (const TRotation aRot) -{ +void CImageEditorAppUi::RotateL(const TRotation aRot) + { __ASSERT_ALWAYS( iEditorView, User::Panic(KComponentName, EImageEditorPanicNoView) ); __ASSERT_ALWAYS( iEditorManager, User::Panic(KComponentName, EImageEditorPanicNoEditorManager) ); if (!iEditorManager->IsPluginLoaded()) - { - iEditorManager->RotateL (aRot); + { + iEditorManager->RotateL(aRot); RenderL(); SetUndoFlag(); - iEditorView->HandleCommandL (EImageEditorGlobalRotationChanged); + iEditorView->HandleCommandL(EImageEditorGlobalRotationChanged); + } } -} //============================================================================= -void CImageEditorAppUi::LaunchLoadWaitNoteL () -{ - __ASSERT_ALWAYS( iEditorView, User::Panic(KComponentName, EImageEditorPanicNoView) ); - - SetBusy(); - ((CImageEditorUIView *)iEditorView)->LaunchWaitDialog( ); - -// if (!iWaitNote) -// { -// ((CImageEditorUIView *)iEditorView)->LaunchLoadWaitDialogL( &iWaitNote, this ); -// } -} +void CImageEditorAppUi::LaunchLoadWaitNoteL() + { + __ASSERT_ALWAYS( iEditorView, User::Panic(KComponentName, EImageEditorPanicNoView) ); + + SetBusy(); + ((CImageEditorUIView *) iEditorView)->LaunchWaitDialog(); + + // if (!iWaitNote) + // { + // ((CImageEditorUIView *)iEditorView)->LaunchLoadWaitDialogL( &iWaitNote, this ); + // } + } //============================================================================= -void CImageEditorAppUi::LaunchSaveWaitNoteL () -{ - __ASSERT_ALWAYS( iEditorView, User::Panic(KComponentName, EImageEditorPanicNoView) ); - TAppUiOrientation orientation(EAppUiOrientationPortrait); - if(LandscapeScreenOrientation()) - { - orientation = EAppUiOrientationLandscape; - } - - SetOrientationL(orientation); - if (!iProgressNote) - { - ((CImageEditorUIView *)iEditorView)->LaunchSaveWaitDialogL( &iProgressNote, 100, this ); +void CImageEditorAppUi::LaunchSaveWaitNoteL() + { + __ASSERT_ALWAYS( iEditorView, User::Panic(KComponentName, EImageEditorPanicNoView) ); + TAppUiOrientation orientation(EAppUiOrientationPortrait); + if (LandscapeScreenOrientation()) + { + orientation = EAppUiOrientationLandscape; + } + + SetOrientationL(orientation); + if (!iProgressNote) + { + ((CImageEditorUIView *) iEditorView)->LaunchSaveWaitDialogL(&iProgressNote, 100, this); iSaving = ETrue; - } -} + } + } //============================================================================= -void CImageEditorAppUi::KillWaitNote () -{ - - -/* if (iWaitNote) - { - // If the application is exiting, iWaitNote->ProcessFinishedL() - // apparently does not finish in time and does something after the - // application has been deleted, causing USER 0 panic on debug builds. - delete iWaitNote; - iWaitNote = NULL; - } */ - - if (iProgressNote) - { - delete iProgressNote; - iProgressNote = NULL; - } - else - { - // This can be hidden in all cases. If dialog is not active, nothing - // special happens - ((CImageEditorUIView *)iEditorView)->HideWaitDialog( ); - // Commented due to multiple ResetBusy() call during initialization: - //ResetBusy(); - } -} - +void CImageEditorAppUi::KillWaitNote() + { + + /* if (iWaitNote) + { + // If the application is exiting, iWaitNote->ProcessFinishedL() + // apparently does not finish in time and does something after the + // application has been deleted, causing USER 0 panic on debug builds. + delete iWaitNote; + iWaitNote = NULL; + } */ + + if (iProgressNote) + { + delete iProgressNote; + iProgressNote = NULL; + } + else + { + // This can be hidden in all cases. If dialog is not active, nothing + // special happens + ((CImageEditorUIView *) iEditorView)->HideWaitDialog(); + // Commented due to multiple ResetBusy() call during initialization: + //ResetBusy(); + } + } //============================================================================= void CImageEditorAppUi::IncrementProgressBarL(const TInt aIncrement) -{ - __ASSERT_ALWAYS( iProgressNote, User::Panic(KComponentName, EImageEditorPanicNoProgressDialog) ); - - CEikProgressInfo * progi = iProgressNote->GetProgressInfoL(); - if (progi) - { - progi->IncrementAndDraw (aIncrement); - } -} + { + __ASSERT_ALWAYS( iProgressNote, User::Panic(KComponentName, EImageEditorPanicNoProgressDialog) ); + + CEikProgressInfo * progi = iProgressNote->GetProgressInfoL(); + if (progi) + { + progi->IncrementAndDraw(aIncrement); + } + } //============================================================================= -void CImageEditorAppUi::DialogDismissedL( TInt aButtonId ) -{ - LOGFMT(KImageEditorLogFile, "CImageEditorAppUi::DialogDismissedL( %d )", aButtonId); - - if( aButtonId == EAknSoftkeyCancel ) - { - - if ( !iSaving ) - { +void CImageEditorAppUi::DialogDismissedL(TInt aButtonId) + { + LOGFMT(KImageEditorLogFile, "CImageEditorAppUi::DialogDismissedL( %d )", aButtonId); + + if (aButtonId == EAknSoftkeyCancel) + { + if (!iSaving) + { iCallback->Cancel(); - iImageController->CancelOperation(ETrue); - } - else - { - iImageController->CancelOperation(); - } + iImageController->CancelOperation(ETrue); + } + else + { + iImageController->CancelOperation(); + } iWaitNote = NULL; - + ResetBusy(); - } -} + } + } //============================================================================= -TErrorHandlerResponse CImageEditorAppUi::HandleError ( - TInt aError, - const SExtendedError & aExtErr, - TDes & aErrorText, - TDes & aContextText - ) -{ - LOGFMT(KImageEditorLogFile, "CImageEditorAppUi::HandleError: %d", aError); +TErrorHandlerResponse CImageEditorAppUi::HandleError(TInt aError,const SExtendedError & aExtErr, TDes & aErrorText, TDes & aContextText) + { + LOGFMT(KImageEditorLogFile, "CImageEditorAppUi::HandleError: %d", aError); // Reset busy flag - KillWaitNote (); + KillWaitNote(); ResetBusy(); iCancelling = EFalse; iSaving = EFalse; - TErrorHandlerResponse ret = ENoDisplay; - - // Handle Image Editor errors - if ( (aError < KSIEEErrorBase) && (aError > KSIEEErrorMax) ) - { - TRAPD ( err, HandleErrorL (aError) ); - if ( err == KErrNoMemory ) + TErrorHandlerResponse ret = ENoDisplay; + + // Handle Image Editor errors + if ((aError < KSIEEErrorBase) && (aError > KSIEEErrorMax)) { - Exit(); + TRAPD ( err, HandleErrorL (aError) ); + if (err == KErrNoMemory) + { + Exit(); + } } - } - - // Let the framework handle system errors - else if ( aError == KErrNoMemory ) - { + + // Let the framework handle system errors + else if (aError == KErrNoMemory) + { iImageController->Cancel(); - ret = CAknViewAppUi::HandleError (aError, aExtErr, aErrorText, aContextText); - Exit (); - } - // KErrCancel is returned when Bluetooth send is cancelled - // No need to show error dialog - else if ( aError == KErrCancel ) - { - // Nothing to do - } - else if ((aError == KErrArgument) || (aError == KErrInUse)) - { - // Show error note - HandleErrorL (aError); - } - //end - else if ( (aError <= KErrExtended) && (aError >= KLeaveExit) ) - { - ret = CAknViewAppUi::HandleError (aError, aExtErr, aErrorText, aContextText); - // Close plugin if error occurs, otherwise plugin may crash - iEditorManager->ClosePlugin(); - - __ASSERT_ALWAYS( iEditorView, User::Panic(KComponentName, EImageEditorPanicNoView) ); - TRAP_IGNORE( ((CImageEditorUIView *)iEditorView)->ActivateMainViewL() ); - - TRAP_IGNORE( ((CImageEditorUIView *)iEditorView)->SetImageL ( - iEditorManager->GetPreviewImage()) ); - } - else - { - ret = CAknViewAppUi::HandleError (aError, aExtErr, aErrorText, aContextText); - // Close plugin if error occurs, otherwise plugin may crash - iEditorManager->ClosePlugin(); - - __ASSERT_ALWAYS( iEditorView, User::Panic(KComponentName, EImageEditorPanicNoView) ); - - TRAPD( err, ((CImageEditorUIView *)iEditorView)->ActivateMainViewL() ); - - TRAP_IGNORE( ((CImageEditorUIView *)iEditorView)->SetImageL ( - iEditorManager->GetPreviewImage()) ); - - if ( err == KErrNoMemory ) + ret = CAknViewAppUi::HandleError(aError, aExtErr, aErrorText,aContextText); + Exit(); + } + // KErrCancel is returned when Bluetooth send is cancelled + // No need to show error dialog + else if (aError == KErrCancel) + { + // Nothing to do + } + else if ((aError == KErrArgument) || (aError == KErrInUse)) + { + // Show error note + HandleErrorL(aError); + } + //end + else if ((aError <= KErrExtended) && (aError >= KLeaveExit)) { - Exit(); + ret = CAknViewAppUi::HandleError(aError, aExtErr, aErrorText,aContextText); + // Close plugin if error occurs, otherwise plugin may crash + iEditorManager->ClosePlugin(); + + __ASSERT_ALWAYS( iEditorView, User::Panic(KComponentName, EImageEditorPanicNoView) ); + TRAP_IGNORE( ((CImageEditorUIView *)iEditorView)->ActivateMainViewL() ); + + TRAP_IGNORE( ((CImageEditorUIView *)iEditorView)->SetImageL (iEditorManager->GetPreviewImage()) ); } - } - return ret; -} + else + { + ret = CAknViewAppUi::HandleError(aError, aExtErr, aErrorText, + aContextText); + // Close plugin if error occurs, otherwise plugin may crash + iEditorManager->ClosePlugin(); + + __ASSERT_ALWAYS( iEditorView, User::Panic(KComponentName, EImageEditorPanicNoView) ); + TRAPD( err, ((CImageEditorUIView *)iEditorView)->ActivateMainViewL() ); + + TRAP_IGNORE( ((CImageEditorUIView *)iEditorView)->SetImageL ( + iEditorManager->GetPreviewImage()) ); + if (err == KErrNoMemory) + { + Exit(); + } + } + return ret; + } //============================================================================= -void CImageEditorAppUi::HandleErrorL (const TInt aError) -{ +void CImageEditorAppUi::HandleErrorL(const TInt aError) + { // Show error note - ShowErrorNoteL (aError); + ShowErrorNoteL(aError); // Handle error - switch ( aError ) - { - - case KSIEEErrorOkToExit: - case KSIEEOpenFile: - case KSIEEExifRead: - case KSIEEInternalNonRecoverable: - case KSIEEIncompatibleImage: + switch (aError) { + case KSIEEErrorOkToExit: + case KSIEEOpenFile: + case KSIEEExifRead: + case KSIEEInternalNonRecoverable: + case KSIEEIncompatibleImage: + { // For some weird reason, in some cases when trying to // exit from CImageEditorAppUi::OperationReadyL, calling // Exit() here won't exit the application. RunAppShutter(); break; - } + } default: - { - // Close plugin if error occurs, otherwise plugin may crash - if (iEditorManager) - { - iEditorManager->ClosePlugin(); - - } - if (iEditorView) - { - ((CImageEditorUIView *)iEditorView)->ActivateMainViewL(); - ((CImageEditorUIView *)iEditorView)->SetImageL ( - iEditorManager->GetPreviewImage()); - } + { + // Close plugin if error occurs, otherwise plugin may crash + if (iEditorManager) + { + iEditorManager->ClosePlugin(); + + } + if (iEditorView) + { + ((CImageEditorUIView *) iEditorView)->ActivateMainViewL(); + ((CImageEditorUIView *) iEditorView)->SetImageL(iEditorManager->GetPreviewImage()); + } break; + } } } -} //============================================================================= -void CImageEditorAppUi::ShowErrorNoteL (const TInt aError) const -{ +void CImageEditorAppUi::ShowErrorNoteL(const TInt aError) const + { TInt res_id = -1; switch (aError) - { - case KErrNotFound: + { + case KErrNotFound: case KSIEEOpenFile: - case KSIEEExifRead: - case KSIEEIncompatibleImage: - { + case KSIEEExifRead: + case KSIEEIncompatibleImage: + { res_id = R_ERROR_LOADING; break; - } + } case KSIEESaveFile: - case KSIEEExifUpdate: + case KSIEEExifUpdate: case KErrArgument: case KErrInUse: - - { + + { res_id = R_ERROR_SAVING; break; - } + } case KSIEENotEnoughDiskSpace: - { + { res_id = R_ERROR_NOT_ENOUGH_DISK_SPACE; break; - } + } case KSIEEProcessFile: - { + { res_id = R_ERROR_PROCESSING; break; - } + } case KSIEEEngine: - { + { res_id = R_ERROR_ENGINE; break; - } + } case KSIEEInternal: - { + { res_id = R_ERROR_INTERNAL; break; - } + } case KSIEEInternalNonRecoverable: - { + { res_id = R_ERROR_INTERNAL_NON_RECOVERABLE; break; + } + case KSIEEProtectedFile: + { + res_id = R_ERROR_PROTECTED_FILE; + break; + } + default: + break; } - case KSIEEProtectedFile: - { - res_id = R_ERROR_PROTECTED_FILE; - break; - } - default: - break; + + if (res_id != -1) + { + HBufC * textdata = iEikonEnv->AllocReadResourceLC(res_id); + TPtrC ptr = textdata->Des(); + + LOGFMT(KImageEditorLogFile, "CImageEditorAppUi::ShowErrorNoteL: \"%S\"", &ptr); + + CAknGlobalNote* globalNote = CAknGlobalNote::NewLC(); + TInt noteId = globalNote->ShowNoteL(EAknGlobalErrorNote, ptr); + + User::After(1500042); // waiting for 1 second + + // discard note + globalNote->CancelNoteL(noteId); + + CleanupStack::PopAndDestroy(); //textdata + CleanupStack::PopAndDestroy(); // GlobalNote + } } - if (res_id != - 1) - { - HBufC * textdata = iEikonEnv->AllocReadResourceLC (res_id); - TPtrC ptr = textdata->Des(); - - LOGFMT(KImageEditorLogFile, "CImageEditorAppUi::ShowErrorNoteL: \"%S\"", &ptr); - - - CAknGlobalNote* globalNote = CAknGlobalNote::NewLC(); - TInt noteId = globalNote->ShowNoteL( EAknGlobalErrorNote, ptr ); - - User::After(1500042); // waiting for 1 second - - // discard note - globalNote->CancelNoteL( noteId ); - - - CleanupStack::PopAndDestroy(); //textdata - CleanupStack::PopAndDestroy(); // GlobalNote - } -} - //============================================================================= void CImageEditorAppUi::DeleteTempFiles() const -{ - // Get the used temp directory path. - // Take drive letter from iDocumentName - TParse parse; - parse.Set (KTempPath, &iDocumentName, NULL); - TPtrC tempDir = parse.DriveAndPath(); - - LOGFMT (KImageEditorLogFile, "CImageEditorAppUi::DeleteTempFiles(): %S", &tempDir); - - // Delete all files in the temp directory - _LIT(KAllFiles, "*.*"); - TFindFile file_finder (iEikonEnv->FsSession()); - CDir* file_list; - TInt err = file_finder.FindWildByDir (KAllFiles, tempDir, file_list); - while (err==KErrNone) - { - TInt i; - for (i=0; iCount(); i++) - { - const TDesC& name = (*file_list)[i].iName; - const TDesC& related = file_finder.File(); - TParse fullentry; - fullentry.Set (name, &related, NULL); - BaflUtils::DeleteFile (iEikonEnv->FsSession(), fullentry.FullName()); - } - delete file_list; - err=file_finder.FindWild (file_list); - } - -} + { + // Get the used temp directory path. + // Take drive letter from iDocumentName + TParse parse; + parse.Set(KTempPath, &iDocumentName, NULL); + TPtrC tempDir = parse.DriveAndPath(); + + LOGFMT (KImageEditorLogFile, "CImageEditorAppUi::DeleteTempFiles(): %S", &tempDir); + // Delete all files in the temp directory + _LIT(KAllFiles, "*.*"); + TFindFile file_finder(iEikonEnv->FsSession()); + CDir* file_list; + TInt err = file_finder.FindWildByDir(KAllFiles, tempDir, file_list); + while (err == KErrNone) + { + TInt i; + for (i = 0; i < file_list->Count(); i++) + { + const TDesC& name = (*file_list)[i].iName; + const TDesC& related = file_finder.File(); + TParse fullentry; + fullentry.Set(name, &related, NULL); + BaflUtils::DeleteFile(iEikonEnv->FsSession(), fullentry.FullName()); + } + delete file_list; + err = file_finder.FindWild(file_list); + } + + } //============================================================================= void CImageEditorAppUi::FinalizeSaveL() -{ - LOG(KImageEditorLogFile, "CImageEditorAppUi::FinalizeSaveL"); + { + LOG(KImageEditorLogFile, "CImageEditorAppUi::FinalizeSaveL"); #ifdef FILE_TIME_STAMP_UPDATE - // Set the timestamp of the saved file to original file's timestamp + 2 seconds. - // The idea is to make the original and edited images appear next to each other. - TEntry original; - TInt err = iEikonEnv->FsSession().Entry( iSourceFileName, original ); - if (KErrNone == err) - { - TTime newTime = original.iModified + TTimeIntervalSeconds (2); - - CFileMan* fileMan = CFileMan::NewL( iEikonEnv->FsSession() ); - CleanupStack::PushL (fileMan); - fileMan->Attribs(iDocumentName, 0, 0, newTime); // do not set or clear anything, mofify time - CleanupStack::PopAndDestroy (fileMan); - } + // Set the timestamp of the saved file to original file's timestamp + 2 seconds. + // The idea is to make the original and edited images appear next to each other. + TEntry original; + TInt err = iEikonEnv->FsSession().Entry( iSourceFileName, original ); + if (KErrNone == err) + { + TTime newTime = original.iModified + TTimeIntervalSeconds (2); + + CFileMan* fileMan = CFileMan::NewL( iEikonEnv->FsSession() ); + CleanupStack::PushL (fileMan); + fileMan->Attribs(iDocumentName, 0, 0, newTime); // do not set or clear anything, mofify time + CleanupStack::PopAndDestroy (fileMan); + } #endif - LOG(KImageEditorLogFile, "CImageEditorAppUi: Check if source image belongs to an album"); - - iSourceImageMgAlbumIdList.Reset(); - - LOG(KImageEditorLogFile, "CImageEditorAppUi: publish the filename for provider"); - - // Publish & Subscribe API used for delivering document name to AIW provider - TInt err2 = RProperty::Define(KImageEditorProperties, EPropertyFilename, RProperty::EText); - - if (err2 != KErrAlreadyExists) - { - User::LeaveIfError(err2); - } - - User::LeaveIfError(RProperty::Set(KImageEditorProperties, EPropertyFilename, iDocumentName)); - - LOG(KImageEditorLogFile, "CImageEditorAppUi::FinalizeSaveL out"); -} + LOG(KImageEditorLogFile, "CImageEditorAppUi: Check if source image belongs to an album"); + + iSourceImageMgAlbumIdList.Reset(); + + LOG(KImageEditorLogFile, "CImageEditorAppUi: publish the filename for provider"); + + // Publish & Subscribe API used for delivering document name to AIW provider + TInt err2 = RProperty::Define(KImageEditorProperties, EPropertyFilename, + RProperty::EText); + + if (err2 != KErrAlreadyExists) + { + User::LeaveIfError(err2); + } + + User::LeaveIfError(RProperty::Set(KImageEditorProperties, + EPropertyFilename, iDocumentName)); + + LOG(KImageEditorLogFile, "CImageEditorAppUi::FinalizeSaveL out"); + } //============================================================================= void CImageEditorAppUi::HandleVolumeUpL() -{ + { LOG(KImageEditorLogFile, "CImageEditorAppUi::HandleVolumeUpL: in"); TKeyEvent key; key.iScanCode = EStdKeyIncVolume; key.iCode = EKeyIncVolume; - if( LandscapeScreenOrientation() ) - { + if (LandscapeScreenOrientation()) + { key.iScanCode = EStdKeyDecVolume; key.iCode = EKeyDecVolume; - } + } key.iRepeats = 0; - iEikonEnv->SimulateKeyEventL( key, EEventKey ); + iEikonEnv->SimulateKeyEventL(key, EEventKey); LOG(KImageEditorLogFile, "CImageEditorAppUi::HandleVolumeUpL: out"); -} + } //============================================================================= void CImageEditorAppUi::HandleVolumeDownL() -{ + { LOG(KImageEditorLogFile, "CImageEditorAppUi::HandleVolumeDownL: in"); TKeyEvent key; key.iScanCode = EStdKeyDecVolume; key.iCode = EKeyDecVolume; - if( LandscapeScreenOrientation() ) - { + if (LandscapeScreenOrientation()) + { key.iScanCode = EStdKeyIncVolume; key.iCode = EKeyIncVolume; - } + } key.iRepeats = 0; - iEikonEnv->SimulateKeyEventL( key, EEventKey ); + iEikonEnv->SimulateKeyEventL(key, EEventKey); LOG(KImageEditorLogFile, "CImageEditorAppUi::HandleVolumeDownL: out"); -} + } //============================================================================= void CImageEditorAppUi::SaveImageOverWriteL(TBool aOverWrite) -{ - LOG(KImageEditorLogFile, "CImageEditorAppUi: SaveImageOverWriteL: in"); - - // Generate temporary save file name + { + LOG(KImageEditorLogFile, "CImageEditorAppUi: SaveImageOverWriteL: in"); + + // Generate temporary save file name TParse tempFileParser; - tempFileParser.Set (KTempSaveFile, &KTempPath, &iDocumentName); - iTempSaveFileName.Copy (tempFileParser.FullName()); - BaflUtils::EnsurePathExistsL (iEikonEnv->FsSession(), iTempSaveFileName); - - if (iExitFromApp) - { - TInt exit = - ((CImageEditorUIView *)iEditorView)->LaunchExitWithoutSavingQueryL(); - if (exit) - { - // Exit - User::Leave (KSIEEErrorOkToExit); - } - else - { - iExitFromApp = EFalse; - User::Leave(KSIEEInternal); - } - } + tempFileParser.Set(KTempSaveFile, &KTempPath, &iDocumentName); + iTempSaveFileName.Copy(tempFileParser.FullName()); + BaflUtils::EnsurePathExistsL(iEikonEnv->FsSession(), iTempSaveFileName); + + if (iExitFromApp) + { + TInt + exit = ((CImageEditorUIView *) iEditorView)->LaunchExitWithoutSavingQueryL(); + if (exit) + { + // Exit + User::Leave(KSIEEErrorOkToExit); + } + else + { + iExitFromApp = EFalse; + User::Leave(KSIEEInternal); + } + } // overwrite the existing file if (aOverWrite) - { - iDocumentName = iSourceFileName; - } - + { + iDocumentName = iSourceFileName; + } + // save with a new file name else - { - // Check document name if not saved yet or memory card removed - if ( !iImageSaved || - !BaflUtils::PathExists(iEikonEnv->FsSession(), iTempSaveFileName.Left(3))) - { - // If not saved yet, check that document name is valid - CheckFileL (iDocumentName); - } + { + // Check document name if not saved yet or memory card removed + if (!iImageSaved || !BaflUtils::PathExists(iEikonEnv->FsSession(), + iTempSaveFileName.Left(3))) + { + // If not saved yet, check that document name is valid + CheckFileL(iDocumentName); + } + } + + // Set temp save image name to engine + iEditorManager->SetImageName(iTempSaveFileName); + + // Launch save wait note + LaunchSaveWaitNoteL(); + + iCallback->DoCallback(KObSaveCallbackID); + LOG(KImageEditorLogFile, "CImageEditorAppUi: SaveImageOverWriteL: out"); } - - // Set temp save image name to engine - iEditorManager->SetImageName (iTempSaveFileName); - - // Launch save wait note - LaunchSaveWaitNoteL (); - - iCallback->DoCallback (KObSaveCallbackID); - LOG(KImageEditorLogFile, "CImageEditorAppUi: SaveImageOverWriteL: out"); -} //============================================================================= TInt CImageEditorAppUi::QueryAndSaveL() - { - - TInt isSaved = 0; - TInt userSelection = 0; - TBool isFileOpen = EFalse; - RFs& fs = iEikonEnv->FsSession(); - TInt err = fs.IsFileOpen( iSourceFileName, isFileOpen ); - - // Check if .jpg or .jpeg file - TBool isJpgExtension = EFalse; - TParsePtrC fileParse ( iSourceFileName ); + { + + TInt isSaved = 0; + TInt userSelection = 0; + TBool isFileOpen = EFalse; + RFs& fs = iEikonEnv->FsSession(); + TInt err = fs.IsFileOpen(iSourceFileName, isFileOpen); + + // Check if .jpg or .jpeg file + TBool isJpgExtension = EFalse; + TParsePtrC fileParse(iSourceFileName); _LIT( KJpgExtension, ".jpg" ); _LIT( KJpegExtension, ".jpeg" ); - TPtrC extension( fileParse.Ext() ); - if ( ( extension.MatchF( KJpgExtension ) == KErrNone ) || - ( extension.MatchF( KJpegExtension ) == KErrNone ) ) - { - isJpgExtension = ETrue; - } - - // If source file is open (e.g. in ImageViewer application) don't give - // user an option to replace original but launch directly "Save with a - // new name query. Don't give other that jpg originals. - if ( !isFileOpen && isJpgExtension ) - { - // the user selects to save with a new file name - // launch query with choices "Replace original" and - // "Save with a new file name" - userSelection = ( ( CImageEditorUIView *)iEditorView )->LaunchSaveImageQueryL(); - } - SetOrientationL(Orientation()); - SetLayoutAwareApp(EFalse); - // If user has selected "Save with a new file name" - if( userSelection == 0 ) - { - - // Multiple drive support enabled + TPtrC extension(fileParse.Ext()); + if ((extension.MatchF(KJpgExtension) == KErrNone) || (extension.MatchF( + KJpegExtension) == KErrNone)) + { + isJpgExtension = ETrue; + } + + // If source file is open (e.g. in ImageViewer application) don't give + // user an option to replace original but launch directly "Save with a + // new name query. Don't give other that jpg originals. + if (!isFileOpen && isJpgExtension) + { + // the user selects to save with a new file name + // launch query with choices "Replace original" and + // "Save with a new file name" + userSelection = ((CImageEditorUIView *) iEditorView)->LaunchSaveImageQueryL(); + } + SetOrientationL(Orientation()); + SetLayoutAwareApp(EFalse); + // If user has selected "Save with a new file name" + if (userSelection == 0) + { + + // Multiple drive support enabled #ifdef RD_MULTIPLE_DRIVE - - TDriveNumber driveNumber; - TFileName driveAndPath; - // new multi drive dialog - CAknMemorySelectionDialogMultiDrive* multiDriveDlg = - CAknMemorySelectionDialogMultiDrive::NewL( ECFDDialogTypeSave, - EFalse ); - CleanupStack::PushL( multiDriveDlg ); - - // launch "Select memory" query (mds) - if ( multiDriveDlg->ExecuteL( driveNumber, &driveAndPath, NULL ) ) - { - // Generate a default name for the new file - TInt err = ImageEditorUtils::GenerateNewFileNameL( - iEikonEnv->FsSession(), - iSourceFileName, - iDocumentName, - driveAndPath, - NULL ); - - driveAndPath.Append( PathInfo::ImagesPath() ); - - // launch file name prompt dialog - // the generated name is shown as a default name in dialog - TBuf<160> tmp( iDocumentName.Left(160) ); - iSavingQuery = ETrue; - if ( CAknFileNamePromptDialog::RunDlgLD( tmp, /* iDocumentName, */ - driveAndPath, - KNullDesC ) ) - { - iDocumentName.Copy( tmp ); - iSavingQuery = EFalse; - // add just queried filename to the path - driveAndPath.Append( iDocumentName ); - - iDocumentName = driveAndPath; - - SaveImageOverWriteL( EFalse ); - isSaved = 1; - } - iSavingQuery = EFalse; - } - CleanupStack::PopAndDestroy( multiDriveDlg ); - + + TDriveNumber driveNumber; + TFileName driveAndPath; + // new multi drive dialog + CAknMemorySelectionDialogMultiDrive* multiDriveDlg = CAknMemorySelectionDialogMultiDrive::NewL(ECFDDialogTypeSave, + EFalse); + CleanupStack::PushL(multiDriveDlg); + + // launch "Select memory" query (mds) + if (multiDriveDlg->ExecuteL(driveNumber, &driveAndPath, NULL )) + { + // Generate a default name for the new file + TInt err = ImageEditorUtils::GenerateNewFileNameL( + iEikonEnv->FsSession(), iSourceFileName, iDocumentName, + driveAndPath, NULL ); + + driveAndPath.Append(PathInfo::ImagesPath()); + + //Save as the original file format. + iDocumentName.Delete(iDocumentName.Length() - 5, 4); + iDocumentName.Append(fileParse.Ext()); + + // launch file name prompt dialog + // the generated name is shown as a default name in dialog + + TBuf<160> tmp(iDocumentName.Left(160)); + iSavingQuery = ETrue; + if (CAknFileNamePromptDialog::RunDlgLD(tmp, /* iDocumentName, */ + driveAndPath, KNullDesC)) + { + iDocumentName.Copy(tmp); + iSavingQuery = EFalse; + // add just queried filename to the path + driveAndPath.Append(iDocumentName); + + iDocumentName = driveAndPath; + + SaveImageOverWriteL(EFalse); + isSaved = 1; + } + iSavingQuery = EFalse; + } + CleanupStack::PopAndDestroy(multiDriveDlg); + #else // No multiple drive support - CAknMemorySelectionDialog::TMemory selectedMemory( - CAknMemorySelectionDialog::EPhoneMemory ); - - // launch "Select memory" query - if ( CAknMemorySelectionDialog::RunDlgLD( selectedMemory ) ) - { - // create path for the image - TFileName driveAndPath; - ImageEditorUtils::TMemorySelection memorySelection = - ImageEditorUtils::ESelectPhone; - if( selectedMemory == CAknMemorySelectionDialog::EPhoneMemory ) - { - memorySelection = ImageEditorUtils::ESelectPhone; - driveAndPath.Copy( PathInfo::PhoneMemoryRootPath() ); - driveAndPath.Append( PathInfo::ImagesPath() ); - } - else if ( selectedMemory == - CAknMemorySelectionDialog::EMemoryCard ) - { - memorySelection = ImageEditorUtils::ESelectMmc; - driveAndPath.Copy( PathInfo::MemoryCardRootPath() ); - driveAndPath.Append( PathInfo::ImagesPath() ); - } - - TInt err = ImageEditorUtils::GenerateNewDocumentNameL( - iEikonEnv->FsSession(), - iSourceFileName, - iDocumentName, - &iSourceImageMgAlbumIdList, - NULL, - memorySelection ); - - - // launch file name prompt dialog - // the generated name is shown as a default name - iSavingQuery = ETrue; - if ( CAknFileNamePromptDialog::RunDlgLD( iDocumentName, - driveAndPath, - KNullDesC ) ) - { - iSavingQuery = EFalse; - TInt err = ImageEditorUtils::GenerateFilePathL( - iEikonEnv->FsSession(), - iSourceFileName, - iDocumentName, - memorySelection - ); - - SaveImageOverWriteL( EFalse ); - isSaved = 1; - } - iSavingQuery = EFalse; - } + CAknMemorySelectionDialog::TMemory selectedMemory( + CAknMemorySelectionDialog::EPhoneMemory ); + + // launch "Select memory" query + if ( CAknMemorySelectionDialog::RunDlgLD( selectedMemory ) ) + { + // create path for the image + TFileName driveAndPath; + ImageEditorUtils::TMemorySelection memorySelection = + ImageEditorUtils::ESelectPhone; + if( selectedMemory == CAknMemorySelectionDialog::EPhoneMemory ) + { + memorySelection = ImageEditorUtils::ESelectPhone; + driveAndPath.Copy( PathInfo::PhoneMemoryRootPath() ); + driveAndPath.Append( PathInfo::ImagesPath() ); + } + else if ( selectedMemory == + CAknMemorySelectionDialog::EMemoryCard ) + { + memorySelection = ImageEditorUtils::ESelectMmc; + driveAndPath.Copy( PathInfo::MemoryCardRootPath() ); + driveAndPath.Append( PathInfo::ImagesPath() ); + } + + TInt err = ImageEditorUtils::GenerateNewDocumentNameL( + iEikonEnv->FsSession(), + iSourceFileName, + iDocumentName, + &iSourceImageMgAlbumIdList, + NULL, + memorySelection ); + + // launch file name prompt dialog + // the generated name is shown as a default name + iSavingQuery = ETrue; + if ( CAknFileNamePromptDialog::RunDlgLD( iDocumentName, + driveAndPath, + KNullDesC ) ) + { + iSavingQuery = EFalse; + TInt err = ImageEditorUtils::GenerateFilePathL( + iEikonEnv->FsSession(), + iSourceFileName, + iDocumentName, + memorySelection + ); + + SaveImageOverWriteL( EFalse ); + isSaved = 1; + } + iSavingQuery = EFalse; + } #endif - } - // the user selects to overwrite the original image - else if ( userSelection == 1 ) - { - SaveImageOverWriteL( ETrue ); - isSaved = 1; - } - return isSaved; - } + } + // the user selects to overwrite the original image + else if (userSelection == 1) + { + SaveImageOverWriteL(ETrue); + isSaved = 1; + } + return isSaved; + } // ---------------------------------------------------------------------------- // CImageEditorAppUi::HandleVolumeKeyEvent // ---------------------------------------------------------------------------- // -void CImageEditorAppUi::HandleVolumeKeyEvent( TRemConCoreApiOperationId aOperationId, - TRemConCoreApiButtonAction /* aButtonAct */ ) - { - if (((CImageEditorUIView *)iEditorView)->GetContainer()) - { - if(! ((CImageEditorUIView *)iEditorView)->GetContainer()->IsFocused() ) - { - return; - } - } - - if( iForeground ) - { - TKeyEvent keyEvent; - if( aOperationId == ERemConCoreApiVolumeUp ) - { - keyEvent.iScanCode = EStdKeyIncVolume; - TRAP_IGNORE( HandleKeyEventL( keyEvent, EEventKey ) ); - } - else if( aOperationId == ERemConCoreApiVolumeDown ) - { - keyEvent.iScanCode = EStdKeyDecVolume; - TRAP_IGNORE( HandleKeyEventL( keyEvent, EEventKey ) ); - } - } - } - +void CImageEditorAppUi::HandleVolumeKeyEvent( + TRemConCoreApiOperationId aOperationId, TRemConCoreApiButtonAction /* aButtonAct */) + { + if (((CImageEditorUIView *) iEditorView)->GetContainer()) + { + if (!((CImageEditorUIView *) iEditorView)->GetContainer()->IsFocused()) + { + return; + } + } + + if (iForeground) + { + TKeyEvent keyEvent; + if (aOperationId == ERemConCoreApiVolumeUp) + { + keyEvent.iScanCode = EStdKeyIncVolume; + TRAP_IGNORE( HandleKeyEventL( keyEvent, EEventKey ) ); + } + else if (aOperationId == ERemConCoreApiVolumeDown) + { + keyEvent.iScanCode = EStdKeyDecVolume; + TRAP_IGNORE( HandleKeyEventL( keyEvent, EEventKey ) ); + } + } + } + +void CImageEditorAppUi::InitialHorizontalDrawPlugin() + { + // // Get pointer to the view + CImageEditorUIView * view = (CImageEditorUIView *) iEditorView; + + TRect rect; + iResolutionUtil->GetClientRect(rect); + SetFullScreenL(); + // Create a plug-in control + // Ownership is moved to the plug-in + CCoeControl * control = NULL; + TInt err = iEditorManager->CreatePluginControlL(rect, view->GetContainer(), + control); + + LOG(KImageEditorLogFile, "CImageEditorAppUi: Plugin control created"); + + // The plug-in activation was cancelled + if (err != KErrNone) + { + // Cancel plug-in + iCancelling = ETrue; + iCallback->DoCallback(KObCancelCallbackID); + } + + // Activate plug-in + else + { + // Register control to UI + view->ActivatePluginL(control); + + LOG(KImageEditorLogFile, "CImageEditorAppUi: Plugin activated"); + + // If the filter did not have a control, close plug-in + if (!control) + { + iEditorManager->ClosePlugin(); + + } + + // Set the last opened image to editor view + ((CImageEditorUIView *) iEditorView)->SetImageL(iEditorManager->GetPreviewImage()); + + ResetBusy(); + } + } // End of File