diff options
Diffstat (limited to 'plugins/Clist_modern/hdr/modern_clui.h')
-rw-r--r-- | plugins/Clist_modern/hdr/modern_clui.h | 193 |
1 files changed, 193 insertions, 0 deletions
diff --git a/plugins/Clist_modern/hdr/modern_clui.h b/plugins/Clist_modern/hdr/modern_clui.h new file mode 100644 index 0000000000..8f9c82797e --- /dev/null +++ b/plugins/Clist_modern/hdr/modern_clui.h @@ -0,0 +1,193 @@ +/*
+
+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.
+*/
+#ifndef modern_clui_h__
+#define modern_clui_h__
+
+#include "windowsX.h"
+#define HANDLE_MESSAGE( _message, _fn) \
+ case (_message): return This->_fn( (_message), (wParam), (lParam) )
+
+class CLUI
+{
+public:
+ static HWND m_hWnd;
+ static CLUI * m_pCLUI;
+ static BOOL m_fMainMenuInited;
+
+private:
+ CLUI(); // is protected use InitClui to initialize instead
+
+public:
+ ~CLUI();
+
+ static HRESULT InitClui() { m_pCLUI = new CLUI(); return S_OK; };
+ static HWND& ClcWnd() { return pcli->hwndContactTree; }
+ static HWND& CluiWnd() { return pcli->hwndContactList; }
+ static CLUI * GetClui() { return m_pCLUI; }
+ static BOOL IsMainMenuInited() { return CLUI::m_fMainMenuInited; }
+
+ CLINTERFACE void cliOnCreateClc();
+
+ EVENTHOOK( OnEvent_ModulesLoaded );
+ EVENTHOOK( OnEvent_ContactMenuPreBuild );
+ EVENTHOOK( OnEvent_DBSettingChanging );
+ EVENTHOOK( OnEvent_FontReload );
+
+ SERVICE( Service_ShowMainMenu );
+ SERVICE( Service_ShowStatusMenu );
+ SERVICE( Service_Menu_ShowContactAvatar );
+ SERVICE( Service_Menu_HideContactAvatar );
+
+ static LRESULT CALLBACK cli_ContactListWndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
+ {
+ CLUI * This = m_pCLUI;
+ if ( !m_hWnd ) m_hWnd = hwnd;
+
+ BOOL bHandled = FALSE;
+ LRESULT lRes= This->PreProcessWndProc( msg, wParam, lParam, bHandled );
+ if ( bHandled ) return lRes;
+
+ switch ( msg )
+ {
+ HANDLE_MESSAGE( WM_NCCREATE, OnNcCreate );
+ HANDLE_MESSAGE( WM_CREATE, OnCreate );
+ HANDLE_MESSAGE( UM_CREATECLC, OnCreateClc );
+ HANDLE_MESSAGE( UM_SETALLEXTRAICONS, OnSetAllExtraIcons );
+ HANDLE_MESSAGE( WM_INITMENU, OnInitMenu );
+ HANDLE_MESSAGE( WM_SIZE, OnSizingMoving );
+ HANDLE_MESSAGE( WM_SIZING, OnSizingMoving );
+ HANDLE_MESSAGE( WM_MOVE, OnSizingMoving );
+ HANDLE_MESSAGE( WM_EXITSIZEMOVE, OnSizingMoving );
+ HANDLE_MESSAGE( WM_WINDOWPOSCHANGING, OnSizingMoving );
+ HANDLE_MESSAGE( WM_DISPLAYCHANGE, OnSizingMoving );
+ HANDLE_MESSAGE( WM_THEMECHANGED, OnThemeChanged );
+ HANDLE_MESSAGE( WM_DWMCOMPOSITIONCHANGED, OnDwmCompositionChanged );
+ HANDLE_MESSAGE( UM_SYNCCALL, OnSyncCall );
+ HANDLE_MESSAGE( UM_UPDATE, OnUpdate );
+ HANDLE_MESSAGE( WM_NCACTIVATE, OnNcPaint );
+ HANDLE_MESSAGE( WM_PRINT, OnNcPaint );
+ HANDLE_MESSAGE( WM_NCPAINT, OnNcPaint );
+ HANDLE_MESSAGE( WM_ERASEBKGND, OnEraseBkgnd );
+ HANDLE_MESSAGE( WM_PAINT, OnPaint );
+ HANDLE_MESSAGE( WM_LBUTTONDOWN, OnLButtonDown );
+ HANDLE_MESSAGE( WM_PARENTNOTIFY, OnParentNotify );
+ HANDLE_MESSAGE( WM_SETFOCUS, OnSetFocus );
+ HANDLE_MESSAGE( WM_TIMER, OnTimer );
+ HANDLE_MESSAGE( WM_ACTIVATE, OnActivate );
+ HANDLE_MESSAGE( WM_SETCURSOR, OnSetCursor );
+ HANDLE_MESSAGE( WM_MOUSEACTIVATE, OnMouseActivate );
+ HANDLE_MESSAGE( WM_NCLBUTTONDOWN, OnNcLButtonDown );
+ HANDLE_MESSAGE( WM_NCLBUTTONDBLCLK, OnNcLButtonDblClk );
+ HANDLE_MESSAGE( WM_NCHITTEST, OnNcHitTest );
+ HANDLE_MESSAGE( WM_SHOWWINDOW, OnShowWindow );
+ HANDLE_MESSAGE( WM_SYSCOMMAND, OnSysCommand );
+ HANDLE_MESSAGE( WM_KEYDOWN, OnKeyDown );
+ HANDLE_MESSAGE( WM_GETMINMAXINFO, OnGetMinMaxInfo );
+ HANDLE_MESSAGE( WM_MOVING, OnMoving );
+ HANDLE_MESSAGE( WM_NOTIFY, OnNotify );
+ HANDLE_MESSAGE( WM_CONTEXTMENU, OnContextMenu );
+ HANDLE_MESSAGE( WM_MEASUREITEM, OnMeasureItem );
+ HANDLE_MESSAGE( WM_DRAWITEM, OnDrawItem );
+ HANDLE_MESSAGE( WM_DESTROY, OnDestroy );
+ default:
+ return This->DefCluiWndProc( msg, wParam, lParam );
+ }
+ return FALSE;
+ }
+
+
+ //////////////////////////////////////////////////////////////////////////
+ // METHODS
+ //
+private:
+ HRESULT CreateCLC();
+ HRESULT FillAlphaChannel( HDC hDC, RECT* prcParent, BYTE bAlpha);
+ HRESULT SnappingToEdge( WINDOWPOS * lpWindowPos );
+ HRESULT LoadDllsRuntime();
+ HRESULT RegisterAvatarMenu(); // TODO move to CLC class
+ HRESULT CreateCluiFrames();
+ HRESULT CreateCLCWindow(const HWND parent);
+ HRESULT CreateUIFrames();
+
+ LRESULT DefCluiWndProc( UINT msg, WPARAM wParam, LPARAM lParam )
+ {
+ return corecli.pfnContactListWndProc( m_hWnd, msg, wParam, lParam );
+ }
+
+ // MessageMap
+ LRESULT PreProcessWndProc( UINT msg, WPARAM wParam, LPARAM lParam, BOOL& bHandled );
+ LRESULT OnSizingMoving( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnThemeChanged( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnDwmCompositionChanged( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnSyncCall( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnUpdate( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnInitMenu( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnNcPaint( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnEraseBkgnd( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnNcCreate( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnPaint( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnCreate( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnSetAllExtraIcons( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnCreateClc( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnLButtonDown( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnParentNotify( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnSetFocus( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnTimer( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnStatusBarUpdateTimer( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnAutoAlphaTimer( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnSmoothAlphaTransitionTimer( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnDelayedSizingTimer( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnBringOutTimer( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnBringInTimer( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnUpdateBringTimer( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnActivate( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnSetCursor( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnMouseActivate( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnNcLButtonDown( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnNcLButtonDblClk( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnNcHitTest( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnShowWindow( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnSysCommand( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnKeyDown( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnGetMinMaxInfo( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnMoving( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnNotify( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnNewContactNotify( NMCLISTCONTROL * pnmc );
+ LRESULT OnListRebuildNotify( NMCLISTCONTROL * pnmc );
+ LRESULT OnListSizeChangeNotify( NMCLISTCONTROL * pnmc );
+ LRESULT OnClickNotify( NMCLISTCONTROL * pnmc );
+ LRESULT OnContextMenu( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnMeasureItem( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnDrawItem( UINT msg, WPARAM wParam, LPARAM lParam );
+ LRESULT OnDestroy( UINT msg, WPARAM wParam, LPARAM lParam );
+
+protected:
+ HMODULE m_hDwmapiDll;
+ HMODULE m_hUserDll;
+
+ enum { SNAPTOEDGESENSIVITY = 30 };
+};
+
+#endif // modern_clui_h__
\ No newline at end of file |