using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Linq;
using Windows.Data.Xml.Dom;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Notifications;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

// Die Elementvorlage "Leere Seite" ist unter http://go.microsoft.com/fwlink/?LinkId=234238 dokumentiert.

namespace Befehlsleiste
{
    /// <summary>
    /// Eine leere Seite, die eigenständig verwendet werden kann oder auf die innerhalb eines Rahmens navigiert werden kann.
    /// </summary>
    public sealed partial class MainPage : Page
    {
        ObservableCollection<String> items = new ObservableCollection<String>();

        public MainPage()
        {
            this.InitializeComponent();

            items.Add("Schokolade essen");
            items.Add("Ein gutes Buch lesen");
            items.Add("Freunde treffen");

            listview1.ItemsSource = items;

            
        }

        /// <summary>
        /// Wird aufgerufen, wenn diese Seite in einem Rahmen angezeigt werden soll.
        /// </summary>
        /// <param name="e">Ereignisdaten, die beschreiben, wie diese Seite erreicht wurde. Die
        /// Parametereigenschaft wird normalerweise zum Konfigurieren der Seite verwendet.</param>
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
        }

        private void Hinzufuegen_Click_1(object sender, RoutedEventArgs e)
        {
            String[] propositions = { "Noch mehr gute Bücher lesen",
                                      "Ein heißes Bad nehmen",
                                      "Spazieren gehen",
                                      "Yoga machen" };

            int index = listview1.SelectedIndex;
            if (index != -1)
            {
                Random generator = new Random();
                items.Insert(index, propositions[generator.Next(0,propositions.Length)]);
            }
        }

        private void Entfernen_Click_1(object sender, RoutedEventArgs e)
        {
            int index = listview1.SelectedIndex;
            if (index != -1)
            {
                items.RemoveAt(index);
            }
        }

        private void Hilfe_Click_1(object sender, RoutedEventArgs e)
        {
            infoText.Text = "Wählen Sie aus, was Sie sich heute noch Gutes tun möchten";
            info.IsOpen = true;
        }


        private void Grid_PointerReleased_1(object sender, PointerRoutedEventArgs e)
        {
            info.IsOpen = false;
        }

        private void listview1_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
        {
            if (listview1.SelectedItem != null)
            {
                // 1. Kontextbefehle einblenden
                cmdHinzufuegen.Visibility = Visibility.Visible;
                cmdEntfernen.Visibility = Visibility.Visible;

                // 2. Kachel aktualisieren
                String selected = listview1.SelectedItem.ToString();

                // Kachel aktualisieren
                XmlDocument tileXML = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquareText04);
                XmlNodeList textNodes = tileXML.GetElementsByTagName("text");
                if (textNodes.Length > 0)
                {
                    textNodes[0].InnerText = selected;
                }

                TileUpdater tu = TileUpdateManager.CreateTileUpdaterForApplication();
                tu.Update(new TileNotification(tileXML));
            }
            else
            {
                // Kontextbefehle ausblenden
                cmdHinzufuegen.Visibility = Visibility.Collapsed;
                cmdEntfernen.Visibility = Visibility.Collapsed;
            }
        }


    }
}
