From 3733f54fb99084333b13ad7a8116cc18337b4266 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Tue, 28 Mar 2017 22:17:57 +0200 Subject: [PATCH] =?UTF-8?q?Hibajav=C3=ADt=C3=A1sok,=20az=20=C3=B3rarendet?= =?UTF-8?q?=20az=20API-b=C5=91l=20veszi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Az üres sor beszúró javítva - A timer.Change javítva - Az órarendet most már az API kezeli, kiválasztó metódusok hozzáadva - Egyéb javítások --- Orarend/API.cs | 28 +++++++++++++------------- Orarend/Timer.cs | 7 ++++--- OrarendAndroidApp/MainActivity.cs | 33 +++++++++++++++---------------- 3 files changed, 34 insertions(+), 34 deletions(-) diff --git a/Orarend/API.cs b/Orarend/API.cs index 1d04d62..2e5a49e 100644 --- a/Orarend/API.cs +++ b/Orarend/API.cs @@ -287,7 +287,7 @@ namespace Orarend { if (value) { - timer.Change(new TimeSpan(0, 0, 0), new TimeSpan(0, 0, 5)); + timer = timer.Change(new TimeSpan(0, 0, 0), new TimeSpan(0, 0, 5)); frissítésHa1ÓraEltelt(); } else @@ -319,32 +319,34 @@ namespace Orarend órarend.Helyettesítések.FirstOrDefault(h => (int)h.ÚjNap == i + 1 && h.ÚjSorszám == j + 1 && h.ÚjÓra != null)); //Ha az eredeti óra elmarad, és ide lesz helyezve egy másik, az áthelyezést mutassa + public static Órarend Órarend { get; private set; } + public static void ÓrarendKiválasztás(int position) => Órarend = Órarendek[position]; + public static void ÓrarendKiválasztásTörlése() => Órarend = null; + private static bool nincstöbbóra = false; - private static Órarend órarend; //TODO public static event EventHandler CsengőTimerEvent; private static void CsengőTimer(object state) => CsengőTimerEvent?.Invoke(példány, CsengőTimer()); private static TimerEventArgs CsengőTimer() { - if (órarend == null) + if (Órarend == null) return new TimerEventArgs(null, "Nincs órarend kiválasztva"); var most = DateTime.Now - DateTime.Today; //var most = new TimeSpan(9, 46, 0); bool talált = false; - nincstöbbóra = false; - if (órarend.Órakezdetek[0] == TimeSpan.Zero) //Még nincsenek beállítva a kezdetek + if (Órarend.Órakezdetek[0] == TimeSpan.Zero) //Még nincsenek beállítva a kezdetek return new TimerEventArgs(null, "Betöltés"); string kezdveg = null, kovora = null; - for (int i = 0; i < órarend.Órakezdetek.Length - 1; i++) + for (int i = 0; i < Órarend.Órakezdetek.Length - 1; i++) { - var vége = órarend.Órakezdetek[i].Add(new TimeSpan(0, 45, 0)); + var vége = Órarend.Órakezdetek[i].Add(new TimeSpan(0, 45, 0)); bool becsengetés; int x = (int)DateTime.Today.DayOfWeek - 1; Óra óra; - var (innen, ide) = HelyettesítésInnenIde(órarend, x, i); + var (innen, ide) = HelyettesítésInnenIde(Órarend, x, i); Func óraperc = ts => ts.Hours > 0 ? ts.ToString("h\\ómm\\p") : ts.ToString("mm") + " perc"; - if (x != -1 && x < 6 && (óra = ide != null ? ide.ÚjÓra : innen != null ? innen.EredetiNap != innen.ÚjNap || innen.EredetiSorszám != innen.ÚjSorszám ? null : innen.ÚjÓra : órarend.Órák[x][i]) != null) + if (x != -1 && x < 6 && (óra = ide != null ? ide.ÚjÓra : innen != null ? innen.EredetiNap != innen.ÚjNap || innen.EredetiSorszám != innen.ÚjSorszám ? null : innen.ÚjÓra : Órarend.Órák[x][i]) != null) { //-1: Vasárnap - if (most > órarend.Órakezdetek[i]) + if (most > Órarend.Órakezdetek[i]) { if (most < vége) { @@ -357,17 +359,15 @@ namespace Orarend } else { - kezdveg = "Becsengetés: " + óraperc(órarend.Órakezdetek[i] - most); + kezdveg = "Becsengetés: " + óraperc(Órarend.Órakezdetek[i] - most); talált = true; becsengetés = true; } kovora = (becsengetés ? "Következő" : "Jelenlegi") + " óra: " + óra.EgyediNév + "\n" + óra.Terem + "\n" + óra.Tanár.Név + "\n" + óra.Csoportok.Aggregate((a, b) => a + ", " + b); - nincstöbbóra = false; break; } } - if (!talált) - nincstöbbóra = true; + nincstöbbóra = !talált; return new TimerEventArgs(kovora, kezdveg); } } diff --git a/Orarend/Timer.cs b/Orarend/Timer.cs index b0128ea..1a55a40 100644 --- a/Orarend/Timer.cs +++ b/Orarend/Timer.cs @@ -38,10 +38,11 @@ namespace SimpleTimerPortable public new void Dispose() { base.Cancel(); } - public void Change(TimeSpan dueTime, TimeSpan period) + public Timer Change(TimeSpan dueTime, TimeSpan period) { - Cancel(); - start(dueTime, period); + var timer = new Timer(callback, state, dueTime, period); + this.Dispose(); + return timer; } } } diff --git a/OrarendAndroidApp/MainActivity.cs b/OrarendAndroidApp/MainActivity.cs index 17ec84b..cffc7a4 100644 --- a/OrarendAndroidApp/MainActivity.cs +++ b/OrarendAndroidApp/MainActivity.cs @@ -22,7 +22,6 @@ namespace OrarendAndroidApp public class MainActivity : ActivityBase { private Handler handler; - private Órarend órarend; private const int EDIT_ADD_ACT_REQUEST = 1; private const int SETTINGS_ACT_REQUEST = 2; @@ -79,7 +78,7 @@ namespace OrarendAndroidApp private void ÓrarendClick(object sender, AdapterView.ItemSelectedEventArgs e) { - órarend = API.Órarendek[e.Position]; + API.ÓrarendKiválasztás(e.Position); órarendfrissítés(); } @@ -128,7 +127,6 @@ namespace OrarendAndroidApp private void ÓrarendFrissítés(Órarend ór = null) { var bar = FindViewById(Resource.Id.progressBar1); - //var menu = FindViewById(Resource.Id.actionMenuView1); Action loadstart = () => bar.Visibility = ViewStates.Visible; handler.Post(loadstart); API.Frissítés(() => OpenFileOutput(DATA_FILENAME, FileCreationMode.Private), ór).ContinueWith(t => @@ -141,7 +139,7 @@ namespace OrarendAndroidApp HelyettesítésFrissítés(); if (TaskHiba(t)) { - if (ór == null || ór == órarend) + if (ór == null || ór == API.Órarend) órarendfrissítés(); Toast.MakeText(this, (API.Órarendek.Count > 0 ? "Órarend" + (ór == null ? "ek" : "") + " és o" : "O") + "sztálylista frissítve", ToastLength.Short).Show(); } @@ -157,21 +155,21 @@ namespace OrarendAndroidApp deselect(); if (table.ChildCount > 0) table.RemoveViews(0, table.ChildCount); - if (órarend == null) + if (API.Órarend == null) return; TableRow tr = new TableRow(this); addCell(API.AHét ? "A" : "B", DarkTheme ? Color.White : Color.Black, tr); for (int i = 0; i < Napok.Length; i++) addCell(Napok[i], DarkTheme ? Color.White : Color.Black, tr); table.AddView(tr, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent)); - int rowadds = 0; + byte rowadds = 0; for (int j = 0; j < 16; j++) { tr = new TableRow(this); bool notnull = false; for (int i = 0; i < 6; i++) { //Kihagyja az üres sorokat - if (órarend.Órák[i][j] != null) //TODO: Helyettesítéseket is figyelje + if (API.Órarend.Órák[i][j] != null) //TODO: Helyettesítéseket is figyelje { notnull = true; break; @@ -182,16 +180,17 @@ namespace OrarendAndroidApp for (int x = 0; x < rowadds; x++) { var tr1 = new TableRow(this); + addCell((j + x).ToString(), DarkTheme ? Color.White : Color.Black, tr1); for (int i = 0; i < 6; i++) addCell("", Color.Black, tr1); - table.AddView(tr, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent)); + table.AddView(tr1, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent)); } rowadds = 0; addCell((j + 1).ToString(), DarkTheme ? Color.White : Color.Black, tr); for (int i = 0; i < 6; i++) { - 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, (i, j)); + var (innen, ide) = API.HelyettesítésInnenIde(API.Ó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" : API.Ó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)); } @@ -227,8 +226,8 @@ namespace OrarendAndroidApp if (ij != 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) + (helyettesítésInnen, helyettesítésIde) = API.HelyettesítésInnenIde(API.Órarend, i, j); + if ((óra = API.Órarend.Órák[i][j]) == null && helyettesítésIde?.ÚjÓra == null) { deselect(); return; @@ -250,7 +249,7 @@ namespace OrarendAndroidApp + "\nNév: " + óra.TeljesNév + "\nTerem: " + óra.Terem + "\nTanár: " + óra.Tanár.Név - + "\nIdőtartam: " + órarend.Órakezdetek[j].ToString("hh\\:mm") + "-" + órarend.Órakezdetek[j].Add(new TimeSpan(0, 45, 0)).ToString("hh\\:mm") + + "\nIdőtartam: " + API.Órarend.Órakezdetek[j].ToString("hh\\:mm") + "-" + API.Órarend.Órakezdetek[j].Add(new TimeSpan(0, 45, 0)).ToString("hh\\:mm") + "\nCsoport: " + óra.Csoportok.Aggregate((a, b) => a + ", " + b); kivora.Visibility = ViewStates.Visible; } @@ -270,7 +269,7 @@ namespace OrarendAndroidApp ? "Áthelyezve: " + Napok[(int)helyettesítésIde.EredetiNap - 1] + " " + helyettesítésIde.EredetiSorszám + ". óra --> ide" + (helyettesítésIde.ÚjÓra.EgyediNév != óra?.EgyediNév ? "\nÓra: " + helyettesítésIde.ÚjÓra.EgyediNév : "") + (helyettesítésIde.ÚjÓra.Terem != óra?.Terem ? "\nTerem: " + helyettesítésIde.ÚjÓra.Terem : "") - + ((óra?.Tanár.Név != (helyettesítésIde.ÚjÓra.Tanár.Név == "" ? órarend.Órák[(int)helyettesítésIde.EredetiNap - 1][helyettesítésIde.EredetiSorszám - 1].Tanár.Név : helyettesítésIde.ÚjÓra.Tanár.Név)) ? "\nTanár: " + (óra?.Tanár.Név == "" ? órarend.Órák[(int)helyettesítésIde.EredetiNap - 1][helyettesítésIde.EredetiSorszám - 1].Tanár.Név : helyettesítésIde.ÚjÓra.Tanár.Név) : "") + + ((óra?.Tanár.Név != (helyettesítésIde.ÚjÓra.Tanár.Név == "" ? API.Órarend.Órák[(int)helyettesítésIde.EredetiNap - 1][helyettesítésIde.EredetiSorszám - 1].Tanár.Név : helyettesítésIde.ÚjÓra.Tanár.Név)) ? "\nTanár: " + (óra?.Tanár.Név == "" ? API.Órarend.Órák[(int)helyettesítésIde.EredetiNap - 1][helyettesítésIde.EredetiSorszám - 1].Tanár.Név : helyettesítésIde.ÚjÓra.Tanár.Név) : "") + (helyettesítésIde.ÚjÓra.Csoportok[0] != óra?.Csoportok[0] ? "\nCsoport: " + helyettesítésIde.ÚjÓra.Csoportok.Aggregate((a, b) => a + ", " + b) : "") //ˇˇ De ha változott, akkor nem : "") //Ha a pozicíó nem változott, a fentebbi rész már kiírta az adatait ; @@ -314,14 +313,14 @@ namespace OrarendAndroidApp } case Resource.Id.menu_edit: { - if (órarend == null) + if (API.Órarend == null) { Toast.MakeText(this, "Nincs órarend kiválasztva", ToastLength.Short).Show(); break; } var intent = new Intent(this, typeof(EditActivity)); intent.PutExtra("add", false); - intent.PutExtra("index", API.Órarendek.IndexOf(órarend)); + intent.PutExtra("index", API.Órarendek.IndexOf(API.Órarend)); StartActivityForResult(intent, EDIT_ADD_ACT_REQUEST); break; } @@ -399,7 +398,7 @@ namespace OrarendAndroidApp ÓrarendFrissítés(API.Órarendek[index]); else { - órarend = null; + API.ÓrarendKiválasztásTörlése(); órarendfrissítés(); } órarendlistafrissítés();