Drag&Drop for Entries, some other UI work

git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@53 b624d157-de02-0410-bad0-e51aec6abb33
master
tariq 19 years ago
parent 60d342201d
commit 853747bce1
  1. BIN
      share/keepass/icons/nuvola/32x32/actions/help.png
  2. 6
      src/PwManager.cpp
  3. 1
      src/PwManager.h
  4. 4
      src/PwmConfig.cpp
  5. 2
      src/PwmConfig.h
  6. 5
      src/crypto/twofish.cpp
  7. 2
      src/dialogs/AboutDlg.cpp
  8. 8
      src/dialogs/EditEntryDlg.cpp
  9. 21
      src/dialogs/PasswordDlg.cpp
  10. 12
      src/dialogs/PasswordDlg.h
  11. 2
      src/dialogs/SettingsDlg.cpp
  12. 8
      src/dialogs/SimplePasswordDlg.cpp
  13. 2
      src/dialogs/SimplePasswordDlg.h
  14. 4
      src/forms/AboutDlg.ui
  15. 86
      src/forms/MainWindow.ui
  16. 7
      src/forms/PasswordDlg.ui
  17. 859
      src/forms/SettingsDlg.ui
  18. 80
      src/lib/EntryView.cpp
  19. 9
      src/lib/EntryView.h
  20. 124
      src/lib/GroupView.cpp
  21. 2
      src/lib/GroupView.h
  22. 85
      src/main.cpp
  23. 2
      src/main.h
  24. 115
      src/mainwindow.cpp
  25. 5
      src/mainwindow.h
  26. 6
      src/src.pro
  27. 413
      src/translations/keepass-de_DE.ts
  28. 1489
      src/translations/keepass-ru_RU.ts
  29. 348
      src/translations/keepass-xx_XX.ts

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

@ -1,6 +1,6 @@
/***************************************************************************
* Copyright (C) 2005 by Tarek Saidi *
* tarek@linux *
* Copyright (C) 2005-2006 by Tarek Saidi *
* tarek.saidi@arcor.de *
* *
* 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 *
@ -148,7 +148,7 @@ sha256_finish(&sha32,(unsigned char *)FinalKey);
if(memcmp(ContentsHash, FinalKey, 32) != 0)
{
err=tr("Hash test failed.\nThe key is wrong or the file is damaged");
err=tr("Hash test failed.\nThe key is wrong or the file is damaged.");
return false;}

@ -75,7 +75,6 @@ public:
QString getErrors(); //get all errors in a \n seperated String
private:
bool IsMetaStream(CEntry& Entry);
bool parseMetaStream(const CEntry& Entry);

@ -52,6 +52,8 @@ MainWinWidth=ini.GetValueI("UI","MainWinWidth",900);
MainWinSplit1=ini.GetValueI("UI","MainWinSplit1",100);
MainWinSplit2=ini.GetValueI("UI","MainWinSplit2",300);
ParseIntString(ini.GetValue("UI","ColumnSizes","15,10,10,10,10,10,10,10,10,10").c_str(),ColumnSizes,10);
ShowStatusbar=ini.GetValueB("UI","ShowStatusbar",true);
AlternatingRowColors=ini.GetValueB("Options","AlternatingRowColors",true);
return true;
}
@ -81,6 +83,8 @@ ini.SetValueI("UI","MainWinWidth",MainWinWidth);
ini.SetValueI("UI","MainWinSplit1",MainWinSplit1);
ini.SetValueI("UI","MainWinSplit2",MainWinSplit2);
ini.SetValue("UI","ColumnSizes",(const char*)CreateIntString(ColumnSizes,10),true);
ini.SetValueB("UI","ShowStatusbar",ShowStatusbar);
ini.SetValueB("Options","AlternatingRowColors",AlternatingRowColors);
if(!ini.WriteFile())return false;
else return true;
}

@ -51,6 +51,8 @@ public:
int MainWinSplit1;
int MainWinSplit2;
int ColumnSizes[10];
bool ShowStatusbar;
bool AlternatingRowColors;
bool loadFromIni(QString filename);
bool saveToIni(QString filename);

@ -474,9 +474,10 @@
#endif
#include <qmessagebox.h>
void Twofish_fatal(char* msg){
QMessageBox::critical(0,"Interner Fehler",msg,"OK","Cancel",0,2,1);
qCritical("Twofish: Fatal Error");
exit(1);
}

@ -55,7 +55,7 @@ return;
}
if(!gpl.open(QIODevice::ReadOnly)){
QMessageBox::critical(this,tr("Fehler"),tr("Could not open file '%1'")
QMessageBox::critical(this,tr("Error"),tr("Could not open file '%1'")
.arg("'license.txt'")+tr("The following error occured:\n%1").arg(gpl.errorString())
,tr("OK"),0,0,2,1);
return;

@ -1,6 +1,6 @@
/***************************************************************************
* Copyright (C) 2005 by Tarek Saidi *
* tarek@linux *
* Copyright (C) 2005-2006 by Tarek Saidi *
* tarek.saidi@arcor.de *
* *
* 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 *
@ -51,7 +51,7 @@ Q_ASSERT(_entry);
entry=_entry;
db=_db;
setupUi(this);
createBanner(Banner,Icon_Key32x32,tr("Eintrag bearbeiten"));
createBanner(Banner,Icon_Key32x32,tr("Edit Entry"));
ModFlag=false;
connect(Edit_Password_w, SIGNAL(editingFinished()), this, SLOT(OnPasswordwLostFocus()));
connect(Edit_Password_w, SIGNAL(textChanged(const QString&)), this, SLOT( OnPasswordwTextChanged(const QString&)));
@ -257,7 +257,7 @@ if(filename=="")return;
QFile file(filename);
if(file.open(QIODevice::ReadOnly)==false){
file.close();
QMessageBox::warning(NULL,tr("Fehler"),tr("Datei konnte nicht geöffnet werden."),"OK");
QMessageBox::warning(NULL,tr("Error"),tr("Could not open file."),tr("OK"));
return;
}
ModFlag=true;

@ -33,12 +33,13 @@
CPasswordDialog::CPasswordDialog(QWidget* parent, const char* name, bool modal, Qt::WFlags fl)
CPasswordDialog::CPasswordDialog(QWidget* parent, const char* name, bool modal, bool ShowExitButton, Qt::WFlags fl)
: QDialog(parent,name, modal,fl)
{
setupUi(this);
createBanner(Banner,Icon_Key32x32,tr("Datenbank öffnen"));
Label_select=new LinkLabel((QWidget*)groupframe,"Select",tr("Datei manuell wählen..."),410,100);
ButtonExit->setVisible(ShowExitButton);
createBanner(Banner,Icon_Key32x32,tr("Open Database"));
Label_select=new LinkLabel((QWidget*)groupframe,"Select",tr("Select File Manually..."),410,100);
connect( Combo_Dirs, SIGNAL( activated(int) ), this, SLOT( OnComboSelectionChanged(int) ) );
connect( ButtonBrowse, SIGNAL( clicked() ), this, SLOT( OnButtonBrowse() ) );
connect( ButtonOK, SIGNAL( clicked() ), this, SLOT( OnOK() ) );
@ -47,7 +48,7 @@ connect( Edit_Password, SIGNAL( textChanged(const QString&) ), this, SLOT( OnPas
connect( CheckBox_Both, SIGNAL( stateChanged(int) ), this, SLOT( OnCheckBox_BothChanged(int) ) );
connect( ButtonChangeEchoMode, SIGNAL( clicked() ), this, SLOT( ChangeEchoMode() ) );
connect( Edit_Password, SIGNAL( returnPressed() ), this, SLOT( OnOK() ) );
connect( ButtonExit, SIGNAL( clicked()),this,SLOT(OnButtonExit()));
QDir media("/media");
if(media.exists()){
@ -58,7 +59,7 @@ Paths.erase(Paths.begin()); // delete ".."
for(int i=0;i<Paths.count();i++){
Paths[i]="/media/"+Paths[i];
}
Paths.prepend(tr("< keiner >"));
Paths.prepend(tr("< none >"));
}
for(int i=0;i<Paths.count();i++){
Combo_Dirs->insertItem(0,Paths[i]);
@ -208,11 +209,7 @@ Edit_Password->setEchoMode(QLineEdit::Normal);
}
/*$SPECIALIZATION$*/
//#include "passworddialog.moc"
void CPasswordDialog::OnButtonExit(){
done(2);
}

@ -44,26 +44,20 @@ QString password;
public:
CPasswordDialog(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, Qt::WFlags fl = 0 );
CPasswordDialog(QWidget* parent = 0, const char* name = 0, bool modal = false,
bool ShowExitButton = false, Qt::WFlags fl = 0 );
~CPasswordDialog();
/*$PUBLIC_FUNCTIONS$*/
public slots:
/*$PUBLIC_SLOTS$*/
virtual void OnOK();
virtual void OnCancel();
virtual void OnSelectClicked();
virtual void OnButtonBrowse();
virtual void OnButtonExit();
virtual void OnComboSelectionChanged(int);
virtual void OnPasswordChanged(const QString &txt);
virtual void OnCheckBox_BothChanged(int state);
virtual void ChangeEchoMode();
protected:
/*$PROTECTED_FUNCTIONS$*/
protected slots:
/*$PROTECTED_SLOTS$*/
};

@ -61,6 +61,7 @@ textcolor=config.BannerTextColor;
CheckBox_ShowPasswords->setChecked(config.ShowPasswords);
Edit_BrowserCmd->setText(config.OpenUrlCommand);
CheckBox_ExpandGroupTree->setChecked(config.ExpandGroupTree);
CheckBox_AlternatingRowColors->setChecked(config.AlternatingRowColors);
}
@ -78,6 +79,7 @@ config.BannerTextColor=textcolor;
config.ShowPasswords=CheckBox_ShowPasswords->isChecked();
config.OpenUrlCommand=Edit_BrowserCmd->text();
config.ExpandGroupTree=CheckBox_ExpandGroupTree->isChecked();
config.AlternatingRowColors=CheckBox_AlternatingRowColors->isChecked();
close();
}

@ -18,16 +18,16 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include "SimplePasswordDlg.h"
#include <qlineedit.h>
#include <qpushbutton.h>
#include "main.h"
#include "SimplePasswordDlg.h"
CSimplePasswordDialog::CSimplePasswordDialog(bool HidePw,QWidget* parent, const char* name, bool modal, Qt::WFlags fl)
CSimplePasswordDialog::CSimplePasswordDialog(QWidget* parent, const char* name, bool modal, Qt::WFlags fl)
: QDialog(parent,name, modal,fl)
{
setupUi(this);
if(HidePw)Button_HidePassword->toggle();
if(!config.ShowPasswords)Button_HidePassword->toggle();
}
CSimplePasswordDialog::~CSimplePasswordDialog()

