// Launcher.h: CLauncher クラスのインターフェイス
// ▼ (3204) BGN 2004.05.10 (moralog) ランチャツールバー追加
// ランチャツールバーの定義保持と、ツールボタン作成ユーティリティ

#if !defined(AFX_LAUNCHER_H__16667AE5_7267_4085_968C_232FA22EF505__INCLUDED_)
#define AFX_LAUNCHER_H__16667AE5_7267_4085_968C_232FA22EF505__INCLUDED_

#include <afxtempl.h>

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CLaunchItem
{
public:
	CLaunchItem()
	: m_bEnable( TRUE )
	, m_strButtonName()
	, m_strIconPathName()
	, m_idxIcon( 0 )
	, m_strCommandLine()
	, m_bDefaultOpen( FALSE )
	, m_lCommandID( 0 )
	{};
	CLaunchItem( const CLaunchItem& Src ){ Copy(Src); };
	virtual ~CLaunchItem(){};

	CLaunchItem& Copy( const CLaunchItem& Src );
	CLaunchItem& operator=(CLaunchItem& Src ){ return ( Copy(Src) ); };


public:
// あらかじめ設定するもの
	BOOL		m_bEnable;			// 有効有無
	CString		m_strButtonName;	// ボタン名称
	CString		m_strIconPathName;	// アイコン格納ファイル
	long		m_idxIcon;			// アイコン番号
	CString		m_strCommandLine;	// コマンドライン
	BOOL		m_bDefaultOpen;		// デフォルトのアプリで開く
// 動的に設定されるもの
	long		m_lCommandID;		// コマンドID
};

/*
使用方法：
	(1)Read() または GetLaunchDefine()->Append() でランチャ定義を登録
	(2)CreateButtonz() でツールボタン作成。
	(3) : （ココでアプリを終了しても良い）
	(4)親ツールバーを破棄
	(5)DestroyButtonz() でランチャ情報破棄
	(6)（(1)へ戻る）
*/
class CLauncher  
{
public:
	virtual ~CLauncher();
	static CLauncher*	GetInstance();

	// 利用開始処理
	BOOL	CreateButtonz(
		CToolBar*	pParent				// ボタン構築ツールバー先 [-] (-) :-
	);

	// 破棄処理
	BOOL	DestroyButtonz(
		CToolBar*	pParent				// ボタン構築ツールバー先 [-] (-) :-
	);

	// ボタン押下ハンドラ
	BOOL	CommandHandler(
		long	idCommand				// コマンドID [メッセージID] (-) :-
	);

	CArray< CLaunchItem, CLaunchItem& >*	GetLaunchDefine(){ return( &m_aLaunchDefinez ); };

	// ファイルへの保存･読み出し
	BOOL Write();
	BOOL Read();

	// コマンドライン埋め込みキーワード
	static CString		m_strKeywordDocPath;
	static CString		m_strKeywordDocName;
	static CString		m_strKeywordDocExt;
	static CString		m_strKeywordWindowHandle;
// ▼ (未実装機能削除) BGN 2004.06.09 (moralog)
// ▽ original BGN
//	static CString		m_strKeywordMessageID;
// △ original END
// ▲ (未実装機能削除) END
	static CString		m_strKeywordShitarabianFolder;
	static CString		m_strKeywordShitarabianCurrentDoc;
	static CString		m_strKeywordShitarabianSelection;

private:
	CLauncher();

protected:

	// ビットマップの用意
	HBITMAP PrepareBitmap(
		LPCTSTR		strIconPathName,	// アイコンを保持する実効ファイルパス [-] (-) :-
		long		idxIcon,				// アイコン番号 [-] (-) :-
		CSize		sizeBitmap
	);

protected:
	CString									m_strIniFilename;	// 設定ファイル名称
	CArray< CLaunchItem, CLaunchItem& >		m_aLaunchDefinez;	// ランチャ定義情報
};
// ▲ (3204) END

#endif // !defined(AFX_LAUNCHER_H__16667AE5_7267_4085_968C_232FA22EF505__INCLUDED_)
