Index: src/Extensions/Banshee.Sample/Banshee.Sample/SampleSource.cs
===================================================================
--- src/Extensions/Banshee.Sample/Banshee.Sample/SampleSource.cs	(revision 4994)
+++ src/Extensions/Banshee.Sample/Banshee.Sample/SampleSource.cs	(working copy)
@@ -1,5 +1,5 @@
 //
-// NowPlayingSource.cs
+// SampleSource.cs
 //
 // Author:
 //   Aaron Bockover <abockover@novell.com>
Index: src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellAlbum.cs
===================================================================
--- src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellAlbum.cs	(revision 4994)
+++ src/Core/Banshee.ThickClient/Banshee.Collection.Gui/ColumnCellAlbum.cs	(working copy)
@@ -95,7 +95,7 @@
             // Compute the layout sizes for both lines for centering on the cell
             int old_size = layout.FontDescription.Size;
             
-            layout.SetText (album.Title);
+            layout.SetText (NameConversionHelper.DisplayAlbum (album.Title));
             layout.GetPixelSize (out fl_width, out fl_height);
             
             if (!String.IsNullOrEmpty (album.ArtistName)) {
@@ -118,12 +118,12 @@
             }
             
             // Render the first line, resetting the state
-            layout.SetText (album.Title);
+            layout.SetText (NameConversionHelper.DisplayAlbum (album.Title));
             layout.FontDescription.Weight = Pango.Weight.Bold;
             layout.FontDescription.Size = old_size;
             layout.FontDescription.Style = Pango.Style.Normal;
             
-            layout.SetText (album.Title);
+            layout.SetText (NameConversionHelper.DisplayAlbum (album.Title));
             
             context.Context.MoveTo (x, y);
             text_color.A = 1;
Index: src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumInfo.cs
===================================================================
--- src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumInfo.cs	(revision 4994)
+++ src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumInfo.cs	(working copy)
@@ -87,7 +87,7 @@
             }
 
             if (String.IsNullOrEmpty (album.Title) || album.Title.Trim () == String.Empty) {
-                album.Title = Catalog.GetString ("Unknown Album");
+                album.Title = String.Empty;
             }
 
             using (IDataReader reader = ServiceManager.DbConnection.Query (select_command, artist.DbId, album.Title)) {
@@ -186,7 +186,7 @@
         
         [DatabaseColumn(Select = false)]
         protected string TitleLowered {
-            get { return Title == null ? null : Title.ToLower (); }
+            get { return NameConversionHelper.LoweredAlbum (Title); }
         }
 
         [DatabaseColumn]
@@ -197,7 +197,7 @@
 
         [DatabaseColumn(Select = false)]
         protected string ArtistNameLowered {
-            get { return ArtistName == null ? null : ArtistName.ToLower (); }
+            get { return NameConversionHelper.LoweredArtist (ArtistName); }
         }
 
         public override string ToString ()
Index: src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs
===================================================================
--- src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs	(revision 4994)
+++ src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs	(working copy)
@@ -156,6 +156,11 @@
                 // TODO get rid of unused artists/albums
             }
             
+
+            if (String.IsNullOrEmpty (TrackTitle) || TrackTitle.Trim () == String.Empty) {
+                TrackTitle = String.Empty;
+            }
+
             DateUpdated = DateTime.Now;
 
             bool is_new = (TrackId == 0);
@@ -398,7 +403,7 @@
         
         [DatabaseColumn(Select = false)]
         protected string TitleLowered {
-            get { return TrackTitle == null ? null : TrackTitle.ToLower (); }
+            get { return NameConversionHelper.LoweredTitle (TrackTitle); }
         }
 
         [DatabaseColumn(Select = false)]
