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

namespace VibrateController
{
    public partial class MainPage : PhoneApplicationPage
    {
        // Schalter wenn Vibration aktiv ist
        private bool activeVibration;

        // Timer fuer das Zuruecksetzen der Vibrationschaltflaeche
        private DispatcherTimer myTimer = new DispatcherTimer();
        // Zaehler für die Ticks
        private double timerTick = 0;

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

            // 1 Sekunden Timer initialisieren
            myTimer.Interval = TimeSpan.FromSeconds(1);
            myTimer.Tick += new EventHandler(myTimer_Tick);
        }

        // Tick Ereignismethode
        void myTimer_Tick(object sender, EventArgs e)
        {
            // Tickzaehler um 1 erhören pro Sekunde
            timerTick++;

            // Tickzaehler == Vibrationsdauer
            if (timerTick == sldSeconds.Value)
            {
                // Timer anhalten & Schalter und Schaltflaeche neu setzen
                myTimer.Stop();
                activeVibration = false;
                btnVibrate.Content = "Vibration starten";
            }
        }

        // Ereignismethode der Vibrationsschaltfaeche
        private void btnVibrate_Click(object sender, System.Windows.RoutedEventArgs e)
        {
            // bei Vibration, Vibration stoppen & Schalter und Schaltflaeche neu setzen
            if (activeVibration)
            {
                Microsoft.Devices.VibrateController.Default.Stop();
                activeVibration = false;
                btnVibrate.Content = "Vibration starten";
            }
            else
            {
                // Schaltflaeche setzen, Tickzaehler zuruecksetzen
                btnVibrate.Content = "Vibration beenden";
                timerTick = 0;

                // Vibrationsmotor mit der Dauer vom Schieberwert starten
                Microsoft.Devices.VibrateController.Default.Start(TimeSpan.FromSeconds(sldSeconds.Value));

                // Timer starten & Schalter setzen
                myTimer.Start();
                activeVibration = true;
            }
        }
    }
}