mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-06 14:16:32 +02:00
Make SourceTreePopupDialog more consistent.
This commit is contained in:
@@ -18,6 +18,8 @@
|
|||||||
|
|
||||||
#include "SourceTreePopupDialog.h"
|
#include "SourceTreePopupDialog.h"
|
||||||
|
|
||||||
|
#include "utils/TomahawkUtilsGui.h"
|
||||||
|
|
||||||
#include <QPaintEvent>
|
#include <QPaintEvent>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QDialogButtonBox>
|
#include <QDialogButtonBox>
|
||||||
@@ -47,10 +49,20 @@ SourceTreePopupDialog::SourceTreePopupDialog()
|
|||||||
setAutoFillBackground( false );
|
setAutoFillBackground( false );
|
||||||
setAttribute( Qt::WA_TranslucentBackground, true );
|
setAttribute( Qt::WA_TranslucentBackground, true );
|
||||||
|
|
||||||
setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed );
|
//setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Fixed );
|
||||||
|
|
||||||
|
|
||||||
|
m_title = new QLabel( this );
|
||||||
|
QFont titleFont = m_title->font();
|
||||||
|
titleFont.setBold( true );
|
||||||
|
m_title->setStyleSheet( "color: rgb( 99, 113, 128 );" );
|
||||||
|
titleFont.setPointSize( TomahawkUtils::defaultFontSize() + 1 );
|
||||||
|
m_title->setFont( titleFont );
|
||||||
|
m_title->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred );
|
||||||
|
|
||||||
m_label = new QLabel( this );
|
m_label = new QLabel( this );
|
||||||
m_buttons = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this );
|
m_buttons = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel, Qt::Horizontal, this );
|
||||||
|
//TODO: get some nice icons for this
|
||||||
m_buttons->button( QDialogButtonBox::Ok )->setIcon( QIcon() );
|
m_buttons->button( QDialogButtonBox::Ok )->setIcon( QIcon() );
|
||||||
m_buttons->button( QDialogButtonBox::Cancel )->setIcon( QIcon() );
|
m_buttons->button( QDialogButtonBox::Cancel )->setIcon( QIcon() );
|
||||||
|
|
||||||
@@ -59,10 +71,24 @@ SourceTreePopupDialog::SourceTreePopupDialog()
|
|||||||
|
|
||||||
m_layout = new QVBoxLayout;
|
m_layout = new QVBoxLayout;
|
||||||
setLayout( m_layout );
|
setLayout( m_layout );
|
||||||
|
m_layout->setSpacing( 8 );
|
||||||
|
|
||||||
layout()->addWidget( m_label );
|
m_layout->addWidget( m_title );
|
||||||
layout()->addWidget( m_buttons );
|
|
||||||
setContentsMargins( contentsMargins().left() + 2, contentsMargins().top(), contentsMargins().right(), contentsMargins().bottom() );
|
m_separatorLine = new QWidget( this );
|
||||||
|
m_separatorLine->setFixedHeight( 1 );
|
||||||
|
m_separatorLine->setContentsMargins( 0, 0, 0, 0 );
|
||||||
|
m_separatorLine->setStyleSheet( "QWidget { border-top: 1px solid black; }" );
|
||||||
|
m_layout->addWidget( m_separatorLine );
|
||||||
|
m_layout->addWidget( m_label );
|
||||||
|
m_layout->addWidget( m_buttons );
|
||||||
|
setContentsMargins( contentsMargins().left() + 12,
|
||||||
|
contentsMargins().top() + 8,
|
||||||
|
contentsMargins().right() + 8,
|
||||||
|
contentsMargins().bottom() + 8 );
|
||||||
|
|
||||||
|
m_title->setVisible( false );
|
||||||
|
m_separatorLine->setVisible( false );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
m_buttons->button( QDialogButtonBox::Ok )->setStyleSheet(
|
m_buttons->button( QDialogButtonBox::Ok )->setStyleSheet(
|
||||||
@@ -84,6 +110,22 @@ SourceTreePopupDialog::SourceTreePopupDialog()
|
|||||||
}" );*/
|
}" );*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
SourceTreePopupDialog::setTitle( const QString& text )
|
||||||
|
{
|
||||||
|
m_title->setText( text.toUpper() );
|
||||||
|
if ( m_title->text().isEmpty() )
|
||||||
|
{
|
||||||
|
m_title->setVisible( false );
|
||||||
|
m_separatorLine->setVisible( false );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
m_title->setVisible( true );
|
||||||
|
m_separatorLine->setVisible( true );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
SourceTreePopupDialog::setMainText( const QString& text )
|
SourceTreePopupDialog::setMainText( const QString& text )
|
||||||
@@ -128,26 +170,20 @@ void
|
|||||||
SourceTreePopupDialog::paintEvent( QPaintEvent* event )
|
SourceTreePopupDialog::paintEvent( QPaintEvent* event )
|
||||||
{
|
{
|
||||||
// Constants for painting
|
// Constants for painting
|
||||||
const int leftTriangleWidth = 20;
|
const int leftTriangleWidth = 12;
|
||||||
const int cornerRounding = 8;
|
const int cornerRounding = 6;
|
||||||
const int leftEdgeOffset = offset() - 6;
|
const int leftEdgeOffset = 2 /*margin*/ + leftTriangleWidth / 2;
|
||||||
const QRect brect = rect().adjusted( 2, 3, -2, -3 );
|
const QRect brect = rect().adjusted( 2, 3, -2, -3 );
|
||||||
|
|
||||||
QPainterPath outline;
|
QPainterPath outline;
|
||||||
|
|
||||||
|
// Main rect
|
||||||
|
outline.addRoundedRect( brect.adjusted( leftTriangleWidth / 2, 0, 0, 0 ), cornerRounding, cornerRounding );
|
||||||
|
|
||||||
// Left triangle top branch
|
// Left triangle top branch
|
||||||
outline.moveTo( brect.left(), brect.top() + brect.height() / 2 );
|
outline.moveTo( brect.left(), brect.top() + brect.height() / 2 );
|
||||||
outline.lineTo( leftEdgeOffset, brect.top() + brect.height() / 2 - leftTriangleWidth / 2 );
|
outline.lineTo( leftEdgeOffset, brect.top() + brect.height() / 2 - leftTriangleWidth / 2 );
|
||||||
|
|
||||||
// main outline
|
|
||||||
outline.lineTo( leftEdgeOffset, cornerRounding );
|
|
||||||
outline.quadTo( QPoint( leftEdgeOffset, brect.top() ), QPoint( leftEdgeOffset + cornerRounding, brect.top() ) );
|
|
||||||
outline.lineTo( brect.width() - cornerRounding, brect.top() );
|
|
||||||
outline.quadTo( QPoint( brect.width(), brect.top() ), QPoint( brect.width(), cornerRounding ) );
|
|
||||||
outline.lineTo( brect.width(), brect.height() - cornerRounding );
|
|
||||||
outline.quadTo( brect.bottomRight(), QPoint( brect.right() - cornerRounding, brect.height() ) );
|
|
||||||
outline.lineTo( leftEdgeOffset + cornerRounding, brect.height() );
|
|
||||||
outline.quadTo( QPoint( leftEdgeOffset, brect.height() ), QPoint( leftEdgeOffset, brect.height() - cornerRounding ) );
|
|
||||||
|
|
||||||
// Left triangle bottom branch
|
// Left triangle bottom branch
|
||||||
outline.lineTo( leftEdgeOffset, brect.top() + brect.height() / 2 + leftTriangleWidth / 2 );
|
outline.lineTo( leftEdgeOffset, brect.top() + brect.height() / 2 + leftTriangleWidth / 2 );
|
||||||
outline.lineTo( brect.left(), brect.top() + brect.height() / 2 );
|
outline.lineTo( brect.left(), brect.top() + brect.height() / 2 );
|
||||||
@@ -156,13 +192,18 @@ SourceTreePopupDialog::paintEvent( QPaintEvent* event )
|
|||||||
|
|
||||||
p.setRenderHint( QPainter::Antialiasing );
|
p.setRenderHint( QPainter::Antialiasing );
|
||||||
|
|
||||||
QPen pen( QColor( "#3F4247" ) );
|
QPen pen( QColor( 0x8c, 0x8c, 0x8c ) );
|
||||||
pen.setWidth( 2 );
|
pen.setWidth( 2 );
|
||||||
p.setPen( pen );
|
p.setPen( pen );
|
||||||
p.drawPath( outline );
|
p.drawPath( outline );
|
||||||
|
|
||||||
|
#ifdef Q_OS_MAC
|
||||||
p.setOpacity( 0.93 );
|
p.setOpacity( 0.93 );
|
||||||
p.fillPath( outline, QColor( "#D6E3F1" ) );
|
p.fillPath( outline, QColor( "#D6E3F1" ) );
|
||||||
|
#else
|
||||||
|
p.setOpacity( 0.96 );
|
||||||
|
p.fillPath( outline, QColor( "#FFFFFF" ) );
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef QT_MAC_USE_COCOA
|
#ifdef QT_MAC_USE_COCOA
|
||||||
// Work around bug in Qt/Mac Cocoa where opening subsequent popups
|
// Work around bug in Qt/Mac Cocoa where opening subsequent popups
|
||||||
|
@@ -44,6 +44,7 @@ public:
|
|||||||
|
|
||||||
int offset() const { return 16; }
|
int offset() const { return 16; }
|
||||||
|
|
||||||
|
void setTitle( const QString& text );
|
||||||
void setMainText( const QString& text );
|
void setMainText( const QString& text );
|
||||||
void setOkButtonText( const QString& text );
|
void setOkButtonText( const QString& text );
|
||||||
void setExtraQuestions( const Tomahawk::PlaylistDeleteQuestions& questions );
|
void setExtraQuestions( const Tomahawk::PlaylistDeleteQuestions& questions );
|
||||||
@@ -69,11 +70,12 @@ private:
|
|||||||
QVBoxLayout* m_layout;
|
QVBoxLayout* m_layout;
|
||||||
QList< QCheckBox* > m_questionCheckboxes;
|
QList< QCheckBox* > m_questionCheckboxes;
|
||||||
|
|
||||||
QString m_text;
|
|
||||||
bool m_result;
|
bool m_result;
|
||||||
Tomahawk::PlaylistDeleteQuestions m_questions;
|
Tomahawk::PlaylistDeleteQuestions m_questions;
|
||||||
QMap< int, bool > m_questionResults;
|
QMap< int, bool > m_questionResults;
|
||||||
|
|
||||||
|
QLabel* m_title;
|
||||||
|
QWidget* m_separatorLine;
|
||||||
QLabel* m_label;
|
QLabel* m_label;
|
||||||
QDialogButtonBox* m_buttons;
|
QDialogButtonBox* m_buttons;
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user