Add KarambaManager for easier loading of SuperKaramba themes
svn path=/trunk/KDE/kdebase/workspace/plasma/lib/; revision=670527
This commit is contained in:
parent
7815a31298
commit
0de27801c9
@ -13,6 +13,7 @@ set(plasma_LIB_SRCS
|
||||
plasma_export.h
|
||||
svg.cpp
|
||||
theme.cpp
|
||||
karambamanager.cpp
|
||||
widgets/checkbox.cpp
|
||||
widgets/icon.cpp
|
||||
widgets/lineedit.cpp
|
||||
|
31
corona.cpp
31
corona.cpp
@ -32,6 +32,7 @@
|
||||
#include "applet.h"
|
||||
#include "dataengine.h"
|
||||
#include "widgets/vboxlayout.h"
|
||||
#include "karambamanager.h"
|
||||
|
||||
#ifdef ICON_DEMO
|
||||
#include "widgets/icon.h"
|
||||
@ -40,9 +41,6 @@
|
||||
#include "corona.h"
|
||||
|
||||
using namespace Plasma;
|
||||
extern "C" {
|
||||
typedef QGraphicsItem* (*loadKaramba)(const KUrl &theme, QGraphicsView *view);
|
||||
}
|
||||
|
||||
namespace Plasma
|
||||
{
|
||||
@ -116,23 +114,6 @@ void Corona::init()
|
||||
kDebug() << "=========================" << endl;
|
||||
*/
|
||||
|
||||
// Loading SuperKaramba themes example
|
||||
/*
|
||||
QString karambaLib = QFile::encodeName(KLibLoader::self()->findLibrary(QLatin1String("libsuperkaramba")));
|
||||
KLibLoader* loader = KLibLoader::self();
|
||||
KLibrary* lib = loader->library(karambaLib);
|
||||
|
||||
if (lib) {
|
||||
loadKaramba startKaramba = 0;
|
||||
startKaramba = (loadKaramba)lib->resolveFunction("startKaramba");
|
||||
if (startKaramba) {
|
||||
startKaramba(KUrl("~/themes/aero_aio.skz"), this);
|
||||
}
|
||||
|
||||
lib->unload();
|
||||
}
|
||||
*/
|
||||
|
||||
// connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(displayContextMenu(QPoint)));
|
||||
d->engineExplorerAction = new QAction(i18n("Engine Explorer"), this);
|
||||
connect(d->engineExplorerAction, SIGNAL(triggered(bool)), this, SLOT(launchExplorer(bool)));
|
||||
@ -205,6 +186,16 @@ void Corona::addPlasmoid(const QString& name)
|
||||
}
|
||||
}
|
||||
|
||||
void Corona::addKaramba(const KUrl& path)
|
||||
{
|
||||
QGraphicsItemGroup* karamba = KarambaManager::loadKaramba(path, this);
|
||||
if (karamba) {
|
||||
addItem(karamba);
|
||||
} else {
|
||||
kDebug() << "Karamba " << path << " could not be loaded." << endl;
|
||||
}
|
||||
}
|
||||
|
||||
void Corona::dragEnterEvent( QGraphicsSceneDragDropEvent *event)
|
||||
{
|
||||
kDebug() << "Corona::dragEnterEvent(QGraphicsSceneDragDropEvent* event)" << endl;
|
||||
|
7
corona.h
7
corona.h
@ -81,6 +81,13 @@ public Q_SLOTS:
|
||||
*/
|
||||
void addPlasmoid(const QString& name);
|
||||
|
||||
/**
|
||||
* Adds a SuperKaramba theme to the scene
|
||||
*
|
||||
* @param path the path to the theme file
|
||||
*/
|
||||
void addKaramba(const KUrl& path);
|
||||
|
||||
protected:
|
||||
void dragEnterEvent(QGraphicsSceneDragDropEvent* event);
|
||||
void dragLeaveEvent(QGraphicsSceneDragDropEvent* event);
|
||||
|
48
karambamanager.cpp
Normal file
48
karambamanager.cpp
Normal file
@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Copyright (C) 2007 Alexander Wiedenbruch <wirr01@gmail.com>
|
||||
*
|
||||
* This program 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 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 Library General Public
|
||||
* License along with this program; if not, write to the
|
||||
* Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#include "karambamanager.h"
|
||||
|
||||
#include <QFile>
|
||||
|
||||
#include <KLibLoader>
|
||||
#include <KLibrary>
|
||||
#include <KDebug>
|
||||
|
||||
QGraphicsItemGroup* KarambaManager::loadKaramba(const KUrl &themePath, QGraphicsScene *scene)
|
||||
{
|
||||
QString karambaLib = QFile::encodeName(KLibLoader::self()->findLibrary(QLatin1String("libsuperkaramba")));
|
||||
|
||||
QGraphicsItemGroup *karamba = 0;
|
||||
|
||||
KLibrary *lib = KLibLoader::self()->library(karambaLib);
|
||||
if (lib) {
|
||||
startKaramba createKaramba = 0;
|
||||
createKaramba = (startKaramba)lib->resolveFunction("startKaramba");
|
||||
if (createKaramba) {
|
||||
karamba = createKaramba(themePath, scene->views()[0]);
|
||||
}
|
||||
} else {
|
||||
kWarning() << "Could not load " << karambaLib << endl;
|
||||
}
|
||||
|
||||
return karamba;
|
||||
}
|
||||
|
||||
#include "karambamanager.moc"
|
||||
|
36
karambamanager.h
Normal file
36
karambamanager.h
Normal file
@ -0,0 +1,36 @@
|
||||
/*
|
||||
* Copyright (C) 2007 Alexander Wiedenbruch <wirr01@gmail.com>
|
||||
*
|
||||
* This program 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 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 Library General Public
|
||||
* License along with this program; if not, write to the
|
||||
* Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#ifndef KARAMBA_MANAGER_H
|
||||
#define KARAMBA_MANAGER_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QGraphicsScene>
|
||||
#include <KUrl>
|
||||
|
||||
extern "C" {
|
||||
typedef QGraphicsItemGroup* (*startKaramba)(const KUrl &theme, QGraphicsView *view);
|
||||
}
|
||||
|
||||
class KarambaManager
|
||||
{
|
||||
public:
|
||||
static QGraphicsItemGroup* loadKaramba(const KUrl &themePath, QGraphicsScene *scene);
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user