-KDE-Plugin: Updated API, plugin works fine again
-KDE-Plugin: added KDE icon loader to load KDE's currunt icon theme (incomplete) -reverted change in the group combobox in the editentrydialog git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@141 b624d157-de02-0410-bad0-e51aec6abb33
This commit is contained in:
parent
57416c61d2
commit
05ec5eb40c
|
@ -192,7 +192,7 @@ void CEditEntryDlg::InitGroupComboBox(){
|
||||||
QString Space;
|
QString Space;
|
||||||
groups=db->sortedGroups();
|
groups=db->sortedGroups();
|
||||||
for(int i=0;i<groups.size();i++){
|
for(int i=0;i<groups.size();i++){
|
||||||
Space.fill(' ', 2 * (groups[i]->level() - 1));
|
Space.fill(' ', 2 * (groups[i]->level()));
|
||||||
Combo_Group->insertItem(i,db->icon(groups[i]->image()),Space+groups[i]->title());
|
Combo_Group->insertItem(i,db->icon(groups[i]->image()),Space+groups[i]->title());
|
||||||
if(groups[i]==entry->group()){
|
if(groups[i]==entry->group()){
|
||||||
Combo_Group->setCurrentIndex(i);
|
Combo_Group->setCurrentIndex(i);
|
||||||
|
|
31
src/main.cpp
31
src/main.cpp
|
@ -37,6 +37,7 @@
|
||||||
#include "plugins/interfaces/IFileDialog.h"
|
#include "plugins/interfaces/IFileDialog.h"
|
||||||
#include "plugins/interfaces/IKdeInit.h"
|
#include "plugins/interfaces/IKdeInit.h"
|
||||||
#include "plugins/interfaces/IGnomeInit.h"
|
#include "plugins/interfaces/IGnomeInit.h"
|
||||||
|
#include "plugins/interfaces/IIconTheme.h"
|
||||||
#include "lib/FileDialogs.h"
|
#include "lib/FileDialogs.h"
|
||||||
|
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
@ -68,6 +69,7 @@ bool TrActive;
|
||||||
QString DetailViewTemplate;
|
QString DetailViewTemplate;
|
||||||
|
|
||||||
QPixmap* EntryIcons;
|
QPixmap* EntryIcons;
|
||||||
|
IIconTheme* IconLoader=NULL;
|
||||||
|
|
||||||
inline void loadImages();
|
inline void loadImages();
|
||||||
inline void parseCmdLineArgs(int argc, char** argv,QString &ArgFile,QString& ArgCfg,QString& ArgLang);
|
inline void parseCmdLineArgs(int argc, char** argv,QString &ArgFile,QString& ArgCfg,QString& ArgLang);
|
||||||
|
@ -135,7 +137,12 @@ int main(int argc, char **argv)
|
||||||
qWarning(CSTR(PluginLoadError));
|
qWarning(CSTR(PluginLoadError));
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
IFileDialog* fdlg=qobject_cast<IFileDialog*>(plugin.instance());
|
QObject *plugininstance=plugin.instance();
|
||||||
|
IFileDialog* fdlg=qobject_cast<IFileDialog*>(plugininstance);
|
||||||
|
IconLoader=qobject_cast<IIconTheme*>(plugininstance);
|
||||||
|
if(IconLoader==NULL){
|
||||||
|
qWarning("Error: Integration Plugin: Could not initialize IconTheme interface.");
|
||||||
|
}
|
||||||
KpxFileDialogs::setPlugin(fdlg);
|
KpxFileDialogs::setPlugin(fdlg);
|
||||||
if(config->integrPlugin()==KpxConfig::KDE){
|
if(config->integrPlugin()==KpxConfig::KDE){
|
||||||
IKdeInit* kdeinit=qobject_cast<IKdeInit*>(plugin.instance());
|
IKdeInit* kdeinit=qobject_cast<IKdeInit*>(plugin.instance());
|
||||||
|
@ -350,13 +357,19 @@ const QIcon& getIcon(const QString& name){
|
||||||
QIcon* CachedIcon=IconCache.value(name);
|
QIcon* CachedIcon=IconCache.value(name);
|
||||||
if(CachedIcon)
|
if(CachedIcon)
|
||||||
return *CachedIcon;
|
return *CachedIcon;
|
||||||
QFileInfo IconFile(AppDir+"/../share/keepass/icons/"+name+".png");
|
QIcon* NewIcon=NULL;
|
||||||
if(!IconFile.isFile() || !IconFile.exists() || !IconFile.isReadable()){
|
if(IconLoader==NULL){
|
||||||
///TODO 0.2.3 error handling
|
QFileInfo IconFile(AppDir+"/../share/keepass/icons/"+name+".png");
|
||||||
qWarning("%s",CSTR(name));
|
if(!IconFile.isFile() || !IconFile.exists() || !IconFile.isReadable()){
|
||||||
|
///TODO 0.2.3 error handling
|
||||||
|
qWarning("%s",CSTR(name));
|
||||||
|
}
|
||||||
|
NewIcon=new QIcon(AppDir+"/../share/keepass/icons/"+name+".png");
|
||||||
|
IconCache.insert(name,NewIcon);
|
||||||
|
} else {
|
||||||
|
NewIcon=new QIcon(IconLoader->getIcon(name));
|
||||||
|
IconCache.insert(name,NewIcon);
|
||||||
}
|
}
|
||||||
QIcon* NewIcon=new QIcon(AppDir+"/../share/keepass/icons/"+name+".png");
|
|
||||||
IconCache.insert(name,NewIcon);
|
|
||||||
return *NewIcon;
|
return *NewIcon;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -436,9 +449,9 @@ QMessageBox::critical(parent,QObject::tr("Error"),msg,QObject::tr("OK"));
|
||||||
QString findPlugin(const QString& filename){
|
QString findPlugin(const QString& filename){
|
||||||
QFileInfo info;
|
QFileInfo info;
|
||||||
|
|
||||||
info.setFile(AppDir+"/../lib/keepassx/"+filename);
|
info.setFile(AppDir+"/../lib/"+filename);
|
||||||
if(info.exists() && info.isFile())
|
if(info.exists() && info.isFile())
|
||||||
return AppDir+"/../lib/keepassx/"+filename;
|
return AppDir+"/../lib/"+filename;
|
||||||
|
|
||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
/***************************************************************************
|
||||||
|
* Copyright (C) 2007 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 *
|
||||||
|
* the Free Software Foundation; Version 2 of the license only. *
|
||||||
|
* *
|
||||||
|
* This program is distributed in the hope that it will be useful, *
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||||
|
* GNU General Public License for more details. *
|
||||||
|
* *
|
||||||
|
* You should have received a copy of the GNU General Public License *
|
||||||
|
* along with this program; if not, write to the *
|
||||||
|
* Free Software Foundation, Inc., *
|
||||||
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
|
***************************************************************************/
|
||||||
|
#include <QString>
|
||||||
|
#include <QStringList>
|
||||||
|
#include <QIcon>
|
||||||
|
|
||||||
|
#ifndef _I_ICON_THEME_H_
|
||||||
|
#define _I_ICON_THEME_H_
|
||||||
|
|
||||||
|
class IIconTheme{
|
||||||
|
public:
|
||||||
|
virtual ~IIconTheme(){}
|
||||||
|
virtual QIcon getIcon(const QString& name)=0;
|
||||||
|
};
|
||||||
|
Q_DECLARE_INTERFACE(IIconTheme,"org.KeePassX.IconThemeInterface/0.2.3")
|
||||||
|
|
||||||
|
#endif
|
|
@ -17,27 +17,74 @@
|
||||||
* Free Software Foundation, Inc., *
|
* Free Software Foundation, Inc., *
|
||||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include <kapplication.h>
|
#include <kapplication.h>
|
||||||
#include <kfiledialog.h>
|
#include <kfiledialog.h>
|
||||||
#include <kcmdlineargs.h>
|
#include <kcmdlineargs.h>
|
||||||
|
#include <kiconloader.h>
|
||||||
|
#include <QPixmap>
|
||||||
|
#include <QHash>
|
||||||
#include "keepassx-kde.h"
|
#include "keepassx-kde.h"
|
||||||
|
|
||||||
|
QHash<QString,QString>IconMap;
|
||||||
|
|
||||||
Q_EXPORT_PLUGIN2(keepassx_kde, KdePlugin)
|
Q_EXPORT_PLUGIN2(keepassx_kde, KdePlugin)
|
||||||
|
|
||||||
QString KdePlugin::openExistingFileDialog(QWidget* parent,QString title,QString dir,QStringList Filters){
|
|
||||||
|
void createIconMap(){
|
||||||
|
IconMap["alarmclock"]="alarmclock";
|
||||||
|
IconMap["appsettings"]="configure";
|
||||||
|
IconMap["autotype"]="input-keyboard";
|
||||||
|
IconMap["clock"]="chronometer";
|
||||||
|
IconMap["clonenetry"]="edit-copy";
|
||||||
|
IconMap["copypwd"]="kgpg-export-kgpg";
|
||||||
|
IconMap["copyusername"]="user";
|
||||||
|
IconMap["dbsearch"]="edit-find";
|
||||||
|
IconMap["dbsettings"]="configure";
|
||||||
|
IconMap["delete"]="edit-delete";
|
||||||
|
IconMap["delete-entry"]="edit-delete";
|
||||||
|
IconMap["delete-group"]="edit-delete";
|
||||||
|
IconMap["editentry"]="edit";
|
||||||
|
IconMap["editgroup"]="edit";
|
||||||
|
IconMap["exit"]="application-exit";
|
||||||
|
IconMap["expired"]="flag-red";
|
||||||
|
IconMap["fileclose"]="dialog-close";
|
||||||
|
IconMap["filedelete"]="edit-delete";
|
||||||
|
IconMap["filenew"]="document-new";
|
||||||
|
IconMap["fileopen"]="document-open";
|
||||||
|
IconMap["filesave"]="document-save";
|
||||||
|
IconMap["filesaveas"]="document-save-as";
|
||||||
|
IconMap["filesaveasdisabled"]="document-save-as"; ///FIXME
|
||||||
|
IconMap["generator"]="roll";
|
||||||
|
IconMap["groupsearch"]="file-find";
|
||||||
|
IconMap["help"]="help-contents";
|
||||||
|
IconMap["key"]="password";
|
||||||
|
IconMap["manual"]="help-contents";
|
||||||
|
}
|
||||||
|
|
||||||
|
QString KdePlugin::openExistingFileDialog(QWidget* parent,QString title,QString dir,QStringList Filters,int SelectedFilter){
|
||||||
return KFileDialog::getOpenFileName();
|
return KFileDialog::getOpenFileName();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QStringList KdePlugin::openExistingFilesDialog(QWidget* parent,QString title,QString dir,QStringList Filters,int SelectedFilter){
|
||||||
QStringList KdePlugin::openExistingFilesDialog(QWidget* parent,QString title,QString dir,QStringList Filters){
|
|
||||||
return QStringList();
|
return QStringList();
|
||||||
}
|
}
|
||||||
|
|
||||||
QString KdePlugin::saveFileDialog(QWidget* parent,QString title,QString dir,QStringList Filters,bool OverWriteWarn){return QString();}
|
QString KdePlugin::saveFileDialog(QWidget* parent,QString title,QString dir,QStringList Filters,int SelectedFilter,bool OverWriteWarn){return QString();}
|
||||||
|
|
||||||
QApplication* KdePlugin::getMainAppObject(int argc, char** argv){
|
QApplication* KdePlugin::getMainAppObject(int argc, char** argv){
|
||||||
KCmdLineArgs::init(argc,argv,"keepassx","KeePassX","Cross Platform Password Manager","0.2.3");
|
KCmdLineArgs::init(argc,argv,"keepassx","KeePassX","Cross Platform Password Manager","0.2.3");
|
||||||
|
createIconMap();
|
||||||
return dynamic_cast<QApplication*>( new KApplication() );
|
return dynamic_cast<QApplication*>( new KApplication() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QIcon KdePlugin::getIcon(const QString& name){
|
||||||
|
KIconLoader loader;
|
||||||
|
QPixmap pxm=loader.loadIcon(IconMap.value(name),K3Icon::Desktop);
|
||||||
|
QIcon icon(pxm);
|
||||||
|
return icon;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -20,21 +20,26 @@
|
||||||
|
|
||||||
#include <QtPlugin>
|
#include <QtPlugin>
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
#include <QIcon>
|
||||||
#include "../interfaces/IFileDialog.h"
|
#include "../interfaces/IFileDialog.h"
|
||||||
#include "../interfaces/IKdeInit.h"
|
#include "../interfaces/IKdeInit.h"
|
||||||
|
#include "../interfaces/IIconTheme.h"
|
||||||
|
|
||||||
|
|
||||||
class KdePlugin:public QObject,public IFileDialog,public IKdeInit{
|
class KdePlugin:public QObject,public IFileDialog,public IKdeInit,public IIconTheme{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
Q_INTERFACES(IFileDialog)
|
Q_INTERFACES(IFileDialog)
|
||||||
Q_INTERFACES(IKdeInit)
|
Q_INTERFACES(IKdeInit)
|
||||||
|
Q_INTERFACES(IIconTheme)
|
||||||
public:
|
public:
|
||||||
virtual QString openExistingFileDialog(QWidget* parent,QString title,QString dir,
|
virtual QString openExistingFileDialog(QWidget* parent,QString title,QString dir,
|
||||||
QStringList Filters);
|
QStringList Filters, int SelectedFilter);
|
||||||
virtual QStringList openExistingFilesDialog(QWidget* parent,QString title,QString dir,
|
virtual QStringList openExistingFilesDialog(QWidget* parent,QString title,QString dir,
|
||||||
QStringList Filters);
|
QStringList Filters, int SelectedFilter);
|
||||||
virtual QString saveFileDialog(QWidget* parent,QString title,QString dir,
|
virtual QString saveFileDialog(QWidget* parent,QString title,QString dir,
|
||||||
QStringList Filters,bool ShowOverwriteWarning=true);
|
QStringList Filters, int SelectedFilter, bool ShowOverwriteWarning=true);
|
||||||
|
virtual int getLastFilter(){return 0;}
|
||||||
virtual QApplication* getMainAppObject(int argc, char** argv);
|
virtual QApplication* getMainAppObject(int argc, char** argv);
|
||||||
|
virtual QIcon getIcon(const QString& name);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
|
INCLUDEPATH += /usr/lib/kde4/include
|
||||||
INCLUDEPATH += /opt/kde4/include
|
|
||||||
TEMPLATE = lib
|
TEMPLATE = lib
|
||||||
CONFIG += plugin release
|
CONFIG += plugin release
|
||||||
HEADERS += keepassx-kde.h
|
HEADERS += keepassx-kde.h
|
||||||
SOURCES += keepassx-kde.cpp
|
SOURCES += keepassx-kde.cpp
|
||||||
MOC_DIR = build/moc
|
MOC_DIR = ../../../build/moc
|
||||||
OBJECTS_DIR = build/
|
OBJECTS_DIR = ../../../build
|
||||||
LIBS+=-L/opt/kde4/lib -lkio -lkdecore
|
TARGET = ../../../lib/keepassx-kde
|
||||||
|
LIBS+=-L/usr/lib/kde4/lib -lkio -lkdecore
|
||||||
|
|
|
@ -114,6 +114,7 @@ HEADERS += lib/IniReader.h \
|
||||||
plugins/interfaces/IFileDialog.h \
|
plugins/interfaces/IFileDialog.h \
|
||||||
plugins/interfaces/IKdeInit.h \
|
plugins/interfaces/IKdeInit.h \
|
||||||
plugins/interfaces/IGnomeInit.h \
|
plugins/interfaces/IGnomeInit.h \
|
||||||
|
plugins/interfaces/IIconTheme.h \
|
||||||
KpxConfig.h \
|
KpxConfig.h \
|
||||||
KpxFirefox.h
|
KpxFirefox.h
|
||||||
SOURCES += lib/UrlLabel.cpp \
|
SOURCES += lib/UrlLabel.cpp \
|
||||||
|
|
Loading…
Reference in New Issue