Changeset 8344


Ignore:
Timestamp:
May 6, 2009, 1:39:48 PM (12 years ago)
Author:
charles
Message:

(trunk qt) use the bubble-filter button patch

Location:
trunk/qt
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/qt/mainwin.cc

    r8332 r8344  
    2424#include <QUrl>
    2525#include <QSignalMapper>
    26 #include <QTabBar>
    2726
    2827#include <libtransmission/version.h>
     
    6261    return QtIconLoader::icon( freedesktop_name, fallbackIcon );
    6362}
     63
     64namespace
     65{
     66    QSize calculateTextButtonSizeHint( QPushButton * button )
     67    {
     68        QStyleOptionButton opt;
     69        opt.initFrom( button );
     70        QString s( button->text( ) );
     71        if( s.isEmpty( ) )
     72            s = QString::fromLatin1( "XXXX" );
     73        QFontMetrics fm = button->fontMetrics( );
     74        QSize sz = fm.size( Qt::TextShowMnemonic, s );
     75        return button->style()->sizeFromContents( QStyle::CT_PushButton, &opt, sz, button ).expandedTo( QApplication::globalStrut( ) );
     76    }
     77}
     78
    6479
    6580TrMainWindow :: TrMainWindow( Session& session, Prefs& prefs, TorrentModel& model, bool minimized ):
     
    302317}
    303318
     319#define SHOW_KEY "show-mode"
     320
     321void
     322TrMainWindow :: onShowModeClicked( )
     323{
     324    setShowMode( sender()->property(SHOW_KEY).toInt() );
     325}
     326
    304327QWidget *
    305328TrMainWindow :: createFilterBar( )
    306329{
     330    int i;
    307331    QMenu * m;
    308332    QLineEdit * e;
     
    314338
    315339    QWidget * top = myFilterBar = new QWidget;
    316    
    317340    h = new QHBoxLayout( top );
    318     h->setContentsMargins( HIG::PAD_SMALL, HIG::PAD_SMALL, HIG::PAD_SMALL, 0 );
     341    h->setContentsMargins( HIG::PAD_SMALL, HIG::PAD_SMALL, HIG::PAD_SMALL, HIG::PAD_SMALL );
    319342    h->setSpacing( HIG::PAD_SMALL );
    320343
    321         QTabBar * tabBar = myFilterTabs = new QTabBar( this );
    322         tabBar->addTab( tr( "A&ll" ) );
    323         tabBar->addTab( tr( "&Active" ) );
    324         tabBar->addTab( tr( "&Downloading" ) );
    325         tabBar->addTab( tr( "&Seeding" ) );
    326         tabBar->addTab( tr( "&Paused" ) );
    327         connect( tabBar, SIGNAL(currentChanged(int)), this, SLOT(setShowMode(int)));
    328         h->addWidget( tabBar );
    329 
    330     h->addSpacing( HIG::PAD_BIG );
     344    top->setStyleSheet(" \
     345      QPushButton{ \
     346        border-radius: 10px; \
     347        padding: 0 5px; \
     348        border: 1px none; \
     349      } \
     350      QPushButton:pressed, QPushButton:checked{ \
     351        border-width: 1px; \
     352        border-style: solid; \
     353        border-color: #5f5f5f #979797 #979797; \
     354        background-color: #979797; \
     355        color: white; \
     356      } \
     357    ");
     358
     359        QList<QString> titles;
     360        titles << tr( "A&ll" ) << tr( "&Active" ) << tr( "&Downloading" ) << tr( "&Seeding" ) << tr( "&Paused" );
     361        for( i=0; i<titles.size(); ++i ) {
     362            p = myFilterButtons[i] = new QPushButton( titles[i] );
     363            p->setProperty( SHOW_KEY, i );
     364            p->setFlat( true );
     365            p->setCheckable( true );
     366            p->setMaximumSize( calculateTextButtonSizeHint( p ) );
     367            connect( p, SIGNAL(clicked()), this, SLOT(onShowModeClicked()));
     368            h->addWidget( p );
     369        }
     370
    331371    h->addStretch( 1 );
    332372
     
    774814
    775815void TrMainWindow :: setShowMode     ( int i ) { myPrefs.set( Prefs::FILTER_MODE, FilterMode( i ) ); }
     816void TrMainWindow :: showAll         ( ) { setShowMode( FilterMode :: SHOW_ALL ); }
     817void TrMainWindow :: showActive      ( ) { setShowMode( FilterMode :: SHOW_ACTIVE ); }
     818void TrMainWindow :: showDownloading ( ) { setShowMode( FilterMode :: SHOW_DOWNLOADING ); }
     819void TrMainWindow :: showSeeding     ( ) { setShowMode( FilterMode :: SHOW_SEEDING ); }
     820void TrMainWindow :: showPaused      ( ) { setShowMode( FilterMode :: SHOW_PAUSED ); }
    776821
    777822void TrMainWindow :: filterByName    ( ) { myFilterModel.setTextMode( TorrentFilter :: FILTER_BY_NAME ); }
     
    897942
    898943        case Prefs::FILTER_MODE:
    899             myFilterTabs->setCurrentIndex( myPrefs.get<FilterMode>(key).mode( ) );
     944            i = myPrefs.get<FilterMode>(key).mode( );
     945            for( int j=0; j<FilterMode::NUM_MODES; ++j )
     946                myFilterButtons[j]->setChecked( i==j );
    900947            break;
    901948
  • trunk/qt/mainwin.h

    r8332 r8344  
    4545class QMenu;
    4646class QModelIndex;
    47 class QTabBar;
    4847class QSortFilterProxyModel;
    4948
     
    8079        QAction * myRatioOffAction;
    8180        QAction * myRatioOnAction;
    82         QTabBar * myFilterTabs;
    8381
    8482    private:
     
    8684
    8785    private:
     86        void setShowMode( int );
    8887        QSet<int> getSelectedTorrents( ) const;
    8988        void updateNetworkIcon( );
     
    9190
    9291    private slots:
    93         void setShowMode( int );
    9492        void onDetailsDestroyed( );
     93        void onShowModeClicked( );
     94        void showAll( );
     95        void showActive( );
     96        void showDownloading( );
     97        void showSeeding( );
     98        void showPaused( );
    9599        void filterByName( );
    96100        void filterByFiles( );
Note: See TracChangeset for help on using the changeset viewer.