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:
parent
e0a2197b53
commit
416c7d70d3
|
@ -1065,6 +1065,22 @@ for(i=NumSubGroups; i>=0; i--)
|
||||||
Groups.insert(DstIndex,tmp[i]);
|
Groups.insert(DstIndex,tmp[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool PwDatabase::createKeyFile(const QString& filename){
|
||||||
|
QFile file(filename);
|
||||||
|
if(!file.open(QIODevice::WriteOnly | QIODevice::Truncate)){
|
||||||
|
Errors << tr("Could not open key file.");
|
||||||
|
return false;}
|
||||||
|
char* pKeyData=new char[32];
|
||||||
|
getRandomBytes(pKeyData,32);
|
||||||
|
if(file.write(pKeyData,32)!=32){
|
||||||
|
Errors << tr("Key file could not be written.");
|
||||||
|
file.close();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
file.close();
|
||||||
|
return true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
int PwDatabase::getNumberOfChilds(CGroup* group){
|
int PwDatabase::getNumberOfChilds(CGroup* group){
|
||||||
if(!group)return Groups.size();
|
if(!group)return Groups.size();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
* Copyright (C) 2005 by Tarek Saidi *
|
* Copyright (C) 2005-2006 by Tarek Saidi *
|
||||||
* tarek.saidi@arcor.de *
|
* tarek.saidi@arcor.de *
|
||||||
* *
|
* *
|
||||||
* This program is free software; you can redistribute it and/or modify *
|
* This program is free software; you can redistribute it and/or modify *
|
||||||
|
@ -53,6 +53,7 @@ public:
|
||||||
bool CalcMasterKeyByPassword(QString& password);
|
bool CalcMasterKeyByPassword(QString& password);
|
||||||
bool CalcMasterKeyByFile(QString filename);
|
bool CalcMasterKeyByFile(QString filename);
|
||||||
bool CalcMasterKeyByFileAndPw(QString filename, QString& password);
|
bool CalcMasterKeyByFileAndPw(QString filename, QString& password);
|
||||||
|
bool createKeyFile(const QString& filename);
|
||||||
|
|
||||||
CGroup* addGroup(CGroup* parent);
|
CGroup* addGroup(CGroup* parent);
|
||||||
void deleteGroup(CGroup* pGroup);
|
void deleteGroup(CGroup* pGroup);
|
||||||
|
|
|
@ -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(){
|
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){
|
void CPasswordDialog::OnPasswordChanged(const QString &txt){
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include <qlineedit.h>
|
#include <qlineedit.h>
|
||||||
#include <qpushbutton.h>
|
#include <qpushbutton.h>
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
#include "PwmConfig.h"
|
||||||
#include "SimplePasswordDlg.h"
|
#include "SimplePasswordDlg.h"
|
||||||
|
|
||||||
CSimplePasswordDialog::CSimplePasswordDialog(QWidget* parent, const char* name, bool modal, Qt::WFlags fl)
|
CSimplePasswordDialog::CSimplePasswordDialog(QWidget* parent, const char* name, bool modal, Qt::WFlags fl)
|
||||||
|
|
|
@ -1,264 +0,0 @@
|
||||||
<ui version="4.0" >
|
|
||||||
<author></author>
|
|
||||||
<comment></comment>
|
|
||||||
<exportmacro></exportmacro>
|
|
||||||
<class>ChangeKeyDialog</class>
|
|
||||||
<widget class="QDialog" name="ChangeKeyDialog" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>560</width>
|
|
||||||
<height>270</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="sizePolicy" >
|
|
||||||
<sizepolicy>
|
|
||||||
<hsizetype>0</hsizetype>
|
|
||||||
<vsizetype>0</vsizetype>
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="minimumSize" >
|
|
||||||
<size>
|
|
||||||
<width>560</width>
|
|
||||||
<height>270</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="maximumSize" >
|
|
||||||
<size>
|
|
||||||
<width>560</width>
|
|
||||||
<height>270</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle" >
|
|
||||||
<string>Change Master Key</string>
|
|
||||||
</property>
|
|
||||||
<widget class="QLabel" name="Banner" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>560</width>
|
|
||||||
<height>50</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="sizePolicy" >
|
|
||||||
<sizepolicy>
|
|
||||||
<hsizetype>0</hsizetype>
|
|
||||||
<vsizetype>0</vsizetype>
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="pixmap" >
|
|
||||||
<pixmap/>
|
|
||||||
</property>
|
|
||||||
<property name="scaledContents" >
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="Q3GroupBox" name="groupBox1" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>10</x>
|
|
||||||
<y>80</y>
|
|
||||||
<width>540</width>
|
|
||||||
<height>150</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="title" >
|
|
||||||
<string>Key</string>
|
|
||||||
</property>
|
|
||||||
<property name="orientation" >
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
<widget class="QLineEdit" name="Edit_Password" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>200</x>
|
|
||||||
<y>30</y>
|
|
||||||
<width>310</width>
|
|
||||||
<height>20</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLineEdit" name="Edit_Password_2" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>200</x>
|
|
||||||
<y>60</y>
|
|
||||||
<width>310</width>
|
|
||||||
<height>20</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QCheckBox" name="CheckBox_Both" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>10</x>
|
|
||||||
<y>120</y>
|
|
||||||
<width>521</width>
|
|
||||||
<height>16</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>Use password AND key file</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLabel" name="textLabel3" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>10</x>
|
|
||||||
<y>90</y>
|
|
||||||
<width>191</width>
|
|
||||||
<height>20</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>Key file or directory:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLabel" name="textLabel1_3" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>10</x>
|
|
||||||
<y>60</y>
|
|
||||||
<width>191</width>
|
|
||||||
<height>20</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>Password Repetition:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLabel" name="textLabel2" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>10</x>
|
|
||||||
<y>30</y>
|
|
||||||
<width>191</width>
|
|
||||||
<height>20</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>Password:</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QPushButton" name="ButtonChangeEchoMode" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>510</x>
|
|
||||||
<y>30</y>
|
|
||||||
<width>20</width>
|
|
||||||
<height>20</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>...</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QPushButton" name="Button_Browse" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>450</x>
|
|
||||||
<y>90</y>
|
|
||||||
<width>80</width>
|
|
||||||
<height>22</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>&Browse...</string>
|
|
||||||
</property>
|
|
||||||
<property name="shortcut" >
|
|
||||||
<string>Alt+B</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QComboBox" name="Combo_Dirs" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>201</x>
|
|
||||||
<y>90</y>
|
|
||||||
<width>240</width>
|
|
||||||
<height>21</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLabel" name="textLabel1" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>56</y>
|
|
||||||
<width>450</width>
|
|
||||||
<height>16</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="frameShape" >
|
|
||||||
<enum>QFrame::NoFrame</enum>
|
|
||||||
</property>
|
|
||||||
<property name="frameShadow" >
|
|
||||||
<enum>QFrame::Plain</enum>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>Enter a Password and/or choose a key file.</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QPushButton" name="ButtonCancel" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>457</x>
|
|
||||||
<y>240</y>
|
|
||||||
<width>90</width>
|
|
||||||
<height>26</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>&Cancel</string>
|
|
||||||
</property>
|
|
||||||
<property name="shortcut" >
|
|
||||||
<string>Alt+C</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QPushButton" name="ButtonOK" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>360</x>
|
|
||||||
<y>240</y>
|
|
||||||
<width>90</width>
|
|
||||||
<height>26</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>O&K</string>
|
|
||||||
</property>
|
|
||||||
<property name="shortcut" >
|
|
||||||
<string>Alt+K</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
|
||||||
<layoutdefault spacing="6" margin="11" />
|
|
||||||
<pixmapfunction></pixmapfunction>
|
|
||||||
<customwidgets>
|
|
||||||
<customwidget>
|
|
||||||
<class>Q3GroupBox</class>
|
|
||||||
<extends></extends>
|
|
||||||
<header>Qt3Support/Q3GroupBox</header>
|
|
||||||
<container>1</container>
|
|
||||||
<pixmap></pixmap>
|
|
||||||
</customwidget>
|
|
||||||
</customwidgets>
|
|
||||||
<tabstops>
|
|
||||||
<tabstop>Edit_Password</tabstop>
|
|
||||||
<tabstop>Edit_Password_2</tabstop>
|
|
||||||
<tabstop>Combo_Dirs</tabstop>
|
|
||||||
<tabstop>Button_Browse</tabstop>
|
|
||||||
<tabstop>CheckBox_Both</tabstop>
|
|
||||||
<tabstop>ButtonOK</tabstop>
|
|
||||||
<tabstop>ButtonCancel</tabstop>
|
|
||||||
<tabstop>ButtonChangeEchoMode</tabstop>
|
|
||||||
</tabstops>
|
|
||||||
<resources/>
|
|
||||||
<connections/>
|
|
||||||
</ui>
|
|
|
@ -86,7 +86,7 @@
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="tab" >
|
<widget class="QWidget" name="tab" >
|
||||||
<attribute name="title" >
|
<attribute name="title" >
|
||||||
<string>Securi&try</string>
|
<string>Securi&ty</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
<widget class="QWidget" name="widget" >
|
<widget class="QWidget" name="widget" >
|
||||||
<property name="geometry" >
|
<property name="geometry" >
|
||||||
|
@ -448,27 +448,11 @@
|
||||||
<attribute name="title" >
|
<attribute name="title" >
|
||||||
<string>&Other</string>
|
<string>&Other</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
<widget class="QCheckBox" name="CheckBox_OpenLast" >
|
<widget class="QWidget" name="widget" >
|
||||||
<property name="geometry" >
|
<property name="geometry" >
|
||||||
<rect>
|
<rect>
|
||||||
<x>10</x>
|
<x>10</x>
|
||||||
<y>20</y>
|
<y>70</y>
|
||||||
<width>380</width>
|
|
||||||
<height>20</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="text" >
|
|
||||||
<string>Remember last opend file</string>
|
|
||||||
</property>
|
|
||||||
<property name="shortcut" >
|
|
||||||
<string>Alt+Ö</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QWidget" name="" >
|
|
||||||
<property name="geometry" >
|
|
||||||
<rect>
|
|
||||||
<x>10</x>
|
|
||||||
<y>50</y>
|
|
||||||
<width>531</width>
|
<width>531</width>
|
||||||
<height>58</height>
|
<height>58</height>
|
||||||
</rect>
|
</rect>
|
||||||
|
@ -509,6 +493,35 @@
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
<widget class="QCheckBox" name="CheckBox_OpenLast" >
|
||||||
|
<property name="geometry" >
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>20</y>
|
||||||
|
<width>521</width>
|
||||||
|
<height>20</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text" >
|
||||||
|
<string>Remember last opend file</string>
|
||||||
|
</property>
|
||||||
|
<property name="shortcut" >
|
||||||
|
<string>Alt+Ö</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox" name="CheckBox_RememberKey" >
|
||||||
|
<property name="geometry" >
|
||||||
|
<rect>
|
||||||
|
<x>30</x>
|
||||||
|
<y>40</y>
|
||||||
|
<width>501</width>
|
||||||
|
<height>22</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text" >
|
||||||
|
<string>Remember last key type and location</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
|
|
|
@ -91,18 +91,21 @@ resizeColumns();
|
||||||
e->accept();
|
e->accept();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void KeepassEntryView::updateItems(){
|
||||||
|
updateItems(CurrentGroup);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void KeepassEntryView::updateItems(unsigned int GroupID){
|
void KeepassEntryView::updateItems(unsigned int GroupID){
|
||||||
|
|
||||||
clear();
|
clear();
|
||||||
Items.clear();
|
Items.clear();
|
||||||
if(!db)return;
|
if(!db)return;
|
||||||
if(!GroupID)return;
|
if(!GroupID)return;
|
||||||
|
CurrentGroup=GroupID;
|
||||||
for(int i=0;i<db->Entries.size();i++){
|
for(int i=0;i<db->Entries.size();i++){
|
||||||
if(db->Entries[i].GroupID==GroupID)
|
if(db->Entries[i].GroupID==GroupID)
|
||||||
setEntry(&db->Entries[i]);
|
setEntry(&db->Entries[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeepassEntryView::showSearchResults(QList<Q_UINT32>& results){
|
void KeepassEntryView::showSearchResults(QList<Q_UINT32>& results){
|
||||||
|
|
|
@ -38,8 +38,8 @@ public:
|
||||||
KeepassEntryView(QWidget* parent=0);
|
KeepassEntryView(QWidget* parent=0);
|
||||||
~KeepassEntryView();
|
~KeepassEntryView();
|
||||||
void updateItems(unsigned int group);
|
void updateItems(unsigned int group);
|
||||||
void refreshItems();
|
|
||||||
void updateColumns();
|
void updateColumns();
|
||||||
|
void refreshItems();
|
||||||
void showSearchResults(QList<Q_UINT32>& results);
|
void showSearchResults(QList<Q_UINT32>& results);
|
||||||
PwDatabase* db;
|
PwDatabase* db;
|
||||||
vector<EntryViewItem*>Items;
|
vector<EntryViewItem*>Items;
|
||||||
|
@ -57,14 +57,11 @@ protected:
|
||||||
virtual void contextMenuEvent(QContextMenuEvent *event);
|
virtual void contextMenuEvent(QContextMenuEvent *event);
|
||||||
virtual void paintEvent(QPaintEvent* event);
|
virtual void paintEvent(QPaintEvent* event);
|
||||||
virtual void resizeEvent(QResizeEvent* event);
|
virtual void resizeEvent(QResizeEvent* event);
|
||||||
// virtual void dragEnterEvent ( QDragEnterEvent * event );
|
|
||||||
// virtual void dragMoveEvent ( QDragMoveEvent * event );
|
|
||||||
// virtual void dragLeaveEvent ( QDragLeaveEvent * event );
|
|
||||||
// virtual void dropEvent ( QDropEvent * event );
|
|
||||||
virtual void mousePressEvent(QMouseEvent *event);
|
virtual void mousePressEvent(QMouseEvent *event);
|
||||||
virtual void mouseMoveEvent(QMouseEvent *event);
|
virtual void mouseMoveEvent(QMouseEvent *event);
|
||||||
public slots:
|
public slots:
|
||||||
void OnColumnResized(int index,int OldSize, int NewSize);
|
void OnColumnResized(int index,int OldSize, int NewSize);
|
||||||
|
void updateItems();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -157,18 +157,15 @@ if(DragType==GROUP){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else db->moveGroup(DragItem->pGroup,NULL);
|
else db->moveGroup(DragItem->pGroup,NULL);
|
||||||
|
updateItems();
|
||||||
}else{
|
}else{
|
||||||
Q_ASSERT(item);
|
Q_ASSERT(item);
|
||||||
QList<QTreeWidgetItem*>* pDragItems=(QList<QTreeWidgetItem*>*)*((QList<QTreeWidgetItem*>**)event->mimeData()->data("keepass/entry").data());
|
QList<QTreeWidgetItem*>* pDragItems=(QList<QTreeWidgetItem*>*)*((QList<QTreeWidgetItem*>**)event->mimeData()->data("keepass/entry").data());
|
||||||
for(int i=0;i<pDragItems->size();i++){
|
for(int i=0;i<pDragItems->size();i++){
|
||||||
db->moveEntry(((EntryViewItem*)(*pDragItems)[i])->pEntry,item->pGroup);
|
db->moveEntry(((EntryViewItem*)(*pDragItems)[i])->pEntry,item->pGroup);
|
||||||
}
|
}
|
||||||
|
emit entryDropped();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
updateItems();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,7 @@ public:
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void fileModified();
|
void fileModified();
|
||||||
|
void entryDropped();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void dragEnterEvent ( QDragEnterEvent * event );
|
virtual void dragEnterEvent ( QDragEnterEvent * event );
|
||||||
|
|
|
@ -17,4 +17,4 @@
|
||||||
* Free Software Foundation, Inc., *
|
* Free Software Foundation, Inc., *
|
||||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
extern void getRandomBytes(void* buffer,int NumBlocks,int BlockSize,bool Strong=false);
|
extern void getRandomBytes(void* buffer,int NumBlocks,int BlockSize=1,bool Strong=false);
|
|
@ -46,7 +46,6 @@
|
||||||
#include "dialogs/AboutDlg.h"
|
#include "dialogs/AboutDlg.h"
|
||||||
#include "dialogs/EditGroupDlg.h"
|
#include "dialogs/EditGroupDlg.h"
|
||||||
#include "dialogs/SearchDlg.h"
|
#include "dialogs/SearchDlg.h"
|
||||||
#include "dialogs/ChangeKeyDlg.h"
|
|
||||||
#include "dialogs/SettingsDlg.h"
|
#include "dialogs/SettingsDlg.h"
|
||||||
#include "dialogs/DatabaseSettingsDlg.h"
|
#include "dialogs/DatabaseSettingsDlg.h"
|
||||||
#include "dialogs/PasswordDlg.h"
|
#include "dialogs/PasswordDlg.h"
|
||||||
|
@ -133,6 +132,7 @@ void KeepassMainWindow::setupConnections(){
|
||||||
|
|
||||||
connect(HelpAboutAction,SIGNAL(triggered()),this,SLOT(OnHelpAbout()));
|
connect(HelpAboutAction,SIGNAL(triggered()),this,SLOT(OnHelpAbout()));
|
||||||
|
|
||||||
|
connect(GroupView,SIGNAL(entryDropped()),EntryView,SLOT(updateItems()));
|
||||||
connect(&ClipboardTimer, SIGNAL(timeout()), this, SLOT(OnClipboardTimeOut()));
|
connect(&ClipboardTimer, SIGNAL(timeout()), this, SLOT(OnClipboardTimeOut()));
|
||||||
connect(GroupView,SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)),this,
|
connect(GroupView,SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)),this,
|
||||||
SLOT(OnCurrentGroupChanged(QTreeWidgetItem*,QTreeWidgetItem*)));
|
SLOT(OnCurrentGroupChanged(QTreeWidgetItem*,QTreeWidgetItem*)));
|
||||||
|
@ -251,15 +251,12 @@ Q_ASSERT(r==1);
|
||||||
db = new PwDatabase();
|
db = new PwDatabase();
|
||||||
GroupView->db=db;
|
GroupView->db=db;
|
||||||
EntryView->db=db;
|
EntryView->db=db;
|
||||||
if(PasswordDlg.password!="" && PasswordDlg.keyfile==""){
|
if(PasswordDlg.password!="" && PasswordDlg.keyfile=="")
|
||||||
db->CalcMasterKeyByPassword(PasswordDlg.password);
|
db->CalcMasterKeyByPassword(PasswordDlg.password);
|
||||||
}
|
if(PasswordDlg.password=="" && PasswordDlg.keyfile!="")
|
||||||
if(PasswordDlg.password=="" && PasswordDlg.keyfile!=""){
|
|
||||||
db->CalcMasterKeyByFile(PasswordDlg.keyfile);
|
db->CalcMasterKeyByFile(PasswordDlg.keyfile);
|
||||||
}
|
if(PasswordDlg.password!="" && PasswordDlg.keyfile!="")
|
||||||
if(PasswordDlg.password!="" && PasswordDlg.keyfile!=""){
|
|
||||||
db->CalcMasterKeyByFileAndPw(PasswordDlg.keyfile,PasswordDlg.password);
|
db->CalcMasterKeyByFileAndPw(PasswordDlg.keyfile,PasswordDlg.password);
|
||||||
}
|
|
||||||
QString err;
|
QString err;
|
||||||
StatusBarGeneral->setText(tr("Loading Database..."));
|
StatusBarGeneral->setText(tr("Loading Database..."));
|
||||||
if(db->loadDatabase(filename,err)==true){
|
if(db->loadDatabase(filename,err)==true){
|
||||||
|
@ -312,9 +309,23 @@ return true;
|
||||||
void KeepassMainWindow::OnFileNew(){
|
void KeepassMainWindow::OnFileNew(){
|
||||||
if(FileOpen)
|
if(FileOpen)
|
||||||
if(!closeDatabase())return;
|
if(!closeDatabase())return;
|
||||||
|
CPasswordDialog dlg(this,"PasswordDlg",true,false,true);
|
||||||
|
dlg.setCaption("New Database");
|
||||||
db=new PwDatabase();
|
db=new PwDatabase();
|
||||||
CChangeKeyDlg dlg(this,db);
|
|
||||||
if(dlg.exec()==1){
|
if(dlg.exec()==1){
|
||||||
|
if(dlg.KeyType==BOTH || dlg.KeyType==KEYFILE){
|
||||||
|
if(!db->createKeyFile(dlg.keyfile)){
|
||||||
|
QMessageBox::warning(this,tr("Error"),tr("Could not create key file. The following error occured:\n%1").arg(db->getError()),tr("OK"),"","",0,0);
|
||||||
|
delete db; db=NULL;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(dlg.password!="" && dlg.keyfile=="")
|
||||||
|
db->CalcMasterKeyByPassword(dlg.password);
|
||||||
|
if(dlg.password=="" && dlg.keyfile!="")
|
||||||
|
db->CalcMasterKeyByFile(dlg.keyfile);
|
||||||
|
if(dlg.password!="" && dlg.keyfile!="")
|
||||||
|
db->CalcMasterKeyByFileAndPw(dlg.keyfile,dlg.password);
|
||||||
setCaption(tr("KeePassX - %1").arg(tr("[new]")));
|
setCaption(tr("KeePassX - %1").arg(tr("[new]")));
|
||||||
GroupView->db=db;
|
GroupView->db=db;
|
||||||
EntryView->db=db;
|
EntryView->db=db;
|
||||||
|
@ -552,8 +563,23 @@ if(dlg.exec())setStateFileModified(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void KeepassMainWindow::OnFileChangeKey(){
|
void KeepassMainWindow::OnFileChangeKey(){
|
||||||
CChangeKeyDlg dlg(this,db,"ChangeKeyDialog");
|
CPasswordDialog dlg(this,"PasswordDlg",true,false,true);
|
||||||
if(dlg.exec()) setStateFileModified(true);
|
dlg.setCaption(db->filename);
|
||||||
|
if(dlg.exec()==1){
|
||||||
|
if(dlg.KeyType==BOTH || dlg.KeyType==KEYFILE){
|
||||||
|
if(!db->createKeyFile(dlg.keyfile)){
|
||||||
|
QMessageBox::warning(this,tr("Error"),tr("Could not create key file. The following error occured:\n%1").arg(db->getError()),tr("OK"),"","",0,0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(dlg.password!="" && dlg.keyfile=="")
|
||||||
|
db->CalcMasterKeyByPassword(dlg.password);
|
||||||
|
if(dlg.password=="" && dlg.keyfile!="")
|
||||||
|
db->CalcMasterKeyByFile(dlg.keyfile);
|
||||||
|
if(dlg.password!="" && dlg.keyfile!="")
|
||||||
|
db->CalcMasterKeyByFileAndPw(dlg.keyfile,dlg.password);
|
||||||
|
setStateFileModified(true);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,6 @@ FORMS += forms/EditGroupDlg.ui \
|
||||||
forms/SearchDlg.ui \
|
forms/SearchDlg.ui \
|
||||||
forms/AboutDlg.ui \
|
forms/AboutDlg.ui \
|
||||||
forms/SettingsDlg.ui \
|
forms/SettingsDlg.ui \
|
||||||
forms/ChangeKeyDlg.ui \
|
|
||||||
forms/MainWindow.ui \
|
forms/MainWindow.ui \
|
||||||
forms/SimplePasswordDlg.ui \
|
forms/SimplePasswordDlg.ui \
|
||||||
forms/DatabaseSettingsDlg.ui \
|
forms/DatabaseSettingsDlg.ui \
|
||||||
|
@ -43,7 +42,6 @@ HEADERS += lib/IniReader.h \
|
||||||
dialogs/AboutDlg.h \
|
dialogs/AboutDlg.h \
|
||||||
dialogs/EditGroupDlg.h \
|
dialogs/EditGroupDlg.h \
|
||||||
dialogs/SearchDlg.h \
|
dialogs/SearchDlg.h \
|
||||||
dialogs/ChangeKeyDlg.h \
|
|
||||||
dialogs/SettingsDlg.h \
|
dialogs/SettingsDlg.h \
|
||||||
dialogs/DatabaseSettingsDlg.h \
|
dialogs/DatabaseSettingsDlg.h \
|
||||||
dialogs/PasswordDlg.h \
|
dialogs/PasswordDlg.h \
|
||||||
|
@ -77,7 +75,6 @@ SOURCES += lib/IniReader.cpp \
|
||||||
dialogs/AboutDlg.cpp \
|
dialogs/AboutDlg.cpp \
|
||||||
dialogs/EditGroupDlg.cpp \
|
dialogs/EditGroupDlg.cpp \
|
||||||
dialogs/SearchDlg.cpp \
|
dialogs/SearchDlg.cpp \
|
||||||
dialogs/ChangeKeyDlg.cpp \
|
|
||||||
dialogs/SettingsDlg.cpp \
|
dialogs/SettingsDlg.cpp \
|
||||||
dialogs/DatabaseSettingsDlg.cpp \
|
dialogs/DatabaseSettingsDlg.cpp \
|
||||||
dialogs/PasswordDlg.cpp \
|
dialogs/PasswordDlg.cpp \
|
||||||
|
|
Loading…
Reference in New Issue