void PluginManager::search() {
	qDebug() << "[PluginManager]"
			 << "Searching: " << pluginDirectory();
	for (const QFileInfo& file : pluginDirectory().entryInfoList(QDir::Files)) {
		learn(file);
	}
	emit pluginListUpdated();
}
Пример #2
0
Status
pluginDataClear(const Account &account, const std::string &plugin)
{
    std::string directory = pluginDirectory(account, plugin);

    if (fileExists(directory))
        ABC_CHECK(fileDelete(directory));

    return Status();
}
Пример #3
0
Status
pluginDataClear(const Account &account, const std::string &plugin)
{
    std::string directory = pluginDirectory(account, plugin);

    if (fileExists(directory))
        ABC_CHECK_OLD(ABC_FileIODeleteRecursive(directory.c_str(), &error));

    return Status();
}
Пример #4
0
Status
pluginDataSet(const Account &account, const std::string &plugin,
              const std::string &key, const std::string &data)
{
    ABC_CHECK(fileEnsureDir(pluginsDirectory(account)));
    ABC_CHECK(fileEnsureDir(pluginDirectory(account, plugin)));

    const auto namePath = pluginDirectory(account, plugin) + "Name.json";
    if (!fileExists(namePath))
    {
        PluginNameJson json;
        ABC_CHECK(json.nameSet(plugin));
        json.save(namePath, account.login.dataKey());
    }

    PluginDataFile json;
    json.keySet(key);
    json.dataSet(data);
    ABC_CHECK(json.save(keyFilename(account, plugin, key),
                        account.login.dataKey()));

    return Status();
}
Пример #5
0
Status
pluginDataSet(const Account &account, const std::string &plugin,
    const std::string &key, const std::string &data)
{
    ABC_CHECK(fileEnsureDir(pluginsDirectory(account)));
    ABC_CHECK(fileEnsureDir(pluginDirectory(account, plugin)));

    PluginDataFile json;
    json.keySet(key);
    json.dataSet(data);
    ABC_CHECK(json.save(keyFilename(account, plugin, key), account.login.dataKey()));

    return Status();
}
Пример #6
0
Catagory::Catagory(std::string catagoreysFolder) :
		_CatagorysFolder(catagoreysFolder)
{
	namespace fs = boost::filesystem;
	fs::path pluginDirectory(_CatagorysFolder);
	fs::directory_iterator end_iter;


	for( fs::directory_iterator dir_iter(pluginDirectory) ; dir_iter != end_iter ; ++dir_iter)
	{
		if (fs::is_directory( *dir_iter ))
		{
			fs::path path = dir_iter->path();
			std::string subCatFolder = path.string();
			std::string subCatFolderName(path.leaf().string());

			_SubCatagories.push_back(SubCatagory(subCatFolder, subCatFolderName));
		}
	}
}
Пример #7
0
std::list<std::string>
pluginDataKeys(const Account &account, const std::string &plugin)
{
    std::list<std::string> out;

    std::string outer = pluginDirectory(account, plugin);
    DIR *dir = opendir(outer.c_str());
    if (!dir)
        return out;

    struct dirent *de;
    while (nullptr != (de = readdir(dir)))
    {
        PluginDataFile json;
        if (fileIsJson(de->d_name)
                && json.load(outer + de->d_name, account.login.dataKey())
                && json.keyOk())
            out.push_back(json.key());
    }

    closedir(dir);
    return out;
}
Пример #8
0
void PluginManager::loadPlugins() {
	// first try to remove duplicit directories
	// (I know, I know, this is bad as it does not take care of
	// symlinks etc. but it is better than nothing)
	QStringList::iterator dirEnd = pluginDirectories_.end();
	for (QStringList::iterator dir = pluginDirectories_.begin(); dir != dirEnd; ++dir) {
		if (!dir->endsWith("/")) {
			dir->append("/");
		}
	}
	pluginDirectories_.removeDuplicates();
	
	dirEnd = pluginDirectories_.end();
	for (QStringList::iterator dir = pluginDirectories_.begin(); dir != dirEnd; ++dir) {
		QDir pluginDirectory(*dir);
		
		QStringList pluginFiles = pluginDirectory.entryList(QStringList() << "lib*plugin*");
		QStringList::iterator e = pluginFiles.end();
		for (QStringList::iterator i = pluginFiles.begin(); i != e; ++i) {
			loadPlugin(pluginDirectory.absoluteFilePath(*i));
		}
	}
}