@ -28,7 +28,7 @@ class CSimplePasswordDialog : public QDialog, public Ui_SimplePasswordDialog
Q_OBJECT
public:
CSimplePasswordDialog(bool HidePw,QWidget* parent = 0, const char* name = 0, bool modal = FALSE, Qt::WFlags fl = 0 );
CSimplePasswordDialog(QWidget* parent = 0, const char* name = 0, bool modal = FALSE, Qt::WFlags fl = 0 );
~CSimplePasswordDialog();
/*$PUBLIC_FUNCTIONS$*/

@ -131,13 +131,13 @@
</rect>
</property>
<property name="html" >
<string>&lt;html>&lt;head>&lt;meta name="qrichtext" content="1" />&lt;/head>&lt;body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;span style=" font-weight:600;">Mattias Miller&lt;/span> (www.outofhanwell.com)&lt;/p>&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> Mac OS X Support&lt;/p>&lt;/body>&lt;/html></string>
<string>&lt;html>&lt;head>&lt;meta name="qrichtext" content="1" />&lt;/head>&lt;body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;">&lt;p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;/p>&lt;/body>&lt;/html></string>
</property>
</widget>
</widget>
<widget class="QWidget" name="tab_4" >
<attribute name="title" >
<string>Übersetzung</string>
<string>Translation</string>
</attribute>
<widget class="QTextEdit" name="Edit_Translation" >
<property name="geometry" >

@ -114,31 +114,6 @@
<height>29</height>
</rect>
</property>
<widget class="QMenu" name="menuDatei" >
<property name="title" >
<string>File</string>
</property>
<widget class="QMenu" name="menuImportieren_aus" >
<property name="title" >
<string>Import from...</string>
</property>
<addaction name="FileImpPwmAction" />
<addaction name="FileImpKWalletXmlAction" />
</widget>
<addaction name="FileNewAction" />
<addaction name="FileOpenAction" />
<addaction name="FileCloseAction" />
<addaction name="separator" />
<addaction name="FileSaveAction" />
<addaction name="FileSaveAsAction" />
<addaction name="separator" />
<addaction name="FileSettingsAction" />
<addaction name="FileChangeKeyAction" />
<addaction name="separator" />
<addaction name="menuImportieren_aus" />
<addaction name="separator" />
<addaction name="FileExitAction" />
</widget>
<widget class="QMenu" name="menuBearbeiten" >
<property name="title" >
<string>Edit</string>
@ -182,12 +157,45 @@
</widget>
<addaction name="ViewShowToolbarAction" />
<addaction name="ViewShowEntryDetailsAction" />
<addaction name="ViewShowStatusbarAction" />
<addaction name="separator" />
<addaction name="ViewHideUsernamesAction" />
<addaction name="ViewHidePasswordsAction" />
<addaction name="separator" />
<addaction name="menuSpalten" />
</widget>
<widget class="QMenu" name="menuDatei" >
<property name="title" >
<string>File</string>
</property>
<widget class="QMenu" name="menuImportieren_aus" >
<property name="title" >
<string>Import from...</string>
</property>
<addaction name="FileImpPwmAction" />
<addaction name="FileImpKWalletXmlAction" />
</widget>
<widget class="QMenu" name="menuExport_to" >
<property name="title" >
<string>Export to...</string>
</property>
<addaction name="FileExpPlainTextAction" />
</widget>
<addaction name="FileNewAction" />
<addaction name="FileOpenAction" />
<addaction name="FileCloseAction" />
<addaction name="separator" />
<addaction name="FileSaveAction" />
<addaction name="FileSaveAsAction" />
<addaction name="separator" />
<addaction name="FileSettingsAction" />
<addaction name="FileChangeKeyAction" />
<addaction name="separator" />
<addaction name="menuImportieren_aus" />
<addaction name="menuExport_to" />
<addaction name="separator" />
<addaction name="FileExitAction" />
</widget>
<widget class="QMenu" name="menuExtras" >
<property name="title" >
<string>Extras</string>
@ -198,6 +206,8 @@
<property name="title" >
<string>Help</string>
</property>
<addaction name="HelpHandbookAction" />
<addaction name="separator" />
<addaction name="HelpAboutAction" />
</widget>
<addaction name="menuDatei" />
@ -477,20 +487,38 @@
<string>About...</string>
</property>
</action>
<action name="ViewShowStatusbarAction" >
<property name="checkable" >
<bool>true</bool>
</property>
<property name="text" >
<string>Show Statusbar</string>
</property>
</action>
<action name="HelpHandbookAction" >
<property name="text" >
<string>KeePassX Handbook...</string>
</property>
</action>
<action name="FileExpPlainTextAction" >
<property name="text" >
<string>Plain Text (*.txt)</string>
</property>
</action>
</widget>
<pixmapfunction></pixmapfunction>
<customwidgets>
<customwidget>
<class>KeepassEntryView</class>
<class>KeepassGroupView</class>
<extends>QTreeWidget</extends>
<header>../../src/lib/EntryView.h</header>
<header>../../src/lib/GroupView.h</header>
<container>0</container>
<pixmap></pixmap>
</customwidget>
<customwidget>
<class>KeepassGroupView</class>
<class>KeepassEntryView</class>
<extends>QTreeWidget</extends>
<header>../../src/lib/GroupView.h</header>
<header>../../src/lib/EntryView.h</header>
<container>0</container>
<pixmap></pixmap>
</customwidget>

@ -105,6 +105,13 @@
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="ButtonExit" >
<property name="text" >
<string>Exit</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QLabel" name="textLabel1" >

