Files
2020-09-14 21:56:39 +02:00

333 lines
9.5 KiB
C#

using SteamWare;
using System;
using System.Web.UI;
namespace MoonProTablet.WebUserControls
{
public partial class mod_tempoMSMC : BaseUserControl
{
/// <summary>
/// modalità rendering controllo
/// </summary>
public timeControlMode modoControllo { get; set; }
/// <summary>
/// modalità controllo tempo
/// </summary>
public timeMode modoTempo
{
get
{
timeMode answ = timeMode.MC;
try
{
answ = (timeMode)memLayer.ML.objSessionObj("modoTempo");
}
catch
{ }
return answ;
}
set
{
memLayer.ML.setSessionVal("modoTempo", value);
}
}
/// <summary>
/// tempo min.cent
/// </summary>
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);
}
}
/// <summary>
/// tempo min:sec
/// </summary>
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);
}
}
/// <summary>
/// INdica il formato del tempo IN INGRESSO (selezionato)
/// </summary>
public string labelTempoIN
{
get
{
string answ = "";
if (modoTempo == timeMode.MC)
{
answ = "min.cent";
}
else
{
answ = "min:sec";
}
return answ;
}
}
/// <summary>
/// caricamento pagina
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
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();
}
}
/// <summary>
/// mostra i controlli secondo richiesta
/// </summary>
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} (min:sec)", tempoMS.Minutes, tempoMS.Seconds);
}
else
{
lblTempo.Text = string.Format("--> {0:0.000} (min.cent)", tempoMC);
}
}
/// <summary>
/// num item x controllo secondi/centesimi
/// </summary>
public int numItemSec
{
get
{
int answ = 60;
if (modoTempo == timeMode.MS)
{
answ = 59;
}
else
{
answ = 99;
}
return answ;
}
}
/// <summary>
/// tempo selezionato in formato Minuti Secondi
/// </summary>
public TimeSpan tempoMS
{
get
{
return _tempoMS;
}
set
{
_tempoMS = value;
_tempoMC = minSec2Cent(value);
showControls();
}
}
/// <summary>
/// verifica se TC sia stato caricato dai controlli, se zero va caricato (almento tentato caricamento...)
/// </summary>
public void checkTC()
{
if (tempoMC == 0)
{
if (modoControllo == timeControlMode.testo)
{
updFromTextBox();
}
else
{
updFromDropDown();
}
}
}
/// <summary>
/// tempo selezionato in formato Minuti Centesimi
/// </summary>
public decimal tempoMC
{
get
{
return _tempoMC;
}
set
{
_tempoMC = value;
_tempoMS = minCent2Sec(value);
showControls();
}
}
/// <summary>
/// cambiato valore tempo...
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void txtTempo_TextChanged(object sender, EventArgs e)
{
updFromTextBox();
}
/// <summary>
/// update da casella testo
/// </summary>
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);
}
}
}
/// <summary>
/// update da controlli dropdown
/// </summary>
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);
}
}
}
/// <summary>
/// selezione minuti
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlMinuti_SelectedIndexChanged(object sender, EventArgs e)
{
updFromDropDown();
}
/// <summary>
/// selezione secondi/centesimi
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlSecondi_SelectedIndexChanged(object sender, EventArgs e)
{
updFromDropDown();
}
}
}
/// <summary>
/// modalità tempo principale (Minuti Secondi o Minuti Centesimali=
/// </summary>
public enum timeMode
{
/// <summary>
/// Minuti Secondi
/// </summary>
MS = 0,
/// <summary>
/// Minuti Centesimali
/// </summary>
MC = 1
}
/// <summary>
/// modalità di visualizzazione ed interazione controllo tempo
/// </summary>
public enum timeControlMode
{
/// <summary>
/// controllo textbox
/// </summary>
testo = 0,
/// <summary>
/// selettori dropdown list
/// </summary>
selettori = 1
}