From 853747bce10b345dd37355906a2fb793050d83b4 Mon Sep 17 00:00:00 2001 From: tariq Date: Tue, 14 Mar 2006 07:14:20 +0000 Subject: [PATCH] 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 --- .../icons/nuvola/32x32/actions/help.png | Bin 0 -> 2671 bytes src/PwManager.cpp | 6 +- src/PwManager.h | 1 - src/PwmConfig.cpp | 4 + src/PwmConfig.h | 2 + src/crypto/twofish.cpp | 5 +- src/dialogs/AboutDlg.cpp | 2 +- src/dialogs/EditEntryDlg.cpp | 8 +- src/dialogs/PasswordDlg.cpp | 21 +- src/dialogs/PasswordDlg.h | 12 +- src/dialogs/SettingsDlg.cpp | 2 + src/dialogs/SimplePasswordDlg.cpp | 8 +- src/dialogs/SimplePasswordDlg.h | 2 +- src/forms/AboutDlg.ui | 4 +- src/forms/MainWindow.ui | 86 +- src/forms/PasswordDlg.ui | 7 + src/forms/SettingsDlg.ui | 859 ++++++---- src/lib/EntryView.cpp | 80 +- src/lib/EntryView.h | 9 + src/lib/GroupView.cpp | 124 +- src/lib/GroupView.h | 2 + src/main.cpp | 85 +- src/main.h | 2 +- src/mainwindow.cpp | 115 +- src/mainwindow.h | 5 +- src/src.pro | 6 +- src/translations/keepass-de_DE.ts | 413 +++-- src/translations/keepass-ru_RU.ts | 1489 +++++++++++++++++ src/translations/keepass-xx_XX.ts | 348 ++-- 29 files changed, 2773 insertions(+), 934 deletions(-) create mode 100644 share/keepass/icons/nuvola/32x32/actions/help.png create mode 100644 src/translations/keepass-ru_RU.ts diff --git a/share/keepass/icons/nuvola/32x32/actions/help.png b/share/keepass/icons/nuvola/32x32/actions/help.png new file mode 100644 index 0000000000000000000000000000000000000000..d56ba2c2449cb156979af2896e82be831f258d93 GIT binary patch literal 2671 zcmXX|X;f3^7QNv@!f=rwY7$WcMUf}L1cCw&BncpcMnSZcs3ilFwJJC~KnuCKAORGO zs7SCBP_%VDtze}UTP1;jj0IY)VvCXphyzF{Lqc+s`{H}=$9K*;f6iI!+h^~yOX9Xi zIodC`2LQk^CORVClHEQ&Tf8M6J#k{zlC0A?+c*GF-x*+Y>aC@w9NV0DY-dK=v25Xy zRDhF`Axd?NIVem|jZYP(96#KZ8Ug_JxR?meuADzbD2B0AY%2*M5|IS}kxgUZ>$+&% z=P)K&TuQu*ASD_dpD9&fL*&Fn$LGA~$K*U-1es!Hnim#~BlR_`3>2Gwzc|hefXo^9 z+UkA?yCO!7PNGMwlfPm7OZi_|db_`gh+ASZjMy|bMsO3l!=ACrcP1s3a(10_@oMYU zj?+Qay(xHsuQ0jmCf@G37hG}Z;)5LRY^#FK|BlJ<^|5|cqc0`cxKw31O8LIo5;w@n3!6Tb$`D@v-^`Hb28s{iPe0 zgkp{mf+>mVxQ-{X8kpRSrHJ&ZwqLcAECZSGE2?E?C4N<~!0O9KS87efTxa;TT6~knJ zf1vum%QgM*B0ME^4gOMb9CFn49t}lDgB(Eb_ab~Fmq29O5|pdWrlskE6dv&#_4>&# zy}PsyAYK{LJ8mhVlDVkxC zeqk&a3{Wg7I9ow|e}C!LbQGPP3k4l|oKpyZHF5t&Yu>CeqvAqQ;riYqaZh}K0-gWB zcy~UF@@}VN%cZHnh0-foPgAA$zn;pkbL-@l2qW*TSDpS&Mh?w0f&S7mjjlffV!hmy zCKy|q7I$P`EfS?&cI5i+RbO49ezn7&`Df4fJT zNji>?-eTy_)S_QXnX!YEgcZj2fhP6xMDDhvbM66bsiv=hq>eDm1PnN{ni*)0@glNy z_ZiNvs92Ev@Oh^gZ|ml{+E^)RYJ2=xzT1 zNIgC#7)ZE~(lo23tBPW4BmS;vN#Iu@MJBqcB16$~0yYU#^mCIwDqSp}lCzBO z)ihJVk=MA$17Rkr@9EXPQ^hvW+X@HCOWJ~J7wHN9;5BMAoZF)8>}ywgdt8T(m9OpH zEdjy;)&2aa%}ayIqH4&L+o2|vQco56c9Mq0C~jHE5S07L?+`O9PZXH@HATMYTFVg@ zvfpf8=umdGv}v8l@m#h`rM!|Nme9t2s}g*O{C_Srsh~SLgA+A(E1q*xekd zX08K+9_#W_a~7OOi!tIeaQZVr^|&T2d0^)SQQY}uR=c$%`8ejg_ZO_1lT=m0*>ch) z@sKGwNB1^B^^n9On+w8-6S!!v2WBmzdE6m`Xdw?E?tufB8DHY8Y(D_Y5)x9kuUao~ zpQ+G{o#sP3vteP*%mO`7h#J7@UuD$VCR4li%~+H)SoYE{f=3;P2-JofTB)$p)_ zlK5Os>3eBz)vDY1(Uc#;A z4I@`8Og)Tr%n85KW*PoqOhWCNb0@ogZSNM;c?15_Bozk3|jFq4xp*x&rCS1X=!sLXFSyC2D%s`EX zNxR-8%Oa2F^WodgVl*FdO>D{Z3wQOvYNe8Wp3%h;eJPvocNh2r_lIA>eriG{$Er_y zPHmPAIJMWVXm9Q7(z?pUW)phcAxwAER9GK2!V=couR;^4WQR9 z$(5N`Cc5;eAL*160SY|cmiq#}v3nO^HTy$D1FnaVC8f%$^RFhe{=4_<2=aPZyzpB8 zb$UH{v<)d|jj)OfF#&n`as|e))i&hUvE$F3;lvk%D|~E+&72!ii$~PX)&`WMs{gLP z8W_nT{GX-NhBx||dpg6NqtF9o{I(sX7jSz$u>!*>jnj=RA#pT4Iq~!B-ErzJRh)BY ze?vo<3wh}Q;*VM)pkWb1hgGp+@~Z3ujrRn4~rSJ4yTa1)dpEQcQ+mn*$Jd5!?NJLbJrj3OV0P-aqtR$kRY(|gAU6zB42x6r zCk#)f6jQ^WT8-Qz?FFuWJlmOpYSuNMd85qJ0~|@=tg%Tyoad9dZGP^3wlsr{ju-<3 z1!DnCN|7~wgG&SNQEO|TvaK7(-N&LdzxY|DoiUq&F*uiQ{d1;+ztVSw#Z>860^4)o zM2Q`(q~y$|qR%4ZD?a0#MG7k_kg{^ei%H5Pw$l0$ZA3jn5k#6 zKs$?@-V$CX(uoGypqTJu`)1d6gjK5u?c3tFs7R{x(J>O z;U8g~+Uvo{yH#OZHjjD+dHu*5>W3CoKw#0Txop>!f58^V2*hmO9&tNN GkpCaur}P*A literal 0 HcmV?d00001 diff --git a/src/PwManager.cpp b/src/PwManager.cpp index 3fbe60f..9d1dc2d 100755 --- a/src/PwManager.cpp +++ b/src/PwManager.cpp @@ -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;} diff --git a/src/PwManager.h b/src/PwManager.h index cd68b52..8546e4f 100755 --- a/src/PwManager.h +++ b/src/PwManager.h @@ -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); diff --git a/src/PwmConfig.cpp b/src/PwmConfig.cpp index 0162ad8..ac7f6b1 100755 --- a/src/PwmConfig.cpp +++ b/src/PwmConfig.cpp @@ -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; } diff --git a/src/PwmConfig.h b/src/PwmConfig.h index 24b3f7a..23e0456 100755 --- a/src/PwmConfig.h +++ b/src/PwmConfig.h @@ -51,6 +51,8 @@ public: int MainWinSplit1; int MainWinSplit2; int ColumnSizes[10]; + bool ShowStatusbar; + bool AlternatingRowColors; bool loadFromIni(QString filename); bool saveToIni(QString filename); diff --git a/src/crypto/twofish.cpp b/src/crypto/twofish.cpp index 652d916..949351d 100755 --- a/src/crypto/twofish.cpp +++ b/src/crypto/twofish.cpp @@ -474,9 +474,10 @@ #endif -#include + void Twofish_fatal(char* msg){ -QMessageBox::critical(0,"Interner Fehler",msg,"OK","Cancel",0,2,1); + qCritical("Twofish: Fatal Error"); + exit(1); } diff --git a/src/dialogs/AboutDlg.cpp b/src/dialogs/AboutDlg.cpp index c1ba894..8263c75 100755 --- a/src/dialogs/AboutDlg.cpp +++ b/src/dialogs/AboutDlg.cpp @@ -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; diff --git a/src/dialogs/EditEntryDlg.cpp b/src/dialogs/EditEntryDlg.cpp index e0f5c6d..42de514 100755 --- a/src/dialogs/EditEntryDlg.cpp +++ b/src/dialogs/EditEntryDlg.cpp @@ -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; diff --git a/src/dialogs/PasswordDlg.cpp b/src/dialogs/PasswordDlg.cpp index 7ec47a7..2a61417 100755 --- a/src/dialogs/PasswordDlg.cpp +++ b/src/dialogs/PasswordDlg.cpp @@ -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.prepend(tr("< none >")); } for(int i=0;iinsertItem(0,Paths[i]); @@ -208,11 +209,7 @@ Edit_Password->setEchoMode(QLineEdit::Normal); } - - - -/*$SPECIALIZATION$*/ - - -//#include "passworddialog.moc" +void CPasswordDialog::OnButtonExit(){ + done(2); +} diff --git a/src/dialogs/PasswordDlg.h b/src/dialogs/PasswordDlg.h index 6b9450d..8b826b4 100755 --- a/src/dialogs/PasswordDlg.h +++ b/src/dialogs/PasswordDlg.h @@ -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$*/ - }; diff --git a/src/dialogs/SettingsDlg.cpp b/src/dialogs/SettingsDlg.cpp index d37cf9d..6a26140 100755 --- a/src/dialogs/SettingsDlg.cpp +++ b/src/dialogs/SettingsDlg.cpp @@ -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(); } diff --git a/src/dialogs/SimplePasswordDlg.cpp b/src/dialogs/SimplePasswordDlg.cpp index 5c68953..8631719 100755 --- a/src/dialogs/SimplePasswordDlg.cpp +++ b/src/dialogs/SimplePasswordDlg.cpp @@ -18,16 +18,16 @@ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ - -#include "SimplePasswordDlg.h" #include #include +#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() diff --git a/src/dialogs/SimplePasswordDlg.h b/src/dialogs/SimplePasswordDlg.h index 3b2fe1b..adb95a3 100755 --- a/src/dialogs/SimplePasswordDlg.h +++ b/src/dialogs/SimplePasswordDlg.h @@ -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$*/ diff --git a/src/forms/AboutDlg.ui b/src/forms/AboutDlg.ui index e7e787f..0512a6f 100644 --- a/src/forms/AboutDlg.ui +++ b/src/forms/AboutDlg.ui @@ -131,13 +131,13 @@ - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Mattias Miller</span> (www.outofhanwell.com)</p><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</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><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;"></p></body></html> - Übersetzung + Translation diff --git a/src/forms/MainWindow.ui b/src/forms/MainWindow.ui index e625598..d0b7dd4 100644 --- a/src/forms/MainWindow.ui +++ b/src/forms/MainWindow.ui @@ -114,31 +114,6 @@ 29 - - - File - - - - Import from... - - - - - - - - - - - - - - - - - - Edit @@ -182,12 +157,45 @@ + + + + File + + + + Import from... + + + + + + + Export to... + + + + + + + + + + + + + + + + + + Extras @@ -198,6 +206,8 @@ Help + + @@ -477,20 +487,38 @@ About... + + + true + + + Show Statusbar + + + + + KeePassX Handbook... + + + + + Plain Text (*.txt) + + - KeepassEntryView + KeepassGroupView QTreeWidget -
../../src/lib/EntryView.h
+
../../src/lib/GroupView.h
0
- KeepassGroupView + KeepassEntryView QTreeWidget -
../../src/lib/GroupView.h
+
../../src/lib/EntryView.h
0
diff --git a/src/forms/PasswordDlg.ui b/src/forms/PasswordDlg.ui index 5f376b4..6c00480 100644 --- a/src/forms/PasswordDlg.ui +++ b/src/forms/PasswordDlg.ui @@ -105,6 +105,13 @@ + + + + Exit + + + diff --git a/src/forms/SettingsDlg.ui b/src/forms/SettingsDlg.ui index 60e4d69..7f2a4a9 100644 --- a/src/forms/SettingsDlg.ui +++ b/src/forms/SettingsDlg.ui @@ -1,384 +1,523 @@ - - - - SettingsDialog - - + + + + SettingsDialog + + + + 0 + 0 + 571 + 341 + + + + + 571 + 341 + + + + + 571 + 341 + + + + Settings + + + + + 470 + 310 + 90 + 23 + + + + &Cancel + + + Alt+C + + + + + + 0 + 0 + 570 + 50 + + + + + + + true + + + + + + 380 + 310 + 80 + 23 + + + + O&K + + + Alt+K + + + + + + 10 + 60 + 550 + 241 + + + + + Securi&try + + + - 0 - 0 - 571 - 341 + 10 + 20 + 531 + 25 - - - - 571 - 341 - - - - - 571 - 341 - - - - Settings - - - - - 0 - 0 - 570 - 50 - + + + + 0 - - - - - true + + 6 + + + + + 4 + 5 + 0 + 0 + + + + Clear clipboard after: + + + + + + + + 5 + 0 + 0 + 0 + + + + + 80 + 16777215 + + + + 50000 + + + 2 + + + + + + + Seconds + + + + + + + + + 10 + 50 + 531 + 20 + + + + Sh&ow passwords in plain text by default + + + Alt+O + - + + + + Appea&rance + + + + + 20 + 10 + 520 + 90 + + + + Banner Color + + - - 10 - 60 - 550 - 241 - + + 11 + 20 + 501 + 62 + - - - Securi&try - - - - - 10 - 20 - 231 - 20 - - - - Clear clipboard after: - + + + 0 + + + 6 + + + + + Text Color: + - - - - 250 - 20 - 80 - 20 - - + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + + 4 + 0 + 0 + 0 + + + + Change... + + + + - - - - 340 - 20 - 100 - 20 - - - - Seconds - + + + + + + 4 + 5 + 0 + 0 + + + + Color 2: + - - - - 10 - 50 - 420 - 20 - - - - Sh&ow passwords in plain text by default - - - Alt+O - + + + + + + 4 + 0 + 0 + 0 + + + + + 23 + 23 + + + + + 23 + 23 + + + + + - - - - Appea&rance - - - - - 10 - 10 - 520 - 90 - - - - Banner Color - - - - - 10 - 20 - 53 - 20 - - - - Color 1 - - - - - - 70 - 20 - 22 - 22 - - - - - - - true - - - - - - 100 - 20 - 60 - 23 - - - - C&hange... - - - Alt+H - - - - - - 190 - 20 - 60 - 20 - - - - Color 2 - - - - - - 70 - 50 - 22 - 22 - - - - - - - true - - - - - - 100 - 50 - 60 - 23 - - - - Change... - - - - - - - - - 10 - 50 - 54 - 20 - - - - Text Color - - - - - - 250 - 20 - 22 - 22 - - - - - - - true - - - - - - 280 - 20 - 60 - 23 - - - - Change... - - - - - + + + + + + 4 + 0 + 0 + 0 + + + + + 23 + 23 + + + + + 23 + 23 + + + + + + + true + - - - - 10 - 110 - 380 - 20 - - - - Expand group tree when opening a database - - - Alt+Ö - + + + + + + 4 + 0 + 0 + 0 + + + + Change... + + + + - - - - &Other - - - - - 10 - 20 - 380 - 20 - - - - Remember last opend file - - - Alt+Ö - + + + + + + 4 + 0 + 0 + 0 + + + + + 23 + 23 + + + + + 23 + 23 + + + + + + + true + - - - - 10 - 50 - 110 - 20 - - - - Browser Command: - + + + + + + 4 + 0 + 0 + 0 + + + + C&hange... + + + Alt+H + - - - - 120 - 50 - 190 - 21 - - + + + + + + 4 + 5 + 0 + 0 + + + + Color 1: + - + + + + + Qt::Horizontal + + + QSizePolicy::Minimum + + + + 40 + 20 + + + + + + - - - - 380 - 310 - 80 - 23 - - - - O&K - - - Alt+K - + + + + 10 + 110 + 521 + 20 + + + + Expand group tree when opening a database + + + Alt+Ö + - - - - 470 - 310 - 90 - 23 - - - - &Cancel + + + + 10 + 130 + 531 + 22 + + + + Alternating Row Colors + + + + + + &Other + + + + + 10 + 20 + 380 + 20 + + + + Remember last opend file + + + Alt+Ö + + + + + + 10 + 50 + 531 + 25 + + + + + 0 - - Alt+C + + 6 + + + + Browser Command: + + + + + + + + - - - - - Q3GroupBox - -
Qt3Support/Q3GroupBox
- 1 - -
-
- - tabWidget4 - SpinBox_ClipboardTime - CheckBox_ShowPasswords - ButtonColor1 - ButtonTextColor - ButtonColor2 - CheckBox_OpenLast - Edit_BrowserCmd - ButtonOK - ButtonCancel - - - +
+ + + + + Q3GroupBox + +
Qt3Support/Q3GroupBox
+ 1 + +
+
+ + tabWidget4 + SpinBox_ClipboardTime + CheckBox_ShowPasswords + ButtonColor1 + ButtonTextColor + ButtonColor2 + CheckBox_OpenLast + Edit_BrowserCmd + ButtonOK + ButtonCancel + + +
diff --git a/src/lib/EntryView.cpp b/src/lib/EntryView.cpp index 6df9687..3cbfc6e 100644 --- a/src/lib/EntryView.cpp +++ b/src/lib/EntryView.cpp @@ -26,6 +26,8 @@ #include #include #include +#include +#include #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;isetText(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;ifont(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){ diff --git a/src/lib/EntryView.h b/src/lib/EntryView.h index 184286d..cd13a45 100644 --- a/src/lib/EntryView.h +++ b/src/lib/EntryView.h @@ -50,10 +50,19 @@ private: QListColumnSizes; void resizeColumns(); bool AutoResizeColumns; + QPoint DragStartPos; + QList 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); }; diff --git a/src/lib/GroupView.cpp b/src/lib/GroupView.cpp index 22d8c86..7bfa2d3 100644 --- a/src/lib/GroupView.cpp +++ b/src/lib/GroupView.cpp @@ -34,6 +34,7 @@ #include #include #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()<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* pDragItems=(QList*)*((QList**)event->mimeData()->data("keepass/entry").data()); + for(int i=0;isize();i++){ + db->moveEntry(((EntryViewItem*)(*pDragItems)[i])->pEntry,item->pGroup); + } + + } -else db->moveGroup(DragItem->pGroup,NULL); + updateItems(); } diff --git a/src/lib/GroupView.h b/src/lib/GroupView.h index 185a6c9..7edece1 100644 --- a/src/lib/GroupView.h +++ b/src/lib/GroupView.h @@ -60,6 +60,8 @@ private: GroupViewItem* DragItem; GroupViewItem* LastHoverItem; GroupViewItem* getLastSameLevelItem(int level); + enum tDragType{GROUP,ENTRY}; + tDragType DragType; }; diff --git a/src/main.cpp b/src/main.cpp index 40281a3..edcd655 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -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")); } diff --git a/src/main.h b/src/main.h index 131a91f..b2d3204 100644 --- a/src/main.h +++ b/src/main.h @@ -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 \ No newline at end of file diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index cd8bc80..76cc0dd 100755 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -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() << 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(){ diff --git a/src/mainwindow.h b/src/mainwindow.h index 4e8f287..85fd828 100755 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -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); diff --git a/src/src.pro b/src/src.pro index a671193..8c0de9c 100755 --- a/src/src.pro +++ b/src/src.pro @@ -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/ diff --git a/src/translations/keepass-de_DE.ts b/src/translations/keepass-de_DE.ts index 8078fc5..2460769 100644 --- a/src/translations/keepass-de_DE.ts +++ b/src/translations/keepass-de_DE.ts @@ -3,79 +3,76 @@ AboutDlg About - + Über Homepage: - + Homepage: KeePassX - Cross Platform Password Manager - + KeePassX - Cross-Platform Passwort Manager Email: - + EMail: Copyright (C) 2005-2006 Tarek Saidi - + Copyright (C) 2005-2006 Tarek Saidi Thanks To - + Dank An - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Mattias Miller</span> (www.outofhanwell.com)</p><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</p></body></html> - + License + Lizenz - - Übersetzung - + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><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;"></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><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;"></p></body></html> - License - + Translation + Übersetzung CAboutDialog KeePassX %1 - + KeePassX %1 Error - + Fehler File '%1' could not be found. - + Datei '%1' konnte nicht geöffnet werden. Make sure that the program is installed correctly. - + Stellen Sie sicher, dass das Programm korrekt installiert wurde. OK - - - - Fehler - + OK Could not open file '%1' - + Datei '%1' konnte nicht geöffnet werden. The following error occured: %1 - + Folgender Fehler ist aufgetreten: +%1 http://keepass.berlios.de/index.php - + http://keepass.berlios.de/index.php @@ -86,7 +83,7 @@ Error - + Fehler Please enter a password. @@ -94,7 +91,7 @@ OK - + OK Please choose a key file. @@ -155,11 +152,11 @@ Please check your input. OK - + OK Error - + Fehler '%1' is not valid integer value. @@ -172,10 +169,6 @@ Please check your input. CEditEntryDlg - - Eintrag bearbeiten - - Warning @@ -187,15 +180,7 @@ Please check your input. OK - - - - Fehler - - - - Datei konnte nicht geöffnet werden. - + OK Save Attachment... @@ -220,7 +205,7 @@ Do you want to replace it? Error - + Fehler Could not remove old file. @@ -247,6 +232,14 @@ Are you sure? No, Cancel + + Edit Entry + + + + Could not open file. + + CGenPwDialog @@ -260,11 +253,11 @@ Are you sure? OK - + OK Error - + Fehler Could not open '/dev/random' or '/dev/urandom'. @@ -273,18 +266,6 @@ Are you sure? CPasswordDialog - - Datenbank öffnen - - - - Datei manuell wählen... - - - - < keiner > - - No key file found @@ -297,7 +278,7 @@ Please use the manual file selection for key files with a filename other than &a OK - + OK Browse... @@ -309,7 +290,7 @@ Please use the manual file selection for key files with a filename other than &a Error - + Fehler Please enter a Password. @@ -323,13 +304,21 @@ Please use the manual file selection for key files with a filename other than &a Please enter a Password or select a key file. - - - CSearchDlg - Suchen + Open Database + + + + Select File Manually... + + < none > + + + + + CSearchDlg Notice @@ -340,6 +329,10 @@ Please use the manual file selection for key files with a filename other than &a OK + OK + + + Search @@ -530,115 +523,111 @@ Please use the manual file selection for key files with a filename other than &a GenPwDlg - Passwort Generator + Alt+U - Akzep&tieren + Alt+N - Abbre&chen + Alt+M - Generieren + Alt+L - Neues Passwort: - - - - Qualität: + Password Generator - Optionen + Accep&t - - Gro&ßbuchstaben + + &Cancel - - Alt+ß + + Generate - &Kleinbuchstaben + New Password: - Alt+K + Quality: - &Zahlen + Options - Alt+Z + &Upper Letters - S&onderzeichen + &Lower Letters - Bindestriche + &Numbers - &Unterstriche + &Special Characters - Alt+U + Minus - - h&öhere ANSI-Zeichen + + U&nderline - - Alt+ö + + h&igher ANSI-Characters - &nur folgende Zeichen benutzen: + Alt+H - Alt+N + Use &only following characters: - Zeichenanzahl: + Alt+O - "/dev/rando&m" nutzen (empfohlen) + Length: - Alt+M + Use "/dev/rando&m" - folgende Zeichengruppen &verwenden: + Use follo&wing character groups: - Alt+V + Alt+W - &Leerzeichen + White &Spaces - Alt+L + Alt+S @@ -688,20 +677,16 @@ Please use the manual file selection for key files with a filename other than &a KeepassGroupView - Gruppen + Search Results - Search Results + Groups KeepassMainWindow - - Bereit - - Ctrl+N @@ -772,7 +757,7 @@ Please use the manual file selection for key files with a filename other than &a Error - + Fehler 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 OK - + OK Save modified file? @@ -808,14 +793,6 @@ to save the changes? KeePassX - %1 - - [neu] - - - - Databank öffnen... - - <B>Group: </B>%1 <B>Title: </B>%2 <B>Username: </B>%3 <B>URL: </B><a href=%4>%4</a> <B>Password: </B>%5 <B>Creation: </B>%6 <B>Last Change: </B>%7 <B>LastAccess: </B>%8 <B>Expires: </B>%9 @@ -845,6 +822,18 @@ to save the changes? Save Database As... + + Ready + + + + [new] + + + + Open Database... + + MainWindow @@ -860,10 +849,6 @@ to save the changes? Import from... - - Bearbeiten - - View @@ -1036,6 +1021,14 @@ to save the changes? About... + + Edit + + + + Show Statusbar + + PasswordDlg @@ -1045,42 +1038,42 @@ to save the changes? OK - + OK - Abbrechen + ... - - Geben Sie das Passwort ein oder wählen Sie eine Schlüsseldatei. + + Cancel - - Schlüssel + + Enter a Password and/or choose a key file. - Passwort: + Key - ... + Password: - - Schlüsseldatei oder Datenträger: + + Key file or directory: - - W&ählen... + + &Browse... - - Alt+Ä + + Alt+B - - Passwort UND Schlüsseldatei benutzen + + Use Password AND Key File @@ -1143,10 +1136,6 @@ The key is wrong or the file is damaged QObject - - dd'.'MM'.'yy' 'hh':'mm - - Warning @@ -1158,15 +1147,11 @@ Make sure you have write access to '~/.keepass'. OK - - - - Fehler - + OK File '%1' could not be found. - + Datei '%1' konnte nicht geöffnet werden. File not found. @@ -1237,221 +1222,229 @@ Make sure you have write access to '~/.keepass'. + + Error + Fehler + Search_Dlg - Suche... + Alt+T - Suchbegriff: + Alt+U - - regul&ärer Ausdruck + + A&nhang - - Alt+Ä + + Alt+N - - Gro&ß- und Kleinschreibung beachten + + Alt+W - - Alt+ß + + Alt+C - Suche nach + Search... - &Titel + Search For: - Alt+T + Regular E&xpression - Benut&zername + Alt+X - Alt+Z + &Case Sensitive - &Kommentar + Include: - Alt+K + &Titles - &URL + &Usernames - Alt+U + C&omments - A&nhang + Alt+O - Alt+N + U&RLs - Pass&wort + Alt+R - Alt+W + Pass&words - Suchen + Search - - S&chließen + + Clo&se - Alt+C + Alt+S - Untergruppen einbeziehen + Include Subgroups (recursive) - + SettingsDialog + + Alt+Ö + + - Einstellungen + O&K - Sicherhei&t + Alt+K - - Zwischenablage löschen nach: + + Alt+C - Sekunden + Settings - - Passw&örter standardmäßig in Klartext anzeigen + + &Cancel - - Alt+Ö + + Securi&try - E&rscheinungsbild + Clear clipboard after: - Bannerfarbverlauf + Seconds - Farbe 1 + Sh&ow passwords in plain text by default - - &ändern... + + Alt+O - - Alt+Ä + + Appea&rance - Farbe 2 + Banner Color - - ändern... + + Text Color: - Textfarbe + Change... - - Gruppenbaum beim &Öffnen aufklappen + + Color 2: - S&onstiges + C&hange... - - zuletzt geöffnete Datei bei Programmstart &öffnen + + Alt+H - Browseraufruf: + Color 1: - O&K + Expand group tree when opening a database - Alt+K + &Other - Abbre&chen + Remember last opend file - Alt+C + Browser Command: SimplePasswordDialog - Passworteingabe + O&K - Passwort: + Alt+K - O&K + Alt+C - Alt+K + ... - Abbre&chen + Enter your Password - Alt+C + Password: - ... + &Cancel diff --git a/src/translations/keepass-ru_RU.ts b/src/translations/keepass-ru_RU.ts new file mode 100644 index 0000000..80929a3 --- /dev/null +++ b/src/translations/keepass-ru_RU.ts @@ -0,0 +1,1489 @@ + + + AboutDlg + + About + + + + Homepage: + + + + KeePassX - Cross Platform Password Manager + + + + Email: + + + + Copyright (C) 2005-2006 Tarek Saidi + + + + Thanks To + + + + License + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><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;"></p></body></html> + + + + Translation + + + + + CAboutDialog + + KeePassX %1 + + + + Error + + + + File '%1' could not be found. + + + + Make sure that the program is installed correctly. + + + + OK + + + + Could not open file '%1' + + + + The following error occured: +%1 + + + + http://keepass.berlios.de/index.php + + + + + CChangeKeyDlg + + Change Master Key + + + + Error + + + + Please enter a password. + + + + OK + + + + Please choose a key file. + + + + Please select a key file or enter a password. + + + + Overwrite? + + + + A file with this name already exists. +Do you want to replace it? + + + + Could not open key file for writing. + + + + Key file could not be written. + + + + Password and password repetition are not equal. +Please check your input. + + + + Open key file + + + + Choose Directory + + + + + CDbSettingsDlg + + AES(Rijndael): 256 Bit (default) + + + + Twofish: 256 Bit + + + + Warning + + + + Please determine the number of encryption rounds. + + + + OK + + + + Error + + + + '%1' is not valid integer value. + + + + The number of encryption rounds have to be greater than 0. + + + + + CEditEntryDlg + + Warning + + + + Password and password repetition are not equal. +Please check your input. + + + + OK + + + + Save Attachment... + + + + Overwrite? + + + + A file with this name already exists. +Do you want to replace it? + + + + Yes + + + + No + + + + Error + + + + Could not remove old file. + + + + Could not create new file. + + + + Error while writing the file. + + + + Delete Attachment? + + + + You are about to delete the attachment of this entry. +Are you sure? + + + + No, Cancel + + + + Edit Entry + + + + Could not open file. + + + + + CGenPwDialog + + Notice + + + + You need to enter at least one character + + + + OK + + + + Error + + + + Could not open '/dev/random' or '/dev/urandom'. + + + + + CPasswordDialog + + No key file found + + + + No key file could be found in the chosen directory. +Make sure that the volume is mounted correctly. +Please use the manual file selection for key files with a filename other than 'pwsafe.key'. + + + + OK + + + + Browse... + + + + Open Key File + + + + Error + + + + Please enter a Password. + + + + Please choose a key file. + + + + Please enter a Password or select a key file. + + + + Open Database + + + + Select File Manually... + + + + < none > + + + + + CSearchDlg + + Notice + + + + Please enter a search string. + + + + OK + + + + Search + + + + + CSettingsDlg + + Settings + + + + + ChangeKeyDialog + + Change Master Key + + + + Key + + + + Use password AND key file + + + + Key file or directory: + + + + Password Repetition: + + + + Password: + + + + ... + + + + &Browse... + + + + Alt+B + + + + Enter a Password and/or choose a key file. + + + + &Cancel + + + + Alt+C + + + + O&K + + + + Alt+K + + + + + EditEntryDialog + + Edit Entry + + + + Username: + + + + Password Repet.: + + + + Title: + + + + URL: + + + + Password: + + + + Quality: + + + + Comment: + + + + Expires: + + + + Group: + + + + &Cancel + + + + Alt+C + + + + %1 + + + + Icon: + + + + % Bit + + + + Ge&n. + + + + ... + + + + O&K + + + + Alt+K + + + + Never + + + + Attachment: + + + + + EditGroupDialog + + Group Properties + + + + Title: + + + + Icon: + + + + &Cancel + + + + Alt+C + + + + O&K + + + + Alt+K + + + + + GenPwDlg + + Alt+U + + + + Alt+N + + + + Alt+M + + + + Alt+L + + + + Password Generator + + + + Accep&t + + + + &Cancel + + + + Generate + + + + New Password: + + + + Quality: + + + + Options + + + + &Upper Letters + + + + &Lower Letters + + + + &Numbers + + + + &Special Characters + + + + Minus + + + + U&nderline + + + + h&igher ANSI-Characters + + + + Alt+H + + + + Use &only following characters: + + + + Alt+O + + + + Length: + + + + Use "/dev/rando&m" + + + + Use follo&wing character groups: + + + + Alt+W + + + + White &Spaces + + + + Alt+S + + + + + KeepassEntryView + + Title + + + + Username + + + + URL + + + + Password + + + + Comments + + + + Expires + + + + Creation + + + + Last Change + + + + Last Access + + + + Attachment + + + + + KeepassGroupView + + Search Results + + + + Groups + + + + + KeepassMainWindow + + Ctrl+N + + + + Ctrl+O + + + + Ctrl+S + + + + Ctrl+G + + + + Ctrl+C + + + + Ctrl+B + + + + Ctrl+U + + + + Ctrl+Y + + + + Ctrl+E + + + + Ctrl+D + + + + Ctrl+K + + + + Ctrl+F + + + + Ctrl+W + + + + Shift+Ctrl+S + + + + Shift+Ctrl+F + + + + Keepass - %1 + + + + Unknown error in PwDatabase::loadDatabase() + + + + Error + + + + The following error occured while opening the database: +%1 + + + + OK + + + + Save modified file? + + + + The current file was modified. Do you want +to save the changes? + + + + Yes + + + + No + + + + Cancel + + + + KeePassX - %1 + + + + <B>Group: </B>%1 <B>Title: </B>%2 <B>Username: </B>%3 <B>URL: </B><a href=%4>%4</a> <B>Password: </B>%5 <B>Creation: </B>%6 <B>Last Change: </B>%7 <B>LastAccess: </B>%8 <B>Expires: </B>%9 + + + + Clone Entry + + + + Delete Entry + + + + Clone Entries + + + + Delete Entries + + + + File could not be saved. +%1 + + + + Save Database As... + + + + Ready + + + + [new] + + + + Open Database... + + + + + MainWindow + + KeePassX + + + + File + + + + Import from... + + + + View + + + + Columns + + + + Extras + + + + Help + + + + New Database... + + + + Open Database... + + + + Close Database + + + + Save Database + + + + Save Database As... + + + + Database Settings... + + + + Change Master Key... + + + + Exit + + + + PwManager File (*.pwm) + + + + KWallet XML-File (*.xml) + + + + Add New Group... + + + + Edit Group... + + + + Delete Group + + + + Copy Password to Clipboard + + + + Copy Username to Clipboard + + + + Open URL + + + + Save Attachment As... + + + + Add New Entry... + + + + View/Edit Entry... + + + + Delete Entry + + + + Clone Entry + + + + Search In Database... + + + + Search in this group... + + + + Show Toolbar + + + + Show Entry Details + + + + Hide Usernames + + + + Hide Passwords + + + + Title + + + + Username + + + + URL + + + + Password + + + + Comment + + + + Expires + + + + Creation + + + + Last Change + + + + Last Access + + + + Attachment + + + + Settings... + + + + About... + + + + Edit + + + + Show Statusbar + + + + + PasswordDlg + + TextLabel + + + + OK + + + + ... + + + + Cancel + + + + Enter a Password and/or choose a key file. + + + + Key + + + + Password: + + + + Key file or directory: + + + + &Browse... + + + + Alt+B + + + + Use Password AND Key File + + + + + PwDatabase + + Unknown Error + + + + Unexpected file size (DB_TOTAL_SIZE < DB_HEADER_SIZE) + + + + Wrong Signature + + + + Unsupported File Version + + + + Unknown Encryption Algorithm + + + + AES-Init Failed + + + + Decryption failed. +The key is wrong or the file is damaged + + + + Hash test failed. +The key is wrong or the file is damaged + + + + Unexpected error: Offset is out of range. [G1] + + + + Unexpected error: Offset is out of range. [G2] + + + + Unexpected error: Offset is out of range. [E1] + + + + Unexpected error: Offset is out of range. [E2] + + + + Unexpected error: Offset is out of range. [E3] + + + + + QObject + + Warning + + + + Could not save configuration file. +Make sure you have write access to '~/.keepass'. + + + + OK + + + + File '%1' could not be found. + + + + File not found. + + + + Could not open file. + + + + Datei ist leer + + + + File is no valid PwManager file. + + + + Unsupported file version. + + + + Unsupported hash algorithm. + + + + Unsupported encryption algorithm. + + + + Compressed files are not supported yet. + + + + Wrong password. + + + + File is damaged (hash test failed). + + + + Invalid XML data (see stdout for details). + + + + File is empty. + + + + Invalid XML file (see stdout for details). + + + + Invalid XML file. + + + + Document does not contain data. + + + + Warnung: + + + + ungültiger RGB-Farbwert. + + + + + Error + + + + + Search_Dlg + + Alt+T + + + + Alt+U + + + + A&nhang + + + + Alt+N + + + + Alt+W + + + + Alt+C + + + + Search... + + + + Search For: + + + + Regular E&xpression + + + + Alt+X + + + + &Case Sensitive + + + + Include: + + + + &Titles + + + + &Usernames + + + + C&omments + + + + Alt+O + + + + U&RLs + + + + Alt+R + + + + Pass&words + + + + Search + + + + Clo&se + + + + Alt+S + + + + Include Subgroups (recursive) + + + + + SettingsDialog + + Alt+Ö + + + + O&K + + + + Alt+K + + + + Alt+C + + + + Settings + + + + &Cancel + + + + Securi&try + + + + Clear clipboard after: + + + + Seconds + + + + Sh&ow passwords in plain text by default + + + + Alt+O + + + + Appea&rance + + + + Banner Color + + + + Text Color: + + + + Change... + + + + Color 2: + + + + C&hange... + + + + Alt+H + + + + Color 1: + + + + Expand group tree when opening a database + + + + &Other + + + + Remember last opend file + + + + Browser Command: + + + + + SimplePasswordDialog + + O&K + + + + Alt+K + + + + Alt+C + + + + ... + + + + Enter your Password + + + + Password: + + + + &Cancel + + + + + dbsettingdlg_base + + Database Settings + + + + Encryption + + + + Algorithm: + + + + ? + + + + Encryption Rounds: + + + + O&K + + + + Ctrl+K + + + + &Cancel + + + + Ctrl+C + + + + diff --git a/src/translations/keepass-xx_XX.ts b/src/translations/keepass-xx_XX.ts index 8078fc5..80929a3 100644 --- a/src/translations/keepass-xx_XX.ts +++ b/src/translations/keepass-xx_XX.ts @@ -26,15 +26,15 @@ - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Mattias Miller</span> (www.outofhanwell.com)</p><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</p></body></html> + License - - Übersetzung + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><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;"></p></body></html> - License + Translation @@ -60,10 +60,6 @@ OK - - Fehler - - Could not open file '%1' @@ -172,10 +168,6 @@ Please check your input. CEditEntryDlg - - Eintrag bearbeiten - - Warning @@ -189,14 +181,6 @@ Please check your input. OK - - Fehler - - - - Datei konnte nicht geöffnet werden. - - Save Attachment... @@ -247,6 +231,14 @@ Are you sure? No, Cancel + + Edit Entry + + + + Could not open file. + + CGenPwDialog @@ -273,18 +265,6 @@ Are you sure? CPasswordDialog - - Datenbank öffnen - - - - Datei manuell wählen... - - - - < keiner > - - No key file found @@ -323,13 +303,21 @@ Please use the manual file selection for key files with a filename other than &a Please enter a Password or select a key file. - - - CSearchDlg - Suchen + Open Database + + + + Select File Manually... + + + + < none > + + + CSearchDlg Notice @@ -342,6 +330,10 @@ Please use the manual file selection for key files with a filename other than &a OK + + Search + + CSettingsDlg @@ -530,115 +522,111 @@ Please use the manual file selection for key files with a filename other than &a GenPwDlg - Passwort Generator + Alt+U - Akzep&tieren + Alt+N - Abbre&chen + Alt+M - Generieren + Alt+L - Neues Passwort: - - - - Qualität: + Password Generator - Optionen + Accep&t - - Gro&ßbuchstaben + + &Cancel - - Alt+ß + + Generate - &Kleinbuchstaben + New Password: - Alt+K + Quality: - &Zahlen + Options - Alt+Z + &Upper Letters - S&onderzeichen + &Lower Letters - Bindestriche + &Numbers - &Unterstriche + &Special Characters - Alt+U + Minus - - h&öhere ANSI-Zeichen + + U&nderline - - Alt+ö + + h&igher ANSI-Characters - &nur folgende Zeichen benutzen: + Alt+H - Alt+N + Use &only following characters: - Zeichenanzahl: + Alt+O - "/dev/rando&m" nutzen (empfohlen) + Length: - Alt+M + Use "/dev/rando&m" - folgende Zeichengruppen &verwenden: + Use follo&wing character groups: - Alt+V + Alt+W - &Leerzeichen + White &Spaces - Alt+L + Alt+S @@ -688,20 +676,16 @@ Please use the manual file selection for key files with a filename other than &a KeepassGroupView - Gruppen + Search Results - Search Results + Groups KeepassMainWindow - - Bereit - - Ctrl+N @@ -808,14 +792,6 @@ to save the changes? KeePassX - %1 - - [neu] - - - - Databank öffnen... - - <B>Group: </B>%1 <B>Title: </B>%2 <B>Username: </B>%3 <B>URL: </B><a href=%4>%4</a> <B>Password: </B>%5 <B>Creation: </B>%6 <B>Last Change: </B>%7 <B>LastAccess: </B>%8 <B>Expires: </B>%9 @@ -845,6 +821,18 @@ to save the changes? Save Database As... + + Ready + + + + [new] + + + + Open Database... + + MainWindow @@ -860,10 +848,6 @@ to save the changes? Import from... - - Bearbeiten - - View @@ -1036,6 +1020,14 @@ to save the changes? About... + + Edit + + + + Show Statusbar + + PasswordDlg @@ -1048,39 +1040,39 @@ to save the changes? - Abbrechen + ... - - Geben Sie das Passwort ein oder wählen Sie eine Schlüsseldatei. + + Cancel - - Schlüssel + + Enter a Password and/or choose a key file. - Passwort: + Key - ... + Password: - - Schlüsseldatei oder Datenträger: + + Key file or directory: - - W&ählen... + + &Browse... - - Alt+Ä + + Alt+B - - Passwort UND Schlüsseldatei benutzen + + Use Password AND Key File @@ -1143,10 +1135,6 @@ The key is wrong or the file is damaged QObject - - dd'.'MM'.'yy' 'hh':'mm - - Warning @@ -1160,10 +1148,6 @@ Make sure you have write access to '~/.keepass'. OK - - Fehler - - File '%1' could not be found. @@ -1237,221 +1221,229 @@ Make sure you have write access to '~/.keepass'. + + Error + + Search_Dlg - Suche... + Alt+T - Suchbegriff: + Alt+U - - regul&ärer Ausdruck + + A&nhang - - Alt+Ä + + Alt+N - - Gro&ß- und Kleinschreibung beachten + + Alt+W - - Alt+ß + + Alt+C - Suche nach + Search... - &Titel + Search For: - Alt+T + Regular E&xpression - Benut&zername + Alt+X - Alt+Z + &Case Sensitive - &Kommentar + Include: - Alt+K + &Titles - &URL + &Usernames - Alt+U + C&omments - A&nhang + Alt+O - Alt+N + U&RLs - Pass&wort + Alt+R - Alt+W + Pass&words - Suchen + Search - - S&chließen + + Clo&se - Alt+C + Alt+S - Untergruppen einbeziehen + Include Subgroups (recursive) - + SettingsDialog + + Alt+Ö + + - Einstellungen + O&K - Sicherhei&t + Alt+K - - Zwischenablage löschen nach: + + Alt+C - Sekunden + Settings - - Passw&örter standardmäßig in Klartext anzeigen + + &Cancel - - Alt+Ö + + Securi&try - E&rscheinungsbild + Clear clipboard after: - Bannerfarbverlauf + Seconds - Farbe 1 + Sh&ow passwords in plain text by default - - &ändern... + + Alt+O - - Alt+Ä + + Appea&rance - Farbe 2 + Banner Color - - ändern... + + Text Color: - Textfarbe + Change... - - Gruppenbaum beim &Öffnen aufklappen + + Color 2: - S&onstiges + C&hange... - - zuletzt geöffnete Datei bei Programmstart &öffnen + + Alt+H - Browseraufruf: + Color 1: - O&K + Expand group tree when opening a database - Alt+K + &Other - Abbre&chen + Remember last opend file - Alt+C + Browser Command: SimplePasswordDialog - Passworteingabe + O&K - Passwort: + Alt+K - O&K + Alt+C - Alt+K + ... - Abbre&chen + Enter your Password - Alt+C + Password: - ... + &Cancel