File indexing completed on 2024-04-28 04:21:22
0001 // SPDX-FileCopyrightText: 2003-2022 Jesper K. Pedersen <blackie@kde.org> 0002 // 0003 // SPDX-License-Identifier: GPL-2.0-or-later 0004 0005 #include "MouseTrackingInteraction.h" 0006 0007 #include "ThumbnailModel.h" 0008 #include "ThumbnailWidget.h" 0009 #include "VideoThumbnailCycler.h" 0010 0011 #include <kpabase/FileName.h> 0012 0013 #include <QMouseEvent> 0014 0015 ThumbnailView::MouseTrackingInteraction::MouseTrackingInteraction(ThumbnailFactory *factory) 0016 : ThumbnailComponent(factory) 0017 , m_cursorWasAtStackIcon(false) 0018 { 0019 } 0020 0021 bool ThumbnailView::MouseTrackingInteraction::mouseMoveEvent(QMouseEvent *event) 0022 { 0023 updateStackingIndication(event); 0024 handleCursorOverNewIcon(); 0025 0026 if ((event->modifiers() & Qt::ControlModifier) != 0 && widget()->isItemUnderCursorSelected()) 0027 VideoThumbnailCycler::instance()->stopCycle(); 0028 else 0029 VideoThumbnailCycler::instance()->setActive(widget()->mediaIdUnderCursor()); 0030 return false; 0031 } 0032 0033 void ThumbnailView::MouseTrackingInteraction::updateStackingIndication(QMouseEvent *event) 0034 { 0035 bool interestingArea = widget()->isMouseOverStackIndicator(event->pos()); 0036 if (interestingArea && !m_cursorWasAtStackIcon) { 0037 widget()->setCursor(Qt::PointingHandCursor); 0038 m_cursorWasAtStackIcon = true; 0039 } else if (!interestingArea && m_cursorWasAtStackIcon) { 0040 widget()->unsetCursor(); 0041 m_cursorWasAtStackIcon = false; 0042 } 0043 } 0044 0045 void ThumbnailView::MouseTrackingInteraction::handleCursorOverNewIcon() 0046 { 0047 static DB::FileName lastFileNameUnderCursor; 0048 const DB::FileName fileName = widget()->mediaIdUnderCursor(); 0049 0050 if (fileName != lastFileNameUnderCursor) { 0051 if (!fileName.isNull() && !lastFileNameUnderCursor.isNull()) { 0052 Q_EMIT fileIdUnderCursorChanged(fileName); 0053 model()->updateCell(lastFileNameUnderCursor); 0054 model()->updateCell(fileName); 0055 } 0056 lastFileNameUnderCursor = fileName; 0057 } 0058 } 0059 // vi:expandtab:tabstop=4 shiftwidth=4: 0060 0061 #include "moc_MouseTrackingInteraction.cpp"