1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
/*
Jabber Protocol Plugin for Miranda IM
Copyright ( C ) 2002-04 Santithorn Bunchua
Copyright ( C ) 2005-12 George Hazan
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.
*/
#include "jabber.h"
#include "jabber_iq.h"
#include "jabber_caps.h"
static INT_PTR CALLBACK JabberChangePasswordDlgProc( HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam );
INT_PTR __cdecl CJabberProto::OnMenuHandleChangePassword( WPARAM, LPARAM )
{
if ( IsWindow( m_hwndJabberChangePassword ))
SetForegroundWindow( m_hwndJabberChangePassword );
else
m_hwndJabberChangePassword = CreateDialogParam( hInst, MAKEINTRESOURCE( IDD_CHANGEPASSWORD ), NULL, JabberChangePasswordDlgProc, ( LPARAM )this );
return 0;
}
static INT_PTR CALLBACK JabberChangePasswordDlgProc( HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam )
{
CJabberProto* ppro = (CJabberProto*)GetWindowLongPtr( hwndDlg, GWLP_USERDATA );
switch ( msg ) {
case WM_INITDIALOG:
ppro = (CJabberProto*)lParam;
SetWindowLongPtr( hwndDlg, GWLP_USERDATA, ( LONG_PTR )lParam );
WindowSetIcon( hwndDlg, ppro, "key" );
TranslateDialogDefault( hwndDlg );
if ( ppro->m_bJabberOnline && ppro->m_ThreadInfo!=NULL ) {
TCHAR text[1024];
mir_sntprintf( text, SIZEOF( text ), _T("%s %s@") _T(TCHAR_STR_PARAM), TranslateT( "Set New Password for" ), ppro->m_ThreadInfo->username, ppro->m_ThreadInfo->server );
SetWindowText( hwndDlg, text );
}
return TRUE;
case WM_COMMAND:
switch ( LOWORD( wParam )) {
case IDOK:
if ( ppro->m_bJabberOnline && ppro->m_ThreadInfo!=NULL ) {
TCHAR newPasswd[512], text[512];
GetDlgItemText( hwndDlg, IDC_NEWPASSWD, newPasswd, SIZEOF( newPasswd ));
GetDlgItemText( hwndDlg, IDC_NEWPASSWD2, text, SIZEOF( text ));
if ( _tcscmp( newPasswd, text )) {
MessageBox( hwndDlg, TranslateT( "New password does not match." ), TranslateT( "Change Password" ), MB_OK|MB_ICONSTOP|MB_SETFOREGROUND );
break;
}
GetDlgItemText( hwndDlg, IDC_OLDPASSWD, text, SIZEOF( text ));
if ( _tcscmp( text, ppro->m_ThreadInfo->password )) {
MessageBox( hwndDlg, TranslateT( "Current password is incorrect." ), TranslateT( "Change Password" ), MB_OK|MB_ICONSTOP|MB_SETFOREGROUND );
break;
}
_tcsncpy( ppro->m_ThreadInfo->newPassword, newPasswd, SIZEOF( ppro->m_ThreadInfo->newPassword ));
int iqId = ppro->SerialNext();
ppro->IqAdd( iqId, IQ_PROC_NONE, &CJabberProto::OnIqResultSetPassword );
XmlNodeIq iq( _T("set"), iqId, _A2T(ppro->m_ThreadInfo->server));
HXML q = iq << XQUERY( _T(JABBER_FEAT_REGISTER));
q << XCHILD( _T("username"), ppro->m_ThreadInfo->username );
q << XCHILD( _T("password"), newPasswd );
ppro->m_ThreadInfo->send( iq );
}
DestroyWindow( hwndDlg );
break;
case IDCANCEL:
DestroyWindow( hwndDlg );
break;
}
break;
case WM_CLOSE:
DestroyWindow( hwndDlg );
break;
case WM_DESTROY:
ppro->m_hwndJabberChangePassword = NULL;
WindowFreeIcon( hwndDlg );
break;
}
return FALSE;
}
|