File indexing completed on 2025-02-23 04:35:14
0001 // SPDX-FileCopyrightText: none 0002 // SPDX-License-Identifier: GPL-3.0-or-later 0003 0004 #pragma once 0005 0006 #include <QHash> 0007 #include <QObject> 0008 #include <QString> 0009 #include <QUrl> 0010 #include <QVector> 0011 #include <QtQml> 0012 0013 class SearchParameters : public QObject 0014 { 0015 Q_OBJECT 0016 QML_ELEMENT 0017 0018 Q_PROPERTY(QString query READ query WRITE setQuery) 0019 Q_PROPERTY(unsigned int page READ page WRITE setPage) 0020 Q_PROPERTY(SortBy sortBy READ sortBy WRITE setSortBy) 0021 Q_PROPERTY(Date date READ date WRITE setDate) 0022 Q_PROPERTY(Duration duration READ duration WRITE setDuration) 0023 Q_PROPERTY(Type type READ type WRITE setType) 0024 Q_PROPERTY(QVector<Feature> features READ features WRITE setFeatures) 0025 0026 public: 0027 enum class SortBy { Default, Relevance, Rating, UploadDate, ViewCount }; 0028 Q_ENUM(SortBy) 0029 0030 enum class Date { Default, Hour, Today, Week, Month, Year }; 0031 Q_ENUM(Date) 0032 0033 enum class Duration { Default, Short, Long }; 0034 Q_ENUM(Duration) 0035 0036 enum class Type { Default, Video, Playlist, Channel, All }; 0037 Q_ENUM(Type) 0038 0039 enum class Feature { Hd, Subtitles, CreativeCommons, ThreeD, Live, Purchased, FourK, ThreeSixty, Location, Hdr }; 0040 Q_ENUM(Feature) 0041 0042 SearchParameters() = default; 0043 explicit SearchParameters(const QString &query, unsigned int page = 0) 0044 : m_query(query) 0045 , m_page(page) 0046 { 0047 } 0048 0049 void fill(const SearchParameters &other); // cannot use copy constructor with Q_OBJECT 0050 void clear(); 0051 0052 QHash<QString, QString> toQueryParameters() const; 0053 QHash<QString, QString> toPipedQueryParameters() const; 0054 0055 const QString &query() const; 0056 void setQuery(const QString &query); 0057 0058 unsigned int page() const; 0059 void setPage(unsigned int page); 0060 0061 SortBy sortBy() const; 0062 void setSortBy(SortBy sortBy); 0063 0064 Date date() const; 0065 void setDate(Date date); 0066 0067 Duration duration() const; 0068 void setDuration(Duration duration); 0069 0070 Type type() const; 0071 void setType(Type type); 0072 0073 const QVector<Feature> &features(); 0074 void setFeatures(const QVector<Feature> &features); 0075 0076 private: 0077 QString m_query; 0078 unsigned int m_page = 1; 0079 SortBy m_sortBy = SortBy::Default; 0080 Date m_date = Date::Default; 0081 Duration m_duration = Duration::Default; 0082 Type m_type = Type::Default; 0083 QVector<Feature> m_features; 0084 };