diff --git a/src/dialogs/SettingsDlg.cpp b/src/dialogs/SettingsDlg.cpp index a1a8700..a57c8da 100755 --- a/src/dialogs/SettingsDlg.cpp +++ b/src/dialogs/SettingsDlg.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include "SettingsDlg.h" @@ -34,14 +35,14 @@ CSettingsDlg::CSettingsDlg(QWidget* parent) : QDialog(parent,Qt::Dialog) { setupUi(this); -connect(ButtonOK, SIGNAL( clicked() ), this, SLOT( OnOK() ) ); -connect(ButtonCancel, SIGNAL( clicked() ), this, SLOT( OnCancel() ) ); +connect(DialogButtons, SIGNAL( accepted() ), this, SLOT( OnOK() ) ); +connect(DialogButtons, SIGNAL( rejected() ), this, SLOT( OnCancel() ) ); connect(ButtonColor1, SIGNAL( clicked() ), this, SLOT( OnColor1() ) ); connect(ButtonColor2, SIGNAL( clicked() ), this, SLOT( OnColor2() ) ); connect(ButtonTextColor, SIGNAL( clicked() ), this, SLOT( OnTextColor() ) ); connect(CheckBox_OpenLast,SIGNAL(stateChanged(int)),this,SLOT(OnCeckBoxOpenLastChanged(int))); connect(Button_MountDirBrowse,SIGNAL(clicked()),this,SLOT(OnMountDirBrowse())); -createBanner(Banner,Icon_Settings32x32,tr("Settings")); +createBanner(&BannerPixmap,Icon_Settings32x32,tr("Settings"),width()); CheckBox_OpenLast->setChecked(config.OpenLast); SpinBox_ClipboardTime->setValue(config.ClipboardTimeOut); @@ -75,6 +76,13 @@ CSettingsDlg::~CSettingsDlg() { } +void CSettingsDlg::paintEvent(QPaintEvent *event){ + QDialog::paintEvent(event); + QPainter painter(this); + painter.setClipRegion(event->region()); + painter.drawPixmap(QPoint(0,0),BannerPixmap); +} + void CSettingsDlg::OnOK() { config.OpenLast=CheckBox_OpenLast->isChecked(); diff --git a/src/dialogs/SettingsDlg.h b/src/dialogs/SettingsDlg.h index 4129c37..f97df9b 100755 --- a/src/dialogs/SettingsDlg.h +++ b/src/dialogs/SettingsDlg.h @@ -17,31 +17,37 @@ * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ***************************************************************************/ -#include "main.h" + #ifndef SETTINGSDLG_H #define SETTINGSDLG_H + + +#include +#include +#include #include "ui_SettingsDlg.h" -#include +#include "main.h" class CSettingsDlg : public QDialog, public Ui_SettingsDialog { - Q_OBJECT - -public: - CSettingsDlg(QWidget* parent /*, Qt::WFlags fl*/); - ~CSettingsDlg(); - -public slots: - virtual void OnCancel(); - virtual void OnOK(); - virtual void OnTextColor(); - virtual void OnColor2(); - virtual void OnColor1(); - void OnCeckBoxOpenLastChanged(int state); - void OnMountDirBrowse(); - -private: - QColor color1,color2,textcolor; + Q_OBJECT + public: + CSettingsDlg(QWidget* parent); + ~CSettingsDlg(); + + public slots: + virtual void OnCancel(); + virtual void OnOK(); + virtual void OnTextColor(); + virtual void OnColor2(); + virtual void OnColor1(); + void OnCeckBoxOpenLastChanged(int state); + void OnMountDirBrowse(); + + private: + virtual void paintEvent(QPaintEvent*); + QColor color1,color2,textcolor; + QPixmap BannerPixmap; }; #endif diff --git a/src/forms/SettingsDlg.ui b/src/forms/SettingsDlg.ui index aa153c1..30c0e45 100644 --- a/src/forms/SettingsDlg.ui +++ b/src/forms/SettingsDlg.ui @@ -1,7 +1,4 @@ - - - SettingsDialog @@ -30,554 +27,638 @@ true - - - - 470 - 310 - 90 - 23 - + + + 9 - - &Cancel + + 6 - - Alt+C - - - - - - 0 - 0 - 570 - 50 - - - - - - - true - - - - - - 380 - 310 - 80 - 23 - - - - O&K - - - Alt+K - - - - - - 10 - 60 - 550 - 241 - - - - - Securi&ty - - - - - 10 - 20 - 531 - 25 - + + + + Qt::Vertical - - - 0 - - - 6 - - - - - - 4 - 5 - 0 - 0 - - - - Clear clipboard after: - - - - - - - - 5 - 0 - 0 - 0 - - - - - 80 - 16777215 - - - - 50000 + + QSizePolicy::Fixed + + + + 20 + 50 + + + + + + + + 3 + + + + Securi&ty + + + + + 10 + 20 + 531 + 31 + + + + + 0 - - 2 + + 6 - - - - - - Seconds + + + + + 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 + + + + + 11 + 20 + 501 + 62 + + + + 0 + + + 6 + + + + + Text Color: + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 40 + 20 + + + + + + + + + 4 + 0 + 0 + 0 + + + + + 0 + 23 + + + + + 16777215 + 23 + + + + Change... + + + + + + + + + + + 4 + 5 + 0 + 0 + + + + Color 2: + + + + + + + + 4 + 0 + 0 + 0 + + + + + 23 + 23 + + + + + 23 + 23 + + + + + + + + + + + + 4 + 0 + 0 + 0 + + + + + 23 + 23 + + + + + 23 + 23 + + + + + + + true + + + + + + + + 4 + 0 + 0 + 0 + + + + + 0 + 23 + + + + + 16777215 + 23 + + + + Change... + + + + + + + + + + + 4 + 0 + 0 + 0 + + + + + 23 + 23 + + + + + 23 + 23 + + + + + + + true + + + + + + + + 4 + 0 + 0 + 0 + + + + + 0 + 23 + + + + + 16777215 + 23 + + + + C&hange... + + + Alt+H + + + + + + + + 4 + 5 + 0 + 0 + + + + Color 1: + + + + + + + Qt::Horizontal + + + QSizePolicy::Minimum + + + + 40 + 20 + + + + + - - - - - - - 10 - 50 - 531 - 20 - - - - Sh&ow passwords in plain text by default - - - Alt+O - - - - - - Appea&rance - - - - - 20 - 10 - 520 - 90 - - - - Banner Color - - - - - 11 - 20 - 501 - 62 - - - + + + + + 10 + 110 + 521 + 20 + + + + Expand group tree when opening a database + + + Alt+Ö + + + + + + 10 + 130 + 531 + 22 + + + + Alternating Row Colors + + + + + + Intergration Plug-ins + + - 0 + 9 6 - - - - Text Color: - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 40 - 20 - - - - - - - - - 4 - 0 - 0 - 0 - - - - - 0 - 23 - - - - - 16777215 - 23 - - - - Change... - - - - - - - - + + - 4 - 5 + 5 + 4 0 0 - Color 2: + < some text about plugin usage > - - + + - 4 - 0 + 5 + 1 0 0 - - - 23 - 23 - - - - - 23 - 23 - - - - - + + Plug-Ins + + + + 9 + + + 6 + + + + + None + + + + + + + Gnome Desktop Integration (Gtk 2.x) + + + + + + + KDE 4 Desktop Integration + + + + - - - - - 4 - 0 - 0 - 0 - - - - - 23 - 23 - - - - - 23 - 23 - - - - - - - true - - - - - - - - 4 - 0 - 0 - 0 - - - - - 0 - 23 - - - - - 16777215 - 23 - - - - Change... - - - - - - - - - - - 4 - 0 - 0 - 0 - - - - - 23 - 23 - - - - - 23 - 23 - - - - - - - true - - - - - - - - 4 - 0 - 0 - 0 - - - - - 0 - 23 - - - - - 16777215 - 23 - - - - C&hange... - - - Alt+H - - - - - - - - 4 - 5 - 0 - 0 - - - - Color 1: - - - - - - - Qt::Horizontal - - - QSizePolicy::Minimum - - - - 40 - 20 - - - + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Configure... + + + + - - - - - 10 - 110 - 521 - 20 - - - - Expand group tree when opening a database - - - Alt+Ö - - - - - - 10 - 130 - 531 - 22 - - - - Alternating Row Colors - - - - - - &Other - - - - - 10 - 70 - 531 - 58 - - - - - 0 - - - 6 - - - - - - 0 - 23 - - - - - 16777215 - 23 - - - - Browse... - - - - - - - Browser Command: + + + &Other + + + + + 10 + 70 + 531 + 66 + + + + + 0 - - - - - - - - - - - - Mounting Root: + + 6 - - - - - - - - 30 - 40 - 501 - 22 - - - - Remember last key type and location - + + + + + 0 + 23 + + + + + 16777215 + 23 + + + + Browse... + + + + + + + Browser Command: + + + + + + + + + + + + + Mounting Root: + + + + + + + + + 30 + 40 + 501 + 22 + + + + Remember last key type and location + + + + + + 10 + 20 + 521 + 20 + + + + Remember last opened file + + + Alt+Ö + + + - - - - 10 - 20 - 521 - 20 - - - - Remember last opened file + + + + + Qt::Horizontal - - Alt+Ö + + QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok - - + + - tabWidget4 SpinBox_ClipboardTime @@ -586,8 +667,6 @@ ButtonTextColor ButtonColor2 CheckBox_OpenLast - ButtonOK - ButtonCancel diff --git a/src/main.cpp b/src/main.cpp index 9b30ddc..98da363 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -33,6 +33,7 @@ #include #include "plugins/interfaces/IFileDialog.h" +#include "lib/FileDialogs.h" #include "main.h" #include "PwmConfig.h" @@ -91,15 +92,11 @@ QString ArgFile,ArgCfg,ArgLang,IniFilename; parseCmdLineArgs(argc,argv,ArgFile,ArgCfg,ArgLang); AppDir=app->applicationDirPath(); -/* + QPluginLoader gtkplugin("/home/tarek/Documents/KeePassX/src/plugins/gnome/libkeepassx-gnome.so"); -if(!gtkplugin.load()) - qDebug(gtkplugin.errorString().toUtf8().data()); -IFileDialog* filedlg=qobject_cast(gtkplugin.instance()); -showErrMsg(filedlg->openExistingFileDialog(NULL,"Hallo","/home",QStringList()<<"Images (*.jpg *.bmp *.jpeg *.png)"<<"Text Files (*.txt *.rtf)"<<"All files (*)")); -return 0; -*/ +KpxFileDialogs::setPlugin(qobject_cast(gtkplugin.instance())); + //Load Config if(ArgCfg==QString()){ diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index cb5a712..22a9b47 100755 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -41,6 +41,7 @@ #include "lib/random.h" #include "lib/IniReader.h" #include "lib/AutoType.h" +#include "lib/FileDialogs.h" #include "import/Import_PwManager.h" #include "import/Import_KWalletXml.h" #include "export/Export_Txt.h" @@ -440,15 +441,18 @@ void KeepassMainWindow::OnFileNewKxdb(){ void KeepassMainWindow::OnFileOpen(){ - QFileDialog FileDlg(this,tr("Open Database..."),QDir::homePath()); + /*QFileDialog FileDlg(this,tr("Open Database..."),QDir::homePath()); FileDlg.setFilters(QStringList()<< tr("KeePass Databases (*.kdb)")<< tr("All Files (*)")); FileDlg.setFileMode(QFileDialog::ExistingFile); FileDlg.setAcceptMode(QFileDialog::AcceptOpen); if(!FileDlg.exec())return; - if(!FileDlg.selectedFiles().size())return; + if(!FileDlg.selectedFiles().size())return;*/ + QString filename=KpxFileDialogs::openExistingFile(this,"MainWindow_FileOpen", + tr("Open Database..."),QStringList()< #include "keepassx-gnome.h" -#define CSTRING(x)(x.toUtf8().data()) +#define CSTR(x)(x.toUtf8().data()) Q_EXPORT_PLUGIN2(keepassx_gnome, GnomePlugin) -QString GnomePlugin::openExistingFileDialog(QWidget* parent,QString title,QString dir, - QStringList Filters){ - +QString GnomePlugin::openExistingFileDialog(QWidget* parent,QString title,QString dir,QStringList Filters){ + unsigned int NumFilters=Filters.size(); GtkWidget *FileDlg; QString filename; gtk_init(0,0); - FileDlg=gtk_file_chooser_dialog_new(title.toUtf8().data(),NULL, + FileDlg=gtk_file_chooser_dialog_new(CSTR(title),NULL, GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); - gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(FileDlg),dir.toUtf8().data()); + gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(FileDlg),CSTR(dir)); GtkFileFilter** filters=parseFilterStrings(Filters); - for(int i=0;idata); + FilenameList=FilenameList->next; + } + g_slist_free(front); + } + gtk_widget_destroy(FileDlg); + return filenames; +} + +QString GnomePlugin::saveFileDialog(QWidget* parent,QString title,QString dir,QStringList Filters,bool OverWriteWarn){return QString();} \ No newline at end of file diff --git a/src/plugins/gnome/keepassx-gnome.h b/src/plugins/gnome/keepassx-gnome.h index fcb6f1f..868f9d4 100644 --- a/src/plugins/gnome/keepassx-gnome.h +++ b/src/plugins/gnome/keepassx-gnome.h @@ -31,8 +31,10 @@ class GnomePlugin:public QObject,public IFileDialog{ public: virtual QString openExistingFileDialog(QWidget* parent,QString title,QString dir, QStringList Filters); + virtual QStringList openExistingFilesDialog(QWidget* parent,QString title,QString dir, + QStringList Filters); virtual QString saveFileDialog(QWidget* parent,QString title,QString dir, - QStringList Filters); + QStringList Filters,bool ShowOverwriteWarning=true); private: GtkFileFilter** parseFilterStrings(const QStringList &Filters); }; diff --git a/src/plugins/interfaces/IFileDialog.h b/src/plugins/interfaces/IFileDialog.h index 7c6cc59..2e3fe61 100644 --- a/src/plugins/interfaces/IFileDialog.h +++ b/src/plugins/interfaces/IFileDialog.h @@ -20,12 +20,20 @@ #include #include +#ifndef _I_FILE_DIALOG_H_ +#define _I_FILE_DIALOG_H_ + class IFileDialog{ public: virtual ~IFileDialog(){} virtual QString openExistingFileDialog(QWidget* parent,QString title,QString dir, QStringList Filters)=0; - virtual QString saveFileDialog(QWidget* parent,QString title,QString dir, + virtual QStringList openExistingFilesDialog(QWidget* parent,QString title,QString dir, QStringList Filters)=0; + + virtual QString saveFileDialog(QWidget* parent,QString title,QString dir, + QStringList Filters,bool ShowOverwriteWarning=true)=0; }; -Q_DECLARE_INTERFACE(IFileDialog,"org.KeePassX.FileDialogInterface/1.0") \ No newline at end of file +Q_DECLARE_INTERFACE(IFileDialog,"org.KeePassX.FileDialogInterface/1.0") + +#endif \ No newline at end of file diff --git a/src/src.pro b/src/src.pro index 619949c..eef19bd 100755 --- a/src/src.pro +++ b/src/src.pro @@ -74,6 +74,7 @@ HEADERS += lib/IniReader.h \ Database.h \ lib/KdePlugin.h \ lib/AutoType.h \ + lib/FileDialogs.h \ global.h \ main.h \ lib/GroupView.h \ @@ -118,6 +119,7 @@ SOURCES += lib/IniReader.cpp \ lib/KdePlugin.cpp \ lib/GroupView.cpp \ lib/EntryView.cpp \ + lib/FileDialogs.cpp \ crypto/arcfour.cpp \ lib/KpFileIconProvider.cpp \ crypto/aescrypt.c \