Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "ClipScanner.h"
- #include <QDebug>
- #define SCAN_TIMEOUT 500
- ClipScanner *ClipScanner::m_instance = 0;
- ClipScanner *ClipScanner::instance()
- {
- if (!m_instance)
- m_instance = new ClipScanner;
- return m_instance;
- }
- ClipScanner::ClipScanner()
- : m_hbHandle(0)
- {
- connect(&m_scanTimer, SIGNAL(timeout()), this, SLOT(checkScan()));
- }
- void ClipScanner::setHandle(hb_handle_t *handle)
- {
- m_hbHandle = handle;
- }
- void ClipScanner::scanClips(const QStringList &clips)
- {
- m_clipsToScan << clips;
- if (!m_scanTimer.isActive())
- scanNextClip();
- }
- void ClipScanner::checkScan()
- {
- if (!m_hbHandle) {
- m_scanTimer.stop();
- return;
- }
- hb_state_t s;
- hb_get_state( m_hbHandle, &s );
- switch (s.state)
- {
- case HB_STATE_IDLE:
- m_scanTimer.stop();
- break;
- case HB_STATE_SCANDONE:
- {
- hb_list_t *list = 0;
- hb_title_t *title = 0;
- list = (hb_list_t *) hb_get_titles( m_hbHandle );
- if( !hb_list_count( list ) )
- {
- /* No valid title, stop right there */
- qDebug() << "No title found.";
- break;
- } else {
- title = (hb_title_t *) hb_list_item( list, 0 );
- }
- if (title)
- qDebug() << "got it";
- }
- case HB_STATE_WORKING:
- qDebug() << "hb state: WORKING...";
- break;
- default:
- break;
- }
- /*
- if (s.state != HB_STATE_SCANNING) {
- m_scanTimer.stop();
- if (s.state == HB_STATE_SCANDONE) {
- hb_list_t *list = hb_get_titles( m_hbHandle );
- if (!hb_list_count(list))
- qDebug() << "No valid source found for clip";
- else {
- hb_title_t *title = (hb_title_t *) hb_list_item( list, 0 );
- VideoClip clip = VideoClip::createFromTitle(m_currentClipPath, title);
- emit clipScanned(clip);
- }
- }
- QTimer::singleShot(500, this, SLOT(scanNextClip()));
- }
- */
- }
- void ClipScanner::scanNextClip()
- {
- if (m_clipsToScan.isEmpty()) {
- m_currentClipPath = QString();
- m_scanTimer.stop();
- } else {
- m_currentClipPath = m_clipsToScan.takeFirst();
- hb_scan( m_hbHandle, m_currentClipPath.toUtf8(), 1, 0, 0 );
- m_scanTimer.start(SCAN_TIMEOUT);
- }
- }
Add Comment
Please, Sign In to add comment