Exemplo n.º 1
0
void Ztamp::LoadConfig()
{
	QFile file(configFileName);
	if (!file.open(QIODevice::ReadOnly))
	{
		LogError(QString("Cannot open config file for reading : %1").arg(configFileName));
		return;
	}
	
	QDataStream in(&file);
	in.setVersion(QDataStream::Qt_4_3);
	in >> GlobalSettings >> PluginsSettings >> listOfPlugins;
	if (in.status() != QDataStream::Ok)
	{
		LogWarning(QString("Problem when loading config file for ztamp : %1").arg(QString(id.toHex())));
	}
	
	// "Load" associated ztamp plugins
	foreach(QString s, listOfPlugins)
	{
		PluginInterface * p = PluginManager::Instance().GetPluginByName(s);
		if(p)
		{
			listOfPluginsPtr.append(p);
			if(!p->GetEnable())
				LogWarning(QString("Ztamp %1 : '%2' is globally disabled !").arg(QString(GetID()), s));
		}
		else
			LogError(QString("Ztamp %1 has invalid plugin !").arg(QString(GetID())));
	}
 virtual PluginInterface* LoadPlugin(ImageObserverInterface* imageObserver = 0) {
     PluginInterface* plugin = 0;
     if ((plugin = PluginInterface::AcquireInstance())) {
         if ((imageObserver))
             plugin->RegisterImageObserver(imageObserver);
     }
     return plugin;
 }
Exemplo n.º 3
0
/**
  *Returns the javascript's last error for the given plugin if found, an empty QString else.
  */
QString Filter::getScriptLastError(QString plugin) {
    for (QVector<PluginInterface *>::iterator i = m_plugins.begin(); i != m_plugins.end(); i++) {
        PluginInterface *fiP = *i;
        if (fiP->getName() == plugin)
            return fiP->getScriptLastError();
    }

    return "";
}
Exemplo n.º 4
0
/**
  * Returns the attribute list for the given plugin if found, an empty list else.
  */
const QList<QString> Filter::getAttributes(QString plugin) {
    for (QVector<PluginInterface *>::iterator i = m_plugins.begin(); i != m_plugins.end(); i++) {
        PluginInterface *fiP = *i;
        if (fiP->getName() == plugin)
            return fiP->getAttributeNames();
    }

    return QList<QString>();
}
Exemplo n.º 5
0
/**
  * Return the attribute's tip for the given plugin if found, an empty QString else.
  */
QString Filter::getAttributeTip(QString plugin, QString name) {
    for (QVector<PluginInterface *>::iterator i = m_plugins.begin(); i != m_plugins.end(); i++) {
        PluginInterface *fiP = *i;
        if (fiP->getName() == plugin)
            return fiP->getAttributeTip(name);
    }

    return "";
}
Exemplo n.º 6
0
/**
  * Sets the javascript for the given plugin if found, an empty QString else.
  */
void Filter::setScript(QString plugin, QString script) {
    for (QVector<PluginInterface *>::iterator i = m_plugins.begin(); i != m_plugins.end(); i++) {
        PluginInterface *fiP = *i;
        if (fiP->getName() == plugin) {
#ifdef _VERBOSE_FILTER
            qDebug() << "Filter::setScript(" << m_virtualDirectoryPath << ", " << plugin << ", " << script << ")";
#endif
            fiP->setScript(script);
            return;
        }
    }
}
Exemplo n.º 7
0
/**
  * Returns the javascript for the given plugin if found, an empty QString else.
  */
QString Filter::getScript(QString plugin) {
    for (QVector<PluginInterface *>::iterator i = m_plugins.begin(); i != m_plugins.end(); i++) {
        PluginInterface *fiP = *i;
        if (fiP->getName() == plugin) {
#ifdef _VERBOSE_FILTER
            qDebug() << "Filter::getScript(" << m_virtualDirectoryPath << ", " << plugin << ") -> " << fiP->getScript();
#endif
            return fiP->getScript();
        }
    }

    return "";
}
Exemplo n.º 8
0
void tst_QPluginLoader::relativePath()
{
    // Windows binaries run from release and debug subdirs, so we can't rely on the current dir.
    const QString binDir = QFINDTESTDATA("bin");
    QVERIFY(!binDir.isEmpty());
    QCoreApplication::addLibraryPath(binDir);
    QPluginLoader loader("theplugin");
    loader.load(); // not recommended, instance() should do the job.
    PluginInterface *instance = qobject_cast<PluginInterface*>(loader.instance());
    QVERIFY(instance);
    QCOMPARE(instance->pluginName(), QLatin1String("Plugin ok"));
    QVERIFY(loader.unload());
}
Exemplo n.º 9
0
void g19daemon::loadPlugins()
{
	PluginInterface *pluginint;
	QDir pluginsDir(qApp->applicationDirPath());
	QString name;
	
	name = settings->value("ActivePlugin").toString();
	pluginsDir.cd(PLUGINS_DIR);
	QDirIterator iterator(pluginsDir.absolutePath(), QStringList() << "*.so", QDir::Files, QDirIterator::NoIteratorFlags);

	while (iterator.hasNext())
	{
		iterator.next();
		QString filename = iterator.fileName();
		
		QPluginLoader pluginLoader(iterator.filePath());
		pluginLoader.setLoadHints(QLibrary::ResolveAllSymbolsHint);
		QObject *plugin = pluginLoader.instance();
		
		if (plugin)
		{
			pluginint = qobject_cast<PluginInterface *>(plugin);
			
			if (pluginint)
			{
				QObject *signalsource = pluginint->getQObject();
				connect(signalsource, SIGNAL(doAction(gAction, void *)), this, SLOT(doAction(gAction, void *)));

				if (pluginint->isPopup())
				{
					PopupPlugins.append(pluginint);
				}
				else
				{
					plugins.append(pluginint);

					if (pluginint->getName().compare(name) == 0)
					{
						activePlugin = plugins.indexOf(pluginint);
					}
				}
			}
		}
		else
		{
			QErrorMessage err(this);
			err.showMessage(pluginLoader.errorString());
			qDebug() << "\tError: " << pluginLoader.errorString();
		}
	}
Exemplo n.º 10
0
void Filter::loadPlugin(QString pluginFilename) {
    // load the plugin
    QPluginLoader loader(pluginFilename);
    if (loader.load()) {
#ifdef _VERBOSE_FILTER
        qDebug() << "Loaded plugin: " << pluginFilename;
#endif
        PluginInterface *pluginP = qobject_cast<PluginInterface *>(loader.instance());  // this singleton instance will be automatically
        pluginP = pluginP->newInstance(m_virtualDirectoryPath);                         // unloaded when the server exits
        m_plugins.append(pluginP);
        m_pluginFilenames.append(pluginFilename);
    }
    else
        qDebug() << QObject::tr("Failed to load plugin: ") + pluginFilename + QObject::tr(", error: ") + loader.errorString();
}
Exemplo n.º 11
0
void BoxWidget::initPluginWidget()
{
    QStringList title;
    title << tr("");
    pluginModel.setTitle(title);
//    pluginModel.insertRows(0,1,QModelIndex());
//    QModelIndex qindex = pluginModel.index(0,0,QModelIndex());
//    pluginModel.setData(qindex,tr("      "));
    pluginModel.insertRows(0,1,QModelIndex());
    QModelIndex qindex = pluginModel.index(0,0,QModelIndex());
    //set text
    pluginModel.setData(qindex, tr("UbuntuKylin Software Center"));
    //set icon
    pluginModel.setData(qindex,QIcon(QPixmap("://res/ubuntukylin-software-center.png")),Qt::DecorationRole);
    //set tooltip
    pluginModel.setData(qindex, tr("UbuntuKylin Software Center"),Qt::WhatsThisRole);

    QStringList icon_list;
    icon_list<<"://res/boot"<<"://res/camera";
    QStringList text_list;
    text_list << tr("Boot Manager") << tr("Camera");
    for (int index = 0;index < 2;++index)
    {
        pluginModel.insertRows(index + 1,1,QModelIndex());
        qindex = pluginModel.index(index + 1,0,QModelIndex());
        pluginModel.setData(qindex, text_list.at(index));
        //set icon
        pluginModel.setData(qindex,QIcon(QPixmap(icon_list.at(index))),Qt::DecorationRole);
        //set tooltip
        pluginModel.setData(qindex, text_list.at(index),Qt::WhatsThisRole);
    }

    int count =  PluginManager::Instance()->count();
    for (int i = 0;i < count;++i)
    {
        PluginInterface* ICommon = PluginManager::Instance()->getInterfaceByindex<PluginInterface>(i);
        QString picture = ICommon->getPicture();
        QString  pacture_path = QString(":/model/res/plugin/%1").arg(picture);
        pluginModel.setGuid(ICommon->getGuid());
//        pluginModel.insertRows(i + 1,1,QModelIndex());
//        qindex = pluginModel.index(i + 1,0,QModelIndex());
        pluginModel.insertRows(i + 3,1,QModelIndex());
        qindex = pluginModel.index(i + 3,0,QModelIndex());
        pluginModel.setData(qindex,ICommon->getName());
        pluginModel.setData(qindex,QIcon(QPixmap(pacture_path)),Qt::DecorationRole);
        pluginModel.setData(qindex,ICommon->getName(),Qt::WhatsThisRole);
    }
}
Exemplo n.º 12
0
void tst_XQPluginLoader::listThePlugins()
{
    QList<XQPluginInfo> plugins;
    XQPluginLoader loader;
    loader.listImplementations( tr( "xtheplugin.dll" ), plugins );
    QVERIFY( plugins.count() !=  0 );
    for( int i( 0 ); i < plugins.count(); ++i ) {
        
        loader.setUid( plugins[i ].uid() );
        QCOMPARE( loader.load(), true );
        PluginInterface *instance = qobject_cast<PluginInterface*>(loader.instance());
        QCOMPARE(instance->pluginName(), QLatin1String("Plugin ok"));
        QCOMPARE(loader.unload(), true);
        
    }
    plugins.clear();
}
Exemplo n.º 13
0
void PluginModel::setPluginEnabled(bool enabled, int i)
{
    Q_ASSERT(i >= 0 && i < count());
    PluginInterface *plugin = m_plugins.at(i);
    plugin->setEnabled(enabled);
    auto *pluginObj = dynamic_cast<QObject*>(plugin);
    if (!pluginObj) {
        qWarning() << Q_FUNC_INFO << "pluginObj is null" << enabled << i;
        return;
    }
    const QString pluginName = pluginObj->metaObject()->className();
    m_kernel->settings()->beginGroup("plugins");
    m_kernel->settings()->setValue(pluginName + ".enabled", enabled);
    m_kernel->settings()->endGroup();
    plugin->setEnabled(enabled);

    emit dataChanged(index(0, 0), index(rowCount()-1, 0));
}
Exemplo n.º 14
0
ApiManager::ApiAnswer * ApiManager::ProcessPluginApiCall(Account const& account, QString const& request, HTTPRequest & hRequest)
{
	QStringList list = QString(request).split('/', QString::SkipEmptyParts);

	if(list.size() != 2)
		return new ApiManager::ApiError(QString("Malformed Plugin Api Call : %1").arg(hRequest.toString()));

	QString const& pluginName = list.at(0);
	QString const& functionName = list.at(1);

	PluginInterface * plugin = PluginManager::Instance().GetPluginByName(pluginName);
	if(!plugin)
		return new ApiManager::ApiError(QString("Unknown Plugin : %1<br />Request was : %2").arg(pluginName,hRequest.toString()));

	if(!plugin->GetEnable())
		return new ApiManager::ApiError("This plugin is disabled");

	return plugin->ProcessApiCall(account, functionName, hRequest);
}
Exemplo n.º 15
0
void BoxWidget::OnClickListView(const QModelIndex & index)
{
    if(index.row() == 0)
    {
        sessionProxy->runApp("ubuntu-kylin-software-center");
    }
    else if(index.row() == 1) {
        emit this->sendSubIndex(0);
    }
    else if(index.row() == 2) {
        emit this->sendSubIndex(1);
    }
    else
    {
//        QString guid = pluginModel.getGuid(index.row() - 1);
        QString guid = pluginModel.getGuid(index.row() - 3);
        PluginInterface* interface = PluginManager::Instance()->getInterfaceByGuid<PluginInterface>(guid);
        interface->doAction();
    }
}
Exemplo n.º 16
0
bool Filter::checkAndSaveFile(QString path) {
    bool saved = false;

    // does the file rely under the watched directory?
    if (!path.startsWith(m_dir))
        return saved;


    // if any plugin accepts the file, then save its ref
    // in the db
    for (int i = 0; !saved && i < m_plugins.count(); i++) {
        m_plugins[i]->loadAttributes(path);
        saved |= m_plugins[i]->checkFile(path);
    }

    // save file if retained
    if (saved) {
        QString fileId = m_db.addFile(m_filterId, path); // add file to db

        // signal
        newFile(m_virtualDirectoryPath, path);

        // save file attributes
        for (int i = 0; i < m_plugins.count(); i++) {
            PluginInterface *fP = m_plugins[i];
            fP->loadAttributes(path); // attributes are loaded only if not done in the above checkFile iteration, we don't reload attrs if same file...
            QList<QString>attributes = fP->getAttributeNames();
            for (QList<QString>::iterator j = attributes.begin(); j != attributes.end(); j++) {
                    QString  attrName = (*j);
                    QVariant attrObjValue = fP->getAttributeValue(attrName);
                    QString attrValue = attrObjValue.isValid() ? attrObjValue.toString() : "<null>";
                    m_db.addFileAttribute(fileId, attrName, attrValue);
            }
        }
    }

    return saved;
}
Exemplo n.º 17
0
void tst_QPluginLoader::reloadPlugin()
{
    QPluginLoader loader;
    loader.setFileName( sys_qualifiedLibraryName("theplugin"));     //a plugin
    loader.load(); // not recommended, instance() should do the job.
    PluginInterface *instance = qobject_cast<PluginInterface*>(loader.instance());
    QVERIFY(instance);
    QCOMPARE(instance->pluginName(), QLatin1String("Plugin ok"));

    QSignalSpy spy(loader.instance(), SIGNAL(destroyed()));
    QVERIFY(spy.isValid());
    QVERIFY(loader.unload());   // refcount reached 0, did really unload
    QCOMPARE(spy.count(), 1);

    // reload plugin
    QVERIFY(loader.load());
    QVERIFY(loader.isLoaded());

    PluginInterface *instance2 = qobject_cast<PluginInterface*>(loader.instance());
    QVERIFY(instance2);
    QCOMPARE(instance2->pluginName(), QLatin1String("Plugin ok"));

    QVERIFY(loader.unload());
}
Exemplo n.º 18
0
ApiManager::ApiAnswer * ApiManager::ProcessBunnyApiCall(Account const& account, QString const& request, HTTPRequest const& hRequest)
{
	QStringList list = QString(request).split('/', QString::SkipEmptyParts);

	if(list.size() < 2)
		return new ApiManager::ApiError(QString("Malformed Bunny Api Call : %1").arg(hRequest.toString()));

	QByteArray const& bunnyID = list.at(0).toAscii();

	if(!account.HasBunnyAccess(bunnyID))
		return new ApiManager::ApiError("Access denied to this bunny");

	Bunny * b = BunnyManager::GetBunny(bunnyID);

	if(list.size() == 2)
	{
		QByteArray const& functionName = list.at(1).toAscii();
		return b->ProcessApiCall(account, functionName, hRequest);
	}
	else if(list.size() == 3)
	{
			PluginInterface * plugin = PluginManager::Instance().GetPluginByName(list.at(1).toAscii());
			if(!plugin)
				return new ApiManager::ApiError(QString("Unknown Plugin : '%1'").arg(list.at(1)));

			if(b->HasPlugin(plugin) || ( (plugin->GetType() == PluginInterface::SystemPlugin || plugin->GetType() == PluginInterface::RequiredPlugin ) && plugin->GetEnable()))
			{
				QByteArray const& functionName = list.at(2).toAscii();
				return plugin->ProcessBunnyApiCall(b, account, functionName, hRequest);
			}
		else
			return new ApiManager::ApiError("This plugin is not enabled for this bunny");
	}
	else
		return new ApiManager::ApiError(QString("Malformed Plugin Api Call : %1").arg(hRequest.toString()));
}
Exemplo n.º 19
0
ApiManager::ApiAnswer * ApiManager::ProcessZtampApiCall(Account const& account, QString const& request, HTTPRequest const& hRequest)
{
	QStringList list = QString(request).split('/', QString::SkipEmptyParts);

	if(list.size() < 2)
		return new ApiManager::ApiError(QString("Malformed Ztamp Api Call : %1").arg(hRequest.toString()));

	QByteArray const& ztampID = list.at(0).toAscii();

	if(!account.HasZtampAccess(ztampID))
		return new ApiManager::ApiError("Access denied to this ztamp");

	Ztamp * z = ZtampManager::GetZtamp(ztampID);

	if(list.size() == 2)
	{
		QByteArray const& functionName = list.at(1).toAscii();
		return z->ProcessApiCall(account, functionName, hRequest);
	}
	else if(list.size() == 3)
	{
			PluginInterface * plugin = PluginManager::Instance().GetPluginByName(list.at(1).toAscii());
			if(!plugin)
				return new ApiManager::ApiError(QString("Unknown Plugin : '%1'").arg(list.at(1)));

			if(z->HasPlugin(plugin))
			{
				QByteArray const& functionName = list.at(2).toAscii();
				return plugin->ProcessZtampApiCall(z, account, functionName, hRequest);
			}
		else
			return new ApiManager::ApiError("This plugin is not enabled for this ztamp");
	}
	else
		return new ApiManager::ApiError(QString("Malformed Plugin Api Call : %1").arg(hRequest.toString()));
}
Exemplo n.º 20
0
QVariant PluginModel::data(const QModelIndex &index, int role) const
{
    if (index.row() < 0 || index.row() >= m_plugins.count()) {
        return QVariant();
    }

    PluginInterface *plugin = m_plugins[index.row()];

    switch (role) {
    case TextRole:
        return plugin->text();
    case EnabledRole:
        return plugin->enabled();
    case HelpTextRole:
        return plugin->helpText();
    case ObjectRole:
        return QVariant::fromValue<QObject*>(plugin->controller());
    case ConfigItemRole:
        return QVariant::fromValue<QObject*>(plugin->configureItem());
    }

    return QVariant();
}
Exemplo n.º 21
0
void tst_QPluginLoader::errorString()
{
#if defined(Q_OS_WINCE)
    // On WinCE we need an QCoreApplication object for current dir
    int argc = 0;
    QCoreApplication app(argc,0);
#endif
    const QString unknown(QLatin1String("Unknown error"));

    {
    QPluginLoader loader; // default constructed
    bool loaded = loader.load();
#ifdef SHOW_ERRORS
    qDebug() << loader.errorString();
#endif
    QCOMPARE(loaded, false);
    QCOMPARE(loader.errorString(), unknown);

    QObject *obj = loader.instance();
#ifdef SHOW_ERRORS
    qDebug() << loader.errorString();
#endif
    QCOMPARE(obj, static_cast<QObject*>(0));
    QCOMPARE(loader.errorString(), unknown);

    bool unloaded = loader.unload();
#ifdef SHOW_ERRORS
    qDebug() << loader.errorString();
#endif
    QCOMPARE(unloaded, false);
    QCOMPARE(loader.errorString(), unknown);
    }
    {
    QPluginLoader loader( sys_qualifiedLibraryName("tst_qpluginloaderlib"));     //not a plugin
    bool loaded = loader.load();
#ifdef SHOW_ERRORS
    qDebug() << loader.errorString();
#endif
    QCOMPARE(loaded, false);
    QVERIFY(loader.errorString() != unknown);

    QObject *obj = loader.instance();
#ifdef SHOW_ERRORS
    qDebug() << loader.errorString();
#endif
    QCOMPARE(obj, static_cast<QObject*>(0));
    QVERIFY(loader.errorString() != unknown);

    bool unloaded = loader.unload();
#ifdef SHOW_ERRORS
    qDebug() << loader.errorString();
#endif
    QCOMPARE(unloaded, false);
    QVERIFY(loader.errorString() != unknown);
    }

    {
    QPluginLoader loader( sys_qualifiedLibraryName("nosuchfile"));     //not a file
    bool loaded = loader.load();
#ifdef SHOW_ERRORS
    qDebug() << loader.errorString();
#endif
    QCOMPARE(loaded, false);
    QVERIFY(loader.errorString() != unknown);

    QObject *obj = loader.instance();
#ifdef SHOW_ERRORS
    qDebug() << loader.errorString();
#endif
    QCOMPARE(obj, static_cast<QObject*>(0));
    QVERIFY(loader.errorString() != unknown);

    bool unloaded = loader.unload();
#ifdef SHOW_ERRORS
    qDebug() << loader.errorString();
#endif
    QCOMPARE(unloaded, false);
    QVERIFY(loader.errorString() != unknown);
    }

#if !defined Q_OS_WIN && !defined Q_OS_MAC && !defined Q_OS_HPUX && !defined Q_OS_SYMBIAN && !defined Q_OS_QNX
    {
    QPluginLoader loader( sys_qualifiedLibraryName("almostplugin"));     //a plugin with unresolved symbols
    loader.setLoadHints(QLibrary::ResolveAllSymbolsHint);
    QCOMPARE(loader.load(), false);
#ifdef SHOW_ERRORS
    qDebug() << loader.errorString();
#endif
    QVERIFY(loader.errorString() != unknown);

    QCOMPARE(loader.instance(), static_cast<QObject*>(0));
#ifdef SHOW_ERRORS
    qDebug() << loader.errorString();
#endif
    QVERIFY(loader.errorString() != unknown);

    QCOMPARE(loader.unload(), false);
#ifdef SHOW_ERRORS
    qDebug() << loader.errorString();
#endif
    QVERIFY(loader.errorString() != unknown);
    }
#endif

    {
    QPluginLoader loader( sys_qualifiedLibraryName("theplugin"));     //a plugin
    QCOMPARE(loader.load(), true);
    QCOMPARE(loader.errorString(), unknown);

    QVERIFY(loader.instance() !=  static_cast<QObject*>(0));
    QCOMPARE(loader.errorString(), unknown);

    // Make sure that plugin really works
    PluginInterface* theplugin = qobject_cast<PluginInterface*>(loader.instance());
    QString pluginName = theplugin->pluginName();
    QCOMPARE(pluginName, QLatin1String("Plugin ok"));

    QCOMPARE(loader.unload(), true);
    QCOMPARE(loader.errorString(), unknown);
    }
}