using SteamWare;
using System;
using System.Web.UI;
namespace MoonProTablet.WebUserControls
{
public partial class mod_tempoMSMC : System.Web.UI.UserControl
{
///
/// stringa UID univoca
///
public string uid
{
get
{
return this.UniqueID.Replace("$", "_").Replace("-", "_");
}
}
///
/// modalità rendering controllo
///
public timeControlMode modoControllo { get; set; }
///
/// modalità controllo tempo
///
public timeMode modoTempo { get; set; }
///
/// tempo min.cent
///
protected decimal _tempoMC
{
get
{
decimal answ = 0;
try
{
answ = Convert.ToDecimal(memLayer.ML.objSessionObj(string.Format("tempoMC-{0}", uid)));
}
catch
{ }
return answ;
}
set
{
memLayer.ML.setSessionVal(string.Format("tempoMC-{0}", uid), value);
}
}
///
/// tempo min:sec
///
protected TimeSpan _tempoMS
{
get
{
TimeSpan answ = new TimeSpan(0, 0, 0);
try
{
answ = (TimeSpan)memLayer.ML.objSessionObj(string.Format("tempoMS-{0}", uid));
}
catch
{ }
return answ;
}
set
{
memLayer.ML.setSessionVal(string.Format("tempoMS-{0}", uid), value);
}
}
///
/// caricamento pagina
///
///
///
protected void Page_Load(object sender, EventArgs e)
{
// a secondo del modo di controllo mostro textbox o selettori...
bool showTesto = true;
if (modoControllo == timeControlMode.testo)
{
showTesto = true;
}
else
{
showTesto = false;
}
// sistemo visualizzazione dei 2 div
divTesto.Visible = showTesto;
divSelettori.Visible = !showTesto;
if (!Page.IsPostBack)
{
// fix numero item secondi
odsSecondi.SelectParameters.Clear();
odsSecondi.SelectParameters.Add("minVal", "0");
odsSecondi.SelectParameters.Add("maxVal", numItemSec.ToString());
// fix visualizzazione
showControls();
}
}
///
/// mostra i controlli secondo richiesta
///
private void showControls()
{
if (modoControllo == timeControlMode.testo)
{
if (modoTempo == timeMode.MC)
{
txtTempo.Text = string.Format("{0:0.000}", tempoMC);
}
else
{
txtTempo.Text = string.Format("{0:#0}:{1:00}", tempoMS.Minutes, tempoMS.Seconds);
}
}
else
{
ddlMinuti.SelectedValue = tempoMS.Minutes.ToString();
if (modoTempo == timeMode.MC)
{
ddlSecondi.SelectedValue = Convert.ToInt32((tempoMC - Math.Floor(tempoMC)) * 100).ToString();
}
else
{
ddlSecondi.SelectedValue = tempoMS.Seconds.ToString();
}
}
// fix label...
if (modoTempo == timeMode.MC)
{
lblTempo.Text = string.Format("--> {0:#0}' {1:00}s (min,sec)", tempoMS.Minutes, tempoMS.Seconds);
}
else
{
lblTempo.Text = string.Format("--> {0:0.000} (min,cent)", tempoMC);
}
}
///
/// num item x controllo secondi/centesimi
///
public int numItemSec
{
get
{
int answ = 60;
if (modoTempo == timeMode.MS)
{
answ = 59;
}
else
{
answ = 99;
}
return answ;
}
}
///
/// tempo selezionato in formato Minuti Secondi
///
public TimeSpan tempoMS
{
get
{
return _tempoMS;
}
set
{
_tempoMS = value;
_tempoMC = minSec2Cent(value);
showControls();
}
}
///
/// verifica se TC sia stato caricato dai controlli, se zero va caricato (almento tentato caricamento...)
///
public void checkTC()
{
if (tempoMC == 0)
{
if (modoControllo == timeControlMode.testo)
{
updFromTextBox();
}
else
{
updFromDropDown();
}
}
}
///
/// tempo selezionato in formato Minuti Centesimi
///
public decimal tempoMC
{
get
{
return _tempoMC;
}
set
{
_tempoMC = value;
_tempoMS = minCent2Sec(value);
showControls();
}
}
///
/// conversione da tempo minuti/secondi a minuti centesimali
///
///
///
protected decimal minSec2Cent(TimeSpan valore)
{
Decimal answ = 0;
try
{
answ = Math.Round((valore.Minutes + (decimal)valore.Seconds / 60), 3);
}
catch
{ }
return answ;
}
///
/// conversione da tempo minuti centesimali a minuti/secondi
///
///
///
protected TimeSpan minCent2Sec(decimal valore)
{
TimeSpan answ = new TimeSpan(0, 0, 1);
try
{
answ = new TimeSpan(0, Convert.ToInt32(valore), Convert.ToInt32((valore - Convert.ToInt32(valore)) * 60));
}
catch
{ }
return answ;
}
///
/// cambiato valore tempo...
///
///
///
protected void txtTempo_TextChanged(object sender, EventArgs e)
{
updFromTextBox();
}
///
/// update da casella testo
///
private void updFromTextBox()
{
if (modoControllo == timeControlMode.testo)
{
if (modoTempo == timeMode.MC)
{
tempoMC = Convert.ToDecimal(txtTempo.Text.Replace(".", ","));
}
else
{
string tempoDP = txtTempo.Text.Replace(".", ":").Replace(",", ":");
int min = 0;
int sec = 0;
try
{
min = Convert.ToInt32(tempoDP.Substring(0, tempoDP.IndexOf(":")));
sec = Convert.ToInt32(tempoDP.Substring(tempoDP.IndexOf(":") + 1, tempoDP.Length - tempoDP.IndexOf(":") - 1));
}
catch
{ }
tempoMS = new TimeSpan(0, min, sec);
}
}
}
///
/// update da controlli dropdown
///
private void updFromDropDown()
{
if (modoControllo == timeControlMode.selettori)
{
if (modoTempo == timeMode.MS)
{
tempoMS = new TimeSpan(0, Convert.ToInt32(ddlMinuti.SelectedValue), Convert.ToInt32(ddlSecondi.SelectedValue));
}
else
{
tempoMC = Convert.ToDecimal(Convert.ToDecimal(ddlMinuti.SelectedValue) + Convert.ToDecimal(ddlSecondi.SelectedValue) / 100);
}
}
}
///
/// selezione minuti
///
///
///
protected void ddlMinuti_SelectedIndexChanged(object sender, EventArgs e)
{
updFromDropDown();
}
///
/// selezione secondi/centesimi
///
///
///
protected void ddlSecondi_SelectedIndexChanged(object sender, EventArgs e)
{
updFromDropDown();
}
}
}
///
/// modalità tempo principale (Minuti Secondi o Minuti Centesimali=
///
public enum timeMode
{
///
/// Minuti Secondi
///
MS = 0,
///
/// Minuti Centesimali
///
MC = 1
}
///
/// modalità di visualizzazione ed interazione controllo tempo
///
public enum timeControlMode
{
///
/// controllo textbox
///
testo = 0,
///
/// selettori dropdown list
///
selettori = 1
}