Artifact Content

Not logged in

Artifact e17b66ef630a3999955407c740d874f1ab53caa0


// NoahCM.h
//-- CNoahConfigManager -- save / load / modify the setting of 'Noah' --

#ifndef AFX_NOAHCM_H__ACE475C1_D925_4F9E_BDCA_783B921E6FD5__INCLUDED_
#define AFX_NOAHCM_H__ACE475C1_D925_4F9E_BDCA_783B921E6FD5__INCLUDED_

class CNoahConfigManager;

class CNoahConfigDialog : public kiPropSheet
{
public:
	class CCmprPage : public kiPropSheetPage
	{
	public:
		CCmprPage();
	private:
		BOOL onInit();
		bool onOK();
		bool onCancel();
		BOOL CALLBACK proc( UINT msg, WPARAM wp, LPARAM lp );
		void correct( const char* ext, bool first );
		void SetUpToolTip();
	private:
		HWND m_tooltip;
	};
	class CMeltPage : public kiPropSheetPage
	{
	public:
		CMeltPage();
	private:
		BOOL onInit();
		bool onOK();
		BOOL CALLBACK proc( UINT msg, WPARAM wp, LPARAM lp );
		void correct();
	};
	class CWinXPage : public kiPropSheetPage
	{
	public:
		CWinXPage();
	private:
		BOOL onInit();
		BOOL CALLBACK proc( UINT msg, WPARAM wp, LPARAM lp );
		bool onOK();
	};
	class CAssPage : public kiDialog
	{
	public:
		CAssPage( HWND parent );
	private:
		BOOL onInit();
		BOOL CALLBACK proc( UINT msg, WPARAM wp, LPARAM lp );
		bool onOK();
	};
	class CInfoPage : public kiPropSheetPage
	{
	public:
		CInfoPage();
	private:
		BOOL onInit();
	};

public:
	CNoahConfigDialog();

private:
	bool onOK();
	bool onCancel();
	void onApply();
	void onHelp();
	void onCommand( UINT id );
	BOOL onInit();
	void onDrop( HDROP hdrop );
	static void shift_and_button();
};

enum loading_flag
{
	Mode    = 1,
	Melt    = 2,
	Compress= 4,
	Shell   = 8,
	OpenDir =16,
	All     =31,
};

class CNoahConfigManager
{
public: //-- 操作

	void init();
	void load( loading_flag what );
	void save();
	void dialog();

public: //-- 設定項目取得用インターフェイス

	// Section: Mode
	const int     mode()  { return m_Mode; }  // 0:圧専 1:圧優 2:解優 3:解専
	const bool  miniboot(){ return m_MiniBoot; } // 最小化起動?
	const bool  oldver()  { return m_OldVer; }// 古い形式でバージョン表示
	const int   extnum()  { return m_OneExt ? 1 : m_ZeroExt ? 0 : -1; } // 書庫名作成時に拡張子と見なす部分
	const int multiboot_limit() { return m_MbLim; } // 多重起動個数制限値
	// Section: Melt
	const kiPath& mdir()  { return m_MDir; }  // 解凍先
	const bool    mdirsm(){ return m_MDirSm; }// 同じディレクトリに解凍?
	const int     mkdir() { return m_MkDir; } // 0:x 1:file 2:dir 3:o
	const bool    mnonum(){ return m_MNoNum; }// 数字省略
	const char*   kill()  { return m_Kill; }// OFFにする内蔵ルーチン
	// Section: Compress
	const kiPath& cdir()  { return m_CDir; }  // 圧縮先
	const bool    cdirsm(){ return m_CDirSm; }// 同じディレクトリに圧縮?
	const kiStr&  cext()  { return m_CExt; }  // 圧縮形式
	const kiStr&  cmhd()  { return m_CMhd; }  // 圧縮メソッド
	// Section: Shell
	// Section: OpenDir
	const bool    modir() { return m_MODir; } // 解凍後開く?
	const bool    codir() { return m_CODir; } // 圧縮後開く?
	const kiStr&  openby(){ return m_OpenBy; }// 開くプログラム(隠し)

private: //-- 内部変数

	unsigned long m_Loaded;
	kiIniFile m_Ini;
	kiStr m_UserName;
	HINSTANCE m_hNoahXtDLL;
	enum { NOSHL, NOADMIN, SHLOK } m_bShlOK;

	// 設定項目
	int    m_Mode;
	kiPath m_MDir, m_CDir;
	bool   m_MODir,m_CODir,m_MDirSm,m_CDirSm;
	int    m_MkDir;
	int    m_MbLim;
	kiStr  m_CExt;
	kiStr  m_OpenBy;
	kiStr  m_CMhd;
	bool   m_MNoNum;
	bool   m_SCSendTo,m_SCDesktop;
	kiStr  m_Kill;
	bool   m_SECmp, m_SEExt, m_bAsso[13];
	bool   m_MiniBoot;
	bool   m_OldVer;
	bool   m_OneExt, m_ZeroExt;

	// 関数ロード
	FARPROC getProc( const char* name );

public:
	CNoahConfigManager()
		{
			m_hNoahXtDLL = NULL;
		}
	~CNoahConfigManager()
		{
			if( m_hNoahXtDLL )
				::FreeLibrary( m_hNoahXtDLL );
		}
friend class CNoahConfigDialog::CCmprPage;
friend class CNoahConfigDialog::CMeltPage;
friend class CNoahConfigDialog::CWinXPage;
friend class CNoahConfigDialog::CInfoPage;
friend class CNoahConfigDialog::CAssPage;
};

#endif