opldialg.h

来自「在手机操作系统symbina上使用的一个脚本扩展语言的代码实现,可以参考用于自己」· C头文件 代码 · 共 251 行

H
251
字号
// OPLDIALG.H
//
// Copyright (c) 1997-2001 Symbian Ltd. All rights reserved.

#ifndef OPLDIALG_H
#define OPLDIALG_H
#if defined(__UIQ__)
#include <qikstockcontrols.hrh>
#endif
#include <bldvariant.hrh>
#include <badesca.h>
#include <eikdialg.h>
#include <eikon.hrh>
#if !defined(__SERIES60__)
#include <eikfsel.h>
#endif
#include <bamdesca.h>
#include <eikspane.h>

#ifndef FRAME_H
class CFrame;
#endif

class CEikButtonGroupContainer;

class MValidatedItem
	{
public:
	virtual TBool IsStateValid()=0;
	};

#if !defined(__SERIES60__)
class COplFileNameSelector : public CEikFileNameSelector , public MValidatedItem
	{
public:
	void ConstructL(CCoeControl* aParent,TInt aFlags);
	TBool IsStateValid();
private:
	TInt iFlags;
	};

class COplFileNameEditor : public CEikFileNameEditor , public MValidatedItem
	{
public:
	void ConstructL(TInt aFlags);
	TBool IsStateValid();
	TFileName& FullName() {return iReturnName;};
private:
	TInt iOplFlags;
	TFileName iReturnName;
	};

class COplFolderNameEditor : public CEikFileNameEditor , public MValidatedItem
	{
public:
	void ConstructL(TInt aFlags);
	TFileName Name();
	TBool IsStateValid();
private:
	TInt iOplFlags;
	TFileName iReturnName;
	};

class COplDriveNameSelector : public CEikDriveNameSelector
	{
	// Gives us access to BuildDriveNameArrayL and lets us return iFileSelectionObserver
	// for Crystal-specific hackery with FolderSelector popout dialog behaviour
public:
	void BuildDriveArrayL() {BuildDriveNameArrayL();};
	MEikFileSelectionObserver* FileSelectionObserver() const {return iFileSelectionObserver;};
	};

class COplFolderNameSelector : public CEikFolderNameSelector
	{
	// Gives us access to DoCreatePopoutL() and lets us associate drive selectors with
	// the folder browser. Crystal-specific hackery to cope with the fact drives can
	// be changed in the folder selector's popout
public:
	void ConstructL(CCoeControl* aParent, const TInt aFlags);
	void SetCorrespondingDriveSelector(COplDriveNameSelector* aCorrespondingDriveSelector) {iCorrespondingDriveSelector=aCorrespondingDriveSelector;};
protected: // from CEikFolderNameSelector
	virtual void DoCreatePopoutL();
private:
	TInt iOplFlags;
	COplDriveNameSelector* iCorrespondingDriveSelector;
	};
#endif

#define KMenuPopup		0x5000
#define KMaxButLength	20
#define KMaxLineLength	80

const TInt KOplDialogIdBase=0x64;

const TInt KOplDialogItem=0x1000000; // Check for conflict with item numbers!!!!

const TInt KOplMultiLineTextEditor=0x2000000; // Special case since we want a EEikCtEdwin here also

