#pragma once

#define MAX_STATUS_COUNT	5

#define TOUCH_BTN_LINE_COLOR			RGB(10, 10, 10)
#define TOUCH_BTN_LINE_COLOR_DISABLE	RGB(103, 103, 103)
#define TOUCH_BTN_GENERAL_COLOR_UP		RGB(233, 233, 233)
#define TOUCH_BTN_GENERAL_COLOR_DOWN	RGB(223, 223, 223)
#define TOUCH_BTN_GROUP_COLOR_DISABLE	RGB(245, 245, 245)
#define TOUCH_BTN_GENERAL_COLOR_DISABLE	RGB(90, 90, 90)
	//#define TOUCH_BTN_PRESS_COLOR		RGB(130, 255, 130)
#define TOUCH_BTN_PRESS_COLOR		RGB(57, 119, 206)
#define TOUCH_BTN_ONAIR_COLOR		RGB(200, 200, 0)
#define TOUCH_BTN_CHECK_BG_COLOR	RGB(254, 254, 254)

#define TOUCH_BTN_PRESS_FONT_COLOR		RGB(255, 255, 255)
#define TOUCH_BTN_GENERAL_FONT_COLOR	RGB(0, 0, 0)

#define TOUCH_BTN_TYPE_GROUP		1
#define TOUCH_BTN_TYPE_LEVEL2		2
#define TOUCH_BTN_TYPE_LEVEL3		3
#define TOUCH_BTN_TYPE_LEVEL4		4

#define TOUCH_BTN_FLAG_STATE		0x0001
#define TOUCH_BTN_FLAG_CHECKABLE	0x0002

#define TOUCH_BTN_LONG_PRESS_MODE_GROUPING		1
#define TOUCH_BTN_LONG_PRESS_MODE_PRESSING		2

// CTouchButton

class CTouchButton : public CWnd
{
	DECLARE_DYNAMIC(CTouchButton)

public:
	static CxImage m_ciStatus[MAX_STATUS_COUNT];	// 0 : FIRE, 1 : RESQUE, 2 : EMERGENCY, 3 : MIC, 4 : TOUCHED
	static CxImage m_ciCheck;
	static BOOL m_bGlobalInit;
	static INT32 m_iLongPressMode;
	INT32 m_width;
	INT32 m_height;
	INT32 m_buttonUiStyle;
	CDC* m_pMemDC;
	CBitmap* m_pDCBitmap;
	CPen* m_pDidLinePen;
	CBrush* m_pFillBrush; 
	CFont* m_pFont;
	CFont* m_pFontSub;

	BOOL m_bCreated;
	BOOL m_bVisible;
	UINT64 m_pressTime;
	BOOL m_bPressed;
	BOOL m_bEnabled;
	BOOL m_bChecked;
	CString m_strName;
	INT32 m_btnId;
	UINT m_uiPressMessage;
	INT32 m_iBtnType;
	INT32 m_iBtnFlag;
	BOOL m_bPressable;

	INT32 m_iUnderNumber;

	BOOL m_bStatus[MAX_STATUS_COUNT];

	CTouchButton();
	virtual ~CTouchButton();

	void initialize(int x, int y, int total_width, int total_height, int ico_width, int ico_height, int id, CWnd *pParent = NULL);
	void SetPressState(BOOL bPress) {
		BOOL prevState = m_bPressed;
		if(!m_bPressable)
			return;

		m_bPressed = bPress;
		if(m_bPressed != prevState)
			Invalidate(false);
	}

	BOOL isEnableButton();

protected:
	DECLARE_MESSAGE_MAP()
public:
	afx_msg void OnPaint();
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
	afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
	afx_msg void OnTimer(UINT_PTR nIDEvent);
	afx_msg BOOL OnEraseBkgnd(CDC* pDC);
	afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
	afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
};


