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"