+
+/* 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 ) );
+}