Files
Samuele E. Locatelli d35cea0b5a refresh globale...
2017-04-14 16:34:13 +02:00

223 lines
6.3 KiB
C#

using SteamWare;
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
[ValidationProperty("valore")]
public partial class mod_dataOra : System.Web.UI.UserControl
{
/// <summary>
/// definisce se siano visibili e selezionabili i secondi
/// </summary>
protected bool _showSeconds = false;
/// <summary>
/// tipo selettore orario richiesto
/// </summary>
protected tipoSelOrario _tipoOrario;
/// <summary>
/// calsse css applicata ai controlli
/// </summary>
protected string _css;
/// <summary>
/// valore di riferimento...
/// </summary>
protected DateTime _valore;
/// <summary>
/// avvio pagina
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
traduciObj();
fixPnlVisibility();
//setupControlli();
fixCss();
}
CalendarExtender1.Format = memLayer.ML.CRS("ddMMyyyy");
}
/// <summary>
/// traduce gli oggetti
/// </summary>
private void traduciObj()
{
lblData.Text = traduci("lblData");
lblOra.Text = traduci("lblOra");
lblMin.Text = traduci("lblMin");
lblTime.Text = traduci("lblTime");
}
/// <summary>
/// sistema valori default dei controlli
/// </summary>
private void setupControlli()
{
// mostro data
txtData.Text = _valore.Date.ToString(memLayer.ML.CRS("ddMMyyyy"));
switch (_tipoOrario)
{
case tipoSelOrario.tendina:
// aggiongo valori ora e minuti...
ddlOra.Items.Clear();
ddlMin.Items.Clear();
for (int i = 0; i < 24; i++)
{
ddlOra.Items.Add(new ListItem(string.Format("{0:00}", i), i.ToString()));
}
for (int i = 0; i < 60; i++)
{
ddlMin.Items.Add(new ListItem(string.Format("{0:00}", i), i.ToString()));
}
// imposto i valori
ddlOra.SelectedValue = _valore.Hour.ToString();
ddlMin.SelectedValue = _valore.Minute.ToString();
break;
case tipoSelOrario.testuale:
txtTime.Text = string.Format("{0:HH:mm}", _valore);
break;
}
}
/// <summary>
/// sistema visualizzazione controlli
/// </summary>
private void fixPnlVisibility()
{
switch (_tipoOrario)
{
case tipoSelOrario.tendina:
pnlDropDown.Visible = true;
pnlText.Visible = false;
break;
case tipoSelOrario.testuale:
pnlDropDown.Visible = false;
pnlText.Visible = true;
break;
}
}
/// <summary>
/// sistema i css del controllo...
/// </summary>
private void fixCss()
{
txtData.CssClass = _css;
switch (_tipoOrario)
{
case tipoSelOrario.tendina:
ddlOra.CssClass = _css;
ddlMin.CssClass = _css;
break;
case tipoSelOrario.testuale:
txtTime.CssClass = _css;
break;
}
}
/// <summary>
/// wrapper traduzione
/// </summary>
/// <param name="lemma"></param>
/// <returns></returns>
public string traduci(object lemma)
{
return user_std.UtSn.Traduci(lemma.ToString());
}
/// <summary>
/// scelta del tipo di selettore per ora/min/sec
/// </summary>
public tipoSelOrario tipoOrario
{
get
{
return _tipoOrario;
}
set
{
_tipoOrario = value;
fixPnlVisibility();
}
}
/// <summary>
/// valore del controllo
/// </summary>
public DateTime valore
{
get
{
int ora = 0;
int min = 0;
switch (_tipoOrario)
{
case tipoSelOrario.tendina:
ora = Convert.ToInt32(ddlOra.SelectedValue);
min = Convert.ToInt32(ddlMin.SelectedValue);
break;
case tipoSelOrario.testuale:
ora = Convert.ToDateTime(txtTime.Text).Hour;
min = Convert.ToDateTime(txtTime.Text).Minute;
break;
}
DateTime valore = WebGimUtils.convDate(txtData.Text, memLayer.ML.CRS("ddMMyyyy"), memLayer.ML.CRS("culture"));
#if false
string formato = memLayer.ML.CRS("ddMMyyyy");
DateTime valore;
CultureInfo culture = new CultureInfo(memLayer.ML.CRS("culture"));
//logger.lg.scriviLog(string.Format("Valore txt:{1}{0}", Environment.NewLine, txtData.Text), tipoLog.INFO);
DateTime.TryParseExact(txtData.Text, formato, culture, DateTimeStyles.None, out valore);
//logger.lg.scriviLog(string.Format("Valore txt:{1}{0}Valore conv:{2}", Environment.NewLine, txtData.Text, valore), tipoLog.INFO);
#endif
DateTime answ = valore.AddHours(ora).AddMinutes(min);
return answ;
}
set
{
_valore = value;
if (ddlOra.SelectedValue == "")
{
setupControlli();
}
}
}
/// <summary>
/// css applicato agli elementi del controllo
/// </summary>
public string css
{
get
{
return _css;
}
set
{
_css = value;
fixCss();
}
}
/// <summary>
/// nasconde se richiesto le label dei controlli dataOra
/// </summary>
public bool mostraLabel
{
set
{
lblData.Visible = value;
lblMin.Visible = value;
lblOra.Visible = value;
lblTime.Visible = value;
}
}
}
/// <summary>
/// tipo di selettore impiegato per la seleizone dell'orario
/// </summary>
public enum tipoSelOrario
{
/// <summary>
/// selettore a tendina per l'ora (00 -> 23) ed i minuti/secondi (00 -> 59)
/// </summary>
tendina,
/// <summary>
/// selettore testuale con masked input
/// </summary>
testuale
}