1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-09 07:36:48 +02:00

The accounts menu is now a bunch of QToolButtons in the toolbar.

Implemented a toolbar balancing method to fix the issue with the
(centered) search widget moving around.
Also made the go online/go offline strings more consistent.
This commit is contained in:
Teo Mrnjavac
2012-08-05 10:04:23 +02:00
parent 81828d40cc
commit 6cb444bc76
3 changed files with 108 additions and 46 deletions

View File

@@ -57,6 +57,7 @@
#include "jobview/JobStatusModel.h" #include "jobview/JobStatusModel.h"
#include "jobview/ErrorStatusMessage.h" #include "jobview/ErrorStatusMessage.h"
#include "jobview/JobStatusModel.h" #include "jobview/JobStatusModel.h"
#include "sip/SipPlugin.h"
#include "Playlist.h" #include "Playlist.h"
#include "Query.h" #include "Query.h"
@@ -117,7 +118,6 @@ TomahawkWindow::TomahawkWindow( QWidget* parent )
TomahawkUtils::unmarginLayout( ui->centralWidget->layout() ); TomahawkUtils::unmarginLayout( ui->centralWidget->layout() );
setupMenuBar(); setupMenuBar();
setupAccountsMenu();
setupToolBar(); setupToolBar();
setupSideBar(); setupSideBar();
statusBar()->addPermanentWidget( m_audioControls, 1 ); statusBar()->addPermanentWidget( m_audioControls, 1 );
@@ -229,53 +229,56 @@ TomahawkWindow::applyPlatformTweaks()
void void
TomahawkWindow::setupToolBar() TomahawkWindow::setupToolBar()
{ {
QToolBar *toolbar = addToolBar( "TomahawkToolbar" ); m_toolbar = addToolBar( "TomahawkToolbar" );
toolbar->setObjectName( "TomahawkToolbar" ); m_toolbar->setObjectName( "TomahawkToolbar" );
toolbar->setMovable( false ); m_toolbar->setMovable( false );
toolbar->setFloatable( false ); m_toolbar->setFloatable( false );
toolbar->setIconSize( QSize( 22, 22 ) ); m_toolbar->setIconSize( QSize( 22, 22 ) );
toolbar->setToolButtonStyle( Qt::ToolButtonIconOnly ); m_toolbar->setToolButtonStyle( Qt::ToolButtonIconOnly );
toolbar->setStyleSheet( "border-bottom: 0px" ); m_toolbar->setStyleSheet( "border-bottom: 0px" );
#ifdef Q_OS_MAC #ifdef Q_OS_MAC
toolbar->installEventFilter( new WidgetDragFilter( toolbar ) ); m_toolbar->installEventFilter( new WidgetDragFilter( m_toolbar ) );
#endif #endif
m_backAction = toolbar->addAction( QIcon( RESPATH "images/back.png" ), tr( "Back" ), ViewManager::instance(), SLOT( historyBack() ) ); m_backAction = m_toolbar->addAction( QIcon( RESPATH "images/back.png" ), tr( "Back" ), ViewManager::instance(), SLOT( historyBack() ) );
m_backAction->setToolTip( tr( "Go back one page" ) ); m_backAction->setToolTip( tr( "Go back one page" ) );
m_forwardAction = toolbar->addAction( QIcon( RESPATH "images/forward.png" ), tr( "Forward" ), ViewManager::instance(), SLOT( historyForward() ) ); m_forwardAction = m_toolbar->addAction( QIcon( RESPATH "images/forward.png" ), tr( "Forward" ), ViewManager::instance(), SLOT( historyForward() ) );
m_forwardAction->setToolTip( tr( "Go forward one page" ) ); m_forwardAction->setToolTip( tr( "Go forward one page" ) );
QWidget* leftSpacer = new QWidget( this ); m_toolbarLeftBalancer = new QWidget( this );
leftSpacer->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ); m_toolbarLeftBalancer->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Preferred );
toolbar->addWidget( leftSpacer ); m_toolbarLeftBalancer->setFixedWidth( 0 );
m_toolbar->addWidget( m_toolbarLeftBalancer )->setProperty( "kind", QString( "spacer" ) );
QWidget* toolbarLeftSpacer = new QWidget( this );
toolbarLeftSpacer->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred );
m_toolbar->addWidget( toolbarLeftSpacer )->setProperty( "kind", QString( "spacer" ) );
m_searchWidget = new QSearchField( this ); m_searchWidget = new QSearchField( this );
m_searchWidget->setPlaceholderText( tr( "Global Search..." ) ); m_searchWidget->setPlaceholderText( tr( "Global Search..." ) );
m_searchWidget->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ); m_searchWidget->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Preferred );
m_searchWidget->setMaximumWidth( 340 ); m_searchWidget->setFixedWidth( 340 );
connect( m_searchWidget, SIGNAL( returnPressed() ), this, SLOT( onFilterEdited() ) ); connect( m_searchWidget, SIGNAL( returnPressed() ), this, SLOT( onFilterEdited() ) );
toolbar->addWidget( m_searchWidget ); m_toolbar->addWidget( m_searchWidget )->setProperty( "kind", QString( "search" ) );
QWidget* rightSpacer = new QWidget( this ); QWidget* rightSpacer = new QWidget( this );
rightSpacer->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred ); rightSpacer->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred );
toolbar->addWidget( rightSpacer ); m_toolbar->addWidget( rightSpacer )->setProperty( "kind", QString( "spacer" ) );
ContainedMenuButton *accountsMenuButton = new ContainedMenuButton( toolbar ); m_toolbarRightBalancer = new QWidget( this );
accountsMenuButton->setIcon( QIcon( RESPATH "images/account-settings.png" ) ); m_toolbarRightBalancer->setSizePolicy( QSizePolicy::Fixed, QSizePolicy::Preferred );
accountsMenuButton->setText( tr( "&Network" ) ); m_toolbarRightBalancer->setFixedWidth( 0 );
accountsMenuButton->setMenu( m_menuAccounts ); m_toolbar->addWidget( m_toolbarRightBalancer )->setProperty( "kind", QString( "spacer" ) );
accountsMenuButton->setToolButtonStyle( Qt::ToolButtonIconOnly );
toolbar->addWidget( accountsMenuButton );
#ifndef Q_OS_MAC #ifndef Q_OS_MAC
ContainedMenuButton *compactMenuButton = new ContainedMenuButton( toolbar ); ContainedMenuButton* compactMenuButton = new ContainedMenuButton( m_toolbar );
compactMenuButton->setIcon( QIcon( RESPATH "images/configure.png" ) ); compactMenuButton->setIcon( QIcon( RESPATH "images/configure.png" ) );
compactMenuButton->setText( tr( "&Main Menu" ) ); compactMenuButton->setText( tr( "&Main Menu" ) );
compactMenuButton->setMenu( m_compactMainMenu ); compactMenuButton->setMenu( m_compactMainMenu );
compactMenuButton->setToolButtonStyle( Qt::ToolButtonIconOnly ); compactMenuButton->setToolButtonStyle( Qt::ToolButtonIconOnly );
m_compactMenuAction = toolbar->addWidget( compactMenuButton ); m_compactMenuAction = m_toolbar->addWidget( compactMenuButton );
//HACK: adding the toggle action to the window, otherwise the shortcut keys //HACK: adding the toggle action to the window, otherwise the shortcut keys
// won't be picked up when the menu is hidden. // won't be picked up when the menu is hidden.
// This must be done for all menu bar actions that have shortcut keys :( // This must be done for all menu bar actions that have shortcut keys :(
@@ -283,6 +286,51 @@ TomahawkWindow::setupToolBar()
addAction( ActionCollection::instance()->getAction( "toggleMenuBar" ) ); addAction( ActionCollection::instance()->getAction( "toggleMenuBar" ) );
addAction( ActionCollection::instance()->getAction( "quit" ) ); addAction( ActionCollection::instance()->getAction( "quit" ) );
#endif #endif
balanceToolbar();
}
void
TomahawkWindow::balanceToolbar()
{
int leftActionsWidth = 0;
int rightActionsWidth = 0;
bool flip = false;
foreach ( QAction* action, m_toolbar->actions() )
{
if ( action->property( "kind" ) == QString( "spacer" ) ||
!action->isVisible() )
continue;
else if ( action->property( "kind" ) == QString( "search" ) )
{
flip = true;
continue;
}
QWidget* widget = m_toolbar->widgetForAction( action );
if ( !flip ) //we accumulate on the left
{
leftActionsWidth += widget->sizeHint().width()
+ m_toolbar->layout()->spacing();
}
else //then, on the right
{
rightActionsWidth += widget->sizeHint().width()
+ m_toolbar->layout()->spacing();
}
}
if ( leftActionsWidth > rightActionsWidth )
{
m_toolbarLeftBalancer->setFixedWidth( 0 );
m_toolbarRightBalancer->setFixedWidth( leftActionsWidth - rightActionsWidth );
}
else
{
m_toolbarLeftBalancer->setFixedWidth( rightActionsWidth - leftActionsWidth );
m_toolbarRightBalancer->setFixedWidth( 0 );
}
} }
@@ -451,7 +499,7 @@ TomahawkWindow::setupSignals()
connect( ac->getAction( "preferences" ), SIGNAL( triggered() ), SLOT( showSettingsDialog() ) ); connect( ac->getAction( "preferences" ), SIGNAL( triggered() ), SLOT( showSettingsDialog() ) );
connect( ac->getAction( "diagnostics" ), SIGNAL( triggered() ), SLOT( showDiagnosticsDialog() ) ); connect( ac->getAction( "diagnostics" ), SIGNAL( triggered() ), SLOT( showDiagnosticsDialog() ) );
connect( ac->getAction( "legalInfo" ), SIGNAL( triggered() ), SLOT( legalInfo() ) ); connect( ac->getAction( "legalInfo" ), SIGNAL( triggered() ), SLOT( legalInfo() ) );
connect( m_actionToggleConnect, SIGNAL( triggered() ), AccountManager::instance(), SLOT( toggleAccountsConnected() ) ); connect( ac->getAction( "toggleOnline" ), SIGNAL( triggered() ), AccountManager::instance(), SLOT( toggleAccountsConnected() ) );
connect( ac->getAction( "updateCollection" ), SIGNAL( triggered() ), SLOT( updateCollectionManually() ) ); connect( ac->getAction( "updateCollection" ), SIGNAL( triggered() ), SLOT( updateCollectionManually() ) );
connect( ac->getAction( "rescanCollection" ), SIGNAL( triggered() ), SLOT( rescanCollectionManually() ) ); connect( ac->getAction( "rescanCollection" ), SIGNAL( triggered() ), SLOT( rescanCollectionManually() ) );
connect( ac->getAction( "loadXSPF" ), SIGNAL( triggered() ), SLOT( loadSpiff() )); connect( ac->getAction( "loadXSPF" ), SIGNAL( triggered() ), SLOT( loadSpiff() ));
@@ -473,6 +521,7 @@ TomahawkWindow::setupSignals()
// Menus for accounts that support them // Menus for accounts that support them
connect( AccountManager::instance(), SIGNAL( added( Tomahawk::Accounts::Account* ) ), this, SLOT( onAccountAdded( Tomahawk::Accounts::Account* ) ) ); connect( AccountManager::instance(), SIGNAL( added( Tomahawk::Accounts::Account* ) ), this, SLOT( onAccountAdded( Tomahawk::Accounts::Account* ) ) );
foreach ( Account* account, AccountManager::instance()->accounts( Tomahawk::Accounts::SipType ) ) foreach ( Account* account, AccountManager::instance()->accounts( Tomahawk::Accounts::SipType ) )
{ {
if ( !account || !account->sipPlugin() ) if ( !account || !account->sipPlugin() )
@@ -486,15 +535,6 @@ TomahawkWindow::setupSignals()
connect( ViewManager::instance(), SIGNAL( historyForwardAvailable( bool ) ), SLOT( onHistoryForwardAvailable( bool ) ) ); connect( ViewManager::instance(), SIGNAL( historyForwardAvailable( bool ) ), SLOT( onHistoryForwardAvailable( bool ) ) );
} }
void
TomahawkWindow::setupAccountsMenu()
{
m_menuAccounts = new QMenu( this );
m_actionToggleConnect = new QAction( tr( "Go &Online" ),
m_menuAccounts );
m_menuAccounts->addAction( m_actionToggleConnect );
m_menuAccounts->addSeparator();
}
void void
TomahawkWindow::setupMenuBar() TomahawkWindow::setupMenuBar()
@@ -817,20 +857,36 @@ TomahawkWindow::addPeerManually()
void void
TomahawkWindow::pluginMenuAdded( QMenu* menu ) TomahawkWindow::pluginMenuAdded( QMenu* menu )
{ {
m_menuAccounts->addMenu( menu ); SipPlugin* plugin = qobject_cast< SipPlugin* >( sender() );
if ( plugin )
{
ContainedMenuButton *button = new ContainedMenuButton( m_toolbar );
button->setIcon( plugin->account()->icon() );
button->setText( menu->title() );
button->setMenu( menu );
button->setToolButtonStyle( Qt::ToolButtonIconOnly );
QAction *action = m_toolbar->insertWidget( m_compactMenuAction, button );
action->setProperty( "id", plugin->account()->accountId() );
balanceToolbar();
}
} }
void void
TomahawkWindow::pluginMenuRemoved( QMenu* menu ) TomahawkWindow::pluginMenuRemoved( QMenu* menu )
{ {
foreach ( QAction* action, m_menuAccounts->actions() ) SipPlugin* plugin = qobject_cast< SipPlugin* >( sender() );
if ( plugin )
{ {
if ( action->menu() == menu ) foreach ( QAction* action, m_toolbar->actions() )
{ {
m_menuAccounts->removeAction( action ); if ( action->property( "id" ) == plugin->account()->accountId() )
return; {
m_toolbar->removeAction( action );
return;
}
} }
balanceToolbar();
} }
} }
@@ -1122,14 +1178,14 @@ TomahawkWindow::onPlaybackLoading( const Tomahawk::result_ptr& result )
void void
TomahawkWindow::onAccountConnected() TomahawkWindow::onAccountConnected()
{ {
m_actionToggleConnect->setText( tr( "Go &offline" ) ); ActionCollection::instance()->getAction( "toggleOnline" )->setText( tr( "Go &Offline" ) );
} }
void void
TomahawkWindow::onAccountDisconnected() TomahawkWindow::onAccountDisconnected()
{ {
m_actionToggleConnect->setText( tr( "Go &online" ) ); ActionCollection::instance()->getAction( "toggleOnline" )->setText( tr( "Go &Online" ) );
} }
@@ -1302,6 +1358,7 @@ TomahawkWindow::toggleMenuBar() //SLOT
ActionCollection::instance()->getAction( "toggleMenuBar" )->setText( tr( "Hide Menu Bar" ) ); ActionCollection::instance()->getAction( "toggleMenuBar" )->setText( tr( "Hide Menu Bar" ) );
menuBar()->setVisible( true ); menuBar()->setVisible( true );
} }
balanceToolbar();
saveSettings(); saveSettings();
#endif #endif
} }

