QAbstractButton* newButton( const QString& text, QWidget* parent = 0 ) { QAbstractButton* pushButton = new QPushButton( parent ); pushButton->setText( text ); pushButton->setCheckable( true ); pushButton->setAutoExclusive( true ); pushButton->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Fixed ); pushButton->setAttribute( Qt::WA_LayoutUsesWidgetRect ); pushButton->setAttribute( Qt::WA_MacNoClickThrough ); return pushButton; }
void LocationBar::setIndex( const QModelIndex &index ) { qDeleteAll( buttons ); buttons.clear(); qDeleteAll( actions ); actions.clear(); QModelIndex i = index; bool first = true; while( true ) { PLItem *item = model->getItem( i ); QString text; char *fb_name = input_item_GetTitle( item->inputItem() ); if( EMPTY_STR( fb_name ) ) { free( fb_name ); fb_name = input_item_GetName( item->inputItem() ); } text = qfu(fb_name); free(fb_name); QAbstractButton *btn = new LocationButton( text, first, !first, this ); btn->setSizePolicy( QSizePolicy::Maximum, QSizePolicy::Fixed ); buttons.append( btn ); QAction *action = new QAction( text, this ); actions.append( action ); CONNECT( btn, clicked(), action, trigger() ); mapper->setMapping( action, item->id() ); CONNECT( action, triggered(), mapper, map() ); first = false; if( i.isValid() ) i = i.parent(); else break; } QString prefix; for( int a = actions.count() - 1; a >= 0 ; a-- ) { actions[a]->setText( prefix + actions[a]->text() ); prefix += QString(" "); } if( isVisible() ) layOut( size() ); }
void LocationBar::setIndex( const QModelIndex &index ) { qDeleteAll( buttons ); buttons.clear(); qDeleteAll( actions ); actions.clear(); QModelIndex i = index; bool first = true; while( true ) { QString text = model->getTitle( i ); QAbstractButton *btn = new LocationButton( text, first, !first, this ); btn->setSizePolicy( QSizePolicy::Maximum, QSizePolicy::Fixed ); buttons.append( btn ); QAction *action = new QAction( text, this ); actions.append( action ); CONNECT( btn, clicked(), action, trigger() ); mapper->setMapping( action, model->itemId( i, PLAYLIST_ID ) ); CONNECT( action, triggered(), mapper, map() ); first = false; if( i.isValid() ) i = i.parent(); else break; } QString prefix; for( int a = actions.count() - 1; a >= 0 ; a-- ) { actions[a]->setText( prefix + actions[a]->text() ); prefix += QString(" "); } if( isVisible() ) layOut( size() ); }