diff --git a/src/libtomahawk/widgets/CaptionLabel.cpp b/src/libtomahawk/widgets/CaptionLabel.cpp new file mode 100644 index 000000000..878af27b4 --- /dev/null +++ b/src/libtomahawk/widgets/CaptionLabel.cpp @@ -0,0 +1,94 @@ +/* === This file is part of Tomahawk Player - === + * + * Copyright 2014, Christian Muehlhaeuser + * + * Tomahawk is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Tomahawk is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Tomahawk. If not, see . + */ + +#include "CaptionLabel.h" + +#include + +#include "utils/Logger.h" +#include "utils/TomahawkStyle.h" +#include "utils/TomahawkUtilsGui.h" + + +CaptionLabel::CaptionLabel( QWidget* parent ) + : ClickableLabel( parent ) + , m_parent( parent ) + , m_showCloseButton( false ) +{ + QFont f( "Roboto" ); + f.setPointSize( 10 ); + setFont( f ); + + setFixedHeight( TomahawkUtils::defaultFontHeight() * 1.4 ); + setMouseTracking( true ); + + setShowCloseButton( m_showCloseButton ); +} + + +CaptionLabel::~CaptionLabel() +{ +} + + +QSize +CaptionLabel::sizeHint() const +{ + return QLabel::sizeHint(); +} + + +void +CaptionLabel::paintEvent( QPaintEvent* /* event */ ) +{ + QRect r = contentsRect(); + + QPainter p( this ); + p.setPen( Qt::black ); + p.setBrush( Qt::black ); + + QTextOption to( alignment() ); + p.setOpacity( 0.15 ); + p.drawText( r.adjusted( 0, 0, 0, -8 ), text().toUpper(), to ); + + if ( m_showCloseButton ) + { + to.setAlignment( alignment() | Qt::AlignRight ); + p.setOpacity( 0.15 ); + p.drawText( r.adjusted( 0, 0, 0, -8 ), tr( "Close" ).toUpper(), to ); + } + + QRect playBar = r.adjusted( 0, r.height() - 2, 0, 0 ); + playBar.setHeight( 2 ); + p.drawRect( playBar ); +} + + +void +CaptionLabel::setShowCloseButton( bool b ) +{ + m_showCloseButton = b; + if ( m_showCloseButton ) + { + setCursor( Qt::PointingHandCursor ); + } + else + { + setCursor( Qt::ArrowCursor ); + } +} diff --git a/src/libtomahawk/widgets/CaptionLabel.h b/src/libtomahawk/widgets/CaptionLabel.h new file mode 100644 index 000000000..e1cbef973 --- /dev/null +++ b/src/libtomahawk/widgets/CaptionLabel.h @@ -0,0 +1,56 @@ +/* === This file is part of Tomahawk Player - === + * + * Copyright 2014, Christian Muehlhaeuser + * + * Tomahawk is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Tomahawk is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Tomahawk. If not, see . + */ + +#ifndef CAPTIONLABEL_H +#define CAPTIONLABEL_H + +#include "ClickableLabel.h" +#include "DllMacro.h" + +/** + * \class CaptionLabel + * \brief A styled caption for use in pages, e.g. above playlists. + */ +class DLLEXPORT CaptionLabel : public ClickableLabel +{ + Q_OBJECT + +public: + CaptionLabel( QWidget* parent ); + ~CaptionLabel(); + + QSize minimumSizeHint() const { return sizeHint(); } + QSize sizeHint() const; + + static int defaultFontSize(); + +public slots: + bool showCloseButton() const { return m_showCloseButton; } + void setShowCloseButton( bool b ); + +protected: + // void changeEvent( QEvent* e ); + void paintEvent( QPaintEvent* event ); + +private: + QWidget* m_parent; + + bool m_showCloseButton; +}; + +#endif // CAPTIONLABEL_H