work on CPasswordDlg (still incomplete),
removed CChangeKeyDlg git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@55 b624d157-de02-0410-bad0-e51aec6abb33
This commit is contained in:
@@ -1,235 +0,0 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2005 by Tarek Saidi *
|
||||
* tarek@linux *
|
||||
* *
|
||||
* 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 "main.h"
|
||||
#include "PwmConfig.h"
|
||||
#include "PwManager.h"
|
||||
#include "../lib/random.h"
|
||||
#include "ChangeKeyDlg.h"
|
||||
//QT
|
||||
#include <qlineedit.h>
|
||||
#include <qcombobox.h>
|
||||
#include <qpushbutton.h>
|
||||
#include <qcheckbox.h>
|
||||
#include <qdir.h>
|
||||
#include <q3filedialog.h>
|
||||
#include <qmessagebox.h>
|
||||
|
||||
|
||||
|
||||
CChangeKeyDlg::CChangeKeyDlg(QWidget* parent,PwDatabase* _db,const char* name, bool modal, Qt::WFlags fl)
|
||||
: QDialog(parent,name, modal,fl)
|
||||
{
|
||||
setupUi(this);
|
||||
connect( ButtonOK, SIGNAL( clicked() ), this, SLOT( OnOK() ) );
|
||||
connect( ButtonCancel, SIGNAL( clicked() ), this, SLOT( OnCancel() ) );
|
||||
connect( Button_Browse, SIGNAL( clicked() ), this, SLOT( OnBrowse() ) );
|
||||
connect( Edit_Password, SIGNAL( textChanged(const QString&) ), this, SLOT( OnPasswordChanged(const QString&) ) );
|
||||
connect( Edit_Password_2, SIGNAL( textChanged(const QString&) ), this, SLOT( OnPassword2Changed(const QString&) ) );
|
||||
connect( Combo_Dirs, SIGNAL( activated(int) ), this, SLOT( OnComboChanged(int) ) );
|
||||
connect( CheckBox_Both, SIGNAL( stateChanged(int) ), this, SLOT( OnCheckBoxChanged(int) ) );
|
||||
connect( ButtonChangeEchoMode, SIGNAL( clicked() ), this, SLOT( ChangeEchoMode() ) );
|
||||
|
||||
db=_db;
|
||||
createBanner(Banner,Icon_Key32x32,tr("Change Master Key"));
|
||||
if(!config.ShowPasswords)ChangeEchoMode();
|
||||
///@PlatformSpecific
|
||||
QDir media("/media");
|
||||
if(media.exists()){
|
||||
Paths=media.entryList("*",QDir::Dirs);
|
||||
Paths.erase(Paths.begin()); // delete "."
|
||||
Paths.erase(Paths.begin()); // delete ".."
|
||||
|
||||
for(int i=0;i<Paths.count();i++){
|
||||
Paths[i]="/media/"+Paths[i];
|
||||
}
|
||||
Paths.prepend("< none >");
|
||||
}
|
||||
for(int i=0;i<Paths.count();i++){
|
||||
Combo_Dirs->insertItem(0,Paths[i]);
|
||||
IsFile.append(false);
|
||||
}
|
||||
}
|
||||
|
||||
CChangeKeyDlg::~CChangeKeyDlg()
|
||||
{
|
||||
}
|
||||
|
||||
void CChangeKeyDlg::OnOK()
|
||||
{
|
||||
if(CheckBox_Both->isChecked()){
|
||||
if(password==""){QMessageBox::warning(this,tr("Error"),tr("Please enter a password.")
|
||||
,tr("OK"),"","",0,0);
|
||||
return;}
|
||||
if(keyfile==""){QMessageBox::warning(this,tr("Error"),tr("Please choose a key file.")
|
||||
,tr("OK"),"","",0,0);
|
||||
return;}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(password=="" && keyfile==""){QMessageBox::warning(this,tr("Error"),tr("Please select a key file or enter a password.")
|
||||
,tr("OK"),"","",0,0);
|
||||
return;}
|
||||
}
|
||||
|
||||
Q_UINT8 file_key[32]={0};
|
||||
Q_UINT8 pw_key[32]={0};
|
||||
|
||||
if(keyfile!=""){
|
||||
QFile file(keyfile);
|
||||
if(file.exists()){
|
||||
int r=QMessageBox::warning(this,tr("Overwrite?"),tr("A key file with this name already exists.\nDo you want to replace it?"),"Yes","No",NULL,1,1);
|
||||
if(r==1)return;}
|
||||
getRandomBytes(file_key,1,32,true);
|
||||
if(file.open(QIODevice::WriteOnly | QIODevice::Truncate)==false){
|
||||
QMessageBox::critical(this,tr("Error"),tr("Could not open key file for writing."),"OK",0,0,2,1);
|
||||
return;
|
||||
}
|
||||
if(file.writeBlock((char*)file_key,32)!=32){
|
||||
file.close();
|
||||
QMessageBox::critical(this,tr("Error"),tr("Key file could not be written."),"OK",0,0,2,1);
|
||||
return;
|
||||
}
|
||||
file.close();
|
||||
}
|
||||
|
||||
if(CheckBox_Both->isChecked() || keyfile==""){
|
||||
if(password!=Edit_Password_2->text()){
|
||||
QMessageBox::critical(this,tr("Error"),tr("Password and password repetition are not equal.\nPlease check your input."));
|
||||
return;}}
|
||||
|
||||
if(CheckBox_Both->isChecked())db->CalcMasterKeyByFileAndPw(keyfile, password);
|
||||
else if(password=="")db->CalcMasterKeyByFile(keyfile);
|
||||
else if(keyfile==""){db->CalcMasterKeyByPassword(password);}
|
||||
|
||||
done(1);
|
||||
}
|
||||
|
||||
void CChangeKeyDlg::OnSelect()
|
||||
{
|
||||
if(Button_Browse->isEnabled()){
|
||||
keyfile=Q3FileDialog::getSaveFileName(QDir::homeDirPath(),"",this,tr("Open key file"));
|
||||
if(keyfile=="")return;
|
||||
Combo_Dirs->insertItem(keyfile);
|
||||
Combo_Dirs->setCurrentItem(Combo_Dirs->count()-1);
|
||||
if(!CheckBox_Both->isChecked()){
|
||||
Edit_Password->setDisabled(true);
|
||||
Edit_Password->setText("");
|
||||
password="";
|
||||
}
|
||||
Paths.append(keyfile);
|
||||
IsFile.append(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CChangeKeyDlg::OnBrowse()
|
||||
{
|
||||
QString dir=Q3FileDialog::getExistingDirectory(QDir::homeDirPath(),NULL,tr("Choose Directory"));
|
||||
if(dir=="")return;
|
||||
keyfile=dir+"/pwsafe.key";
|
||||
Combo_Dirs->insertItem(dir);
|
||||
Combo_Dirs->setCurrentItem(Combo_Dirs->count()-1);
|
||||
if(!CheckBox_Both->isChecked()){
|
||||
Edit_Password->setDisabled(true);
|
||||
Edit_Password_2->setDisabled(true);
|
||||
Edit_Password->setText("");
|
||||
Edit_Password_2->setText("");
|
||||
password="";
|
||||
}
|
||||
Paths.append(dir);
|
||||
IsFile.append(false);
|
||||
}
|
||||
|
||||
|
||||
void CChangeKeyDlg::OnCancel()
|
||||
{
|
||||
done(0);
|
||||
}
|
||||
|
||||
void CChangeKeyDlg::OnPasswordChanged(const QString& str)
|
||||
{
|
||||
if(str!="" && !(CheckBox_Both->isChecked())){
|
||||
Combo_Dirs->setDisabled(true);
|
||||
Button_Browse->setDisabled(true);}
|
||||
else{
|
||||
Combo_Dirs->setEnabled(true);
|
||||
Button_Browse->setEnabled(true);}
|
||||
Edit_Password_2->setText("");
|
||||
password=str;
|
||||
}
|
||||
|
||||
void CChangeKeyDlg::OnPassword2Changed(const QString& str)
|
||||
{
|
||||
}
|
||||
|
||||
void CChangeKeyDlg::OnComboChanged(int i)
|
||||
{
|
||||
if(i==0){
|
||||
keyfile="";
|
||||
Edit_Password->setEnabled(true);
|
||||
Edit_Password_2->setEnabled(true);
|
||||
return;
|
||||
}
|
||||
if(IsFile[i]==true)keyfile=Paths[i];
|
||||
else keyfile=Paths[i]+"/pwsafe.key";
|
||||
|
||||
if(!CheckBox_Both->isChecked()){
|
||||
Edit_Password->setText("");
|
||||
Edit_Password->setDisabled(true);
|
||||
Edit_Password_2->setText("");
|
||||
Edit_Password_2->setDisabled(true);}
|
||||
|
||||
}
|
||||
|
||||
void CChangeKeyDlg::OnCheckBoxChanged(int i)
|
||||
{
|
||||
if(i==QCheckBox::NoChange)return;
|
||||
if(i==QCheckBox::On){
|
||||
Combo_Dirs->setEnabled(true);
|
||||
Button_Browse->setEnabled(true);
|
||||
Edit_Password->setEnabled(true);
|
||||
Edit_Password_2->setEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
void CChangeKeyDlg::ChangeEchoMode()
|
||||
{
|
||||
if(Edit_Password->echoMode()==QLineEdit::Normal){
|
||||
Edit_Password->setEchoMode(QLineEdit::Password);
|
||||
Edit_Password_2->setEchoMode(QLineEdit::Password);
|
||||
}
|
||||
else
|
||||
{
|
||||
Edit_Password->setEchoMode(QLineEdit::Normal);
|
||||
Edit_Password_2->setEchoMode(QLineEdit::Normal);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*$SPECIALIZATION$*/
|
||||
|
||||
|
||||
//#include "changekeydlg.moc"
|
||||
|
||||
@@ -1,71 +0,0 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2005 by Tarek Saidi *
|
||||
* tarek@linux *
|
||||
* *
|
||||
* 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 _CHANGEKEYDLG_H_
|
||||
#define _CHANGEKEYDLG_H_
|
||||
#include "ui_ChangeKeyDlg.h"
|
||||
#include <qstringlist.h>
|
||||
#include <q3valuelist.h>
|
||||
#include <qfile.h>
|
||||
#include "main.h"
|
||||
#include "PwManager.h"
|
||||
|
||||
class CChangeKeyDlg : public QDialog, public Ui_ChangeKeyDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
CChangeKeyDlg(QWidget* parent,PwDatabase* db, const char* name = 0, bool modal = FALSE, Qt::WFlags fl = 0 );
|
||||
~CChangeKeyDlg();
|
||||
/*$PUBLIC_FUNCTIONS$*/
|
||||
|
||||
public slots:
|
||||
/*$PUBLIC_SLOTS$*/
|
||||
|
||||
protected:
|
||||
/*$PROTECTED_FUNCTIONS$*/
|
||||
|
||||
protected slots:
|
||||
/*$PROTECTED_SLOTS$*/
|
||||
|
||||
public slots:
|
||||
virtual void OnSelect();
|
||||
virtual void OnBrowse();
|
||||
virtual void OnCancel();
|
||||
virtual void OnOK();
|
||||
virtual void OnComboChanged(int i);
|
||||
virtual void OnCheckBoxChanged(int i);
|
||||
virtual void OnPasswordChanged(const QString& str);
|
||||
virtual void OnPassword2Changed(const QString& str);
|
||||
virtual void ChangeEchoMode();
|
||||
|
||||
|
||||
private:
|
||||
PwDatabase* db;
|
||||
QStringList Paths;
|
||||
Q3ValueList<bool> IsFile;
|
||||
|
||||
public:
|
||||
QString keyfile;
|
||||
QFile* pKeyFile;
|
||||
QString password;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -196,9 +196,35 @@ done(1);
|
||||
}
|
||||
|
||||
void CPasswordDialog::OnOK_Set(){
|
||||
password=Edit_Password->text();
|
||||
keyfile=Combo_Dirs->currentText();
|
||||
if(password=="" && keyfile==""){
|
||||
QMessageBox::warning(this,tr("Error"),tr("Please enter a Password or select a key file."),tr("OK"),"","",0,0);
|
||||
return;}
|
||||
|
||||
|
||||
|
||||
QFile file(keyfile);
|
||||
if(QFileInfo(file).isDir()){
|
||||
if(keyfile.right(1)!="/")keyfile+="/";
|
||||
QFile file(keyfile+"pwsafe.key");
|
||||
if(file.exists()){
|
||||
int r=QMessageBox::warning(this,tr("Warning"),tr("A file with the name 'pwsafe.key' already exisits in the given directory.\nDo you want to replace it?"),tr("Yes"),tr("No"),"",1,1);
|
||||
if(r)return;
|
||||
if(!QFileInfo(file).isWritable()){
|
||||
QMessageBox::warning(this,tr("Error"),tr("The exisiting file is not writable."),tr("OK"),"","",0,0);
|
||||
return;}
|
||||
}
|
||||
keyfile+="pwsafe.key";
|
||||
}else{
|
||||
QFile file(keyfile);
|
||||
if(file.exists()){
|
||||
int r=QMessageBox::warning(this,tr("Warning"),tr("A file with the this name already exisits.\nDo you want to replace it?"),tr("Yes"),tr("No"),"",1,1);
|
||||
if(r)return;
|
||||
if(!QFileInfo(file).isWritable()){
|
||||
QMessageBox::warning(this,tr("Error"),tr("The exisiting file is not writable."),tr("OK"),"","",0,0);
|
||||
return;}
|
||||
}
|
||||
}
|
||||
done(1);
|
||||
}
|
||||
|
||||
void CPasswordDialog::OnPasswordChanged(const QString &txt){
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <qlineedit.h>
|
||||
#include <qpushbutton.h>
|
||||
#include "main.h"
|
||||
#include "PwmConfig.h"
|
||||
#include "SimplePasswordDlg.h"
|
||||
|
||||
CSimplePasswordDialog::CSimplePasswordDialog(QWidget* parent, const char* name, bool modal, Qt::WFlags fl)
|
||||
|
||||
Reference in New Issue
Block a user