]> Some of my projects - localmylist.git/commitdiff
Add "Rename as Video File" feature.
authorAPTX <marek321@gmail.com>
Sun, 29 Sep 2013 14:11:25 +0000 (16:11 +0200)
committerAPTX <marek321@gmail.com>
Sun, 29 Sep 2013 14:11:25 +0000 (16:11 +0200)
This feature allows you to rename subtitle files the same way as video files.
This is useful as video players usually look for subtitle files which are named the same way as a video file.

localmylist-management/aniaddsyntaxhighlighter.cpp
localmylist-management/renamesettingsdialog.cpp
localmylist-management/renamesettingsdialog.ui
localmylist/renamehandler.cpp
localmylist/renameutils.cpp
localmylist/renameutils.h

index 3af5fadb702aafd5dcbd7df142b180dea41a47ad..ff0b535ee6e4738b9e32ac04c21eadbcf640be0c 100644 (file)
@@ -59,7 +59,7 @@ AniAddSyntaxHighlighter::AniAddSyntaxHighlighter(QObject *parent) :
                highlightingRules.append(rule);
        }
        {
-               QString outputVariables = "FileName|PathName";
+               QString outputVariables = "FileName|PathName|RenameAsVideoFile";
                rule.pattern = QRegExp("\\b(?:" + outputVariables + ")\\b");
                rule.format = outputVariable;
                highlightingRules << rule;
index 1722fdc3560798f20117557e85849807d22ee232..b53dd85c075150664877a0f7b4e8906723443cf3 100644 (file)
@@ -292,7 +292,8 @@ void RenameSettingsDialog::updateResult(const RenameParser::Environment &env)
        if (ui->filterResultsCheckbox->isChecked())
        {
                s += "FileName := \"" + env["FileName"] + "\"\n";
-               s += "PathName := \"" + env["PathName"] + "\"";
+               s += "PathName := \"" + env["PathName"] + "\"\n";
+               s += "RenameAsVideoFile := \"" + env["RenameAsVideoFile"] + "\"";
        }
        else
        {
index a2254c1e272a45fb6b97acd86e2a365231e38aa0..307051ccc4c61d9dc638d0c07e63e3744efaf584 100644 (file)
@@ -55,7 +55,7 @@
         <item>
          <widget class="QCheckBox" name="filterResultsCheckbox">
           <property name="text">
-           <string>Only show FileName and PathName</string>
+           <string>Only show output variables</string>
           </property>
           <property name="checked">
            <bool>true</bool>
index 3e8cdf21dcd698ea2229a3ab169cb10e53142adb..f7bd721f17e5666575ca832a4d395aff5bd124fc 100644 (file)
@@ -92,8 +92,38 @@ void RenameHandler::handleRename()
                        continue;
                }
 
-               QString newFileName = env.value("FileName", "") + "." + r.value("extension").toString();
-               QString newFilePath = env.value("PathName", "");
+               RenameParser::Environment videoFileEnv;
+               bool useVideoFileEnv = false;
+               if (!env.value("RenameAsVideoFile", "").isEmpty())
+               {
+                       QSqlQuery &q = db->prepare(
+                       "SELECT rd.* "
+                       "       FROM rename_data rd "
+                       "       JOIN rename_data rd2 ON ( "
+                       "               rd.aid = rd2.aid "
+                       "               AND rd.epno = rd2.epno "
+                       "               AND rd2.type = rd.type "
+                       // TODO there should only be one of those.
+                       // Waiting for video_codec normalization
+                       "               AND rd.video_codec <> 'none' "
+                       "               AND rd.video_codec <> '') "
+                       "       WHERE rd2.fid = :fid "
+                       "       LIMIT 1");
+                       q.bindValue(":fid", fl.fid);
+
+                       if (db->exec(q) && q.next())
+                       {
+                               QSqlRecord r = q.record();
+                               setupRenameEnv(r, videoFileEnv);
+                               renameEngine->evaluate(videoFileEnv);
+
+                               if (!videoFileEnv.value("FileName", "").isEmpty())
+                                       useVideoFileEnv = true;
+                       }
+               }
+
+               QString newFileName = (useVideoFileEnv ? videoFileEnv : env).value("FileName", "") + "." + r.value("extension").toString();
+               QString newFilePath = (useVideoFileEnv ? videoFileEnv : env).value("PathName", "");
 
                QRegExp rx(settings->get("renameSanitizeRegex", QString("[/\\:*\"?<>|\\r\\n]")));
                newFileName = newFileName.replace(rx, "");
index fcc3dbf77586010e2311e9e97c41f52c8f448b31..2e15dcb5abd481d6c18e49873c1aa80863162212 100644 (file)
@@ -9,7 +9,7 @@
 
 namespace LocalMyList {
 
-void setupRenameEnv(const QSqlRecord &record, RenameParser::Environment &env)
+void setupRenameEnv(const QSqlRecord &record, RenameParser::Environment &env, bool renamingAsVideoFile)
 {
 
        env["ATr"] = record.value("anime_title_romaji").toString();
@@ -65,6 +65,10 @@ void setupRenameEnv(const QSqlRecord &record, RenameParser::Environment &env)
 
        env["MinRelatedEpNo"] = record.value("min_related_epno").toString();
        env["MaxRelatedEpNo"] = record.value("max_related_epno").toString();
+
+       // These variables are added for rename as video
+       env["FileExtension"] = record.value("extension").toString();
+       env["RenamingAsVideoFile"] = renamingAsVideoFile ? "1" : "";
 }
 
 #ifdef Q_OS_WIN
index 874942d61c59e0b04dfbb9885c90e4dfa970147e..821d8efad9b42b0444a3f571fe503a7b8a5aa1e4 100644 (file)
@@ -8,7 +8,7 @@
 
 namespace LocalMyList {
 
-void LOCALMYLISTSHARED_EXPORT setupRenameEnv(const QSqlRecord &record, RenameParser::Environment &env);
+void LOCALMYLISTSHARED_EXPORT setupRenameEnv(const QSqlRecord &record, RenameParser::Environment &env, bool renamingAsVideoFile = false);
 
 QString exactPath(const QString &path);
 bool LOCALMYLISTSHARED_EXPORT renameFile(const QString &oldName, const QString &newName, QString *actualPath = 0);