Óra eltolás, auto. fr.-t nem jelzi egy ideig, gyakori óranevek

This commit is contained in:
Norbi Peti 2017-09-07 23:07:18 +02:00
parent 55ab6467f4
commit e46a588a9f
5 changed files with 78 additions and 19 deletions

View file

@ -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 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)] [DataMember(Order = 2)]
public List<Órarend> órarendek { get; private set; } = new List<Órarend>(); public List<Órarend> órarendek { get; private set; } = new List<Órarend>();
//[DataMember] [DataMember]
public Settings beállítások { get; private set; } = new Settings(); public Settings beállítások { get; private set; } = new Settings();
/// <summary> /// <summary>
/// <para>Visszatér az osztályok listájával.</para> /// <para>Visszatér az osztályok listájával.</para>
@ -89,10 +89,11 @@ namespace Orarend
break; break;
default: 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; maxx = x > maxx ? x : maxx;
órarend.Órakezdetek[x] = TimeSpan.Parse(node.FirstChild.Attributes["title"].Value.Split('-')[0].Trim()); if (y >= 0 && y < órarend.Órakezdetek.Length)
var órák = (ahét ? órarend.ÓrákAHét : órarend.ÓrákBHét); ó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 for (int i = 0; i < 5; i++) //Napok
{ {
var óranode = node.ChildNodes[i + 1].FirstChild; var óranode = node.ChildNodes[i + 1].FirstChild;

View file

@ -18,6 +18,7 @@ namespace Orarend
set(";prggy", "Programozás gyakorlat"); set(";prggy", "Programozás gyakorlat");
set("testns", "Tesi"); set("testns", "Tesi");
set("tapism", "Töri"); set("tapism", "Töri");
set("torten", "Töri");
set("matema", "Matek"); set("matema", "Matek");
set("bioege", "Biosz"); set("bioege", "Biosz");
set("foldra", "Föci"); set("foldra", "Föci");
@ -29,5 +30,8 @@ namespace Orarend
if (ÓraTípus.Típusok.ContainsKey(id)) if (ÓraTípus.Típusok.ContainsKey(id))
ÓraTípus.Típusok[id].EgyediNév = name; ÓraTípus.Típusok[id].EgyediNév = name;
} }
[DataMember]
public sbyte ÓraOffset { get; set; } = 0;
} }
} }

View file

