diff options
Diffstat (limited to 'protocols/JabberG/jabber_password.cpp')
-rw-r--r-- | protocols/JabberG/jabber_password.cpp | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/protocols/JabberG/jabber_password.cpp b/protocols/JabberG/jabber_password.cpp new file mode 100644 index 0000000000..dd5ae36266 --- /dev/null +++ b/protocols/JabberG/jabber_password.cpp @@ -0,0 +1,103 @@ +/*
+
+Jabber Protocol Plugin for Miranda IM
+Copyright ( C ) 2002-04 Santithorn Bunchua
+Copyright ( C ) 2005-11 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.
+
+Revision : $Revision: 13452 $
+Last change on : $Date: 2011-03-17 21:12:56 +0200 (Чт, 17 мар 2011) $
+Last change by : $Author: george.hazan $
+
+*/
+
+#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;
+}
|