setSelectionMode(QAbstractItemView::ExtendedSelection);
setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Expanding);
+
+#if QT_VERSION >= 0x050000 && defined(APP_MAC)
+ setMinimumWidth(160);
+#else
setMinimumWidth(175);
+#endif
// dragndrop
setDragEnabled(true);
}
void PlaylistView::itemEntered(const QModelIndex &index) {
- PlaylistModel *listModel = dynamic_cast<PlaylistModel *>(model());
+ PlaylistModel *listModel = qobject_cast<PlaylistModel *>(model());
if (listModel) listModel->setHoveredRow(index.row());
}
-void PlaylistView::leaveEvent(QEvent * /* event */) {
- PlaylistModel *listModel = dynamic_cast<PlaylistModel *>(model());
+void PlaylistView::leaveEvent(QEvent *event) {
+ QListView::leaveEvent(event);
+ PlaylistModel *listModel = qobject_cast<PlaylistModel *>(model());
if (listModel) listModel->clearHover();
}
void PlaylistView::mouseMoveEvent(QMouseEvent *event) {
- QListView::mouseMoveEvent(event);
-
if (isHoveringThumbnail(event)) {
setCursor(Qt::PointingHandCursor);
} else if (isShowMoreItem(indexAt(event->pos()))) {
QMetaObject::invokeMethod(model(), "exitAuthorHover");
unsetCursor();
}
+ QListView::mouseMoveEvent(event);
}
void PlaylistView::mousePressEvent(QMouseEvent *event) {
if (event->button() == Qt::LeftButton) {
- if (isHoveringThumbnail(event)) {
- event->accept();
- } else if (isHoveringAuthor(event)) {
+ if (isHoveringAuthor(event)) {
QMetaObject::invokeMethod(model(), "enterAuthorPressed");
- event->ignore();
- } else QListView::mousePressEvent(event);
- } else QListView::mousePressEvent(event);
+ }
+ }
+ QListView::mousePressEvent(event);
}
void PlaylistView::mouseReleaseEvent(QMouseEvent *event) {
} else if (isHoveringAuthor(event)) {
emit authorPushed(index);
} else if (isShowMoreItem(index)) {
- PlaylistModel *listModel = dynamic_cast<PlaylistModel *>(model());
+ PlaylistModel *listModel = qobject_cast<PlaylistModel *>(model());
listModel->searchMore();
unsetCursor();
}
-
- } else {
- QListView::mousePressEvent(event);
}
+ QListView::mouseReleaseEvent(event);
}
bool PlaylistView::isHoveringAuthor(QMouseEvent *event) {
const QRect itemRect = visualRect(itemIndex);
// qDebug() << " itemRect.x()" << itemRect.x();
- PlaylistItemDelegate *delegate = dynamic_cast<PlaylistItemDelegate *>(itemDelegate());
+ PlaylistItemDelegate *delegate = qobject_cast<PlaylistItemDelegate *>(itemDelegate());
if (!delegate) return false;
QRect rect = delegate->authorRect(itemIndex);
return model()->rowCount() > 1 &&
model()->rowCount() == index.row() + 1;
}
-
-void PlaylistView::paintEvent(QPaintEvent *event) {
- QListView::paintEvent(event);
- PainterUtils::topShadow(viewport());
-}