diff options
Diffstat (limited to 'plugins/UserInfoEx/psp_base.cpp')
-rw-r--r-- | plugins/UserInfoEx/psp_base.cpp | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/plugins/UserInfoEx/psp_base.cpp b/plugins/UserInfoEx/psp_base.cpp new file mode 100644 index 0000000000..0762178e96 --- /dev/null +++ b/plugins/UserInfoEx/psp_base.cpp @@ -0,0 +1,111 @@ +/*
+UserinfoEx plugin for Miranda IM
+
+Copyright:
+ฉ 2006-2010 DeathAxe, Yasnovidyashii, Merlin, K. Romanov, Kreol
+
+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.
+
+===============================================================================
+
+File name : $HeadURL: https://userinfoex.googlecode.com/svn/trunk/psp_base.cpp $
+Revision : $Revision: 187 $
+Last change on : $Date: 2010-09-08 16:05:54 +0400 (ะกั, 08 ัะตะฝ 2010) $
+Last change by : $Author: ing.u.horn $
+
+===============================================================================
+*/
+#include "commonheaders.h"
+#include "ctrl_base.h"
+
+VOID UpDate_CountryIcon(HWND hCtrl, int countryID) {
+ HICON hIcon = LoadFlagIcon(countryID);
+ HICON hOld = Static_SetIcon(hCtrl, hIcon);
+ ShowWindow(hCtrl, hIcon ? SW_SHOW : SW_HIDE);
+ CallService(MS_SKIN2_RELEASEICON, (WPARAM)hOld, 0);
+}
+
+/**
+ * Default dialog procedure, which handles common functions
+ **/
+INT_PTR CALLBACK PSPBaseProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ CCtrlList *pCtrlList;
+
+ pCtrlList = CCtrlList::GetObj(hDlg);
+ if (PtrIsValid(pCtrlList)) {
+ switch (uMsg) {
+ case WM_INITDIALOG: return TRUE;
+
+ /**
+ * set propertysheet page's background white in aero mode
+ **/
+ case WM_CTLCOLORSTATIC:
+ case WM_CTLCOLORDLG: {
+ if (IsAeroMode())
+ return (INT_PTR)GetStockBrush(WHITE_BRUSH);
+ } break;
+
+ /**
+ * Set text color of edit boxes according to the source of information they display.
+ **/
+ case WM_CTLCOLOREDIT:
+ return pCtrlList->OnSetTextColour((HWND)lParam, (HDC)wParam);
+
+ case WM_NOTIFY:
+ {
+ switch (((LPNMHDR)lParam)->idFrom) {
+ case 0: {
+ HANDLE hContact = (HANDLE)((LPPSHNOTIFY)lParam)->lParam;
+ LPSTR pszProto;
+
+ switch (((LPNMHDR)lParam)->code) {
+ case PSN_RESET: {
+ pCtrlList->OnReset();
+ } break;
+
+ case PSN_INFOCHANGED: {
+ if (PSGetBaseProto(hDlg, pszProto) && *pszProto) {
+ BOOL bChanged = (GetWindowLongPtr(hDlg, DWLP_MSGRESULT)&PSP_CHANGED)|pCtrlList->OnInfoChanged(hContact, pszProto);
+ SetWindowLongPtr(hDlg, DWLP_MSGRESULT, bChanged ? PSP_CHANGED : 0);
+ }
+ } break;
+
+ case PSN_APPLY: {
+ if (PSGetBaseProto(hDlg, pszProto) && *pszProto) {
+ pCtrlList->OnApply(hContact, pszProto);
+ }
+ } break;
+ }
+ } break;
+ }
+ } break;
+
+ case WM_COMMAND:
+ {
+ if (!PspIsLocked(hDlg)) {
+ pCtrlList->OnChangedByUser(LOWORD(wParam), HIWORD(wParam));
+ }
+ } break;
+
+ case WM_DESTROY:
+ {
+ // destroy all control objects and the list
+ pCtrlList->Release();
+ }
+ }
+ }
+ return 0;
+}
|