Mégtöbb rövidítés, frissítés event kezelve, üres sorok berakva

This commit is contained in:
Norbi Peti 2017-03-26 01:15:28 +01:00
parent 95c72a2382
commit f8aeade139
2 changed files with 46 additions and 40 deletions

View file

@ -302,7 +302,6 @@ namespace Orarend
if (utolsófrissítésplusz1óra > DateTime.Now) if (utolsófrissítésplusz1óra > DateTime.Now)
return; return;
Frissítéskor?.Invoke(példány, null); Frissítéskor?.Invoke(példány, null);
//HelyettesítésFrissítés(false);
} }
public static DayOfWeek MaiNap public static DayOfWeek MaiNap
@ -323,10 +322,7 @@ namespace Orarend
private static bool nincstöbbóra = false; private static bool nincstöbbóra = false;
private static Órarend órarend; //TODO private static Órarend órarend; //TODO
public static event EventHandler<TimerEventArgs> CsengőTimerEvent; public static event EventHandler<TimerEventArgs> CsengőTimerEvent;
private static void CsengőTimer(object state) private static void CsengőTimer(object state) => CsengőTimerEvent?.Invoke(példány, CsengőTimer());
{
CsengőTimerEvent?.Invoke(példány, CsengőTimer());
}
private static TimerEventArgs CsengőTimer() private static TimerEventArgs CsengőTimer()
{ {
if (órarend == null) if (órarend == null)
@ -371,9 +367,7 @@ namespace Orarend
} }
} }
if (!talált) if (!talált)
{
nincstöbbóra = true; nincstöbbóra = true;
}
return new TimerEventArgs(kovora, kezdveg); return new TimerEventArgs(kovora, kezdveg);
} }
} }

View file

