コード例 #1
0
ファイル: videoplayertool.cpp プロジェクト: cseyve/piaf
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;
}
コード例 #2
0
ファイル: videoplayertool.cpp プロジェクト: cseyve/piaf
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();
	}
}
コード例 #3
0
/** 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);
}
コード例 #4
0
ファイル: videoplayertool.cpp プロジェクト: cseyve/piaf
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;
			}
		}
	}
}