banshee r3785 - in trunk/banshee: . src/Core/Banshee.Core/Banshee.Collection src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp src/Libraries/Hyena.Gui/Hyena.Query.Gui src/Libraries/Hyena/Hyena src/Libraries/Hyena/Hyena.Query src/Libraries/Mtp/Mtp
- From: gburt svn gnome org
- To: svn-commits-list gnome org
- Subject: banshee r3785 - in trunk/banshee: . src/Core/Banshee.Core/Banshee.Collection src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp src/Libraries/Hyena.Gui/Hyena.Query.Gui src/Libraries/Hyena/Hyena src/Libraries/Hyena/Hyena.Query src/Libraries/Mtp/Mtp
- Date: Wed, 16 Apr 2008 21:28:55 +0100 (BST)
Author: gburt
Date: Wed Apr 16 21:28:54 2008
New Revision: 3785
URL: http://svn.gnome.org/viewvc/banshee?rev=3785&view=rev
Log:
2008-04-16 Gabriel Burt <gabriel burt gmail com>
* src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpSource.cs: Specify what
folder to upload the track to - Music or Video.
* src/Libraries/Mtp/Mtp/MtpDevice.cs: Set the parent_id on the track
before uploading it.
* src/Libraries/Mtp/Mtp/Track.cs: Improve the DetectFileType method.
* src/Libraries/Hyena/Hyena.Query/FileSizeQueryValue.cs:
* src/Libraries/Hyena/Hyena.Query/RelativeTimeSpanQueryValue.cs:
* src/Libraries/Hyena/Hyena.Query/TimeSpanQueryValue.cs: Parse values as
doubles instead of ints, allowing queryies and smart playlists to specy
"size>2.2MB" for instance.
* src/Libraries/Hyena.Gui/Hyena.Query.Gui/FileSizeQueryValueEntry.cs:
* src/Libraries/Hyena.Gui/Hyena.Query.Gui/TimeSpanQueryValueEntry.cs: Add
a single decimal place to the spin button.
* src/Libraries/Hyena/Hyena/StringUtil.cs: Improve FormatDouble method,
now returns 1 if N < 1.1, etc.
Modified:
trunk/banshee/ChangeLog
trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs
trunk/banshee/src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpSource.cs
trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Query.Gui/FileSizeQueryValueEntry.cs
trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Query.Gui/TimeSpanQueryValueEntry.cs
trunk/banshee/src/Libraries/Hyena/Hyena.Query/FileSizeQueryValue.cs
trunk/banshee/src/Libraries/Hyena/Hyena.Query/RelativeTimeSpanQueryValue.cs
trunk/banshee/src/Libraries/Hyena/Hyena.Query/TimeSpanQueryValue.cs
trunk/banshee/src/Libraries/Hyena/Hyena/StringUtil.cs
trunk/banshee/src/Libraries/Mtp/Mtp/MtpDevice.cs
trunk/banshee/src/Libraries/Mtp/Mtp/Track.cs
Modified: trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs
==============================================================================
--- trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs (original)
+++ trunk/banshee/src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs Wed Apr 16 21:28:54 2008
@@ -305,7 +305,7 @@
get { return can_play; }
set { can_play = value; }
}
-
+
private TrackMediaAttributes media_attributes = TrackMediaAttributes.Default;
public virtual TrackMediaAttributes MediaAttributes {
get { return media_attributes; }
Modified: trunk/banshee/src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpSource.cs
==============================================================================
--- trunk/banshee/src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpSource.cs (original)
+++ trunk/banshee/src/Dap/Banshee.Dap.Mtp/Banshee.Dap.Mtp/MtpSource.cs Wed Apr 16 21:28:54 2008
@@ -179,7 +179,7 @@
writer.Write ("foo");
}
Track mtp_track = new Track (System.IO.Path.GetFileName (empty_file.LocalPath), 3);
- mtp_device.UploadTrack (empty_file.AbsolutePath, mtp_track);
+ mtp_device.UploadTrack (empty_file.AbsolutePath, mtp_track, mtp_device.MusicFolder);
mtp_device.Remove (mtp_track);
} finally {
Banshee.IO.File.Delete (empty_file);
@@ -192,8 +192,6 @@
{
base.Rename (newName);
mtp_device.Name = newName;
-
- Console.WriteLine ("BytesUsed = {0}", BytesUsed);
}
public override long BytesUsed {
@@ -226,7 +224,9 @@
return;
Track mtp_track = TrackInfoToMtpTrack (track);
- mtp_device.UploadTrack (track.Uri.AbsolutePath, mtp_track);
+ bool video = (track.MediaAttributes & TrackMediaAttributes.VideoStream) != 0;
+ Console.WriteLine ("Sending track {0}, is video? {1}", track, video);
+ mtp_device.UploadTrack (track.Uri.AbsolutePath, mtp_track, video ? mtp_device.VideoFolder : mtp_device.MusicFolder);
MtpTrackInfo new_track = new MtpTrackInfo (mtp_track);
new_track.PrimarySource = this;
Modified: trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Query.Gui/FileSizeQueryValueEntry.cs
==============================================================================
--- trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Query.Gui/FileSizeQueryValueEntry.cs (original)
+++ trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Query.Gui/FileSizeQueryValueEntry.cs Wed Apr 16 21:28:54 2008
@@ -45,12 +45,14 @@
FileSizeFactor.None, FileSizeFactor.KB, FileSizeFactor.MB, FileSizeFactor.GB
};
+ bool combo_set = false;
+
// Relative: [<|>] [num] [minutes|hours] ago
// TODO: Absolute: [>|>=|=|<|<=] [date/time]
public FileSizeQueryValueEntry () : base ()
{
spin_button = new SpinButton (0.0, 1.0, 1.0);
- spin_button.Digits = 0;
+ spin_button.Digits = 1;
spin_button.WidthChars = 4;
spin_button.SetRange (0.0, Double.MaxValue);
Add (spin_button);
@@ -60,7 +62,7 @@
combo.AppendText (Catalog.GetString ("KB"));
combo.AppendText (Catalog.GetString ("MB"));
combo.AppendText (Catalog.GetString ("GB"));
- combo.Realized += delegate { combo.Active = 2; };
+ combo.Realized += delegate { if (!combo_set) { combo.Active = 2; } };
Add (combo);
spin_button.ValueChanged += HandleValueChanged;
@@ -73,6 +75,8 @@
spin_button.ValueChanged -= HandleValueChanged;
combo.Changed -= HandleValueChanged;
query_value = value as FileSizeQueryValue;
+ spin_button.Value = query_value.FactoredValue;
+ combo_set = true;
combo.Active = Array.IndexOf (factors, query_value.Factor);
spin_button.ValueChanged += HandleValueChanged;
combo.Changed += HandleValueChanged;
@@ -81,7 +85,7 @@
protected void HandleValueChanged (object o, EventArgs args)
{
- query_value.SetValue (spin_button.ValueAsInt, factors [combo.Active]);
+ query_value.SetValue (spin_button.Value, factors [combo.Active]);
}
}
}
Modified: trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Query.Gui/TimeSpanQueryValueEntry.cs
==============================================================================
--- trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Query.Gui/TimeSpanQueryValueEntry.cs (original)
+++ trunk/banshee/src/Libraries/Hyena.Gui/Hyena.Query.Gui/TimeSpanQueryValueEntry.cs Wed Apr 16 21:28:54 2008
@@ -50,7 +50,7 @@
public TimeSpanQueryValueEntry () : base ()
{
spin_button = new SpinButton (0.0, 1.0, 1.0);
- spin_button.Digits = 0;
+ spin_button.Digits = 1;
spin_button.WidthChars = 4;
spin_button.SetRange (0.0, Double.MaxValue);
Add (spin_button);
@@ -87,7 +87,7 @@
protected virtual void HandleValueChanged (object o, EventArgs args)
{
- query_value.SetRelativeValue (spin_button.ValueAsInt, factors [combo.Active]);
+ query_value.SetRelativeValue (spin_button.Value, factors [combo.Active]);
}
}
}
Modified: trunk/banshee/src/Libraries/Hyena/Hyena.Query/FileSizeQueryValue.cs
==============================================================================
--- trunk/banshee/src/Libraries/Hyena/Hyena.Query/FileSizeQueryValue.cs (original)
+++ trunk/banshee/src/Libraries/Hyena/Hyena.Query/FileSizeQueryValue.cs Wed Apr 16 21:28:54 2008
@@ -60,16 +60,21 @@
DetermineFactor ();
}
+ public double FactoredValue {
+ get { return (double)value / (double)factor; }
+ }
+
public override void ParseUserQuery (string input)
{
if (input.Length > 1 && (input[input.Length - 1] == 'b' || input[input.Length - 1] == 'B')) {
input = input.Substring (0, input.Length - 1);
}
- base.ParseUserQuery (input);
+ double double_value;
+ IsEmpty = !Double.TryParse (input, out double_value);
if (IsEmpty && input.Length > 1) {
- base.ParseUserQuery (input.Substring (0, input.Length - 1));
+ IsEmpty = !Double.TryParse (input.Substring (0, input.Length - 1), out double_value);
}
if (!IsEmpty) {
@@ -79,7 +84,7 @@
case 'g': case 'G': factor = FileSizeFactor.GB; break;
default : factor = FileSizeFactor.None; break;
}
- value *= (long) factor;
+ value = (long) ((double)factor * double_value);
}
}
@@ -89,9 +94,9 @@
DetermineFactor ();
}
- public void SetValue (int value, FileSizeFactor factor)
+ public void SetValue (double value, FileSizeFactor factor)
{
- this.value = (long) value * (long) factor;
+ this.value = (long) (value * (double)factor);
this.factor = factor;
IsEmpty = false;
}
@@ -100,7 +105,7 @@
{
if (!IsEmpty && value != 0) {
foreach (FileSizeFactor factor in Enum.GetValues (typeof(FileSizeFactor))) {
- if (value >= (long) factor) {
+ if (value >= (double) factor) {
this.factor = factor;
}
}
@@ -110,8 +115,9 @@
public override string ToUserQuery ()
{
if (factor != FileSizeFactor.None) {
- return String.Format ("{0} {1}",
- IntValue == 0 ? 0 : (IntValue / (long) factor),
+ return String.Format (
+ "{0} {1}",
+ IntValue == 0 ? "0" : StringUtil.FormatDouble (((double)IntValue / (double)factor)),
factor.ToString ()
);
} else {
Modified: trunk/banshee/src/Libraries/Hyena/Hyena.Query/RelativeTimeSpanQueryValue.cs
==============================================================================
--- trunk/banshee/src/Libraries/Hyena/Hyena.Query/RelativeTimeSpanQueryValue.cs (original)
+++ trunk/banshee/src/Libraries/Hyena/Hyena.Query/RelativeTimeSpanQueryValue.cs Wed Apr 16 21:28:54 2008
@@ -55,11 +55,11 @@
get { return "date"; }
}
- public override long Offset {
+ public override double Offset {
get { return -offset; }
}
- public override void SetUserRelativeValue (long offset, TimeFactor factor)
+ public override void SetUserRelativeValue (double offset, TimeFactor factor)
{
SetRelativeValue (-offset, factor);
}
@@ -75,7 +75,7 @@
return DateTimeUtil.FromDateTime (DateTime.Now + TimeSpan.FromSeconds ((double) offset)).ToString (System.Globalization.CultureInfo.InvariantCulture);
}
- protected override string FactorString (TimeFactor factor, int count)
+ protected override string FactorString (TimeFactor factor, double count)
{
string translated = base.FactorString (factor, count);
return (translated == null) ? null : String.Format (Catalog.GetString ("{0} ago"), translated);
Modified: trunk/banshee/src/Libraries/Hyena/Hyena.Query/TimeSpanQueryValue.cs
==============================================================================
--- trunk/banshee/src/Libraries/Hyena/Hyena.Query/TimeSpanQueryValue.cs (original)
+++ trunk/banshee/src/Libraries/Hyena/Hyena.Query/TimeSpanQueryValue.cs Wed Apr 16 21:28:54 2008
@@ -57,7 +57,7 @@
public static readonly Operator LessThan = new Operator ("lessThan", "< {0}", "<");
public static readonly Operator GreaterThan = new Operator ("greaterThan", "> {0}", ">");*/
- protected long offset = 0;
+ protected double offset = 0;
protected TimeFactor factor = TimeFactor.Second;
public override string XmlElementName {
@@ -74,7 +74,7 @@
get { return offset; }
}
- public virtual long Offset {
+ public virtual double Offset {
get { return offset; }
}
@@ -82,19 +82,20 @@
get { return factor; }
}
- public long FactoredValue {
- get { return Offset / (long) factor; }
+ public double FactoredValue {
+ get { return Offset / (double) factor; }
}
- private static Regex number_regex = new Regex ("\\d+", RegexOptions.Compiled);
+ // FIXME replace period in following with culture-dependent character
+ private static Regex number_regex = new Regex ("\\d+(\\.\\d+)?", RegexOptions.Compiled);
public override void ParseUserQuery (string input)
{
Match match = number_regex.Match (input);
if (match != Match.Empty && match.Groups.Count > 0) {
- int val = Convert.ToInt32 (match.Groups[0].Captures[0].Value);
+ double val = Convert.ToDouble (match.Groups[0].Captures[0].Value);
foreach (TimeFactor factor in Enum.GetValues (typeof(TimeFactor))) {
if (input == FactorString (factor, val)) {
- SetUserRelativeValue ((long) val, factor);
+ SetUserRelativeValue (val, factor);
return;
}
}
@@ -104,25 +105,25 @@
public override string ToUserQuery ()
{
- return FactorString (factor, (int) FactoredValue);
+ return FactorString (factor, FactoredValue);
}
- public virtual void SetUserRelativeValue (long offset, TimeFactor factor)
+ public virtual void SetUserRelativeValue (double offset, TimeFactor factor)
{
SetRelativeValue (offset, factor);
}
- public void SetRelativeValue (long offset, TimeFactor factor)
+ public void SetRelativeValue (double offset, TimeFactor factor)
{
this.factor = factor;
- this.offset = offset * (long) factor;
+ this.offset = (long) (offset * (double)factor);
IsEmpty = false;
}
public void LoadString (string val)
{
try {
- SetRelativeValue (Convert.ToInt64 (val), TimeFactor.Second);
+ SetRelativeValue (Convert.ToDouble (val), TimeFactor.Second);
DetermineFactor ();
} catch {
IsEmpty = true;
@@ -131,9 +132,9 @@
protected void DetermineFactor ()
{
- long val = Math.Abs (offset);
+ double val = Math.Abs (offset);
foreach (TimeFactor factor in Enum.GetValues (typeof(TimeFactor))) {
- if (val >= (long) factor) {
+ if (val >= (double) factor) {
this.factor = factor;
}
}
@@ -153,21 +154,22 @@
return Convert.ToString (offset * 1000, System.Globalization.CultureInfo.InvariantCulture);
}
- protected virtual string FactorString (TimeFactor factor, int count)
+ protected virtual string FactorString (TimeFactor factor, double count)
{
string translated = null;
+ int plural_count = StringUtil.DoubleToPluralInt (count);
switch (factor) {
- case TimeFactor.Second: translated = Catalog.GetPluralString ("{0} second", "{0} seconds", count); break;
- case TimeFactor.Minute: translated = Catalog.GetPluralString ("{0} minute", "{0} minutes", count); break;
- case TimeFactor.Hour: translated = Catalog.GetPluralString ("{0} hour", "{0} hours", count); break;
- case TimeFactor.Day: translated = Catalog.GetPluralString ("{0} day", "{0} days", count); break;
- case TimeFactor.Week: translated = Catalog.GetPluralString ("{0} week", "{0} weeks", count); break;
- case TimeFactor.Month: translated = Catalog.GetPluralString ("{0} month", "{0} months", count); break;
- case TimeFactor.Year: translated = Catalog.GetPluralString ("{0} year", "{0} years", count); break;
+ case TimeFactor.Second: translated = Catalog.GetPluralString ("{0} second", "{0} seconds", plural_count); break;
+ case TimeFactor.Minute: translated = Catalog.GetPluralString ("{0} minute", "{0} minutes", plural_count); break;
+ case TimeFactor.Hour: translated = Catalog.GetPluralString ("{0} hour", "{0} hours", plural_count); break;
+ case TimeFactor.Day: translated = Catalog.GetPluralString ("{0} day", "{0} days", plural_count); break;
+ case TimeFactor.Week: translated = Catalog.GetPluralString ("{0} week", "{0} weeks", plural_count); break;
+ case TimeFactor.Month: translated = Catalog.GetPluralString ("{0} month", "{0} months", plural_count); break;
+ case TimeFactor.Year: translated = Catalog.GetPluralString ("{0} year", "{0} years", plural_count); break;
default: return null;
}
- return String.Format (translated, count);
+ return String.Format (translated, StringUtil.FormatDouble (count));
}
}
}
Modified: trunk/banshee/src/Libraries/Hyena/Hyena/StringUtil.cs
==============================================================================
--- trunk/banshee/src/Libraries/Hyena/Hyena/StringUtil.cs (original)
+++ trunk/banshee/src/Libraries/Hyena/Hyena/StringUtil.cs Wed Apr 16 21:28:54 2008
@@ -115,7 +115,8 @@
public static string FormatDouble (double num)
{
- if (num == (int)num)
+ // Don't show x.0
+ if (num - (int)num < 0.1)
return Convert.ToString ((int)num);
else
return String.Format ("{0:0.0}", num);
Modified: trunk/banshee/src/Libraries/Mtp/Mtp/MtpDevice.cs
==============================================================================
--- trunk/banshee/src/Libraries/Mtp/Mtp/MtpDevice.cs (original)
+++ trunk/banshee/src/Libraries/Mtp/Mtp/MtpDevice.cs Wed Apr 16 21:28:54 2008
@@ -221,17 +221,7 @@
public void UploadTrack (string path, Track track, Folder folder)
{
- UploadTrack (path, track, folder);
- }
-
- public void UploadTrack (string path, Track track)
- {
- this.UploadTrack(path, track, new Folder(0, 0, "", this), null);
- }
-
- public void UploadTrack (string path, Track track, ProgressFunction callback)
- {
- this.UploadTrack(path, track, new Folder(0, 0, "", this), callback);
+ UploadTrack (path, track, folder, null);
}
public void UploadTrack (string path, Track track, Folder folder, ProgressFunction callback)
@@ -240,6 +230,8 @@
throw new ArgumentNullException("path");
if (track == null)
throw new ArgumentNullException("track");
+
+ track.trackStruct.parent_id = folder.FolderId;
// We send the trackstruct by ref so that when the file_id gets filled in, our copy is updated
Track.SendTrack (Handle, path, ref track.trackStruct, callback, IntPtr.Zero, folder.FolderId);
Modified: trunk/banshee/src/Libraries/Mtp/Mtp/Track.cs
==============================================================================
--- trunk/banshee/src/Libraries/Mtp/Mtp/Track.cs (original)
+++ trunk/banshee/src/Libraries/Mtp/Mtp/Track.cs Wed Apr 16 21:28:54 2008
@@ -36,7 +36,7 @@
{
internal TrackStruct trackStruct;
private MtpDevice device;
-
+
public uint FileId {
get { return trackStruct.item_id; }
}
@@ -162,40 +162,18 @@
private static FileType DetectFileType (Track track)
{
- if(track.FileName.EndsWith(".asf", System.StringComparison.OrdinalIgnoreCase))
- return FileType.ASF;
-
- if(track.FileName.EndsWith(".avi", System.StringComparison.OrdinalIgnoreCase))
- return FileType.AVI;
-
- if(track.FileName.EndsWith(".BMP", System.StringComparison.OrdinalIgnoreCase))
- return FileType.BMP;
-
- if(track.FileName.EndsWith(".JPEG", System.StringComparison.OrdinalIgnoreCase)
- || track.FileName.EndsWith(".JPG", System.StringComparison.OrdinalIgnoreCase))
- return FileType.JPEG;
-
- if(track.FileName.EndsWith(".MP3", System.StringComparison.OrdinalIgnoreCase))
- return FileType.MP3;
-
- if(track.FileName.EndsWith(".MPG", System.StringComparison.OrdinalIgnoreCase)
- || track.FileName.EndsWith(".MPEG", System.StringComparison.OrdinalIgnoreCase))
- return FileType.MPEG;
-
- if(track.FileName.EndsWith(".OGG", System.StringComparison.OrdinalIgnoreCase)
- || track.FileName.EndsWith(".OGM", System.StringComparison.OrdinalIgnoreCase))
- return FileType.OGG;
-
- if(track.FileName.EndsWith(".PNG", System.StringComparison.OrdinalIgnoreCase))
- return FileType.PNG;
-
- if(track.FileName.EndsWith(".WAV", System.StringComparison.OrdinalIgnoreCase))
- return FileType.WAV;
-
- if(track.FileName.EndsWith(".WMA", System.StringComparison.OrdinalIgnoreCase))
- return FileType.WMA;
+ string ext = System.IO.Path.GetExtension (track.FileName);
- return FileType.UNKNOWN;
+ // Strip leading .
+ if (ext.Length > 0)
+ ext = ext.Substring (1, ext.Length - 1);
+
+ Console.WriteLine ("DetectFileType for {0} is {1}", track.FileName, ext);
+
+ FileType type = (FileType) Enum.Parse (typeof(FileType), ext, true);
+ //if (type == null)
+ // return FileType.UNKNOWN;
+ return type;
}
internal static void DestroyTrack (IntPtr track)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]