@ -107,7 +107,10 @@ 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 = () => bar.Visibility = ViewStates.Visible; 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 => API.HelyettesítésFrissítés(() => OpenFileOutput(DATA_FILENAME, FileCreationMode.Private)).ContinueWith(t =>
{ {
handler.RemoveCallbacks(loadstart); 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<ProgressBar>(Resource.Id.progressBar1); var bar = FindViewById<ProgressBar>(Resource.Id.progressBar1);
Action loadstart = () => bar.Visibility = ViewStates.Visible; 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 => API.Frissítés(() => OpenFileOutput(DATA_FILENAME, FileCreationMode.Private), ór).ContinueWith(t =>
{ {
handler.RemoveCallbacks(loadstart); handler.RemoveCallbacks(loadstart);
@ -290,7 +296,7 @@ namespace OrarendAndroidApp
menu.FindItem(Resource.Id.menu_preferences).SetIcon(Resource.Drawable.ic_settings_white_24dp); menu.FindItem(Resource.Id.menu_preferences).SetIcon(Resource.Drawable.ic_settings_white_24dp);
} }
if (API.Osztályok == null || API.Osztályok.Length == 0) if (API.Osztályok == null || API.Osztályok.Length == 0)
ÓrarendFrissítés(); ÓrarendFrissítés(true);
else else
órarendlistafrissítés(); órarendlistafrissítés();
return base.OnCreateOptionsMenu(menu); return base.OnCreateOptionsMenu(menu);
@ -333,7 +339,7 @@ namespace OrarendAndroidApp
} }
case Resource.Id.menu_fullrefresh: case Resource.Id.menu_fullrefresh:
{ {
ÓrarendFrissítés(); ÓrarendFrissítés(false);
break; 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."); 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") 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 else
Hiba(ex.ToString()); Hiba(ex.ToString());
ret = false; ret = false;
@ -398,7 +404,7 @@ namespace OrarendAndroidApp
return; return;
int index = data.Extras.GetBoolean("add") ? API.Órarendek.Count - 1 : data.Extras.GetInt("index"); int index = data.Extras.GetBoolean("add") ? API.Órarendek.Count - 1 : data.Extras.GetInt("index");
if (!data.Extras.GetBoolean("deleted")) if (!data.Extras.GetBoolean("deleted"))
ÓrarendFrissítés(API.Órarendek[index]); ÓrarendFrissítés(false, API.Órarendek[index]);
else else
{ {
API.ÓrarendKiválasztásTörlése(); API.ÓrarendKiválasztásTörlése();
@ -407,7 +413,11 @@ namespace OrarendAndroidApp
órarendlistafrissítés(); órarendlistafrissítés();
} }
else if (requestCode == SETTINGS_ACT_REQUEST) else if (requestCode == SETTINGS_ACT_REQUEST)
{
if (data?.Extras?.GetBoolean("offsetchanged") ?? false)
ÓrarendFrissítés(false);
Recreate(); Recreate();
}
} }
public override void OnWindowFocusChanged(bool hasFocus) public override void OnWindowFocusChanged(bool hasFocus)

View file

@ -1,8 +1,18 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference <CheckBoxPreference
android:key="pref_theme" android:key="pref_theme"
android:title="Sötét téma" android:title="Sötét téma"
android:summary="Sötét téma" android:summary="Sötét téma"
android:defaultValue="false" /> android:defaultValue="false" />
<Preference
android:key="pref_commonnames"
android:title="Gyakori óranevek"
android:summary="Gyakori óranevek használata" />
<EditTextPreference
android:key="pref_offset"
android:title="Óra eltolás"
android:summary="Pl. ha 1, akkor az első óra 8:15-kor kezdődik."
android:defaultValue="0"
android:numeric="integer" />
</PreferenceScreen> </PreferenceScreen>

View file

@ -10,11 +10,12 @@ using Android.Runtime;
using Android.Views; using Android.Views;
using Android.Widget; using Android.Widget;
using Android.Preferences; using Android.Preferences;
using Orarend;
namespace OrarendAndroidApp namespace OrarendAndroidApp
{ {
[Activity(Label = "Beállítások", Theme = "@android:style/Theme.Holo.Light")] [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) protected override void OnCreate(Bundle savedInstanceState)
{ {
@ -26,14 +27,30 @@ namespace OrarendAndroidApp
base.OnCreate(savedInstanceState); base.OnCreate(savedInstanceState);
#pragma warning disable CS0618 // Type or member is obsolete #pragma warning disable CS0618 // Type or member is obsolete
AddPreferencesFromResource(Resource.Xml.preferences); AddPreferencesFromResource(Resource.Xml.preferences);
FindPreference("pref_commonnames").OnPreferenceClickListener = this;
#pragma warning restore CS0618 // Type or member is obsolete #pragma warning restore CS0618 // Type or member is obsolete
PreferenceManager.SetDefaultValues(this, Resource.Xml.preferences, false); PreferenceManager.SetDefaultValues(this, Resource.Xml.preferences, false);
} }
private Intent intent;
public void OnSharedPreferenceChanged(ISharedPreferences sharedPreferences, string key) public void OnSharedPreferenceChanged(ISharedPreferences sharedPreferences, string key)
{ {
if (key == "pref_theme") switch (key)
Recreate(); {
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() protected override void OnResume()
@ -47,5 +64,22 @@ namespace OrarendAndroidApp
base.OnPause(); base.OnPause();
PreferenceManager.GetDefaultSharedPreferences(this).UnregisterOnSharedPreferenceChangeListener(this); 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;
}
} }
} }