-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