]> git.sesse.net Git - vlc/commitdiff
Qt: add SeekPoints data
authorFrancois Cartegnie <fcvlcdev@free.fr>
Sat, 25 Jun 2011 18:29:53 +0000 (20:29 +0200)
committerFrancois Cartegnie <fcvlcdev@free.fr>
Mon, 11 Jul 2011 20:15:13 +0000 (22:15 +0200)
modules/gui/qt4/Modules.am
modules/gui/qt4/adapters/seekpoints.cpp [new file with mode: 0644]
modules/gui/qt4/adapters/seekpoints.hpp [new file with mode: 0644]

index 8ebfab39ef3ddcc1a7674d1f19f48839de29f80c..1ed9f58768ae9e56af8cba9c0b8ad284c42edc3f 100644 (file)
@@ -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 (file)
index 0000000..bf4037a
--- /dev/null
@@ -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; i<p_title->i_seekpoint ; i++ )
+        pointsList << SeekPoint( p_title->seekpoint[i] );
+
+    vlc_input_title_Delete( p_title );
+    release();
+}
+
+QList<SeekPoint> const SeekPoints::getPoints()
+{
+    QList<SeekPoint> 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 (file)
index 0000000..9ae1fba
--- /dev/null
@@ -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 <vlc_common.h>
+#include <vlc_interface.h>
+#include <vlc_input.h>
+
+#include <QObject>
+#include <QList>
+#include <QMutex>
+
+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<SeekPoint> const getPoints();
+    bool access() { return listMutex.tryLock( 100 ); }
+    void release() { listMutex.unlock(); }
+
+public slots:
+    void update();
+
+private:
+    QList<SeekPoint> pointsList;
+    QMutex listMutex;
+    intf_thread_t *p_intf;
+};
+
+#endif // SEEKPOINTS_HPP