/*---------------------------------------------------------------------------*/
//       Author : hiyohiyo
//         Mail : hiyohiyo@crystalmark.info
//          Web : https://crystalmark.info/
//      License : MIT License
/*---------------------------------------------------------------------------*/

#pragma once
#include "DialogFx.h"

class CMainDialogFx : public CDialogFx
{
public:
	CMainDialogFx(UINT dlgResouce, CWnd* pParent = NULL);
	virtual ~CMainDialogFx();

	// Zoom
	DWORD GetZoomType();
	void SetZoomType(DWORD zoomType);

	// Getter
	CString GetCurrentLangPath();
	CString GetDefaultLangPath();
	CString GetThemeDir();
	CString GetCurrentTheme();
	CString GetDefaultTheme();
	CString GetParentTheme1();
	CString GetParentTheme2();
	CString GetIniPath();
	
	void SaveImage();

protected:
	void InitMenu();
	void InitThemeLang();
	void ChangeTheme(CString themeName);
	void SetWindowTitle(CString message);
	void UpdateThemeInfo();
	COLORREF GetControlColor(CString name, BYTE defaultColor, CString theme);
	COLORREF GetBackgroundColor(CString name, CString theme);
	BYTE GetControlAlpha(CString name, BYTE defaultAlpha, CString theme);
	BYTE GetCharacterPosition(CString theme);
	CString GetParentTheme(int i, CString theme);
	CString GetRandomTheme();
	void SaveImageDlg(CImage* image);

	virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam);
	virtual BOOL OnInitDialog();
	virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
	virtual BOOL CheckThemeEdition(CString name);
	virtual CString GetDefaultFont();

	virtual void SaveWindowPosition();
	virtual void RestoreWindowPosition();

	DECLARE_MESSAGE_MAP()
	afx_msg void OnWindowPosChanging(WINDOWPOS* lpwndpos);
	afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI);

	// Common
	BOOL m_bStartup;
	BOOL m_bWindowMinimizeOnce;
	BOOL m_bResident;
	BOOL m_bResidentMinimize;

	// Theme
	CString m_ThemeKeyName;
	CString m_RecommendTheme;
	CStringArray m_MenuArrayTheme;

	// Language
	CStringArray m_MenuArrayLang;

#ifdef OPTION_TASK_TRAY
	// Task Tray
	static UINT wmTaskbarCreated;
	BOOL AddTaskTray(UINT id, UINT callback, HICON icon, CString tip);
	BOOL RemoveTaskTray(UINT id);
	BOOL ModifyTaskTray(UINT id, HICON icon, CString tip);
	BOOL ModifyTaskTrayIcon(UINT id, HICON icon);
	BOOL ModifyTaskTrayTip(UINT id, CString tip);
	BOOL ShowBalloon(UINT id, DWORD infoFlag, CString infoTitle, CString info);
#endif

};