⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 appframe.h

📁 在手机操作系统symbina上使用的一个脚本扩展语言的代码实现,可以参考用于自己的开发
💻 H
字号:
// APPFRAME.H
//
// Copyright (c) 1997-2002 Symbian Ltd. All rights reserved.

#ifndef __APPFRAME_H__
#define __APPFRAME_H__

#include <opxapi.h>
#include <oplerr.h>
#include "eikbtgpc.h"
#include <eikdll.h>
#include <eikcmobs.h>
#if defined(__CRYSTAL__)
#include <IrListenUi.h>
#endif

#if defined(__SERIES60__)
const TInt KOpxVersion=0x025; // Still alpha on Series60.
#else
const TInt KOpxVersion=0x125;
#endif
const TInt KUidAfOpx=0x10005235;

const TInt KOplMaxStringLength=255;
const TInt KOplMaxProcNameLength=32;

const TInt KAfOpxFirstButton=1;

const TInt KAfOpxTitleHeight=30;

const TInt16 KNoRedraw=EFalse;
const TInt16 KRedrawRequired=ETrue;

const TInt16 KMenuPaneToStartOn=256;	// Hack to get around the 'Task List' menu pane
										// being the first to show unless manually changed.
const TInt KMenuIrListener=0x9000;		// Also defined in EN_MAIN.CPP in OPLR for reference.
										// Dummy menu item ID for CIrListenAppUi::NewL()

class MEikCommandObserver;

/**
 * The class COpxAppFrameObserver watches the buttons, and passes on any button presses
 * to the OPL callbacks. 
 */
class COpxAppFrameObserver : public CBase, public MEikCommandObserver
	{
public:
	static COpxAppFrameObserver* NewL(OplAPI& aOplAPI);
	~COpxAppFrameObserver();
public:	// from MEikCommandObserver:
	void ProcessCommandL(TInt aCommandId);
	void SetMaxCommandsL(TInt aMaxCommands);
	void SetCallback(TInt anIndex, TPtrC aCallback);
private:
	void ConstructL(OplAPI& aOplAPI);
	COpxAppFrameObserver();
private:
	typedef TBuf<32> TProcedureName;
	CArrayFixFlat<TProcedureName>* iCallback;
	OplAPI* iOplAPI;
	};

#if defined(__UIQ__)
class CBaseControl:public CCoeControl,public MCoeControlObserver
	{
public:
	CBaseControl(){};
	~CBaseControl(){};
	TInt CountComponentControls() const
		{
		if(iCtrl)
			return 1;
		return 0;
		};
	CCoeControl* ComponentControl(TInt /*aIndex*/) const
		{
		return iCtrl;
		}

	void ConstructL()
		{
		CreateWindowL();
		SetComponentsToInheritVisibility(ETrue);
		ActivateL();
		}

	void SizeChanged()
		{
		if(iCtrl)
			iCtrl->SetSize(Size());
		TRect clientRect=iEikonEnv->EikAppUi()->ClientRect();
		SetPosition(TPoint(0,clientRect.iBr.iY));
		iCtrl->SetPosition(TPoint(0,0));
		}

	void HandleControlEventL(CCoeControl* /*aControl*/,TCoeEvent aEventType)
		{
		if(EEventRequestFocus==aEventType)
			{
			iCtrl->SetFocus(ETrue);
			}
		}

	CCoeControl* iCtrl;
	};
#endif

/**
 * The class CAppFrameUser is a singleton which provides the OPX procedure service routines. 
 */