@ -1,384 +1,523 @@
<ui version="4.0" >
<author/>
<comment/>
<exportmacro/>
<class>SettingsDialog</class>
<widget class="QDialog" name="SettingsDialog" >
<property name="geometry" >
<author></author>
<comment></comment>
<exportmacro></exportmacro>
<class>SettingsDialog</class>
<widget class="QDialog" name="SettingsDialog" >
<property name="geometry" >
<rect>
<x>0</x>
<y>0</y>
<width>571</width>
<height>341</height>
</rect>
</property>
<property name="minimumSize" >
<size>
<width>571</width>
<height>341</height>
</size>
</property>
<property name="maximumSize" >
<size>
<width>571</width>
<height>341</height>
</size>
</property>
<property name="windowTitle" >
<string>Settings</string>
</property>
<widget class="QPushButton" name="ButtonCancel" >
<property name="geometry" >
<rect>
<x>470</x>
<y>310</y>
<width>90</width>
<height>23</height>
</rect>
</property>
<property name="text" >
<string>&amp;Cancel</string>
</property>
<property name="shortcut" >
<string>Alt+C</string>
</property>
</widget>
<widget class="QLabel" name="Banner" >
<property name="geometry" >
<rect>
<x>0</x>
<y>0</y>
<width>570</width>
<height>50</height>
</rect>
</property>
<property name="pixmap" >
<pixmap/>
</property>
<property name="scaledContents" >
<bool>true</bool>
</property>
</widget>
<widget class="QPushButton" name="ButtonOK" >
<property name="geometry" >
<rect>
<x>380</x>
<y>310</y>
<width>80</width>
<height>23</height>
</rect>
</property>
<property name="text" >
<string>O&amp;K</string>
</property>
<property name="shortcut" >
<string>Alt+K</string>
</property>
</widget>
<widget class="QTabWidget" name="tabWidget4" >
<property name="geometry" >
<rect>
<x>10</x>
<y>60</y>
<width>550</width>
<height>241</height>
</rect>
</property>
<widget class="QWidget" name="tab" >
<attribute name="title" >
<string>Securi&amp;try</string>
</attribute>
<widget class="QWidget" name="widget" >
<property name="geometry" >
<rect>
<x>0</x>
<y>0</y>
<width>571</width>
<height>341</height>
<x>10</x>
<y>20</y>
<width>531</width>
<height>25</height>
</rect>
</property>
<property name="minimumSize" >
<size>
<width>571</width>
<height>341</height>
</size>
</property>
<property name="maximumSize" >
<size>
<width>571</width>
<height>341</height>
</size>
</property>
<property name="windowTitle" >
<string>Settings</string>
</property>
<widget class="QLabel" name="Banner" >
<property name="geometry" >
<rect>
<x>0</x>
<y>0</y>
<width>570</width>
<height>50</height>
</rect>
</property>
<layout class="QHBoxLayout" >
<property name="margin" >
<number>0</number>
</property>
<property name="pixmap" >
<pixmap/>
</property>
<property name="scaledContents" >
<bool>true</bool>
<property name="spacing" >
<number>6</number>
</property>
<item>
<widget class="QLabel" name="textLabel1" >
<property name="sizePolicy" >
<sizepolicy>
<hsizetype>4</hsizetype>
<vsizetype>5</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Clear clipboard after:</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="SpinBox_ClipboardTime" >
<property name="sizePolicy" >
<sizepolicy>
<hsizetype>5</hsizetype>
<vsizetype>0</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize" >
<size>
<width>80</width>
<height>16777215</height>
</size>
</property>
<property name="maximum" >
<number>50000</number>
</property>
<property name="value" >
<number>2</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="textLabel2" >
<property name="text" >
<string>Seconds</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QCheckBox" name="CheckBox_ShowPasswords" >
<property name="geometry" >
<rect>
<x>10</x>
<y>50</y>
<width>531</width>
<height>20</height>
</rect>
</property>
<property name="text" >
<string>Sh&amp;ow passwords in plain text by default</string>
</property>
<property name="shortcut" >
<string>Alt+O</string>
</property>
</widget>
<widget class="QTabWidget" name="tabWidget4" >
</widget>
<widget class="QWidget" name="TabPage" >
<attribute name="title" >
<string>Appea&amp;rance</string>
</attribute>
<widget class="Q3GroupBox" name="groupBox1" >
<property name="geometry" >
<rect>
<x>20</x>
<y>10</y>
<width>520</width>
<height>90</height>
</rect>
</property>
<property name="title" >
<string>Banner Color</string>
</property>
<widget class="QWidget" name="widget" >
<property name="geometry" >
<rect>
<x>10</x>
<y>60</y>
<width>550</width>
<height>241</height>
</rect>
<rect>
<x>11</x>
<y>20</y>
<width>501</width>
<height>62</height>
</rect>
</property>
<widget class="QWidget" name="tab" >
<attribute name="title" >
<string>Securi&amp;try</string>
</attribute>
<widget class="QLabel" name="textLabel1" >
<property name="geometry" >
<rect>
<x>10</x>
<y>20</y>
<width>231</width>
<height>20</height>
</rect>
</property>
<property name="text" >
<string>Clear clipboard after:</string>
</property>
<layout class="QGridLayout" >
<property name="margin" >
<number>0</number>
</property>
<property name="spacing" >
<number>6</number>
</property>
<item row="1" column="0" >
<widget class="QLabel" name="textLabel2_2" >
<property name="text" >
<string>Text Color:</string>
</property>
</widget>
<widget class="QSpinBox" name="SpinBox_ClipboardTime" >
<property name="geometry" >
<rect>
<x>250</x>
<y>20</y>
<width>80</width>
<height>20</height>
</rect>
</property>
</item>
<item row="0" column="3" >
<spacer>
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType" >
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" >
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="2" >
<widget class="QPushButton" name="ButtonTextColor" >
<property name="sizePolicy" >
<sizepolicy>
<hsizetype>4</hsizetype>
<vsizetype>0</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Change...</string>
</property>
<property name="shortcut" >
<string/>
</property>
</widget>
<widget class="QLabel" name="textLabel2" >
<property name="geometry" >
<rect>
<x>340</x>
<y>20</y>
<width>100</width>
<height>20</height>
</rect>
</property>
<property name="text" >
<string>Seconds</string>
</property>
</item>
<item row="0" column="4" >
<widget class="QLabel" name="textLabel3" >
<property name="sizePolicy" >
<sizepolicy>
<hsizetype>4</hsizetype>
<vsizetype>5</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Color 2:</string>
</property>
</widget>
<widget class="QCheckBox" name="CheckBox_ShowPasswords" >
<property name="geometry" >
<rect>
<x>10</x>
<y>50</y>
<width>420</width>
<height>20</height>
</rect>
</property>
<property name="text" >
<string>Sh&amp;ow passwords in plain text by default</string>
</property>
<property name="shortcut" >
<string>Alt+O</string>
</property>
</item>
<item row="0" column="1" >
<widget class="QLabel" name="pixmColor1" >
<property name="sizePolicy" >
<sizepolicy>
<hsizetype>4</hsizetype>
<vsizetype>0</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize" >
<size>
<width>23</width>
<height>23</height>
</size>
</property>
<property name="maximumSize" >
<size>
<width>23</width>
<height>23</height>
</size>
</property>
<property name="text" >
<string/>
</property>
</widget>
</widget>
<widget class="QWidget" name="TabPage" >
<attribute name="title" >
<string>Appea&amp;rance</string>
</attribute>
<widget class="Q3GroupBox" name="groupBox1" >
<property name="geometry" >
<rect>
<x>10</x>
<y>10</y>
<width>520</width>
<height>90</height>
</rect>
</property>
<property name="title" >
<string>Banner Color</string>
</property>
<widget class="QLabel" name="textLabel1_3" >
<property name="geometry" >
<rect>
<x>10</x>
<y>20</y>
<width>53</width>
<height>20</height>
</rect>
</property>
<property name="text" >
<string>Color 1</string>
</property>
</widget>
<widget class="QLabel" name="pixmColor1" >
<property name="geometry" >
<rect>
<x>70</x>
<y>20</y>
<width>22</width>
<height>22</height>
</rect>
</property>
<property name="pixmap" >
<pixmap/>
</property>
<property name="scaledContents" >
<bool>true</bool>
</property>
</widget>
<widget class="QPushButton" name="ButtonColor1" >
<property name="geometry" >
<rect>
<x>100</x>
<y>20</y>
<width>60</width>
<height>23</height>
</rect>
</property>
<property name="text" >
<string>C&amp;hange...</string>
</property>
<property name="shortcut" >
<string>Alt+H</string>
</property>
</widget>
<widget class="QLabel" name="textLabel3" >
<property name="geometry" >
<rect>
<x>190</x>
<y>20</y>
<width>60</width>
<height>20</height>
</rect>
</property>
<property name="text" >
<string>Color 2</string>
</property>
</widget>
<widget class="QLabel" name="pixmTextColor" >
<property name="geometry" >
<rect>
<x>70</x>
<y>50</y>
<width>22</width>
<height>22</height>
</rect>
</property>
<property name="pixmap" >
<pixmap/>
</property>
<property name="scaledContents" >
<bool>true</bool>
</property>
</widget>
<widget class="QPushButton" name="ButtonTextColor" >
<property name="geometry" >
<rect>
<x>100</x>
<y>50</y>
<width>60</width>
<height>23</height>
</rect>
</property>
<property name="text" >
<string>Change...</string>
</property>
<property name="shortcut" >
<string/>
</property>
</widget>
<widget class="QLabel" name="textLabel2_2" >
<property name="geometry" >
<rect>
<x>10</x>
<y>50</y>
<width>54</width>
<height>20</height>
</rect>
</property>
<property name="text" >
<string>Text Color</string>
</property>
</widget>
<widget class="QLabel" name="pixmColor2" >
<property name="geometry" >
<rect>
<x>250</x>
<y>20</y>
<width>22</width>
<height>22</height>
</rect>
</property>
<property name="pixmap" >
<pixmap/>
</property>
<property name="scaledContents" >
<bool>true</bool>
</property>
</widget>
<widget class="QPushButton" name="ButtonColor2" >
<property name="geometry" >
<rect>
<x>280</x>
<y>20</y>
<width>60</width>
<height>23</height>
</rect>
</property>
<property name="text" >
<string>Change...</string>
</property>
<property name="shortcut" >
<string/>
</property>
</widget>
</item>
<item row="1" column="1" >
<widget class="QLabel" name="pixmTextColor" >
<property name="sizePolicy" >
<sizepolicy>
<hsizetype>4</hsizetype>
<vsizetype>0</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize" >
<size>
<width>23</width>
<height>23</height>
</size>
</property>
<property name="maximumSize" >
<size>
<width>23</width>
<height>23</height>
</size>
</property>
<property name="pixmap" >
<pixmap/>
</property>
<property name="scaledContents" >
<bool>true</bool>
</property>
</widget>
<widget class="QCheckBox" name="CheckBox_ExpandGroupTree" >
<property name="geometry" >
<rect>
<x>10</x>
<y>110</y>
<width>380</width>
<height>20</height>
</rect>
</property>
<property name="text" >
<string>Expand group tree when opening a database</string>
</property>
<property name="shortcut" >
<string>Alt+Ö</string>
</property>
</item>
<item row="0" column="6" >
<widget class="QPushButton" name="ButtonColor2" >
<property name="sizePolicy" >
<sizepolicy>
<hsizetype>4</hsizetype>
<vsizetype>0</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Change...</string>
</property>
<property name="shortcut" >
<string/>
</property>
</widget>
</widget>
<widget class="QWidget" name="tab" >
<attribute name="title" >
<string>&amp;Other</string>
</attribute>
<widget class="QCheckBox" name="CheckBox_OpenLast" >
<property name="geometry" >
<rect>
<x>10</x>
<y>20</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>
</item>
<item row="0" column="5" >
<widget class="QLabel" name="pixmColor2" >
<property name="sizePolicy" >
<sizepolicy>
<hsizetype>4</hsizetype>
<vsizetype>0</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize" >
<size>
<width>23</width>
<height>23</height>
</size>
</property>
<property name="maximumSize" >
<size>
<width>23</width>
<height>23</height>
</size>
</property>
<property name="pixmap" >
<pixmap/>
</property>
<property name="scaledContents" >
<bool>true</bool>
</property>
</widget>
<widget class="QLabel" name="textLabel1_4" >
<property name="geometry" >
<rect>
<x>10</x>
<y>50</y>
<width>110</width>
<height>20</height>
</rect>
</property>
<property name="text" >
<string>Browser Command:</string>
</property>
</item>
<item row="0" column="2" >
<widget class="QPushButton" name="ButtonColor1" >
<property name="sizePolicy" >
<sizepolicy>
<hsizetype>4</hsizetype>
<vsizetype>0</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>C&amp;hange...</string>
</property>
<property name="shortcut" >
<string>Alt+H</string>
</property>
</widget>
<widget class="QLineEdit" name="Edit_BrowserCmd" >
<property name="geometry" >
<rect>
<x>120</x>
<y>50</y>
<width>190</width>
<height>21</height>
</rect>
</property>
</item>
<item row="0" column="0" >
<widget class="QLabel" name="textLabel1_3" >
<property name="sizePolicy" >
<sizepolicy>
<hsizetype>4</hsizetype>
<vsizetype>5</vsizetype>
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text" >
<string>Color 1:</string>
</property>
</widget>
</widget>
</item>
<item row="0" column="7" >
<spacer>
<property name="orientation" >
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType" >
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" >
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
<widget class="QPushButton" name="ButtonOK" >
<property name="geometry" >
<rect>
<x>380</x>
<y>310</y>
<width>80</width>
<height>23</height>
</rect>
</property>
<property name="text" >
<string>O&amp;K</string>
</property>
<property name="shortcut" >
<string>Alt+K</string>
</property>
<widget class="QCheckBox" name="CheckBox_ExpandGroupTree" >
<property name="geometry" >
<rect>
<x>10</x>
<y>110</y>
<width>521</width>
<height>20</height>
</rect>
</property>
<property name="text" >
<string>Expand group tree when opening a database</string>
</property>
<property name="shortcut" >
<string>Alt+Ö</string>
</property>
</widget>
<widget class="QPushButton" name="ButtonCancel" >
<property name="geometry" >
<rect>
<x>470</x>
<y>310</y>
<width>90</width>
<height>23</height>
</rect>
</property>
<property name="text" >
<string>&amp;Cancel</string>
<widget class="QCheckBox" name="CheckBox_AlternatingRowColors" >
<property name="geometry" >
<rect>
<x>10</x>
<y>130</y>
<width>531</width>
<height>22</height>
</rect>
</property>
<property name="text" >
<string>Alternating Row Colors</string>
</property>
</widget>
</widget>
<widget class="QWidget" name="tab" >
<attribute name="title" >
<string>&amp;Other</string>
</attribute>
<widget class="QCheckBox" name="CheckBox_OpenLast" >
<property name="geometry" >
<rect>
<x>10</x>
<y>20</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="widget" >
<property name="geometry" >
<rect>
<x>10</x>
<y>50</y>
<width>531</width>
<height>25</height>
</rect>
</property>
<layout class="QHBoxLayout" >
<property name="margin" >
<number>0</number>
</property>
<property name="shortcut" >
<string>Alt+C</string>
<property name="spacing" >
<number>6</number>
</property>
<item>
<widget class="QLabel" name="textLabel1_4" >
<property name="text" >
<string>Browser Command:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="Edit_BrowserCmd" />
</item>
</layout>
</widget>
</widget>
</widget>
<layoutdefault spacing="6" margin="11" />
<pixmapfunction/>
<customwidgets>
<customwidget>
<class>Q3GroupBox</class>
<extends/>
<header>Qt3Support/Q3GroupBox</header>
<container>1</container>
<pixmap/>
</customwidget>
</customwidgets>
<tabstops>
<tabstop>tabWidget4</tabstop>
<tabstop>SpinBox_ClipboardTime</tabstop>
<tabstop>CheckBox_ShowPasswords</tabstop>
<tabstop>ButtonColor1</tabstop>
<tabstop>ButtonTextColor</tabstop>
<tabstop>ButtonColor2</tabstop>
<tabstop>CheckBox_OpenLast</tabstop>
<tabstop>Edit_BrowserCmd</tabstop>
<tabstop>ButtonOK</tabstop>
<tabstop>ButtonCancel</tabstop>
</tabstops>
<resources/>
<connections/>
</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>tabWidget4</tabstop>
<tabstop>SpinBox_ClipboardTime</tabstop>
<tabstop>CheckBox_ShowPasswords</tabstop>
<tabstop>ButtonColor1</tabstop>
<tabstop>ButtonTextColor</tabstop>
<tabstop>ButtonColor2</tabstop>
<tabstop>CheckBox_OpenLast</tabstop>
<tabstop>Edit_BrowserCmd</tabstop>
<tabstop>ButtonOK</tabstop>
<tabstop>ButtonCancel</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>

