[vlc-devel] [PATCH 2/9] qt: remove legacy "recently played" model
Pierre Lamot
pierre at videolabs.io
Thu Oct 15 11:25:05 CEST 2020
Recent medias are now stored in the medialibrary.
---
modules/gui/qt/Makefile.am | 5 -
modules/gui/qt/dialogs/dialogs_provider.cpp | 21 +-
modules/gui/qt/dialogs/open/open.cpp | 18 +-
.../gui/qt/dialogs/toolbar/toolbareditor.cpp | 2 -
.../gui/qt/maininterface/main_interface.cpp | 14 +-
modules/gui/qt/maininterface/mainui.cpp | 2 -
modules/gui/qt/medialibrary/medialib.cpp | 13 --
modules/gui/qt/medialibrary/medialib.hpp | 2 -
modules/gui/qt/menus/menus.cpp | 59 -----
modules/gui/qt/menus/menus.hpp | 6 -
modules/gui/qt/menus/qml/GlobalShortcuts.qml | 11 -
modules/gui/qt/player/player_controller.cpp | 3 -
modules/gui/qt/qt.cpp | 4 -
modules/gui/qt/util/recent_media_model.cpp | 97 --------
modules/gui/qt/util/recent_media_model.hpp | 69 ------
modules/gui/qt/util/recents.cpp | 211 ------------------
modules/gui/qt/util/recents.hpp | 86 -------
po/POTFILES.in | 2 -
18 files changed, 23 insertions(+), 602 deletions(-)
delete mode 100644 modules/gui/qt/util/recent_media_model.cpp
delete mode 100644 modules/gui/qt/util/recent_media_model.hpp
delete mode 100644 modules/gui/qt/util/recents.cpp
delete mode 100644 modules/gui/qt/util/recents.hpp
diff --git a/modules/gui/qt/Makefile.am b/modules/gui/qt/Makefile.am
index dbe2dc3b83..216aac80c0 100644
--- a/modules/gui/qt/Makefile.am
+++ b/modules/gui/qt/Makefile.am
@@ -204,9 +204,6 @@ libqt_plugin_la_SOURCES = \
gui/qt/util/qmleventfilter.hpp \
gui/qt/util/qt_dirs.cpp gui/qt/util/qt_dirs.hpp \
gui/qt/util/qvlcapp.hpp \
- gui/qt/util/recent_media_model.cpp \
- gui/qt/util/recent_media_model.hpp \
- gui/qt/util/recents.cpp gui/qt/util/recents.hpp \
gui/qt/util/registry.cpp gui/qt/util/registry.hpp \
gui/qt/util/renderer_manager.cpp gui/qt/util/renderer_manager.hpp \
gui/qt/util/selectable_list_model.cpp \
@@ -343,8 +340,6 @@ nodist_libqt_plugin_la_SOURCES = \
gui/qt/util/qml_main_context.moc.cpp \
gui/qt/util/qmleventfilter.moc.cpp \
gui/qt/util/qvlcapp.moc.cpp \
- gui/qt/util/recent_media_model.moc.cpp \
- gui/qt/util/recents.moc.cpp \
gui/qt/util/renderer_manager.moc.cpp \
gui/qt/util/selectable_list_model.moc.cpp \
gui/qt/util/sortfilterproxymodel.moc.cpp \
diff --git a/modules/gui/qt/dialogs/dialogs_provider.cpp b/modules/gui/qt/dialogs/dialogs_provider.cpp
index 37975707d1..b779cb23cc 100644
--- a/modules/gui/qt/dialogs/dialogs_provider.cpp
+++ b/modules/gui/qt/dialogs/dialogs_provider.cpp
@@ -32,7 +32,6 @@
#include "player/player_controller.hpp" /* Load Subtitles */
#include "playlist/playlist_controller.hpp"
#include "menus/menus.hpp"
-#include "util/recents.hpp"
#include "util/qt_dirs.hpp"
#include "widgets/native/customwidgets.hpp" /* VLCKeyToString() */
#include "maininterface/main_interface.hpp"
@@ -98,7 +97,6 @@ DialogsProvider::~DialogsProvider()
delete miscPopupMenu;
/* free parentless menus */
- VLCMenuBar::freeRecentsMenu();
VLCMenuBar::freeRendererMenu();
}
@@ -504,13 +502,11 @@ void DialogsProvider::simpleOpenDialog(bool start)
{
QStringList urls = DialogsProvider::showSimpleOpen();
- bool first = start;
urls.sort();
- foreach( const QString &url, urls )
- {
- Open::openMRL( p_intf, url, first );
- first = false;
- }
+ QVector<vlc::playlist::Media> medias;
+ for( const QString& mrl : urls)
+ medias.push_back( vlc::playlist::Media{mrl, nullptr, nullptr} );
+ THEMPL->append(medias, start);
}
/* Url & Clipboard */
@@ -536,8 +532,8 @@ void DialogsProvider::openUrlDialog()
url = qfu(uri);
free( uri );
}
-
- Open::openMRL( p_intf, qtu(url), !oud.shouldEnqueue() );
+ QVector<vlc::playlist::Media> medias = { {url, nullptr, nullptr} };
+ THEMPL->append(medias, !oud.shouldEnqueue());
}
/* Directory */
@@ -550,7 +546,10 @@ static void openDirectory( intf_thread_t *p_intf, bool go )
{
QString uri = DialogsProvider::getDirectoryDialog( p_intf );
if( !uri.isEmpty() )
- Open::openMRL( p_intf, uri, go );
+ {
+ QVector<vlc::playlist::Media> medias = { {uri, nullptr, nullptr} };
+ THEMPL->append(medias, go);
+ }
}
QString DialogsProvider::getDirectoryDialog( intf_thread_t *p_intf )
diff --git a/modules/gui/qt/dialogs/open/open.cpp b/modules/gui/qt/dialogs/open/open.cpp
index 0080e892b6..4ed94c0a02 100644
--- a/modules/gui/qt/dialogs/open/open.cpp
+++ b/modules/gui/qt/dialogs/open/open.cpp
@@ -26,8 +26,8 @@
#include "dialogs/open/open.hpp"
#include "dialogs/dialogs_provider.hpp"
-#include "util/recents.hpp"
#include "util/qt_dirs.hpp"
+#include "playlist/playlist_controller.hpp"
#include <QTabWidget>
#include <QRegExp>
@@ -371,16 +371,12 @@ void OpenDialog::enqueue( bool b_enqueue )
itemsMRL.sort();
/* Go through the item list */
- for( int i = 0; i < itemsMRL.count(); i++ )
- {
- bool b_start = !i && !b_enqueue;
-
- /* Take options from the UI, not from what we stored */
- QStringList optionsList = getOptions().split( " :" );
-
- /* Switch between enqueuing and starting the item */
- Open::openMRLwithOptions( p_intf, itemsMRL[i], &optionsList, b_start );
- }
+ QVector<vlc::playlist::Media> medias;
+ /* Take options from the UI, not from what we stored */
+ QStringList optionsList = getOptions().split( " :" );
+ for( const QString& mrl : itemsMRL)
+ medias.push_back( vlc::playlist::Media{mrl, nullptr, &optionsList} );
+ THEMPL->append(medias, !b_enqueue);
}
void OpenDialog::transcode()
diff --git a/modules/gui/qt/dialogs/toolbar/toolbareditor.cpp b/modules/gui/qt/dialogs/toolbar/toolbareditor.cpp
index c0927f8058..39195f989d 100644
--- a/modules/gui/qt/dialogs/toolbar/toolbareditor.cpp
+++ b/modules/gui/qt/dialogs/toolbar/toolbareditor.cpp
@@ -22,7 +22,6 @@
#include "toolbareditor.hpp"
#include "util/i18n.hpp"
-#include "util/recent_media_model.hpp"
#include "util/systempalette.hpp"
#include "util/qml_main_context.hpp"
#include "player/playercontrolbarmodel.hpp"
@@ -103,7 +102,6 @@ ToolbarEditorDialog::ToolbarEditorDialog( QWidget *_w, intf_thread_t *_p_intf)
rootCtx->setContextProperty( "topWindow", mainInterface->windowHandle());
rootCtx->setContextProperty( "systemPalette", new SystemPalette(engine));
rootCtx->setContextProperty( "medialib", nullptr );
- rootCtx->setContextProperty( "recentsMedias", new VLCRecentMediaModel( p_intf, engine ));
rootCtx->setContextProperty( "toolbareditor", this);
editorView->setSource( QUrl ( QStringLiteral("qrc:/dialogs/ToolbarEditor.qml") ) );
diff --git a/modules/gui/qt/maininterface/main_interface.cpp b/modules/gui/qt/maininterface/main_interface.cpp
index f2a0a8cf1a..1216e28902 100644
--- a/modules/gui/qt/maininterface/main_interface.cpp
+++ b/modules/gui/qt/maininterface/main_interface.cpp
@@ -35,7 +35,6 @@
#include "widgets/native/customwidgets.hpp" // qtEventToVLCKey, QVLCStackedWidget
#include "util/qt_dirs.hpp" // toNativeSeparators
#include "util/imagehelper.hpp"
-#include "util/recents.hpp"
#include "util/color_scheme_model.hpp"
#include "widgets/native/interface_widgets.hpp" // bgWidget, videoWidget
@@ -599,8 +598,8 @@ void MainInterface::dropEventPlay( QDropEvent *event, bool b_play )
}
}
- bool first = b_play;
- foreach( const QUrl &url, mimeData->urls() )
+ QVector<vlc::playlist::Media> medias;
+ for( const QUrl &url: mimeData->urls() )
{
if( url.isValid() )
{
@@ -623,10 +622,7 @@ void MainInterface::dropEventPlay( QDropEvent *event, bool b_play )
}
#endif
if( mrl.length() > 0 )
- {
- Open::openMRL( p_intf, mrl, first );
- first = false;
- }
+ medias.push_back( vlc::playlist::Media{ mrl, nullptr, nullptr });
}
}
@@ -637,8 +633,10 @@ void MainInterface::dropEventPlay( QDropEvent *event, bool b_play )
QUrl(mimeData->text()).isValid() )
{
QString mrl = toURI( mimeData->text() );
- Open::openMRL( p_intf, mrl, first );
+ medias.push_back( vlc::playlist::Media{ mrl, nullptr, nullptr });
}
+ if (!medias.empty())
+ THEMPL->append(medias, b_play);
event->accept();
}
void MainInterface::dragEnterEvent(QDragEnterEvent *event)
diff --git a/modules/gui/qt/maininterface/mainui.cpp b/modules/gui/qt/maininterface/mainui.cpp
index e1f0a3af15..a9b911ed5d 100644
--- a/modules/gui/qt/maininterface/mainui.cpp
+++ b/modules/gui/qt/maininterface/mainui.cpp
@@ -23,7 +23,6 @@
#include "util/qmleventfilter.hpp"
#include "util/i18n.hpp"
#include "util/systempalette.hpp"
-#include "util/recent_media_model.hpp"
#include "util/sortfilterproxymodel.hpp"
#include "util/navigation_history.hpp"
@@ -97,7 +96,6 @@ bool MainUI::setup(QQmlEngine* engine)
rootCtx->setContextProperty( "mainInterface", m_mainInterface);
rootCtx->setContextProperty( "topWindow", m_interfaceWindow);
rootCtx->setContextProperty( "dialogProvider", DialogsProvider::getInstance());
- rootCtx->setContextProperty( "recentsMedias", new VLCRecentMediaModel( m_intf, this ));
rootCtx->setContextProperty( "systemPalette", new SystemPalette(this));
if (m_mainInterface->hasMediaLibrary())
diff --git a/modules/gui/qt/medialibrary/medialib.cpp b/modules/gui/qt/medialibrary/medialib.cpp
index d05828889f..c0b06339a9 100644
--- a/modules/gui/qt/medialibrary/medialib.cpp
+++ b/modules/gui/qt/medialibrary/medialib.cpp
@@ -18,7 +18,6 @@
#include "medialib.hpp"
#include "mlhelper.hpp"
-#include "util/recents.hpp"
#include <vlc_playlist.h>
#include <vlc_input_item.h>
@@ -38,18 +37,6 @@ MediaLib::MediaLib(intf_thread_t *_intf, QObject *_parent)
this ) );
}
-void MediaLib::openMRLFromMedia(const vlc_ml_media_t& media, bool start )
-{
- if (!media.p_files)
- return;
- for ( const vlc_ml_file_t& mediafile: ml_range_iterate<vlc_ml_file_t>(media.p_files) )
- {
- if (mediafile.psz_mrl)
- Open::openMRL(m_intf, mediafile.psz_mrl, start);
- start = false;
- }
-}
-
void MediaLib::addToPlaylist(const QString& mrl, const QStringList* options)
{
vlc::playlist::Media media{ mrl, mrl, options };
diff --git a/modules/gui/qt/medialibrary/medialib.hpp b/modules/gui/qt/medialibrary/medialib.hpp
index bd824092cd..d7646ea999 100644
--- a/modules/gui/qt/medialibrary/medialib.hpp
+++ b/modules/gui/qt/medialibrary/medialib.hpp
@@ -79,8 +79,6 @@ private:
static void onMediaLibraryEvent( void* data, const vlc_ml_event_t* event );
private:
- void openMRLFromMedia(const vlc_ml_media_t& media, bool start );
-
intf_thread_t* m_intf;
bool m_idle = false;
diff --git a/modules/gui/qt/menus/menus.cpp b/modules/gui/qt/menus/menus.cpp
index fdf3c8a6fc..d8f77d7486 100644
--- a/modules/gui/qt/menus/menus.cpp
+++ b/modules/gui/qt/menus/menus.cpp
@@ -41,7 +41,6 @@
#include "dialogs/dialogs_provider.hpp" /* Dialogs display */
#include "player/player_controller.hpp" /* Input Management */
#include "playlist/playlist_controller.hpp"
-#include "util/recents.hpp" /* Recent Items */
#include "dialogs/extensions/extensions_manager.hpp" /* Extensions menu */
#include "dialogs/extended/extended_panels.hpp"
#include "util/varchoicemodel.hpp"
@@ -67,7 +66,6 @@ using namespace vlc::playlist;
*/
-QMenu *VLCMenuBar::recentsMenu = NULL;
RendererMenu *VLCMenuBar::rendererMenu = NULL;
/**
@@ -222,14 +220,6 @@ QMenu *VLCMenuBar::FileMenu( intf_thread_t *p_intf, QMenu *menu, MainInterface *
addDPStaticEntry( menu, qtr( "Open &Location from clipboard" ),
NULL, &DialogsProvider::openUrlDialog, "Ctrl+V" );
- if( !recentsMenu && var_InheritBool( p_intf, "qt-recentplay" ) )
- recentsMenu = new QMenu( qtr( "Open &Recent Media" ) );
-
- if( recentsMenu )
- {
- updateRecents( p_intf );
- menu->addMenu( recentsMenu );
- }
menu->addSeparator();
addDPStaticEntry( menu, qtr( I_PL_SAVE ), "", &DialogsProvider::savePlayingToPlaylist,
@@ -998,52 +988,3 @@ void VLCMenuBar::updateAudioDevice( intf_thread_t * p_intf, QMenu *current )
free( names );
free( selected );
}
-
-void VLCMenuBar::updateRecents( intf_thread_t *p_intf )
-{
- if( recentsMenu )
- {
- QAction* action;
- RecentsMRL* rmrl = RecentsMRL::getInstance( p_intf );
- QStringList l = rmrl->recentList();
-
- recentsMenu->clear();
-
- if( !l.count() )
- {
- recentsMenu->setEnabled( false );
- }
- else
- {
- for( int i = 0; i < __MIN( l.count(), 10) ; ++i )
- {
- QString mrl = l.at( i );
- char *psz = vlc_uri_decode_duplicate( qtu( mrl ) );
- QString text = qfu( psz );
-
- text.replace("&", "&&");
-#ifdef _WIN32
-# define FILE_SCHEME "file:///"
-#else
-# define FILE_SCHEME "file://"
-#endif
- if ( text.startsWith( FILE_SCHEME ) )
- text.remove( 0, strlen( FILE_SCHEME ) );
-#undef FILE_SCHEME
-
- free( psz );
- action = recentsMenu->addAction(
- QString( i < 9 ? "&%1: ": "%1: " ).arg( i + 1 ) +
- QApplication::fontMetrics().elidedText( text,
- Qt::ElideLeft, 400 ),
- rmrl->signalMapper, SLOT( map() ),
- i < 9 ? QString( "Ctrl+%1" ).arg( i + 1 ) : "" );
- rmrl->signalMapper->setMapping( action, l.at( i ) );
- }
-
- recentsMenu->addSeparator();
- recentsMenu->addAction( qtr("&Clear"), rmrl, &RecentsMRL::clear );
- recentsMenu->setEnabled( true );
- }
- }
-}
diff --git a/modules/gui/qt/menus/menus.hpp b/modules/gui/qt/menus/menus.hpp
index d434f54788..d18ccebaf8 100644
--- a/modules/gui/qt/menus/menus.hpp
+++ b/modules/gui/qt/menus/menus.hpp
@@ -57,7 +57,6 @@ public:
/* destructor for parentless Menus (kept in static variables) */
static void freeRendererMenu(){ delete rendererMenu; rendererMenu = NULL; }
- static void freeRecentsMenu(){ delete recentsMenu; recentsMenu = NULL; }
protected:
/* All main Menus */
@@ -107,14 +106,9 @@ protected:
static void PopupMenuControlEntries( QMenu *menu, intf_thread_t *p_intf, bool b = true );
/* recentMRL menu */
- static QMenu *recentsMenu;
-
static RendererMenu *rendererMenu;
static void updateAudioDevice(intf_thread_t *, QMenu* );
-
-public slots:
- static void updateRecents( intf_thread_t * );
};
#endif
diff --git a/modules/gui/qt/menus/qml/GlobalShortcuts.qml b/modules/gui/qt/menus/qml/GlobalShortcuts.qml
index ca98e4024a..fc1f9f5519 100644
--- a/modules/gui/qt/menus/qml/GlobalShortcuts.qml
+++ b/modules/gui/qt/menus/qml/GlobalShortcuts.qml
@@ -44,16 +44,5 @@ Item {
Shortcut{ context: Qt.ApplicationShortcut; sequence:"Ctrl+L"; onActivated: mainInterface.playlistVisible = !mainInterface.playlistVisible; }
Shortcut{ context: Qt.ApplicationShortcut; sequence:"F11"; onActivated: mainInterface.toggleInterfaceFullScreen(); }
- Repeater {
- model: recentsMedias
-
- Item {
- Shortcut {
- sequence: "Ctrl+" + (index + 1)
- onActivated: mainPlaylistController.append([mrl], true)
- context: Qt.ApplicationShortcut
- }
- }
- }
}
diff --git a/modules/gui/qt/player/player_controller.cpp b/modules/gui/qt/player/player_controller.cpp
index 3f62071525..597ff1cdf3 100644
--- a/modules/gui/qt/player/player_controller.cpp
+++ b/modules/gui/qt/player/player_controller.cpp
@@ -22,7 +22,6 @@
#include "player_controller.hpp"
#include "player_controller_p.hpp"
-#include "util/recents.hpp"
#include <vlc_actions.h> /* ACTION_ID */
#include <vlc_url.h> /* vlc_uri_decode */
@@ -267,8 +266,6 @@ static void on_player_current_media_changed(vlc_player_t *, input_item_t *new_m
that->UpdateArt( newMediaPtr.get() );
that->UpdateMeta( newMediaPtr.get() );
- RecentsMRL::getInstance( that->p_intf )->addRecent( newMediaPtr.get()->psz_uri );
-
{
vlc_player_locker lock{ that->m_player };
that->m_currentItem = std::move(newMediaPtr);
diff --git a/modules/gui/qt/qt.cpp b/modules/gui/qt/qt.cpp
index 917ee77037..d61add4f0e 100644
--- a/modules/gui/qt/qt.cpp
+++ b/modules/gui/qt/qt.cpp
@@ -58,7 +58,6 @@ extern "C" char **environ;
#include "dialogs/extensions/extensions_manager.hpp" /* Extensions manager */
#include "dialogs/plugins/addons_manager.hpp" /* Addons manager */
#include "dialogs/help/help.hpp" /* Launch Update */
-#include "util/recents.hpp" /* Recents Item destruction */
#include "util/qvlcapp.hpp" /* QVLCApplication definition */
#include "maininterface/compositor.hpp"
@@ -802,9 +801,6 @@ static void *ThreadCleanup( intf_thread_t *p_intf, bool error )
*/
DialogsProvider::killInstance();
- /* Delete the recentsMRL object before the configuration */
- RecentsMRL::killInstance();
-
/* Save the path or delete if recent play are disabled */
if( var_InheritBool( p_intf, "qt-recentplay" ) )
getSettings()->setValue( "filedialog-path", p_sys->filepath );
diff --git a/modules/gui/qt/util/recent_media_model.cpp b/modules/gui/qt/util/recent_media_model.cpp
deleted file mode 100644
index 447409ce20..0000000000
--- a/modules/gui/qt/util/recent_media_model.cpp
+++ /dev/null
@@ -1,97 +0,0 @@
-/*****************************************************************************
- * Copyright (C) 2019 VLC authors and VideoLAN
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * ( at your option ) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- *****************************************************************************/
-
-#include "recent_media_model.hpp"
-#include <cassert>
-
-namespace {
- enum Roles
- {
- MRLRole = Qt::UserRole
- };
-}
-
-VLCRecentMediaModel::VLCRecentMediaModel(intf_thread_t *p_intf,QObject *parent)
- : QAbstractListModel(parent)
-{
- assert(p_intf);
- rmrl = RecentsMRL::getInstance(p_intf);
-
- connect(rmrl, SIGNAL(saved()), this, SLOT(update()));
- connect(this, SIGNAL(limitChanged()), this, SLOT(update()));
-
- update();
-}
-
-int VLCRecentMediaModel::rowCount(QModelIndex const & ) const
-{
- return items.count();
-}
-
-QVariant VLCRecentMediaModel::data(QModelIndex const &index, const int role) const
-{
- if (!index.isValid())
- return {};
- switch (role)
- {
- case MRLRole :
- return QVariant::fromValue(items[index.row()]);
- default :
- return {};
- }
-}
-
-QHash<int, QByteArray> VLCRecentMediaModel::roleNames() const
-{
- QHash<int, QByteArray> roleNames;
- roleNames.insert(MRLRole, "mrl");
- return roleNames;
-}
-
-void VLCRecentMediaModel::clear()
-{
- if (!items.isEmpty())
- {
- rmrl->clear();
- update();
- }
-}
-
-void VLCRecentMediaModel::update()
-{
- beginResetModel();
- items = rmrl->recentList().mid(0,i_limit);
- endResetModel();
-}
-
-QStringList VLCRecentMediaModel::getItems()
-{
- return items;
-}
-
-int VLCRecentMediaModel::getLimit() const
-{
- return i_limit;
-}
-
-void VLCRecentMediaModel::setLimit(int l)
-{
- i_limit = l;
- update();
- emit limitChanged();
-}
diff --git a/modules/gui/qt/util/recent_media_model.hpp b/modules/gui/qt/util/recent_media_model.hpp
deleted file mode 100644
index b45799e2aa..0000000000
--- a/modules/gui/qt/util/recent_media_model.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-/*****************************************************************************
- * Copyright (C) 2019 VLC authors and VideoLAN
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * ( at your option ) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- *****************************************************************************/
-
-#ifndef VLC_RECENT_MEDIA_MODEL_HPP
-#define VLC_RECENT_MEDIA_MODEL_HPP
-
-#ifdef HAVE_CONFIG_H
-
-# include "config.h"
-
-#endif
-
-#include "qt.hpp"
-#include <QAbstractListModel>
-
-#include <QObject>
-#include <QStringList>
-#include "util/recents.hpp"
-
-class VLCRecentMediaModel : public QAbstractListModel
-{
- Q_OBJECT
- Q_PROPERTY(int limit READ getLimit WRITE setLimit NOTIFY limitChanged)
-
-public:
- VLCRecentMediaModel(intf_thread_t *p_intf,QObject * parent = nullptr);
-
- Q_INVOKABLE void clear();
-
- Q_INVOKABLE int rowCount(QModelIndex const &parent = {}) const override;
-
- QVariant data(QModelIndex const &index, const int role = Qt::DisplayRole) const override;
-
- QHash<int, QByteArray> roleNames() const override;
-
- QStringList items;
-
- void setLimit(int l);
- int getLimit() const;
-
-private:
- RecentsMRL *rmrl;
- int i_limit = 10;
-
-signals:
- void limitChanged();
-
-public slots:
- void update();
- QStringList getItems();
-
-};
-
-#endif // VLC_RECENT_MEDIA_MODEL_HPP
diff --git a/modules/gui/qt/util/recents.cpp b/modules/gui/qt/util/recents.cpp
deleted file mode 100644
index 9ea0c68ab5..0000000000
--- a/modules/gui/qt/util/recents.cpp
+++ /dev/null
@@ -1,211 +0,0 @@
-/*****************************************************************************
- * recents.cpp : Recents MRL (menu)
- *****************************************************************************
- * Copyright © 2008-2014 VideoLAN and VLC authors
- *
- * Authors: Ludovic Fauvet <etix at l0cal.com>
- * Jean-baptiste Kempf <jb at videolan.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * ( at your option ) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- *****************************************************************************/
-
-#include "qt.hpp"
-#include "util/recents.hpp"
-#include "dialogs/dialogs_provider.hpp"
-#include "menus/menus.hpp"
-#include "util/qt_dirs.hpp"
-#include <vlc_cxx_helpers.hpp>
-#include "playlist/playlist_controller.hpp"
-
-#include <QStringList>
-#include <QRegExp>
-#include <QSignalMapper>
-
-#ifdef _WIN32
- #include <shlobj.h>
- /* typedef enum {
- SHARD_PIDL = 0x00000001,
- SHARD_PATHA = 0x00000002,
- SHARD_PATHW = 0x00000003,
- SHARD_APPIDINFO = 0x00000004,
- SHARD_APPIDINFOIDLIST = 0x00000005,
- SHARD_LINK = 0x00000006,
- SHARD_APPIDINFOLINK = 0x00000007,
- SHARD_SHELLITEM = 0x00000008
- } SHARD; */
- #define SHARD_PATHW 0x00000003
-
- #include <vlc_charset.h>
-#endif
-
-#include <vlc_input_item.h>
-
-RecentsMRL::RecentsMRL( intf_thread_t *_p_intf ) : p_intf( _p_intf )
-{
- recents = QStringList();
- times = QStringList();
-
- signalMapper = new QSignalMapper( this );
- CONNECT( signalMapper,
- mapped(const QString & ),
- this,
- playMRL( const QString & ) );
-
- /* Load the filter psz */
- char* psz_tmp = var_InheritString( p_intf, "qt-recentplay-filter" );
- if( psz_tmp && *psz_tmp )
- filter = new QRegExp( psz_tmp, Qt::CaseInsensitive );
- else
- filter = NULL;
- free( psz_tmp );
-
- load();
- isActive = var_InheritBool( p_intf, "qt-recentplay" );
- if( !isActive ) clear();
-}
-
-RecentsMRL::~RecentsMRL()
-{
- save();
- delete filter;
-}
-
-void RecentsMRL::addRecent( const QString &mrl )
-{
- if ( !isActive || ( filter && filter->indexIn( mrl ) >= 0 ) )
- return;
-
-#ifdef _WIN32
- /* Add to the Windows 7 default list in taskbar */
- char* path = vlc_uri2path( qtu( mrl ) );
- if( path )
- {
- wchar_t *wmrl = ToWide( path );
- if (wmrl != NULL)
- {
- SHAddToRecentDocs( SHARD_PATHW, wmrl );
- free( wmrl );
- }
- free( path );
- }
-#endif
-
- int i_index = recents.indexOf( mrl );
- if( 0 <= i_index )
- {
- /* move to the front */
- recents.move( i_index, 0 );
- times.move( i_index, 0 );
- }
- else
- {
- recents.prepend( mrl );
- times.prepend( "-1" );
- if( recents.count() > RECENTS_LIST_SIZE ) {
- recents.takeLast();
- times.takeLast();
- }
- }
- VLCMenuBar::updateRecents( p_intf );
- save();
-}
-
-void RecentsMRL::clear()
-{
- if ( recents.isEmpty() )
- return;
-
- recents.clear();
- times.clear();
- if( isActive ) VLCMenuBar::updateRecents( p_intf );
- save();
-}
-
-QStringList RecentsMRL::recentList()
-{
- return recents;
-}
-
-void RecentsMRL::load()
-{
- /* Load from the settings */
- QStringList list = getSettings()->value( "RecentsMRL/list" ).toStringList();
- QStringList list2 = getSettings()->value( "RecentsMRL/times" ).toStringList();
-
- /* And filter the regexp on the list */
- for( int i = 0; i < list.count(); ++i )
- {
- if ( !filter || filter->indexIn( list.at(i) ) == -1 ) {
- recents.append( list.at(i) );
- times.append( list2.value(i, "-1" ) );
- }
- }
-}
-
-void RecentsMRL::save()
-{
- getSettings()->setValue( "RecentsMRL/list", recents );
- getSettings()->setValue( "RecentsMRL/times", times );
- emit saved();
-}
-
-void RecentsMRL::playMRL( const QString &mrl )
-{
- Open::openMRL( p_intf, mrl );
-}
-
-vlc_tick_t RecentsMRL::time( const QString &mrl )
-{
- if( !isActive )
- return -1;
-
- int i_index = recents.indexOf( mrl );
- if( i_index != -1 )
- return VLC_TICK_FROM_MS(times.value(i_index, "-1").toInt());
- else
- return -1;
-}
-
-void RecentsMRL::setTime( const QString &mrl, const vlc_tick_t time )
-{
- int i_index = recents.indexOf( mrl );
- if( i_index != -1 )
- times[i_index] = QString::number( MS_FROM_VLC_TICK( time ) );
-}
-
-int Open::openMRL( intf_thread_t *p_intf,
- const QString &mrl,
- bool b_start )
-{
- return openMRLwithOptions( p_intf, mrl, NULL, b_start );
-}
-
-int Open::openMRLwithOptions( intf_thread_t* p_intf,
- const QString &mrl,
- QStringList *options,
- bool b_start,
- const char *title)
-{
- QVector<vlc::playlist::Media> medias {
- {mrl, qfu(title), options}
- };
-
- THEMPL->append(medias, b_start);
- /* Add to recent items, only if played */
- if( b_start )
- RecentsMRL::getInstance( p_intf )->addRecent( mrl );
-
- return VLC_SUCCESS;
-}
diff --git a/modules/gui/qt/util/recents.hpp b/modules/gui/qt/util/recents.hpp
deleted file mode 100644
index bb2286ca2c..0000000000
--- a/modules/gui/qt/util/recents.hpp
+++ /dev/null
@@ -1,86 +0,0 @@
-/*****************************************************************************
- * recents.hpp : Recents MRL (menu)
- *****************************************************************************
- * Copyright © 2008-2014 VideoLAN and VLC authors
- *
- * Authors: Ludovic Fauvet <etix at l0cal.com>
- * Jean-baptiste Kempf <jb at videolan.org>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * ( at your option ) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
- *****************************************************************************/
-
-#ifndef QVLC_RECENTS_H_
-#define QVLC_RECENTS_H_
-
-#include "qt.hpp"
-#include "util/singleton.hpp"
-
-#include <QObject>
-#include <QStringList>
-class QRegExp;
-class QSignalMapper;
-
-#define RECENTS_LIST_SIZE 30
-
-class Open
-{
-public:
- static int openMRL( intf_thread_t*,
- const QString &,
- bool b_start = true);
-
- static int openMRLwithOptions( intf_thread_t*,
- const QString &,
- QStringList *options,
- bool b_start = true,
- const char* title = NULL);
-};
-
-class RecentsMRL : public QObject, public Singleton<RecentsMRL>
-{
- Q_OBJECT
- friend class Singleton<RecentsMRL>;
-
-public:
-
- void addRecent( const QString & );
- QSignalMapper *signalMapper;
-
- vlc_tick_t time( const QString &mrl );
- void setTime( const QString &mrl, const vlc_tick_t time );
- virtual ~RecentsMRL();
-
-private:
- RecentsMRL( intf_thread_t* _p_intf );
-
- intf_thread_t *p_intf;
-
- QStringList recents;
- QStringList times;
- QRegExp *filter;
- bool isActive;
-
- void load();
- void save();
-
-signals:
- void saved();
-public slots:
- QStringList recentList();
- void clear();
- void playMRL( const QString & );
-};
-
-#endif
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 4223fb28dd..c147372dce 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -771,8 +771,6 @@ modules/gui/qt/menus/menus.cpp
modules/gui/qt/menus/menus.hpp
modules/gui/qt/qt.cpp
modules/gui/qt/qt.hpp
-modules/gui/qt/util/recents.cpp
-modules/gui/qt/util/recents.hpp
modules/gui/qt/widgets/native/animators.cpp
modules/gui/qt/widgets/native/animators.hpp
modules/gui/qt/widgets/native/customwidgets.cpp
--
2.25.1
More information about the vlc-devel
mailing list