using Microsoft.Phone.Controls;
using Microsoft.Phone.Tasks;
using System;
using System.Windows;

namespace SaveRingtoneTaskSample
{
    public partial class MainPage : PhoneApplicationPage
    {
        /* Hinweise für Klingeltoene
         * ========================
         * 
         * - Klingeltoene müssen im MP3 oder WMA Format vorliegen
         * - die Dauer der Klingeltoene muss kleiner als 40 Sekunden sein
         * - die Dateien duerfen nicht DRM geschuetzt sein
         * - die Dateigroessee muss kleine 1 MB sein         
         */

        // Instanzierung des SaveRingtoneTask        
        SaveRingtoneTask mySaveRingtoneTask = new SaveRingtoneTask();

        // Konstructor
        public MainPage()
        {
            InitializeComponent();

            // Completed-Ereignis hinzufuegen
            mySaveRingtoneTask.Completed += new EventHandler<TaskEventArgs>(mySaveRingtoneTask_Completed);
        }

        /// <summary>
        /// Click-Methode der Schaltflaeche mit dem gueltigen Klingelton
        /// </summary>
        private void btn_goodRingtone_Click(object sender, RoutedEventArgs e)
        {
            // Anzeigename des Klingeltons
            mySaveRingtoneTask.DisplayName = "my good ringtone";
            // Pfad zur Klingeltondatei (appdata fuer Anwendungsverzeichnis, isostore fuer den Isolated Storage)
            mySaveRingtoneTask.Source = new Uri("appdata:/good_sample.mp3");
            // Kenner, ob andere Anwendungen den Ton auch verwenden duerfen
            mySaveRingtoneTask.IsShareable = true;
            mySaveRingtoneTask.Show();
        }

        /// <summary>
        /// Click-Methode der Schaltflaeche mit dem ungueltigen Klingelton
        /// </summary>
        private void btn_badRingtone_Click(object sender, RoutedEventArgs e)
        {
            // Anzeigename des Klingeltons
            mySaveRingtoneTask.DisplayName = "my bad ringtone";
            // Pfad zur Klingeltondatei (appdata fuer Anwendungsverzeichnis, isostore fuer den Isolated Storage)
            mySaveRingtoneTask.Source = new Uri("appdata:/bad_sample.mp3");
            mySaveRingtoneTask.IsShareable = true;
            // Kenner, ob andere Anwendungen den Ton auch verwenden duerfen
            mySaveRingtoneTask.Show();
        }

        /// <summary>
        /// Methode des Completed-Ereignismethode
        /// </summary>
        void mySaveRingtoneTask_Completed(object sender, TaskEventArgs e)
        {
            // Auswertung, ob das Setzen des Klingtons erfolgreich war
            if (e.TaskResult == TaskResult.Cancel && e.Error != null)
                MessageBox.Show("Beim Durchführen der Aktion SaveRingtoneTask ist der folgende Fehler aufgetreten:\r\n" + e.Error.Message);
            else if (e.TaskResult == TaskResult.Cancel)
                MessageBox.Show("Die Aktion SaveRingtoneTask wurde durch Benutzer abgebrochen!");
            else if (e.TaskResult == TaskResult.OK)
                MessageBox.Show("Die Aktion SaveRingtoneTask wurde erfolgreich durchgeführt!");
        }
    }
}