aboutsummaryrefslogtreecommitdiff
path: root/audio/amarok-kde4/files/hide-main-menu-bar-feature.patch
blob: dc53b53a6d2beee7f95f670536d73bb4ca757140 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
diff -ruN amarok.orig/src/amarokcore/amarok.kcfg amarok/src/amarokcore/amarok.kcfg
--- amarok.orig/src/amarokcore/amarok.kcfg	Mon Jun 18 01:51:49 2007
+++ amarok/src/amarokcore/amarok.kcfg	Thu Jun 21 22:42:23 2007
@@ -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 -ruN amarok.orig/src/app.cpp amarok/src/app.cpp
--- amarok.orig/src/app.cpp	Mon Jun 18 01:51:49 2007
+++ amarok/src/app.cpp	Thu Jun 21 22:43:27 2007
@@ -678,6 +674,11 @@
             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 -ruN amarok.orig/src/playlistwindow.cpp amarok/src/playlistwindow.cpp
--- amarok.orig/src/playlistwindow.cpp	Mon Jun 18 01:51:49 2007
+++ amarok/src/playlistwindow.cpp	Thu Jun 21 22:48:15 2007
@@ -139,6 +139,7 @@
     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" ) );
+    KStdAction::showMenubar( this, SLOT(slotToggleMenu()), ac );
 
     //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,7 @@
 
 PlaylistWindow::~PlaylistWindow()
 {
+    Amarok::config( "PlaylistWindow" )->writeEntry( "showMenuBar", m_menubar->isShown() );
     AmarokConfig::setPlaylistWindowPos( pos() );  //TODO de XT?
     AmarokConfig::setPlaylistWindowSize( size() ); //TODO de XT?
 }
@@ -307,6 +310,7 @@
     connect( repeatAction, SIGNAL( activated( int ) ), playlist, SLOT( slotRepeatTrackToggled( int ) ) );
 
     m_menubar = new KMenuBar( this );
+    m_menubar->setShown( AmarokConfig::showMenuBar() );
 
     //BEGIN Actions menu
     KPopupMenu *actionsMenu = new KPopupMenu( m_menubar );
@@ -381,6 +388,8 @@
     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();
@@ -569,6 +578,12 @@
     for( QStringList::ConstIterator it = list.constBegin(); it != end; ++it )
     {
         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();
@@ -1031,6 +1046,20 @@
         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 +1071,7 @@
     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 -ruN amarok.orig/src/playlistwindow.h amarok/src/playlistwindow.h
--- amarok.orig/src/playlistwindow.h	Mon Jun 18 01:51:49 2007
+++ amarok/src/playlistwindow.h	Thu Jun 21 22:48:44 2007
@@ -91,6 +91,7 @@
         void slotMenuActivated( int );
         void actionsMenuAboutToShow();
         void toolsMenuAboutToShow();
+        void slotToggleMenu();	
         void slotToggleFocus();
         void slotEditFilter();
         void slotSetFilter( const QString &filter );