From 3b87f21eef90228c419ca9593d1e33454af8ab4d Mon Sep 17 00:00:00 2001 From: APTX Date: Tue, 19 Jun 2012 17:36:59 +0200 Subject: [PATCH] Update RenameHandler to use Settings notifications and new setupRenameEnv function --- localmylist/renamehandler.cpp | 50 ++++------------------------- localmylist/share/schema/schema.sql | 5 ++- 2 files changed, 8 insertions(+), 47 deletions(-) diff --git a/localmylist/renamehandler.cpp b/localmylist/renamehandler.cpp index 8a9eb5e..0f917ae 100644 --- a/localmylist/renamehandler.cpp +++ b/localmylist/renamehandler.cpp @@ -3,6 +3,7 @@ #include "mylist.h" #include "database.h" #include "settings.h" +#include "renameutils.h" #include #include #include @@ -18,6 +19,7 @@ RenameHandler::RenameHandler(Database *db, Settings *settings, QObject *parent) this->settings = settings; connect(db, SIGNAL(renameDataChanged()), this, SLOT(handleRename()), Qt::QueuedConnection); connect(this, SIGNAL(renameBatchFinished()), this, SLOT(handleRename()), Qt::QueuedConnection); + connect(settings, SIGNAL(settingsChanged()), this, SLOT(clearSetup())); m_setup = false; } @@ -39,6 +41,7 @@ void RenameHandler::handleRename() " video_codec, audio_codec, audio_language, subtitle_language, aspect_ratio, my_watched, my_state, my_file_state, my_storage, my_source, my_other, host_id, path, renamed " "FROM rename_data " "WHERE host_id = :host_id " + "AND renamed IS NULL AND failed_rename = false " "LIMIT :limit"); q.bindValue(":host_id", MyList::instance()->hostId()); @@ -80,48 +83,7 @@ void RenameHandler::handleRename() } RenameParser::Environment env; - env["ATr"] = r.value("anime_title_romaji").toString(); - env["ATe"] = r.value("anime_title_english").toString(); - env["ATk"] = r.value("anime_title_kanji").toString(); - - env["ETr"] = r.value("episode_title_romaji").toString(); - env["ETe"] = r.value("episode_title_english").toString(); - env["ETk"] = r.value("episode_title_kanji").toString(); - - env["GTs"] = r.value("group_name_short").toString(); - env["GTl"] = r.value("group_name").toString(); - - env["EpNo"] = r.value("epno").toString(); - env["EpHiNo"] = r.value("episode_count").toString(); - env["EpCount"] = "0"; // TODO This is missing from the data - - QString year = r.value("year").toString(); - if (!year.contains('-')) - { - env["AYearBegin"] = year; - env["AYearEnd"] = ""; - } - else - { - QStringList years = year.split('-'); - env["AYearBegin"] = years[0].trimmed(); - env["AYearEnd"] = years[1].trimmed(); - } - - env["Type"] = r.value("anime_type").toString(); - env["Depr"] = /*r.value("")*/ false ? "1" : ""; // Data missing? - env["Cen"] = r.value("censored").toBool() ? "1" : "0"; - env["Ver"] = r.value("version").toString(); - env["Source"] = r.value("type").toString(); // TODO This is called source on AniDB - env["Quality"] = r.value("quality").toString(); - env["FCrc"] = r.value("crc").toString(); - env["FVideoRes"] = r.value("resolution").toString(); - env["FALng"] = r.value("audio_language").toString(); - env["FSLng"] = r.value("subtitle_language").toString(); - env["FACodec"] = r.value("audio_codec").toString(); - env["FVCodec"] = r.value("video_codec").toString(); - env["Watched"] = r.value("my_watched").toDateTime().isValid() ? "1" : "0"; - + setupRenameEnv(r, env); renameEngine->evaluate(env); if (env.value("FileName", "").isEmpty()) @@ -133,7 +95,7 @@ void RenameHandler::handleRename() } QString newFileName = env.value("FileName", "") + "." + r.value("extension").toString(); - QString newFilePath = env.value("FilePath", ""); + QString newFilePath = env.value("PathName", ""); newFileName = newFileName.replace(QRegExp("[/\\:*\"?<>|\\r\\n]"), ""); @@ -162,7 +124,7 @@ void RenameHandler::handleRename() if (!newFile.absoluteDir().exists()) { - if (!QDir().mkpath(newFile.canonicalPath())) + if (!QDir().mkpath(newFilePath)) { fl.failedRename = true; db->setFileLocation(fl); diff --git a/localmylist/share/schema/schema.sql b/localmylist/share/schema/schema.sql index f7d1c14..9ebf364 100644 --- a/localmylist/share/schema/schema.sql +++ b/localmylist/share/schema/schema.sql @@ -195,8 +195,7 @@ CREATE VIEW rename_data AS FROM file f JOIN anime a ON a.aid = f.aid JOIN episode e ON e.eid = f.eid - JOIN file_location fl ON fl.fid = f.fid - WHERE fl.renamed IS NULL AND fl.failed_rename = false; + JOIN file_location fl ON fl.fid = f.fid; CREATE RULE new_anime_rule AS ON INSERT TO anime DO NOTIFY rename_data_changed; CREATE RULE new_episode_rule AS ON INSERT TO episode DO NOTIFY rename_data_changed; @@ -218,7 +217,7 @@ CREATE RULE update_episode_rule AS FROM file f WHERE f.fid = fl.fid AND f.eid = old.eid; -CREATE OR REPLACE RULE update_file_rule AS +CREATE RULE update_file_rule AS ON UPDATE TO file WHERE old.fid = new.fid AND (old.eid <> new.eid OR old.aid <> new.aid OR old.gid <> new.gid OR old.ed2k <> new.ed2k OR old.size <> new.size OR old.length <> new.length OR old.extension::text <> new.extension::text OR old.group_name <> new.group_name OR old.group_name_short <> new.group_name_short OR old.crc <> new.crc OR old.release_date <> new.release_date OR old.version <> new.version OR old.censored <> new.censored OR old.type::text <> new.type::text OR old.quality_id <> new.quality_id OR old.quality::text <> new.quality::text OR old.resolution::text <> new.resolution::text OR old.video_codec::text <> new.video_codec::text OR old.audio_codec::text <> new.audio_codec::text OR old.audio_language::text <> new.audio_language::text OR old.subtitle_language::text <> new.subtitle_language::text OR old.aspect_ratio::text <> new.aspect_ratio::text) -- 2.52.0