m_activeVideo = 0;
m_activeRow = -1;
skip = 1;
+
+ hoveredRow = -1;
+ authorHovered = false;
+ authorPressed = false;
}
ListModel::~ListModel() {
return video == m_activeVideo;
case Qt::DisplayRole:
return video->title();
+ case HoveredItemRole:
+ return hoveredRow == index.row();
+ case AuthorHoveredRole:
+ return authorHovered;
+ case AuthorPressedRole:
+ return authorPressed;
}
return QVariant();
return -1;
}
+int ListModel::previousRow() const {
+ int prevRow = m_activeRow - 1;
+ if (rowExists(prevRow))
+ return prevRow;
+ return -1;
+}
+
Video* ListModel::videoAt( int row ) const {
if ( rowExists( row ) )
return videos.at( row );
// first result!
if (videos.size() == 1) {
- // autoplay
- setActiveRow(0);
+
+ // manualplay
+ QSettings settings;
+ if (!settings.value("manualplay", false).toBool())
+ setActiveRow(0);
// save keyword
QString query = searchParams->keywords();
// Save the video title
query += "|" + videos.first()->title();
}
- QSettings settings;
QStringList keywords = settings.value(recentKeywordsKey).toStringList();
keywords.removeAll(query);
keywords.prepend(query);
emit needSelectionFor(movedVideos);
}
+
+/* row hovering */
+
+void ListModel::setHoveredRow(int row) {
+ int oldRow = hoveredRow;
+ hoveredRow = row;
+ emit dataChanged( createIndex( oldRow, 0 ), createIndex( oldRow, columnCount() - 1 ) );
+ emit dataChanged( createIndex( hoveredRow, 0 ), createIndex( hoveredRow, columnCount() - 1 ) );
+}
+
+void ListModel::clearHover() {
+ emit dataChanged( createIndex( hoveredRow, 0 ), createIndex( hoveredRow, columnCount() - 1 ) );
+ hoveredRow = -1;
+}
+
+/* clickable author */
+
+void ListModel::enterAuthorHover() {
+ if (authorHovered) return;
+ authorHovered = true;
+ updateAuthor();
+}
+
+void ListModel::exitAuthorHover() {
+ if (!authorHovered) return;
+ authorHovered = false;
+ updateAuthor();
+ setHoveredRow(hoveredRow);
+}
+
+void ListModel::enterAuthorPressed() {
+ if (authorPressed) return;
+ authorPressed = true;
+ updateAuthor();
+}
+
+void ListModel::exitAuthorPressed() {
+ if (!authorPressed) return;
+ authorPressed = false;
+ updateAuthor();
+}
+
+void ListModel::updateAuthor() {
+ emit dataChanged( createIndex( hoveredRow, 0 ), createIndex( hoveredRow, columnCount() - 1 ) );
+}