From 48540940b6c28bb4378abfeb500ec45a625b37b6 Mon Sep 17 00:00:00 2001
From: Vadim Dashevskiy <watcherhd@gmail.com>
Date: Tue, 15 May 2012 10:38:20 +0000
Subject: initial commit

git-svn-id: http://svn.miranda-ng.org/main/trunk@2 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
---
 plugins/modernb/hdr/modern_commonheaders.h | 531 +++++++++++++++++++++++++++++
 1 file changed, 531 insertions(+)
 create mode 100644 plugins/modernb/hdr/modern_commonheaders.h

(limited to 'plugins/modernb/hdr/modern_commonheaders.h')

diff --git a/plugins/modernb/hdr/modern_commonheaders.h b/plugins/modernb/hdr/modern_commonheaders.h
new file mode 100644
index 0000000000..91628f809c
--- /dev/null
+++ b/plugins/modernb/hdr/modern_commonheaders.h
@@ -0,0 +1,531 @@
+#ifndef commonheaders_h__
+#define commonheaders_h__
+
+/*
+
+Miranda IM: the free IM client for Microsoft* Windows*
+
+Copyright 2000-2008 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.
+*/
+
+#pragma once
+#define MIRANDA_VER 0x0A00
+
+#define _WIN32_WINNT 0x0501
+
+#ifndef _WIN32_IE
+#define _WIN32_IE 0x0501
+#endif
+
+#ifndef DB_USEHELPERFUNCTIONS		// to supress static inline db helpers
+#define DB_NOHELPERFUNCTIONS
+#endif
+
+#ifndef _CRT_SECURE_NO_WARNINGS
+#define _CRT_SECURE_NO_WARNINGS		// to suppress secure warnings in VC2005
+#endif
+
+#ifndef _CRT_SECURE_NO_DEPRECATE	// to suppress secure deprecate warnings in VC2005
+#define _CRT_SECURE_NO_DEPRECATE
+#endif
+
+#if defined (_DEBUG)
+#define TRACE(str)  { log0(str); }
+#else
+  #define TRACE(str)
+#endif
+
+#if defined (_DEBUG)
+  #define TRACEVAR(str,n) { log1(str,n); }
+#else
+  #define TRACEVAR(str,n)
+#endif
+
+#if defined (_DEBUG)
+#define TRACET(str) OutputDebugString(str)
+#else
+#define TRACET(str)
+#endif
+
+#define SERVICE(serviceproc)         static INT_PTR serviceproc(WPARAM wParam,LPARAM lParam)
+#define EVENTHOOK(eventhookproc)     static int eventhookproc(WPARAM wParam,LPARAM lParam)
+#define CLINTERFACE                  static
+
+#define PLUGININTERFACE extern "C" __declspec( dllexport )
+#define UPDATER_PATH "http://miranda-im.org/download/details.php?action=viewfile&id=3684"
+
+#include "m_stdhdr.h"
+
+#include <windows.h>
+#include <commctrl.h>
+#include <uxtheme.h>
+#include <vssym32.h>
+#include <stdio.h>
+#include <time.h>
+#include <stddef.h>
+//#include <process.h>
+#include <io.h>
+#include <math.h>
+#include <string.h>
+#include <direct.h>
+#include <win2k.h>
+
+#include "modern_global_structure.h"
+
+#include <newpluginapi.h>
+#include <m_system.h>
+#include <m_system_cpp.h>
+#include <m_utils.h>
+
+#include <m_database.h>
+#include <m_langpack.h>
+#include <m_button.h>
+#include <m_options.h>
+#include <m_protosvc.h>
+#include <m_clist.h>
+#include <m_clistint.h>
+#include <m_skin.h>
+#include <m_contacts.h>
+#include <m_plugins.h>
+#include <m_avatars.h>
+#include <m_genmenu.h>
+#include <m_clui.h>
+#include <m_clc.h>
+#include <m_icolib.h>
+#include <m_userinfo.h>
+#include <m_addcontact.h>
+#include <m_fontservice.h>
+#include <m_file.h>
+#include <m_timezones.h>
+
+#include "modern_clc.h"
+#include "modern_clist.h"
+#include "modern_cluiframes.h"
+#include "m_cluiframes.h"
+#include "../m_api/m_metacontacts.h"
+#include "../m_api/m_skin_eng.h"
+
+#include "modern_rowheight_funcs.h"
+#include "modern_cache_funcs.h"
+#include "modern_log.h"
+
+#include "richedit.h"
+#include "../m_api/m_variables.h"
+
+#include "../m_api/m_smileyadd.h"
+
+#include "../m_api/m_xpTheme.h"
+#include "../m_api/m_toolbar.h"
+
+#include "../resource.h"
+
+#include "modern_layered_window_engine.h"
+
+// module name of MetaContacts plugin
+extern char *g_szMetaModuleName;
+
+//macros to free data and set it pointer to NULL
+#define mir_free_and_nill(x) {mir_free((void*)x); x=NULL;}
+// shared vars
+
+#define CLUI_FRAME_AUTOHIDENOTIFY  512
+#define CLUI_FRAME_SHOWALWAYS      1024
+
+
+//#define alloc(n) mir_alloc(n)
+
+#define MAX_REGS(_A_) (sizeof(_A_)/sizeof(_A_[0]))
+
+#ifndef CS_DROPSHADOW
+#define CS_DROPSHADOW 0x00020000
+#endif
+
+#define MENU_MIRANDAMENU            0xFFFF1234
+#define MENU_STATUSMENU             0xFFFF1235
+#define MENU_MINIMIZE               0xFFFF1236
+
+#define UM_CREATECLC                (WM_USER+1)
+#define UM_SETALLEXTRAICONS         (WM_USER+2)
+#define UM_UPDATE                   (WM_USER+50)
+#define UM_SYNCCALL                 (WM_USER+654)
+
+// Define constants for CLUI_SizingOnBorder SC_SIZE
+
+#define SCF_NONE    0
+#define SCF_LEFT    1
+#define SCF_RIGHT   2
+#define SCF_TOP     3
+#define SCF_BOTTOM  6
+
+
+extern char* __cdecl strstri( char *a, const char *b);
+extern BOOL __cdecl mir_bool_strcmpi(const char *a, const char *b);
+extern int __cdecl mir_strcmp (const char *a, const char *b);
+extern int __cdecl mir_strlen (const char *a);
+extern int __cdecl mir_strcmpi(const char *a, const char *b);
+extern int __cdecl mir_tstrcmpi(const TCHAR *a, const TCHAR *b);
+extern DWORD exceptFunction(LPEXCEPTION_POINTERS EP);
+
+extern HANDLE ModernHookEvent( char *EventID, MIRANDAHOOK HookProc );
+
+extern int ModernUnhookEvent(HANDLE hHook);
+extern int UnhookAll();
+
+#ifndef MYCMP
+#define MYCMP 1
+#define strcmp(a,b) mir_strcmp(a,b)
+#define strlen(a) mir_strlen(a)
+#endif
+
+//  Register of plugin's user
+//
+//  wParam = (WPARAM)szSetting - string that describes a user
+//           format: Category/ModuleName,
+//           eg: "Contact list background/CLUI",
+//               "Status bar background/StatusBar"
+//  lParam = (LPARAM)dwFlags
+//
+#define MS_BACKGROUNDCONFIG_REGISTER "ModernBkgrCfg/Register"
+
+//
+//  Notification about changed background
+//  wParam = ModuleName
+//  lParam = 0
+#define ME_BACKGROUNDCONFIG_CHANGED "ModernBkgrCfg/Changed"
+
+
+
+HBITMAP ske_CreateDIB32(int cx, int cy);
+
+extern void InitDisplayNameCache(void);
+extern void FreeDisplayNameCache();
+extern int CLUI_ShowWindowMod(HWND hwnd, int cmd);
+
+#ifdef UNICODE
+	#define GSMDF_TCHAR_MY GSMDF_TCHAR|CNF_UNICODE
+#else
+	#define GSMDF_TCHAR_MY 0
+#endif
+
+#ifndef LWA_COLORKEY
+#define LWA_COLORKEY            0x00000001
+#endif
+
+#ifndef AC_SRC_ALPHA
+#define AC_SRC_ALPHA            0x01
+#endif
+
+//#ifdef _DEBUG
+//#define DeleteObject(a) DebugDeleteObject(a)
+//#endif
+
+#define strsetA(a,b) {if (a) mir_free_and_nill(a); a=mir_strdup(b);}
+#define strsetT(a,b) {if (a) mir_free_and_nill(a); a=mir_tstrdup(b);}
+
+extern void TRACE_ERROR();
+extern BOOL DebugDeleteObject(HGDIOBJ a);
+extern BOOL mod_DeleteDC(HDC hdc);
+extern BOOL ske_ResetTextEffect(HDC hdc);
+extern BOOL ske_SelectTextEffect(HDC hdc, BYTE EffectID, DWORD FirstColor, DWORD SecondColor);
+extern void IvalidateDisplayNameCache(DWORD mode);
+
+typedef BOOL (WINAPI *pfnTryEnterCriticalSection)( LPCRITICAL_SECTION );
+extern pfnTryEnterCriticalSection fnTryEnterCriticalSection;
+
+typedef BOOL (WINAPI *pfnGetScrollBarInfo)( HWND, LONG, PSCROLLBARINFO );
+extern pfnGetScrollBarInfo fnGetScrollBarInfo;
+
+typedef DWORD (WINAPI *pfnMsgWaitForMultipleObjectsEx)( DWORD, CONST HANDLE*, DWORD, DWORD, DWORD );
+extern pfnMsgWaitForMultipleObjectsEx fnMsgWaitForMultipleObjectsEx;
+
+typedef HWND (WINAPI *pfnGetAncestor)( HWND, UINT );
+extern pfnGetAncestor fnGetAncestor;
+HWND WINAPI MyGetAncestor( HWND, UINT );
+
+typedef BOOL (WINAPI *pfnGetMenuBarInfo)( HWND, LONG, LONG, PMENUBARINFO );
+extern pfnGetMenuBarInfo fnGetMenuBarInfo;
+
+void FreeAndNil( void **p );
+
+extern SortedList *clistCache;
+
+HICON LoadSmallIconShared(HINSTANCE hInstance, LPCTSTR lpIconName);
+HICON LoadSmallIcon(HINSTANCE hInstance, LPCTSTR lpIconName);
+BOOL DestroyIcon_protect(HICON icon);
+
+#ifndef ETDT_ENABLETAB
+#define ETDT_DISABLE        0x00000001
+#define ETDT_ENABLE         0x00000002
+#define ETDT_USETABTEXTURE  0x00000004
+#define ETDT_ENABLETAB      (ETDT_ENABLE  | ETDT_USETABTEXTURE)
+#endif
+
+
+
+#define TreeView_InsertItemA(hwnd, lpis) \
+	(HTREEITEM)SendMessageA((hwnd), TVM_INSERTITEMA, 0, (LPARAM)(LPTV_INSERTSTRUCTA)(lpis))
+
+#define TreeView_GetItemA(hwnd, pitem) \
+	(BOOL)SendMessageA((hwnd), TVM_GETITEMA, 0, (LPARAM)(TV_ITEM *)(pitem))
+
+enum
+{
+	STATE_DLL_LOADING = 0,
+	STATE_CLUI_LOADING,
+	STATE_NORMAL,
+	STATE_PREPEARETOEXIT,
+	STATE_EXITING
+};
+
+#define MirandaLoading() ((g_CluiData.bSTATE<STATE_NORMAL))
+#define MirandaExiting() ((g_CluiData.bSTATE>STATE_NORMAL))
+
+
+
+char * strdupn(const char * src, int len);
+
+#define SKINBUTTONCLASS _T("MirandaSkinButtonClass")
+
+#define SORTBY_NAME	   0
+#define SORTBY_STATUS  1
+#define SORTBY_LASTMSG 2
+#define SORTBY_PROTO   3
+#define SORTBY_RATE    4
+#define SORTBY_NAME_LOCALE 5
+#define SORTBY_NOTHING	10
+
+#define DT_FORCENATIVERENDER   0x10000000
+
+#define _BOOL(a) (a != 0)
+
+/* modern_animated_avatars.c */
+int AniAva_InitModule();								   // HAVE TO BE AFTER GDI+ INITIALIZED
+int AniAva_UnloadModule();
+int AniAva_UpdateOptions();								   //reload options, //hot enable/disable engine
+
+int AniAva_AddAvatar(HANDLE hContact, TCHAR * szFilename, int width, int heigth);  // adds avatars to be displayed
+int AniAva_SetAvatarPos(HANDLE hContact, RECT * rc, int overlayIdx, BYTE bAlpha);	   // update avatars pos
+int AniAva_InvalidateAvatarPositions(HANDLE hContact);	   // reset positions of avatars to be drawn (still be painted at same place)
+int AniAva_RemoveInvalidatedAvatars();					   // all avatars without validated position will be stop painted and probably removed
+int AniAva_RemoveAvatar(HANDLE hContact);				   // remove avatar
+int AniAva_RedrawAllAvatars(BOOL updateZOrder);			   // request to repaint all
+void AniAva_UpdateParent();
+int AniAva_RenderAvatar( HANDLE hContact, HDC hdcMem, RECT * rc );
+
+
+#define CCI_NAME			1
+#define CCI_GROUP			(1<<1)
+#define CCI_PROTO			(1<<2)
+#define CCI_STATUS			(1<<3)
+#define CCI_LINES			(1<<4)
+#define CCI_HIDDEN			(1<<4)
+#define CCI_NOHIDEOFFLINE	(1<<5)
+#define CCI_NOPROTO			(1<<6)
+#define CCI_HIDESUBCONTACT	(1<<7)
+#define CCI_I				(1<<8)
+#define CCI_APPARENT		(1<<9)
+#define CCI_NOTONLIST		(1<<10)
+#define CCI_IDLETS			(1<<11)
+#define CCI_CCONTACT		(1<<12)
+#define CCI_EXPAND			(1<<13)
+#define CCI_UNKNOWN			(1<<14)
+#define CCI_TIME			(1<<15)
+#define CCI_OTHER			~( CCI_NAME|CCI_GROUP|CCI_PROTO|CCI_STATUS|CCI_LINES|CCI_TIME )
+#define CCI_ALL				(0xFFFFFFFF)
+
+void CListSettings_FreeCacheItemData(pdisplayNameCacheEntry pDst);
+int CLUI_SyncGetPDNCE(WPARAM wParam, LPARAM lParam);
+WORD pdnce___GetStatus(pdisplayNameCacheEntry pdnce);
+void pdnce___SetStatus( pdisplayNameCacheEntry pdnce, WORD wStatus );
+
+/* move to list module */
+typedef void (*ItemDestuctor)(void*);
+
+
+void li_ListDestruct(SortedList *pList, ItemDestuctor pItemDestructor);
+void li_RemoveDestruct(SortedList *pList, int index, ItemDestuctor pItemDestructor);
+void li_RemovePtrDestruct(SortedList *pList, void * ptr, ItemDestuctor pItemDestructor);
+void li_SortList(SortedList *pList, FSortFunc pSortFunct);
+
+#define mir_safe_free(a) if(a) mir_free(a)
+
+#ifdef _UNICODE
+#define mir_t2a(s) mir_u2a(s)
+#define mir_a2t(s) mir_a2u(s)
+#define mir_t2u(s) mir_wstrdup(s)
+#define mir_u2t(s) mir_wstrdup(s)
+#else
+#define mir_t2a(s) mir_strdup(s)
+#define mir_a2t(s) mir_strdup(s)
+#define mir_t2u(s) mir_a2u(s)
+#define mir_u2t(s) mir_u2a(s)
+#endif
+
+
+template <class T> class INIT : public T
+{
+public:
+	INIT()
+	{
+		memset(this, 0, sizeof(T));
+		this->cbSize=sizeof(T);
+	}
+};
+
+#ifdef __cplusplus
+const ROWCELL * rowAddCell(ROWCELL* &, int );
+void rowDeleteTree(ROWCELL *cell);
+BOOL rowParse(ROWCELL* &cell, ROWCELL* parent, char *tbuf, int &hbuf, int &sequence, ROWCELL** RowTabAccess );
+void rowSizeWithReposition(ROWCELL* &root, int width);
+#endif
+
+//////////////////////////////////////////////////////////////////////////
+// Specific class for quick implementation of map<string, *> list
+// with some more fast searching it is
+// hash_map alternative - for  faked hash search;
+// the items are stored no by char* key but both int(hash),char*.
+// have items sorted in map firstly via hash, secondly via string
+// the method is case insensitive
+// To use this simple define like
+// 	typedef std::map<HashStringKeyNoCase, _Type > map_Type;
+//	map_Type myMap;
+// and access it as usual via simpe char* indexing:
+//  myList[ "first"  ]=_Type_value;
+//  myList[ "second" ]=_Type_value;
+//  _Type a = myList[ "second"];
+
+class HashStringKeyNoCase
+{
+public:
+
+	HashStringKeyNoCase( const char* szKey )
+	{
+		_strKey=_strdup( szKey );
+		_CreateHashKey();
+	}
+
+	HashStringKeyNoCase( const HashStringKeyNoCase& hsKey )
+	{
+		_strKey = _strdup( hsKey._strKey );
+		_dwKey  = hsKey._dwKey;
+	}
+
+	HashStringKeyNoCase& operator= ( const HashStringKeyNoCase& hsKey )
+	{
+		_strKey = _strdup( hsKey._strKey );
+		_dwKey  = hsKey._dwKey;
+	}
+
+#ifdef _UNICODE
+	HashStringKeyNoCase( const wchar_t* szKey )
+	{
+		int codepage=0;
+		int cbLen = WideCharToMultiByte( codepage, 0, szKey, -1, NULL, 0, NULL, NULL );
+		char* result = ( char* )malloc( cbLen+1 );
+		WideCharToMultiByte( codepage, 0, szKey, -1, result, cbLen, NULL, NULL );
+		result[ cbLen ] = 0;
+
+		_strKey=result;
+		_CreateHashKey();
+	}
+#endif
+
+	~HashStringKeyNoCase()
+	{
+		if (_strKey) free (_strKey);
+		_strKey = NULL;
+		_dwKey=0;
+	}
+
+private:
+	char*   _strKey;
+	DWORD   _dwKey;
+
+	void  _CreateHashKey()
+	{
+		_strKey=_strupr( _strKey );
+		_dwKey = mod_CalcHash( _strKey );
+	}
+
+public:
+	bool operator< ( const HashStringKeyNoCase& second ) const
+	{
+		if ( this->_dwKey != second._dwKey )
+			return ( this->_dwKey < second._dwKey );
+		else
+			return ( strcmp( this->_strKey, second._strKey ) < 0 ); // already maked upper so in any case - will be case insensitive
+	}
+
+	struct HashKeyLess
+	{
+		bool operator() ( const HashStringKeyNoCase& first, const HashStringKeyNoCase& second ) const
+		{	return ( first < second ); }
+	};
+};
+
+#ifdef _UNICODE
+#define ModernGetStringT ModernGetStringW
+#else
+#define ModernGetStringT ModernGetStringA
+#endif
+
+char *	   ModernGetStringA			( HANDLE hContact, const char *szModule, const char *szSetting );
+wchar_t *  ModernGetStringW			( HANDLE hContact, const char *szModule, const char *szSetting );
+
+WORD	ModernGetSettingRangedWord  ( HANDLE hContact, const char *szModule, const char *szSetting, WORD errorValue, WORD minValue, WORD maxValue);
+
+
+#define ModernGetSetting(a,b,c,d)             ModernGetSetting_Helper(a,b,c,d,__FILE__,__LINE__)
+#define ModernGetSettingByte(a,b,c,d)         ModernGetSettingByte_Helper(a,b,c,d,__FILE__,__LINE__)
+#define ModernGetSettingWord(a,b,c,d)         ModernGetSettingWord_Helper(a,b,c,d,__FILE__,__LINE__)
+#define ModernGetSettingDword(a,b,c,d)        ModernGetSettingDword_Helper(a,b,c,d,__FILE__,__LINE__)
+#define ModernGetSettingString(a,b,c,d)       ModernGetSettingString_Helper(a,b,c,d,__FILE__,__LINE__,DBVT_ASCIIZ)
+#define ModernGetSettingWString(a,b,c,d)      ModernGetSettingString_Helper(a,b,c,d,__FILE__,__LINE__,DBVT_WCHAR)
+#define ModernGetSettingUTF8String(a,b,c,d)   ModernGetSettingString_Helper(a,b,c,d,__FILE__,__LINE__,DBVT_UTF8)
+
+int  __cdecl ModernGetSettingByte_Helper   ( HANDLE hContact, const char *szModule, const char *szSetting, int errorValue, const char *szFile, const int nLine);
+int  __cdecl ModernGetSettingWord_Helper   ( HANDLE hContact, const char *szModule, const char *szSetting, int errorValue, const char *szFile, const int nLine);
+int  __cdecl ModernGetSettingDword_Helper  ( HANDLE hContact, const char *szModule, const char *szSetting, int errorValue, const char *szFile, const int nLine);
+int  __cdecl ModernGetSettingString_Helper ( HANDLE hContact, const char *szModule, const char *szSetting, DBVARIANT *dbv, const char *szFile, const int nLine, const int nType);
+int  __cdecl ModernGetSetting_Helper       ( HANDLE hContact, const char *szModule, const char *szSetting, DBVARIANT *dbv, const char *szFile, const int nLine);
+
+int __cdecl ModernWriteSettingByte       ( HANDLE hContact, const char *szModule, const char *szSetting, BYTE  val  );
+int __cdecl ModernWriteSettingWord       ( HANDLE hContact, const char *szModule, const char *szSetting, WORD  val  );
+int __cdecl ModernWriteSettingDword      ( HANDLE hContact, const char *szModule, const char *szSetting, DWORD val  );
+int __cdecl ModernWriteSettingString     ( HANDLE hContact, const char *szModule, const char *szSetting, const char *val  );
+
+
+int __cdecl ModernDeleteSetting     ( HANDLE hContact, const char *szModule, const char *szSetting);
+int __cdecl ModernDBFreeVariant     ( DBVARIANT *dbv );
+
+
+#ifdef _UNICODE
+	int __cdecl ModernWriteSettingWString    ( HANDLE hContact, const char *szModule, const char *szSetting, const WCHAR *val );
+	#define ModernWriteSettingTString(a,b,c,d) ModernWriteSettingWString( a,b,c,d )
+    #define ModernGetSettingTString(a,b,c,d)   ModernGetSettingWString(a,b,c,d)
+#else
+    #define ModernWriteSettingTString(a,b,c,d) ModernWriteSettingString( a,b,c,d )
+    #define ModernGetSettingTString(a,b,c,d)   ModernGetSettingString(a,b,c,d)
+#endif //_UNICODE
+
+
+#define EXTRACOLUMNCOUNT 10
+
+
+#endif // commonheaders_h__
-- 
cgit v1.2.3