/*
 * astyle --force-indent=tab=4 --brackets=linux --indent-switches
 *		  --pad=oper --one-line=keep-blocks  --unpad=paren
 *
 * Miranda IM: the free IM client for Microsoft* Windows*
 *
 * Copyright 2000-2009 Miranda ICQ/IM project,
 * all portions of this codebase are copyrighted to the people
 * listed in contributors.txt.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * you should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 *
 * part of tabSRMM messaging plugin for Miranda.
 *
 * (C) 2005-2010 by silvercircle _at_ gmail _dot_ com and contributors
 *
 * $Id: translator.h 12296 2010-08-09 16:09:44Z silvercircle $
 *
 * string handling
 *
 */

#ifndef __STRINGS_H
#define __STRINGS_H

class CTranslator {

public:

	enum {
		NR_WEEKDAYS = 7,
		NR_MONTHS = 12
	};

	enum {
		CNT_MENU_STAYONTOP 										= 0,
		CNT_MENU_HIDETITLEBAR 									= 1,
		CNT_MENU_CONTAINEROPTIONS 								= 2,
		CNT_TITLE_DEFAULT										= 3,
		CNT_ATTACH_TO											= 4,
		GEN_META_CONTACT										= 5,
		GEN_META_FORCED											= 6,
		GEN_META_AUTOSELECT										= 7,
		GEN_META_USEPROTO										= 8,
		GEN_META_SETDEFAULT										= 9,
		GEN_MUC_NICKNAME										= 10,
		GEN_MUC_UID												= 11,
		GEN_MUC_STATUS											= 12,
		GEN_MUC_ROOM_TITLE_USER									= 13,
		GEN_MUC_ROOM_TITLE_USERS								= 14,
		GEN_MUC_ROOM_TITLE_FILTER								= 15,
		GEN_MUC_PRIVSESSION										= 16,
		GEN_MUC_PRIVSESSION_MULTI								= 17,
		GEN_MUC_FILTER_ERROR									= 18,
		GEN_MUC_FILTER_ERROR_TITLE								= 19,
		GEN_MUC_TEXTCOLOR										= 20,
		GEN_MUC_BGCOLOR											= 21,
		CNT_OPT_TITLE											= 22,
		CNT_OPT_TABSTOP											= 23,
		CNT_OPT_TABSBOTTOM										= 24,
		CNT_OPT_TABSLEFT										= 25,
		CNT_OPT_TABSRIGHT										= 26,
		CNT_OPT_HEADERBAR										= 27,
		GEN_MENUBAR_FILE										= 28,
		GEN_MENUBAR_VIEW										= 29,
		GEN_MENUBAR_USER										= 30,
		GEN_MENUBAR_ROOM										= 31,
		GEN_MENUBAR_LOG											= 32,
		GEN_MENUBAR_CONTAINER									= 33,
		GEN_MENUBAR_HELP										= 34,
		CNT_SBAR_SOUNDS											= 35,
		GEN_ENABLED												= 36,
		GEN_DISABLED											= 37,
		CNT_SBAR_MTN											= 38,
		GEN_IP_TIP_XSTATUS										= 39,
		GEN_IP_TIP_CLIENT										= 40,
		GEN_IP_TIP_STATUSMSG									= 41,
		GEN_IP_TIP_TITLE										= 42,
		GEN_SKIN_WARNCLOSE										= 43,
		GEN_SKIN_WARNCLOSE_TITLE								= 44,
		GEN_MTN_POPUP_WARNING									= 45,
		GEN_MTN_POPUP_UNSUPPORTED								= 46,
		GEN_CONTACT												= 47,
		GEN_MTN_START											= 48,
		GEN_MTN_STOP											= 49,
		GEN_FAVORITES											= 50,
		GEN_RECENT_SESSIONS										= 51,
		GEN_SBAR_LASTRECEIVED									= 52,
		GEN_SBAR_TIP_MSGLENGTH									= 53,
		CNT_OPT_TITLE_GEN										= 54,
		CNT_OPT_TITLE_LAYOUT									= 55,
		CNT_OPT_TITLE_TABS										= 56,
		CNT_OPT_TITLE_NOTIFY									= 57,
		CNT_OPT_TITLE_FLASHING									= 58,
		CNT_OPT_TITLE_TITLEBAR									= 59,
		CNT_OPT_TITLE_THEME										= 60,
		CNT_OPT_TITLE_TRANS										= 61,
		CNT_OPT_DESC_TABS										= 62,
		CNT_OPT_DESC_NOTIFY										= 63,
		CNT_OPT_DESC_THEME										= 64,
		CNT_OPT_DESC_TRANS										= 65,
		GEN_POPUPS_MESSAGE										= 66,
		GEN_POPUPS_UNKNOWN										= 67,
		GEN_POPUPS_NEW											= 68,
		GEN_NO_STATUS											= 69,
		GEN_MTN_STARTWITHNICK									= 70,
		GEN_MTN_TTITLE											= 71,
		GEN_MSG_TTITLE											= 72,
		GEN_ICONPACK_WARNING									= 73,		// unused!
		CNT_SELECT_FOR											= 74,
		CNT_SELECT_INUSE										= 75,
		CNT_SELECT_RENAMEERROR									= 76,
		CNT_SELECT_DELETEERROR									= 77,
		GEN_WARN_CLOSE											= 78,
		GEN_MSG_SAVE_NODIR										= 79,
		GEN_MSG_SAVE											= 80,
		GEN_MSG_SAVE_FILE_EXISTS								= 81,
		GEN_MUC_TOPIC_IS										= 82,
		GEN_MUC_NO_TOPIC										= 83,
		GEN_MTN_STOPPED											= 84,
		GEN_AVATAR_SETTINGS										= 85,
		GEN_AVATAR_SETOWN										= 86,
		GEN_WARNING_LOADTEMPLATES								= 87,
		GEN_TITLE_LOADTHEME										= 88,
		GEN_WARNING_PASTEANDSEND_DISABLED						= 89,
		GEN_WARNING_NUDGE_DISABLED								= 90,
		GEN_UNKNOWN_CONTACT										= 91,
		GEN_LOG_TODAY											= 92,
		GEN_LOG_YESTERDAY										= 93,
		GEN_LOG_USEDEFAULTCP									= 94,
		GEN_MSG_UINCOPY											= 95,
		GEN_MSG_NOUIN											= 96,
		GEN_MSG_UINCOPY_NOMC									= 97,
		GEN_MSG_SIGNEDOFF										= 98,
		GEN_MSG_SIGNEDON										= 99,
		GEN_MSG_CHANGEDSTATUS									= 100,
		GEN_SQ_WARNING											= 101,
		GEN_SQ_WARNING_TITLE									= 102,
		GEN_SQ_MULTISEND_NO_CONTACTS							= 103,
		GEN_SQ_DELIVERYFAILED									= 104,
		GEN_SQ_DELIVERYFAILEDLATE								= 105,
		GEN_SQ_MULTISEND_SUCCESS								= 106,
		GEN_SQ_QUEUED_MESSAGE									= 107,
		GEN_SQ_QUEUING_NOT_AVAIL								= 108,
		GEN_SQ_SENDLATER_HEADER									= 109,
		CNT_SBAR_SLIST											= 110,
		GEN_MSG_ENCODING										= 111,
		GEN_MSG_FAILEDSEND										= 112,
		GEN_MSG_TOO_LONG_SPLIT									= 113,
		GEN_MSG_TOO_LONG_NOSPLIT								= 114,
		GEN_MSG_CLOSE											= 115,
		GEN_MSG_SAVEANDCLOSE									= 116,
		GEN_MSG_LOGFROZENSTATIC									= 117,
		GEN_MSG_TIP_CONTACTMENU									= 118,
		GEN_MSG_BUTTON_RETRY									= 119,
		GEN_MSG_BUTTON_CANCEL									= 120,
		GEN_MSG_BUTTON_SENDLATER								= 121,
		GEN_MSG_SEL_COPIED										= 122,
		GEN_MSG_LOGFROZENQUEUED									= 123,
		GEN_MSG_UNKNOWNCLIENT									= 124,
		GEN_MSG_NOXSTATUSMSG									= 125,
		GEN_MSG_DELIVERYFAILURE									= 126,
		GEN_MSG_SENDTIMEOUT										= 127,
		GEN_MSG_SHOWPICTURE										= 128,
		GEN_MSG_NO_EDIT_NOTES									= 129,
		GEN_MSG_EDIT_NOTES_TIP									= 130,
		GEN_MSG_MC_OFFLINEPROTOCOL								= 131,
		GEN_MSG_OFFLINE_NO_FILE									= 132,
		GEN_STRING_FILE											= 133,
		GEN_STRING_MESSAGEFROM									= 134,
		GEN_SQ_MULTISENDERROR									= 135,
		GEN_MUC_LOOKUP											= 136,
		GEN_MUC_LOOKUP_NOWORD									= 137,
		GEN_MUC_MESSAGEAMP										= 138,
		GEN_STRING_UTF8											= 139,
		MUC_LOG_JOINED											= 140,
		MUC_LOG_ME_JOINED										= 141,
		MUC_LOG_LEFT											= 142,
		MUC_LOG_DISC											= 143,
		MUC_LOG_NICKCHANGE										= 144,
		MUC_LOG_ME_NICKCHANGE									= 145,
		MUC_LOG_KICK											= 146,
		MUC_LOG_NOTICE											= 147,
		MUC_LOG_TOPICIS											= 148,
		MUC_LOG_TOPICSETBYON									= 149,
		MUC_LOG_TOPICSETBY										= 150,
		MUC_LOG_STATUSENABLE									= 151,
		MUC_LOG_STATUSDISABLE									= 152,
		GEN_MUC_MENU_ADDTOHIGHLIGHT								= 153,
		GEN_MUC_HIGHLIGHT_ADD									= 154,
		GEN_MUC_HIGHLIGHT_EDIT									= 155,
		GEN_MUC_MENU_EDITHIGHLIGHTLIST							= 156,
		GEN_MSG_CONTACT_NOT_ON_LIST								= 157,
		GEN_SQ_SENDLATER_SUCCESS_POPUP							= 158,
		GEN_IP_MENU_COPY										= 159,
		GEN_IP_MENU_USER_DETAILS								= 160,
		GEN_IP_MENU_MSGPREFS									= 161,
		GEN_IP_MENU_ROOMPREFS									= 162,
		GEN_IP_MENU_HISTORY										= 163,
		GEN_STRING_HOUR											= 164,
		GEN_STRING_HOURS										= 165,
		GEN_STRING_MINUTE										= 166,
		GEN_STRING_MINUTES										= 167,
		MUC_SBAR_IDLEFORMAT										= 168,
		MUC_SBAR_ON_SERVER										= 169,
		MUC_SBAR_IDLEFORMAT_SHORT								= 170,
		CNT_OPT_TITLE_AVATARS									= 171,
		GEN_MUC_TRAY_HILIGHT									= 172,
		GEN_MUC_TRAY_MSG										= 173,
		GEN_MUC_TRAY_JOINED										= 174,
		GEN_MUC_TRAY_LEFT										= 175,
		GEN_MUC_TRAY_QUIT										= 176,
		GEN_MUC_TRAY_NICK										= 177,
		GEN_MUC_TRAY_KICK										= 178,
		GEN_MUC_TRAY_NOTICE										= 179,
		GEN_MUC_TRAY_TOPIC										= 180,
		GEN_MUC_TRAY_INFO										= 181,
		GEN_MUC_TRAY_STATUS_ON									= 182,
		GEN_MUC_TRAY_STATUS_OFF									= 183,