View File

@@ -158,11 +158,11 @@ private:
void applyPlatformTweaks(); void applyPlatformTweaks();
void setupSignals(); void setupSignals();
void setupAccountsMenu(); //must be called before setupToolBar
void setupMenuBar(); void setupMenuBar();
void setupToolBar(); void setupToolBar();
void setupSideBar(); void setupSideBar();
void setupUpdateCheck(); void setupUpdateCheck();
void balanceToolbar();
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
bool setupWindowsButtons(); bool setupWindowsButtons();
@@ -184,13 +184,14 @@ private:
JobStatusSortModel* m_jobsModel; JobStatusSortModel* m_jobsModel;
// Menus and menu actions: Accounts menu // Menus and menu actions: Accounts menu
QMenu *m_menuAccounts;
QAction *m_actionToggleConnect;
QMenuBar *m_menuBar; QMenuBar *m_menuBar;
#ifndef Q_OS_MAC #ifndef Q_OS_MAC
QAction *m_compactMenuAction; QAction *m_compactMenuAction;
QMenu *m_compactMainMenu; QMenu *m_compactMainMenu;
#endif #endif
QToolBar *m_toolbar;
QWidget *m_toolbarLeftBalancer;
QWidget *m_toolbarRightBalancer;
QAction* m_backAction; QAction* m_backAction;
QAction* m_forwardAction; QAction* m_forwardAction;