@ -26,6 +26,8 @@
#include <QMouseEvent>
#include <QHeaderView>
#include <QTime>
#include <QApplication>
#include <QPainter>
#include "main.h"
#include "EntryView.h"
@ -45,7 +47,7 @@ header()->setResizeMode(QHeaderView::Interactive);
header()->setStretchLastSection(false);
connect(header(),SIGNAL(sectionResized(int,int,int)),this,SLOT(OnColumnResized(int,int,int)));
ContextMenu=new QMenu(this);
setAlternatingRowColors(config.AlternatingRowColors);
}
KeepassEntryView::~KeepassEntryView(){
@ -136,13 +138,13 @@ void KeepassEntryView::setEntry(CEntry* entry){
if(config.Columns[4]){
tmp->setText(j++,entry->Additional.section('\n',0,0));}
if(config.Columns[5]){
tmp->setText(j++,entry->Expire.toString(DateTimeFormat));}
tmp->setText(j++,entry->Expire.date().toString(Qt::LocalDate));}
if(config.Columns[6]){
tmp->setText(j++,entry->Creation.toString(DateTimeFormat));}
tmp->setText(j++,entry->Creation.date().toString(Qt::LocalDate));}
if(config.Columns[7]){
tmp->setText(j++,entry->LastMod.toString(DateTimeFormat));}
tmp->setText(j++,entry->LastMod.date().toString(Qt::LocalDate));}
if(config.Columns[8]){
tmp->setText(j++,entry->LastAccess.toString(DateTimeFormat));}
tmp->setText(j++,entry->LastAccess.date().toString(Qt::LocalDate));}
if(config.Columns[9]){
tmp->setText(j++,entry->BinaryDesc);}
Items.back()->setIcon(0,EntryIcons[entry->ImageID]);
@ -174,13 +176,13 @@ for(int i=0;i<Items.size();i++){
if(config.Columns[4]){
tmp->setText(j++,entry->Additional.section('\n',0,0));}
if(config.Columns[5]){
tmp->setText(j++,entry->Expire.toString(DateTimeFormat));}
tmp->setText(j++,entry->Expire.date().toString(Qt::LocalDate));}
if(config.Columns[6]){
tmp->setText(j++,entry->Creation.toString(DateTimeFormat));}
tmp->setText(j++,entry->Creation.date().toString(Qt::LocalDate));}
if(config.Columns[7]){
tmp->setText(j++,entry->LastMod.toString(DateTimeFormat));}
tmp->setText(j++,entry->LastMod.date().toString(Qt::LocalDate));}
if(config.Columns[8]){
tmp->setText(j++,entry->LastAccess.toString(DateTimeFormat));}
tmp->setText(j++,entry->LastAccess.date().toString(Qt::LocalDate));}
if(config.Columns[9]){
tmp->setText(j++,entry->BinaryDesc);}
tmp->setIcon(0,EntryIcons[entry->ImageID]);
@ -285,6 +287,66 @@ if(((ColumnSizes[j]-div)*w > 2)){
resizeColumns();
}
void KeepassEntryView::mousePressEvent(QMouseEvent *event){
//save event position - maybe this is the start of a drag
if (event->button() == Qt::LeftButton)
DragStartPos = event->pos();
//call base function
QTreeWidget::mousePressEvent(event);
}
void KeepassEntryView::mouseMoveEvent(QMouseEvent *event){
if (!(event->buttons() & Qt::LeftButton))
return;
if ((event->pos() - DragStartPos).manhattanLength() < QApplication::startDragDistance())
return;
DragItems.clear();
EntryViewItem* DragStartItem=(EntryViewItem*)itemAt(DragStartPos);
if(!DragStartItem){
while(selectedItems().size()){
setItemSelected(selectedItems()[0],false);}
return;
}
if(selectedItems().size()==0){
setItemSelected(DragStartItem,true);}
else{
bool AlreadySelected=false;
for(int i=0;i<selectedItems().size();i++){
if(selectedItems()[i]==DragStartItem){AlreadySelected=true; break;}
}
if(!AlreadySelected){
while(selectedItems().size()){
setItemSelected(selectedItems()[0],false);
}
setItemSelected(DragStartItem,true);
}
}
DragItems=selectedItems();
QDrag *drag = new QDrag(this);
QFontMetrics fontmet(DragStartItem->font(0));
int DragPixmHeight=16;
if(fontmet.height()>16)DragPixmHeight=fontmet.height();
QString DragText;
if(DragItems.size()>1)DragText=QString(tr("%1 items")).arg(DragItems.size());
else DragText=((EntryViewItem*)DragItems[0])->pEntry->Title;
DragPixmap = QPixmap(fontmet.width(DragText)+19,DragPixmHeight);
DragPixmap.fill(QColor(255,255,255));
QPainter painter(&DragPixmap);
painter.setPen(QColor(0,0,0));
painter.setFont(DragItems[0]->font(0));
painter.drawPixmap(0,0,DragItems[0]->icon(0).pixmap());
painter.drawText(19,DragPixmHeight-fontmet.strikeOutPos(),DragText);
QMimeData *mimeData = new QMimeData;
void* pDragItems=&DragItems;
mimeData->setData("keepass/entry",QByteArray((char*)&pDragItems,sizeof(void*)));
drag->setMimeData(mimeData);
drag->setPixmap(DragPixmap);
drag->start();
}
void KeepassEntryView::paintEvent(QPaintEvent * event){

@ -50,10 +50,19 @@ private:
QList<float>ColumnSizes;
void resizeColumns();
bool AutoResizeColumns;
QPoint DragStartPos;
QList<QTreeWidgetItem*> DragItems;
QPixmap DragPixmap;
protected:
virtual void contextMenuEvent(QContextMenuEvent *event);
virtual void paintEvent(QPaintEvent* 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 mouseMoveEvent(QMouseEvent *event);
public slots:
void OnColumnResized(int index,int OldSize, int NewSize);
};

@ -34,6 +34,7 @@
#include <QBrush>
#include <QMenu>
#include "main.h"
#include "EntryView.h"
#include "GroupView.h"
#define INSERT_AREA_WIDTH 4
@ -41,7 +42,7 @@ KeepassGroupView::KeepassGroupView(QWidget* parent):QTreeWidget(parent){
InsertionMarker=QLine();
db=NULL;
LastHoverItem=NULL;
setHeaderLabels(QStringList()<<tr("Gruppen"));
setHeaderLabels(QStringList()<<tr("Groups"));
ShowSearchGroup=false;
ContextMenu=new QMenu(this);
}
@ -52,52 +53,70 @@ setItemSelected(Items.back(),true);
}
void KeepassGroupView:: dragEnterEvent ( QDragEnterEvent * event ){
if(event->mimeData()->hasFormat("keepass/group") ||
event->mimeData()->hasFormat("keepass/entry")){
event->accept();
if(event->mimeData()->hasFormat("keepass/group")){
DragType=GROUP;
event->accept();
return;
}
if(event->mimeData()->hasFormat("keepass/entry")){
DragType=ENTRY;
event->accept();
return;
}
}
void KeepassGroupView:: dragMoveEvent ( QDragMoveEvent * event ){
void KeepassGroupView::dragMoveEvent( QDragMoveEvent * event ){
GroupViewItem* item=(GroupViewItem*)itemAt(event->pos());
if(LastHoverItem){
QFont f=LastHoverItem->font(0);
f.setBold(false);
LastHoverItem->setFont(0,f);
QFont f=LastHoverItem->font(0);
f.setBold(false);
LastHoverItem->setFont(0,f);
}
InsertionMarker=QLine();
if(isSearchResultGroup(item))
event->setAccepted(false);
else if(item){
QRect ItemRect=visualItemRect(item);
if(!db->isParentGroup(item->pGroup,DragItem->pGroup) && DragItem!=item){
if((ItemRect.height()+ItemRect.y())-event->pos().y() > INSERT_AREA_WIDTH && event->pos().y() > INSERT_AREA_WIDTH){
QFont f=item->font(0);
f.setBold(true);
item->setFont(0,f);
LastHoverItem=item;
event->setAccepted(true);
}
else{
LastHoverItem=NULL;
if(event->pos().y() > INSERT_AREA_WIDTH)
InsertionMarker=QLine(ItemRect.x(),ItemRect.y()+ItemRect.height(),
ItemRect.x()+ItemRect.width(),ItemRect.y()+ItemRect.height());
else
InsertionMarker=QLine(ItemRect.x(),0,
ItemRect.x()+ItemRect.width(),0);
else
if(DragType==GROUP){
if(item){
QRect ItemRect=visualItemRect(item);
if(!db->isParentGroup(item->pGroup,DragItem->pGroup) && DragItem!=item){
if((ItemRect.height()+ItemRect.y())-event->pos().y() > INSERT_AREA_WIDTH && event->pos().y() > INSERT_AREA_WIDTH){
QFont f=item->font(0);
f.setBold(true);
item->setFont(0,f);
LastHoverItem=item;
event->setAccepted(true);
}
else{
LastHoverItem=NULL;
if(event->pos().y() > INSERT_AREA_WIDTH)
InsertionMarker=QLine(ItemRect.x(),ItemRect.y()+ItemRect.height()
,ItemRect.x()+ItemRect.width(),ItemRect.y()+ItemRect.height());
else
InsertionMarker=QLine(ItemRect.x(),0,ItemRect.x()+ItemRect.width(),0);
}
}
else
event->setAccepted(false);
}
}
else
event->setAccepted(false);
else
LastHoverItem=NULL;
}
else{
LastHoverItem=NULL;
if(item){
QFont f=item->font(0);
f.setBold(true);
item->setFont(0,f);
LastHoverItem=item;
event->setAccepted(true);
}
else{
event->setAccepted(false);
LastHoverItem=NULL;
}
}
update();
}
@ -122,21 +141,32 @@ if(LastHoverItem){
LastHoverItem=NULL;
}
GroupViewItem* item=(GroupViewItem*)itemAt(event->pos());
if(item){
QRect ItemRect=visualItemRect(item);
if((ItemRect.height()+ItemRect.y())-event->pos().y() > INSERT_AREA_WIDTH && event->pos().y() > INSERT_AREA_WIDTH){
db->moveGroup(DragItem->pGroup,item->pGroup);}
else{
if(event->pos().y() > INSERT_AREA_WIDTH){
if(db->getNumberOfChilds(item->pGroup) > 0)
db->moveGroup(DragItem->pGroup,item->pGroup,0);
else
db->moveGroupDirectly(DragItem->pGroup,item->pGroup);
}
else db->moveGroupDirectly(DragItem->pGroup,NULL);
}
if(DragType==GROUP){
if(item){
QRect ItemRect=visualItemRect(item);
if((ItemRect.height()+ItemRect.y())-event->pos().y() > INSERT_AREA_WIDTH && event->pos().y() > INSERT_AREA_WIDTH){
db->moveGroup(DragItem->pGroup,item->pGroup);}
else{
if(event->pos().y() > INSERT_AREA_WIDTH){
if(db->getNumberOfChilds(item->pGroup) > 0)
db->moveGroup(DragItem->pGroup,item->pGroup,0);
else
db->moveGroupDirectly(DragItem->pGroup,item->pGroup);
}
else db->moveGroupDirectly(DragItem->pGroup,NULL);
}
}
else db->moveGroup(DragItem->pGroup,NULL);
}else{
Q_ASSERT(item);
QList<QTreeWidgetItem*>* pDragItems=(QList<QTreeWidgetItem*>*)*((QList<QTreeWidgetItem*>**)event->mimeData()->data("keepass/entry").data());
for(int i=0;i<pDragItems->size();i++){
db->moveEntry(((EntryViewItem*)(*pDragItems)[i])->pEntry,item->pGroup);
}
}
else db->moveGroup(DragItem->pGroup,NULL);
updateItems();
}

@ -60,6 +60,8 @@ private:
GroupViewItem* DragItem;
GroupViewItem* LastHoverItem;
GroupViewItem* getLastSameLevelItem(int level);
enum tDragType{GROUP,ENTRY};
tDragType DragType;
};

@ -60,8 +60,7 @@ QIcon *Icon_EditClone;
QIcon *Icon_EditOpenUrl;
QIcon *Icon_EditSearch;
QIcon *Icon_Configure;
QString DateTimeFormat("no-format-string");
QIcon *Icon_Help;
inline void loadImages();
inline void parseCmdLineArgs(int argc, char** argv,QString &ArgFile,QString& ArgCfg);
@ -91,47 +90,36 @@ else{
//Internationalization
QLocale loc=QLocale::system();
QTranslator* translator = 0;
translator =new QTranslator;
if(config.Language==""){
switch(loc.language()){
case QLocale::German:
config.Language="_DEUTSCH_";
break;
case QLocale::Russian:
config.Language="russian.qm";
break;
case QLocale::English:
config.Language="english.qm";
break;
default:
config.Language="english.qm";
break;}
QTranslator* translator = NULL;
translator=new QTranslator;
bool TrFound=true;
if(!translator->load("keepass-"+loc.name(),app->applicationDirPath()+"/../share/keepass/i18n/")){
if(!translator->load("keepass-"+loc.name(),QDir::homeDirPath()+"/.keepass/")){
qWarning(QString("No Translation found for %1 (%2)")
.arg(QLocale::languageToString(loc.language()))
.arg(QLocale::countryToString(loc.country())));
TrFound=false;
}
}
if(config.Language!="_DEUTSCH_"){
if(!translator->load(app->applicationDirPath()+"/../share/keepass/i18n/"+config.Language)){
if(!translator->load(app->applicationDirPath()+"/share/i18n/"+config.Language)){
config.Language="_DEUTSCH_";
QMessageBox::warning(NULL,"Warning",
QString("Translation file '%1' could not be loaded.")
.arg(config.Language),"OK",0,0,2,1);
delete translator;
translator=NULL;}}
else app->installTranslator(translator);
}
if(TrFound)
app->installTranslator(translator);
else
delete translator;
DateTimeFormat=QObject::tr("dd'.'MM'.'yy' 'hh':'mm");
loadImages();
SecString::generateSessionKey();
int r=0;
KeepassMainWindow *mainWin = new KeepassMainWindow();
mainWin->show();
int r=app->exec();
if(mainWin->Start){
mainWin->show();
r=app->exec();
}
delete mainWin;
if(!config.saveToIni(IniFilename))
QMessageBox::warning(NULL,QObject::tr("Warning"),QObject::tr("Could not save configuration file.\nMake sure you have write access to '~/.keepass'."),QObject::tr("OK"),"","",0.0);
QMessageBox::warning(NULL,QObject::tr("Warning"),
QObject::tr("Could not save configuration file.\nMake sure you have write access to '~/.keepass'."),
QObject::tr("OK"),"","",0.0);
delete app;
return r;
}
@ -201,19 +189,31 @@ browser.startDetached(cmd,args);
void loadImg(QString name,QPixmap& Img){
if(Img.load(AppDir+"/../share/keepass/icons/"+name)==false){
if(Img.load(AppDir+"/share/"+name)==false){
QMessageBox::critical(0,QObject::tr("Fehler"),QObject::tr("File '%1' could not be found.")
QMessageBox::critical(0,QObject::tr("Error"),QObject::tr("File '%1' could not be found.")
.arg(name),QObject::tr("OK"),0,0,2,1);
exit(1);
}}
}
#define _loadIcon(_VAR,_NAME)\
_VAR=new QIcon(ThemeDir+_NAME);
#ifndef Q_WS_X11
#define _loadIcon(Icon,PATH)\
{QImage img(ThemeDir+PATH);\
Icon=new QIcon();\
/*Icon->addPixmap(QPixmap::fromImage(img));*/\
Icon->addPixmap(QPixmap::fromImage(img.scaled(16,16,Qt::IgnoreAspectRatio,Qt::SmoothTransformation)));\
}
#else
#define _loadIcon(Icon,PATH)\
{QImage img(ThemeDir+PATH);\
Icon=new QIcon();\
Icon->addPixmap(QPixmap::fromImage(img));\
Icon->addPixmap(QPixmap::fromImage(img.scaled(16,16,Qt::IgnoreAspectRatio,Qt::SmoothTransformation)));\
}
#endif
void loadImages(){
bool small=true;
QString ThemeDir=AppDir+"/../share/keepass/icons/nuvola/32x32";
QPixmap tmpImg;
@ -246,7 +246,6 @@ Icon_Search32x32=new QPixmap;
*Icon_Search32x32=tmpImg;
//--------------------------
_loadIcon(Icon_FileNew,"/actions/filenew.png");
_loadIcon(Icon_FileOpen,"/actions/fileopen.png");
_loadIcon(Icon_FileSave,"/actions/filesave.png");
@ -262,7 +261,7 @@ _loadIcon(Icon_EditClone,"/actions/editcopy.png");
_loadIcon(Icon_EditOpenUrl,"/actions/run.png");
_loadIcon(Icon_EditSearch,"/actions/find.png");
_loadIcon(Icon_Configure,"/actions/configure.png");
_loadIcon(Icon_Help,"/actions/help.png");
}
@ -295,5 +294,5 @@ int i=1;
}
void showErrMsg(const QString& msg,QWidget* parent){
QMessageBox::critical(parent,QObject::tr("Fehler"),msg,QObject::tr("OK"));
QMessageBox::critical(parent,QObject::tr("Error"),msg,QObject::tr("OK"));
}

@ -60,7 +60,7 @@ extern QIcon *Icon_EditClone;
extern QIcon *Icon_EditOpenUrl;
extern QIcon *Icon_EditSearch;
extern QIcon *Icon_Configure;
extern QString DateTimeFormat;
extern QIcon *Icon_Help;
#endif

@ -59,6 +59,7 @@
KeepassMainWindow::KeepassMainWindow(QWidget *parent, Qt::WFlags flags):QMainWindow(parent,flags){
Start=true;
setupUi(this);
setGeometry(geometry().x(),geometry().y(),config.MainWinWidth,config.MainWinHeight);
splitter->setSizes(QList<int>() << config.MainWinSplit1 << config.MainWinSplit2);
@ -68,14 +69,22 @@ KeepassMainWindow::KeepassMainWindow(QWidget *parent, Qt::WFlags flags):QMainWin
setupToolbar();
setStateFileOpen(false);
setupMenus();
setupConnections();
FileOpen=false;
Clipboard=QApplication::clipboard();
setStatusBar(new QStatusBar(this));
StatusBarGeneral=new QLabel(tr("Ready"),statusBar());
StatusBarSelection=new QLabel(statusBar());
statusBar()->addWidget(StatusBarGeneral,30);
statusBar()->addWidget(StatusBarSelection,70);
statusBar()->addWidget(StatusBarGeneral,15);
statusBar()->addWidget(StatusBarSelection,85);
statusBar()->setVisible(config.ShowStatusbar);
setupConnections();
FileOpen=false;
Clipboard=QApplication::clipboard();
if(config.OpenLast && (config.LastFile!=QString()) ){
QFileInfo file(config.LastFile);
if(file.exists())
openDatabase(config.LastFile,true);
else
config.LastFile=QString();
}
}
void KeepassMainWindow::setupConnections(){
@ -118,6 +127,7 @@ void KeepassMainWindow::setupConnections(){
connect(ViewColumnsLastChangeAction,SIGNAL(toggled(bool)), this, SLOT(OnColumnVisibilityChanged(bool)));
connect(ViewColumnsLastAccessAction,SIGNAL(toggled(bool)), this, SLOT(OnColumnVisibilityChanged(bool)));
connect(ViewColumnsAttachmentAction,SIGNAL(toggled(bool)), this, SLOT(OnColumnVisibilityChanged(bool)));
connect(ViewShowStatusbarAction,SIGNAL(toggled(bool)),statusBar(),SLOT(setVisible(bool)));
connect(ExtrasSettingsAction,SIGNAL(triggered(bool)),this,SLOT(OnExtrasSettings()));
@ -172,6 +182,7 @@ EditDeleteGroupAction->setIcon(*Icon_EditDelete);
EditSearchAction->setIcon(*Icon_EditSearch);
EditGroupSearchAction->setIcon(*Icon_EditSearch);
ExtrasSettingsAction->setIcon(*Icon_Configure);
HelpHandbookAction->setIcon(*Icon_Help);
}
void KeepassMainWindow::setupMenus(){
@ -207,6 +218,7 @@ void KeepassMainWindow::setupMenus(){
ViewColumnsLastChangeAction->setChecked(config.Columns[7]);
ViewColumnsLastAccessAction->setChecked(config.Columns[8]);
ViewColumnsAttachmentAction->setChecked(config.Columns[9]);
ViewShowStatusbarAction->setChecked(config.ShowStatusbar);
FileNewAction->setShortcut(tr("Ctrl+N"));
FileOpenAction->setShortcut(tr("Ctrl+O"));
@ -228,11 +240,14 @@ void KeepassMainWindow::setupMenus(){
}
void KeepassMainWindow::openDatabase(QString filename){
void KeepassMainWindow::openDatabase(QString filename,bool s){
Q_ASSERT(!FileOpen);
CPasswordDialog PasswordDlg(this,"Password Dialog",true);
CPasswordDialog PasswordDlg(this,"Password Dialog",true,s);
PasswordDlg.setCaption(filename);
if(!PasswordDlg.exec()) return;
int r=PasswordDlg.exec();
if(r==0) return;
if(r==2) {Start=false; close(); return;}
Q_ASSERT(r==1);
db = new PwDatabase();
GroupView->db=db;
EntryView->db=db;
@ -246,8 +261,10 @@ if(PasswordDlg.password!="" && PasswordDlg.keyfile!=""){
db->CalcMasterKeyByFileAndPw(PasswordDlg.keyfile,PasswordDlg.password);
}
QString err;
StatusBarGeneral->setText(tr("Loading Database..."));
if(db->loadDatabase(filename,err)==true){
//SUCCESS
if(config.OpenLast)config.LastFile=filename;
setCaption(tr("Keepass - %1").arg(filename));
GroupView->updateItems();
EntryView->updateItems(0);
@ -257,11 +274,13 @@ setStateFileModified(false);
else{
//ERROR
delete db;
StatusBarGeneral->setText(tr("Loading Failed"));
if(err=="")err=tr("Unknown error in PwDatabase::loadDatabase()");
QMessageBox::critical(this,tr("Error")
,tr("The following error occured while opening the database:\n%1")
.arg(err),tr("OK"));
}
StatusBarGeneral->setText(tr("Ready"));
}
bool KeepassMainWindow::closeDatabase(){
@ -296,7 +315,7 @@ if(FileOpen)
db=new PwDatabase();
CChangeKeyDlg dlg(this,db);
if(dlg.exec()==1){
setCaption(tr("KeePassX - %1").arg(tr("[neu]")));
setCaption(tr("KeePassX - %1").arg(tr("[new]")));
GroupView->db=db;
EntryView->db=db;
GroupView->updateItems();
@ -311,7 +330,7 @@ else delete db;
void KeepassMainWindow::OnFileOpen(){
if(FileOpen)
if(!closeDatabase())return;
QString filename=QFileDialog::getOpenFileName(this,tr("Databank öffnen..."),QDir::homePath(),"*.kdb");
QString filename=QFileDialog::getOpenFileName(this,tr("Open Database..."),QDir::homePath(),"*.kdb");
if(filename!=QString::null){
openDatabase(filename);
}
@ -542,9 +561,77 @@ void KeepassMainWindow::OnFileExit(){
close();
}
void KeepassMainWindow::OnImportFromPwm(){}
void KeepassMainWindow::OnImportFromKWalletXml(){}
void KeepassMainWindow::OnImportFromPwm(){
if(FileOpen)
if(!closeDatabase())return;
QString filename=QFileDialog::getOpenFileName(this,tr("Open Database..."),QDir::homePath(),"*.pwm");
if(filename!=QString::null){
Q_ASSERT(!FileOpen);
db = new PwDatabase();
CSimplePasswordDialog dlg(this,"SimplePasswordDlg",true);
if(!dlg.exec()){
delete db;
db=NULL;
StatusBarGeneral->setText(tr("Ready"));
}
GroupView->db=db;
EntryView->db=db;
QString err;
StatusBarGeneral->setText(tr("Loading Database..."));
Import_PwManager import;
if(import.importFile(filename,dlg.password,db,err)==true){
//SUCCESS
setCaption(tr("KeePassX [new]"));
GroupView->updateItems();
EntryView->updateItems(0);
setStateFileOpen(true);
setStateFileModified(true);
}
else{
//ERROR
delete db;
StatusBarGeneral->setText(tr("Loading Failed"));
if(err=="")err=tr("Unknown error in Import_PwManager::importFile()()");
QMessageBox::critical(this,tr("Error")
,tr("The following error occured while opening the database:\n%1")
.arg(err),tr("OK"));
}
StatusBarGeneral->setText(tr("Ready"));
}
}
void KeepassMainWindow::OnImportFromKWalletXml(){
if(FileOpen)
if(!closeDatabase())return;
QString filename=QFileDialog::getOpenFileName(this,tr("Open Database..."),QDir::homePath(),"*.pwm");
if(filename!=QString::null){
Q_ASSERT(!FileOpen);
db = new PwDatabase();
GroupView->db=db;
EntryView->db=db;
QString err;
StatusBarGeneral->setText(tr("Loading Database..."));
Import_KWalletXml import;
if(import.importFile(filename,db,err)==true){
//SUCCESS
setCaption(tr("KeePassX [new]"));
GroupView->updateItems();
EntryView->updateItems(0);
setStateFileOpen(true);
setStateFileModified(true);
}
else{
//ERROR
delete db;
StatusBarGeneral->setText(tr("Loading Failed"));
if(err=="")err=tr("Unknown error in Import_KWalletXml::importFile()");
QMessageBox::critical(this,tr("Error")
,tr("The following error occured while opening the database:\n%1")
.arg(err),tr("OK"));
}
StatusBarGeneral->setText(tr("Ready"));
}
}
void KeepassMainWindow::OnCurrentGroupChanged(QTreeWidgetItem* cur,QTreeWidgetItem* prev){
if(cur){
@ -776,6 +863,7 @@ config.MainWinHeight=geometry().height();
config.MainWinWidth=geometry().width();
config.MainWinSplit1=splitter->sizes()[0];
config.MainWinSplit2=splitter->sizes()[1];
config.ShowStatusbar=statusBar()->isVisible();
if(FileOpen){
if(!closeDatabase())
@ -791,6 +879,7 @@ else
void KeepassMainWindow::OnExtrasSettings(){
CSettingsDlg dlg(this,"SettingsDlg");
dlg.exec();
EntryView->setAlternatingRowColors(config.AlternatingRowColors);
}
void KeepassMainWindow::OnHelpAbout(){

@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 by Tarek Saidi *
* Copyright (C) 2005-2006 by Tarek Saidi *
* tarek.saidi@arcor.de *
* *
* This program is free software; you can redistribute it and/or modify *
@ -50,6 +50,7 @@ Q_OBJECT
public:
KeepassMainWindow (QWidget *parent=0, Qt::WFlags flags=0);
PwDatabase* db;
bool Start;
private slots:
void OnFileNew();
@ -105,7 +106,7 @@ private:
void setStateFileModified(bool);
void setStateGroupSelected(SelectionState s);
void setStateEntrySelected(SelectionState s);
void openDatabase(QString filename);
void openDatabase(QString filename,bool IsStart=false);
bool closeDatabase();
void search(CGroup* pGroup);
void editEntry(CEntry* pEntry);

@ -24,7 +24,7 @@ FORMS += forms/EditGroupDlg.ui \
forms/EditEntryDlg.ui \
forms/PasswordGenDlg.ui
TRANSLATIONS += translations/keepass-de_DE.ts \
translations/keepass-ru_Ru.ts \
translations/keepass-ru_RU.ts \
translations/keepass-xx_XX.ts
HEADERS += lib/IniReader.h \
lib/UrlLabel.h \
@ -91,8 +91,8 @@ SOURCES += lib/IniReader.cpp \
lib/EntryView.cpp \
crypto/arcfour.cpp \
lib/KpFileIconProvider.cpp
QT += xml \
qt3support
QT += xml qt3support
QT -= network sql
MOC_DIR = ../build/moc
UI_DIR = ../build/ui
OBJECTS_DIR = ../build/

@ -3,79 +3,76 @@
<name>AboutDlg</name>
<message>
<source>About</source>
<translation type="unfinished"></translation>
<translation>Über</translation>
</message>
<message>
<source>Homepage:</source>
<translation type="unfinished"></translation>
<translation>Homepage:</translation>
</message>
<message>
<source>KeePassX - Cross Platform Password Manager</source>
<translation type="unfinished"></translation>
<translation>KeePassX - Cross-Platform Passwort Manager</translation>
</message>
<message>
<source>Email:</source>
<translation type="unfinished"></translation>
<translation>EMail:</translation>
</message>
<message>
<source>Copyright (C) 2005-2006 Tarek Saidi</source>
<translation type="unfinished"></translation>
<translation>Copyright (C) 2005-2006 Tarek Saidi</translation>
</message>
<message>
<source>Thanks To</source>
<translation type="unfinished"></translation>
<translation>Dank An</translation>
</message>
<message>
<source>&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;/head&gt;&lt;body style=&quot; white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;&quot;&gt;&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Mattias Miller&lt;/span&gt; (www.outofhanwell.com)&lt;/p&gt;&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Mac OS X Support&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
<source>License</source>
<translation>Lizenz</translation>
</message>
<message encoding="UTF-8">
<source>Übersetzung</source>
<translation type="unfinished"></translation>
<message>
<source>&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;/head&gt;&lt;body style=&quot; white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;&quot;&gt;&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;/head&gt;&lt;body style=&quot; white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;&quot;&gt;&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<source>License</source>
<translation type="unfinished"></translation>
<source>Translation</source>
<translation>Übersetzung</translation>
</message>
</context>
<context>
<name>CAboutDialog</name>
<message>
<source>KeePassX %1</source>
<translation type="unfinished"></translation>
<translation>KeePassX %1</translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished"></translation>
<translation>Fehler</translation>
</message>
<message>
<source>File &apos;%1&apos; could not be found.</source>
<translation type="unfinished"></translation>
<translation>Datei &apos;%1&apos; konnte nicht geöffnet werden.</translation>
</message>
<message>
<source>Make sure that the program is installed correctly.</source>
<translation type="unfinished"></translation>
<translation>Stellen Sie sicher, dass das Programm korrekt installiert wurde.</translation>
</message>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Fehler</source>
<translation type="unfinished"></translation>
<translation>OK</translation>
</message>
<message>
<source>Could not open file &apos;%1&apos;</source>
<translation type="unfinished"></translation>
<translation>Datei &apos;%1&apos; konnte nicht geöffnet werden.</translation>
</message>
<message>
<source>The following error occured:
%1</source>
<translation type="unfinished"></translation>
<translation>Folgender Fehler ist aufgetreten:
%1</translation>
</message>
<message>
<source>http://keepass.berlios.de/index.php</source>
<translation type="unfinished"></translation>
<translation>http://keepass.berlios.de/index.php</translation>
</message>
</context>
<context>
@ -86,7 +83,7 @@
</message>
<message>
<source>Error</source>
<translation type="unfinished"></translation>
<translation type="unfinished">Fehler</translation>
</message>
<message>
<source>Please enter a password.</source>
@ -94,7 +91,7 @@
</message>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
<translation type="unfinished">OK</translation>
</message>
<message>
<source>Please choose a key file.</source>
@ -155,11 +152,11 @@ Please check your input.</source>
</message>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
<translation type="unfinished">OK</translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished"></translation>
<translation type="unfinished">Fehler</translation>
</message>
<message>
<source>&apos;%1&apos; is not valid integer value.</source>
@ -172,10 +169,6 @@ Please check your input.</source>
</context>
<context>
<name>CEditEntryDlg</name>
<message>
<source>Eintrag bearbeiten</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Warning</source>
<translation type="unfinished"></translation>
@ -187,15 +180,7 @@ Please check your input.</source>
</message>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Fehler</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Datei konnte nicht geöffnet werden.</source>
<translation type="unfinished"></translation>
<translation type="unfinished">OK</translation>
</message>
<message>
<source>Save Attachment...</source>
@ -220,7 +205,7 @@ Do you want to replace it?</source>
</message>
<message>
<source>Error</source>
<translation type="unfinished"></translation>
<translation type="unfinished">Fehler</translation>
</message>
<message>
<source>Could not remove old file.</source>
@ -247,6 +232,14 @@ Are you sure?</source>
<source>No, Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Edit Entry</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Could not open file.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CGenPwDialog</name>
@ -260,11 +253,11 @@ Are you sure?</source>
</message>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
<translation type="unfinished">OK</translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished"></translation>
<translation type="unfinished">Fehler</translation>
</message>
<message>
<source>Could not open &apos;/dev/random&apos; or &apos;/dev/urandom&apos;.</source>
@ -273,18 +266,6 @@ Are you sure?</source>
</context>
<context>
<name>CPasswordDialog</name>
<message encoding="UTF-8">
<source>Datenbank öffnen</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Datei manuell wählen...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&lt; keiner &gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No key file found</source>
<translation type="unfinished"></translation>
@ -297,7 +278,7 @@ Please use the manual file selection for key files with a filename other than &a
</message>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
<translation type="unfinished">OK</translation>
</message>
<message>
<source>Browse...</source>
@ -309,7 +290,7 @@ Please use the manual file selection for key files with a filename other than &a
</message>
<message>
<source>Error</source>
<translation type="unfinished"></translation>
<translation type="unfinished">Fehler</translation>
</message>
<message>
<source>Please enter a Password.</source>
@ -323,13 +304,21 @@ Please use the manual file selection for key files with a filename other than &a
<source>Please enter a Password or select a key file.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CSearchDlg</name>
<message>
<source>Suchen</source>
<source>Open Database</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select File Manually...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&lt; none &gt;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CSearchDlg</name>
<message>
<source>Notice</source>
<translation type="unfinished"></translation>
@ -340,6 +329,10 @@ Please use the manual file selection for key files with a filename other than &a
</message>
<message>
<source>OK</source>
<translation type="unfinished">OK</translation>
</message>
<message>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -530,115 +523,111 @@ Please use the manual file selection for key files with a filename other than &a
<context>
<name>GenPwDlg</name>
<message>
<source>Passwort Generator</source>
<source>Alt+U</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Akzep&amp;tieren</source>
<source>Alt+N</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Abbre&amp;chen</source>
<source>Alt+M</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Generieren</source>
<source>Alt+L</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Neues Passwort:</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Qualität:</source>
<source>Password Generator</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Optionen</source>
<source>Accep&amp;t</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Gro&amp;ßbuchstaben</source>
<message>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Alt+ß</source>
<message>
<source>Generate</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Kleinbuchstaben</source>
<source>New Password:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+K</source>
<source>Quality:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Zahlen</source>
<source>Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+Z</source>
<source>&amp;Upper Letters</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>S&amp;onderzeichen</source>
<source>&amp;Lower Letters</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Bindestriche</source>
<source>&amp;Numbers</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Unterstriche</source>
<source>&amp;Special Characters</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+U</source>
<source>Minus</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>h&amp;öhere ANSI-Zeichen</source>
<message>
<source>U&amp;nderline</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Alt+ö</source>
<message>
<source>h&amp;igher ANSI-Characters</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;nur folgende Zeichen benutzen:</source>
<source>Alt+H</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+N</source>
<source>Use &amp;only following characters:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Zeichenanzahl:</source>
<source>Alt+O</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&quot;/dev/rando&amp;m&quot; nutzen (empfohlen)</source>
<source>Length:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+M</source>
<source>Use &quot;/dev/rando&amp;m&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>folgende Zeichengruppen &amp;verwenden:</source>
<source>Use follo&amp;wing character groups:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+V</source>
<source>Alt+W</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Leerzeichen</source>
<source>White &amp;Spaces</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+L</source>
<source>Alt+S</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -688,20 +677,16 @@ Please use the manual file selection for key files with a filename other than &a
<context>
<name>KeepassGroupView</name>
<message>
<source>Gruppen</source>
<source>Search Results</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Search Results</source>
<source>Groups</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>KeepassMainWindow</name>
<message>
<source>Bereit</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ctrl+N</source>
<translation type="unfinished"></translation>
@ -772,7 +757,7 @@ Please use the manual file selection for key files with a filename other than &a
</message>
<message>
<source>Error</source>
<translation type="unfinished"></translation>
<translation type="unfinished">Fehler</translation>
</message>
<message>
<source>The following error occured while opening the database:
@ -781,7 +766,7 @@ Please use the manual file selection for key files with a filename other than &a
</message>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
<translation type="unfinished">OK</translation>
</message>
<message>
<source>Save modified file?</source>
@ -808,14 +793,6 @@ to save the changes?</source>
<source>KeePassX - %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>[neu]</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Databank öffnen...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&lt;B&gt;Group: &lt;/B&gt;%1 &lt;B&gt;Title: &lt;/B&gt;%2 &lt;B&gt;Username: &lt;/B&gt;%3 &lt;B&gt;URL: &lt;/B&gt;&lt;a href=%4&gt;%4&lt;/a&gt; &lt;B&gt;Password: &lt;/B&gt;%5 &lt;B&gt;Creation: &lt;/B&gt;%6 &lt;B&gt;Last Change: &lt;/B&gt;%7 &lt;B&gt;LastAccess: &lt;/B&gt;%8 &lt;B&gt;Expires: &lt;/B&gt;%9</source>
<translation type="unfinished"></translation>
@ -845,6 +822,18 @@ to save the changes?</source>
<source>Save Database As...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ready</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>[new]</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open Database...</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow</name>
@ -860,10 +849,6 @@ to save the changes?</source>
<source>Import from...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Bearbeiten</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>View</source>
<translation type="unfinished"></translation>
@ -1036,6 +1021,14 @@ to save the changes?</source>
<source>About...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Show Statusbar</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PasswordDlg</name>
@ -1045,42 +1038,42 @@ to save the changes?</source>
</message>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
<translation type="unfinished">OK</translation>
</message>
<message>
<source>Abbrechen</source>
<source>...</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Geben Sie das Passwort ein oder wählen Sie eine Schlüsseldatei.</source>
<message>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Schlüssel</source>
<message>
<source>Enter a Password and/or choose a key file.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Passwort:</source>
<source>Key</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>...</source>
<source>Password:</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Schlüsseldatei oder Datenträger:</source>
<message>
<source>Key file or directory:</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>W&amp;ählen...</source>
<message>
<source>&amp;Browse...</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Alt+Ä</source>
<message>
<source>Alt+B</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Passwort UND Schlüsseldatei benutzen</source>
<message>
<source>Use Password AND Key File</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -1143,10 +1136,6 @@ The key is wrong or the file is damaged</source>
</context>
<context>
<name>QObject</name>
<message>
<source>dd&apos;.&apos;MM&apos;.&apos;yy&apos; &apos;hh&apos;:&apos;mm</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Warning</source>
<translation type="unfinished"></translation>
@ -1158,15 +1147,11 @@ Make sure you have write access to &apos;~/.keepass&apos;.</source>
</message>
<message>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Fehler</source>
<translation type="unfinished"></translation>
<translation type="unfinished">OK</translation>
</message>
<message>
<source>File &apos;%1&apos; could not be found.</source>
<translation type="unfinished"></translation>
<translation type="unfinished">Datei &apos;%1&apos; konnte nicht geöffnet werden.</translation>
</message>
<message>
<source>File not found.</source>
@ -1237,221 +1222,229 @@ Make sure you have write access to &apos;~/.keepass&apos;.</source>
</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished">Fehler</translation>
</message>
</context>
<context>
<name>Search_Dlg</name>
<message>
<source>Suche...</source>
<source>Alt+T</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Suchbegriff:</source>
<source>Alt+U</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>regul&amp;ärer Ausdruck</source>
<message>
<source>A&amp;nhang</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Alt+Ä</source>
<message>
<source>Alt+N</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Gro&amp;ß- und Kleinschreibung beachten</source>
<message>
<source>Alt+W</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Alt+ß</source>
<message>
<source>Alt+C</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Suche nach</source>
<source>Search...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Titel</source>
<source>Search For:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+T</source>
<source>Regular E&amp;xpression</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Benut&amp;zername</source>
<source>Alt+X</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+Z</source>
<source>&amp;Case Sensitive</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Kommentar</source>
<source>Include:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+K</source>
<source>&amp;Titles</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;URL</source>
<source>&amp;Usernames</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+U</source>
<source>C&amp;omments</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>A&amp;nhang</source>
<source>Alt+O</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+N</source>
<source>U&amp;RLs</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pass&amp;wort</source>
<source>Alt+R</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+W</source>
<source>Pass&amp;words</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Suchen</source>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>S&amp;chließen</source>
<message>
<source>Clo&amp;se</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+C</source>
<source>Alt+S</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Untergruppen einbeziehen</source>
<source>Include Subgroups (recursive)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context encoding="UTF-8">
<context>
<name>SettingsDialog</name>
<message encoding="UTF-8">
<source>Alt+Ö</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Einstellungen</source>
<source>O&amp;K</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sicherhei&amp;t</source>
<source>Alt+K</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Zwischenablage löschen nach:</source>
<message>
<source>Alt+C</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sekunden</source>
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Passw&amp;örter standardmäßig in Klartext anzeigen</source>
<message>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Alt+Ö</source>
<message>
<source>Securi&amp;try</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>E&amp;rscheinungsbild</source>
<source>Clear clipboard after:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Bannerfarbverlauf</source>
<source>Seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Farbe 1</source>
<source>Sh&amp;ow passwords in plain text by default</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>&amp;ändern...</source>
<message>
<source>Alt+O</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Alt+Ä</source>
<message>
<source>Appea&amp;rance</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Farbe 2</source>
<source>Banner Color</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>ändern...</source>
<message>
<source>Text Color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Textfarbe</source>
<source>Change...</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Gruppenbaum beim &amp;Öffnen aufklappen</source>
<message>
<source>Color 2:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>S&amp;onstiges</source>
<source>C&amp;hange...</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>zuletzt geöffnete Datei bei Programmstart &amp;öffnen</source>
<message>
<source>Alt+H</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Browseraufruf:</source>
<source>Color 1:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>O&amp;K</source>
<source>Expand group tree when opening a database</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+K</source>
<source>&amp;Other</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Abbre&amp;chen</source>
<source>Remember last opend file</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+C</source>
<source>Browser Command:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SimplePasswordDialog</name>
<message>
<source>Passworteingabe</source>
<source>O&amp;K</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Passwort:</source>
<source>Alt+K</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>O&amp;K</source>
<source>Alt+C</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+K</source>
<source>...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Abbre&amp;chen</source>
<source>Enter your Password</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+C</source>
<source>Password:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>...</source>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
</context>

File diff suppressed because it is too large Load Diff

@ -26,15 +26,15 @@
<translation type="unfinished"></translation>
</message>
<message>
<source>&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;/head&gt;&lt;body style=&quot; white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;&quot;&gt;&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;Mattias Miller&lt;/span&gt; (www.outofhanwell.com)&lt;/p&gt;&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt; Mac OS X Support&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<source>License</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Übersetzung</source>
<message>
<source>&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;/head&gt;&lt;body style=&quot; white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;&quot;&gt;&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>License</source>
<source>Translation</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -60,10 +60,6 @@
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Fehler</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Could not open file &apos;%1&apos;</source>
<translation type="unfinished"></translation>
@ -172,10 +168,6 @@ Please check your input.</source>
</context>
<context>
<name>CEditEntryDlg</name>
<message>
<source>Eintrag bearbeiten</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Warning</source>
<translation type="unfinished"></translation>
@ -189,14 +181,6 @@ Please check your input.</source>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Fehler</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Datei konnte nicht geöffnet werden.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Save Attachment...</source>
<translation type="unfinished"></translation>
@ -247,6 +231,14 @@ Are you sure?</source>
<source>No, Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Edit Entry</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Could not open file.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CGenPwDialog</name>
@ -273,18 +265,6 @@ Are you sure?</source>
</context>
<context>
<name>CPasswordDialog</name>
<message encoding="UTF-8">
<source>Datenbank öffnen</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Datei manuell wählen...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&lt; keiner &gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No key file found</source>
<translation type="unfinished"></translation>
@ -323,13 +303,21 @@ Please use the manual file selection for key files with a filename other than &a
<source>Please enter a Password or select a key file.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CSearchDlg</name>
<message>
<source>Suchen</source>
<source>Open Database</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select File Manually...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&lt; none &gt;</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CSearchDlg</name>
<message>
<source>Notice</source>
<translation type="unfinished"></translation>
@ -342,6 +330,10 @@ Please use the manual file selection for key files with a filename other than &a
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CSettingsDlg</name>
@ -530,115 +522,111 @@ Please use the manual file selection for key files with a filename other than &a
<context>
<name>GenPwDlg</name>
<message>
<source>Passwort Generator</source>
<source>Alt+U</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Akzep&amp;tieren</source>
<source>Alt+N</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Abbre&amp;chen</source>
<source>Alt+M</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Generieren</source>
<source>Alt+L</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Neues Passwort:</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Qualität:</source>
<source>Password Generator</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Optionen</source>
<source>Accep&amp;t</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Gro&amp;ßbuchstaben</source>
<message>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Alt+ß</source>
<message>
<source>Generate</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Kleinbuchstaben</source>
<source>New Password:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+K</source>
<source>Quality:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Zahlen</source>
<source>Options</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+Z</source>
<source>&amp;Upper Letters</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>S&amp;onderzeichen</source>
<source>&amp;Lower Letters</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Bindestriche</source>
<source>&amp;Numbers</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Unterstriche</source>
<source>&amp;Special Characters</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+U</source>
<source>Minus</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>h&amp;öhere ANSI-Zeichen</source>
<message>
<source>U&amp;nderline</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Alt+ö</source>
<message>
<source>h&amp;igher ANSI-Characters</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;nur folgende Zeichen benutzen:</source>
<source>Alt+H</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+N</source>
<source>Use &amp;only following characters:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Zeichenanzahl:</source>
<source>Alt+O</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&quot;/dev/rando&amp;m&quot; nutzen (empfohlen)</source>
<source>Length:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+M</source>
<source>Use &quot;/dev/rando&amp;m&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>folgende Zeichengruppen &amp;verwenden:</source>
<source>Use follo&amp;wing character groups:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+V</source>
<source>Alt+W</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Leerzeichen</source>
<source>White &amp;Spaces</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+L</source>
<source>Alt+S</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -688,20 +676,16 @@ Please use the manual file selection for key files with a filename other than &a
<context>
<name>KeepassGroupView</name>
<message>
<source>Gruppen</source>
<source>Search Results</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Search Results</source>
<source>Groups</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>KeepassMainWindow</name>
<message>
<source>Bereit</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ctrl+N</source>
<translation type="unfinished"></translation>
@ -808,14 +792,6 @@ to save the changes?</source>
<source>KeePassX - %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>[neu]</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Databank öffnen...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&lt;B&gt;Group: &lt;/B&gt;%1 &lt;B&gt;Title: &lt;/B&gt;%2 &lt;B&gt;Username: &lt;/B&gt;%3 &lt;B&gt;URL: &lt;/B&gt;&lt;a href=%4&gt;%4&lt;/a&gt; &lt;B&gt;Password: &lt;/B&gt;%5 &lt;B&gt;Creation: &lt;/B&gt;%6 &lt;B&gt;Last Change: &lt;/B&gt;%7 &lt;B&gt;LastAccess: &lt;/B&gt;%8 &lt;B&gt;Expires: &lt;/B&gt;%9</source>
<translation type="unfinished"></translation>
@ -845,6 +821,18 @@ to save the changes?</source>
<source>Save Database As...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ready</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>[new]</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open Database...</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainWindow</name>
@ -860,10 +848,6 @@ to save the changes?</source>
<source>Import from...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Bearbeiten</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>View</source>
<translation type="unfinished"></translation>
@ -1036,6 +1020,14 @@ to save the changes?</source>
<source>About...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Show Statusbar</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PasswordDlg</name>
@ -1048,39 +1040,39 @@ to save the changes?</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Abbrechen</source>
<source>...</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Geben Sie das Passwort ein oder wählen Sie eine Schlüsseldatei.</source>
<message>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Schlüssel</source>
<message>
<source>Enter a Password and/or choose a key file.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Passwort:</source>
<source>Key</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>...</source>
<source>Password:</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Schlüsseldatei oder Datenträger:</source>
<message>
<source>Key file or directory:</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>W&amp;ählen...</source>
<message>
<source>&amp;Browse...</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Alt+Ä</source>
<message>
<source>Alt+B</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Passwort UND Schlüsseldatei benutzen</source>
<message>
<source>Use Password AND Key File</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -1143,10 +1135,6 @@ The key is wrong or the file is damaged</source>
</context>
<context>
<name>QObject</name>
<message>
<source>dd&apos;.&apos;MM&apos;.&apos;yy&apos; &apos;hh&apos;:&apos;mm</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Warning</source>
<translation type="unfinished"></translation>
@ -1160,10 +1148,6 @@ Make sure you have write access to &apos;~/.keepass&apos;.</source>
<source>OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Fehler</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>File &apos;%1&apos; could not be found.</source>
<translation type="unfinished"></translation>
@ -1237,221 +1221,229 @@ Make sure you have write access to &apos;~/.keepass&apos;.</source>
</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Search_Dlg</name>
<message>
<source>Suche...</source>
<source>Alt+T</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Suchbegriff:</source>
<source>Alt+U</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>regul&amp;ärer Ausdruck</source>
<message>
<source>A&amp;nhang</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Alt+Ä</source>
<message>
<source>Alt+N</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Gro&amp;ß- und Kleinschreibung beachten</source>
<message>
<source>Alt+W</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Alt+ß</source>
<message>
<source>Alt+C</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Suche nach</source>
<source>Search...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Titel</source>
<source>Search For:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+T</source>
<source>Regular E&amp;xpression</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Benut&amp;zername</source>
<source>Alt+X</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+Z</source>
<source>&amp;Case Sensitive</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;Kommentar</source>
<source>Include:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+K</source>
<source>&amp;Titles</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>&amp;URL</source>
<source>&amp;Usernames</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+U</source>
<source>C&amp;omments</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>A&amp;nhang</source>
<source>Alt+O</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+N</source>
<source>U&amp;RLs</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pass&amp;wort</source>
<source>Alt+R</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+W</source>
<source>Pass&amp;words</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Suchen</source>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>S&amp;chließen</source>
<message>
<source>Clo&amp;se</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+C</source>
<source>Alt+S</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Untergruppen einbeziehen</source>
<source>Include Subgroups (recursive)</source>
<translation type="unfinished"></translation>
</message>
</context>
<context encoding="UTF-8">
<context>
<name>SettingsDialog</name>
<message encoding="UTF-8">
<source>Alt+Ö</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Einstellungen</source>
<source>O&amp;K</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sicherhei&amp;t</source>
<source>Alt+K</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Zwischenablage löschen nach:</source>
<message>
<source>Alt+C</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sekunden</source>
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Passw&amp;örter standardmäßig in Klartext anzeigen</source>
<message>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Alt+Ö</source>
<message>
<source>Securi&amp;try</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>E&amp;rscheinungsbild</source>
<source>Clear clipboard after:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Bannerfarbverlauf</source>
<source>Seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Farbe 1</source>
<source>Sh&amp;ow passwords in plain text by default</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>&amp;ändern...</source>
<message>
<source>Alt+O</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Alt+Ä</source>
<message>
<source>Appea&amp;rance</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Farbe 2</source>
<source>Banner Color</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>ändern...</source>
<message>
<source>Text Color:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Textfarbe</source>
<source>Change...</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>Gruppenbaum beim &amp;Öffnen aufklappen</source>
<message>
<source>Color 2:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>S&amp;onstiges</source>
<source>C&amp;hange...</source>
<translation type="unfinished"></translation>
</message>
<message encoding="UTF-8">
<source>zuletzt geöffnete Datei bei Programmstart &amp;öffnen</source>
<message>
<source>Alt+H</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Browseraufruf:</source>
<source>Color 1:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>O&amp;K</source>
<source>Expand group tree when opening a database</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+K</source>
<source>&amp;Other</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Abbre&amp;chen</source>
<source>Remember last opend file</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+C</source>
<source>Browser Command:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SimplePasswordDialog</name>
<message>
<source>Passworteingabe</source>
<source>O&amp;K</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Passwort:</source>
<source>Alt+K</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>O&amp;K</source>
<source>Alt+C</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+K</source>
<source>...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Abbre&amp;chen</source>
<source>Enter your Password</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Alt+C</source>
<source>Password:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>...</source>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
</context>