/** * @brief ConcertFilesWidget::ConcertFilesWidget * @param parent */ ConcertFilesWidget::ConcertFilesWidget(QWidget *parent) : QWidget(parent), ui(new Ui::ConcertFilesWidget) { m_instance = this; ui->setupUi(this); ui->statusLabel->setText(tr("%n concerts", "", 0)); #ifdef Q_OS_MAC QFont font = ui->files->font(); font.setPointSize(font.pointSize()-2); ui->files->setFont(font); #endif #ifdef Q_OS_WIN32 ui->verticalLayout->setContentsMargins(0, 0, 0, 1); #endif m_mouseIsIn = false; m_alphaList = new AlphabeticalList(this); m_lastConcert = 0; m_concertProxyModel = new ConcertProxyModel(this); m_concertProxyModel->setSourceModel(Manager::instance()->concertModel()); m_concertProxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive); m_concertProxyModel->setDynamicSortFilter(true); ui->files->setModel(m_concertProxyModel); ui->files->sortByColumn(0); QAction *actionMarkAsWatched = new QAction(tr("Mark as watched"), this); QAction *actionMarkAsUnwatched = new QAction(tr("Mark as unwatched"), this); QAction *actionLoadStreamDetails = new QAction(tr("Load Stream Details"), this); QAction *actionMarkForSync = new QAction(tr("Add to Synchronization Queue"), this); QAction *actionUnmarkForSync = new QAction(tr("Remove from Synchronization Queue"), this); QAction *actionOpenFolder = new QAction(tr("Open Concert Folder"), this); m_contextMenu = new QMenu(ui->files); m_contextMenu->addAction(actionMarkAsWatched); m_contextMenu->addAction(actionMarkAsUnwatched); m_contextMenu->addSeparator(); m_contextMenu->addAction(actionLoadStreamDetails); m_contextMenu->addSeparator(); m_contextMenu->addAction(actionMarkForSync); m_contextMenu->addAction(actionUnmarkForSync); m_contextMenu->addSeparator(); m_contextMenu->addAction(actionOpenFolder); connect(actionMarkAsWatched, SIGNAL(triggered()), this, SLOT(markAsWatched())); connect(actionMarkAsUnwatched, SIGNAL(triggered()), this, SLOT(markAsUnwatched())); connect(actionLoadStreamDetails, SIGNAL(triggered()), this, SLOT(loadStreamDetails())); connect(actionMarkForSync, SIGNAL(triggered()), this, SLOT(markForSync())); connect(actionUnmarkForSync, SIGNAL(triggered()), this, SLOT(unmarkForSync())); connect(actionOpenFolder, SIGNAL(triggered()), this, SLOT(openFolder())); connect(ui->files, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showContextMenu(QPoint))); connect(ui->files->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(itemActivated(QModelIndex, QModelIndex))); connect(ui->files->model(), SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(setAlphaListData())); connect(ui->files, SIGNAL(sigLeftEdge(bool)), this, SLOT(onLeftEdge(bool))); connect(m_alphaList, SIGNAL(sigAlphaClicked(QString)), this, SLOT(scrollToAlpha(QString))); connect(m_concertProxyModel, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SLOT(onViewUpdated())); connect(m_concertProxyModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(onViewUpdated())); }
/** * @brief FilesWidget::FilesWidget * @param parent */ FilesWidget::FilesWidget(QWidget *parent) : QWidget(parent), ui(new Ui::FilesWidget) { m_instance = this; ui->setupUi(this); ui->statusLabel->setText(tr("%n movies", "", 0)); #ifdef Q_OS_MAC QFont font = ui->files->font(); font.setPointSize(font.pointSize()-2); ui->files->setFont(font); #endif #ifdef Q_OS_WIN32 ui->verticalLayout->setContentsMargins(0, 0, 0, 1); #endif m_lastMovie = 0; m_mouseIsIn = false; m_movieProxyModel = new MovieProxyModel(this); m_movieProxyModel->setSourceModel(Manager::instance()->movieModel()); m_movieProxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive); m_movieProxyModel->setDynamicSortFilter(true); ui->files->setModel(m_movieProxyModel); for (int i=1, n=ui->files->model()->columnCount() ; i<n ; ++i) { ui->files->setColumnWidth(i, 24); ui->files->setColumnHidden(i, true); } ui->files->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch); ui->files->setIconSize(QSize(12, 12)); foreach (const MediaStatusColumns &column, Settings::instance()->mediaStatusColumns()) ui->files->setColumnHidden(MovieModel::mediaStatusToColumn(column), false); m_alphaList = new AlphabeticalList(this, ui->files); m_baseLabelCss = ui->sortByYear->styleSheet(); m_activeLabelCss = ui->sortByNew->styleSheet(); QMenu *mediaStatusColumnsMenu = new QMenu(tr("Media Status Columns"), ui->files); for (int i=MediaStatusFirst, n=MediaStatusLast ; i<=n ; ++i) { QAction *action = new QAction(MovieModel::mediaStatusToText(static_cast<MediaStatusColumns>(i)), this); action->setProperty("mediaStatusColumn", i); action->setCheckable(true); action->setChecked(Settings::instance()->mediaStatusColumns().contains(static_cast<MediaStatusColumns>(i))); connect(action, SIGNAL(triggered()), this, SLOT(onActionMediaStatusColumn())); mediaStatusColumnsMenu->addAction(action); } QMenu *labelsMenu = new QMenu(tr("Label"), ui->files); QMapIterator<int, QString> it(Helper::instance()->labels()); while (it.hasNext()) { it.next(); QAction *action = new QAction(it.value(), this); action->setIcon(Helper::instance()->iconForLabel(it.key())); action->setProperty("color", it.key()); connect(action, SIGNAL(triggered()), this, SLOT(onLabel())); labelsMenu->addAction(action); } QAction *actionMultiScrape = new QAction(tr("Load Information"), this); QAction *actionMarkAsWatched = new QAction(tr("Mark as watched"), this); QAction *actionMarkAsUnwatched = new QAction(tr("Mark as unwatched"), this); QAction *actionLoadStreamDetails = new QAction(tr("Load Stream Details"), this); QAction *actionMarkForSync = new QAction(tr("Add to Synchronization Queue"), this); QAction *actionUnmarkForSync = new QAction(tr("Remove from Synchronization Queue"), this); QAction *actionOpenFolder = new QAction(tr("Open Movie Folder"), this); m_contextMenu = new QMenu(ui->files); m_contextMenu->addAction(actionMultiScrape); m_contextMenu->addSeparator(); m_contextMenu->addAction(actionMarkAsWatched); m_contextMenu->addAction(actionMarkAsUnwatched); m_contextMenu->addSeparator(); m_contextMenu->addAction(actionLoadStreamDetails); m_contextMenu->addSeparator(); m_contextMenu->addAction(actionMarkForSync); m_contextMenu->addAction(actionUnmarkForSync); m_contextMenu->addSeparator(); m_contextMenu->addAction(actionOpenFolder); m_contextMenu->addSeparator(); m_contextMenu->addMenu(labelsMenu); m_contextMenu->addMenu(mediaStatusColumnsMenu); connect(actionMultiScrape, SIGNAL(triggered()), this, SLOT(multiScrape())); connect(actionMarkAsWatched, SIGNAL(triggered()), this, SLOT(markAsWatched())); connect(actionMarkAsUnwatched, SIGNAL(triggered()), this, SLOT(markAsUnwatched())); connect(actionLoadStreamDetails, SIGNAL(triggered()), this, SLOT(loadStreamDetails())); connect(actionMarkForSync, SIGNAL(triggered()), this, SLOT(markForSync())); connect(actionUnmarkForSync, SIGNAL(triggered()), this, SLOT(unmarkForSync())); connect(actionOpenFolder, SIGNAL(triggered()), this, SLOT(openFolder())); connect(ui->files, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(showContextMenu(QPoint))); connect(ui->files->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(itemActivated(QModelIndex, QModelIndex))); connect(ui->files->model(), SIGNAL(dataChanged(QModelIndex,QModelIndex)), this, SLOT(setAlphaListData())); connect(ui->files, SIGNAL(sigLeftEdge(bool)), this, SLOT(onLeftEdge(bool))); connect(ui->files, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(playMovie(QModelIndex))); connect(m_alphaList, SIGNAL(sigAlphaClicked(QString)), this, SLOT(scrollToAlpha(QString))); connect(ui->sortByNew, SIGNAL(clicked()), this, SLOT(onSortByNew())); connect(ui->sortByName, SIGNAL(clicked()), this, SLOT(onSortByName())); connect(ui->sortByLastAdded, SIGNAL(clicked()), this, SLOT(onSortByAdded())); connect(ui->sortBySeen, SIGNAL(clicked()), this, SLOT(onSortBySeen())); connect(ui->sortByYear, SIGNAL(clicked()), this, SLOT(onSortByYear())); connect(m_movieProxyModel, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SLOT(onViewUpdated())); connect(m_movieProxyModel, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(onViewUpdated())); }