[banshee] Video Folder setting for MassStorage devices
- From: Gabriel Burt <gburt src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [banshee] Video Folder setting for MassStorage devices
- Date: Thu, 30 Jul 2009 00:15:38 +0000 (UTC)
commit 7f6610fda29544eb7ac59df88286d84358b4793d
Author: Jack Deslippe <jdeslip gmail com>
Date: Wed Jul 29 17:12:02 2009 -0700
Video Folder setting for MassStorage devices
Set default for WebOS and Android, and reads video_folders in .is_audio_player
Signed-off-by: Gabriel Burt <gabriel burt gmail com>
.../Banshee.HalBackend/DeviceMediaCapabilities.cs | 10 ++++
.../Banshee.Hardware/IDeviceMediaCapabilities.cs | 1 +
.../Banshee.Dap.MassStorage/AndroidDevice.cs | 11 ++++-
.../Banshee.Dap.MassStorage/MassStorageDevice.cs | 20 ++++----
.../Banshee.Dap.MassStorage/MassStorageSource.cs | 49 +++++++++++++++++++-
.../Banshee.Dap.MassStorage/WebOSDevice.cs | 8 +++
6 files changed, 87 insertions(+), 12 deletions(-)
---
diff --git a/src/Backends/Banshee.Hal/Banshee.HalBackend/DeviceMediaCapabilities.cs b/src/Backends/Banshee.Hal/Banshee.HalBackend/DeviceMediaCapabilities.cs
index 1d47842..ec0575d 100644
--- a/src/Backends/Banshee.Hal/Banshee.HalBackend/DeviceMediaCapabilities.cs
+++ b/src/Backends/Banshee.Hal/Banshee.HalBackend/DeviceMediaCapabilities.cs
@@ -72,6 +72,16 @@ namespace Banshee.HalBackend
}
}
+ private string [] video_folders;
+ public string [] VideoFolders {
+ get {
+ if (video_folders == null) {
+ video_folders = SafelyGetStringList ("portable_audio_player.video_folders");
+ }
+ return video_folders;
+ }
+ }
+
private string cover_art_file_name;
public string CoverArtFileName {
get {
diff --git a/src/Core/Banshee.Services/Banshee.Hardware/IDeviceMediaCapabilities.cs b/src/Core/Banshee.Services/Banshee.Hardware/IDeviceMediaCapabilities.cs
index 44b282e..3f3de49 100644
--- a/src/Core/Banshee.Services/Banshee.Hardware/IDeviceMediaCapabilities.cs
+++ b/src/Core/Banshee.Services/Banshee.Hardware/IDeviceMediaCapabilities.cs
@@ -36,6 +36,7 @@ namespace Banshee.Hardware
int CoverArtSize { get; }
int FolderDepth { get; }
string [] AudioFolders { get; }
+ string [] VideoFolders { get; }
string CoverArtFileType { get; }
string CoverArtFileName { get; }
string [] PlaylistFormats { get; }
diff --git a/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/AndroidDevice.cs b/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/AndroidDevice.cs
index c466d4b..ca5e3a9 100644
--- a/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/AndroidDevice.cs
+++ b/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/AndroidDevice.cs
@@ -55,7 +55,12 @@ namespace Banshee.Dap.MassStorage
private static string [] audio_folders = new string [] {
"Music/",
- "amazonmp3/"
+ "amazonmp3/",
+ "Video/"
+ };
+
+ private static string [] video_folders = new string [] {
+ "Video/"
};
private static string [] playlist_formats = new string [] {
@@ -92,6 +97,10 @@ namespace Banshee.Dap.MassStorage
get { return audio_folders; }
}
+ public override string [] VideoFolders {
+ get { return video_folders; }
+ }
+
public override string [] PlaylistFormats {
get { return playlist_formats; }
}
diff --git a/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageDevice.cs b/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageDevice.cs
index 2ee2a1a..1a1b91d 100644
--- a/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageDevice.cs
+++ b/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageDevice.cs
@@ -81,7 +81,7 @@ namespace Banshee.Dap.MassStorage
Hyena.Log.DebugFormat ("Found RockBox Device");
name = Catalog.GetString ("Rockbox Device");
audio_folders = new string [] {"Music/","Videos/"};
- //video_folders = new string [] {"Videos/"};
+ video_folders = new string [] {"Videos/"};
folder_depth = 2;
playback_mime_types = new string [] {"application/ogg","audio/x-ms-wma","audio/mpeg","audio/mp4","audio/x-wav"};
playlist_formats = new string [] {"audio/x-mpegurl"};
@@ -101,20 +101,17 @@ namespace Banshee.Dap.MassStorage
case "cover_art_file_type": cover_art_file_type = item.Value[0].ToLower (); break;
case "cover_art_file_name": cover_art_file_name = item.Value[0]; break;
case "cover_art_size": Int32.TryParse (item.Value[0], out cover_art_size); break;
-
+ case "audio_folders": audio_folders = item.Value; break;
+ case "video_folders": video_folders = item.Value; break;
+ case "output_formats": playback_mime_types = item.Value; break;
+ case "playlist_format": playlist_formats = item.Value; break;
+ case "playlist_path": playlist_path = item.Value[0]; break;
case "folder_depth":
if (!Int32.TryParse (item.Value[0], out folder_depth)) {
folder_depth = -1;
}
Hyena.Log.DebugFormat ("MassStorageDevice.LoadDeviceConfiguration {0}", folder_depth);
break;
- case "audio_folders": audio_folders = item.Value; break;
-
- case "output_formats": playback_mime_types = item.Value; break;
-
- case "playlist_format": playlist_formats = item.Value; break;
- case "playlist_path": playlist_path = item.Value[0]; break;
-
default:
throw new ApplicationException ("unsupported key");
}
@@ -170,6 +167,11 @@ namespace Banshee.Dap.MassStorage
public virtual string [] AudioFolders {
get { return audio_folders; }
}
+
+ private string [] video_folders = new string[0];
+ public virtual string [] VideoFolders {
+ get { return video_folders; }
+ }
private string cover_art_file_type;
public virtual string CoverArtFileType {
diff --git a/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs b/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs
index c16250c..f319119 100644
--- a/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs
+++ b/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/MassStorageSource.cs
@@ -116,6 +116,13 @@ namespace Banshee.Dap.MassStorage
);
}
+ if (VideoFolders.Length > 0 && !String.IsNullOrEmpty (VideoFolders[0])) {
+ AddDapProperty (String.Format (
+ Catalog.GetPluralString ("Video Folder", "Video Folders", VideoFolders.Length), VideoFolders.Length),
+ System.String.Join ("\n", VideoFolders)
+ );
+ }
+
if (FolderDepth != -1) {
AddDapProperty (Catalog.GetString ("Required Folder Depth"), FolderDepth.ToString ());
}
@@ -359,6 +366,25 @@ namespace Banshee.Dap.MassStorage
set { write_path = value; }
}
+ private string write_path_video = null;
+ public string WritePathVideo {
+ get {
+ if (write_path_video == null) {
+ write_path_video = BaseDirectory;
+ // Some Devices May Have a Separate Video Directory
+ if (VideoFolders.Length > 0) {
+ write_path_video = Banshee.Base.Paths.Combine (write_path_video, VideoFolders[0]);
+ } else if (AudioFolders.Length > 0) {
+ write_path_video = Banshee.Base.Paths.Combine (write_path_video, AudioFolders[0]);
+ write_path_video = Banshee.Base.Paths.Combine (write_path_video, "Videos");
+ }
+ }
+ return write_path_video;
+ }
+
+ set { write_path_video = value; }
+ }
+
private string [] audio_folders;
protected string [] AudioFolders {
get {
@@ -370,6 +396,17 @@ namespace Banshee.Dap.MassStorage
set { audio_folders = value; }
}
+ private string [] video_folders;
+ protected string [] VideoFolders {
+ get {
+ if (video_folders == null) {
+ video_folders = HasMediaCapabilities ? MediaCapabilities.VideoFolders : new string[0];
+ }
+ return video_folders;
+ }
+ set { video_folders = value; }
+ }
+
protected IEnumerable<string> BaseDirectories {
get {
if (AudioFolders.Length == 0) {
@@ -551,12 +588,16 @@ namespace Banshee.Dap.MassStorage
private string GetTrackPath (TrackInfo track, string ext)
{
string file_path = null;
-
+
if (track.HasAttribute (TrackMediaAttributes.Podcast)) {
string album = FileNamePattern.Escape (track.DisplayAlbumTitle);
string title = FileNamePattern.Escape (track.DisplayTrackTitle);
file_path = System.IO.Path.Combine ("Podcasts", album);
file_path = System.IO.Path.Combine (file_path, title);
+ } else if (track.HasAttribute (TrackMediaAttributes.VideoStream)) {
+ string album = FileNamePattern.Escape (track.DisplayAlbumTitle);
+ string title = FileNamePattern.Escape (track.DisplayTrackTitle);
+ file_path = System.IO.Path.Combine (album, title);
} else if (ms_device == null || !ms_device.GetTrackPath (track, out file_path)) {
// If the folder_depth property exists, we have to put the files in a hiearchy of
// the exact given depth (not including the mount point/audio_folder).
@@ -601,7 +642,11 @@ namespace Banshee.Dap.MassStorage
}
}
- file_path = System.IO.Path.Combine (WritePath, file_path);
+ if (track.HasAttribute (TrackMediaAttributes.VideoStream)) {
+ file_path = System.IO.Path.Combine (WritePathVideo, file_path);
+ } else {
+ file_path = System.IO.Path.Combine (WritePath, file_path);
+ }
file_path += ext;
return file_path;
diff --git a/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/WebOSDevice.cs b/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/WebOSDevice.cs
index 8220aaf..9b3b103 100644
--- a/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/WebOSDevice.cs
+++ b/src/Dap/Banshee.Dap.MassStorage/Banshee.Dap.MassStorage/WebOSDevice.cs
@@ -88,6 +88,10 @@ namespace Banshee.Dap.MassStorage
"AmazonMP3/"
};
+ private static string [] video_folders = new string [] {
+ "Videos/"
+ };
+
private static string [] icon_names = new string [] {
DapSource.FallbackIcon
};
@@ -121,6 +125,10 @@ namespace Banshee.Dap.MassStorage
get { return audio_folders; }
}
+ public override string [] VideoFolders {
+ get { return video_folders; }
+ }
+
public override string [] PlaybackMimeTypes {
get { return playback_mime_types; }
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]