From 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- libkdepim/kpartsdesignerplugin/Makefile.am | 8 ++ libkdepim/kpartsdesignerplugin/README | 2 + .../kpartsdesignerplugin/kpartsdesignerplugin.cpp | 117 +++++++++++++++++++++ .../kpartsdesignerplugin/kpartsdesignerplugin.h | 70 ++++++++++++ 4 files changed, 197 insertions(+) create mode 100644 libkdepim/kpartsdesignerplugin/Makefile.am create mode 100644 libkdepim/kpartsdesignerplugin/README create mode 100644 libkdepim/kpartsdesignerplugin/kpartsdesignerplugin.cpp create mode 100644 libkdepim/kpartsdesignerplugin/kpartsdesignerplugin.h (limited to 'libkdepim/kpartsdesignerplugin') diff --git a/libkdepim/kpartsdesignerplugin/Makefile.am b/libkdepim/kpartsdesignerplugin/Makefile.am new file mode 100644 index 000000000..08f1b7117 --- /dev/null +++ b/libkdepim/kpartsdesignerplugin/Makefile.am @@ -0,0 +1,8 @@ +AM_CXXFLAGS = -DQT_PLUGIN +METASOURCES = AUTO +INCLUDES = $(all_includes) + +kde_widget_LTLIBRARIES = kpartsdesignerplugin.la +kpartsdesignerplugin_la_LDFLAGS = $(KDE_PLUGIN) -module $(all_libraries) +kpartsdesignerplugin_la_LIBADD = $(LIB_KPARTS) +kpartsdesignerplugin_la_SOURCES = kpartsdesignerplugin.cpp diff --git a/libkdepim/kpartsdesignerplugin/README b/libkdepim/kpartsdesignerplugin/README new file mode 100644 index 000000000..fb9f42837 --- /dev/null +++ b/libkdepim/kpartsdesignerplugin/README @@ -0,0 +1,2 @@ +When moving this to kdelibs: the KPartsGenericPart class should move to libkparts so +that it's possible to add an accessor for m_part there. diff --git a/libkdepim/kpartsdesignerplugin/kpartsdesignerplugin.cpp b/libkdepim/kpartsdesignerplugin/kpartsdesignerplugin.cpp new file mode 100644 index 000000000..834418d2c --- /dev/null +++ b/libkdepim/kpartsdesignerplugin/kpartsdesignerplugin.cpp @@ -0,0 +1,117 @@ +/* + Copyright (C) 2004, David Faure + This file is part of the KDE project + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License version 2, as published by the Free Software Foundation. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#include "kpartsdesignerplugin.h" + +#include +#include +#include +#include +#include +#include + +KPartsGenericPart::KPartsGenericPart( QWidget* parentWidget, const char* name ) + : QWidget( parentWidget, name ), m_part( 0 ) +{ + QVBoxLayout* layout = new QVBoxLayout( this ); + layout->setAutoAdd( true ); +} + +void KPartsGenericPart::load() +{ + if ( m_mimetype.isEmpty() || m_url.isEmpty() ) + return; // not enough info yet + // Here it crashes in KSycoca::openDatabase when trying to load the stuff from designer itself + // Not sure why - but it's not really needed anyway. + if ( !kapp ) + return; + QString mimetype = m_mimetype; + if ( mimetype == "auto" ) + mimetype == KMimeType::findByURL( m_url )->name(); + if ( m_part ) { + delete m_part; + } + // "this" is both the parent widget and the parent object + m_part = KParts::ComponentFactory::createPartInstanceFromQuery( mimetype, QString::null, this, 0, this, 0 ); + if ( m_part ) { + m_part->openURL( m_url ); + m_part->widget()->show(); + } +} + +//// + +static const char* mykey = "KPartsGenericPart"; + +QStringList KPartsWidgetPlugin::keys() const { + return QStringList() << mykey; +} + +QWidget * KPartsWidgetPlugin::create( const QString & key, QWidget * parent, const char * name ) { + if ( key == mykey ) + return new KPartsGenericPart( parent, name ); + return 0; +} + +QString KPartsWidgetPlugin::group( const QString & key ) const { + if ( key == mykey ) + return "Display (KDE)"; + return QString::null; +} + +#if 0 +QIconSet KPartsWidgetPlugin::iconSet( const QString & key ) const { + return QIconSet(); +} +#endif + +QString KPartsWidgetPlugin::includeFile( const QString & key ) const { + if ( key == mykey ) + return "partplugin.h"; + return QString::null; +} + +QString KPartsWidgetPlugin::toolTip( const QString & key ) const { + if ( key == mykey ) + return "Generic KParts viewer"; + return QString::null; +} + +QString KPartsWidgetPlugin::whatsThis( const QString & key ) const { + if ( key == mykey ) + return "A widget to embed any KParts viewer, given a url and optionally a mimetype"; + return QString::null; +} + +bool KPartsWidgetPlugin::isContainer( const QString & /*key*/ ) const { + return false; +} + +/// Duplicated from kdelibs/kdecore/kdemacros.h.in for those with kdelibs < 3.4 +#ifndef KDE_Q_EXPORT_PLUGIN +#define KDE_Q_EXPORT_PLUGIN(PLUGIN) \ + Q_EXTERN_C KDE_EXPORT const char* qt_ucm_query_verification_data(); \ + Q_EXTERN_C KDE_EXPORT QUnknownInterface* ucm_instantiate(); \ + Q_EXPORT_PLUGIN(PLUGIN) +#endif + +KDE_Q_EXPORT_PLUGIN( KPartsWidgetPlugin ) + +#include "kpartsdesignerplugin.moc" + diff --git a/libkdepim/kpartsdesignerplugin/kpartsdesignerplugin.h b/libkdepim/kpartsdesignerplugin/kpartsdesignerplugin.h new file mode 100644 index 000000000..798053cac --- /dev/null +++ b/libkdepim/kpartsdesignerplugin/kpartsdesignerplugin.h @@ -0,0 +1,70 @@ +/* + Copyright (C) 2005, David Faure + This file is part of the KDE project + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License version 2, as published by the Free Software Foundation. + + This library 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + + +#ifndef DESIGNER_PARTPLUGIN_H +#define DESIGNER_PARTPLUGIN_H + +#include +#include +namespace KParts { class ReadOnlyPart; } + +/** + * Generic part loader, able to view any kind of file for which + * a KParts::ReadOnlyPart is available + */ +class KPartsGenericPart : public QWidget { + Q_OBJECT + Q_PROPERTY( QString url READ url WRITE setURL ) + Q_PROPERTY( QString mimetype READ mimetype WRITE setMimetype ) +public: + KPartsGenericPart( QWidget* parentWidget, const char* name ); + + QString url() const { return m_url; } + void setURL( const QString& url ) { m_url = url; load(); } + + // The mimetype, or "auto" if unknown + QString mimetype() const { return m_mimetype; } + void setMimetype( const QString& mimetype ) { m_mimetype = mimetype; load(); } + +private: + void load(); + +private: + QString m_mimetype; + QString m_url; + KParts::ReadOnlyPart* m_part; +}; + +/** + * Qt designer plugin for embedding a KParts using KPartsGenericPart + */ +class KPartsWidgetPlugin : public QWidgetPlugin { +public: + QStringList keys() const; + QWidget * create( const QString & key, QWidget * parent, const char * name ); + QString group( const QString & key ) const; + //QIconSet iconSet( const QString & key ) const; + QString includeFile( const QString & key ) const; + QString toolTip( const QString & key ) const; + QString whatsThis( const QString & key ) const; + bool isContainer( const QString & key ) const; +}; + +#endif -- cgit v1.2.1