From f20380373d5f4b144b010a40736cc51962f41d49 Mon Sep 17 00:00:00 2001 From: Francois Cartegnie Date: Sat, 25 Jun 2011 20:29:53 +0200 Subject: [PATCH] Qt: add SeekPoints data --- modules/gui/qt4/Modules.am | 3 + modules/gui/qt4/adapters/seekpoints.cpp | 73 +++++++++++++++++++++++++ modules/gui/qt4/adapters/seekpoints.hpp | 63 +++++++++++++++++++++ 3 files changed, 139 insertions(+) create mode 100644 modules/gui/qt4/adapters/seekpoints.cpp create mode 100644 modules/gui/qt4/adapters/seekpoints.hpp diff --git a/modules/gui/qt4/Modules.am b/modules/gui/qt4/Modules.am index 8ebfab39ef..1ed9f58768 100644 --- a/modules/gui/qt4/Modules.am +++ b/modules/gui/qt4/Modules.am @@ -22,6 +22,7 @@ nodist_SOURCES_qt4 = \ actions_manager.moc.cpp \ extensions_manager.moc.cpp \ recents.moc.cpp \ + adapters/seekpoints.moc.cpp \ variables.moc.cpp \ dialogs/playlist.moc.cpp \ dialogs/bookmarks.moc.cpp \ @@ -251,6 +252,7 @@ SOURCES_qt4 = qt4.cpp \ actions_manager.cpp \ extensions_manager.cpp \ recents.cpp \ + adapters/seekpoints.cpp \ variables.cpp \ dialogs/playlist.cpp \ dialogs/bookmarks.cpp \ @@ -327,6 +329,7 @@ noinst_HEADERS = \ actions_manager.hpp \ extensions_manager.hpp \ recents.hpp \ + adapters/seekpoints.hpp \ variables.hpp \ dialogs/playlist.hpp \ dialogs/bookmarks.hpp \ diff --git a/modules/gui/qt4/adapters/seekpoints.cpp b/modules/gui/qt4/adapters/seekpoints.cpp new file mode 100644 index 0000000000..bf4037ab38 --- /dev/null +++ b/modules/gui/qt4/adapters/seekpoints.cpp @@ -0,0 +1,73 @@ +/***************************************************************************** + * seekpoints.cpp : Chapters & Bookmarks (menu) + ***************************************************************************** + * Copyright © 2011 the VideoLAN team + * + * + * 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 "dialogs_provider.hpp" +#include "menus.hpp" + +#include "seekpoints.hpp" + +#include "qt4.hpp" +#include "input_manager.hpp" + +SeekPoints::SeekPoints( QObject *parent, intf_thread_t *p_intf_ ) : + QObject( parent ), p_intf( p_intf_ ) +{} + +void SeekPoints::update() +{ + input_title_t *p_title = NULL; + input_thread_t *p_input_thread = playlist_CurrentInput( THEPL ); + int i_title_id = -1; + if( !p_input_thread ) { pointsList.clear(); return; } + + if ( input_Control( p_input_thread, INPUT_GET_TITLE_INFO, &p_title, &i_title_id ) + != VLC_SUCCESS ) + { + vlc_object_release( p_input_thread ); + pointsList.clear(); + return; + } + + vlc_object_release( p_input_thread ); + + /* lock here too, as update event is triggered by an external thread */ + if ( !access() ) return; + pointsList.clear(); + for ( int i=0; ii_seekpoint ; i++ ) + pointsList << SeekPoint( p_title->seekpoint[i] ); + + vlc_input_title_Delete( p_title ); + release(); +} + +QList const SeekPoints::getPoints() +{ + QList copy; + if ( access() ) + { + copy = pointsList; + release(); + } + return copy; +} + diff --git a/modules/gui/qt4/adapters/seekpoints.hpp b/modules/gui/qt4/adapters/seekpoints.hpp new file mode 100644 index 0000000000..9ae1fbae5d --- /dev/null +++ b/modules/gui/qt4/adapters/seekpoints.hpp @@ -0,0 +1,63 @@ +/***************************************************************************** + * seekpoints.hpp : Chapters & Bookmarks (menu) + ***************************************************************************** + * Copyright © 2011 the VideoLAN team + * + * + * 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 SEEKPOINTS_HPP +#define SEEKPOINTS_HPP + +#include +#include +#include + +#include +#include +#include + +class SeekPoint +{ +public: + SeekPoint( seekpoint_t *seekpoint ) + { + time = seekpoint->i_time_offset; + name = seekpoint->psz_name; + }; + int64_t time; + QString name; +}; + +class SeekPoints : public QObject +{ + Q_OBJECT +public: + SeekPoints( QObject *, intf_thread_t * ); + QList const getPoints(); + bool access() { return listMutex.tryLock( 100 ); } + void release() { listMutex.unlock(); } + +public slots: + void update(); + +private: + QList pointsList; + QMutex listMutex; + intf_thread_t *p_intf; +}; + +#endif // SEEKPOINTS_HPP -- 2.39.5