NoiseFilter: Dont drop last word of apparent hostnames. Too many non-hostnames can...
[beagle.git] / Tiles / TileFile.cs
blob525781da1ffeea357f5964e575c6de30dd79d82b
1 //
2 // TileFile.cs
3 //
4 // Copyright (C) 2004 Novell, Inc.
5 //
7 //
8 // Permission is hereby granted, free of charge, to any person obtaining a
9 // copy of this software and associated documentation files (the "Software"),
10 // to deal in the Software without restriction, including without limitation
11 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
12 // and/or sell copies of the Software, and to permit persons to whom the
13 // Software is furnished to do so, subject to the following conditions:
15 // The above copyright notice and this permission notice shall be included in
16 // all copies or substantial portions of the Software.
18 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23 // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
24 // DEALINGS IN THE SOFTWARE.
27 using System;
28 using System.Diagnostics;
29 using System.IO;
31 using Beagle.Util;
33 using Gnome;
34 using Gdk;
35 using Gtk;
37 namespace Beagle.Tile {
39 [HitFlavor (Name="Files", Rank=300, Emblem="emblem-file.png", Color="#f5f5fe",
40 Type="File")]
41 public class TileFile : TileFromHitTemplate {
42 private static ThumbnailFactory thumb_factory = new ThumbnailFactory (ThumbnailSize.Normal);
44 public TileFile (Hit _hit) : base (_hit,
45 "template-file.html")
49 public TileFile (Hit _hit, string template) : base (_hit,
50 template)
54 protected override void PopulateTemplate ()
56 base.PopulateTemplate ();
58 if (Hit.FileInfo == null) {
59 Console.WriteLine ("FileInfo is null");
60 return;
63 string quoted_uri = StringFu.PathToQuotedFileUri (Hit.Uri.LocalPath);
64 string thumbnail = Thumbnail.PathForUri (quoted_uri, ThumbnailSize.Normal);
66 if (File.Exists (thumbnail))
67 Template ["Icon"] = Images.GetHtmlSource (thumbnail, Hit.MimeType);
68 else {
69 Pixbuf pix = thumb_factory.GenerateThumbnail (quoted_uri, Hit.MimeType);
70 FileInfo fi = new FileInfo (Hit.Uri.LocalPath);
71 if (pix == null) {
72 thumb_factory.CreateFailedThumbnail (quoted_uri, fi.LastWriteTime);
74 string path = GnomeFu.GetMimeIconPath (Hit.MimeType);
75 string icon = Images.GetHtmlSource (path, Hit.MimeType);
77 if (icon != null)
78 Template ["Icon"] = icon;
79 else
80 Template ["Icon"] = Images.GetHtmlSource ("document", "image/png");
81 } else {
82 thumb_factory.SaveThumbnail (pix, quoted_uri, DateTime.Now);
83 Template ["Icon"] = Images.GetHtmlSource (thumbnail, Hit.MimeType);
87 Template["Title"] = Hit ["dc:title"];
89 if (Template["Title"] == null)
90 Template["Title"] = Template["FileName"];
93 [TileAction]
94 public override void Open ()
96 OpenFromMime (Hit);
99 [TileAction]
100 public void SendTo ()
102 SendFile (String.Format ("{0}", Hit.Uri.LocalPath));
105 [TileAction]
106 public void Reveal ()
108 OpenFolder (Path.GetDirectoryName (Hit.Uri.LocalPath));