Logo Search packages:      
Sourcecode: f-spot version File versions  Download package

ScalingIconView.cs

namespace FSpot {
      public class ScalingIconView : IconView {
            public ScalingIconView () : base () { }
            public ScalingIconView (IBrowsableCollection collection) : base (collection) { }

            
            protected override void UpdateLayout ()
            {
                  System.Console.WriteLine ("in update layout {0}", Allocation.ToString ());

                  int num_thumbnails;
                  if (collection != null)
                        num_thumbnails = collection.Count;
                  else
                        num_thumbnails = 0;

                  cells_per_row = System.Math.Max (num_thumbnails, 1);
                  
                  int num_rows = 1;
                  int num_cols = num_thumbnails;

                  int available_height = Allocation.Height - 2 * BORDER_SIZE;
                  if (DisplayTags)
                        available_height -= tag_icon_size + tag_icon_vspacing;
                  
                  if (DisplayDates && this.Style != null) {
                        Pango.FontMetrics metrics = this.PangoContext.GetMetrics (this.Style.FontDescription, 
                                                                    Pango.Language.FromString ("en_US"));
                        available_height -= PangoPixels (metrics.Ascent + metrics.Descent);
                  }
                  
                  thumbnail_width = (int) (available_height / thumbnail_ratio);

                  cell_width = ThumbnailWidth + 2 * cell_border_width;
                  cell_height = ThumbnailHeight + 2 * cell_border_width;
                  
                  SetSize (System.Math.Max (((uint) (num_cols * cell_width + 2 * BORDER_SIZE)), (uint)Allocation.Width), (uint) (num_rows * cell_height + 2 * BORDER_SIZE));

                  Vadjustment.StepIncrement = cell_height;
                  Vadjustment.Change ();

                  Hadjustment.StepIncrement = cell_width;
                  Hadjustment.Change ();
            }
#if false         
            protected override void UpdateLayout ()
            {
                  if (collection != null) {
                        int total = collection.Count;

                        if (total > 0)
                              thumbnail_width = (Allocation.Width - (total * 2 * cell_border_width) - 2 * BORDER_SIZE)/ total;
                  }

                  base.UpdateLayout ();
            }
#endif

      }
}

Generated by  Doxygen 1.6.0   Back to index