int VideoPlayerTool::setWorkshopMovie(WorkshopMovie * wm) { if(!wm) return 0; m_pWorkshopMovie = wm; // first load file int ret = setFile((char *)wm->getFilePath(), 0); QList<t_movie_pos> bmklist = m_pWorkshopMovie->getListOfBookmarks(); QList<t_movie_pos>::iterator it; for(it = bmklist.begin(); it!=bmklist.end(); it++) { appendBookmark( (*it) ); } return ret; }
void VideoPlayerTool::slotNewBookmarkList(QList<video_bookmark_t> list) { // clear actions QList<video_bookmark_t>::iterator it; for(it = m_listBookmarks.begin(); it != m_listBookmarks.end(); it++) { // delete action menuBookmarks->removeAction((*it).pAction); } m_listBookmarks.clear(); QList<t_movie_pos> bmklist; for(it = list.begin(); it != list.end(); it++) { appendBookmark((*it).movie_pos); bmklist.append((*it).movie_pos); } // Save settings if(m_pWorkshopMovie) { m_pWorkshopMovie->setListOfBookmarks(bmklist); emit signalSaveSettings(); } }
/** Creates a new BTMimeData. * Creates a new bookmark item and appends it to the list. */ BTMimeData::BTMimeData(QString module, QString key, QString description) { appendBookmark(module, key, description); }
void VideoPlayerTool::on_menuBookmarks_triggered(QAction * pAction) { if(!m_fileVA) return; // Add a bookmark if(actAddBookmark == pAction) { fprintf(stderr, "[VidPlay]::%s:%d : create bookmark for : pos=%llu\n", __func__, __LINE__, m_fileVA->getPrevAbsolutePosition()); appendBookmark(m_fileVA->getMoviePosition()); if(m_pWorkshopMovie) { QList<t_movie_pos> bmklist = m_pWorkshopMovie->getListOfBookmarks(); bmklist.append(m_fileVA->getMoviePosition()); m_pWorkshopMovie->setListOfBookmarks(bmklist); emit signalSaveSettings(); } } else if(actEditBookmark == pAction) {// Edit a bookmark m_editBookmarksForm = new MovieBookmarkForm(NULL); if(pWorkspace) { ((QWorkspace *)pWorkspace)->addWindow((QWidget *)m_editBookmarksForm); } m_editBookmarksForm->setBookmarkList(m_listBookmarks); connect(m_editBookmarksForm, SIGNAL(signalNewBookmarkList(QList<video_bookmark_t>)), this, SLOT(slotNewBookmarkList(QList<video_bookmark_t>))); // Set bookmarks m_editBookmarksForm->show(); } else if (actPlayToBookmark == pAction) { // Play to next bookmark if(!m_fileVA) { slotRewindStartMovie(); } //find the next bookmark unsigned long long curpos = m_fileVA->getPrevAbsolutePosition(); m_nextBookmarkPos = curpos; QList<video_bookmark_t>::iterator i; // find the next bookmark for (i = m_listBookmarks.begin(); i != m_listBookmarks.end(); ++i) { if (curpos == m_nextBookmarkPos // first iteration && i->movie_pos.prevAbsPosition > curpos // bookmark # i is after current position ) { // we are at m_nextBookmarkPos = i->movie_pos.prevAbsPosition; fprintf(stderr, "[VidPlayer]::%s:%d : curpos=%llu => next = %llu\n", __func__,__LINE__, curpos, m_nextBookmarkPos); break; // } // else, since the bookmarks aren't ordered, find if there is another one before m_nextBookmarkPos else if (i->movie_pos.prevAbsPosition > curpos // bookmark # i is after current position && i->movie_pos.prevAbsPosition < m_nextBookmarkPos // and before the curent next bookmark ) { m_nextBookmarkPos = i->movie_pos.prevAbsPosition; fprintf(stderr, "[VidPlayer]::%s:%d : curpos=%llu => next = %llu\n", __func__,__LINE__, curpos, m_nextBookmarkPos); } } if (curpos >= m_nextBookmarkPos) { return; } connect(playTimer, SIGNAL(timeout()), this, SLOT(slotBookmarkReached())); slotPlayPauseMovie(); } else { // We activated one bookmark, go to this position QList<video_bookmark_t>::iterator i; for (i = m_listBookmarks.begin(); i != m_listBookmarks.end(); ++i) { video_bookmark_t sel_bookmark = *i; if(sel_bookmark.pAction == pAction) { // select an existing bookmark fprintf(stderr, "[VidPlay]::%s:%d : selected bookmark idx=%d => pos=%llu\n", __func__, __LINE__, sel_bookmark.index, sel_bookmark.movie_pos.prevAbsPosition); if(sel_bookmark.movie_pos.nbFramesSinceKeyFrame <= 1) { m_fileVA->setAbsolutePosition(sel_bookmark.movie_pos.prevAbsPosition); // display slotStepMovie(); } // else go some frames before else { m_fileVA->setAbsolutePosition(sel_bookmark.movie_pos.prevKeyFramePosition); fprintf(stderr, "[VidPlay]::%s:%d : skip %d frames to reach the bookmark frame\n", __func__, __LINE__, sel_bookmark.movie_pos.nbFramesSinceKeyFrame-1); // display for(int nb = 0; nb<sel_bookmark.movie_pos.nbFramesSinceKeyFrame-1; nb++) { m_fileVA->GetNextFrame(); } // Display & process last one fprintf(stderr, "[VidPlay]::%s:%d : Display & process last one\n", __func__, __LINE__); slotStepMovie(); fprintf(stderr, "[VidPlay]::%s:%d : jump done & processed\n", __func__, __LINE__); } //detailsView->setWorkshopImage(detailsImage); return; } } } }