using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.ComponentModel;
using System.Windows.Threading;
namespace Reloj
{
public class TipoRelojChangedEventArgs : EventArgs
{
Reloj.TipoReloj nuevoTipoDeReloj;
public Reloj.TipoReloj NuevoTipoDeReloj
{
get { return nuevoTipoDeReloj; }
set { nuevoTipoDeReloj = value; }
}
}
public class Reloj : INotifyPropertyChanged
{
public delegate void TipoRelojChangedEventHandler(object sender, TipoRelojChangedEventArgs e);
public enum TipoReloj
{
Analogico,
Digital
};
TipoReloj tipoDeReloj = TipoReloj.Analogico;
public TipoReloj TipoDeReloj
{
get { return tipoDeReloj; }
set
{
tipoDeReloj = value;
TipoRelojChanged.Invoke(this, new TipoRelojChangedEventArgs() {NuevoTipoDeReloj = value });
}
}
public event TipoRelojChangedEventHandler TipoRelojChanged;
DispatcherTimer dispatcherTimer;
public Reloj()
{
dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
dispatcherTimer.Start();
}
void dispatcherTimer_Tick(object sender, EventArgs e)
{
DateTime dt = DateTime.Now;
Segundo = dt.Second;
Minuto = dt.Minute;
Hora = dt.Hour;
}
void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged (this, new PropertyChangedEventArgs (propertyName));
}
}
int hora, minuto, segundo;
public int Segundo
{
get { return segundo;}
set
{
segundo = value;
OnPropertyChanged("Segundo");
OnPropertyChanged("SegundoAngulo");
}
}
public int Minuto
{
get { return minuto; }
set
{
minuto = value;
OnPropertyChanged("Minuto");
OnPropertyChanged("MinutoAngulo");
}
}
public int Hora
{
get { return hora; }
set
{
hora = value;
OnPropertyChanged("Hora");
OnPropertyChanged("HoraAngulo");
}
}
public event ProgressChangedEventHandler PropertyChanged;
public double HoraAngulo
{
get
{
return (((float)Hora / 12) * 360 + Minuto / 2);
}
}
public double MinutoAngulo
{
get
{
return (((float)Minuto) / 60) * 360;
}
}
public double SegundoAngulo
{
get
{
return (((float)Segundo) * 360);
}
}
}
}