		GEN_MUC_POPUP_MSG										= 184,
		GEN_MUC_POPUP_JOINED									= 185,
		GEN_MUC_POPUP_LEFT										= 186,
		GEN_MUC_POPUP_LEFT1										= 187,
		GEN_MUC_POPUP_QUIT										= 188,
		GEN_MUC_POPUP_QUIT1										= 189,
		GEN_MUC_POPUP_NICK										= 190,
		GEN_MUC_POPUP_KICK										= 191,
		GEN_MUC_POPUP_KICK1										= 192,
		GEN_MUC_POPUP_NOTICE									= 193,
		GEN_MUC_POPUP_TOPIC										= 194,
		GEN_MUC_POPUP_TOPIC1									= 195,
		GEN_MUC_POPUP_STATUS_ON									= 196,
		GEN_MUC_POPUP_STATUS_OFF								= 197,
		CNT_OPT_TITLE_SOUNDS									= 198,
		GEN_IP_IDLENOTICE										= 199,
		GEN_INFOTIP_STATUSMSG									= 200,
		GEN_INFOTIP_XSTATUS										= 201,
		GEN_INFOTIP_LISTENING									= 202,
		GEN_INFOTIP_CLIENT										= 203,
		GEN_BB_IMGTOOLTIP										= 204,
		QMGR_COL_ODATE											= 205,
		QMGR_COL_MESSAGETEXT									= 206,
		QMGR_COL_STATUS											= 207,
		QMGR_COL_LASTSENDINFO									= 208,
		QMGR_FILTER_ALLCONTACTS									= 209,
		QMGR_STATUS_FAILED										= 210,
		QMGR_STATUS_SENTOK										= 211,
		QMGR_STATUS_PENDING										= 212,
		QMGR_STATUS_WAITACK										= 213,
		QMGR_ERROR_NOMULTISEND									= 214,
		QMGR_STATUS_REMOVED										= 215,
		QMGR_WARNING_REMOVAL									= 216,
		QMGR_TITLE												= 217,
		QMGR_STATUS_HOLD										= 218,
		QMGR_STATUS_DEFERRED									= 219,
		GEN_SQ_SENDLATER_FAILED_POPUP							= 220,
		GEN_SQ_SENDLATER_ERROR_MSG_TOO_LONG						= 221,
		GEN_DEFAULT_CONTAINER_NAME								= 222,
		GEN_STRING_EVENT_FILE_NODESC							= 223,
		GEN_STRING_EVENT_FILE_INVALID							= 224,
		GEN_STRING_EVENT_FILE									= 225,
		GEN_TOOLTIP_ADDCONTACT									= 226,
		GEN_TOOLTIP_DONTADD										= 227,
		GEN_TOOLTIP_EXPANDSIDEBAR								= 228,
		GEN_TASKBAR_STRING_CHAT_ROOM							= 229,
		GEN_TASKBAR_STRING_SERVER_WINDOW						= 230,
		GEN_TASKBAR_STRING_UNREAD								= 231,
		GEN_TASKBAR_STRING_USERS								= 232,
		GEN_AEROPEEK_NOHPP										= 233,
		GEN_STRING_WARNING_TITLE								= 234,
		STR_LAST 												= 235
	};

