1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-16 11:04:01 +02:00

replace readwrite labels with summary widget for non local playlists

This commit is contained in:
Leo Franchi
2011-01-29 11:42:19 -05:00
parent db890a54c7
commit 92c9ab2495
6 changed files with 53 additions and 67 deletions

View File

@@ -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

View File

@@ -60,6 +60,7 @@ private:
dynplaylist_ptr m_dynplaylist;
QStackedLayout* m_layout;
DynamicControlList* m_controls;
bool m_isLocal;
QWidget* m_summaryWidget;
QLabel* m_summary;

View File

@@ -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() ) );

View File

@@ -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;
};
};

View File

@@ -18,7 +18,6 @@
#include "tomahawk/tomahawkapp.h"
#include "dynamic/DynamicControl.h"
#include "dynamic/widgets/ReadOrWriteWidget.h"
#include <QHBoxLayout>
#include <QComboBox>
@@ -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<QComboBox*>(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();

View File

@@ -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;
};