OSDN Git Service

okular: fix playing of epub generator sounds
authorIvailo Monev <xakepa10@gmail.com>
Sun, 27 Nov 2022 21:27:52 +0000 (23:27 +0200)
committerIvailo Monev <xakepa10@gmail.com>
Sun, 27 Nov 2022 21:29:43 +0000 (23:29 +0200)
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
okular/generators/epub/converter.cpp
okular/generators/epub/epubdocument.cpp

index 2d4b935..904c3d3 100644 (file)
@@ -251,8 +251,9 @@ QTextDocument* Converter::convert( const QString &fileName )
             QDomNodeList sourceTags = videoTags.at(i).toElement().elementsByTagName("source");
             if(!sourceTags.isEmpty()) {
               QString lnk = sourceTags.at(0).toElement().attribute("src");
+              QUrl url = mTextDocument->loadResource(EpubDocument::MovieResource,QUrl(lnk)).toUrl();
 
-              Okular::Movie *movie = new Okular::Movie(mTextDocument->loadResource(EpubDocument::MovieResource,QUrl(lnk)).toString());
+              Okular::Movie *movie = new Okular::Movie(url.toString());
               movie->setSize(videoSize);
               movie->setShowControls(true);
 
@@ -272,9 +273,14 @@ QTextDocument* Converter::convert( const QString &fileName )
         if(!audioTags.isEmpty()) {
           for (int i = 0; i < audioTags.size(); ++i) {
             QString lnk = audioTags.at(i).toElement().attribute("src");
+            QUrl url = mTextDocument->loadResource(EpubDocument::AudioResource, QUrl(lnk)).toUrl();
+            // the URL is not relative and KUrl::isRelativeUrl() returns true for anything
+            // without scheme
+            if (url.scheme().isEmpty()) {
+              url.setScheme(QString::fromLatin1("file"));
+            }
 
-            Okular::Sound *sound = new Okular::Sound(mTextDocument->loadResource(
-                    EpubDocument::AudioResource, QUrl(lnk)).toByteArray());
+            Okular::Sound *sound = new Okular::Sound(url.toString());
 
             Okular::SoundAction *soundAction = new Okular::SoundAction(1.0,true,true,false,sound);
             soundActions.push_back(soundAction);
index 214f7e9..35a6ab5 100644 (file)
@@ -109,7 +109,8 @@ QVariant EpubDocument::loadResource(int type, const QUrl &name)
       resource.setValue(css);
       break;
     }
-    case EpubDocument::MovieResource: {
+    case EpubDocument::MovieResource:
+    case EpubDocument::AudioResource: {
       QTemporaryFile *tmp = new QTemporaryFile(QString("%1/okrXXXXXX").arg(QDir::tempPath()),this);
       if(!tmp->open()) kWarning() << "EPUB : error creating temporary video file";
       if(tmp->write(data,size) == -1) kWarning() << "EPUB : error writing data" << tmp->errorString();
@@ -117,10 +118,6 @@ QVariant EpubDocument::loadResource(int type, const QUrl &name)
       resource.setValue(tmp->fileName());
       break;
     }
-    case EpubDocument::AudioResource: {
-      resource.setValue(QByteArray(data, size));
-      break;
-    }
     default:
       resource.setValue(QString::fromUtf8(data, size));
       break;