From 92c9ab2495a7d2e29b42ccc71540496ad87e6a5e Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Sat, 29 Jan 2011 11:42:19 -0500 Subject: [PATCH] replace readwrite labels with summary widget for non local playlists --- .../dynamic/widgets/CollapsibleControls.cpp | 16 +++- .../dynamic/widgets/CollapsibleControls.h | 1 + .../dynamic/widgets/DynamicControlList.cpp | 14 ++-- .../dynamic/widgets/DynamicControlList.h | 5 +- .../dynamic/widgets/DynamicControlWrapper.cpp | 73 +++++++------------ .../dynamic/widgets/DynamicControlWrapper.h | 11 +-- 6 files changed, 53 insertions(+), 67 deletions(-) diff --git a/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.cpp b/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.cpp index f6812c512..6ef9b4758 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.cpp +++ b/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.cpp @@ -33,6 +33,7 @@ using namespace Tomahawk; CollapsibleControls::CollapsibleControls( QWidget* parent ) : QWidget( parent ) + , m_isLocal( true ) { init(); } @@ -40,9 +41,10 @@ CollapsibleControls::CollapsibleControls( QWidget* parent ) CollapsibleControls::CollapsibleControls( const dynplaylist_ptr& playlist, bool isLocal, QWidget* parent ) : QWidget( parent ) , m_dynplaylist( playlist ) + , m_isLocal( isLocal ) { init(); - setControls( m_dynplaylist, isLocal ); + setControls( m_dynplaylist, m_isLocal ); } Tomahawk::CollapsibleControls::~CollapsibleControls() @@ -87,11 +89,16 @@ CollapsibleControls::init() m_summaryExpand->setToolButtonStyle( Qt::ToolButtonIconOnly ); m_summaryExpand->setAutoRaise( true ); m_summaryExpand->setContentsMargins( 0, 0, 0, 0 ); - summaryLayout->addWidget( m_summaryExpand ); + if( m_isLocal ) + summaryLayout->addWidget( m_summaryExpand ); m_layout->addWidget( m_summaryWidget ); connect( m_summaryExpand, SIGNAL( clicked( bool ) ), this, SLOT( toggleCollapse() ) ); - m_layout->setCurrentIndex( 0 ); + if( m_isLocal ) + m_layout->setCurrentWidget( m_controls ); + else + m_layout->setCurrentWidget( m_summary ); + connect( m_controls, SIGNAL( controlChanged( Tomahawk::dyncontrol_ptr ) ), SIGNAL( controlChanged( Tomahawk::dyncontrol_ptr ) ) ); connect( m_controls, SIGNAL( controlsChanged() ), SIGNAL( controlsChanged() ) ); @@ -111,7 +118,8 @@ void CollapsibleControls::setControls( const dynplaylist_ptr& playlist, bool isLocal ) { m_dynplaylist = playlist; - m_controls->setControls( m_dynplaylist->generator(), m_dynplaylist->generator()->controls(), isLocal ); + m_isLocal = isLocal; + m_controls->setControls( m_dynplaylist->generator(), m_dynplaylist->generator()->controls() ); } void diff --git a/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.h b/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.h index 516eeb887..765c0438b 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.h +++ b/src/libtomahawk/playlist/dynamic/widgets/CollapsibleControls.h @@ -60,6 +60,7 @@ private: dynplaylist_ptr m_dynplaylist; QStackedLayout* m_layout; DynamicControlList* m_controls; + bool m_isLocal; QWidget* m_summaryWidget; QLabel* m_summary; diff --git a/src/libtomahawk/playlist/dynamic/widgets/DynamicControlList.cpp b/src/libtomahawk/playlist/dynamic/widgets/DynamicControlList.cpp index 3f7df374a..c786157ee 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/DynamicControlList.cpp +++ b/src/libtomahawk/playlist/dynamic/widgets/DynamicControlList.cpp @@ -39,15 +39,14 @@ DynamicControlList::DynamicControlList( QWidget* parent ) init(); } -DynamicControlList::DynamicControlList( const geninterface_ptr& generator, const QList< dyncontrol_ptr >& controls, bool isLocal, QWidget* parent ) +DynamicControlList::DynamicControlList( const geninterface_ptr& generator, const QList< dyncontrol_ptr >& controls, QWidget* parent ) : QWidget( parent ) , m_generator( generator ) , m_layout( new QGridLayout ) , m_summaryWidget( 0 ) - , m_isLocal( isLocal ) { init(); - setControls( generator, controls, m_isLocal ); + setControls( generator, controls ); } DynamicControlList::~DynamicControlList() @@ -90,7 +89,7 @@ DynamicControlList::init() } void -DynamicControlList::setControls( const geninterface_ptr& generator, const QList< dyncontrol_ptr >& controls, bool isLocal ) +DynamicControlList::setControls( const geninterface_ptr& generator, const QList< dyncontrol_ptr >& controls ) { if( m_controls.size() == controls.size() && controls.size() > 0 ) { // check if we're setting the same controls we already have, and exit if we are bool different = false; @@ -112,18 +111,17 @@ DynamicControlList::setControls( const geninterface_ptr& generator, const QList< m_layout->removeItem( m_collapseLayout ); - m_isLocal = isLocal; m_generator = generator; if( controls.isEmpty() ) { qDebug() << "CREATING DEFAULT CONTROL"; - DynamicControlWrapper* ctrlW = new DynamicControlWrapper( generator->createControl(), m_layout, m_controls.size(), isLocal, this ); + DynamicControlWrapper* ctrlW = new DynamicControlWrapper( generator->createControl(), m_layout, m_controls.size(), this ); connect( ctrlW, SIGNAL( removeControl() ), this, SLOT( removeControl() ) ); connect( ctrlW, SIGNAL( changed() ), this, SLOT( controlChanged() ) ); m_controls << ctrlW; } else { foreach( const dyncontrol_ptr& control, controls ) { - DynamicControlWrapper* ctrlW = new DynamicControlWrapper( control, m_layout, m_controls.size(), isLocal, this ); + DynamicControlWrapper* ctrlW = new DynamicControlWrapper( control, m_layout, m_controls.size(), this ); connect( ctrlW, SIGNAL( removeControl() ), this, SLOT( removeControl() ) ); connect( ctrlW, SIGNAL( changed() ), this, SLOT( controlChanged() ) ); @@ -139,7 +137,7 @@ void DynamicControlList::addNewControl() m_layout->removeItem( m_collapseLayout ); dyncontrol_ptr control = m_generator->createControl(); - m_controls.append( new DynamicControlWrapper( control, m_layout, m_controls.size(), m_isLocal, this ) ); + m_controls.append( new DynamicControlWrapper( control, m_layout, m_controls.size(), this ) ); connect( m_controls.last(), SIGNAL( removeControl() ), this, SLOT( removeControl() ) ); connect( m_controls.last(), SIGNAL( changed() ), this, SLOT( controlChanged() ) ); diff --git a/src/libtomahawk/playlist/dynamic/widgets/DynamicControlList.h b/src/libtomahawk/playlist/dynamic/widgets/DynamicControlList.h index 141e3128f..08b03b4ea 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/DynamicControlList.h +++ b/src/libtomahawk/playlist/dynamic/widgets/DynamicControlList.h @@ -44,10 +44,10 @@ class DynamicControlList : public QWidget Q_OBJECT public: DynamicControlList( QWidget* parent = 0 ); - explicit DynamicControlList( const geninterface_ptr& generator, const QList< dyncontrol_ptr >& controls, bool isLocal, QWidget* parent = 0 ); + explicit DynamicControlList( const geninterface_ptr& generator, const QList< dyncontrol_ptr >& controls, QWidget* parent = 0 ); virtual ~DynamicControlList(); - void setControls( const geninterface_ptr& generator, const QList< dyncontrol_ptr >& controls, bool isLocal ); + void setControls( const geninterface_ptr& generator, const QList< dyncontrol_ptr >& controls ); QList< DynamicControlWrapper* > controls() const { return m_controls; } signals: @@ -73,7 +73,6 @@ private: QPushButton* m_collapse; QToolButton* m_addControl; - bool m_isLocal; }; }; diff --git a/src/libtomahawk/playlist/dynamic/widgets/DynamicControlWrapper.cpp b/src/libtomahawk/playlist/dynamic/widgets/DynamicControlWrapper.cpp index 5bfa56e8c..f8103a57e 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/DynamicControlWrapper.cpp +++ b/src/libtomahawk/playlist/dynamic/widgets/DynamicControlWrapper.cpp @@ -18,7 +18,6 @@ #include "tomahawk/tomahawkapp.h" #include "dynamic/DynamicControl.h" -#include "dynamic/widgets/ReadOrWriteWidget.h" #include #include @@ -30,10 +29,8 @@ using namespace Tomahawk; -DynamicControlWrapper::DynamicControlWrapper( const Tomahawk::dyncontrol_ptr& control, QGridLayout* layout, int row, bool isLocal, QWidget* parent ) +DynamicControlWrapper::DynamicControlWrapper( const Tomahawk::dyncontrol_ptr& control, QGridLayout* layout, int row, QWidget* parent ) : QObject( parent ) - , m_isLocal( isLocal ) - , m_mouseOver( false ) , m_parent( parent ) , m_row( row ) , m_minusButton( 0 ) @@ -46,43 +43,37 @@ DynamicControlWrapper::DynamicControlWrapper( const Tomahawk::dyncontrol_ptr& co qDebug() << "CREATING DYNAMIC CONTROL WRAPPER WITH ROW:" << row << layout; - QComboBox* typeSelector = new QComboBox( parent ); - m_typeSelector = new ReadOrWriteWidget( typeSelector, m_isLocal, m_parent ); + m_typeSelector = new QComboBox( m_parent ); - m_matchSelector = new ReadOrWriteWidget( control->matchSelector(), m_isLocal, m_parent ); - m_entryWidget = new ReadOrWriteWidget( control->inputField(), m_isLocal, m_parent ); - - if( m_isLocal ) - { - m_minusButton = initButton(); - m_minusButton->setIcon( QIcon( RESPATH "images/list-remove.png" ) ); - connect( m_minusButton, SIGNAL( clicked( bool ) ), this, SIGNAL( removeControl() ) ); - - - m_plusL = new QStackedLayout(); - m_plusL->setContentsMargins( 0, 0, 0, 0 ); - m_plusL->setMargin( 0 ); - m_plusL->addWidget( m_minusButton ); - m_plusL->addWidget( createDummy( m_minusButton ) ); // :-( - } + m_matchSelector = control->matchSelector(); + m_entryWidget = control->inputField(); - connect( typeSelector, SIGNAL( activated( QString) ), SLOT( typeSelectorChanged( QString ) ) ); + m_minusButton = initButton(); + m_minusButton->setIcon( QIcon( RESPATH "images/list-remove.png" ) ); + connect( m_minusButton, SIGNAL( clicked( bool ) ), this, SIGNAL( removeControl() ) ); + + + m_plusL = new QStackedLayout(); + m_plusL->setContentsMargins( 0, 0, 0, 0 ); + m_plusL->setMargin( 0 ); + m_plusL->addWidget( m_minusButton ); + m_plusL->addWidget( createDummy( m_minusButton ) ); // :-( + + connect( m_typeSelector, SIGNAL( activated( QString) ), SLOT( typeSelectorChanged( QString ) ) ); connect( m_control.data(), SIGNAL( changed() ), this, SIGNAL( changed() ) ); m_layout->addWidget( m_typeSelector, row, 0, Qt::AlignLeft ); if( !control.isNull() ) { foreach( const QString& type, control->typeSelectors() ) - typeSelector->addItem( type ); + m_typeSelector->addItem( type ); } typeSelectorChanged( m_control.isNull() ? "" : m_control->selectedType(), true ); - if( m_isLocal ) - { - m_layout->addLayout( m_plusL, m_row, 3, Qt::AlignCenter ); - m_plusL->setCurrentIndex( 0 ); - } + m_layout->addLayout( m_plusL, m_row, 3, Qt::AlignCenter ); + m_plusL->setCurrentIndex( 0 ); + } @@ -96,8 +87,6 @@ DynamicControlWrapper::~DynamicControlWrapper() m_control->matchSelector()->setParent( 0 ); delete m_typeSelector; - delete m_matchSelector; - delete m_entryWidget; delete m_minusButton; delete m_plusL; } @@ -150,27 +139,21 @@ DynamicControlWrapper::typeSelectorChanged( const QString& type, bool firstLoad if( m_control->selectedType() != type && !firstLoad ) m_control->setSelectedType( type ); - m_typeSelector->setLabel( type ); - QComboBox* typeSel = qobject_cast(m_typeSelector->writableWidget()); - if( m_typeSelector->writable() && m_typeSelector->writableWidget() && typeSel ) { - int idx = typeSel->findText( type ); - if( idx > -1 ) - typeSel->setCurrentIndex( idx ); - } + int idx = m_typeSelector->findText( type ); + if( idx > -1 ) + m_typeSelector->setCurrentIndex( idx ); + if( m_control->matchSelector() ) { - m_matchSelector->setWritableWidget( m_control->matchSelector() ); - m_matchSelector->setLabel( m_control->matchString() ); - m_matchSelector->setWritable( m_isLocal ); + m_matchSelector = m_control->matchSelector(); m_layout->addWidget( m_matchSelector, m_row, 1, Qt::AlignCenter ); + m_matchSelector->show(); } if( m_control->inputField() ) { - m_entryWidget->setWritableWidget( m_control->inputField() ); - m_entryWidget->setLabel( m_control->input() ); - m_entryWidget->setWritable( m_isLocal ); + m_entryWidget = m_control->inputField(); m_layout->addWidget( m_entryWidget, m_row, 2 ); - + m_entryWidget->show(); } emit changed(); diff --git a/src/libtomahawk/playlist/dynamic/widgets/DynamicControlWrapper.h b/src/libtomahawk/playlist/dynamic/widgets/DynamicControlWrapper.h index 7a68e4449..d9944ce2c 100644 --- a/src/libtomahawk/playlist/dynamic/widgets/DynamicControlWrapper.h +++ b/src/libtomahawk/playlist/dynamic/widgets/DynamicControlWrapper.h @@ -22,7 +22,6 @@ #include "typedefs.h" class QGridLayout; -class ReadOrWriteWidget; class QStackedLayout; class QEvent; class QToolButton; @@ -40,7 +39,7 @@ class DynamicControlWrapper : public QObject { Q_OBJECT public: - explicit DynamicControlWrapper( const dyncontrol_ptr& control, QGridLayout* layout, int row, bool isLocal = false, QWidget* parent = 0 ); + explicit DynamicControlWrapper( const dyncontrol_ptr& control, QGridLayout* layout, int row, QWidget* parent = 0 ); virtual ~DynamicControlWrapper(); // virtual void enterEvent(QEvent* ); @@ -61,17 +60,15 @@ private: QToolButton* initButton(); QWidget* createDummy( QWidget* fromW ); - bool m_isLocal, m_mouseOver; - QWidget* m_parent; int m_row; QStackedLayout* m_plusL; QToolButton* m_minusButton; dyncontrol_ptr m_control; - ReadOrWriteWidget* m_typeSelector; - ReadOrWriteWidget* m_matchSelector; - ReadOrWriteWidget* m_entryWidget; + QComboBox* m_typeSelector; + QWidget* m_matchSelector; + QWidget* m_entryWidget; QGridLayout* m_layout; };