Ó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
[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();
/// <summary>
/// <para>Visszatér az osztályok listájával.</para>
@ -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;

View file

@ -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;
}
}

View file

@ -107,7 +107,10 @@ namespace OrarendAndroidApp
var bar = FindViewById<ProgressBar>(Resource.Id.progressBar1);
//var menu = FindViewById<ActionMenuView>(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<ProgressBar>(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)

View file

@ -1,8 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:key="pref_theme"
android:title="Sötét téma"
android:summary="Sötét téma"
android:defaultValue="false" />
<CheckBoxPreference
android:key="pref_theme"
android:title="Sötét téma"
android:summary="Sötét téma"
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>

View file

@ -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;
}
}
}