	enum {
		OPT_UPREFS_IPGLOBAL										= 0,
		OPT_UPREFS_IPON											= 1,
		OPT_UPREFS_IPOFF										= 2,
		OPT_UPREFS_AVON											= 3,
		OPT_UPREFS_AVOFF										= 4,
		OPT_UPREFS_FORCEHPP										= 5,
		OPT_UPREFS_FORCEIEV										= 6,
		OPT_UPREFS_FORCEDEFAULT									= 7,
		OPT_UPREFS_SIMPLETAGS									= 8,
		OPT_UPREFS_BBCODE										= 9,
		OPT_UPREFS_FORMATTING_OFF								= 10,
		OPT_UPREFS_DEFAULTCP									= 11,
		OPT_UPREFS_NOTZSVC										= 12,
		OPT_UPREFS_TITLE										= 13,
		OPT_UPREFS_MSGLOG										= 14,
		OPT_UPREFS_GENERIC										= 15,
		OPT_AERO_EFFECT_NONE									= 16,
		OPT_AERO_EFFECT_MILK									= 17,
		OPT_AERO_EFFECT_CARBON									= 18,
		OPT_AERO_EFFECT_SOLID									= 19,
		OPT_GEN_NONE											= 20,
		OPT_GEN_AUTO											= 21,
		OPT_GEN_SUNKEN											= 22,
		OPT_GEN_1PIXEL											= 23,
		OPT_GEN_ROUNDED											= 24,
		OPT_GEN_GLOBALLY_ON										= 25,
		OPT_GEN_ON_IF_PRESENT									= 26,
		OPT_GEN_GLOBALLY_OFF									= 27,
		OPT_GEN_ON_ALWAYS_BOTTOM								= 28,
		OPT_GEN_DONT_SHOW										= 29,
		OPT_TAB_LAYOUTTWEAKS									= 30,
		OPT_TAB_SKINLOAD										= 31,
		OPT_IPANEL_VISBILITY_TITLE								= 32,
		OPT_IPANEL_VISIBILTY_IM									= 33,
		OPT_IPANEL_VISIBILTY_CHAT								= 34,
		OPT_IPANEL_SYNC_TITLE_IM								= 35,
		OPT_IPANEL_SYNC_TITLE_MUC								= 36,
		OPT_IPANEL_VIS_INHERIT									= 37,
		OPT_IPANEL_VIS_OFF										= 38,
		OPT_IPANEL_VIS_ON										= 39,
		OPT_IPANEL_SIZE_GLOBAL									= 40,
		OPT_IPANEL_SIZE_PRIVATE									= 41,
		OPT_GEN_OFF												= 42,
		OPT_GEN_BBCODE											= 43,
		OPT_LOG_DEFAULT											= 44,
		OPT_LOG_IEVIEW											= 45,
		OPT_LOG_HPP												= 46,
		OPT_MTN_NEW												= 47,
		OPT_MTN_UNKNOWN											= 48,
		OPT_GEN_ALWAYS											= 49,
		OPT_MTN_NOTFOCUSED										= 50,
		OPT_MTN_ONLYCLOSED										= 51,
		OPT_CNT_ESCNORMAL										= 52,
		OPT_CNT_ESCMINIMIZE										= 53,
		OPT_CNT_ESCCLOS											= 54,
		OPT_MTN_UNSUPPORTED										= 55,
		OPT_SMODE_CHOOSE										= 56,
		OPT_MUC_LOGTIP1											= 57,
		OPT_MUC_LOGTIP2											= 58,
		OPT_MUC_LOGTIP3											= 59,
		OPT_MUC_LOGTIP4											= 60,
		OPT_MUC_LOGTIP5											= 61,
		OPT_MUC_LOGTIP6											= 62,
		OPT_MUC_LOGTIP7											= 63,
		OPT_MUC_LOGTIP8											= 64,
		OPT_MUC_LOGTIP9											= 65,
		OPT_MUC_LOGTIP10										= 66,
		OPT_MUC_LOGTIP11										= 67,
		OPT_MUC_LOGTIP12										= 68,
		OPT_MUC_LOGTIP13										= 69,
		OPT_MUC_LOGTIP14										= 70,
		OPT_MUC_LOGTIP15										= 71,
		OPT_MUC_LOGTIP16										= 72,
		OPT_MUC_LOGTIP17										= 73,
		OPT_MUC_LOGTIP18										= 74,
		OPT_MUC_LOGTIP19										= 75,
		OPT_MUC_LOGTIP20										= 76,
		OPT_MUC_LOGTIP21										= 77,
		OPT_MUC_LOGTIP22										= 78,
		OPT_MUC_OPTHEADER1										= 79,
		OPT_MUC_OPTHEADER2										= 80,
		OPT_MUC_VARIABLES										= 81,
		OPT_MUC_SELECTFOLDER									= 82,
		OPT_MUC_NOMARKERS										= 83,
		OPT_MUC_ASICONS											= 84,
		OPT_MUC_ASSYMBOLS										= 85,
		OPT_TEMP_TITLE											= 86,
		OPT_TEMP_RESET											= 87,
		OPT_TEMP_WASRESET										= 88,
		OPT_TEMP_HELPTITLE										= 89,
		OPT_TABS_GENERAL										= 90,
		OPT_TABS_TABS											= 91,
		OPT_TABS_CONTAINERS										= 92,
		OPT_TABS_LOG											= 93,
		OPT_TABS_TOOLBAR										= 94,
		OPT_TABS_ADVANCED										= 95,
		OPT_TABS_MUC_SETTINGS									= 96,
		OPT_TABS_MUC_LOG										= 97,
		OPT_TABS_MUC_EVENTS										= 98,
		OPT_TABS_MUC_HIGHLIGHT									= 99,
		OPT_MSGLOG_EXPLAINSETTINGS								= 100,
		OPT_SKIN_NOSKINSELECT									= 101,
		OPT_LAST												= 102
	};

