diff --git a/OrarendAndroidApp/EditActivity.cs b/OrarendAndroidApp/EditActivity.cs index b6a20a5..9bcb1d0 100644 --- a/OrarendAndroidApp/EditActivity.cs +++ b/OrarendAndroidApp/EditActivity.cs @@ -26,6 +26,11 @@ namespace OrarendAndroidApp Title = (add = Intent.Extras.GetBoolean("add")) ? "Hozzáadás" : "Szerkesztés"; index = Intent.Extras.GetInt("index"); var osztálySpinner = FindViewById(Resource.Id.osztálySpinner); + if (API.Osztályok == null) + { + MainActivity.Hiba(this, "Az osztálylista üres! Válaszd a Teljes frissítést a menübõl."); + Finish(); + } osztálySpinner.Adapter = new ArrayAdapter(this, Resource.Layout.simple_list_item_1, API.Osztályok); if (!add) { diff --git a/OrarendAndroidApp/MainActivity.cs b/OrarendAndroidApp/MainActivity.cs index 4a99c4e..6366ced 100644 --- a/OrarendAndroidApp/MainActivity.cs +++ b/OrarendAndroidApp/MainActivity.cs @@ -54,6 +54,8 @@ namespace OrarendAndroidApp handler.Post(() => { var list = FindViewById(Resource.Id.spinner); + int selected = list.SelectedItemPosition; + int count = list.Count; ArrayAdapter adapter; if (list.Adapter != null) { @@ -62,11 +64,15 @@ namespace OrarendAndroidApp adapter.AddAll(API.Órarendek); } else + { adapter = new ArrayAdapter(this, Resource.Layout.simple_list_item_1, API.Órarendek); + list.ItemSelected += ÓrarendClick; + } list.Adapter = adapter; adapter.NotifyDataSetChanged(); - list.ItemSelected += ÓrarendClick; - //list.SetSelection(list.SelectedItemPosition); //Szöveg frissítése - TODO: Teszt + if (selected >= list.Count || list.Count > count) //TÖrlés vagy hozzáadás után + selected = list.Count - 1; + list.SetSelection(selected); }); } @@ -105,30 +111,19 @@ namespace OrarendAndroidApp private void ÓrarendFrissítés(Órarend ór = null) { //TODO: Meghívni minden tervezett alkalommal; hozzáadásnál csak a hozzáadott órarendet frissítse - try + var bar = FindViewById(Resource.Id.progressBar1); + handler.Post(() => bar.Visibility = ViewStates.Visible); + API.Frissítés(OpenFileOutput("orarend", FileCreationMode.Private), OpenFileOutput("osztaly", FileCreationMode.Private), ór).ContinueWith(t => { - var bar = FindViewById(Resource.Id.progressBar1); - handler.Post(() => bar.Visibility = ViewStates.Visible); - API.Frissítés(OpenFileOutput("orarend", FileCreationMode.Private), OpenFileOutput("osztaly", FileCreationMode.Private), ór).ContinueWith(t => + handler.Post(() => { - handler.Post(() => - { - if (TaskHiba(t) && órarend != null && (ór == null || ór == órarend)) - órarendfrissítés(); - bar.Visibility = ViewStates.Gone; - órarendlistafrissítés(); - Toast.MakeText(this, "Órarend" + (ór == null ? "ek" : "") + " és osztálylista frissítve", ToastLength.Short).Show(); - }); + if (TaskHiba(t) && (ór == null || ór == órarend)) + órarendfrissítés(); + bar.Visibility = ViewStates.Gone; + órarendlistafrissítés(); + Toast.MakeText(this, "Órarend" + (ór == null ? "ek" : "") + " és osztálylista frissítve", ToastLength.Short).Show(); }); - } - catch(WebException) - { - Hiba("Nem sikerült az órarend" + (ór == null ? "ek" : "") + "et frissíteni"); - } - catch(System.Exception e) - { - Hiba(e.ToString()); - } + }); } private void órarendfrissítés() @@ -137,6 +132,8 @@ namespace OrarendAndroidApp if (table.ChildCount > 1) table.RemoveViews(1, table.ChildCount - 1); FindViewById(Resource.Id.kivoraTV).Visibility = ViewStates.Gone; + if (órarend == null) + return; TableRow tr = new TableRow(this); addCell("", Color.Black, tr); addCell("HétfÅ‘", Color.Black, tr); @@ -221,6 +218,11 @@ namespace OrarendAndroidApp } case Resource.Id.menu_edit: { + if (ó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)); @@ -240,7 +242,12 @@ namespace OrarendAndroidApp private void Hiba(string msg) { - new AlertDialog.Builder(this).SetMessage(msg).SetNeutralButton("OK", (s, e) => { ((AlertDialog)s).Dismiss(); ((AlertDialog)s).Dispose(); }).SetTitle("Hiba").Show(); + Hiba(this, msg); + } + + public static void Hiba(Context c, string msg) + { + new AlertDialog.Builder(c).SetMessage(msg).SetNeutralButton("OK", (s, e) => { ((AlertDialog)s).Dismiss(); ((AlertDialog)s).Dispose(); }).SetTitle("Hiba").Show(); } /// @@ -253,7 +260,10 @@ namespace OrarendAndroidApp bool ret = true; foreach (var ex in (IEnumerable)t.Exception?.InnerExceptions ?? new System.Exception[0]) { - Hiba(ex.ToString()); + if (ex is WebException) + Hiba("Nem sikerült csatlakozni az E-naplóhoz.\n" + ex.Message); + else + Hiba(ex.ToString()); ret = false; } return ret; @@ -323,10 +333,16 @@ namespace OrarendAndroidApp base.OnActivityResult(requestCode, resultCode, data); if (resultCode == Result.Canceled) return; + int index = data.Extras.GetBoolean("add") ? API.Órarendek.Count - 1 : data.Extras.GetInt("index"); if (requestCode == EDIT_ADD_ACT_REQUEST) { if (!data.Extras.GetBoolean("deleted")) - ÓrarendFrissítés(data.Extras.GetBoolean("add") ? API.Órarendek.Last() : API.Órarendek[data.Extras.GetInt("index")]); + ÓrarendFrissítés(API.Órarendek[index]); + else + { + órarend = null; + órarendfrissítés(); + } órarendlistafrissítés(); } } diff --git a/OrarendAndroidApp/OrarendAndroidApp.csproj b/OrarendAndroidApp/OrarendAndroidApp.csproj index 9bfedd5..9bdfb85 100644 --- a/OrarendAndroidApp/OrarendAndroidApp.csproj +++ b/OrarendAndroidApp/OrarendAndroidApp.csproj @@ -20,7 +20,7 @@ Properties\AndroidManifest.xml - true + True full false bin\Debug\ @@ -29,6 +29,16 @@ 4 True None + + False + False + False + + + + + Xamarin + False pdbonly diff --git a/OrarendAndroidApp/Properties/AndroidManifest.xml b/OrarendAndroidApp/Properties/AndroidManifest.xml index b19d5ec..57d8598 100644 --- a/OrarendAndroidApp/Properties/AndroidManifest.xml +++ b/OrarendAndroidApp/Properties/AndroidManifest.xml @@ -1,5 +1,6 @@  - - - + + + + \ No newline at end of file