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

📄 svexopenappappview.h

📁 symbian下读取服务的程序
💻 H
字号:
// Copyright (c) 2006 Murray Read, All rights reserved

#ifndef __SVEXOpenApp_APPVIEW_H__
#define __SVEXOpenApp_APPVIEW_H__


#include <SvexServiceAppListView.h>
#include <SvexRegDialog.h>
#include <aknform.h>


class CSvexOpenDialog;
class CMimeAppListDialog;


// The apps list view uses a dialog as a sub-view when an app
// is selected.
class CSvexOpenAppAppView : public CSvexServiceAppListView
    {
public:
    static CSvexOpenAppAppView* NewL(const CSvexInfoBase& aInfo);
    ~CSvexOpenAppAppView();
    
public: // from CSvexOpenAppListView
	void OpenL();
	void ShowAppL(TUid aAppUid);
	void ShowAppL(const TSvexAppServiceInfo& aReg);

private:
	CSvexOpenAppAppView(const CSvexInfoBase& aInfo);

private:
    CSvexOpenDialog* iDialog;
    };


// The registration info dialog for open app has a specialised
// DialogTextL() function which shows relevant info for
// the open service (the mime-type list).
class CSvexOpenDialog : public CAppServiceInfoDialog
	{
public:
	static CSvexOpenDialog* NewL(const TSvexAppServiceInfo& aReg, const CSvexInfoBase& aInfo);
	~CSvexOpenDialog();
protected:
	CSvexOpenDialog(const TSvexAppServiceInfo& aReg, const CSvexInfoBase& aInfo);
	virtual void DialogTextL();
	};


class TSvexMimeAppWithPriority
	{
public:
	TSvexMimeAppWithPriority(const TSvexAppServiceInfo& aReg);
public:
	TSvexAppServiceInfo iReg;
	TDataTypePriority iPriority;
	};


// An array of apps that support the open service for a particular
// mime type
class CSvexMimeAppArray : public CArrayFixFlat<TSvexMimeAppWithPriority>
	{
public:
	CSvexMimeAppArray(const TDataType& aDataType);
	~CSvexMimeAppArray();
	const TDataType& DataType() const;
private:
	const TDataType& iDataType;
	};


// An array of all the mime-types and which apps support them
class CSvexMimeArray : public CBase
	{
public:
	CSvexMimeArray(const CSvexInfoBase& aInfo);
	~CSvexMimeArray();
	void ConstructL();	
	
	TInt Count() const;
	CSvexMimeAppArray& At(TInt aIndex);

private:
	void AddRegL(const TSvexAppServiceInfo& aReg, RHashMap<TPtrC8, CSvexMimeAppArray*>& aHash);
	void CompleteConstructL(RHashMap<TPtrC8, CSvexMimeAppArray*>& aHash);

private:
	const CSvexInfoBase& iInfo;
	RPointerArray<CSvexMimeAppArray> iArray;
	CSvexServiceInfo* iService;
	};


// A main view showing the list of mime-types.
// It uses a dialog as a sub-view
class CSvexOpenAppMimeView : public CSvexListView
	{
public:
    static CSvexOpenAppMimeView* NewL(const CSvexInfoBase& aInfo);
    ~CSvexOpenAppMimeView();
    
public: // from CSvexOpenAppListView
	CEikTextListBox* NewListBoxL() const;
	TInt Count() const;
	void GetText(TInt aIndex, TBuf<KMaxListText>& aText) const;
	void OpenL();

private:
	CSvexOpenAppMimeView(const CSvexInfoBase& aInfo);
	void ConstructMainPaneL();

	void ShowMimeL(CSvexMimeAppArray& aMimeAppArray);

private:
	const CSvexInfoBase& iInfo;
	CSvexMimeArray* iMimeArray;
	CMimeAppListDialog* iSubView;
	};


// Non-window owning list used as the content of a dialog.
// This shows the apps for a particular mime-type
class CMimeAppListControl : public CSvexListView
	{
public:
	CMimeAppListControl(const CSvexInfoBase& aInfo, CSvexMimeAppArray& aAppArray);
	~CMimeAppListControl();
	void ConstructFromResourceL(TResourceReader& aReader);
	
public:	// from CSvexListView
	CEikTextListBox* NewListBoxL() const;
	TInt Count() const;
	void GetText(TInt aIndex, TBuf<KMaxListText>& aText) const;
	TSize MinimumSize();
	void OpenL();
	void HandleCommandL(TInt aCommand);
	void ConstructControlL();

private:
	void SetDefaultL();

private:
	const CSvexInfoBase& iInfo;
	CSvexMimeAppArray& iAppArray;
	TUid iDefaultApp;
	};


// dialog used as a sub-view of the mime list
class CMimeAppListDialog : public CAknDialog
	{
public:
    CMimeAppListDialog(const CSvexInfoBase& aInfo, CSvexMimeAppArray& aAppArray);

protected:	// from CAknDialog
    SEikControlInfo CreateCustomControlL(TInt aControlType);
    void ProcessCommandL(TInt aCommandId);
    TBool OkToExitL(TInt aButtonId);

private:
	CMimeAppListControl* List();
	
private:
	const CSvexInfoBase& iInfo;
	CSvexMimeAppArray& iAppArray;
	};


#endif // __SVEXOpenApp_APPVIEW_H__

⌨️ 快捷键说明

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