File indexing completed on 2025-01-05 03:59:25
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 // 0003 // SPDX-FileCopyrightText: 2013 Mohammed Nafees <nafees.technocool@gmail.com> 0004 // 0005 0006 #include "NavigationButton.h" 0007 0008 #include <QPainter> 0009 #include <QMouseEvent> 0010 0011 namespace Marble 0012 { 0013 0014 NavigationButton::NavigationButton( QWidget *parent ) 0015 : QAbstractButton( parent ), 0016 m_iconMode( QIcon::Normal ) 0017 { 0018 // nothing to do 0019 } 0020 0021 void NavigationButton::mousePressEvent ( QMouseEvent *mouseEvent ) 0022 { 0023 if ( isEnabled() ) { 0024 if ( mouseEvent->button() == Qt::LeftButton ) { 0025 m_iconMode = QIcon::Selected; 0026 } 0027 } 0028 Q_EMIT repaintNeeded(); 0029 } 0030 0031 void NavigationButton::mouseReleaseEvent ( QMouseEvent * ) 0032 { 0033 if ( isEnabled() ) { 0034 m_iconMode = QIcon::Active; 0035 Q_EMIT clicked(); 0036 } 0037 Q_EMIT repaintNeeded(); 0038 } 0039 0040 #if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) 0041 0042 void NavigationButton::enterEvent(QEnterEvent *) 0043 0044 #else 0045 0046 void NavigationButton::enterEvent(QEvent *) 0047 0048 #endif 0049 0050 { 0051 if ( isEnabled() ) { 0052 m_iconMode = QIcon::Active; 0053 } 0054 Q_EMIT repaintNeeded(); 0055 } 0056 0057 void NavigationButton::leaveEvent( QEvent * ) 0058 { 0059 if ( isEnabled() ) { 0060 m_iconMode = QIcon::Normal; 0061 } 0062 Q_EMIT repaintNeeded(); 0063 } 0064 0065 void NavigationButton::changeEvent( QEvent *e ) 0066 { 0067 if ( e->type() == QEvent::EnabledChange ) { 0068 m_iconMode = isEnabled() ? QIcon::Normal : QIcon::Disabled; 0069 } 0070 Q_EMIT repaintNeeded(); 0071 } 0072 0073 void NavigationButton::paintEvent( QPaintEvent * ) 0074 { 0075 QPainter painter( this ); 0076 painter.drawPixmap( 0, 0, icon().pixmap( iconSize(), m_iconMode ) ); 0077 } 0078 0079 } 0080 0081 #include "moc_NavigationButton.cpp"