summaryrefslogtreecommitdiffstats
path: root/libkdepim/kpartsdesignerplugin
diff options
context:
space:
mode:
Diffstat (limited to 'libkdepim/kpartsdesignerplugin')
-rw-r--r--libkdepim/kpartsdesignerplugin/Makefile.am8
-rw-r--r--libkdepim/kpartsdesignerplugin/README2
-rw-r--r--libkdepim/kpartsdesignerplugin/kpartsdesignerplugin.cpp117
-rw-r--r--libkdepim/kpartsdesignerplugin/kpartsdesignerplugin.h70
4 files changed, 197 insertions, 0 deletions
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 <faure@kde.org>
+ 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 <kparts/componentfactory.h>
+#include <kparts/part.h>
+#include <kmimetype.h>
+#include <qlayout.h>
+#include <kapplication.h>
+#include <kdepimmacros.h>
+
+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<KParts::ReadOnlyPart>( 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 <faure@kde.org>
+ 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 <qwidgetplugin.h>
+#include <qwidget.h>
+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