From 6b468738b8468b1ca799cdda6cd0defbde720920 Mon Sep 17 00:00:00 2001 From: Ludovic Fauvet Date: Sun, 19 Oct 2008 17:37:53 +0200 Subject: [PATCH] New recently played menu. * Configuration aware to enable/disable (default enabled) * Filters available to ignore some patterns (using QRegExp) Signed-off-by: Jean-Baptiste Kempf --- .../cmake/CMakeLists/qt4_CMakeLists.txt | 3 +- modules/gui/qt4/Modules.am | 3 + .../gui/qt4/components/simple_preferences.cpp | 9 ++ modules/gui/qt4/dialogs/open.cpp | 5 + modules/gui/qt4/dialogs_provider.cpp | 26 +++- modules/gui/qt4/dialogs_provider.hpp | 1 + modules/gui/qt4/main_interface.cpp | 14 +++ modules/gui/qt4/main_interface.hpp | 1 + modules/gui/qt4/menus.cpp | 45 ++++++- modules/gui/qt4/menus.hpp | 5 +- modules/gui/qt4/qt4.cpp | 11 ++ modules/gui/qt4/recents.cpp | 115 ++++++++++++++++++ modules/gui/qt4/recents.hpp | 76 ++++++++++++ modules/gui/qt4/ui/sprefs_interface.ui | 44 ++++++- 14 files changed, 345 insertions(+), 13 deletions(-) create mode 100644 modules/gui/qt4/recents.cpp create mode 100644 modules/gui/qt4/recents.hpp diff --git a/extras/buildsystem/cmake/CMakeLists/qt4_CMakeLists.txt b/extras/buildsystem/cmake/CMakeLists/qt4_CMakeLists.txt index dc9566f8ab..7ba4019a4b 100644 --- a/extras/buildsystem/cmake/CMakeLists/qt4_CMakeLists.txt +++ b/extras/buildsystem/cmake/CMakeLists/qt4_CMakeLists.txt @@ -1,4 +1,4 @@ -set(qt4_SOURCES qt4.cpp menus.cpp main_interface.cpp dialogs_provider.cpp input_manager.cpp dialogs/playlist.cpp dialogs/bookmarks.cpp dialogs/preferences.cpp dialogs/mediainfo.cpp dialogs/extended.cpp dialogs/messages.cpp dialogs/errors.cpp dialogs/interaction.cpp dialogs/sout.cpp dialogs/help.cpp dialogs/gototime.cpp dialogs/open.cpp dialogs/vlm.cpp dialogs/podcast_configuration.cpp components/extended_panels.cpp components/info_panels.cpp components/preferences_widgets.cpp components/complete_preferences.cpp components/simple_preferences.cpp components/open_panels.cpp components/interface_widgets.cpp components/playlist/playlist_model.cpp components/playlist/playlist_item.cpp components/playlist/standardpanel.cpp components/playlist/playlist.cpp components/playlist/selector.cpp util/input_slider.cpp util/customwidgets.cpp util/registry.cpp ) +set(qt4_SOURCES qt4.cpp menus.cpp main_interface.cpp dialogs_provider.cpp input_manager.cpp recents.cpp dialogs/playlist.cpp dialogs/bookmarks.cpp dialogs/preferences.cpp dialogs/mediainfo.cpp dialogs/extended.cpp dialogs/messages.cpp dialogs/errors.cpp dialogs/interaction.cpp dialogs/sout.cpp dialogs/help.cpp dialogs/gototime.cpp dialogs/open.cpp dialogs/vlm.cpp dialogs/podcast_configuration.cpp components/extended_panels.cpp components/info_panels.cpp components/preferences_widgets.cpp components/complete_preferences.cpp components/simple_preferences.cpp components/open_panels.cpp components/interface_widgets.cpp components/playlist/playlist_model.cpp components/playlist/playlist_item.cpp components/playlist/standardpanel.cpp components/playlist/playlist.cpp components/playlist/selector.cpp util/input_slider.cpp util/customwidgets.cpp util/registry.cpp ) set(qt4_UIS ui/equalizer.ui ui/v4l2.ui ui/video_effects.ui ui/open_file.ui ui/open_disk.ui ui/open_net.ui ui/open_capture.ui ui/open.ui ui/podcast_configuration.ui ui/sprefs_audio.ui ui/sprefs_input.ui ui/sprefs_interface.ui ui/sprefs_subtitles.ui ui/sprefs_video.ui ui/streampanel.ui ui/sout.ui ui/vlm.ui ) set(qt4_HEADERS components/complete_preferences.hpp @@ -32,6 +32,7 @@ set(qt4_HEADERS main_interface.hpp menus.hpp qt4.hpp + recents.hpp util/customwidgets.hpp util/input_slider.hpp util/qvlcframe.hpp diff --git a/modules/gui/qt4/Modules.am b/modules/gui/qt4/Modules.am index a715e40e6b..1f43ac20bf 100644 --- a/modules/gui/qt4/Modules.am +++ b/modules/gui/qt4/Modules.am @@ -17,6 +17,7 @@ nodist_SOURCES_qt4 = \ menus.moc.cpp \ dialogs_provider.moc.cpp \ input_manager.moc.cpp \ + recents.moc.cpp \ dialogs/playlist.moc.cpp \ dialogs/bookmarks.moc.cpp \ dialogs/mediainfo.moc.cpp \ @@ -171,6 +172,7 @@ SOURCES_qt4 = qt4.cpp \ main_interface.cpp \ dialogs_provider.cpp \ input_manager.cpp \ + recents.cpp \ dialogs/playlist.cpp \ dialogs/bookmarks.cpp \ dialogs/preferences.cpp \ @@ -208,6 +210,7 @@ noinst_HEADERS = \ main_interface.hpp \ dialogs_provider.hpp \ input_manager.hpp \ + recents.hpp \ dialogs/playlist.hpp \ dialogs/bookmarks.hpp \ dialogs/mediainfo.hpp \ diff --git a/modules/gui/qt4/components/simple_preferences.cpp b/modules/gui/qt4/components/simple_preferences.cpp index ca1c776d51..d14342edaf 100644 --- a/modules/gui/qt4/components/simple_preferences.cpp +++ b/modules/gui/qt4/components/simple_preferences.cpp @@ -38,6 +38,7 @@ #include #include #include +#include #include @@ -511,6 +512,14 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent, #else ui.OneInterfaceBox->hide(); #endif + /* RECENTLY PLAYED options */ + CONNECT( ui.saveRecentlyPlayed, toggled( bool ), + ui.recentlyPlayedFilters, setEnabled( bool ) ); + ui.recentlyPlayedFilters->setEnabled( false ); + CONFIG_GENERIC( "qt-recentplay", Bool, NULL, saveRecentlyPlayed ); + CONFIG_GENERIC( "qt-recentplay-filter", String, NULL, + recentlyPlayedFilters ); + END_SPREFS_CAT; START_SPREFS_CAT( Subtitles, qtr("Subtitles & On Screen Display Settings") ); diff --git a/modules/gui/qt4/dialogs/open.cpp b/modules/gui/qt4/dialogs/open.cpp index 9e803ef43f..dbbbfde4e8 100644 --- a/modules/gui/qt4/dialogs/open.cpp +++ b/modules/gui/qt4/dialogs/open.cpp @@ -28,6 +28,8 @@ #include "dialogs/open.hpp" +#include "recents.hpp" + #include #include #include @@ -337,6 +339,9 @@ void OpenDialog::finish( bool b_enqueue = false ) PLAYLIST_APPEND | ( b_start ? PLAYLIST_GO : PLAYLIST_PREPARSE ), PLAYLIST_END, b_pl ? true : false, pl_Unlocked ); vlc_gc_decref( p_input ); + + /* Do not add the current MRL if playlist_AddInput fail */ + RecentsMRL::getInstance( p_intf )->addRecent( tempMRL[i] ); } } else diff --git a/modules/gui/qt4/dialogs_provider.cpp b/modules/gui/qt4/dialogs_provider.cpp index 27dcf6e63b..53970ecf11 100644 --- a/modules/gui/qt4/dialogs_provider.cpp +++ b/modules/gui/qt4/dialogs_provider.cpp @@ -37,6 +37,7 @@ #include "menus.hpp" #include #include "input_manager.hpp" +#include "recents.hpp" /* The dialogs */ #include "dialogs/playlist.hpp" @@ -389,6 +390,8 @@ void DialogsProvider::addFromSimple( bool pl, bool go) : ( PLAYLIST_APPEND | PLAYLIST_PREPARSE ), PLAYLIST_END, pl ? true : false, false ); + RecentsMRL::getInstance( p_intf )->addRecent( + toNativeSeparators( file ) ); i++; } } @@ -420,17 +423,17 @@ static void openDirectory( intf_thread_t *p_intf, bool pl, bool go ) if (!dir.isEmpty() ) { + QString mrl = dir.endsWith( "VIDEO_TS", Qt::CaseInsensitive ) + ? "dvd://" : "directory://" + toNativeSeparators( dir ); msg_Dbg( p_intf, "Directory opening: %s", qtu( dir ) ); - input_item_t *p_input = input_item_NewExt( THEPL, qtu( - dir.endsWith( "VIDEO_TS", Qt::CaseInsensitive ) ? "dvd://" - :"directory://" - + toNativeSeparators(dir) ), + input_item_t *p_input = input_item_NewExt( THEPL, qtu( mrl ), NULL, 0, NULL, -1 ); /* FIXME: playlist_AddInput() can fail */ playlist_AddInput( THEPL, p_input, go ? ( PLAYLIST_APPEND | PLAYLIST_GO ) : PLAYLIST_APPEND, PLAYLIST_END, pl, pl_Unlocked ); + RecentsMRL::getInstance( p_intf )->addRecent( mrl ); if( !go ) input_Read( THEPL, p_input, true ); vlc_gc_decref( p_input ); @@ -529,6 +532,7 @@ void DialogsProvider::streamingDialog( QWidget *parent, QString mrl, playlist_AddExt( THEPL, qtu( mrl ), "Streaming", PLAYLIST_APPEND | PLAYLIST_GO, PLAYLIST_END, -1, &psz_option, 1, true, pl_Unlocked ); + RecentsMRL::getInstance( p_intf )->addRecent( mrl ); } } @@ -641,3 +645,17 @@ void DialogsProvider::loadSubtitlesFile() qtu( qsFile ) ); } } + +/** + * Play the MRL contained in the Recently played menu. + **/ +void DialogsProvider::playMRL( const QString &mrl ) +{ + input_item_t *p_input = input_item_New( p_intf, + qtu( mrl ), NULL ); + playlist_AddInput( THEPL, p_input, PLAYLIST_GO, + PLAYLIST_END, true, pl_Unlocked ); + vlc_gc_decref( p_input ); + + RecentsMRL::getInstance( p_intf )->addRecent( mrl ); +} diff --git a/modules/gui/qt4/dialogs_provider.hpp b/modules/gui/qt4/dialogs_provider.hpp index 5a1b6c0f1b..ff96d5ca3b 100644 --- a/modules/gui/qt4/dialogs_provider.hpp +++ b/modules/gui/qt4/dialogs_provider.hpp @@ -133,6 +133,7 @@ public slots: void menuAction( QObject *); void menuUpdateAction( QObject * ); void SDMenuAction( QString ); + void playMRL( const QString & ); void playlistDialog(); void bookmarksDialog(); diff --git a/modules/gui/qt4/main_interface.cpp b/modules/gui/qt4/main_interface.cpp index 3ac08fcabb..dd29bc6bdc 100644 --- a/modules/gui/qt4/main_interface.cpp +++ b/modules/gui/qt4/main_interface.cpp @@ -39,6 +39,7 @@ #include "dialogs/extended.hpp" #include "dialogs/playlist.hpp" #include "menus.hpp" +#include "recents.hpp" #include #include @@ -132,9 +133,12 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf ) * Menu Bar and Status Bar **************************/ QVLCMenu::createMenuBar( this, p_intf, visualSelectorEnabled ); + /* StatusBar Creation */ createStatusBar(); + /* Recents menu updates */ + CONNECT( RecentsMRL::getInstance( p_intf ), updated(), this, updateRecentsMenu() ); /******************** * Input Manager * @@ -1046,6 +1050,7 @@ void MainInterface::dropEventPlay( QDropEvent *event, bool b_play ) PLAYLIST_APPEND | (first ? PLAYLIST_GO: 0), PLAYLIST_END, true, false ); first = false; + RecentsMRL::getInstance( p_intf )->addRecent( s ); } } event->acceptProposedAction(); @@ -1178,3 +1183,12 @@ static int IntfShowCB( vlc_object_t *p_this, const char *psz_variable, /* Show event */ return VLC_SUCCESS; } + +/***************************************************************************** + * updateRecentsMenu: event called by RecentsMRL + *****************************************************************************/ + +void MainInterface::updateRecentsMenu() +{ + QVLCMenu::updateRecents( p_intf ); +} diff --git a/modules/gui/qt4/main_interface.hpp b/modules/gui/qt4/main_interface.hpp index 25b84e25b8..d1c05003e2 100644 --- a/modules/gui/qt4/main_interface.hpp +++ b/modules/gui/qt4/main_interface.hpp @@ -175,6 +175,7 @@ private slots: void updateSystrayTooltipName( QString ); void updateSystrayTooltipStatus( int ); void showSpeedMenu( QPoint ); + void updateRecentsMenu(); signals: void askReleaseVideo( void * ); void askVideoToResize( unsigned int, unsigned int ); diff --git a/modules/gui/qt4/menus.cpp b/modules/gui/qt4/menus.cpp index a2fc50dda2..f89d7e082b 100644 --- a/modules/gui/qt4/menus.cpp +++ b/modules/gui/qt4/menus.cpp @@ -39,6 +39,7 @@ #include "menus.hpp" #include "dialogs_provider.hpp" #include "input_manager.hpp" +#include "recents.hpp" #include #include @@ -46,6 +47,7 @@ #include #include #include +#include /* This file defines the main menus and the pop-up menu (right-click menu) @@ -76,6 +78,8 @@ static QActionGroup *currentGroup; * that doesn't update the QAction checked state when QMenu is hidden */ QAction *QVLCMenu::minimalViewAction = NULL; +QMenu *QVLCMenu::recentsMenu = NULL; + // Add static entries to menus void addDPStaticEntry( QMenu *menu, const QString text, @@ -273,7 +277,7 @@ void QVLCMenu::createMenuBar( MainInterface *mi, gives the QProcess::destroyed timeout issue on Cleanlooks style with setDesktopAware set to false */ QMenuBar *bar = mi->menuBar(); - BAR_ADD( FileMenu(), qtr( "&Media" ) ); + BAR_ADD( FileMenu( p_intf ), qtr( "&Media" ) ); BAR_DADD( AudioMenu( p_intf, NULL ), qtr( "&Audio" ), 1 ); BAR_DADD( VideoMenu( p_intf, NULL ), qtr( "&Video" ), 2 ); @@ -292,7 +296,7 @@ void QVLCMenu::createMenuBar( MainInterface *mi, * Media ( File ) Menu * Opening, streaming and quit **/ -QMenu *QVLCMenu::FileMenu() +QMenu *QVLCMenu::FileMenu( intf_thread_t *p_intf ) { QMenu *menu = new QMenu(); @@ -313,6 +317,9 @@ QMenu *QVLCMenu::FileMenu() addDPStaticEntry( menu, qtr( "Open &Capture Device..." ), "", ":/capture-card", SLOT( openCaptureDialog() ), "Ctrl+C" ); + recentsMenu = new QMenu( qtr( "Recently played" ), menu ); + updateRecents( p_intf ); + menu->addMenu( recentsMenu ); menu->addSeparator(); addDPStaticEntry( menu, qtr( "Conve&rt / Save..." ), "", "", @@ -1290,3 +1297,37 @@ void QVLCMenu::DoAction( intf_thread_t *p_intf, QObject *data ) var_Set( p_object, itemData->psz_var, itemData->val ); } +void QVLCMenu::updateRecents( intf_thread_t *p_intf ) +{ + if (recentsMenu) + { + QAction* action; + RecentsMRL* rmrl = RecentsMRL::getInstance( p_intf ); + QList l = rmrl->recents(); + + recentsMenu->clear(); + if( !l.size() ) + { + action = recentsMenu->addAction( " - Empty - " ); + action->setEnabled( false ); + } + else + { + for( int i = 0; i < l.size(); ++i ) + { + action = recentsMenu->addAction( l.at( i ), + rmrl->signalMapper, + SLOT( map() ) ); + rmrl->signalMapper->setMapping( action, l.at( i ) ); + } + + CONNECT( rmrl->signalMapper, + mapped(const QString & ), + DialogsProvider::getInstance( p_intf ), + playMRL( const QString & ) ); + + recentsMenu->addSeparator(); + recentsMenu->addAction( "Clear", rmrl, SLOT( clear() ) ); + } + } +} diff --git a/modules/gui/qt4/menus.hpp b/modules/gui/qt4/menus.hpp index 177397cb11..e9f907640c 100644 --- a/modules/gui/qt4/menus.hpp +++ b/modules/gui/qt4/menus.hpp @@ -76,7 +76,7 @@ public: static void createMenuBar( MainInterface *mi, intf_thread_t *, bool ); /* Menus */ - static QMenu *FileMenu(); + static QMenu *FileMenu( intf_thread_t * ); static QMenu *SDMenu( intf_thread_t * ); static QMenu *PlaylistMenu( intf_thread_t *, MainInterface * ); static QMenu *ToolsMenu( intf_thread_t *, QMenu *, MainInterface *, @@ -115,6 +115,9 @@ private: static void UpdateItem( intf_thread_t *, QMenu *, const char *, vlc_object_t *, bool ); static int CreateChoicesMenu( QMenu *,const char *, vlc_object_t *, bool ); + static QMenu *recentsMenu; +public slots: + static void updateRecents( intf_thread_t * ); }; class MenuFunc : public QObject diff --git a/modules/gui/qt4/qt4.cpp b/modules/gui/qt4/qt4.cpp index 2340a0d011..fb4fb49fa5 100755 --- a/modules/gui/qt4/qt4.cpp +++ b/modules/gui/qt4/qt4.cpp @@ -39,6 +39,7 @@ #include "input_manager.hpp" #include "main_interface.hpp" #include "dialogs/help.hpp" /* update */ +#include "recents.hpp" #ifdef HAVE_X11_XLIB_H #include @@ -123,6 +124,9 @@ static void ShowDialog ( intf_thread_t *, int, int, intf_dialog_args_t * ); #define PRIVACY_TEXT N_( "Ask for network policy at start" ) +#define RECENTPLAY_TEXT N_( "Save the recently played items in the menu" ) +#define RECENTPLAY_FILTER_TEXT N_( "List of words separated by | to filter" ) + #define SLIDERCOL_TEXT N_( "Define the colors of the volume slider " ) #define SLIDERCOL_LONGTEXT N_( "Define the colors of the volume slider\n" \ "By specifying the 12 numbers separated by a ';'\n" \ @@ -209,6 +213,10 @@ vlc_module_begin(); add_bool( "qt-privacy-ask", true, NULL, PRIVACY_TEXT, PRIVACY_TEXT, false ); + add_bool( "qt-recentplay", true, NULL, RECENTPLAY_TEXT, + RECENTPLAY_TEXT, false ); + add_string( "qt-recentplay-filter", NULL, NULL, + RECENTPLAY_FILTER_TEXT, RECENTPLAY_FILTER_TEXT, false ); change_internal(); set_callbacks( OpenDialogs, Close ); @@ -483,6 +491,9 @@ static void *Init( vlc_object_t *obj ) */ DialogsProvider::killInstance(); + /* Delete the recentsMRL object before the configuration */ + RecentsMRL::killInstance(); + /* Delete the configuration. Application has to be deleted after that. */ delete p_intf->p_sys->mainSettings; diff --git a/modules/gui/qt4/recents.cpp b/modules/gui/qt4/recents.cpp new file mode 100644 index 0000000000..473a081248 --- /dev/null +++ b/modules/gui/qt4/recents.cpp @@ -0,0 +1,115 @@ +/***************************************************************************** + * recents.cpp : Recents MRL (menu) + ***************************************************************************** + * Copyright © 2006-2008 the VideoLAN team + * $Id$ + * + * Authors: Ludovic Fauvet + * + * 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 "recents.hpp" + +#include +#include +#include +#include +#include +#include + +RecentsMRL* RecentsMRL::instance = NULL; + +RecentsMRL::RecentsMRL( intf_thread_t *_p_intf ) : p_intf( _p_intf ) +{ + stack = new QList; + signalMapper = new QSignalMapper(this); + + isActive = config_GetInt( p_intf, "qt-recentplay" ); + filter = new QRegExp( + qfu( config_GetPsz( p_intf, "qt-recentplay-filter" ) ), + Qt::CaseInsensitive ); + + load(); + if ( !isActive ) clear(); +} + +RecentsMRL::~RecentsMRL() +{ + delete stack; + delete signalMapper; +} + +void RecentsMRL::addRecent( const QString &mrl ) +{ + if ( !isActive || filter->indexIn( mrl ) >= 0 ) + return; + + if( stack->contains( mrl ) ) + { + stack->removeOne( mrl ); + stack->prepend( mrl ); + } + else + { + stack->prepend( mrl ); + if( stack->size() > RECENTS_LIST_SIZE ) + stack->takeLast(); + } + emit updated(); + save(); +} + +void RecentsMRL::clear() +{ + if ( stack->isEmpty() ) + return; + stack->clear(); + emit updated(); + save(); +} + +QList RecentsMRL::recents() +{ + return QList(*stack); +} + +void RecentsMRL::load() +{ + QStringList list; + + getSettings()->beginGroup( "RecentsMRL" ); + list = getSettings()->value( "list" ).toStringList(); + getSettings()->endGroup(); + + for( int i = 0; i < list.size(); ++i ) + { + if (filter->indexIn( list.at(i) ) == -1) + stack->append( list.at(i) ); + } +} + +void RecentsMRL::save() +{ + QStringList list; + + for( int i = 0; i < stack->size(); ++i ) + list << stack->at(i); + + getSettings()->beginGroup( "RecentsMRL" ); + getSettings()->setValue( "list", list ); + getSettings()->endGroup(); +} diff --git a/modules/gui/qt4/recents.hpp b/modules/gui/qt4/recents.hpp new file mode 100644 index 0000000000..29c65d948a --- /dev/null +++ b/modules/gui/qt4/recents.hpp @@ -0,0 +1,76 @@ +/***************************************************************************** + * recents.cpp : Recents MRL (menu) + ***************************************************************************** + * Copyright © 2006-2008 the VideoLAN team + * $Id$ + * + * Authors: Ludovic Fauvet + * + * 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 _RECENTS_H_ +#define _RECENTS_H_ + +#include "qt4.hpp" + +#include +#include +#include +#include +#include + +#define RECENTS_LIST_SIZE 8 + +class RecentsMRL : public QObject +{ + Q_OBJECT + +signals: + void updated(); + +public: + static RecentsMRL* getInstance( intf_thread_t* p_intf ) + { + if(!instance) + instance = new RecentsMRL( p_intf ); + return instance; + } + static void killInstance() + { + if( instance ) delete instance; + instance = NULL; + } + virtual ~RecentsMRL(); + + void addRecent( const QString & ); + QList recents(); + QSignalMapper *signalMapper; + +private: + RecentsMRL( intf_thread_t* _p_intf ); + void load(); + void save(); + static RecentsMRL *instance; + intf_thread_t* p_intf; + QList *stack; + bool isActive; + QRegExp *filter; + +public slots: + void clear(); +}; + +#endif diff --git a/modules/gui/qt4/ui/sprefs_interface.ui b/modules/gui/qt4/ui/sprefs_interface.ui index 3f92d5627a..8ae62557d8 100644 --- a/modules/gui/qt4/ui/sprefs_interface.ui +++ b/modules/gui/qt4/ui/sprefs_interface.ui @@ -5,8 +5,8 @@ 0 0 - 629 - 576 + 654 + 578 @@ -276,9 +276,6 @@ - - - @@ -296,6 +293,43 @@ + + + + _("Save recently played items") + + + + + + + + + + + + _("Filter") + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + _("Separate words by | (without space)") + + + + + -- 2.39.5