#if !defined(__UIQ__)
const TInt KOplLongEditor=KOplDialogItem|EEikCtNumberEditor;
const TInt KOplFloatEditor=KOplDialogItem|EEikCtFlPtEd;
#else
const TInt KOplLongEditor=KOplDialogItem|EQikCtNumberEditor;
const TInt KOplFloatEditor=KOplDialogItem|EQikCtFloatingPointEditor;
#endif
const TInt KOplTextEditor=KOplDialogItem|EEikCtEdwin;
const TInt KOplChoiceList=KOplDialogItem|EEikCtChoiceList;
const TInt KOplSecretEditor=KOplDialogItem|EEikCtSecretEd;
const TInt KOplTextLabel=KOplDialogItem|EEikCtLabel; // this is a focusing label for non-focusing label use EEikCtLabel
#if !defined(__UIQ__)
const TInt KOplTimeEditor=KOplDialogItem|EEikCtTimeEditor;
const TInt KOplDurationEditor=KOplDialogItem|EEikCtDurationEditor;
const TInt KOplDateEditor=KOplDialogItem|EEikCtDateEditor;
#else
const TInt KOplTimeEditor=KOplDialogItem|EQikCtTimeEditor;
const TInt KOplDurationEditor=KOplDialogItem|EQikCtDurationEditor;
const TInt KOplDateEditor=KOplDialogItem|EQikCtDateEditor;
#endif
const TInt KOplFileSelector=KOplDialogItem|EEikCtFileNameSel;
const TInt KOplFileEditor=KOplDialogItem|EEikCtFileNameEd;
const TInt KOplDriveNameSel=KOplDialogItem|EEikCtDriveNameSel;
const TInt KOplFolderNameSel=KOplDialogItem|EEikCtFolderNameSel;
const TInt KOplFolderNameEd=KOplDialogItem|EEikCtFolderNameEd;
// const TInt KOplCheckBox=KOplDialogItem|EEikCtCheckBox;
// Add any new values here

const TInt KOplFileSelectorsMaxDisplayChars = 15;
#define KFileSelectorFlagShowHidden			0x800	// 2048
#define KFileSelectorFlagAllowNewFolders	0x400	// 1024
#define KFileSelectorFlagShowSystem			0x200	// 512
#define KFileSelectorFlagShowRom			0x100	// 256
#define KFileSelectorFlagAllowWildcards		0x80	// 128
// 0x40 (64) is used on OPL1993 only for KFileSelectorFlagHideExtension
#define KFileSelectorFlagAllowNulls			0x20	// 32
#define KFileSelectorFlagQueryExisting		0x10	// 16
#define KFileSelectorFlagDisallowExisting	0x08	// 8
#define KFileSelectorFlagAllowDirsOnly		0x04	// 4
#define KFileSelectorFlagAllowDirs			0x02	// 2
#define KFileSelectorFlagEditor				0x01	// 1

struct SValidatedItem
	{
	MValidatedItem* iItem;
	TInt iId;
	};

enum
	{
	EOplDialogFlagsButtonsRight=0x01,
	EOplDialogFlagsNoTitleBar=0x02,
	EOplDialogFlagsFillScreen=0x04,
	EOplDialogFlagsNoDrag=0x08,
	EOplDialogFlagsDensePacking=0x10
	};

enum
	{
	EOplDialogButtonHideHotKey=0x100,
	EOplDialogButtonPlainHotKey=0x200
	};