@ -36,19 +36,17 @@ namespace OrarendAndroidApp
ActionBar.SetDisplayShowTitleEnabled(false); ActionBar.SetDisplayShowTitleEnabled(false);
handler = new Handler(); handler = new Handler();
string[] list = FileList(); string[] list = FileList();
bool betöltötte; if (list.Contains(DATA_FILENAME)
if (list.Contains(DATA_FILENAME)) ? API.Betöltés(OpenFileInput(DATA_FILENAME), e => Hiba("Hiba az adatok betöltése során!\n" + e)) : API.Betöltés())
betöltötte = API.Betöltés(OpenFileInput(DATA_FILENAME), e => Hiba("Hiba az adatok betöltése során!\n" + e)); {
else
betöltötte = API.Betöltés();
if (betöltötte)
API.CsengőTimerEvent += CsengőTimer; API.CsengőTimerEvent += CsengőTimer;
API.Frissítéskor += (_, __) => HelyettesítésFrissítés(false);
}
} }
private void AndroidEnvironment_UnhandledExceptionRaiser(object sender, RaiseThrowableEventArgs e) private void AndroidEnvironment_UnhandledExceptionRaiser(object sender, RaiseThrowableEventArgs e)
{ {
if (!e.Handled) if (!e.Handled) Hiba("Kezeletlen hiba!\n" + e.Exception);
Hiba("Kezeletlen hiba!\n" + e.Exception);
e.Handled = true; e.Handled = true;
} }
@ -85,28 +83,31 @@ namespace OrarendAndroidApp
órarendfrissítés(); órarendfrissítés();
} }
private void addCell(string text, Color color, TableRow tr1, int[] tag = null) private void addCell(string text, Color color, TableRow tr1, (int, int)? tag = null)
{ {
TextView textview = new TextView(this); TextView textview = new TextView(this);
textview.SetText(text, TextView.BufferType.Normal); textview.SetText(text, TextView.BufferType.Normal);
textview.SetTextColor(color); textview.SetTextColor(color);
textview.SetPadding(10, 10, 10, 10); textview.SetPadding(10, 10, 10, 10);
textview.SetBackgroundResource(DarkTheme ? Resource.Drawable.cell_shape_dark : Resource.Drawable.cell_shape_light); textview.SetBackgroundResource(DarkTheme ? Resource.Drawable.cell_shape_dark : Resource.Drawable.cell_shape_light);
textview.Tag = tag; textview.Tag = tag.HasValue ? new JavaTuple<int, int>(tag.Value) : null;
textview.Clickable = true; textview.Clickable = true;
textview.Click += ÓraClick; textview.Click += ÓraClick;
tr1.AddView(textview); tr1.AddView(textview);
} }
private class JavaTuple<T1, T2> : Java.Lang.Object
{
public (T1, T2) obj;
public JavaTuple((T1, T2) obj) => this.obj = obj;
public void Deconstruct(out T1 first, out T2 second) => (first, second) = obj;
}
private void HelyettesítésFrissítés(bool internethiba = true) private void HelyettesítésFrissítés(bool internethiba = true)
{ {
var bar = FindViewById<ProgressBar>(Resource.Id.progressBar1); var bar = FindViewById<ProgressBar>(Resource.Id.progressBar1);
//var menu = FindViewById<ActionMenuView>(Resource.Id.actionMenuView1); //var menu = FindViewById<ActionMenuView>(Resource.Id.actionMenuView1);
Action loadstart = () => Action loadstart = () => bar.Visibility = ViewStates.Visible;
{
bar.Visibility = ViewStates.Visible;
//menu.Enabled = false;
};
handler.Post(loadstart); handler.Post(loadstart);
API.HelyettesítésFrissítés(() => OpenFileOutput(DATA_FILENAME, FileCreationMode.Private)).ContinueWith(t => API.HelyettesítésFrissítés(() => OpenFileOutput(DATA_FILENAME, FileCreationMode.Private)).ContinueWith(t =>
{ {
@ -114,7 +115,6 @@ namespace OrarendAndroidApp
handler.Post(() => handler.Post(() =>
{ {
bar.Visibility = ViewStates.Gone; bar.Visibility = ViewStates.Gone;
//menu.Enabled = true;
if (TaskHiba(t, internethiba)) if (TaskHiba(t, internethiba))
{ {
órarendfrissítés(); órarendfrissítés();
@ -129,11 +129,7 @@ namespace OrarendAndroidApp
{ {
var bar = FindViewById<ProgressBar>(Resource.Id.progressBar1); var bar = FindViewById<ProgressBar>(Resource.Id.progressBar1);
//var menu = FindViewById<ActionMenuView>(Resource.Id.actionMenuView1); //var menu = FindViewById<ActionMenuView>(Resource.Id.actionMenuView1);
Action loadstart = () => Action loadstart = () => bar.Visibility = ViewStates.Visible;
{
bar.Visibility = ViewStates.Visible;
//menu.Enabled = false;
};
handler.Post(loadstart); handler.Post(loadstart);
API.Frissítés(() => OpenFileOutput(DATA_FILENAME, FileCreationMode.Private), ór).ContinueWith(t => API.Frissítés(() => OpenFileOutput(DATA_FILENAME, FileCreationMode.Private), ór).ContinueWith(t =>
{ {
@ -168,13 +164,14 @@ namespace OrarendAndroidApp
for (int i = 0; i < Napok.Length; i++) for (int i = 0; i < Napok.Length; i++)
addCell(Napok[i], DarkTheme ? Color.White : Color.Black, tr); addCell(Napok[i], DarkTheme ? Color.White : Color.Black, tr);
table.AddView(tr, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent)); table.AddView(tr, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent));
int rowadds = 0;
for (int j = 0; j < 16; j++) for (int j = 0; j < 16; j++)
{ {
tr = new TableRow(this); tr = new TableRow(this);
bool notnull = false; bool notnull = false;
for (int i = 0; i < 6; i++) for (int i = 0; i < 6; i++)
{ //Kihagyja az üres sorokat { //Kihagyja az üres sorokat
if (órarend.Órák[i][j] != null) if (órarend.Órák[i][j] != null) //TODO: Helyettesítéseket is figyelje
{ {
notnull = true; notnull = true;
break; break;
@ -182,14 +179,23 @@ namespace OrarendAndroidApp
} }
if (notnull) if (notnull)
{ {
for (int x = 0; x < rowadds; x++)
{
var tr1 = new TableRow(this);
for (int i = 0; i < 6; i++)
addCell("", Color.Black, tr1);
table.AddView(tr, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent));
}
rowadds = 0;
addCell((j + 1).ToString(), DarkTheme ? Color.White : Color.Black, tr); addCell((j + 1).ToString(), DarkTheme ? Color.White : Color.Black, tr);
for (int i = 0; i < 6; i++) for (int i = 0; i < 6; i++)
{ {
var (innen, ide) = API.HelyettesítésInnenIde(órarend, i, j); var (innen, ide) = API.HelyettesítésInnenIde(órarend, i, j);
addCell(ide != null ? ide.ÚjÓra.EgyediNév : innen != null ? innen.EredetiNap != innen.ÚjNap || innen.EredetiSorszám != innen.ÚjSorszám ? "Áthelyezve" : innen.ÚjÓra?.EgyediNév ?? "elmarad" : órarend.Órák[i][j]?.EgyediNév ?? "", innen == null ? (DarkTheme ? Color.WhiteSmoke : Color.Black) : Color.Red, tr, new int[2] { i, j }); addCell(ide != null ? ide.ÚjÓra.EgyediNév : innen != null ? innen.EredetiNap != innen.ÚjNap || innen.EredetiSorszám != innen.ÚjSorszám ? "Áthelyezve" : innen.ÚjÓra?.EgyediNév ?? "elmarad" : órarend.Órák[i][j]?.EgyediNév ?? "", innen == null ? (DarkTheme ? Color.WhiteSmoke : Color.Black) : Color.Red, tr, (i, j));
} }
table.AddView(tr, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent)); table.AddView(tr, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent));
} }
else rowadds++;
} }
handler.Post(() => MaiNaphozGörgetés()); handler.Post(() => MaiNaphozGörgetés());
} }
@ -211,15 +217,24 @@ namespace OrarendAndroidApp
private void ÓraClick(object sender, EventArgs e) private void ÓraClick(object sender, EventArgs e)
{ {
var tv = (TextView)sender; var tv = (TextView)sender;
var ij = (int[])tv.Tag;
if (selected != null && selected != sender) if (selected != null && selected != sender)
selected.SetBackgroundResource(DarkTheme ? Resource.Drawable.cell_shape_dark : Resource.Drawable.cell_shape_light); selected.SetBackgroundResource(DarkTheme ? Resource.Drawable.cell_shape_dark : Resource.Drawable.cell_shape_light);
Óra óra; Óra óra;
Helyettesítés helyettesítésInnen = null; Helyettesítés helyettesítésInnen = null;
Helyettesítés helyettesítésIde = null; Helyettesítés helyettesítésIde = null;
var ij = (JavaTuple<int, int>)tv.Tag;
int i, j;
if (ij != null) if (ij != null)
(helyettesítésInnen, helyettesítésIde) = API.HelyettesítésInnenIde(órarend, ij[0], ij[1]); {
if (ij == null || (óra = órarend.Órák[ij[0]][ij[1]]) == null && helyettesítésIde?.ÚjÓra == null) (i, j) = ij;
(helyettesítésInnen, helyettesítésIde) = API.HelyettesítésInnenIde(órarend, i, j);
if ((óra = órarend.Órák[i][j]) == null && helyettesítésIde?.ÚjÓra == null)
{
deselect();
return;
}
}
else
{ {
deselect(); deselect();
return; return;
@ -231,11 +246,11 @@ namespace OrarendAndroidApp
kivora.Visibility = ViewStates.Gone; kivora.Visibility = ViewStates.Gone;
else else
{ {
kivora.Text = Napok[ij[0]] + " " + (ij[1] + 1) + ". óra" kivora.Text = Napok[i] + " " + (j + 1) + ". óra"
+ "\nNév: " + óra.TeljesNév + "\nNév: " + óra.TeljesNév
+ "\nTerem: " + óra.Terem + "\nTerem: " + óra.Terem
+ "\nTanár: " + óra.Tanár.Név + "\nTanár: " + óra.Tanár.Név
+ "\nIdőtartam: " + órarend.Órakezdetek[ij[1]].ToString("hh\\:mm") + "-" + órarend.Órakezdetek[ij[1]].Add(new TimeSpan(0, 45, 0)).ToString("hh\\:mm") + "\nIdőtartam: " + órarend.Órakezdetek[j].ToString("hh\\:mm") + "-" + órarend.Órakezdetek[j].Add(new TimeSpan(0, 45, 0)).ToString("hh\\:mm")
+ "\nCsoport: " + óra.Csoportok.Aggregate((a, b) => a + ", " + b); + "\nCsoport: " + óra.Csoportok.Aggregate((a, b) => a + ", " + b);
kivora.Visibility = ViewStates.Visible; kivora.Visibility = ViewStates.Visible;
} }
@ -396,21 +411,18 @@ namespace OrarendAndroidApp
public override void OnWindowFocusChanged(bool hasFocus) public override void OnWindowFocusChanged(bool hasFocus)
{ {
base.OnWindowFocusChanged(hasFocus); base.OnWindowFocusChanged(hasFocus);
API.Fókusz = hasFocus;
if (!hasFocus) if (!hasFocus)
{
API.Fókusz = false;
return; return;
}
MaiNaphozGörgetés(); MaiNaphozGörgetés();
} }
private void MaiNaphozGörgetés() private void MaiNaphozGörgetés()
{ {
var x = API.MaiNap;
var table = FindViewById<TableLayout>(Resource.Id.tableLayout1); var table = FindViewById<TableLayout>(Resource.Id.tableLayout1);
if (table.ChildCount == 0) if (table.ChildCount == 0)
return; return;
var cell = (table.GetChildAt(0) as ViewGroup).GetChildAt((int)x); var cell = (table.GetChildAt(0) as ViewGroup).GetChildAt((int)API.MaiNap);
FindViewById<HorizontalScrollView>(Resource.Id.horizontalView).SmoothScrollTo(Math.Max(cell.Left - (FindViewById(Resource.Id.container).Width - cell.Width) / 2, 0), 0); FindViewById<HorizontalScrollView>(Resource.Id.horizontalView).SmoothScrollTo(Math.Max(cell.Left - (FindViewById(Resource.Id.container).Width - cell.Width) / 2, 0), 0);
} }
} }