diff options
Diffstat (limited to 'plugins/UserInfoEx/src/psp_origin.cpp')
-rw-r--r-- | plugins/UserInfoEx/src/psp_origin.cpp | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/plugins/UserInfoEx/src/psp_origin.cpp b/plugins/UserInfoEx/src/psp_origin.cpp new file mode 100644 index 0000000000..3859a4e7bc --- /dev/null +++ b/plugins/UserInfoEx/src/psp_origin.cpp @@ -0,0 +1,176 @@ +/*
+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_origin.cpp $
+Revision : $Revision: 191 $
+Last change on : $Date: 2010-09-20 13:52:01 +0400 (Пн, 20 сен 2010) $
+Last change by : $Author: ing.u.horn $
+
+===============================================================================
+*/
+
+/**
+ * System Includes:
+ **/
+#include "commonheaders.h"
+#include "ctrl_combo.h"
+#include "ctrl_edit.h"
+#include "ctrl_tzcombo.h"
+#include "psp_base.h"
+#include "svc_reminder.h"
+
+/**
+ * This is the dialog procedure for the advanced contact information propertysheetpage.
+ *
+ * @param hDlg - handle to the dialog window
+ * @param uMsg - the message to handle
+ * @param wParam - parameter
+ * @param lParam - parameter
+ *
+ * @return different values
+ **/
+INT_PTR CALLBACK PSPProcOrigin(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ switch (uMsg)
+ {
+ case WM_INITDIALOG:
+ {
+ CCtrlList *pCtrlList = CCtrlList::CreateObj(hDlg);
+ if (pCtrlList)
+ {
+ LPIDSTRLIST pList;
+ UINT nList;
+
+ HFONT hBoldFont;
+ PSGetBoldFont(hDlg, hBoldFont);
+ SendDlgItemMessage(hDlg, IDC_PAGETITLE, WM_SETFONT, (WPARAM)hBoldFont, 0);
+
+ TranslateDialogDefault(hDlg);
+ SetTimer(hDlg, 1, 5000, NULL);
+
+ pCtrlList->insert(CEditCtrl::CreateObj(hDlg, EDIT_STREET, SET_CONTACT_ORIGIN_STREET, DBVT_TCHAR));
+ pCtrlList->insert(CEditCtrl::CreateObj(hDlg, EDIT_ZIP, SET_CONTACT_ORIGIN_ZIP, DBVT_TCHAR));
+ pCtrlList->insert(CEditCtrl::CreateObj(hDlg, EDIT_CITY, SET_CONTACT_ORIGIN_CITY, DBVT_TCHAR));
+ pCtrlList->insert(CEditCtrl::CreateObj(hDlg, EDIT_STATE, SET_CONTACT_ORIGIN_STATE, DBVT_TCHAR));
+
+ GetCountryList(&nList, &pList);
+ pCtrlList->insert(CCombo::CreateObj (hDlg, EDIT_COUNTRY, SET_CONTACT_ORIGIN_COUNTRY, DBVT_WORD, pList, nList));
+
+ pCtrlList->insert(CTzCombo::CreateObj(hDlg, EDIT_TIMEZONE, NULL));
+ }
+ }
+ break;
+
+ case WM_NOTIFY:
+ {
+ switch (((LPNMHDR) lParam)->idFrom)
+ {
+ case 0:
+ {
+ HANDLE hContact = (HANDLE)((LPPSHNOTIFY) lParam)->lParam;
+ LPCSTR pszProto;
+
+ switch (((LPNMHDR) lParam)->code)
+ {
+ case PSN_INFOCHANGED:
+ {
+ BYTE bChanged = 0;
+
+ if (!PSGetBaseProto(hDlg, pszProto) || *pszProto == 0) break;
+
+ if (hContact)
+ {
+ MTime mt;
+
+ if (mt.DBGetStamp(hContact, USERINFO, SET_CONTACT_ADDEDTIME) && strstr(pszProto, "ICQ"))
+ {
+ DWORD dwStamp;
+
+ dwStamp = DB::Contact::WhenAdded(DB::Setting::GetDWord(hContact, pszProto, "UIN", 0), pszProto);
+ if (dwStamp > 0)
+ {
+ mt.FromStampAsUTC(dwStamp);
+ }
+ }
+ if (mt.IsValid())
+ {
+ TCHAR szTime[MAX_PATH];
+ LPTSTR ptr;
+
+ mt.UTCToLocal();
+ mt.DateFormatLong(szTime, SIZEOF(szTime));
+
+ _tcscat(szTime, _T(" - "));
+ ptr = szTime + _tcslen(szTime);
+ mt.TimeFormat(ptr, SIZEOF(szTime) - (ptr - szTime));
+ SetDlgItemText(hDlg, TXT_DATEADDED, szTime);
+ }
+ }
+
+ SetWindowLongPtr(hDlg, DWLP_MSGRESULT, bChanged ? PSP_CHANGED : 0);
+ }
+ break;
+
+ case PSN_ICONCHANGED:
+ {
+ const ICONCTRL idIcon[] = {
+ { ICO_COMMON_ADDRESS, STM_SETIMAGE, ICO_ADDRESS },
+ { ICO_COMMON_CLOCK, STM_SETIMAGE, ICO_CLOCK },
+ };
+
+ IcoLib_SetCtrlIcons(hDlg, idIcon, SIZEOF(idIcon));
+ }
+ }
+ }
+ } /* switch (((LPNMHDR)lParam)->idFrom) */
+ }
+ break;
+
+ case WM_COMMAND:
+ {
+ switch (LOWORD(wParam))
+ {
+ case EDIT_COUNTRY:
+ if(HIWORD(wParam) == CBN_SELCHANGE) {
+ LPIDSTRLIST pd = (LPIDSTRLIST)ComboBox_GetItemData((HWND)lParam, ComboBox_GetCurSel((HWND)lParam));
+ UpDate_CountryIcon(GetDlgItem(hDlg, ICO_COUNTRY), pd->nID);
+ }
+ break;
+ }
+ }
+ break;
+
+ case WM_TIMER:
+ {
+ TCHAR szTime[32];
+ CTzCombo::GetObj(hDlg, EDIT_TIMEZONE)->GetTime(szTime, SIZEOF(szTime));
+ SetDlgItemText(hDlg, TXT_TIME, szTime);
+ break;
+ }
+
+ case WM_DESTROY:
+ {
+ KillTimer(hDlg, 1);
+ }
+ }
+ return PSPBaseProc(hDlg, uMsg, wParam, lParam);
+}
|