class CAppFrameUser : public CBase
	{
public:
	static CAppFrameUser* NewL(OplAPI& aOplAPI);
	~CAppFrameUser();
public:
	void OfferEvent(OplAPI& aOplAPI);
// CBA
	void SetCBAButton(OplAPI& aOplAPI);
	void SetCBAButtonDefault(OplAPI& aOplAPI);
	void SetCBAButtonDimmed(OplAPI& aOplAPI);
	void CBAButtonDimmed(OplAPI& aOplAPI);
	void SetCBAButtonVisible(OplAPI& aOplAPI);
	void CBAButtonVisible(OplAPI& aOplAPI);
	void SetCBAVisible(OplAPI& aOplAPI);
	void CBAVisible(OplAPI& aOplAPI);
	void CBAMaxButtons(OplAPI& aOplAPI);
// Status pane
	void SetStatus(OplAPI& aOplAPI);
	void SetStatusVisible(OplAPI& aOplAPI);
	void StatusVisible(OplAPI& aOplAPI);
// Title bar
	void SetTitle(OplAPI& aOplAPI);
	void SetTitleAreaWidth(OplAPI& aOplAPI);
	void SetTitleVisible(OplAPI& aOplAPI);
	void TitleVisible(OplAPI& aOplAPI);
// Screen info
	void ScreenInfo(OplAPI& aOplAPI);
// Desk Access
	void AddToDesk(OplAPI& aOplAPI);
// First-menu-pane-to-show-hackery
	void MenuPaneToStartOn(OplAPI& aOplAPI);
// Launch the Log application
	void ViewSystemLog(OplAPI& aOplAPI);
// Toggle the IrDA listener
	void ToggleIrDA(OplAPI& aOplAPI);
// CKON Dialogs
	void ConfirmationDialog(OplAPI& aOplAPI);
	void InfoDialog(OplAPI& aOplAPI);
private:
	void ConstructL(OplAPI& aOplAPI);
	TUint MapFromOplMod(TUint aOplMod);
	TBool ResizeTitleL(const CEikonEnv& aEikonEnv);
	void InitStatusPane(OplAPI& aOplAPI);
private:
	// Has to match status pane type constants in .txh file.
	enum TAfStatusPaneType
		{
		EAfStatusPaneTypeNarrow=1,
		EAfStatusPaneTypeWide=2
		};
private:
#if defined(__UIQ__)
	CBaseControl* iButtonGroupOwner;
#endif
	COpxAppFrameObserver* iAppFrameObserver;
	CEikButtonGroupContainer* iButtonGroupContainer;
	CEikStatusPane* iStatusPane;
	TAfStatusPaneType iStatusPaneType;
	RBackedUpWindow iTitleWindow;
#if defined(__CRYSTAL__)
	CCknAppTitle* iTitleBar;
#endif
#if defined(__UIQ__)
	//RBackedUpWindow iToolBarWindow; // only used for the uiq toolbar
	CWindowGc* iToolContext;
#endif
	CWindowGc* iTitleContext;
	TBool iIsTitleBarVisible;
private:
	enum TAfOpxEvent
		{
		ENotKeyMask=0x0400,
		EFocusGained,
		EFocusLost,
		ESwitchOn,
		ECommand,
		EKeyDown=0x0406,
		EKeyUp,
		EPtr,
		EPtrEnter,
		EPtrExit
		}; 
	enum TOplModifiers
		{
		EOplModShift=2,
		EOplModCtrl=4,
		EOplModAlt=8,
		EOplModCapsLock=16,
		EOplModFunc=32
		};
private:
#if defined(USE_IRLISTEN)
	CIrListenAppUi* iIrListenAppUi;
#endif
	};

/**
 * The class COpxAppFrame dispatches OPX procedures called by ordinal to the 
 * service routines
 */
class COpxAppFrame: public COpxBase 
	{
public:
	static COpxAppFrame* NewLC(OplAPI& aOplAPI);
	virtual void RunL(TInt aProcNum);
	virtual TInt CheckVersion(TInt aVersion);
private:
	COpxAppFrame(OplAPI& aOplAPI);
	void ConstructL(OplAPI& aOplAPI);
	~COpxAppFrame();
private:
	enum TExtensions
		{
		EOfferEvent=1,			//	AfOfferEvent%:(aEv1&,aEv3&,aEv4&,aEv5&,aEv6&,aEv7&)
		ESetCBAButton,			//	AfSetCBAButton:(aButtonIndex%,aText$,aBitmapId%,aMaskId%,aCallback$)
		ESetCBAButtonDefault,	//	AfSetCBAButtonDefault:(aButtonIndex%,aDefault%)
		ESetCBAButtonDimmed,	//	AfSetCBAButtonDimmed:(aButtonIndex%,aDimmed%)
		ECBAButtonDimmed,		//	AfCBAButtomDimmed%:(aButtonIndex%)
		ESetCBAButtonVisible,	//	AfSetCBAButtonVisible:(aButtonIndex%,aVisibility%)
		ECBAButtonVisible,		//	AfCBAButtonVisible%:(aButtonIndex%)
		ESetCBAVisible,			//	AfSetCBAVisible%:(aVisibility%)
		ECBAVisible,			//	AfCBAVisible%:
		ECBAMaxButtons,			//	AfCBAMaxButtons%:
		ESetStatus,				//	AfSetStatus%:(aType%)
		ESetStatusVisible,		//	AfSetStatusVisible%:(aVisibility%)
		EStatusVisible,			//	AfStatusVisible%:(BYREF aType%)
		ESetTitle,				//	AfSetTitle:(aTitle$,aTitleType%)
		ESetTitleAreaWidth,		// 	AfSetTitleAreaWidth:(aTitleType%,aWidth&)
		ESetTitleVisible,		//	AfSetTitleVisibile%:(aVisibility%)
		ETitleVisible,			//	AfTitleVisible%:
		EScreenInfo,			//	AfScreenInfo:(BYREF aXOrigin%, BYREF aYOrigin%, BYREF aWidth%, BYREF aHeight%)
		EAddToDesk,				//	AfAddToDesk:
		EMenuPaneToStartOn,		//	AfMenuPaneToStartShowing%:
		EViewSystemLog,			//	AfViewSystemLog:
		EToggleIrDA,			//	AfToggleIrDA:
		EConfirmationDialog,	//	AfConfirmationDialog%:(aTitle$,aMessage$,aConfirmButtonTitle$)
		EInfoDialog				//	AfInformationDialog%:(aTitle$,aMessage$)
		};
	CAppFrameUser* iAppFrameUser;
	};

#endif

⌨️ 快捷键说明

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