/***************************************************************************
 *  PodcastFeedView.cs
 *
 *  Copyright (C) 2007 Michael C. Urbanski
 *  Written by Mike Urbanski <michael.c.urbanski@gmail.com>
 ****************************************************************************/

/*  THIS FILE IS LICENSED UNDER THE MIT LICENSE AS OUTLINED IMMEDIATELY BELOW:
 *
 *  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.ObjectModel;

using Mono.Unix;

using Gtk;

using Hyena.Data;
using Hyena.Data.Gui;
using Hyena.Collections;

using Banshee.Gui;
using Banshee.ServiceStack;
using Banshee.Collection.Gui;

using Banshee.Podcasting.Data;

using Migo.Syndication;

namespace Banshee.Podcasting.Gui
{
    public class PodcastFeedView : TrackFilterListView<Feed>
    {
        private ColumnCellPodcast renderer;

        public PodcastFeedView () : base ()
        {
            renderer = new ColumnCellPodcast ();
            column_controller.Add (new Column ("Podcast", renderer, 1.0));
            //column_controller.Add (new Column (null, "Activity", new FeedActivityColumnCell ("Activity"), 0.00, true, 26, 26));

            ColumnController = column_controller;
        }

        protected override bool OnPopupMenu ()
        {
            ServiceManager.Get<InterfaceActionService> ().FindAction ("Podcast.PodcastFeedPopupAction").Activate ();
            return true;
        }

        protected override Gdk.Size OnMeasureChild ()
        {
            return ViewLayout != null
                ? base.OnMeasureChild ()
                : new Gdk.Size (0, renderer.ComputeRowHeight (this));
        }
    }

    /*public class PodcastFeedView : ListView<Feed>
    {
        private ColumnController columnController;

        public PodcastFeedView () : base ()
        {
            columnController = new ColumnController ();

            SortableColumn podcastFeedTitleColumn = new SortableColumn (
                    Catalog.GetString ("Podcasts"),
                    new ColumnCellText ("Title", true), 0.97,
                    PodcastSortKeys.Title, true
            );

            columnController.AddRange (
                new Column (null, "Activity", new FeedActivityColumnCell ("Activity"), 0.00, true, 26, 26),
                podcastFeedTitleColumn
            );

            RulesHint = true;
            podcastFeedTitleColumn.SortType = Hyena.Data.SortType.Descending;
            columnController.DefaultSortColumn = podcastFeedTitleColumn;
            ColumnController = columnController;
        }

        private Menu allPopup;
        private Menu popupMenu;
        private MenuItem homepageItem;
        private MenuItem propertiesItem;
        private MenuItem updateAllItem;

        protected override bool OnPopupMenu ()
        {
            if (popupMenu == null) {
                UIManager uiManager = ServiceManager.Get<InterfaceActionService> ().UIManager;

                allPopup = uiManager.GetWidget ("/PodcastSourcePopup") as Menu;
                popupMenu = uiManager.GetWidget ("/PodcastFeedViewPopup") as Menu;

                updateAllItem = uiManager.GetWidget ("/PodcastFeedViewPopup/PodcastUpdateAll") as MenuItem;
                propertiesItem = uiManager.GetWidget ("/PodcastFeedViewPopup/PodcastProperties") as MenuItem;
                homepageItem = uiManager.GetWidget ("/PodcastFeedViewPopup/PodcastHomepage") as MenuItem;
            }

            Menu popup;
            PodcastFeedModel model = Model as PodcastFeedModel;

            ReadOnlyCollection<Feed> feeds = model.CopySelectedItems ();

            if (feeds.Count == 0) {
                popup = allPopup;
            } else {
                if (feeds.Count > 1) {
                    homepageItem.Hide ();
                    propertiesItem.Hide ();
                } else {
                    homepageItem.Show ();
                    propertiesItem.Show ();
                }

                popup = popupMenu;
            }

            updateAllItem.Hide ();

            popup.Popup (null, null, null, 0, Gtk.Global.CurrentEventTime);
            return true;
        }
    }*/
}
