From 0e73f5df2419d4aeeb47a4d2d9ee54de3c337bff Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Tue, 14 Feb 2017 23:37:20 +0100 Subject: [PATCH] =?UTF-8?q?=C3=93rar=C3=A9szletez=C3=A9s,=20k=C3=B6vetkez?= =?UTF-8?q?=C5=91=20=C3=B3ra,=20jav=C3=ADt=C3=A1sok?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Órakiválasztás, a kiválasztott óra részletezése - A következő óra részletezése, visszaszámlálás - Most már nem rak be üres órákat, csak nullt --- Orarend/API.cs | 4 +- OrarendAndroidApp/MainActivity.cs | 134 +++++++++++++----- .../Resources/Resource.Designer.cs | 41 ++++-- .../Resources/layout/MainLayout.axml | 70 ++++++++- 4 files changed, 199 insertions(+), 50 deletions(-) diff --git a/Orarend/API.cs b/Orarend/API.cs index f31bca7..254afa4 100644 --- a/Orarend/API.cs +++ b/Orarend/API.cs @@ -71,11 +71,11 @@ namespace Orarend var óra = (ahét ? órarend.ÓrákAHét : órarend.ÓrákBHét)[i, x]; if (óranode.ChildNodes.Count == 0) continue; - if (óra == null) - (ahét ? órarend.ÓrákAHét : órarend.ÓrákBHét)[i, x] = óra = new Óra(); var csoport = óranode.FirstChild.InnerText.TrimEnd(':'); if (csoport != "Egész osztály" && !órarend.Csoportok.Contains(csoport)) continue; + if (óra == null) + (ahét ? órarend.ÓrákAHét : órarend.ÓrákBHét)[i, x] = óra = new Óra(); óra.Sorszám = x + 1; óra.Csoportok = new string[] { csoport }; //Az állandó órarendben osztályonként csak egy csoport van egy órán óra.Azonosító = óranode.ChildNodes[2].InnerText; diff --git a/OrarendAndroidApp/MainActivity.cs b/OrarendAndroidApp/MainActivity.cs index 93d4b22..00169b5 100644 --- a/OrarendAndroidApp/MainActivity.cs +++ b/OrarendAndroidApp/MainActivity.cs @@ -11,6 +11,7 @@ using Android.Graphics; using Java.Lang; using System.Collections.Generic; using System.Threading.Tasks; +using System.Threading; namespace OrarendAndroidApp { @@ -35,40 +36,22 @@ namespace OrarendAndroidApp API.Órarendek.Add(órarend); API.Frissítés().ContinueWith(tt => HelyettesítésFrissítés()); }); + var timer = new Timer(CsengőTimer, null, TimeSpan.Zero, new TimeSpan(0, 0, 1)); } - private int a = 0; //TODO: TMP private void HelyettesítésFrissítés() { var table = FindViewById(Resource.Id.tableLayout1); - Action addCell = (text, color, tr1) => + Action addCell = (text, color, tr1, clickable, tag) => { TextView textview = new TextView(this); textview.SetText(text, TextView.BufferType.Normal); textview.SetTextColor(color); textview.SetPadding(10, 10, 10, 10); - switch(a) - { - case 0: - textview.SetBackgroundResource(Resource.Drawable.cell_shape_light); - a++; - break; - case 1: - textview.SetBackgroundResource(Resource.Drawable.cell_shape_selected_light); - a++; - break; - case 2: - textview.SetBackgroundResource(Resource.Drawable.cell_shape_removed_light); - a++; - break; - case 3: - textview.SetBackgroundResource(Resource.Drawable.cell_shape_added_light); - a++; - break; - default: - a = 0; - break; - } + textview.SetBackgroundResource(Resource.Drawable.cell_shape_light); + textview.Tag = tag; + if (textview.Clickable = clickable) + textview.Click += ÓraClick; tr1.AddView(textview); }; API.HelyettesítésFrissítés().ContinueWith(t => @@ -78,13 +61,13 @@ namespace OrarendAndroidApp TaskHiba(t); { TableRow tr = new TableRow(this); - addCell("", Color.Black, tr); - addCell("Hétfő", Color.Black, tr); - addCell("Kedd", Color.Black, tr); - addCell("Szerda", Color.Black, tr); - addCell("Csütörtök", Color.Black, tr); - addCell("Péntek", Color.Black, tr); - addCell("Szombat", Color.Black, tr); + addCell("", Color.Black, tr, false, null); + addCell("Hétfő", Color.Black, tr, false, null); + addCell("Kedd", Color.Black, tr, false, null); + addCell("Szerda", Color.Black, tr, false, null); + addCell("Csütörtök", Color.Black, tr, false, null); + addCell("Péntek", Color.Black, tr, false, null); + addCell("Szombat", Color.Black, tr, false, null); table.AddView(tr, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent)); } @@ -104,9 +87,9 @@ namespace OrarendAndroidApp } if (notnull) { - addCell((j + 1).ToString(), Color.Black, tr); + addCell((j + 1).ToString(), Color.Black, tr, false, null); for (int i = 0; i < órarend.ÓrákAHét.GetLength(0); i++) - addCell(órarend.ÓrákAHét[i, j] != null ? órarend.ÓrákAHét[i, j].EgyediNév : "", Color.Black, tr); + addCell(órarend.ÓrákAHét[i, j] != null ? órarend.ÓrákAHét[i, j].EgyediNév : "", Color.Black, tr, true, new int[2] { i, j }); table.AddView(tr, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent)); } } @@ -115,6 +98,33 @@ namespace OrarendAndroidApp }); } + private TextView selected; + /// + /// Kiválasztja az adott órát + /// + private void ÓraClick(object sender, EventArgs e) + { + var tv = (TextView)sender; + var ij = (int[])tv.Tag; + Óra óra = órarend.ÓrákAHét[ij[0], ij[1]]; + if (óra == null) + return; + if (selected != null && selected != sender) + selected.SetBackgroundResource(Resource.Drawable.cell_shape_light); + tv.SetBackgroundResource(Resource.Drawable.cell_shape_selected_light); + selected = tv; + FindViewById(Resource.Id.pozTV).Text = ((TextView)((TableRow)FindViewById(Resource.Id.tableLayout1).GetChildAt(1)).GetChildAt(ij[0] + 1)).Text + " " + (ij[1] + 1) + ". óra"; + FindViewById(Resource.Id.pozTV).Visibility = ViewStates.Visible; + FindViewById(Resource.Id.nevTV).Text = óra.TeljesNév; + FindViewById(Resource.Id.nevTV).Visibility = ViewStates.Visible; + FindViewById(Resource.Id.teremTV).Text = óra.Terem; + FindViewById(Resource.Id.teremTV).Visibility = ViewStates.Visible; + FindViewById(Resource.Id.tanarTV).Text = óra.Tanár.Név; + FindViewById(Resource.Id.tanarTV).Visibility = ViewStates.Visible; + FindViewById(Resource.Id.idoTV).Text = órarend.Órakezdetek[ij[1]].ToString("hh\\:mm") + "-" + órarend.Órakezdetek[ij[1]].Add(new TimeSpan(0, 45, 0)).ToString("hh\\:mm"); + FindViewById(Resource.Id.idoTV).Visibility = ViewStates.Visible; + } + public override bool OnCreateOptionsMenu(IMenu menu) { MenuInflater.Inflate(Resource.Menu.main_menu_light, menu); @@ -165,5 +175,63 @@ namespace OrarendAndroidApp foreach (var ex in (IEnumerable)t.Exception?.InnerExceptions ?? new System.Exception[0]) Hiba(ex.ToString()); } + + private void CsengőTimer(object state) + { + handler.Post(() => + { + if (órarend == null) + return; + var kezdveg = FindViewById(Resource.Id.kezdvegTV); + //var most = DateTime.Now - DateTime.Today; + var most = new TimeSpan(10, 0, 0) + (DateTime.Now - DateTime.Today - new TimeSpan(22, 0, 0)); + bool talált = false; + var kovora = FindViewById(Resource.Id.kovoraTV); + for (int i = 0; i < órarend.Órakezdetek.Length - 1; i++) + { + var vége = órarend.Órakezdetek[i].Add(new TimeSpan(0, 45, 0)); + if (most > órarend.Órakezdetek[i]) + { + if (most < vége) + { + kezdveg.Text = "Kicsengetés: " + (vége - most).ToString("hh\\:mm\\:ss"); + talált = true; + } + else + { + if (órarend.Órakezdetek[i] == TimeSpan.Zero) + { //Még nincsenek beállítva a kezdetek + kezdveg.Text = "Betöltés"; + talált = true; + break; + } + continue; + } + } + else + { + kezdveg.Text = "Becsengetés: " + (órarend.Órakezdetek[i] - most).ToString("hh\\:mm\\:ss"); + talált = true; + kovora.Visibility = ViewStates.Invisible; + } + int x = (int)DateTime.Today.DayOfWeek - 1; + var óra = órarend.ÓrákAHét[x, i]; + if (x < 6 && óra != null) + { + kovora.Text = "Következő óra: " + óra.EgyediNév + "\n" + óra.Terem + "\n" + óra.Tanár.Név+"\n"+"ASD"; + kovora.Visibility = ViewStates.Visible; + } + else + kovora.Visibility = ViewStates.Invisible; + break; + } + if (!talált) + { + kezdveg.Text = "Nincs több óra ma"; + kovora.Visibility = ViewStates.Invisible; + } + kezdveg.Visibility = ViewStates.Visible; + }); //TODO: Az egészet függőlegesen görgethetővé tenni + } } } diff --git a/OrarendAndroidApp/Resources/Resource.Designer.cs b/OrarendAndroidApp/Resources/Resource.Designer.cs index 3f27e7a..7a66130 100644 --- a/OrarendAndroidApp/Resources/Resource.Designer.cs +++ b/OrarendAndroidApp/Resources/Resource.Designer.cs @@ -93,20 +93,35 @@ namespace OrarendAndroidApp // aapt resource value: 0x7f060001 public const int horizontalView = 2131099649; - // aapt resource value: 0x7f060006 - public const int menu_add = 2131099654; - - // aapt resource value: 0x7f060007 - public const int menu_edit = 2131099655; - // aapt resource value: 0x7f060009 - public const int menu_fullrefresh = 2131099657; + public const int idoTV = 2131099657; - // aapt resource value: 0x7f060008 - public const int menu_preferences = 2131099656; + // aapt resource value: 0x7f06000a + public const int kezdvegTV = 2131099658; + + // aapt resource value: 0x7f06000b + public const int kovoraTV = 2131099659; + + // aapt resource value: 0x7f06000d + public const int menu_add = 2131099661; + + // aapt resource value: 0x7f06000e + public const int menu_edit = 2131099662; + + // aapt resource value: 0x7f060010 + public const int menu_fullrefresh = 2131099664; + + // aapt resource value: 0x7f06000f + public const int menu_preferences = 2131099663; + + // aapt resource value: 0x7f06000c + public const int menu_refresh = 2131099660; + + // aapt resource value: 0x7f060006 + public const int nevTV = 2131099654; // aapt resource value: 0x7f060005 - public const int menu_refresh = 2131099653; + public const int pozTV = 2131099653; // aapt resource value: 0x7f060003 public const int progressBar1 = 2131099651; @@ -114,6 +129,12 @@ namespace OrarendAndroidApp // aapt resource value: 0x7f060002 public const int tableLayout1 = 2131099650; + // aapt resource value: 0x7f060008 + public const int tanarTV = 2131099656; + + // aapt resource value: 0x7f060007 + public const int teremTV = 2131099655; + static Id() { global::Android.Runtime.ResourceIdManager.UpdateIdValues(); diff --git a/OrarendAndroidApp/Resources/layout/MainLayout.axml b/OrarendAndroidApp/Resources/layout/MainLayout.axml index d90e474..52b65a1 100644 --- a/OrarendAndroidApp/Resources/layout/MainLayout.axml +++ b/OrarendAndroidApp/Resources/layout/MainLayout.axml @@ -7,7 +7,7 @@ android:minHeight="25px"> - + + + + + + + + \ No newline at end of file