Plasma
plasmajs.cpp
Go to the documentation of this file.00001 /* 00002 Copyright (c) 2007 Zack Rusin <zack@kde.org> 00003 00004 Permission is hereby granted, free of charge, to any person obtaining a copy 00005 of this software and associated documentation files (the "Software"), to deal 00006 in the Software without restriction, including without limitation the rights 00007 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 00008 copies of the Software, and to permit persons to whom the Software is 00009 furnished to do so, subject to the following conditions: 00010 00011 The above copyright notice and this permission notice shall be included in 00012 all copies or substantial portions of the Software. 00013 00014 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 00015 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 00016 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 00017 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 00018 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 00019 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 00020 THE SOFTWARE. 00021 */ 00022 #include "plasmajs.h" 00023 00024 #include "plasma/dataenginemanager.h" 00025 #include "plasma/dataengine.h" 00026 00027 #include <QDebug> 00028 00029 using namespace Plasma; 00030 00031 PlasmaJs::PlasmaJs(QObject *parent) 00032 : QObject(parent) 00033 { 00034 } 00035 00036 QObject *PlasmaJs::dataEngine(const QString &name) 00037 { 00038 DataEngine *engine = DataEngineManager::self()->engine(name); 00039 DataEngineWrapper *wrapper = new DataEngineWrapper(engine); 00040 qDebug()<<"engine is "<<wrapper; 00041 qDebug()<<"\t name = "<<wrapper->engineName()<<", valid = "<<wrapper->isValid(); 00042 return wrapper; 00043 } 00044 00045 QObject *PlasmaJs::loadDataEngine(const QString& name) 00046 { 00047 DataEngine *engine = DataEngineManager::self()->loadEngine(name); 00048 //engine = new TestJs(this); 00049 DataEngineWrapper *wrapper = new DataEngineWrapper(engine); 00050 qDebug()<<"engine is "<<wrapper; 00051 qDebug()<<"engine sources "<<wrapper->sources(); 00052 qDebug()<<"res = "<<wrapper->query("world"); 00053 return wrapper; 00054 } 00055 00056 void PlasmaJs::unloadDataEngine(const QString& name) 00057 { 00058 return DataEngineManager::self()->unloadEngine(name); 00059 } 00060 00061 QStringList PlasmaJs::knownEngines() 00062 { 00063 return DataEngineManager::listAllEngines(); 00064 } 00065 00066 TestJs::TestJs(QObject *parent) 00067 : QObject(parent) 00068 { 00069 } 00070 00071 void TestJs::test() 00072 { 00073 qDebug()<<"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; 00074 qDebug()<<"XXXXXXX YES XXXXXXX"; 00075 } 00076 00077 DataEngineDataWrapper::DataEngineDataWrapper(const DataEngine::Data &data) 00078 : m_data(data) 00079 { 00080 } 00081 00082 int DataEngineDataWrapper::size() const 00083 { 00084 return m_data.count(); 00085 } 00086 00087 QVariant DataEngineDataWrapper::value(const QString &key) const 00088 { 00089 return m_data[key]; 00090 } 00091 00092 QStringList DataEngineDataWrapper::keys() const 00093 { 00094 return m_data.keys(); 00095 } 00096 00097 QString DataEngineDataWrapper::key(int i) const 00098 { 00099 return m_data.keys().at(i); 00100 } 00101 00102 DataEngineWrapper::DataEngineWrapper(Plasma::DataEngine *engine) 00103 : QObject(engine), m_engine(engine) 00104 { 00105 DataEngineManager::self()->loadEngine(engine->name()); //FIXME it's getting loaded twice 00106 } 00107 00108 QStringList DataEngineWrapper::sources() const 00109 { 00110 return m_engine->sources(); 00111 } 00112 00113 QString DataEngineWrapper::engineName() const 00114 { 00115 return m_engine->name(); 00116 } 00117 00118 bool DataEngineWrapper::isValid() const 00119 { 00120 return m_engine->isValid(); 00121 } 00122 00123 QString DataEngineWrapper::icon() const 00124 { 00125 return m_engine->icon(); 00126 } 00127 00128 QObject * DataEngineWrapper::query(const QString &str) const 00129 { 00130 DataEngine::Data data = m_engine->query(str); 00131 return new DataEngineDataWrapper(data); 00132 } 00133 00134 DataEngineWrapper::~DataEngineWrapper() 00135 { 00136 DataEngineManager::self()->unloadEngine(m_engine->name()); //FIXME it might be getting unloaded twice 00137 } 00138 00139 #include "plasmajs.moc"