imaging/imagingfws/src/Test/TImageDisplay/TImageDisplayDlgs.cpp
changeset 0 5752a19fdefe
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imaging/imagingfws/src/Test/TImageDisplay/TImageDisplayDlgs.cpp	Wed Aug 25 12:29:52 2010 +0300
@@ -0,0 +1,387 @@
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <techview/eikon.rsg>
+#include <techview/eikchlst.h>
+#include "plugininfoarray.h"
+
+#include "TImageDisplayDlgs.h"
+//
+// CDisplayModeDialog
+//
+
+CDisplayModeDialog::CDisplayModeDialog(TDisplayMode& aDisplayMode):
+	iDisplayMode(aDisplayMode)
+	{
+	}
+
+const TInt KNumDispMode = 10;
+const TDisplayMode KDispMode[KNumDispMode] = 
+	{ EGray2, EGray4, EGray16, EGray256, EColor16, 
+		EColor256, EColor4K, EColor64K, EColor16M , EColor16MU 
+	};
+
+void CDisplayModeDialog::PreLayoutDynInitL()
+	{
+	TInt choice = -1;
+
+	for (TInt index=0; index<KNumDispMode; index++)
+		{
+		if (KDispMode[index]==iDisplayMode)
+			{
+			choice = index;
+			break;
+			}
+		}
+
+	ASSERT(choice>=0); // should always match something
+	SetChoiceListCurrentItem(EVideoIdDisplayMode,choice);
+	}
+
+TBool CDisplayModeDialog::OkToExitL(TInt /*aButtonId*/)
+	{
+	const TInt chosenIndex = ChoiceListCurrentItem(EVideoIdDisplayMode);
+	ASSERT(chosenIndex<KNumDispMode);
+	iDisplayMode = KDispMode[chosenIndex];
+	return ETrue;
+	}
+
+
+CMaxReductionDialog::CMaxReductionDialog(TInt& aMaxReduction ):iMaxReduction(aMaxReduction)
+	{
+	}
+
+void CMaxReductionDialog::PreLayoutDynInitL()
+	{
+	SetNumberEditorValue(EImageMaxAllowedReduction, iMaxReduction);
+	}
+
+TBool CMaxReductionDialog::OkToExitL(TInt /*aButtonId*/)
+	{
+	iMaxReduction = NumberEditorValue(EImageMaxAllowedReduction);
+	return ETrue;
+	}
+
+CScalingQualityDialog::CScalingQualityDialog(TInt& aQualityValueRef):
+																	iQualityValueRef(aQualityValueRef)
+	{
+	}
+	
+void CScalingQualityDialog::PreLayoutDynInitL()
+	{
+	ASSERT(iQualityValueRef>=0); // should always match something
+	SetChoiceListCurrentItem(EImageScalingQuality, iQualityValueRef);
+	}
+
+TBool CScalingQualityDialog::OkToExitL(TInt /*aButtonId*/)
+	{
+	iQualityValueRef = ChoiceListCurrentItem(EImageScalingQuality);
+	return ETrue;
+	}
+
+CDrmContentIdDialog::CDrmContentIdDialog(TDes& aContentId):
+												iContentId(aContentId)
+	{
+	}
+
+void CDrmContentIdDialog::PreLayoutDynInitL()
+	{
+	SetEdwinTextL(EImageDrmContentId, &iContentId);
+	}
+
+TBool CDrmContentIdDialog::OkToExitL(TInt /*aButtonId*/)
+	{
+	GetEdwinText(iContentId, EImageDrmContentId);
+	return ETrue;
+	}
+
+CClipRectParamsDialog::CClipRectParamsDialog(TBool& aEnabled, TRect& aClipRect):
+												iEnabled(aEnabled), iClipRect(aClipRect)
+	{
+	}
+
+void CClipRectParamsDialog::PreLayoutDynInitL()
+	{
+	SetCheckBoxState(EImageUseClipRect, CEikButtonBase::TState(iEnabled));
+	SetNumberEditorValue(EImageClipRectTlx,iClipRect.iTl.iX);
+	SetNumberEditorValue(EImageClipRectTly,iClipRect.iTl.iY);
+	SetNumberEditorValue(EImageClipRectBrx,iClipRect.iBr.iX);
+	SetNumberEditorValue(EImageClipRectBry,iClipRect.iBr.iY);
+	HandleControlStateChangeL(EImageUseClipRect);
+	}
+
+TBool CClipRectParamsDialog::OkToExitL(TInt /*aButtonId*/)
+	{
+	iEnabled = CheckBoxState(EImageUseClipRect);
+	iClipRect.iTl.iX = NumberEditorValue(EImageClipRectTlx);
+	iClipRect.iTl.iY = NumberEditorValue(EImageClipRectTly);
+	iClipRect.iBr.iX = NumberEditorValue(EImageClipRectBrx);
+	iClipRect.iBr.iY = NumberEditorValue(EImageClipRectBry);
+	return ETrue;
+	}
+
+void CClipRectParamsDialog::HandleControlStateChangeL(TInt aControlId)
+	{
+	if (aControlId != EImageUseClipRect)
+		{
+		return;
+		}
+	const TBool disabled=(CEikButtonBase::EClear==CheckBoxState(EImageUseClipRect));
+	SetLineDimmedNow(EImageClipRectTlx,disabled);
+	SetLineDimmedNow(EImageClipRectTly,disabled);
+	SetLineDimmedNow(EImageClipRectBrx,disabled);
+	SetLineDimmedNow(EImageClipRectBry,disabled);
+	}
+//
+// CVideoBackgroundColorDialog
+//
+
+CVideoBackgroundColorDialog::CVideoBackgroundColorDialog(TInt& aColor16, TBool& aOverride):
+	iColor16(aColor16), iOverride(aOverride)
+	{
+	}
+
+void CVideoBackgroundColorDialog::PreLayoutDynInitL()
+	{
+	CEikButtonBase::TState state = iOverride ? CEikButtonBase::ESet : CEikButtonBase::EClear;
+	SetCheckBoxState(EVideoIdOverrideBackgroundColor, state);
+	SetChoiceListCurrentItem(EVideoIdBackgroundColor,iColor16);
+	if (!iOverride)
+		SetLineDimmedNow(EVideoIdBackgroundColor,ETrue);
+	}
+
+TBool CVideoBackgroundColorDialog::OkToExitL(TInt /*aButtonId*/)
+	{
+	iColor16 = ChoiceListCurrentItem(EVideoIdBackgroundColor);
+	CEikButtonBase::TState state = CheckBoxState(EVideoIdOverrideBackgroundColor);
+	iOverride = state != CEikButtonBase::EClear;
+	return ETrue;
+	}
+
+void CVideoBackgroundColorDialog::HandleControlStateChangeL(TInt aControlId)
+	{
+	if (aControlId == EVideoIdOverrideBackgroundColor)
+		{
+		CEikButtonBase::TState state = CheckBoxState(EVideoIdOverrideBackgroundColor);
+		TBool isSet = state != CEikButtonBase::EClear;
+		SetLineDimmedNow(EVideoIdBackgroundColor,!isSet);
+		}
+	}
+
+//
+// CVideoCurrentFrameDialog
+//
+
+CVideoCurrentFrameDialog::CVideoCurrentFrameDialog(TInt& aCurrentFrame,TInt aNumberOfFrames):
+	iCurrentFrame(aCurrentFrame),
+	iNumberOfFrames(aNumberOfFrames)
+	{}
+
+void CVideoCurrentFrameDialog::PreLayoutDynInitL()
+	{
+	SetNumberEditorValue(EVideoIdNumberOfFrames,iNumberOfFrames);
+	SetLineDimmedNow(EVideoIdNumberOfFrames,ETrue);
+	const TInt lastFrame = iNumberOfFrames - 1;
+	SetNumberEditorMinAndMax(EVideoIdCurrentFrameNumber,0,lastFrame);
+	SetNumberEditorValue(EVideoIdCurrentFrameNumber,Min(iCurrentFrame,lastFrame));
+	}
+
+TBool CVideoCurrentFrameDialog::OkToExitL(TInt /*aButtonId*/)
+	{
+	iCurrentFrame = NumberEditorValue(EVideoIdCurrentFrameNumber);
+	return ETrue;
+	}
+
+//
+// CVideoSaveAsDialog
+//
+
+CVideoSaveAsDialog::CVideoSaveAsDialog(TDes* aFileName,TFileSaveInfo& aSaveInfo):
+	CEikFileSaveAsDialog(aFileName),
+	iSaveInfo(aSaveInfo)
+	{}
+
+void CVideoSaveAsDialog::PreLayoutDynInitL()
+	{
+	SetTypeL();
+	CEikFileSaveAsDialog::PreLayoutDynInitL();
+	}
+
+void CVideoSaveAsDialog::SetTypeL()
+	{
+	const TUid imageType = iSaveInfo.iImageTypeUid;
+
+	if(imageType == KImageTypeBMPUid)
+		SetLabelL(EVideoIdSaveAsFormat,R_VIDEO_FILE_FORMAT_BMP);
+	else if(imageType == KImageTypeGIFUid)
+		SetLabelL(EVideoIdSaveAsFormat,R_VIDEO_FILE_FORMAT_GIF);
+	else if(imageType == KImageTypeJPGUid)
+		SetLabelL(EVideoIdSaveAsFormat,R_VIDEO_FILE_FORMAT_JPEG);
+	else if(imageType == KImageTypeMBMUid)
+		SetLabelL(EVideoIdSaveAsFormat,R_VIDEO_FILE_FORMAT_MBM);
+	else if(imageType == KImageTypePNGUid)
+		SetLabelL(EVideoIdSaveAsFormat,R_VIDEO_FILE_FORMAT_PNG);
+	else
+		SetLabelL(EVideoIdSaveAsFormat,R_VIDEO_FILE_FORMAT_CUSTOM);
+
+	}
+
+TBool CVideoSaveAsDialog::OkToExitL(TInt aButtonId)
+	{
+	if (aButtonId == EVideoIdSaveAsFormat)
+		{
+		CEikDialog* dialog = new(ELeave) CVideoFormatDialog(iSaveInfo);
+		if (dialog->ExecuteLD(R_VIDEO_FILE_FORMAT_DIALOG))
+			SetTypeL();
+
+		return EFalse;
+		}
+
+	return CEikFileSaveAsDialog::OkToExitL(aButtonId);
+	}
+
+//
+// CVideoFormatDialog
+//
+
+CVideoFormatDialog::CVideoFormatDialog(TFileSaveInfo& aSaveInfo):
+	iSaveInfo(aSaveInfo)
+	{}
+
+void CVideoFormatDialog::PreLayoutDynInitL()
+	{
+	CEikChoiceList* formatList = STATIC_CAST(CEikChoiceList*,Control(EVideoIdFileFormatType));
+
+	//Add the available encoders to the dialog
+	iEncoderList = CPluginInfoArray::NewL();
+	formatList->SetArrayL(iEncoderList); //ownership of iEncoderList passed to dialog
+
+	const TInt noOfEncoders = iEncoderList->MdcaCount();
+	if(noOfEncoders == 0)
+		User::Leave(KErrNotFound);
+	
+	//Find the index for the selected encoder (via ImageTypeUid)
+	//if it is not found use the first
+	TInt index;
+	for(index=noOfEncoders-1; index > 0; index--)
+		{
+		if(iEncoderList->ImageType(index) == iSaveInfo.iImageTypeUid)
+			break;
+		}
+	iSaveInfo.iImageTypeUid = iEncoderList->ImageType(index);
+
+	SetChoiceListCurrentItem(EVideoIdFileFormatType,index);
+	SetChoiceListCurrentItem(EVideoIdFileFormatBpp,iSaveInfo.iBpp);
+	SetChoiceListCurrentItem(EVideoIdFileFormatColor,iSaveInfo.iColor);
+	SetNumberEditorValue(EVideoIdFileFormatFactor,iSaveInfo.iQualityFactor);
+	SetChoiceListCurrentItem(EVideoIdFileFormatSampling,iSaveInfo.iSampling);
+	SetChoiceListCurrentItem(EVideoIdFileFormatCompression,iSaveInfo.iCompression);
+
+	ValidateControlState();
+	}
+
+void CVideoFormatDialog::HandleControlStateChangeL(TInt /*aControlId*/)
+	{
+	ValidateControlState();
+	}
+
+void CVideoFormatDialog::ValidateControlState()
+	{
+	TInt type = ChoiceListCurrentItem(EVideoIdFileFormatType);
+	TInt bpp = ChoiceListCurrentItem(EVideoIdFileFormatBpp);
+	TInt color = ChoiceListCurrentItem(EVideoIdFileFormatColor);
+	TInt compression = ChoiceListCurrentItem(EVideoIdFileFormatCompression);
+
+	TBool bppVisible = ETrue;
+	TBool colorVisible = ETrue;
+	TBool factorVisible = EFalse;
+	TBool samplingVisible = EFalse;
+	TBool compressionVisible = EFalse;
+
+
+	const TUid imageType = iEncoderList->ImageType(type);
+
+	if(imageType == KImageTypeBMPUid)
+		{
+		colorVisible = EFalse;
+		if (bpp == 1)
+			bpp = 2;
+		else if ((bpp > 3) && (bpp < 6))
+			bpp = 6;
+		else if (bpp > 6)
+			bpp = 0;
+		}
+	else if(imageType == KImageTypeGIFUid)
+		{
+		bppVisible = EFalse;
+		colorVisible = EFalse;
+		}
+	else if(imageType == KImageTypeJPGUid)
+		{
+		bppVisible = EFalse;
+		factorVisible = ETrue;
+		if (color)
+			samplingVisible = ETrue;
+		}
+	else if(imageType == KImageTypeMBMUid)
+		{
+		if (color == 0)
+			{
+			if (bpp > 3)
+				bpp = 0;
+			}
+		else
+			{
+			if (bpp < 2)
+				bpp = 2;
+			}
+		}
+	else if(imageType == KImageTypePNGUid)
+		{
+		if ((bpp > 3) && (bpp < 6))
+			bpp = 6;
+		else if (bpp > 6)
+			bpp = 0;
+		compressionVisible = ETrue;
+		}
+	else //Custom encoder
+		{
+		bppVisible = EFalse;
+		colorVisible = EFalse;
+		}
+
+	SetChoiceListCurrentItem(EVideoIdFileFormatBpp,bpp);
+	SetChoiceListCurrentItem(EVideoIdFileFormatColor,color);
+	SetChoiceListCurrentItem(EVideoIdFileFormatCompression,compression);
+
+	MakeLineVisible(EVideoIdFileFormatBpp,bppVisible);
+	MakeLineVisible(EVideoIdFileFormatColor,colorVisible);
+	MakeLineVisible(EVideoIdFileFormatFactor,factorVisible);
+	MakeLineVisible(EVideoIdFileFormatSampling,samplingVisible);
+	MakeLineVisible(EVideoIdFileFormatCompression,compressionVisible);
+	}
+
+TBool CVideoFormatDialog::OkToExitL(TInt /*aButtonId*/)
+	{
+	TInt type = ChoiceListCurrentItem(EVideoIdFileFormatType);
+	iSaveInfo.iImageTypeUid = iEncoderList->ImageType(type);
+	iSaveInfo.iBpp = ChoiceListCurrentItem(EVideoIdFileFormatBpp);
+	iSaveInfo.iColor = ChoiceListCurrentItem(EVideoIdFileFormatColor);
+	iSaveInfo.iQualityFactor = NumberEditorValue(EVideoIdFileFormatFactor);
+	iSaveInfo.iSampling = ChoiceListCurrentItem(EVideoIdFileFormatSampling);
+	iSaveInfo.iCompression = ChoiceListCurrentItem(EVideoIdFileFormatCompression);
+
+	return ETrue;
+	}