View File

@@ -70,6 +70,8 @@ ActionCollection::initActions()
m_actionCollection[ "togglePrivacy" ] = privacyToggle; m_actionCollection[ "togglePrivacy" ] = privacyToggle;
connect( m_actionCollection[ "togglePrivacy" ], SIGNAL( triggered() ), SLOT( togglePrivateListeningMode() ), Qt::UniqueConnection ); connect( m_actionCollection[ "togglePrivacy" ], SIGNAL( triggered() ), SLOT( togglePrivateListeningMode() ), Qt::UniqueConnection );
m_actionCollection[ "toggleOnline" ] = new QAction( tr( "Go &Online" ), this );
m_actionCollection[ "loadPlaylist" ] = new QAction( tr( "&Load Playlist" ), this ); m_actionCollection[ "loadPlaylist" ] = new QAction( tr( "&Load Playlist" ), this );
m_actionCollection[ "renamePlaylist" ] = new QAction( tr( "&Rename Playlist" ), this ); m_actionCollection[ "renamePlaylist" ] = new QAction( tr( "&Rename Playlist" ), this );
m_actionCollection[ "copyPlaylist" ] = new QAction( tr( "&Copy Playlist Link" ), this ); m_actionCollection[ "copyPlaylist" ] = new QAction( tr( "&Copy Playlist Link" ), this );
@@ -134,6 +136,7 @@ ActionCollection::createMenuBar( QWidget *parent )
controlsMenu->addSeparator(); controlsMenu->addSeparator();
controlsMenu->addAction( m_actionCollection[ "togglePrivacy" ] ); controlsMenu->addAction( m_actionCollection[ "togglePrivacy" ] );
controlsMenu->addAction( m_actionCollection[ "showOfflineSources" ] ); controlsMenu->addAction( m_actionCollection[ "showOfflineSources" ] );
controlsMenu->addAction( m_actionCollection[ "toggleOnline" ] );
controlsMenu->addSeparator(); controlsMenu->addSeparator();
controlsMenu->addAction( m_actionCollection[ "loadXSPF" ] ); controlsMenu->addAction( m_actionCollection[ "loadXSPF" ] );
controlsMenu->addAction( m_actionCollection[ "updateCollection" ] ); controlsMenu->addAction( m_actionCollection[ "updateCollection" ] );
@@ -193,6 +196,7 @@ ActionCollection::createCompactMenu( QWidget *parent )
compactMenu->addSeparator(); compactMenu->addSeparator();
compactMenu->addAction( m_actionCollection[ "togglePrivacy" ] ); compactMenu->addAction( m_actionCollection[ "togglePrivacy" ] );
compactMenu->addAction( m_actionCollection[ "showOfflineSources" ] ); compactMenu->addAction( m_actionCollection[ "showOfflineSources" ] );
compactMenu->addAction( m_actionCollection[ "toggleOnline" ] );
compactMenu->addSeparator(); compactMenu->addSeparator();
compactMenu->addAction( m_actionCollection[ "loadXSPF" ] ); compactMenu->addAction( m_actionCollection[ "loadXSPF" ] );
compactMenu->addAction( m_actionCollection[ "updateCollection" ] ); compactMenu->addAction( m_actionCollection[ "updateCollection" ] );