]> git.sur5r.net Git - minitube/blobdiff - src/video.h
Update upstream source from tag 'upstream/3.9.1'
[minitube] / src / video.h
index e0c8e44d097e171ecd9b31e36e1136ced0f6ed4e..0aa4443aad86371e5b1db84219ef9ee3f590b60b 100644 (file)
@@ -24,7 +24,11 @@ $END_LICENSE */
 #include <QtCore>
 #include <QtGui>
 
+#include "ytthumb.h"
+
 class YTVideo;
+class YTJSVideo;
+class VariantPromise;
 
 class Video : public QObject {
     Q_OBJECT
@@ -52,24 +56,13 @@ public:
     const QString &getWebpage();
     void setWebpage(const QString &value);
 
-    void loadThumbnail();
-    const QPixmap &getThumbnail() const { return thumbnail; }
-
-    const QString &getThumbnailUrl() const { return thumbnailUrl; }
-    void setThumbnailUrl(const QString &value) { thumbnailUrl = value; }
-
-    const QString &getMediumThumbnailUrl() const { return mediumThumbnailUrl; }
-    void setMediumThumbnailUrl(const QString &value) { mediumThumbnailUrl = value; }
-
-    const QString &getLargeThumbnailUrl() const { return largeThumbnailUrl; }
-    void setLargeThumbnailUrl(const QString &value) { largeThumbnailUrl = value; }
-
     int getDuration() const { return duration; }
     void setDuration(int value);
     const QString &getFormattedDuration() const { return formattedDuration; }
 
     int getViewCount() const { return viewCount; }
-    void setViewCount(int value) { viewCount = value; }
+    void setViewCount(int value);
+    const QString &getFormattedViewCount() const { return formattedViewCount; }
 
     const QDateTime &getPublished() const { return published; }
     void setPublished(const QDateTime &value);
@@ -78,7 +71,9 @@ public:
     int getDefinitionCode() const { return definitionCode; }
 
     void loadStreamUrl();
-    const QUrl &getStreamUrl() { return streamUrl; }
+    const QString &getStreamUrl() { return streamUrl; }
+    bool isLoadingStreamUrl() const;
+    void abortLoadStreamUrl();
 
     const QString &getId() const { return id; }
     void setId(const QString &value) { id = value; }
@@ -86,41 +81,44 @@ public:
     License getLicense() const { return license; }
     void setLicense(License value) { license = value; }
 
+    const auto &getThumbs() const { return thumbs; }
+    void addThumb(int width, int height, QString url);
+    VariantPromise &loadThumb(QSize size, qreal pixelRatio);
+
 signals:
-    void gotThumbnail();
-    void gotMediumThumbnail(const QByteArray &bytes);
-    void gotLargeThumbnail(const QByteArray &bytes);
-    void gotStreamUrl(const QUrl &streamUrl);
+    void gotStreamUrl(const QString &videoUrl, const QString &audioUrl);
     void errorStreamUrl(const QString &message);
+    void changed();
 
 private slots:
-    void setThumbnail(const QByteArray &bytes);
-    void streamUrlLoaded(const QUrl &streamUrl);
+    void streamUrlLoaded(const QString &streamUrl, const QString &audioUrl);
 
 private:
+    void loadStreamUrlJS();
+    void loadStreamUrlYT();
+
     QString title;
     QString description;
     QString channelTitle;
     QString channelId;
     QString webpage;
-    QUrl streamUrl;
-    QPixmap thumbnail;
-    QString thumbnailUrl;
-    QString mediumThumbnailUrl;
-    QString largeThumbnailUrl;
+    QString streamUrl;
     int duration;
     QString formattedDuration;
 
     QDateTime published;
     QString formattedPublished;
     int viewCount;
+    QString formattedViewCount;
     License license;
     QString id;
     int definitionCode;
 
-    bool loadingThumbnail;
-
     YTVideo *ytVideo;
+    YTJSVideo *ytjsVideo;
+
+    QVector<YTThumb> thumbs;
+    bool thumbsNeedSorting = false;
 };
 
 // This is required in order to use QPointer<Video> as a QVariant