diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-08-17 17:14:16 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-08-17 17:14:16 +0000 |
commit | 36a9c1916513474b11c59a9060cbaf8770d1bbc0 (patch) | |
tree | 235353fef1fa3e425bda7cd7c65aa759547a301b | |
parent | 448423a4cacf41b606e7218162e5cd0689a593e1 (diff) | |
download | amarok-36a9c1916513474b11c59a9060cbaf8770d1bbc0.tar.gz amarok-36a9c1916513474b11c59a9060cbaf8770d1bbc0.zip |
Added option to hide menubar (thanks to Darrell Anderson for the patch)
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/amarok@1164807 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
-rw-r--r-- | amarok/src/amarokcore/amarok.kcfg | 5 | ||||
-rw-r--r-- | amarok/src/app.cpp | 7 | ||||
-rw-r--r-- | amarok/src/playlistwindow.cpp | 32 | ||||
-rw-r--r-- | amarok/src/playlistwindow.h | 1 |
4 files changed, 45 insertions, 0 deletions
diff --git a/amarok/src/amarokcore/amarok.kcfg b/amarok/src/amarokcore/amarok.kcfg index 9083595c..0601edc5 100644 --- a/amarok/src/amarokcore/amarok.kcfg +++ b/amarok/src/amarokcore/amarok.kcfg @@ -216,6 +216,11 @@ <whatsthis>Set this to the style dir you want to use.</whatsthis> <default>Default</default> </entry> + <entry key="Show Menu Bar" type="Bool"> + <label>Whether Menubar is shown</label> + <whatsthis>If set, Amarok displays a menubar on top of the application.</whatsthis> + <default>true</default> + </entry> <entry key="Relative Playlist" type="Bool"> <label>Whether playlists store relative path</label> <whatsthis>If set, Amarok's manually saved playlists will contain a relative path to each track, not an absolute path.</whatsthis> diff --git a/amarok/src/app.cpp b/amarok/src/app.cpp index 32f20f24..8a8ebaa8 100644 --- a/amarok/src/app.cpp +++ b/amarok/src/app.cpp @@ -678,6 +678,13 @@ void App::applySettings( bool firstTime ) m_pPlaylistWindow->setCaption( i18n("Amarok - %1").arg( EngineController::instance()->bundle().veryNiceTitle() ) ); else m_pPlaylistWindow->setCaption( "Amarok" ); + + + //m_pPlaylistWindow->show(); //must be shown //we do below now + + //ensure that at least one Menu is plugged into an accessible UI element + if( !AmarokConfig::showMenuBar() && !Amarok::actionCollection()->action( "amarok_menu" )->isPlugged() ) + playlistWindow()->createGUI(); } playlistWindow()->applySettings(); diff --git a/amarok/src/playlistwindow.cpp b/amarok/src/playlistwindow.cpp index f243e8e6..829949b3 100644 --- a/amarok/src/playlistwindow.cpp +++ b/amarok/src/playlistwindow.cpp @@ -139,6 +139,9 @@ PlaylistWindow::PlaylistWindow() ac->action( "stream_add" )->setIcon( Amarok::icon( "files" ) ); KStdAction::save( this, SLOT(savePlaylist()), ac, "playlist_save" )->setText( i18n("&Save Playlist As...") ); ac->action( "playlist_save" )->setIcon( Amarok::icon( "save" ) ); +#ifndef Q_WS_MAC + KStdAction::showMenubar( this, SLOT(slotToggleMenu()), ac ); +#endif //FIXME: after string freeze rename to "Burn Current Playlist"? new KAction( i18n("Burn to CD"), Amarok::icon( "burn" ), 0, this, SLOT(slotBurnPlaylist()), ac, "playlist_burn" ); @@ -233,6 +236,8 @@ PlaylistWindow::PlaylistWindow() PlaylistWindow::~PlaylistWindow() { + Amarok::config( "PlaylistWindow" )->writeEntry( "showMenuBar", m_menubar->isShown() ); + AmarokConfig::setPlaylistWindowPos( pos() ); //TODO de XT? AmarokConfig::setPlaylistWindowSize( size() ); //TODO de XT? } @@ -308,6 +313,9 @@ void PlaylistWindow::init() connect( repeatAction, SIGNAL( activated( int ) ), playlist, SLOT( slotRepeatTrackToggled( int ) ) ); m_menubar = new KMenuBar( this ); +#ifndef Q_WS_MAC + m_menubar->setShown( AmarokConfig::showMenuBar() ); +#endif //BEGIN Actions menu KPopupMenu *actionsMenu = new KPopupMenu( m_menubar ); @@ -381,6 +389,8 @@ void PlaylistWindow::init() m_settingsMenu = new KPopupMenu( m_menubar ); //TODO use KStdAction or KMainWindow #ifndef Q_WS_MAC + static_cast<KToggleAction *>(actionCollection()->action(KStdAction::name(KStdAction::ShowMenubar)))->setChecked( AmarokConfig::showMenuBar() ); + actionCollection()->action(KStdAction::name(KStdAction::ShowMenubar))->plug( m_settingsMenu ); m_settingsMenu->insertItem( AmarokConfig::showToolbar() ? i18n( "Hide Toolbar" ) : i18n("Show Toolbar"), ID_SHOW_TOOLBAR ); m_settingsMenu->insertItem( AmarokConfig::showPlayerWindow() ? i18n("Hide Player &Window") : i18n("Show Player &Window"), ID_SHOW_PLAYERWINDOW ); m_settingsMenu->insertSeparator(); @@ -570,6 +580,13 @@ void PlaylistWindow::createGUI() { KToolBarButton* const button = static_cast<KToolBarButton*>( m_toolbar->child( (*it).latin1() ) ); + if ( it == last ) { + //if the user has no PlayerWindow, he MUST have the menu action plugged + //NOTE this is not saved to the local XMLFile, which is what the user will want + if ( !AmarokConfig::showPlayerWindow() && !AmarokConfig::showMenuBar() && !button ) + actionCollection()->action( "amarok_menu" )->plug( m_toolbar ); + } + if ( button ) { button->modeChange(); button->setFocusPolicy( QWidget::NoFocus ); @@ -1031,6 +1048,20 @@ void PlaylistWindow::slotToggleFocus() //SLOT Playlist::instance()->setFocus(); } +void PlaylistWindow::slotToggleMenu() //SLOT +{ + if( static_cast<KToggleAction *>(actionCollection()->action(KStdAction::name(KStdAction::ShowMenubar)))->isChecked() ) { + AmarokConfig::setShowMenuBar( true ); + m_menubar->setShown( true ); + } + else + { + AmarokConfig::setShowMenuBar( false ); + m_menubar->setShown( false ); + } + recreateGUI(); +} + void PlaylistWindow::slotMenuActivated( int index ) //SLOT { switch( index ) @@ -1042,6 +1073,7 @@ void PlaylistWindow::slotMenuActivated( int index ) //SLOT case ID_SHOW_TOOLBAR: m_toolbar->setShown( !m_toolbar->isShown() ); AmarokConfig::setShowToolbar( !AmarokConfig::showToolbar() ); + actionCollection()->action(KStdAction::name(KStdAction::ShowMenubar))->setEnabled( m_toolbar->isShown() ); m_settingsMenu->changeItem( index, m_toolbar->isShown() ? i18n("Hide Toolbar") : i18n("Show Toolbar") ); break; case ID_SHOW_PLAYERWINDOW: diff --git a/amarok/src/playlistwindow.h b/amarok/src/playlistwindow.h index 1867b5ff..243d618e 100644 --- a/amarok/src/playlistwindow.h +++ b/amarok/src/playlistwindow.h @@ -91,6 +91,7 @@ class PlaylistWindow : public QWidget, public KXMLGUIClient void slotMenuActivated( int ); void actionsMenuAboutToShow(); void toolsMenuAboutToShow(); + void slotToggleMenu(); void slotToggleFocus(); void slotEditFilter(); void slotSetFilter( const QString &filter ); |