void MediaView::initialize() { MainWindow *mainWindow = MainWindow::instance(); QBoxLayout *layout = new QVBoxLayout(this); layout->setMargin(0); splitter = new MiniSplitter(); layout->addWidget(splitter); playlistView = new PlaylistView(); playlistView->setParent(this); connect(playlistView, SIGNAL(activated(const QModelIndex &)), SLOT(onItemActivated(const QModelIndex &))); playlistModel = new PlaylistModel(); connect(playlistModel, &PlaylistModel::activeVideoChanged, this, &MediaView::activeVideoChanged); // needed to restore the selection after dragndrop connect(playlistModel, SIGNAL(needSelectionFor(QVector<Video *>)), SLOT(selectVideos(QVector<Video *>))); playlistView->setModel(playlistModel); connect(playlistView->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), SLOT(selectionChanged(const QItemSelection &, const QItemSelection &))); connect(playlistView, SIGNAL(authorPushed(QModelIndex)), SLOT(onAuthorPushed(QModelIndex))); sidebar = new SidebarWidget(this); sidebar->setPlaylist(playlistView); sidebar->setMaximumWidth(playlistView->minimumWidth() * 3); connect(sidebar->getRefineSearchWidget(), SIGNAL(searchRefined()), SLOT(searchAgain())); connect(playlistModel, SIGNAL(haveSuggestions(const QStringList &)), sidebar, SLOT(showSuggestions(const QStringList &))); connect(sidebar, SIGNAL(suggestionAccepted(QString)), mainWindow, SLOT(search(QString))); splitter->addWidget(sidebar); videoAreaWidget = new VideoArea(this); videoAreaWidget->setListModel(playlistModel); loadingWidget = new LoadingWidget(this); videoAreaWidget->setLoadingWidget(loadingWidget); splitter->addWidget(videoAreaWidget); // restore splitter state QSettings settings; if (settings.contains("splitter")) splitter->restoreState(settings.value("splitter").toByteArray()); else { int sidebarDefaultWidth = 180; splitter->setSizes(QList<int>() << sidebarDefaultWidth << splitter->size().width() - sidebarDefaultWidth); } splitter->setChildrenCollapsible(false); connect(splitter, SIGNAL(splitterMoved(int, int)), SLOT(adjustWindowSize())); errorTimer = new QTimer(this); errorTimer->setSingleShot(true); errorTimer->setInterval(3000); connect(errorTimer, SIGNAL(timeout()), SLOT(skipVideo())); #ifdef APP_ACTIVATION demoTimer = new QTimer(this); demoTimer->setSingleShot(true); connect(demoTimer, &QTimer::timeout, mainWindow, &MainWindow::showActivationView, Qt::QueuedConnection); #endif connect(videoAreaWidget, SIGNAL(doubleClicked()), mainWindow->getAction("fullscreen"), SLOT(trigger())); QAction *refineSearchAction = mainWindow->getAction("refineSearch"); connect(refineSearchAction, SIGNAL(toggled(bool)), sidebar, SLOT(toggleRefineSearch(bool))); const QVector<const char *> videoActionNames = { #ifdef APP_SNAPSHOT "snapshot", #endif "webpage", "pagelink", "videolink", "openInBrowser", "findVideoParts", "skip", "previous", "stopafterthis", "relatedVideos", "refineSearch", "twitter", "facebook", "email"}; currentVideoActions.reserve(videoActionNames.size()); for (auto *name : videoActionNames) { currentVideoActions.append(mainWindow->getAction(name)); } }
void MediaView::initialize() { QBoxLayout *layout = new QVBoxLayout(this); layout->setMargin(0); splitter = new MiniSplitter(); playlistView = new PlaylistView(this); // respond to the user doubleclicking a playlist item connect(playlistView, SIGNAL(activated(const QModelIndex &)), SLOT(itemActivated(const QModelIndex &))); playlistModel = new PlaylistModel(); connect(playlistModel, SIGNAL(activeRowChanged(int)), SLOT(activeRowChanged(int))); // needed to restore the selection after dragndrop connect(playlistModel, SIGNAL(needSelectionFor(QList<Video*>)), SLOT(selectVideos(QList<Video*>))); playlistView->setModel(playlistModel); connect(playlistView->selectionModel(), SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &)), SLOT(selectionChanged(const QItemSelection &, const QItemSelection &))); connect(playlistView, SIGNAL(authorPushed(QModelIndex)), SLOT(authorPushed(QModelIndex))); sidebar = new SidebarWidget(this); sidebar->setPlaylist(playlistView); connect(sidebar->getRefineSearchWidget(), SIGNAL(searchRefined()), SLOT(searchAgain())); connect(playlistModel, SIGNAL(haveSuggestions(const QStringList &)), sidebar, SLOT(showSuggestions(const QStringList &))); connect(sidebar, SIGNAL(suggestionAccepted(QString)), MainWindow::instance(), SLOT(search(QString))); splitter->addWidget(sidebar); videoAreaWidget = new VideoAreaWidget(this); // videoAreaWidget->setMinimumSize(320,240); #ifdef APP_PHONON videoWidget = new Phonon::VideoWidget(this); videoAreaWidget->setVideoWidget(videoWidget); #endif videoAreaWidget->setListModel(playlistModel); loadingWidget = new LoadingWidget(this); videoAreaWidget->setLoadingWidget(loadingWidget); splitter->addWidget(videoAreaWidget); splitter->setStretchFactor(0, 0); splitter->setStretchFactor(1, 8); // restore splitter state QSettings settings; splitter->restoreState(settings.value("splitter").toByteArray()); splitter->setChildrenCollapsible(false); connect(splitter, SIGNAL(splitterMoved(int,int)), SLOT(maybeAdjustWindowSize())); layout->addWidget(splitter); errorTimer = new QTimer(this); errorTimer->setSingleShot(true); errorTimer->setInterval(3000); connect(errorTimer, SIGNAL(timeout()), SLOT(skipVideo())); #ifdef APP_ACTIVATION demoTimer = new QTimer(this); demoTimer->setSingleShot(true); connect(demoTimer, SIGNAL(timeout()), SLOT(demoMessage())); #endif connect(videoAreaWidget, SIGNAL(doubleClicked()), The::globalActions()->value("fullscreen"), SLOT(trigger())); QAction* refineSearchAction = The::globalActions()->value("refine-search"); connect(refineSearchAction, SIGNAL(toggled(bool)), sidebar, SLOT(toggleRefineSearch(bool))); currentVideoActions << The::globalActions()->value("webpage") << The::globalActions()->value("pagelink") << The::globalActions()->value("videolink") << The::globalActions()->value("open-in-browser") #ifdef APP_SNAPSHOT << The::globalActions()->value("snapshot") #endif << The::globalActions()->value("findVideoParts") << The::globalActions()->value("skip") << The::globalActions()->value("previous") << The::globalActions()->value("stopafterthis") << The::globalActions()->value("related-videos") << The::globalActions()->value("refine-search") << The::globalActions()->value("twitter") << The::globalActions()->value("facebook") << The::globalActions()->value("buffer") << The::globalActions()->value("email"); #ifndef APP_PHONON_SEEK QSlider *slider = MainWindow::instance()->getSlider(); connect(slider, SIGNAL(valueChanged(int)), SLOT(sliderMoved(int))); #endif }