diff --git a/Orarend/API.cs b/Orarend/API.cs index 7233f14..4ddf5ed 100644 --- a/Orarend/API.cs +++ b/Orarend/API.cs @@ -30,7 +30,7 @@ namespace Orarend public Osztály[] osztályok { get; private set; } = new Osztály[0]; //Ez az initializáció csak akkor fut le, ha nem tölti be fájlból [DataMember(Order = 2)] public List<Órarend> órarendek { get; private set; } = new List<Órarend>(); - //[DataMember] + [DataMember] public Settings beállítások { get; private set; } = new Settings(); /// /// Visszatér az osztályok listájával. @@ -89,10 +89,11 @@ namespace Orarend break; default: { - int x = int.Parse(node.FirstChild.InnerText) - 1; + int x = int.Parse(node.FirstChild.InnerText) - 1, y = x - Beállítások.ÓraOffset; maxx = x > maxx ? x : maxx; - órarend.Órakezdetek[x] = TimeSpan.Parse(node.FirstChild.Attributes["title"].Value.Split('-')[0].Trim()); - var órák = (ahét ? órarend.ÓrákAHét : órarend.ÓrákBHét); + if (y >= 0 && y < órarend.Órakezdetek.Length) + órarend.Órakezdetek[y] = TimeSpan.Parse(node.FirstChild.Attributes["title"].Value.Split('-')[0].Trim()); + var órák = ahét ? órarend.ÓrákAHét : órarend.ÓrákBHét; for (int i = 0; i < 5; i++) //Napok { var óranode = node.ChildNodes[i + 1].FirstChild; diff --git a/Orarend/Settings.cs b/Orarend/Settings.cs index ac3e806..c38f418 100644 --- a/Orarend/Settings.cs +++ b/Orarend/Settings.cs @@ -18,6 +18,7 @@ namespace Orarend set(";prggy", "Programozás gyakorlat"); set("testns", "Tesi"); set("tapism", "Töri"); + set("torten", "Töri"); set("matema", "Matek"); set("bioege", "Biosz"); set("foldra", "Föci"); @@ -29,5 +30,8 @@ namespace Orarend if (ÓraTípus.Típusok.ContainsKey(id)) ÓraTípus.Típusok[id].EgyediNév = name; } + + [DataMember] + public sbyte ÓraOffset { get; set; } = 0; } } diff --git a/OrarendAndroidApp/MainActivity.cs b/OrarendAndroidApp/MainActivity.cs index 903852e..292c122 100644 --- a/OrarendAndroidApp/MainActivity.cs +++ b/OrarendAndroidApp/MainActivity.cs @@ -107,7 +107,10 @@ namespace OrarendAndroidApp var bar = FindViewById(Resource.Id.progressBar1); //var menu = FindViewById(Resource.Id.actionMenuView1); Action loadstart = () => bar.Visibility = ViewStates.Visible; - handler.Post(loadstart); + if (internethiba) + handler.Post(loadstart); + else + handler.PostDelayed(loadstart, 500); API.HelyettesítésFrissítés(() => OpenFileOutput(DATA_FILENAME, FileCreationMode.Private)).ContinueWith(t => { handler.RemoveCallbacks(loadstart); @@ -125,11 +128,14 @@ namespace OrarendAndroidApp }); } - private void ÓrarendFrissítés(Órarend ór = null) + private void ÓrarendFrissítés(bool auto, Órarend ór = null) { var bar = FindViewById(Resource.Id.progressBar1); Action loadstart = () => bar.Visibility = ViewStates.Visible; - handler.Post(loadstart); + if (auto) + handler.PostDelayed(loadstart, 500); + else + handler.Post(loadstart); API.Frissítés(() => OpenFileOutput(DATA_FILENAME, FileCreationMode.Private), ór).ContinueWith(t => { handler.RemoveCallbacks(loadstart); @@ -290,7 +296,7 @@ namespace OrarendAndroidApp menu.FindItem(Resource.Id.menu_preferences).SetIcon(Resource.Drawable.ic_settings_white_24dp); } if (API.Osztályok == null || API.Osztályok.Length == 0) - ÓrarendFrissítés(); + ÓrarendFrissítés(true); else órarendlistafrissítés(); return base.OnCreateOptionsMenu(menu); @@ -333,7 +339,7 @@ namespace OrarendAndroidApp } case Resource.Id.menu_fullrefresh: { - ÓrarendFrissítés(); + ÓrarendFrissítés(false); break; } } @@ -364,7 +370,7 @@ namespace OrarendAndroidApp Hiba("Nem sikerült csatlakozni az E-naplóhoz.\nHa van internet, próbáld újraindítani az alkalmazást."); } else if (ex is InvalidOperationException oex && oex.Data.Contains("OERROR") && (string)oex.Data["OERROR"] == "CLS_NOT_FOUND") - ÓrarendFrissítés(); + ÓrarendFrissítés(true); else Hiba(ex.ToString()); ret = false; @@ -398,7 +404,7 @@ namespace OrarendAndroidApp return; int index = data.Extras.GetBoolean("add") ? API.Órarendek.Count - 1 : data.Extras.GetInt("index"); if (!data.Extras.GetBoolean("deleted")) - ÓrarendFrissítés(API.Órarendek[index]); + ÓrarendFrissítés(false, API.Órarendek[index]); else { API.ÓrarendKiválasztásTörlése(); @@ -407,7 +413,11 @@ namespace OrarendAndroidApp órarendlistafrissítés(); } else if (requestCode == SETTINGS_ACT_REQUEST) + { + if (data?.Extras?.GetBoolean("offsetchanged") ?? false) + ÓrarendFrissítés(false); Recreate(); + } } public override void OnWindowFocusChanged(bool hasFocus) diff --git a/OrarendAndroidApp/Resources/xml/preferences.xml b/OrarendAndroidApp/Resources/xml/preferences.xml index 6200df3..990eb8c 100644 --- a/OrarendAndroidApp/Resources/xml/preferences.xml +++ b/OrarendAndroidApp/Resources/xml/preferences.xml @@ -1,8 +1,18 @@  - + + + \ No newline at end of file diff --git a/OrarendAndroidApp/SettingsActivity.cs b/OrarendAndroidApp/SettingsActivity.cs index 93dd806..458b6cb 100644 --- a/OrarendAndroidApp/SettingsActivity.cs +++ b/OrarendAndroidApp/SettingsActivity.cs @@ -10,11 +10,12 @@ using Android.Runtime; using Android.Views; using Android.Widget; using Android.Preferences; +using Orarend; namespace OrarendAndroidApp { [Activity(Label = "Beállítások", Theme = "@android:style/Theme.Holo.Light")] - public class SettingsActivity : PreferenceActivity, ISharedPreferencesOnSharedPreferenceChangeListener + public class SettingsActivity : PreferenceActivity, ISharedPreferencesOnSharedPreferenceChangeListener, Preference.IOnPreferenceClickListener { protected override void OnCreate(Bundle savedInstanceState) { @@ -26,14 +27,30 @@ namespace OrarendAndroidApp base.OnCreate(savedInstanceState); #pragma warning disable CS0618 // Type or member is obsolete AddPreferencesFromResource(Resource.Xml.preferences); + FindPreference("pref_commonnames").OnPreferenceClickListener = this; #pragma warning restore CS0618 // Type or member is obsolete PreferenceManager.SetDefaultValues(this, Resource.Xml.preferences, false); } + private Intent intent; public void OnSharedPreferenceChanged(ISharedPreferences sharedPreferences, string key) { - if (key == "pref_theme") - Recreate(); + switch (key) + { + case "pref_theme": + Recreate(); + break; + case "pref_commonnames": + API.Beállítások.UseCommonNames(); + Toast.MakeText(this, "Óranevek frissítve", ToastLength.Short).Show(); + break; + case "pref_offset": + API.Beállítások.ÓraOffset = sbyte.Parse(sharedPreferences.GetString(key, "0")); + intent = new Intent(Intent); + intent.PutExtra("offsetchanged", true); + SetResult(Result.Ok, intent); + break; + } } protected override void OnResume() @@ -47,5 +64,22 @@ namespace OrarendAndroidApp base.OnPause(); PreferenceManager.GetDefaultSharedPreferences(this).UnregisterOnSharedPreferenceChangeListener(this); } + + public override void OnBackPressed() + { + SetResult(Result.Ok, intent); + //base.OnBackPressed(); + Finish(); + } + + public bool OnPreferenceClick(Preference preference) + { + if (preference.Key == "pref_commonnames") + { + API.Beállítások.UseCommonNames(); + Toast.MakeText(this, "Óranevek frissítve", ToastLength.Short).Show(); + } + return true; + } } } \ No newline at end of file