Index: src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseArtistInfo.cs
===================================================================
--- src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseArtistInfo.cs	(revision 4994)
+++ src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseArtistInfo.cs	(working copy)
@@ -83,7 +83,7 @@
             }
 
             if (String.IsNullOrEmpty (artist.Name) || artist.Name.Trim () == String.Empty) {
-                artist.Name = Catalog.GetString ("Unknown Artist");
+                artist.Name = String.Empty;
             }
 
             using (IDataReader reader = ServiceManager.DbConnection.Query (select_command, artist.Name)) {
@@ -140,7 +140,7 @@
         
         [DatabaseColumn(Select = false)]
         protected string NameLowered {
-            get { return Name == null ? null : Name.ToLower (); }
+            get { return NameConversionHelper.LoweredArtist (Name); }
         }
 
         public override string ToString ()
Index: src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs
===================================================================
--- src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs	(revision 4994)
+++ src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs	(working copy)
@@ -90,7 +90,7 @@
 #region QueryField Definitions
 
         public static QueryField ArtistField = new QueryField (
-            "artist", "ArtistName",
+            "artist", "DisplayArtistName",
             Catalog.GetString ("Artist"), "CoreArtists.NameLowered", true,
             // Translators: These are unique search aliases for "artist".  Please, no spaces. Blank ok.
             Catalog.GetString ("artist"), Catalog.GetString ("by"), Catalog.GetString ("artists"),
@@ -108,7 +108,7 @@
         // TODO add IsCompilationField
 
         public static QueryField AlbumField = new QueryField (
-            "album", "AlbumTitle",
+            "album", "DisplayAlbumTitle",
             Catalog.GetString ("Album"), "CoreAlbums.TitleLowered", true,
             // Translators: These are unique search aliases for "album".  Please, no spaces. Blank ok.
             Catalog.GetString ("album"), Catalog.GetString ("on"), Catalog.GetString ("from"),
@@ -167,7 +167,7 @@
         );
 
         public static QueryField TitleField = new QueryField (
-            "title", "TrackTitle",
+            "title", "DisplayTrackTitle",
             Catalog.GetString ("Name"), "CoreTracks.TitleLowered", true,
             // Translators: These are unique search fields.  Please, no spaces. Blank ok.
             Catalog.GetString ("title"), Catalog.GetString ("titled"), Catalog.GetString ("name"), Catalog.GetString ("named"),
Index: src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs
===================================================================
--- src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs	(revision 4994)
+++ src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs	(working copy)
@@ -256,28 +256,19 @@
         
         public string DisplayArtistName { 
             get {
-                string name = ArtistName == null ? null : ArtistName.Trim ();
-                return String.IsNullOrEmpty (name)
-                    ? Catalog.GetString ("Unknown Artist") 
-                    : name; 
+                return NameConversionHelper.DisplayArtist (ArtistName);
             } 
         }
 
         public string DisplayAlbumTitle { 
             get { 
-                string title = AlbumTitle == null ? null : AlbumTitle.Trim ();
-                return String.IsNullOrEmpty (title) 
-                    ? Catalog.GetString ("Unknown Album") 
-                    : title; 
+                return NameConversionHelper.DisplayAlbum (AlbumTitle); 
             } 
         }
 
         public string DisplayTrackTitle { 
             get { 
-                string title = TrackTitle == null ? null : TrackTitle.Trim ();
-                return String.IsNullOrEmpty (title) 
-                    ? Catalog.GetString ("Unknown Title") 
-                    : title; 
+                return NameConversionHelper.DisplayTitle (TrackTitle);
             } 
         }     
 
Index: src/Core/Banshee.Core/Banshee.Collection/NameConversionHelper.cs
===================================================================
--- src/Core/Banshee.Core/Banshee.Collection/NameConversionHelper.cs	(revision 0)
+++ src/Core/Banshee.Core/Banshee.Collection/NameConversionHelper.cs	(revision 0)
@@ -0,0 +1,85 @@
+//
+// NameConversionHelper.cs
+//
+// Author:
+//   Andres G. Aragoneses <aaragoneses@novell.com>
+//
+// Copyright (C) 2009 Novell, Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+
+using Mono.Unix;
+
+namespace Banshee.Collection
+{
+    public static class NameConversionHelper
+    {
+        static string unknown_artist = null;
+        static string unknown_album = null;
+        static string unknown_title = null;
+
+        static NameConversionHelper ()
+        {
+            unknown_artist = Catalog.GetString ("Unknown Artist");
+            unknown_album = Catalog.GetString ("Unknown Album");
+            unknown_title = Catalog.GetString ("Unknown Title");
+        }
+        
+        public static string DisplayArtist (string orig_name)
+        {
+            return IsEmpty (orig_name) ? unknown_artist : orig_name.Trim ();
+        }
+
+        public static string DisplayAlbum (string orig_name)
+        {
+            return IsEmpty (orig_name) ? unknown_album : orig_name.Trim ();
+        }
+
+        public static string DisplayTitle (string orig_name)
+        {
+            return IsEmpty (orig_name) ? unknown_title : orig_name.Trim ();
+        }
+
+        static bool IsEmpty (string orig_name)
+        {
+            return (orig_name == null) || String.IsNullOrEmpty (orig_name.Trim ());
+        }
+        
+        public static string LoweredArtist (string orig_name)
+        {
+            return DisplayArtist (orig_name).ToLower ();
+        }
+        
+        public static string LoweredAlbum (string orig_name)
+        {
+            return DisplayAlbum (orig_name).ToLower ();
+        }
+
+        public static string LoweredTitle (string orig_name)
+        {
+            return DisplayTitle (orig_name).ToLower ();
+        }
+    }
+}
Index: src/Core/Banshee.Core/Makefile.am
===================================================================
--- src/Core/Banshee.Core/Makefile.am	(revision 4994)
+++ src/Core/Banshee.Core/Makefile.am	(working copy)
@@ -22,6 +22,7 @@
 	Banshee.Collection/FileTrackInfo.cs \
 	Banshee.Collection/IBasicTrackInfo.cs \
 	Banshee.Collection/ITrackInfo.cs \
+	Banshee.Collection/NameConversionHelper.cs \
 	Banshee.Collection/SampleTrackInfo.cs \
 	Banshee.Collection/TrackAttributes.cs \
 	Banshee.Collection/TrackFilterType.cs \
Index: src/Core/Banshee.Core/Banshee.Core.csproj
===================================================================
--- src/Core/Banshee.Core/Banshee.Core.csproj	(revision 4994)
+++ src/Core/Banshee.Core/Banshee.Core.csproj	(working copy)
@@ -106,6 +106,7 @@
     <Compile Include="Banshee.IO\DirectoryScannerPipelineElement.cs" />
     <Compile Include="Banshee.Configuration\MemoryConfigurationClient.cs" />
     <Compile Include="Banshee.IO\ExtensionSet.cs" />
+    <Compile Include="Banshee.Collection\NameConversionHelper.cs" />
   </ItemGroup>
   <ItemGroup>
     <EmbeddedResource Include="Resources\contributors.xml">
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 4991)
+++ ChangeLog	(working copy)
@@ -1,3 +1,28 @@
+2008-12-03  Andrés G. Aragoneses  <aaragoneses@novell.com>
+
+	Patch for BGO #528493
+
+	* src/Core/Banshee.Services/Banshee.Query/BansheeQuery.cs:
+	rather bind to the Display<whatever> properties in order to get the meta information.
+
+	* src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseAlbumInfo.cs,
+	src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseArtistInfo.cs,
+	src/Core/Banshee.Services/Banshee.Collection.Database/DatabaseTrackInfo.cs:
+	We now don't fake the real names/titles with 'Unknown' meta-information if they
+	are empty (but we keep this content searchable).
+
+	* src/Core/Banshee.Core/Banshee.Collection/TrackInfo.cs: Use NameConversionHelper
+	in order to reuse this behaviour across all the codebase instead of hardcoding strings.
+
+	* src/Core/Banshee.Core/Banshee.Collection/NameConversionHelper.cs: New file that
+	has the constant string for null values.
+
+	* src/Core/Banshee.Core/Makefile.am,
+	src/Core/Banshee.Core/Banshee.Core.mdp: Added new file NameConversionHelper.cs.
+
 2009-01-30  Gabriel Burt  <gabriel.burt@gmail.com>
 
 	* src/Core/Banshee.ThickClient/Banshee.Gui/PlaybackActions.cs: Show the
@@ -912,6 +937,7 @@
 	with podcasts list being zero height and therefore not visible on small
 	screens (BGO #560675)
 
 2008-11-24  Aaron Bockover  <abock@gnome.org>
 
 	* src/Clients/Booter/banshee-1.in: Fixed quoting in wrapper script so