	enum {
		WARN_RELNOTES											= 0,
		WARN_ICONPACKVERSION									= 1,
		WARN_EDITUSERNOTES										= 2,
		WARN_ICONPACKMISSING									= 3,
		WARN_AEROPEEKSKIN										= 4,
		WARN_CHAT_ENABLED										= 5,
		WARN_IMGSVC_MISSING										= 6,
		WARN_HPP_APICHECK										= 7,
		WARN_NO_SENDLATER										= 8,
		WARN_CLOSEWINDOW										= 9,
		WARN_OPTION_CLOSE										= 10,
		WARN_THEME_OVERWRITE									= 11,
		WARN_LAST												= 12
	};
	/*
	 * identities for the option trees
	 */

	enum {
		TREE_MODPLUS = 0,
		TREE_NEN = 1,
		TREE_MSG = 2,
		TREE_LOG = 3,
		TREE_TAB = 4,
	};

	CTranslator();
	~CTranslator();

	inline static const wchar_t* get(const UINT id)
	{
		return(m_translated[id]);
	}

	inline static const wchar_t* getOpt(const UINT id)
	{
		return(m_OptTranslated[id]);
	}

	inline static const wchar_t* getWarning(const UINT id)
	{
		return(m_WarningsTranslated[id]);
	}

