using System; using System.Diagnostics; using System.Runtime.InteropServices; using Mono.Unix; using Beagle.Util; namespace Search.Tiles { public class NetworkActivator : TileActivator { public NetworkActivator () : base () { AddSupportedFlavor (new HitFlavor ("http:*", "*", "*")); } public override Tile BuildTile (Beagle.Hit hit, Beagle.Query query) { return new TileNetwork (hit, query); } } public class TileNetwork : TileTemplate { public TileNetwork (Beagle.Hit hit, Beagle.Query query) : base (hit, query) { Title = GetTitle (); EnableOpenWith = true; Group = TileGroup.Network; if (Hit.FileInfo != null) { Timestamp = Hit.FileInfo.LastWriteTime; Description = Utils.NiceShortDate (Timestamp); } } private string GetTitle () { string title = Hit.GetFirstProperty ("dc:title"); if (title == null || title == "") title = Hit.GetFirstProperty ("beagle:ExactFilename"); return title; } public override void Open () { base.OpenFromMime (Hit); } public void OpenWith () { // FIXME: base.OpenWith } protected override void LoadIcon (Gtk.Image image, int size) { image.Pixbuf = WidgetFu.LoadThemeIcon ("stock_internet", size); } protected override DetailsPane GetDetails () { DetailsPane details = new DetailsPane (); details.AddLabelPair (Catalog.GetString ("Title:"), GetTitle ()); details.AddLabelPair (Catalog.GetString ("Last Edited:"), Utils.NiceLongDate (Timestamp)); if (Hit ["dc:author"] != null) details.AddLabelPair (Catalog.GetString ("Author:"), Hit ["dc:author"]); details.AddLabelPair (Catalog.GetString ("Full Path:"), Hit.Uri.LocalPath); details.AddSnippet (); return details; } } }