Move FileSystem utility functions out of misc.h

Use new fs_utils.h instead.
This commit is contained in:
Christophe Dumez
2012-05-16 21:19:05 +03:00
parent e6e63fa529
commit 0f291629cc
23 changed files with 658 additions and 527 deletions

View File

@@ -30,6 +30,7 @@
#include "engineselectdlg.h"
#include "downloadthread.h"
#include "fs_utils.h"
#include "misc.h"
#include "ico.h"
#include "searchengine.h"
@@ -86,7 +87,7 @@ void engineSelectDlg::dropEvent(QDropEvent *event) {
if (file.endsWith(".py", Qt::CaseInsensitive)) {
if (file.startsWith("file:", Qt::CaseInsensitive))
file = QUrl(file).toLocalFile();
QString plugin_name = misc::fileName(file);
QString plugin_name = fsutils::fileName(file);
plugin_name.chop(3); // Remove extension
installPlugin(file, plugin_name);
}
@@ -157,7 +158,7 @@ void engineSelectDlg::on_actionUninstall_triggered() {
}else {
// Proceed with uninstall
// remove it from hard drive
QDir enginesFolder(misc::searchEngineLocation()+QDir::separator()+"engines");
QDir enginesFolder(fsutils::searchEngineLocation()+QDir::separator()+"engines");
QStringList filters;
filters << id+".*";
QStringList files = enginesFolder.entryList(filters, QDir::Files, QDir::Unsorted);
@@ -223,7 +224,7 @@ QTreeWidgetItem* engineSelectDlg::findItemWithID(QString id) {
}
bool engineSelectDlg::isUpdateNeeded(QString plugin_name, qreal new_version) const {
qreal old_version = SearchEngine::getPluginVersion(misc::searchEngineLocation()+QDir::separator()+"engines"+QDir::separator()+plugin_name+".py");
qreal old_version = SearchEngine::getPluginVersion(fsutils::searchEngineLocation()+QDir::separator()+"engines"+QDir::separator()+plugin_name+".py");
qDebug("IsUpdate needed? tobeinstalled: %.2f, alreadyinstalled: %.2f", new_version, old_version);
return (new_version > old_version);
}
@@ -238,7 +239,7 @@ void engineSelectDlg::installPlugin(QString path, QString plugin_name) {
return;
}
// Process with install
QString dest_path = misc::searchEngineLocation()+QDir::separator()+"engines"+QDir::separator()+plugin_name+".py";
QString dest_path = fsutils::searchEngineLocation()+QDir::separator()+"engines"+QDir::separator()+plugin_name+".py";
bool update = false;
if (QFile::exists(dest_path)) {
// Backup in case install fails
@@ -303,12 +304,12 @@ void engineSelectDlg::addNewEngine(QString engine_name) {
setRowColor(pluginsTree->indexOfTopLevelItem(item), "red");
}
// Handle icon
QString iconPath = misc::searchEngineLocation()+QDir::separator()+"engines"+QDir::separator()+engine->getName()+".png";
QString iconPath = fsutils::searchEngineLocation()+QDir::separator()+"engines"+QDir::separator()+engine->getName()+".png";
if (QFile::exists(iconPath)) {
// Good, we already have the icon
item->setData(ENGINE_NAME, Qt::DecorationRole, QVariant(QIcon(iconPath)));
} else {
iconPath = misc::searchEngineLocation()+QDir::separator()+"engines"+QDir::separator()+engine->getName()+".ico";
iconPath = fsutils::searchEngineLocation()+QDir::separator()+"engines"+QDir::separator()+engine->getName()+".ico";
if (QFile::exists(iconPath)) { // ICO support
item->setData(ENGINE_NAME, Qt::DecorationRole, QVariant(QIcon(iconPath)));
} else {
@@ -410,9 +411,9 @@ void engineSelectDlg::processDownloadedFile(QString url, QString filePath) {
QFile icon(filePath);
icon.open(QIODevice::ReadOnly);
if (ICOHandler::canRead(&icon))
iconPath = misc::searchEngineLocation()+QDir::separator()+"engines"+QDir::separator()+id+".ico";
iconPath = fsutils::searchEngineLocation()+QDir::separator()+"engines"+QDir::separator()+id+".ico";
else
iconPath = misc::searchEngineLocation()+QDir::separator()+"engines"+QDir::separator()+id+".png";
iconPath = fsutils::searchEngineLocation()+QDir::separator()+"engines"+QDir::separator()+id+".png";
QFile::copy(filePath, iconPath);
item->setData(ENGINE_NAME, Qt::DecorationRole, QVariant(QIcon(iconPath)));
}
@@ -429,7 +430,7 @@ void engineSelectDlg::processDownloadedFile(QString url, QString filePath) {
return;
}
if (url.endsWith(".py", Qt::CaseInsensitive)) {
QString plugin_name = misc::fileName(url);
QString plugin_name = fsutils::fileName(url);
plugin_name.chop(3); // Remove extension
installPlugin(filePath, plugin_name);
QFile::remove(filePath);

View File

@@ -51,6 +51,7 @@
#include "searchengine.h"
#include "qbtsession.h"
#include "downloadthread.h"
#include "fs_utils.h"
#include "misc.h"
#include "preferences.h"
#include "searchlistdelegate.h"
@@ -341,7 +342,7 @@ void SearchEngine::on_search_button_clicked() {
// Getting checked search engines
QStringList params;
search_stopped = false;
params << misc::searchEngineLocation()+QDir::separator()+"nova2.py";
params << fsutils::searchEngineLocation()+QDir::separator()+"nova2.py";
params << supported_engines->enginesEnabled().join(",");
qDebug("Search with category: %s", qPrintable(selectedCategory()));
params << selectedCategory();
@@ -416,7 +417,7 @@ void SearchEngine::downloadTorrent(QString engine_url, QString torrent_url) {
connect(downloadProcess, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(downloadFinished(int,QProcess::ExitStatus)));
downloaders << downloadProcess;
QStringList params;
params << misc::searchEngineLocation()+QDir::separator()+"nova2dl.py";
params << fsutils::searchEngineLocation()+QDir::separator()+"nova2dl.py";
params << engine_url;
params << torrent_url;
// Launch search
@@ -470,7 +471,7 @@ void SearchEngine::downloadFinished(int exitcode, QProcess::ExitStatus) {
void SearchEngine::updateNova() {
qDebug("Updating nova");
// create nova directory if necessary
QDir search_dir(misc::searchEngineLocation());
QDir search_dir(fsutils::searchEngineLocation());
QString nova_folder = misc::pythonVersion() >= 3 ? "nova3" : "nova";
QFile package_file(search_dir.absoluteFilePath("__init__.py"));
package_file.open(QIODevice::WriteOnly | QIODevice::Text);
@@ -533,7 +534,7 @@ void SearchEngine::updateNova() {
}
QFile::copy(":/"+nova_folder+"/sgmllib3.py", filePath);
}
QDir destDir(QDir(misc::searchEngineLocation()).absoluteFilePath("engines"));
QDir destDir(QDir(fsutils::searchEngineLocation()).absoluteFilePath("engines"));
QDir shipped_subDir(":/"+nova_folder+"/engines/");
QStringList files = shipped_subDir.entryList();
foreach (const QString &file, files) {

View File

@@ -39,8 +39,9 @@
#include <QProcess>
#include <QDir>
#include <QApplication>
#include <QDebug>
#include "misc.h"
#include "fs_utils.h"
#include "qinisettings.h"
class SearchCategories: public QObject, public QHash<QString, QString> {
@@ -143,7 +144,7 @@ public slots:
QProcess nova;
nova.setEnvironment(QProcess::systemEnvironment());
QStringList params;
params << misc::searchEngineLocation()+QDir::separator()+"nova2.py";
params << fsutils::searchEngineLocation()+QDir::separator()+"nova2.py";
params << "--capabilities";
nova.start("python", params, QIODevice::ReadOnly);
nova.waitForStarted();
@@ -151,13 +152,13 @@ public slots:
QString capabilities = QString(nova.readAll());
QDomDocument xml_doc;
if (!xml_doc.setContent(capabilities)) {
std::cerr << "Could not parse Nova search engine capabilities, msg: " << capabilities.toLocal8Bit().data() << std::endl;
std::cerr << "Error: " << nova.readAllStandardError().constData() << std::endl;
qWarning() << "Could not parse Nova search engine capabilities, msg: " << capabilities.toLocal8Bit().data();
qWarning() << "Error: " << nova.readAllStandardError().constData();
return;
}
QDomElement root = xml_doc.documentElement();
if (root.tagName() != "capabilities") {
std::cout << "Invalid XML file for Nova search engine capabilities, msg: " << capabilities.toLocal8Bit().data() << std::endl;
qWarning() << "Invalid XML file for Nova search engine capabilities, msg: " << capabilities.toLocal8Bit().data();
return;
}
for (QDomNode engine_node = root.firstChild(); !engine_node.isNull(); engine_node = engine_node.nextSibling()) {