class COplDialog : public CEikDialog
	{
public:
	COplDialog();
	~COplDialog();
#if defined(__UIQ__)
	void ConstructLC(CFrame* aFramePtr);
#else
	void ConstructLC(CFrame* aFramePtr,TInt aFlags);
#endif
	void RunLD(TInt16* aReturnPtr);

	void AddLongEditorL(const TDesC& aPrompt,TInt aMin,TInt aMax,TAny* aReturn);
	void AddFloatEditorL(const TDesC& aPrompt,TReal64 aMin,TReal64 aMax,TAny* aReturn);
	void AddTextEditorL(const TDesC& aPrompt,TInt aWidthInChars,TInt aMaxLength,TText* aReturn);	//dEdit
	void AddSecretEditorL(const TDesC& aPrompt,TInt aMaxLength,TText* aReturn,TBool aSeedTextContents);
	void AddTextLabelL(const TDesC& aPrompt,const TDesC& aBody,TInt aFlags);
	void AddTimeEditorL(const TDesC& aPrompt,TUint aMinTime,TUint aMaxTime,TInt aFlags,TAny* aReturn);
	void AddDateEditorL(const TDesC& aPrompt,TInt32 aMinDate,TInt32 aMaxDate,TAny* aReturn);
	void AddFileSelectorL(const TDesC& aPrompt1,const TDesC& aPrompt2,const TDesC& aPrompt3,TInt aFlags,const TUidType& aUidType,TText* aReturn);
	void AddFileEditorL(const TDesC& aPrompt1,const TDesC& aPrompt2,const TDesC& aPrompt3,TInt aFlags,TText* aReturn);
	void AddFolderSelectorL(const TDesC& aPrompt1,const TDesC& aPrompt2,TInt aFlags,TText* aReturn);
	void AddFolderEditorL(const TDesC& aPrompt1,const TDesC& aPrompt2,const TDesC& aPrompt3,TInt aFlags,TText* aReturn);
//	void AddCheckBoxL(const TDesC& aPrompt,TInt16* aReturn);
	void AddMultiLineEditorL(const TDesC& aPrompt,TInt aNumOfLines,TInt aWidthInChars,TInt aMaxLength,TInt32* aReturn,TBool aReadOnly);

	CDesCArray*  AddChoiceListL(const TDesC& aPrompt,TAny* aReturn,TBool aIncrementalMatching);
	void ChoiceListFinishedL();

	SEikControlInfo CreateCustomControlL(TInt aControlType);
	void GetCustomAutoValue(TAny* aReturn,TInt aControlType,const CCoeControl* aControl);
	TBool OkToExitL(TInt aButtonId);
	CFrame* InitFrame() {return iFramePtr;};
	void SetCorner(TInt aXPos,TInt aYPos);
	void AddTitleL(const TDesC& aTitle);
	void AddValidatedItemL(MValidatedItem* aItem,TInt aId);
	inline CEikButtonGroupContainer* SwapButtonGroupContainer(CEikButtonGroupContainer* aContainer) 
		{return CEikDialog::SwapButtonGroupContainer(aContainer);};
	inline MEikCommandObserver* ButtonCommandObserver() const
		{return CEikDialog::ButtonCommandObserver();};
	void GetHelpContext(TCoeHelpContext& aContext) const;
	inline TBool HasButtons() const {return iHasButtons;};
	inline void HasButtons(const TBool aFlag) {iHasButtons=aFlag;};
private:
	void SetSizeAndPosition(const TSize& aSize);
	TInt iNextId;
	CFrame* iFramePtr;
	TGulAlignmentValue iCorner;
	TInt16* iReturnPtr;
	CArrayFixSeg<SValidatedItem>* iValidatedItems;
	TInt iLastCreatedChoiceListId; // zero if none outstanding
	TBool iHasButtons; //Because ButtonCount() returns 4 immediately after dialog is created.
	};

enum TButtonGroupContainerFocus
	{
	ENoButtonGroupContainer=0,EOneButtonGroupContainer,ETwoButtonGroupContainer,EThreeButtonGroupContainer
	};

class COplAlertWin : public CEikDialog
	{
public:
	COplAlertWin();
	~COplAlertWin();
	void ConstructL(CCoeEnv* aCoeEnv);
	void RunAlert(const TDesC& aLine1,const TDesC& aLine2,const TDesC& aBut1,const TDesC& aBut2,const TDesC& aBut3,TInt& aReturn);
	void PreLayoutDynInitL();
	TBool OkToExitL(TInt aButtonId);
private:
	CEikButtonGroupContainer* CreateButtonGroupL(TInt aResourceId);
	void SetButtonTextReserveLengthL(const CEikButtonGroupContainer* aButtonPanel,const TInt aButtonId,const TInt aReserveLength);
	void ExchangeButtonGroupContainer(TButtonGroupContainerFocus aFocus);
	void Set(TPtrC& aTrg,const TDesC& aSrc,TInt aMaxLen);
	TPtrC iLine1;
	TPtrC iLine2;
	TPtrC iBut1;
	TPtrC iBut2;
	TPtrC iBut3;

	CEikButtonGroupContainer* iThreeButtonGroupContainer;
	CEikButtonGroupContainer* iTwoButtonGroupContainer;
	CEikButtonGroupContainer* iOneButtonGroupContainer;
	HBufC* iContinueText;
	TInt* iReturnPtr;
	TBool iExitOnEnter;
	TButtonGroupContainerFocus  iButtonGroupContainerFocus;
	};

#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?