From 50feaa0ffc1b2e120eb6b22b2970f5bc2f7dc7a4 Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Sun, 14 Oct 2012 13:35:25 +0000 Subject: TabSRMM: folders restructurization git-svn-id: http://svn.miranda-ng.org/main/trunk@1923 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/TabSRMM/src/include/msgs.h | 1062 ++++++++++++++++++++++++++++++++++++ 1 file changed, 1062 insertions(+) create mode 100644 plugins/TabSRMM/src/include/msgs.h (limited to 'plugins/TabSRMM/src/include/msgs.h') diff --git a/plugins/TabSRMM/src/include/msgs.h b/plugins/TabSRMM/src/include/msgs.h new file mode 100644 index 0000000000..5f4adef350 --- /dev/null +++ b/plugins/TabSRMM/src/include/msgs.h @@ -0,0 +1,1062 @@ +/* + * astyle --force-indent=tab=4 --brackets=linux --indent-switches + * --pad=oper --one-line=keep-blocks --unpad=paren + * + * Miranda NG: 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-2009 by silvercircle _at_ gmail _dot_ com and contributors + * + * $Id: msgs.h 13587 2011-04-12 13:54:26Z george.hazan $ + * + * + */ + +#ifndef _MSGS_H +#define _MSGS_H + +#ifdef _MSC_VER +#if _MSC_VER < 1400 +#define uintptr_t UINT_PTR +#define _localtime32 localtime +#define __time32_t time_t +#endif +#endif +/* + * required for MingW32 compatibility + */ + +#define CF_TEXTT CF_UNICODETEXT + +#include +#include +#include "m_avatars.h" +#include "m_message.h" + +#define MSGERROR_CANCEL 0 +#define MSGERROR_RETRY 1 +#define MSGERROR_SENDLATER 2 + +#define CONTAINER_NAMELEN 25 +#define TITLE_FORMATLEN 30 + +#define MWF_SAVEBTN_SAV 2 + +#define MWF_DEFERREDSCROLL 4 +#define MWF_NEEDHISTORYSAVE 8 +#define MWF_WASBACKGROUNDCREATE 16 +//#define MWF_MOUSEDOWN 32 +#define MWF_ERRORSTATE 128 +#define MWF_DEFERREDREMAKELOG 256 + +#define MWF_LOG_NORMALTEMPLATES 512 +#define MWF_LOG_SHOWTIME 1024 +#define MWF_LOG_SHOWSECONDS 2048 +#define MWF_LOG_SHOWDATES 4096 + +#define MWF_LOG_INDENT 16384 +#define MWF_LOG_RTL 32768 + +//MAD: ieview still mistakenly uses these... +#define MWF_LOG_NEWLINE 8192 +#define MWF_LOG_UNDERLINE 65536 +#define MWF_LOG_SWAPNICK 131072 +// +//#define MWF_LOG_BBCODE 65536 +//#define MWF_LOG_STATUSCHANGES 131072 +//#define MWF_LOG_LOCALTIME 8192 +#define MWF_LOG_BBCODE 1 +#define MWF_LOG_STATUSCHANGES 32 +#define MWF_LOG_LOCALTIME 64 + +#define MWF_LOG_SHOWICONS 262144 +#define MWF_LOG_SYMBOLS 0x200000 +#define MWF_INITMODE 0x400000 +#define MWF_NEEDCHECKSIZE 0x800000 +#define MWF_DIVIDERSET 0x1000000 +#define MWF_LOG_TEXTFORMAT 0x2000000 +#define MWF_LOG_GRID 0x4000000 +// #define MWF_LOG_INDIVIDUALBKG 0x8000000 * FREE * +#define MWF_LOG_INOUTICONS 0x10000000 +#define MWF_SMBUTTONSELECTED 0x20000000 +#define MWF_DIVIDERWANTED 0x40000000 +#define MWF_LOG_GROUPMODE 0x80000000 + +#define MWF_SHOW_URLEVENTS 1 +#define MWF_SHOW_FILEEVENTS 2 +//#define MWF_SHOW_PRIVATETHEME 4 +//#define MWF_SHOW_EMPTYLINEFIX 8 +//#define MWF_SHOW_MICROLF 16 +//#define MWF_SHOW_MARKFOLLOWUPTS 32 +#define MWF_SHOW_FLASHCLIST 64 +#define MWF_SHOW_SPLITTEROVERRIDE 128 +#define MWF_SHOW_SCROLLINGDISABLED 256 +//#define MWF_SHOW_INFONOTES ** FREE ** +#define MWF_SHOW_ISIDLE 4096 +#define MWF_SHOW_AWAYMSGTIMER 8192 +#define MWF_EX_DELAYEDSPLITTER 32768 +#define MWF_EX_AVATARCHANGED 65536 +#define MWF_EX_WARNCLOSE 0x20000 + +#define SMODE_DEFAULT 0 +#define SMODE_MULTIPLE 1 +#define SMODE_CONTAINER 2 +#define SMODE_FORCEANSI 4 +#define SMODE_SENDLATER 8 +#define SMODE_NOACK 16 + +#define SENDFORMAT_BBCODE 1 +#define SENDFORMAT_NONE 0 + +#define AVATARMODE_DYNAMIC 0 + +#define MSGDLGFONTCOUNT 22 +#define CHATFONTCOUNT 19 + +#define TMPL_MSGIN 0 +#define TMPL_MSGOUT 1 +#define TMPL_GRPSTARTIN 2 +#define TMPL_GRPSTARTOUT 3 +#define TMPL_GRPINNERIN 4 +#define TMPL_GRPINNEROUT 5 +#define TMPL_STATUSCHG 6 +#define TMPL_ERRMSG 7 + +#define TEMPLATE_LENGTH 150 +#define CUSTOM_COLORS 5 + +struct TTemplateSet { + BOOL valid; // all templates populated (may still contain crap.. so it's only half-assed safety :) + TCHAR szTemplates[TMPL_ERRMSG + 1][TEMPLATE_LENGTH]; // the template strings + char szSetName[20]; // everything in this world needs a name. so does this poor template set. +}; + +struct TitleBtn { + BOOL isHot; + BOOL isPressed; +}; + +#define BTN_MIN 0 +#define BTN_MAX 1 +#define BTN_CLOSE 2 + +#define NR_LOGICONS 8 +#define NR_BUTTONBARICONS 37//MaD: 29 +#define NR_SIDEBARICONS 2 + +class CTaskbarInteract; +class CMenuBar; +class CInfoPanel; +class CSideBar; +class CContactCache; +class CProxyWindow; + +#define STICK_ICON_MSG 10 +struct TLogTheme { + COLORREF inbg, outbg, bg, oldinbg, oldoutbg, statbg, inputbg; + COLORREF hgrid; + COLORREF custom_colors[5]; + DWORD dwFlags; + DWORD left_indent, right_indent; + LOGFONTA* logFonts; + COLORREF* fontColors; + char* rtfFonts; + bool isPrivate; +}; + +struct TContainerSettings { + bool fPrivate; + DWORD dwFlags; + DWORD dwFlagsEx; + DWORD dwTransparency; + DWORD panelheight; + DWORD splitterPos; + TCHAR szTitleFormat[TITLE_FORMATLEN + 2]; + WORD avatarMode; + WORD ownAvatarMode; + WORD autoCloseSeconds; + BYTE reserved[10]; +}; + +struct TContainerData { + TContainerData *pNextContainer; + TCHAR szName[CONTAINER_NAMELEN + 4]; // container name + HWND hwndActive; // active message window + HWND hwnd; // the container handle + int iTabIndex; // next tab id + int iChilds; + int iContainerIndex; + bool fHidden; + HMENU hMenuContext; + HWND hwndTip; // tab - tooltips... + BOOL bDontSmartClose; // if set, do not search and select the next possible tab after closing one. + DWORD dwFlags; + DWORD dwFlagsEx; + LONG uChildMinHeight; + int tBorder; + int tBorder_outer_left, tBorder_outer_right, tBorder_outer_top, tBorder_outer_bottom; + HANDLE hContactFrom; + BOOL isCloned; + HWND hwndStatus; + int statusBarHeight; + DWORD dwLastActivity; + int hIcon; // current window icon stick indicator + HICON hIconTaskbarOverlay; // contains a "sticky" taskbar overlay (e.g. new message icon) + DWORD dwFlashingStarted; + HWND hWndOptions; + BOOL bSizingLoop; + TCHAR szRelThemeFile[MAX_PATH], szAbsThemeFile[MAX_PATH]; + TTemplateSet *ltr_templates, *rtl_templates; + HDC cachedDC; + HBITMAP cachedHBM, oldHBM; + SIZE oldDCSize; + RECT rcClose, rcMin, rcMax; + struct TitleBtn buttons[3]; + struct TitleBtn oldbuttons[3]; + int ncActive; + HWND hwndSaved; + ButtonItem *buttonItems; + RECT rcSaved, rcLogSaved; + POINT ptLogSaved; + DWORD exFlags; + BOOL fPrivateThemeChanged; + MARGINS mOld; + HDC cachedToolbarDC; + HBITMAP hbmToolbarBG, oldhbmToolbarBG; + SIZE szOldToolbarSize; + SIZE oldSize, preSIZE; + WORD avatarMode, ownAvatarMode; + BYTE bTBRenderingMode; + TLogTheme theme; + TContainerSettings* settings; + CTaskbarInteract* TaskBar; + CMenuBar* MenuBar; + CSideBar* SideBar; +}; + +struct SESSIONINFO_TYPE; + +struct TWindowData { + UINT cbSize; + BYTE bType; + struct TContainerData *pContainer; // parent container description structure + HWND hwnd; + DWORD dwFlags; + DWORD dwFlagsEx; + HANDLE hContact; + char *szProto; + TCHAR szMyNickname[130]; + TCHAR szStatusBar[100]; + TCHAR newtitle[130]; // tab title... + TCHAR szStatus[50]; + WORD wStatus; + char *sendBuffer; + int iSendBufferSize; + int iSendLength; // message length in utf-8 octets + HICON hTabIcon, hTabStatusIcon, hXStatusIcon, hClientIcon, hTaskbarIcon; + HICON iFlashIcon; + BOOL mayFlashTab; + BOOL bTabFlash; + HWND hwndIEView, hwndFlash, hwndIWebBrowserControl, hwndHPP; + HWND hwndContactPic, hwndPanelPic, hwndPanelPicParent; + UINT bbLSideWidth; //MAD + UINT bbRSideWidth; //MAD + BYTE kstate[256]; + struct TStatusBarIconNode *pSINod; + SESSIONINFO_TYPE* si; + + RECT rcNick, rcUIN, rcStatus, rcPic; + HANDLE hDbEventFirst, hDbEventLast; + int sendMode; + int splitterY, originalSplitterY, dynaSplitter, savedSplitter, savedSplitY, savedDynaSplit; + int multiSplitterX; + SIZE minEditBoxSize; + int showUIElements; + int nTypeSecs; + int nTypeMode; + DWORD nLastTyping; + int showTyping; + DWORD lastMessage; + int iTabID; + HKL hkl; // keyboard layout identifier + DWORD dwTickLastEvent, dwUnread; + HBITMAP hOwnPic; + SIZE pic; + int showPic, showInfoPic; + BOOL fMustOffset; + BOOL isHistory; + int doSmileys; + UINT codePage; + HICON hSmileyIcon; + int iLastEventType; + time_t lastEventTime; + int iRealAvatarHeight; + int iButtonBarReallyNeeds; + DWORD dwLastActivity; + int iOpenJobs; + int iCurrentQueueError; + BOOL bIsMeta; + HANDLE hFlashingEvent; + TCHAR myUin[80]; + BOOL bNotOnList; + int SendFormat; + HANDLE *hQueuedEvents; + int iNextQueuedEvent; +#define EVENT_QUEUE_SIZE 10 + int iEventQueueSize; + LCID lcid; + TCHAR lcID[10]; + int panelWidth; + DWORD idle; + HWND hwndTip; + TOOLINFO ti; + HANDLE hTimeZone; + DWORD panelStatusCX; + COLORREF inputbg; + struct avatarCacheEntry *ace, *ownAce; + HANDLE *hHistoryEvents; + int maxHistory, curHistory; + HANDLE hTheme, hThemeIP, hThemeToolbar; + char szMicroLf[128]; + DWORD isAutoRTL; + int nMax; // max message size + int textLen; // current text len + LONG ipFieldHeight; + WNDPROC oldIEViewProc; + BOOL clr_added; + BOOL fIsReattach; + WPARAM wParam; // used for "delayed" actions like moved splitters in minimized windows + LPARAM lParam; + int iHaveRTLLang; + BOOL fInsertMode; + bool fkeyProcessed; + bool fEditNotesActive; + CInfoPanel *Panel; + CContactCache *cache; + CProxyWindow *pWnd; // proxy window object (win7+, for taskbar support). + // ALWAYS check this pointer before using it, it is not guaranteed to exist. + DWORD iSplitterSaved; + BYTE bWasDeleted; + BOOL bActualHistory; + POINT ptTipActivation; + LONG iInputAreaHeight; + bool fIsAutosizingInput; + bool fLimitedUpdate; +}; + +#define MESSAGE_WINDOW_DATA_SIZE offsetof(_MessageWindowData, hdbEventFirst); + +typedef struct _recentinfo { + DWORD dwFirst, dwMostRecent; // timestamps + int iFirstIndex, iMostRecent; // tab indices + HWND hwndFirst, hwndMostRecent; // client window handles +} RECENTINFO; + +/* + * configuration data for custom tab ctrl + */ + +struct myTabCtrl { + HPEN m_hPenShadow, m_hPenItemShadow, m_hPenLight; + HFONT m_hMenuFont; + COLORREF colors[10]; + HBRUSH m_brushes[4]; + DWORD m_fixedwidth; + int m_bottomAdjust; +}; + +struct TIconDesc { + char *szName; + char *szDesc; + HICON *phIcon; // where the handle is saved... + INT_PTR uId; // icon ID + BOOL bForceSmall; // true: force 16x16 +}; + +struct TIconDescW { + TCHAR *szName; + TCHAR *szDesc; + HICON *phIcon; // where the handle is saved... + INT_PTR uId; // icon ID + BOOL bForceSmall; // true: force 16x16 +}; + +// menu IDS + +#define MENU_LOGMENU 1 +#define MENU_PICMENU 2 +#define MENU_TABCONTEXT 3 +#define MENU_PANELPICMENU 4 + +#define TABSRMM_SMILEYADD_BKGCOLORMODE 0x10000000 +#define ADDEDEVENTSQUEUESIZE 100 + +/* + * tab config flags + */ + +#define TCF_FLAT 1 +//#define TCF_STYLED 2 +#define TCF_CLOSEBUTTON 4 +#define TCF_FLASHICON 8 +#define TCF_FLASHLABEL 16 +#define TCF_SINGLEROWTABCONTROL 32 +//#define TCF_LABELUSEWINCOLORS 64 +//#define TCF_BKGUSEWINCOLORS 128 +#define TCF_SBARLEFT 256 +#define TCF_SBARRIGHT 512 + +#define TCF_DEFAULT (TCF_FLASHICON) + +#define MIN_PANELHEIGHT 20 + +struct TNewWindowData { + HANDLE hContact; + int isWchar; + const char* szInitialText; + int iTabID; + int iTabImage; + int iActivate; + TCITEM item; + TContainerData* pContainer; + BOOL bWantPopup; + HANDLE hdbEvent; + HKL hkl; +}; + +// flags for the container dwFlags +#define CNT_MOUSEDOWN 1 +#define CNT_NOTITLE 2 +#define CNT_HIDETABS 4 +#define CNT_SIDEBAR 8 +#define CNT_NOFLASH 0x10 +#define CNT_STICKY 0x20 +#define CNT_DONTREPORT 0x40 +#define CNT_FLASHALWAYS 0x80 +#define CNT_TRANSPARENCY 0x100 +#define CNT_AUTOHIDE 0x200 +#define CNT_DONTREPORTFOCUSED 0x400 +//#define CNT_GLOBALSETTINGS 0x400 +#define CNT_GLOBALSIZE 0x800 +#define CNT_INFOPANEL 0x1000 +#define CNT_NOSOUND 0x2000 +#define CNT_AUTOSPLITTER 0x4000 +#define CNT_DEFERREDCONFIGURE 0x8000 +#define CNT_CREATE_MINIMIZED 0x10000 +#define CNT_NEED_UPDATETITLE 0x20000 +#define CNT_DEFERREDSIZEREQUEST 0x40000 +#define CNT_DONTREPORTUNFOCUSED 0x80000 +#define CNT_DONTREPORTFOCUSED 0x400 +#define CNT_ALWAYSREPORTINACTIVE 0x100000 +#define CNT_NEWCONTAINERFLAGS 0x200000 +#define CNT_DEFERREDTABSELECT 0x400000 +#define CNT_CREATE_CLONED 0x800000 +#define CNT_NOSTATUSBAR 0x1000000 +#define CNT_NOMENUBAR 0x2000000 +#define CNT_TABSBOTTOM 0x4000000 +#define CNT_AVATARSONTASKBAR 0x200 +#define CNT_BOTTOMTOOLBAR 0x10000000 +#define CNT_HIDETOOLBAR 0x20000000 +#define CNT_UINSTATUSBAR 0x40000000 +#define CNT_VERTICALMAX 0x80000000 + +#define CNT_EX_SOUNDS_MINIMIZED 1024 +#define CNT_EX_SOUNDS_UNFOCUSED 2048 +#define CNT_EX_SOUNDS_INACTIVETABS 4096 +#define CNT_EX_SOUNDS_FOCUSED 8192 + +#define CNT_FLAGS_DEFAULT (CNT_DONTREPORT | CNT_DONTREPORTUNFOCUSED | CNT_ALWAYSREPORTINACTIVE | CNT_HIDETABS | CNT_NEWCONTAINERFLAGS | CNT_NOMENUBAR | CNT_INFOPANEL) +#define CNT_TRANS_DEFAULT 0x00ff00ff + +#define CNT_FLAGSEX_DEFAULT (TCF_FLASHICON | CNT_EX_SOUNDS_MINIMIZED | CNT_EX_SOUNDS_UNFOCUSED | CNT_EX_SOUNDS_INACTIVETABS | CNT_EX_SOUNDS_FOCUSED) + +#define CNT_CREATEFLAG_CLONED 1 +#define CNT_CREATEFLAG_MINIMIZED 2 + +#define CNT_EX_CLOSEWARN 1 + +#define MWF_LOG_ALL (MWF_LOG_NORMALTEMPLATES | MWF_LOG_SHOWTIME | MWF_LOG_SHOWSECONDS | \ + MWF_LOG_SHOWDATES | MWF_LOG_INDENT | MWF_LOG_TEXTFORMAT | MWF_LOG_SYMBOLS | MWF_LOG_INOUTICONS | \ + MWF_LOG_SHOWICONS | MWF_LOG_GRID | MWF_LOG_GROUPMODE | \ + MWF_LOG_RTL | MWF_LOG_BBCODE | MWF_LOG_LOCALTIME/*MAD:*/ | \ + MWF_LOG_STATUSCHANGES|MWF_LOG_NEWLINE|MWF_LOG_UNDERLINE|MWF_LOG_SWAPNICK /*_MAD*/) + +#define MWF_LOG_DEFAULT (MWF_LOG_SHOWTIME | MWF_LOG_NORMALTEMPLATES | MWF_LOG_SHOWDATES | MWF_LOG_SYMBOLS | MWF_LOG_GRID | MWF_LOG_STATUSCHANGES | MWF_LOG_INOUTICONS) + +/* + * custom dialog window messages + */ +#define EM_SUBCLASSED (WM_USER+0x101) +#define EM_SEARCHSCROLLER (WM_USER+0x103) +#define EM_VALIDATEBOTTOM (WM_USER+0x104) +#define EM_THEMECHANGED (WM_USER+0x105) +#define EM_UNSUBCLASSED (WM_USER+0x106) +#define EM_REFRESHWITHOUTCLIP (WM_USER+0x107) + +#define HM_EVENTSENT (WM_USER+10) +#define DM_REMAKELOG (WM_USER+11) +#define HM_DBEVENTADDED (WM_USER+12) +#define DM_SETINFOPANEL (WM_USER+13) +#define DM_OPTIONSAPPLIED (WM_USER+14) +#define DM_SPLITTERMOVED (WM_USER+15) +#define DM_UPDATETITLE (WM_USER+16) +#define DM_APPENDTOLOG (WM_USER+17) +#define DM_ERRORDECIDED (WM_USER+18) +#define DM_SPLITSENDACK (WM_USER+19) +#define DM_TYPING (WM_USER+20) +#define DM_UPDATEWINICON (WM_USER+21) +#define DM_UPDATELASTMESSAGE (WM_USER+22) + +#define DM_SELECTTAB (WM_USER+23) +#define DM_CLOSETABATMOUSE (WM_USER+24) +#define DM_STATUSICONCHANGE (WM_USER+25) +#define DM_SETLOCALE (WM_USER+26) +#define DM_SESSIONLIST (WM_USER+27) +#define DM_QUERYLASTUNREAD (WM_USER+28) +#define DM_QUERYPENDING (WM_USER+29) +#define DM_UPDATEPICLAYOUT (WM_USER+30) +#define DM_QUERYCONTAINER (WM_USER+31) +#define DM_MUCFLASHWORKER (WM_USER+32) +#define DM_INVALIDATEPANEL (WM_USER+33) +//#define DM_REPORTMINHEIGHT (WM_USER+34) // msg dialog reports its minimum height to the container +#define DM_CHECKINFOTIP (WM_USER+35) +#define DM_SAVESIZE (WM_USER+36) +#define DM_CHECKSIZE (WM_USER+37) +#define DM_FORCEREDRAW (WM_USER+38) +#define DM_CONTAINERSELECTED (WM_USER+39) +#define DM_CONFIGURECONTAINER (WM_USER+40) +#define DM_QUERYHCONTACT (WM_USER+41) +#define DM_DEFERREDREMAKELOG (WM_USER+42) +#define DM_RESTOREWINDOWPOS (WM_USER+43) +#define DM_FORCESCROLL (WM_USER+44) +#define DM_QUERYCLIENTAREA (WM_USER+45) +#define DM_QUERYRECENT (WM_USER+47) +#define DM_ACTIVATEME (WM_USER+46) +// #define DM_REMOVEFROMSENDLATER (WM_USER+48) +#define DM_SENDLATER_RESEND (WM_USER+49) +#define DM_ADDDIVIDER (WM_USER+50) +#define DM_STATUSMASKSET (WM_USER+51) +#define DM_CONTACTSETTINGCHANGED (WM_USER+52) +#define DM_UPDATESTATUSMSG (WM_USER+53) +#define DM_PROTOACK (WM_USER+54) +#define DM_OWNNICKCHANGED (WM_USER+55) +#define DM_CONFIGURETOOLBAR (WM_USER+56) +#define DM_LOADBUTTONBARICONS (WM_USER+57) +#define DM_ACTIVATETOOLTIP (WM_USER+58) +#define DM_UINTOCLIPBOARD (WM_USER+59) +//#define DM_SPLITTEREMERGENCY (WM_USER+60) +#define DM_SENDMESSAGECOMMAND (WM_USER+61) +#define DM_FORCEDREMAKELOG (WM_USER+62) +//#define DM_QUERYFLAGS (WM_USER+63) +#define DM_STATUSBARCHANGED (WM_USER+64) +#define DM_SAVEMESSAGELOG (WM_USER+65) +#define DM_CHECKAUTOCLOSE (WM_USER+66) +#define DM_UPDATEMETACONTACTINFO (WM_USER+67) +#define DM_SETICON (WM_USER+68) +#define DM_CLOSEIFMETA (WM_USER+69) +#define DM_CHECKQUEUEFORCLOSE (WM_USER+70) +#define DM_CHECKAUTOHIDE (WM_USER+71) +#define DM_SETPARENTDIALOG (WM_USER+72) +#define DM_HANDLECLISTEVENT (WM_USER+73) +#define DM_TRAYICONNOTIFY (WM_USER+74) +#define DM_REMOVECLISTEVENT (WM_USER+75) +#define DM_GETWINDOWSTATE (WM_USER+76) +#define DM_DOCREATETAB (WM_USER+77) +#define DM_DELAYEDSCROLL (WM_USER+78) +#define DM_REPLAYQUEUE (WM_USER+79) +#define DM_REFRESHTABINDEX (WM_USER+83) +#define DM_PROTOAVATARCHANGED (WM_USER+84) +#define DM_SMILEYOPTIONSCHANGED (WM_USER+85) +#define DM_MYAVATARCHANGED (WM_USER+86) +#define DM_PRINTCLIENT (WM_USER+87) +#define DM_IEVIEWOPTIONSCHANGED (WM_USER+88) +#define DM_SPLITTERGLOBALEVENT (WM_USER + 89) +#define DM_DOCREATETAB_CHAT (WM_USER+90) +#define DM_CLIENTCHANGED (WM_USER+91) +#define DM_PLAYINCOMINGSOUND (WM_USER+92) +#define DM_SENDMESSAGECOMMANDW (WM_USER+93) +#define DM_REMOVEPOPUPS (WM_USER+94) +#define DM_BBNEEDUPDATE (WM_USER+96) +#define DM_CBDESTROY (WM_USER+97) +#define DM_LOGSTATUSCHANGE (WM_USER+98) +//#define DM_SPLITTERMOVEDGLOBAL_NOSYNC_IM (WM_USER+99) +#define DM_SC_BUILDLIST (WM_USER+100) +#define DM_SC_INITDIALOG (WM_USER+101) +#define DM_SC_CONFIG (WM_USER+104) +#define DM_SCROLLIEVIEW (WM_USER+102) +#define DM_UPDATEUIN (WM_USER+103) + +#define MINSPLITTERY 42 +#define MINLOGHEIGHT 30 +#define ERRORPANEL_HEIGHT 51 + +// wParam values for DM_SELECTTAB + +#define DM_SELECT_NEXT 1 +#define DM_SELECT_PREV 2 + +#define DM_SELECT_BY_HWND 3 // lParam specifies hwnd +#define DM_SELECT_BY_INDEX 4 // lParam specifies tab index + +#define DM_QUERY_NEXT 1 +#define DM_QUERY_MOSTRECENT 2 + +/* + * implement a callback for the rich edit. Without it, no bitmaps + * can be added to the richedit control. + * this class has to implement the GetNewStorage() method + */ + +class REOLECallback : IRichEditOleCallback +{ + +public: + + REOLECallback() + { + mRefCounter = 0; + } + + ~REOLECallback() + {} + + STDMETHOD_(ULONG, AddRef)(void) + { + mRefCounter++; + return (mRefCounter); + } + + STDMETHOD_(ULONG, Release)(void) + { + --mRefCounter; + //if (--mRefCounter == 0) + // delete this; + return (mRefCounter); + } + + STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject) + { + if ( iid == IID_IUnknown || iid == IID_IRichEditOleCallback ) { + *ppvObject = this; AddRef(); return (S_OK); + } + else + return (E_NOINTERFACE); + } + + STDMETHOD(ContextSensitiveHelp) (BOOL fEnterMode) { return (E_NOTIMPL);} + STDMETHOD(DeleteObject) (LPOLEOBJECT lpoleobj) { return (E_NOTIMPL);} + STDMETHOD(GetClipboardData) (CHARRANGE FAR *lpchrg, DWORD reco, LPDATAOBJECT FAR *lplpdataobj) { return (E_NOTIMPL);} + STDMETHOD(GetContextMenu) (WORD seltype, LPOLEOBJECT lpoleobj, CHARRANGE FAR *lpchrg, HMENU FAR *lphmenu) { return (E_NOTIMPL);} + STDMETHOD(GetDragDropEffect) (BOOL fDrag, DWORD grfKeyState, LPDWORD pdwEffect) { return (E_NOTIMPL);} + STDMETHOD(GetInPlaceContext) (LPOLEINPLACEFRAME FAR *lplpFrame, LPOLEINPLACEUIWINDOW FAR *lplpDoc, LPOLEINPLACEFRAMEINFO lpFrameInfo) { return (E_NOTIMPL);} + STDMETHOD(GetNewStorage) (LPSTORAGE FAR *lplpstg); + STDMETHOD(QueryAcceptData) (LPDATAOBJECT lpdataobj, CLIPFORMAT FAR *lpcfFormat, DWORD reco, BOOL fReally, HGLOBAL hMetaPict) { return (E_NOTIMPL);} + STDMETHOD(QueryInsertObject) (LPCLSID lpclsid, LPSTORAGE lpstg, LONG cp) { return (S_OK);} + STDMETHOD(ShowContainerUI) (BOOL fShow) { return (E_NOTIMPL);} +private: + UINT mRefCounter; +}; + +#define MSGFONTID_MYMSG 0 +#define MSGFONTID_MYMISC 1 +#define MSGFONTID_YOURMSG 2 +#define MSGFONTID_YOURMISC 3 +#define MSGFONTID_MYNAME 4 +#define MSGFONTID_MYTIME 5 +#define MSGFONTID_YOURNAME 6 +#define MSGFONTID_YOURTIME 7 +#define H_MSGFONTID_MYMSG 8 +#define H_MSGFONTID_MYMISC 9 +#define H_MSGFONTID_YOURMSG 10 +#define H_MSGFONTID_YOURMISC 11 +#define H_MSGFONTID_MYNAME 12 +#define H_MSGFONTID_MYTIME 13 +#define H_MSGFONTID_YOURNAME 14 +#define H_MSGFONTID_YOURTIME 15 +#define MSGFONTID_MESSAGEAREA 16 +#define H_MSGFONTID_STATUSCHANGES 17 +#define H_MSGFONTID_DIVIDERS 18 +#define MSGFONTID_ERROR 19 +#define MSGFONTID_SYMBOLS_IN 20 +#define MSGFONTID_SYMBOLS_OUT 21 + +#define IPFONTID_NICK 0 +#define IPFONTID_UIN 1 +#define IPFONTID_STATUS 2 +#define IPFONTID_PROTO 3 +#define IPFONTID_TIME 4 + +extern const int msgDlgFontCount; + +#define LOADHISTORY_UNREAD 0 +#define LOADHISTORY_COUNT 1 +#define LOADHISTORY_TIME 2 + +#define SRMSGSET_AUTOPOPUP "AutoPopup" +#define SRMSGDEFSET_AUTOPOPUP 0 +#define SRMSGSET_AUTOMIN "AutoMin" +#define SRMSGDEFSET_AUTOMIN 0 +#define SRMSGSET_SENDONENTER "SendOnEnter" +#define SRMSGDEFSET_SENDONENTER 0 +#define SRMSGSET_MSGTIMEOUT "MessageTimeout" +#define SRMSGDEFSET_MSGTIMEOUT 60000 +#define SRMSGSET_MSGTIMEOUT_MIN 30000 // minimum value (30 seconds) + +#define SRMSGSET_LOADHISTORY "LoadHistory" +#define SRMSGDEFSET_LOADHISTORY LOADHISTORY_COUNT +#define SRMSGSET_LOADCOUNT "LoadCount" +#define SRMSGDEFSET_LOADCOUNT 10 +#define SRMSGSET_LOADTIME "LoadTime" +#define SRMSGDEFSET_LOADTIME 10 + +#define SRMSGSET_SHOWURLS "ShowURLs" +#define SRMSGDEFSET_SHOWURLS 1 +#define SRMSGSET_SHOWFILES "ShowFiles" +#define SRMSGDEFSET_SHOWFILES 1 +#define SRMSGSET_BKGCOLOUR "BkgColour" +#define SRMSGSET_BKGCOLOUR_MUC "BkgColourMUC" + +#define SRMSGDEFSET_BKGCOLOUR RGB(250,250,250) +//#define SRMSGDEFSET_BKGCOLOUR GetSysColor(COLOR_WINDOW) +#define SRMSGDEFSET_BKGINCOLOUR RGB(245,255,245) +#define SRMSGDEFSET_BKGOUTCOLOUR RGB(245,245,255) + +#define SRMSGSET_TYPING "SupportTyping" +#define SRMSGSET_TYPINGNEW "DefaultTyping" +#define SRMSGDEFSET_TYPINGNEW 1 + +#define SRMSGSET_TYPINGUNKNOWN "UnknownTyping" +#define SRMSGDEFSET_TYPINGUNKNOWN 0 + +#define SRMSGSET_SHOWTYPING "ShowTyping" +#define SRMSGDEFSET_SHOWTYPING 1 + +#define SRMSGSET_SHOWTYPINGWINFLASH "ShowTypingWinFlash" +#define SRMSGDEFSET_SHOWTYPINGWINFLASH 1 + +#define SRMSGSET_SHOWTYPINGNOWINOPEN "ShowTypingNoWinOpen" + +#define SRMSGSET_SHOWTYPINGWINOPEN "ShowTypingWinOpen" + +#define SRMSGSET_SHOWTYPINGCLIST "ShowTypingClist" +#define SRMSGDEFSET_SHOWTYPINGCLIST 1 + +// rtl support +#define SRMSGDEFSET_MOD_RTL 0 + +#define TIMERID_FLASHWND 1 +#define TIMEOUT_FLASHWND 900 +#define TIMERID_HEARTBEAT 2 +#define TIMEOUT_HEARTBEAT 20000 +#define TIMERID_HOVER 10 +#define TIMERID_HOVER_T 11 + +#define SRMSGMOD "SRMsg" +#define SRMSGMOD_T "Tab_SRMsg" +#define FONTMODULE "TabSRMM_Fonts" +#define CHAT_FONTMODULE "TabSRMM_chat_Fonts" + +#define IDM_STAYONTOP (WM_USER + 1) +#define IDM_NOTITLE (WM_USER + 2) +#define IDM_MOREOPTIONS (WM_USER +4) + +// constants for the container management functions + +#define CNT_ENUM_DELETE 1 // delete the target container... +#define CNT_ENUM_RENAME 2 +#define CNT_ENUM_WRITEFLAGS 4 + +#define IDM_CONTAINERMENU 50500 + +#define EVENTTYPE_STATUSCHANGE 25368 +#define EVENTTYPE_DIVIDER 25367 +#define EVENTTYPE_ERRMSG 25366 + +// hotkey modifiers... + +#define HOTKEY_MODIFIERS_CTRLSHIFT 0 +#define HOTKEY_MODIFIERS_CTRLALT 1 +#define HOTKEY_MODIFIERS_ALTSHIFT 2 + +struct TLogIcon { + HBITMAP hBmp, hoBmp; + HDC hdc, hdcMem; + HBRUSH hBkgBrush; +}; + +#include "..\TabSRMM_icons\resource.h" // icon pack values + +struct TCpTable { + UINT cpId; + TCHAR *cpName; +}; + +#define LOI_TYPE_FLAG 1 +#define LOI_TYPE_SETTING 2 + +struct TOptionListGroup { + LRESULT handle; + TCHAR *szName; +}; + +struct TOptionListItem { + LRESULT handle; + TCHAR *szName; + UINT id; + UINT uType; + UINT_PTR lParam; + UINT uGroup; +}; + +// sidebar button flags + +#define SBI_TOP 1 +#define SBI_BOTTOM 2 +#define SBI_HIDDEN 4 +#define SBI_DISABLED 8 +#define SBI_TOGGLE 16 +#define SBI_HANDLEBYCLIENT 32 + +// fixed stock button identifiers + +#define IDC_SBAR_SLIST 1111 +#define IDC_SBAR_FAVORITES 1112 +#define IDC_SBAR_RECENT 1113 +#define IDC_SBAR_SETUP 1114 +#define IDC_SBAR_USERPREFS 1115 +#define IDC_SBAR_TOGGLEFORMAT 1117 +#define IDC_SBAR_CANCEL 1118 + +struct SIDEBARITEM { + UINT uId; + DWORD dwFlags; + HICON *hIcon, *hIconPressed, *hIconHover; + TCHAR *szName; + void (*pfnAction)(ButtonItem *item, HWND hwndDlg, struct TWindowData *dat, HWND hwndItem); + void (*pfnCallback)(ButtonItem *item, HWND hwndDlg, struct TWindowData *dat, HWND hwndItem); + TCHAR *tszTip; +}; + +#define FONTF_BOLD 1 +#define FONTF_ITALIC 2 +#define FONTF_UNDERLINE 4 +#define FONTF_STRIKEOUT 8 + +#define RTFCACHELINESIZE 128 + +#define ID_EXTBKCONTAINER 0 +#define ID_EXTBKBUTTONBAR 1 +#define ID_EXTBKBUTTONSPRESSED 2 +#define ID_EXTBKBUTTONSNPRESSED 3 +#define ID_EXTBKBUTTONSMOUSEOVER 4 +#define ID_EXTBKINFOPANEL 5 +#define ID_EXTBKTITLEBUTTON 6 +#define ID_EXTBKTITLEBUTTONMOUSEOVER 7 +#define ID_EXTBKTITLEBUTTONPRESSED 8 +#define ID_EXTBKTABPAGE 9 +#define ID_EXTBKTABITEM 10 +#define ID_EXTBKTABITEMACTIVE 11 +#define ID_EXTBKTABITEMBOTTOM 12 +#define ID_EXTBKTABITEMACTIVEBOTTOM 13 +#define ID_EXTBKFRAME 14 +#define ID_EXTBKHISTORY 15 +#define ID_EXTBKINPUTAREA 16 +#define ID_EXTBKFRAMEINACTIVE 17 +#define ID_EXTBKTABITEMHOTTRACK 18 +#define ID_EXTBKTABITEMHOTTRACKBOTTOM 19 +#define ID_EXTBKSTATUSBARPANEL 20 +#define ID_EXTBKSTATUSBAR 21 +#define ID_EXTBKUSERLIST 22 +#define ID_EXTBKINFOPANELBG 23 +#define ID_EXTBKSIDEBARBG 24 +#define ID_EXTBK_LAST 24 + +#define SESSIONTYPE_ANY 0 +#define SESSIONTYPE_IM 1 +#define SESSIONTYPE_CHAT 2 + +#define DEFAULT_SIDEBARWIDTH 30 + +#define THEME_READ_FONTS 1 +#define THEME_READ_TEMPLATES 2 +#define THEME_READ_ALL (THEME_READ_FONTS | THEME_READ_TEMPLATES) + +#define IDC_TBFIRSTUID 10000 // first uId for custom buttons + +#include "templates.h" + +struct TStatusBarIconNode { + TStatusBarIconNode* next; + StatusIconData sid; +}; + +struct TABSRMM_SessionInfo { + unsigned int cbSize; + unsigned short evtCode; + HWND hwnd; // handle of the message dialog (tab) + HWND hwndContainer; // handle of the parent container + HWND hwndInput; // handle of the input area (rich edit) + UINT extraFlags; + UINT extraFlagsEX; + void *local; +}; + +typedef struct { + int cbSize; + HANDLE hContact; + int uFlags; // should be same as input data unless 0, then it will be the actual type + HWND hwndWindow; //top level window for the contact or NULL if no window exists + int uState; // see window states + void *local; // used to store pointer to custom data +} MessageWindowOutputData; + +#define MS_MSG_GETWINDOWDATA "MessageAPI/GetWindowData" +//wparam=(MessageWindowInputData*) +//lparam=(MessageWindowData*) +//returns 0 on success and returns non-zero (1) on error or if no window data exists for that hcontact + +// callback for the user menu entry + +#define MS_TABMSG_SETUSERPREFS "SRMsg_MOD/SetUserPrefs" +#define MS_TABMSG_SLQMGR "SRMsg_MOD/InvokeQmgr" + +// show one of the tray menus +// wParam = 0 -> session list +// wParam = 1 -> tray menu +// lParam must be 0 +#define MS_TABMSG_TRAYSUPPORT "SRMsg_MOD/Show_TrayMenu" + +/* + * the service which processes globally registered hotkeys + */ +#define MS_TABMSG_HOTKEYPROCESS "SRMsg_MOD/ProcessHotkey" + +#define MBF_DISABLED 0x01 + +#define TEMPLATES_MODULE "tabSRMM_Templates" +#define RTLTEMPLATES_MODULE "tabSRMM_RTLTemplates" + +//Checks if there is a message window opened +//wParam=(LPARAM)(HANDLE)hContact - handle of the contact for which the window is searched. ignored if lParam +//is not zero. +//lParam=(LPARAM)(HWND)hwnd - a window handle - SET THIS TO 0 if you want to obtain the window handle +//from the hContact. +#define MS_MSG_MOD_MESSAGEDIALOGOPENED "SRMsg_MOD/MessageDialogOpened" + +//obtain the message window flags +//wParam = hContact - ignored if lParam is given. +//lParam = hwnd +//returns struct MessageWindowData *dat, 0 if no window is found +#define MS_MSG_MOD_GETWINDOWFLAGS "SRMsg_MOD/GetWindowFlags" + +// custom tabSRMM events + +#define tabMSG_WINDOW_EVT_CUSTOM_BEFORESEND 1 + + +/* temporary HPP API for emulating message log */ + +#define MS_HPP_EG_WINDOW "History++/ExtGrid/NewWindow" +#define MS_HPP_EG_EVENT "History++/ExtGrid/Event" +#define MS_HPP_EG_UTILS "History++/ExtGrid/Utils" +#define MS_HPP_EG_OPTIONSCHANGED "History++/ExtGrid/OptionsChanged" +#define MS_HPP_EG_NOTIFICATION "History++/ExtGrid/Notification" + +#define SB_CHAR_WIDTH 45 // default width for status bar panel #2 +#define DEFAULT_CONTAINER_POS 0x00400040 // default container position and size +#define DEFAULT_CONTAINER_SIZE 0x019001f4 + +/* + * core hotkey service ids + */ + +#define TABSRMM_HK_LASTUNREAD 2 +#define TABSRMM_HK_LASTRECENT 4 +#define TABSRMM_HK_PASTEANDSEND 8 +#define TABSRMM_HK_SETUSERPREFS 9 +#define TABSRMM_HK_CONTAINEROPTIONS 10 +#define TABSRMM_HK_NUDGE 11 +#define TABSRMM_HK_SENDFILE 12 +#define TABSRMM_HK_QUOTEMSG 13 +#define TABSRMM_HK_SEND 14 +#define TABSRMM_HK_EMOTICONS 15 +#define TABARMM_HK_TOGGLEINFOPANEL 16 +#define TABSRMM_HK_HISTORY 17 +#define TABSRMM_HK_TOGGLETOOLBAR 18 +#define TABSRMM_HK_TOGGLEMULTISEND 19 +#define TABSRMM_HK_TOGGLERTL 20 +#define TABSRMM_HK_USERMENU 21 +#define TABSRMM_HK_USERDETAILS 22 +#define TABSRMM_HK_TOGGLEINFOPANEL 23 +#define TABSRMM_HK_CLEARLOG 24 +#define TABSRMM_HK_EDITNOTES 25 +#define TABSRMM_HK_TOGGLESENDLATER 26 +#define TABSRMM_HK_TOGGLESIDEBAR 27 +#define TABSRMM_HK_CHANNELMGR 28 +#define TABSRMM_HK_FILTERTOGGLE 29 +#define TABSRMM_HK_LISTTOGGLE 30 +#define TABSRMM_HK_MUC_SHOWSERVER 31 + +#define TABSRMM_HK_SECTION_IM "Message windows - IM" +#define TABSRMM_HK_SECTION_GENERIC "Message windows - all" +#define TABSRMM_HK_SECTION_GC "Message windows - groupchats" + +/* + * encryption status bar indicator + */ + +// extern HANDLE hHookIconPressedEvt; +extern int status_icon_list_size; + +int SI_InitStatusIcons(); +int SI_DeinitStatusIcons(); + +int GetStatusIconsCount(); +void DrawStatusIcons(struct TWindowData *dat, HDC hdc, RECT r, int gap); +void SI_CheckStatusIconClick(struct TWindowData *dat, HWND hwndFrom, POINT pt, RECT rc, int gap, int code); + +typedef struct _tagSKINDesc { + ULONG ulID; // resource id + TCHAR tszName[30]; +} SKINDESC; + +#define SKIN_NR_ELEMENTS 6 +#define SKIN_VERSION 2 + +/* + * icon defintions (index into g_buttonBarIcons) + */ + +#define ICON_DEFAULT_SOUNDS 22 +#define ICON_DEFAULT_PULLDOWN 16 +#define ICON_DEFAULT_LEFT 25 +#define ICON_DEFAULT_RIGHT 28 +#define ICON_DEFAULT_UP 26 +#define ICON_DEFAULT_TYPING 5 + +#define ICON_BUTTON_ADD 0 +#define ICON_BUTTON_CANCEL 6 +#define ICON_BUTTON_SAVE 7 + +#endif /* _MSGS_H */ + + -- cgit v1.2.3