File indexing completed on 2024-04-28 04:49:19
0001 /* 0002 * SPDX-FileCopyrightText: 2023 George Florea Bănuș <georgefb899@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #include "mpvpreview.h" 0008 0009 #include <MpvController> 0010 0011 #include "generalsettings.h" 0012 #include "mpvproperties.h" 0013 0014 MpvPreview::MpvPreview() 0015 { 0016 observeProperty(MpvProperties::self()->Position, MPV_FORMAT_DOUBLE); 0017 observeProperty(MpvProperties::self()->AspectRatio, MPV_FORMAT_DOUBLE); 0018 0019 setProperty(MpvProperties::self()->Mute, true); 0020 setProperty(MpvProperties::self()->Pause, true); 0021 setProperty(MpvProperties::self()->ReallyQuiet, true); 0022 0023 setProperty(MpvProperties::self()->HardwareDecoding, QStringLiteral("auto-safe")); 0024 setProperty(MpvProperties::self()->AccurateSeek, GeneralSettings::accuratePreviewThumbnail()); 0025 setProperty(MpvProperties::self()->AudioId, false); 0026 setProperty(MpvProperties::self()->AudioFileAuto, false); 0027 setProperty(MpvProperties::self()->SubtitleId, false); 0028 setProperty(MpvProperties::self()->SubtitleAuto, false); 0029 setProperty(MpvProperties::self()->OsdLevel, 0); 0030 setProperty(MpvProperties::self()->AudioPitchCorection, false); 0031 setProperty(MpvProperties::self()->UseTextOsd, false); 0032 setProperty(MpvProperties::self()->AudioDisplay, false); 0033 0034 connect(mpvController(), &MpvController::propertyChanged, this, [=](const QString &property, const QVariant &value) { 0035 Q_UNUSED(value) 0036 if (property == MpvProperties::self()->AspectRatio) { 0037 Q_EMIT aspectRatioChanged(); 0038 } 0039 }); 0040 connect(this, &MpvPreview::fileChanged, this, &MpvPreview::loadFile); 0041 connect(this, &MpvPreview::ready, this, [=]() { 0042 m_isReady = true; 0043 loadFile(); 0044 }); 0045 } 0046 0047 void MpvPreview::loadFile() 0048 { 0049 if (m_isReady && !m_file.isEmpty()) { 0050 command(QStringList() << QStringLiteral("loadfile") << m_file); 0051 } 0052 } 0053 0054 double MpvPreview::position() 0055 { 0056 return getProperty(MpvProperties::self()->Position).toDouble(); 0057 } 0058 0059 void MpvPreview::setPosition(double value) 0060 { 0061 if (qFuzzyCompare(m_position, value)) { 0062 return; 0063 } 0064 setPropertyAsync(MpvProperties::self()->Position, value); 0065 } 0066 0067 double MpvPreview::aspectRatio() 0068 { 0069 return getProperty(MpvProperties::self()->AspectRatio).toDouble(); 0070 } 0071 0072 QString MpvPreview::file() const 0073 { 0074 return m_file; 0075 } 0076 0077 void MpvPreview::setFile(const QString &_file) 0078 { 0079 if (m_file == _file) { 0080 return; 0081 } 0082 m_file = _file; 0083 auto url = QUrl::fromUserInput(m_file); 0084 setIsLocalFile(url.isLocalFile()); 0085 0086 Q_EMIT fileChanged(); 0087 } 0088 0089 bool MpvPreview::accuratePreview() const 0090 { 0091 return m_accuratePreview; 0092 } 0093 0094 void MpvPreview::setAccuratePreview(bool _accuratePreview) 0095 { 0096 if (m_accuratePreview == _accuratePreview) { 0097 return; 0098 } 0099 m_accuratePreview = _accuratePreview; 0100 setProperty(MpvProperties::self()->AccurateSeek, _accuratePreview); 0101 Q_EMIT accuratePreviewChanged(); 0102 } 0103 0104 bool MpvPreview::isLocalFile() const 0105 { 0106 return m_isLocalFile; 0107 } 0108 0109 void MpvPreview::setIsLocalFile(bool _isLocalFile) 0110 { 0111 if (m_isLocalFile == _isLocalFile) { 0112 return; 0113 } 0114 m_isLocalFile = _isLocalFile; 0115 Q_EMIT isLocalFileChanged(); 0116 } 0117 0118 #include "moc_mpvpreview.cpp"