	inline static const wchar_t* getUntranslatedWarning(const UINT id)
	{
		return(m_Warnings[id]);
	}

	inline static const wchar_t* getWeekday(const UINT id)
	{
		return(weekDays_translated[id]);
	}

	inline static const wchar_t* getMonth(const UINT id)
	{
		return(months_translated[id]);
	}

	static void preTranslateAll()
	{
		int i;

		for(i = 0; i < STR_LAST; i++)
			m_translated[i] = TranslateTS(m_strings[i]);

		for(i = 0; i < OPT_LAST; i++)
			m_OptTranslated[i] = TranslateTS(m_OptStrings[i]);

		for(i = 0; i < WARN_LAST; i++)
			m_WarningsTranslated[i] = TranslateTS(m_Warnings[i]);

		translateGroupTree(m_lvGroupsModPlus);
		translateGroupTree(m_lvGroupsNEN);
		translateGroupTree(m_lvGroupsMsg);
		translateGroupTree(m_lvGroupsTab);
		translateGroupTree(m_lvGroupsLog);

		translateOptionTree(m_lvItemsModPlus);
		translateOptionTree(m_lvItemsNEN);
		translateOptionTree(m_lvItemsMsg);
		translateOptionTree(m_lvItemsTab);
		translateOptionTree(m_lvItemsLog);

		for(i = 0; i < NR_WEEKDAYS; i++)
			weekDays_translated[i] = TranslateTS(weekDays[i]);

		for(i = 0; i < NR_MONTHS; i++)
			months_translated[i] = TranslateTS(months[i]);
	}

	static void translateGroupTree(TOptionListGroup *groups);
	static void translateOptionTree(TOptionListItem *items);

	static	TOptionListItem* 	getTree(UINT id);
	static  TOptionListGroup* 	getGroupTree(UINT id);

private:
	static wchar_t *m_strings[STR_LAST];
	static wchar_t *m_translated[STR_LAST];

	static wchar_t *m_OptStrings[OPT_LAST];
	static wchar_t *m_OptTranslated[OPT_LAST];

	static wchar_t *m_Warnings[WARN_LAST];
	static wchar_t *m_WarningsTranslated[WARN_LAST];

	static wchar_t *weekDays[7];
	static wchar_t *months[12];

	static wchar_t *weekDays_translated[7];
	static wchar_t *months_translated[12];

	static TOptionListGroup		m_lvGroupsModPlus[], m_lvGroupsNEN[], m_lvGroupsMsg[], m_lvGroupsLog[], m_lvGroupsTab[];
	static TOptionListItem		m_lvItemsModPlus[], m_lvItemsNEN[], m_lvItemsMsg[], m_lvItemsLog[], m_lvItemsTab[];
};

#endif


