]> Some of my projects - localmylist.git/commitdiff
Update RenameHandler to use Settings notifications and new setupRenameEnv function
authorAPTX <marek321@gmail.com>
Tue, 19 Jun 2012 15:36:59 +0000 (17:36 +0200)
committerAPTX <marek321@gmail.com>
Tue, 19 Jun 2012 15:36:59 +0000 (17:36 +0200)
localmylist/renamehandler.cpp
localmylist/share/schema/schema.sql

index 8a9eb5e099b7dd2c4f1b20a12767ded64f4983de..0f917ae053e63984ba4b29d1c8edaff0d7e0ec68 100644 (file)
@@ -3,6 +3,7 @@
 #include "mylist.h"
 #include "database.h"
 #include "settings.h"
+#include "renameutils.h"
 #include <RenameParser/RenameEngine>
 #include <QSqlQuery>
 #include <QSqlRecord>
@@ -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);
index f7d1c1423f868725bd3495b72521d6c590571202..9ebf364cf2b6eac3bb27210119aa05cf8c91190d 100644 (file)
@@ -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)