File: Enable-switching-between-the-2-interfaces.patch

package info (click to toggle)
banshee 2.6.2-4
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 47,208 kB
  • sloc: xml: 163,694; cs: 137,409; sh: 11,650; ansic: 4,790; makefile: 2,922; python: 38
file content (140 lines) | stat: -rw-r--r-- 5,204 bytes parent folder | download | duplicates (3)
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
From: Didier Roche <didrocks@ubuntu.com>
Date: Mon, 5 Jul 2010 13:15:27 +0200
Subject: Enable switching between the 2 interfaces

This enables switching between the 2 interfaces, even when the classic interface
is started.
---
 .../Resources/core-ui-actions-layout.xml           |  1 +
 .../Banshee.MeeGo/Banshee.MeeGo/MeeGoPanel.cs      |  9 +++++
 .../Banshee.MeeGo/Banshee.MeeGo/MeeGoService.cs    | 42 ++++++++++++++++++++--
 3 files changed, 49 insertions(+), 3 deletions(-)

diff --git a/src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml b/src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml
index 290d330..ac8502c 100644
--- a/src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml
+++ b/src/Core/Banshee.ThickClient/Resources/core-ui-actions-layout.xml
@@ -5,6 +5,7 @@
     <placeholder name="NextArrowButton"/>
     <placeholder name="SeekSlider"/>
     <placeholder name="TrackInfoDisplay"/>
+    <placeholder name="ExtensionToolBarPlaceHolder"/>
     <placeholder name="SourceActions">
         <toolitem name="RefreshSmartPlaylist" action="RefreshSmartPlaylistAction"/>
     </placeholder>
diff --git a/src/Extensions/Banshee.MeeGo/Banshee.MeeGo/MeeGoPanel.cs b/src/Extensions/Banshee.MeeGo/Banshee.MeeGo/MeeGoPanel.cs
index 6fad319..9f16ba7 100644
--- a/src/Extensions/Banshee.MeeGo/Banshee.MeeGo/MeeGoPanel.cs
+++ b/src/Extensions/Banshee.MeeGo/Banshee.MeeGo/MeeGoPanel.cs
@@ -105,9 +105,18 @@ namespace Banshee.MeeGo
 
         public void Hide ()
         {
+            window_panel.Hide ();
             if (embedded_panel != null) {
                 embedded_panel.Hide ();
             }
         }
+
+        public void Show ()
+        {
+            window_panel.Show ();
+            if (embedded_panel != null) {
+                embedded_panel.Show ();
+            }
+        }
     }
 }
diff --git a/src/Extensions/Banshee.MeeGo/Banshee.MeeGo/MeeGoService.cs b/src/Extensions/Banshee.MeeGo/Banshee.MeeGo/MeeGoService.cs
index 5aae94e..d615b4e 100644
--- a/src/Extensions/Banshee.MeeGo/Banshee.MeeGo/MeeGoService.cs
+++ b/src/Extensions/Banshee.MeeGo/Banshee.MeeGo/MeeGoService.cs
@@ -26,6 +26,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using Mono.Unix;
 using System;
 using Gtk;
 using MeeGo.Panel;
@@ -38,6 +39,7 @@ using Banshee.Sources;
 using Banshee.ServiceStack;
 using Banshee.MediaEngine;
 using Banshee.Gui;
+using Banshee.Gui.Widgets;
 
 namespace Banshee.MeeGo
 {
@@ -84,6 +86,7 @@ namespace Banshee.MeeGo
             }
 
             Initialize ();
+            AddSwitchToPrimaryInterface ();
 
             ServiceManager.ServiceStarted -= OnServiceStarted;
 
@@ -100,12 +103,12 @@ namespace Banshee.MeeGo
             panel = MeeGoPanel.Instance;
 
             if (panel == null) {
-                Log.Warning ("Netbook extension initialized without a panel");
+                Log.Information ("Netbook extension initialized with hidden panel");
+                //AddSwitchToPrimaryInterface ();
                 return;
-            } else {
-                elements_service.PrimaryWindow.Hide ();
             }
 
+            elements_service.PrimaryWindow.Hide ();
             panel.BuildContents ();
 
             elements_service.PrimaryWindowClose = () => {
@@ -115,8 +118,30 @@ namespace Banshee.MeeGo
 
         }
 
+        private void AddSwitchToPrimaryInterface ()
+        {
+            // Add switcher to primary interface:
+            var app_button = new Button (new Image () {
+                IconSize = (int)IconSize.LargeToolbar,
+                IconName = "media-player-banshee"
+            }) {
+                TooltipText = Catalog.GetString ("Show the Netbook interface")
+            };
+            app_button.Clicked += (o, e) => {
+                //ServiceManager.SourceManager.SetActiveSource (ServiceManager.SourceManager.MusicLibrary);
+                ServiceManager.Get<MeeGoService> ().PresentNetbookInterface ();
+            };
+            Toolbar header_toolbar;
+            InterfaceActionService action_service;
+            action_service = ServiceManager.Get<InterfaceActionService> ();
+            header_toolbar = (Toolbar)action_service.UIManager.GetWidget ("/HeaderToolbar");
+            app_button.ShowAll ();
+            action_service.PopulateToolbarPlaceholder (header_toolbar, "/HeaderToolbar/ExtensionToolBarPlaceHolder", app_button);
+        }
+
         public void PresentPrimaryInterface ()
         {
+            Log.Information ("Switch to traditional interface");
             elements_service.PrimaryWindow.Maximize ();
             elements_service.PrimaryWindow.Present ();
             if (panel != null) {
@@ -124,6 +149,17 @@ namespace Banshee.MeeGo
             }
         }
 
+        public void PresentNetbookInterface ()
+        {
+            Log.Information ("Switch to Netbook interface");
+            if (panel == null) {
+                panel = new MeeGoPanel ();
+                Initialize ();
+            }
+            panel.Show ();
+            elements_service.PrimaryWindow.Hide ();
+        }
+
         public void Dispose ()
         {
             if (panel != null) {