Compare commits
13 commits
Author | SHA1 | Date | |
---|---|---|---|
87c056b690 | |||
866903b790 | |||
6854be7281 | |||
538fb1b47c | |||
df6d850131 | |||
2ff64cd7c4 | |||
d3a987d526 | |||
074ed19236 | |||
403fde579d | |||
f4fc6d9278 | |||
34ede81265 | |||
e5915c8082 | |||
e46a588a9f |
18 changed files with 234 additions and 81 deletions
|
@ -9,6 +9,7 @@ using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Runtime.Serialization;
|
using System.Runtime.Serialization;
|
||||||
using System.Runtime.Serialization.Json;
|
using System.Runtime.Serialization.Json;
|
||||||
|
using System.Security;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
@ -30,7 +31,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(Order = 3)]
|
||||||
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 +90,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;
|
||||||
|
@ -283,14 +285,16 @@ namespace Orarend
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
int jelenlegihét = CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(DateTime.Today, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday);
|
int jelenlegihét = napbólhét(DateTime.Today);
|
||||||
if (DateTime.Today.DayOfWeek > DayOfWeek.Friday || DateTime.Today.DayOfWeek == DayOfWeek.Sunday)
|
if (DateTime.Today.DayOfWeek > DayOfWeek.Friday || DateTime.Today.DayOfWeek == DayOfWeek.Sunday)
|
||||||
jelenlegihét++;
|
jelenlegihét++;
|
||||||
return jelenlegihét;
|
return jelenlegihét;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool AHét { get => Hét % 2 == 0; }
|
private static int napbólhét(DateTime nap) => CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(nap, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday);
|
||||||
|
|
||||||
|
public static bool AHét { get => Hét % 2 == napbólhét(new DateTime(DateTime.Today.Year - (DateTime.Today.Month < 8 ? 1 : 0), 9, 1)) % 2; }
|
||||||
|
|
||||||
public static bool Fókusz
|
public static bool Fókusz
|
||||||
{
|
{
|
||||||
|
@ -308,7 +312,7 @@ namespace Orarend
|
||||||
|
|
||||||
private static DateTime utolsófrissítésplusz1óra = DateTime.MinValue;
|
private static DateTime utolsófrissítésplusz1óra = DateTime.MinValue;
|
||||||
public static event EventHandler<FrissítésEventArgs> Frissítéskor;
|
public static event EventHandler<FrissítésEventArgs> Frissítéskor;
|
||||||
public class FrissítésEventArgs { public bool Siker { get; set; } = false; }
|
public class FrissítésEventArgs : EventArgs { public bool Siker { get; set; } = false; }
|
||||||
private static void frissítésHa1ÓraEltelt()
|
private static void frissítésHa1ÓraEltelt()
|
||||||
{
|
{
|
||||||
if (utolsófrissítésplusz1óra > DateTime.Now)
|
if (utolsófrissítésplusz1óra > DateTime.Now)
|
||||||
|
@ -335,8 +339,8 @@ namespace Orarend
|
||||||
//Ha az eredeti óra elmarad, és ide lesz helyezve egy másik, az áthelyezést mutassa
|
//Ha az eredeti óra elmarad, és ide lesz helyezve egy másik, az áthelyezést mutassa
|
||||||
|
|
||||||
public static Órarend Órarend { get; private set; }
|
public static Órarend Órarend { get; private set; }
|
||||||
public static void ÓrarendKiválasztás(int position) => Órarend = Órarendek[position];
|
public static void ÓrarendKiválasztás(int position) { Órarend = Órarendek[position]; CsengőTimer(null); }
|
||||||
public static void ÓrarendKiválasztásTörlése() => Órarend = null;
|
public static void ÓrarendKiválasztásTörlése() { Órarend = null; CsengőTimer(null); }
|
||||||
|
|
||||||
private static bool nincstöbbóra = false;
|
private static bool nincstöbbóra = false;
|
||||||
public static event EventHandler<TimerEventArgs> CsengőTimerEvent;
|
public static event EventHandler<TimerEventArgs> CsengőTimerEvent;
|
||||||
|
@ -346,9 +350,9 @@ namespace Orarend
|
||||||
if (Órarend == null)
|
if (Órarend == null)
|
||||||
return new TimerEventArgs(null, "Nincs órarend kiválasztva");
|
return new TimerEventArgs(null, "Nincs órarend kiválasztva");
|
||||||
var most = DateTime.Now - DateTime.Today;
|
var most = DateTime.Now - DateTime.Today;
|
||||||
//var most = new TimeSpan(9, 46, 0);
|
//var most = new TimeSpan(12, 46, 0);
|
||||||
bool talált = false;
|
bool talált = false;
|
||||||
if (Órarend.Órakezdetek[0] == TimeSpan.Zero) //Még nincsenek beállítva a kezdetek
|
if (Órarend.Órakezdetek[Beállítások.ÓraOffset] == TimeSpan.Zero) //Még nincsenek beállítva a kezdetek
|
||||||
return new TimerEventArgs(null, "Betöltés");
|
return new TimerEventArgs(null, "Betöltés");
|
||||||
string kezdveg = null, kovora = null;
|
string kezdveg = null, kovora = null;
|
||||||
for (int i = 0; i < Órarend.Órakezdetek.Length - 1; i++)
|
for (int i = 0; i < Órarend.Órakezdetek.Length - 1; i++)
|
||||||
|
@ -358,7 +362,7 @@ namespace Orarend
|
||||||
int x = (int)DateTime.Today.DayOfWeek - 1;
|
int x = (int)DateTime.Today.DayOfWeek - 1;
|
||||||
Óra óra;
|
Óra óra;
|
||||||
var (innen, ide) = HelyettesítésInnenIde(Órarend, x, i);
|
var (innen, ide) = HelyettesítésInnenIde(Órarend, x, i);
|
||||||
Func<TimeSpan, string> óraperc = ts => ts.Hours > 0 ? ts.ToString("h\\ómm\\p") : ts.ToString("mm") + " perc";
|
Func<TimeSpan, string> óraperc = ts => ts.Hours > 0 ? ts.ToString("h\\ómm\\p") : ts.ToString("%m") + " perc";
|
||||||
if (x != -1 && x < 6 && (óra = ide != null ? ide.ÚjÓra : innen != null ? innen.EredetiNap != innen.ÚjNap || innen.EredetiSorszám != innen.ÚjSorszám ? null : innen.ÚjÓra : Órarend.Órák[x][i]) != null)
|
if (x != -1 && x < 6 && (óra = ide != null ? ide.ÚjÓra : innen != null ? innen.EredetiNap != innen.ÚjNap || innen.EredetiSorszám != innen.ÚjSorszám ? null : innen.ÚjÓra : Órarend.Órák[x][i]) != null)
|
||||||
{ //-1: Vasárnap
|
{ //-1: Vasárnap
|
||||||
if (most > Órarend.Órakezdetek[i])
|
if (most > Órarend.Órakezdetek[i])
|
||||||
|
|
|
@ -33,6 +33,9 @@
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<SignAssembly>false</SignAssembly>
|
||||||
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="API.cs" />
|
<Compile Include="API.cs" />
|
||||||
<Compile Include="Events\TimerEventArgs.cs" />
|
<Compile Include="Events\TimerEventArgs.cs" />
|
||||||
|
@ -50,8 +53,8 @@
|
||||||
<Reference Include="HtmlAgilityPack, Version=1.4.9.5, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="HtmlAgilityPack, Version=1.4.9.5, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\HtmlAgilityPack.1.4.9.5\lib\portable-net45+netcore45+wp8+MonoAndroid+MonoTouch\HtmlAgilityPack.dll</HintPath>
|
<HintPath>..\packages\HtmlAgilityPack.1.4.9.5\lib\portable-net45+netcore45+wp8+MonoAndroid+MonoTouch\HtmlAgilityPack.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.ValueTuple, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
<Reference Include="System.ValueTuple, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51">
|
||||||
<HintPath>..\packages\System.ValueTuple.4.3.0\lib\portable-net40+sl4+win8+wp8\System.ValueTuple.dll</HintPath>
|
<HintPath>..\packages\System.ValueTuple.4.4.0\lib\portable-net40+sl4+win8+wp8\System.ValueTuple.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.CompilerServices;
|
using System.Runtime.CompilerServices;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Security;
|
||||||
|
|
||||||
// General Information about an assembly is controlled through the following
|
// General Information about an assembly is controlled through the following
|
||||||
// set of attributes. Change these attribute values to modify the information
|
// set of attributes. Change these attribute values to modify the information
|
||||||
|
@ -15,6 +16,7 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
[assembly: NeutralResourcesLanguage("en")]
|
[assembly: NeutralResourcesLanguage("en")]
|
||||||
|
[assembly: SecurityTransparent]
|
||||||
|
|
||||||
// Version information for an assembly consists of the following four values:
|
// Version information for an assembly consists of the following four values:
|
||||||
//
|
//
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,5 +4,5 @@
|
||||||
<package id="System.Collections" version="4.3.0" targetFramework="portable46-net451+win81" />
|
<package id="System.Collections" version="4.3.0" targetFramework="portable46-net451+win81" />
|
||||||
<package id="System.Resources.ResourceManager" version="4.3.0" targetFramework="portable46-net451+win81" />
|
<package id="System.Resources.ResourceManager" version="4.3.0" targetFramework="portable46-net451+win81" />
|
||||||
<package id="System.Runtime" version="4.3.0" targetFramework="portable46-net451+win81" />
|
<package id="System.Runtime" version="4.3.0" targetFramework="portable46-net451+win81" />
|
||||||
<package id="System.ValueTuple" version="4.3.0" targetFramework="portable46-net451+win81" />
|
<package id="System.ValueTuple" version="4.4.0" targetFramework="portable46-net451+win81" />
|
||||||
</packages>
|
</packages>
|
|
@ -21,6 +21,9 @@ namespace Orarend
|
||||||
[DataMember]
|
[DataMember]
|
||||||
public string[] Csoportok { get; set; }
|
public string[] Csoportok { get; set; }
|
||||||
|
|
||||||
|
[DataMember]
|
||||||
|
public bool ManuálisanHozzáadott { get; set; }
|
||||||
|
|
||||||
[DataMember]
|
[DataMember]
|
||||||
public string Azonosító
|
public string Azonosító
|
||||||
{
|
{
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Runtime.Serialization;
|
using System.Runtime.Serialization;
|
||||||
|
using System.Security;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
using Android.App;
|
using Android.App;
|
||||||
using Android.OS;
|
using Android.OS;
|
||||||
using Android.Preferences;
|
using Android.Preferences;
|
||||||
|
using System.Security;
|
||||||
|
|
||||||
namespace OrarendAndroidApp
|
namespace OrarendAndroidApp
|
||||||
{
|
{
|
||||||
|
|
|
@ -12,6 +12,7 @@ using Android.Widget;
|
||||||
using Orarend;
|
using Orarend;
|
||||||
using Android.Graphics;
|
using Android.Graphics;
|
||||||
using Android.Preferences;
|
using Android.Preferences;
|
||||||
|
using System.Security;
|
||||||
|
|
||||||
namespace OrarendAndroidApp
|
namespace OrarendAndroidApp
|
||||||
{
|
{
|
||||||
|
|
|
@ -15,6 +15,7 @@ using System.IO;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using Android.Preferences;
|
using Android.Preferences;
|
||||||
using Orarend.Events;
|
using Orarend.Events;
|
||||||
|
using System.Security;
|
||||||
|
|
||||||
namespace OrarendAndroidApp
|
namespace OrarendAndroidApp
|
||||||
{
|
{
|
||||||
|
@ -43,6 +44,11 @@ namespace OrarendAndroidApp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void OnDestroy()
|
||||||
|
{
|
||||||
|
base.OnDestroy();
|
||||||
|
}
|
||||||
|
|
||||||
private void AndroidEnvironment_UnhandledExceptionRaiser(object sender, RaiseThrowableEventArgs e)
|
private void AndroidEnvironment_UnhandledExceptionRaiser(object sender, RaiseThrowableEventArgs e)
|
||||||
{
|
{
|
||||||
if (!e.Handled) Hiba("Kezeletlen hiba!\n" + e.Exception);
|
if (!e.Handled) Hiba("Kezeletlen hiba!\n" + e.Exception);
|
||||||
|
@ -82,6 +88,7 @@ namespace OrarendAndroidApp
|
||||||
órarendfrissítés();
|
órarendfrissítés();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[SecuritySafeCritical]
|
||||||
private void addCell(string text, Color color, TableRow tr1, (int, int)? tag = null)
|
private void addCell(string text, Color color, TableRow tr1, (int, int)? tag = null)
|
||||||
{
|
{
|
||||||
TextView textview = new TextView(this);
|
TextView textview = new TextView(this);
|
||||||
|
@ -92,9 +99,13 @@ namespace OrarendAndroidApp
|
||||||
textview.Tag = tag.HasValue ? new JavaTuple<int, int>(tag.Value) : null;
|
textview.Tag = tag.HasValue ? new JavaTuple<int, int>(tag.Value) : null;
|
||||||
textview.Clickable = true;
|
textview.Clickable = true;
|
||||||
textview.Click += ÓraClick;
|
textview.Click += ÓraClick;
|
||||||
|
//textview.LongClick += ÓraLongClick;
|
||||||
|
RegisterForContextMenu(textview);
|
||||||
|
textview.ContextMenuCreated += ÓraContextMenuCreated;
|
||||||
tr1.AddView(textview);
|
tr1.AddView(textview);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[SecuritySafeCritical]
|
||||||
private class JavaTuple<T1, T2> : Java.Lang.Object
|
private class JavaTuple<T1, T2> : Java.Lang.Object
|
||||||
{
|
{
|
||||||
public (T1, T2) obj;
|
public (T1, T2) obj;
|
||||||
|
@ -107,7 +118,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;
|
||||||
|
if (internethiba)
|
||||||
handler.Post(loadstart);
|
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,10 +139,13 @@ 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;
|
||||||
|
if (auto)
|
||||||
|
handler.PostDelayed(loadstart, 500);
|
||||||
|
else
|
||||||
handler.Post(loadstart);
|
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 =>
|
||||||
{
|
{
|
||||||
|
@ -150,6 +167,7 @@ namespace OrarendAndroidApp
|
||||||
|
|
||||||
private string[] Napok = new string[6] { "Hétfő", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat" };
|
private string[] Napok = new string[6] { "Hétfő", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat" };
|
||||||
|
|
||||||
|
[SecuritySafeCritical]
|
||||||
private void órarendfrissítés()
|
private void órarendfrissítés()
|
||||||
{
|
{
|
||||||
var table = FindViewById<TableLayout>(Resource.Id.tableLayout1);
|
var table = FindViewById<TableLayout>(Resource.Id.tableLayout1);
|
||||||
|
@ -170,7 +188,7 @@ namespace OrarendAndroidApp
|
||||||
bool notnull = false;
|
bool notnull = false;
|
||||||
for (int i = 0; i < 6; i++)
|
for (int i = 0; i < 6; i++)
|
||||||
{ //Kihagyja az üres sorokat
|
{ //Kihagyja az üres sorokat
|
||||||
if (API.Órarend.Órák[i][j] != null) //TODO: Helyettesítéseket is figyelje
|
if (API.Órarend.Órák[i][j] != null && API.HelyettesítésInnenIde(API.Órarend, i, j).Item2 != null)
|
||||||
{
|
{
|
||||||
notnull = true;
|
notnull = true;
|
||||||
break;
|
break;
|
||||||
|
@ -191,7 +209,7 @@ namespace OrarendAndroidApp
|
||||||
for (int i = 0; i < 6; i++)
|
for (int i = 0; i < 6; i++)
|
||||||
{
|
{
|
||||||
var (innen, ide) = API.HelyettesítésInnenIde(API.Órarend, i, j);
|
var (innen, ide) = API.HelyettesítésInnenIde(API.Órarend, i, j);
|
||||||
addCell(ide != null ? ide.ÚjÓra.EgyediNév : innen != null ? innen.EredetiNap != innen.ÚjNap || innen.EredetiSorszám != innen.ÚjSorszám ? "Áthelyezve" : innen.ÚjÓra?.EgyediNév ?? "elmarad" : API.Órarend.Órák[i][j]?.EgyediNév ?? "", innen == null ? (DarkTheme ? Color.WhiteSmoke : Color.Black) : Color.Red, tr, (i, j));
|
addCell(ide != null ? ide.ÚjÓra.EgyediNév : innen != null ? innen.EredetiNap != innen.ÚjNap || innen.EredetiSorszám != innen.ÚjSorszám ? "áthelyezve" : innen.ÚjÓra?.EgyediNév ?? "elmarad" : API.Órarend.Órák[i][j]?.EgyediNév ?? "", innen == null ? (DarkTheme ? Color.WhiteSmoke : Color.Black) : Color.Red, tr, (i, j));
|
||||||
}
|
}
|
||||||
table.AddView(tr, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent));
|
table.AddView(tr, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent));
|
||||||
}
|
}
|
||||||
|
@ -200,6 +218,24 @@ namespace OrarendAndroidApp
|
||||||
handler.Post(() => MaiNaphozGörgetés());
|
handler.Post(() => MaiNaphozGörgetés());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private (int i, int j, Óra óra, Helyettesítés innen, Helyettesítés ide)? TV2Óra(TextView tv)
|
||||||
|
{
|
||||||
|
var ij = (JavaTuple<int, int>)tv.Tag;
|
||||||
|
int i, j;
|
||||||
|
Helyettesítés innen, ide;
|
||||||
|
Óra óra;
|
||||||
|
if (ij != null)
|
||||||
|
{
|
||||||
|
(i, j) = ij;
|
||||||
|
(innen, ide) = API.HelyettesítésInnenIde(API.Órarend, i, j);
|
||||||
|
if ((óra = API.Órarend.Órák[i][j]) == null && ide?.ÚjÓra == null)
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
return (i, j, óra, innen, ide);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A cellát nem frissíti, csak a szöveget tünteti el
|
/// A cellát nem frissíti, csak a szöveget tünteti el
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -214,31 +250,19 @@ namespace OrarendAndroidApp
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Kiválasztja az adott órát
|
/// Kiválasztja az adott órát
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[SecuritySafeCritical]
|
||||||
private void ÓraClick(object sender, EventArgs e)
|
private void ÓraClick(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var tv = (TextView)sender;
|
var tv = (TextView)sender;
|
||||||
if (selected != null && selected != sender)
|
if (selected != null && selected != sender)
|
||||||
selected.SetBackgroundResource(DarkTheme ? Resource.Drawable.cell_shape_dark : Resource.Drawable.cell_shape_light);
|
selected.SetBackgroundResource(DarkTheme ? Resource.Drawable.cell_shape_dark : Resource.Drawable.cell_shape_light);
|
||||||
Óra óra;
|
var x = TV2Óra(tv);
|
||||||
Helyettesítés helyettesítésInnen = null;
|
if (x == null)
|
||||||
Helyettesítés helyettesítésIde = null;
|
|
||||||
var ij = (JavaTuple<int, int>)tv.Tag;
|
|
||||||
int i, j;
|
|
||||||
if (ij != null)
|
|
||||||
{
|
|
||||||
(i, j) = ij;
|
|
||||||
(helyettesítésInnen, helyettesítésIde) = API.HelyettesítésInnenIde(API.Órarend, i, j);
|
|
||||||
if ((óra = API.Órarend.Órák[i][j]) == null && helyettesítésIde?.ÚjÓra == null)
|
|
||||||
{
|
|
||||||
deselect();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
deselect();
|
deselect();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
var (i, j, óra, helyettesítésInnen, helyettesítésIde) = x?.ToTuple();
|
||||||
tv.SetBackgroundResource(DarkTheme ? Resource.Drawable.cell_shape_selected_dark : Resource.Drawable.cell_shape_selected_light);
|
tv.SetBackgroundResource(DarkTheme ? Resource.Drawable.cell_shape_selected_dark : Resource.Drawable.cell_shape_selected_light);
|
||||||
selected = tv;
|
selected = tv;
|
||||||
var kivora = FindViewById<TextView>(Resource.Id.kivoraTV);
|
var kivora = FindViewById<TextView>(Resource.Id.kivoraTV);
|
||||||
|
@ -264,7 +288,8 @@ namespace OrarendAndroidApp
|
||||||
+ (helyettesítésInnen.ÚjÓra.Terem != óra.Terem ? "\nTerem: " + helyettesítésInnen.ÚjÓra.Terem : "")
|
+ (helyettesítésInnen.ÚjÓra.Terem != óra.Terem ? "\nTerem: " + helyettesítésInnen.ÚjÓra.Terem : "")
|
||||||
+ (helyettesítésInnen.ÚjÓra.Tanár.Név != óra.Tanár.Név ? "\nTanár: " + helyettesítésInnen.ÚjÓra.Tanár.Név : "")
|
+ (helyettesítésInnen.ÚjÓra.Tanár.Név != óra.Tanár.Név ? "\nTanár: " + helyettesítésInnen.ÚjÓra.Tanár.Név : "")
|
||||||
+ (helyettesítésInnen.ÚjÓra.Csoportok[0] != óra.Csoportok[0] ? "\nCsoport: " + helyettesítésInnen.ÚjÓra.Csoportok.Aggregate((a, b) => a + ", " + b) : "")
|
+ (helyettesítésInnen.ÚjÓra.Csoportok[0] != óra.Csoportok[0] ? "\nCsoport: " + helyettesítésInnen.ÚjÓra.Csoportok.Aggregate((a, b) => a + ", " + b) : "")
|
||||||
: "Az óra elmarad")
|
: helyettesítésIde != null && (helyettesítésIde.EredetiNap != helyettesítésIde.ÚjNap || helyettesítésIde.EredetiSorszám != helyettesítésIde.ÚjSorszám)
|
||||||
|
? "" : "Az óra elmarad") //Ha át lett helyezve ide másik óra, akkor nem kell kiírni, hogy elmarad ez az óra
|
||||||
+ (helyettesítésIde == null ? ""
|
+ (helyettesítésIde == null ? ""
|
||||||
: helyettesítésIde.EredetiNap != helyettesítésIde.ÚjNap || helyettesítésIde.EredetiSorszám != helyettesítésIde.ÚjSorszám
|
: helyettesítésIde.EredetiNap != helyettesítésIde.ÚjNap || helyettesítésIde.EredetiSorszám != helyettesítésIde.ÚjSorszám
|
||||||
? "Áthelyezve: " + Napok[(int)helyettesítésIde.EredetiNap - 1] + " " + helyettesítésIde.EredetiSorszám + ". óra --> ide"
|
? "Áthelyezve: " + Napok[(int)helyettesítésIde.EredetiNap - 1] + " " + helyettesítésIde.EredetiSorszám + ". óra --> ide"
|
||||||
|
@ -274,7 +299,40 @@ namespace OrarendAndroidApp
|
||||||
+ (helyettesítésIde.ÚjÓra.Csoportok[0] != óra?.Csoportok[0] ? "\nCsoport: " + helyettesítésIde.ÚjÓra.Csoportok.Aggregate((a, b) => a + ", " + b) : "") //ˇˇ De ha változott, akkor nem
|
+ (helyettesítésIde.ÚjÓra.Csoportok[0] != óra?.Csoportok[0] ? "\nCsoport: " + helyettesítésIde.ÚjÓra.Csoportok.Aggregate((a, b) => a + ", " + b) : "") //ˇˇ De ha változott, akkor nem
|
||||||
: "") //Ha a pozicíó nem változott, a fentebbi rész már kiírta az adatait
|
: "") //Ha a pozicíó nem változott, a fentebbi rész már kiírta az adatait
|
||||||
;
|
;
|
||||||
hely.Visibility = ViewStates.Visible;
|
hely.Visibility = hely.Text.Length > 0 ? ViewStates.Visible : ViewStates.Gone;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ÓraContextMenuCreated(object sender, View.CreateContextMenuEventArgs e)
|
||||||
|
{
|
||||||
|
switch (sender)
|
||||||
|
{
|
||||||
|
case TextView tv:
|
||||||
|
var x = TV2Óra(tv);
|
||||||
|
Óra óra;
|
||||||
|
if (x != null)
|
||||||
|
(_, _, óra, _, _) = x?.ToTuple();
|
||||||
|
else
|
||||||
|
óra = null;
|
||||||
|
if (óra == null)
|
||||||
|
{ //TODO
|
||||||
|
ÓraContextItemData.Add(e.Menu.Add("Hozzáadás"), () => StartActivity(new Intent(this, typeof(SettingsActivity))));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Hiba("Ismeretlen küldő a menühöz!");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Dictionary<IMenuItem, Action> ÓraContextItemData = new Dictionary<IMenuItem, Action>();
|
||||||
|
private T ctor<T>() where T : new() => new T();
|
||||||
|
|
||||||
|
public override bool OnContextItemSelected(IMenuItem item)
|
||||||
|
{
|
||||||
|
bool ret = ÓraContextItemData.ContainsKey(item);
|
||||||
|
if (ret)
|
||||||
|
ÓraContextItemData[item]();
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool OnCreateOptionsMenu(IMenu menu)
|
public override bool OnCreateOptionsMenu(IMenu menu)
|
||||||
|
@ -290,7 +348,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 +391,7 @@ namespace OrarendAndroidApp
|
||||||
}
|
}
|
||||||
case Resource.Id.menu_fullrefresh:
|
case Resource.Id.menu_fullrefresh:
|
||||||
{
|
{
|
||||||
ÓrarendFrissítés();
|
ÓrarendFrissítés(false);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -358,13 +416,16 @@ namespace OrarendAndroidApp
|
||||||
{
|
{
|
||||||
if (ex is WebException wex)
|
if (ex is WebException wex)
|
||||||
{
|
{
|
||||||
if (internethiba || wex.Status != WebExceptionStatus.NameResolutionFailure)
|
if (internethiba && wex.Status == WebExceptionStatus.ConnectFailure)
|
||||||
Hiba("Nem sikerült csatlakozni az E-naplóhoz.\n" + wex.Message);
|
|
||||||
else if (wex.Status == WebExceptionStatus.ConnectFailure)
|
|
||||||
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 (internethiba)
|
||||||
|
Hiba("Nem sikerült csatlakozni az E-naplóhoz.\n" + wex.Message);
|
||||||
}
|
}
|
||||||
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);
|
||||||
|
Toast.MakeText(this, oex.Message, ToastLength.Short).Show();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
Hiba(ex.ToString());
|
Hiba(ex.ToString());
|
||||||
ret = false;
|
ret = false;
|
||||||
|
@ -378,14 +439,10 @@ namespace OrarendAndroidApp
|
||||||
{
|
{
|
||||||
var kezdveg = FindViewById<TextView>(Resource.Id.kezdvegTV);
|
var kezdveg = FindViewById<TextView>(Resource.Id.kezdvegTV);
|
||||||
var kovora = FindViewById<TextView>(Resource.Id.kovoraTV);
|
var kovora = FindViewById<TextView>(Resource.Id.kovoraTV);
|
||||||
if (e.KövetkezőÓra == null)
|
kovora.Visibility = e.KövetkezőÓra == null ? ViewStates.Invisible : ViewStates.Visible;
|
||||||
kovora.Visibility = ViewStates.Invisible;
|
kovora.Text = e.KövetkezőÓra ?? "";
|
||||||
else
|
kezdveg.Visibility = e.HátralévőIdő == null ? ViewStates.Invisible : ViewStates.Visible;
|
||||||
kovora.Text = e.KövetkezőÓra;
|
kezdveg.Text = e.HátralévőIdő ?? "";
|
||||||
if (e.HátralévőIdő == null)
|
|
||||||
kezdveg.Visibility = ViewStates.Invisible;
|
|
||||||
else
|
|
||||||
kezdveg.Text = e.HátralévőIdő;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -398,7 +455,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,8 +464,12 @@ 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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -55,8 +55,8 @@
|
||||||
<Reference Include="mscorlib" />
|
<Reference Include="mscorlib" />
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.ValueTuple, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
<Reference Include="System.ValueTuple, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51">
|
||||||
<HintPath>..\packages\System.ValueTuple.4.3.0\lib\netstandard1.0\System.ValueTuple.dll</HintPath>
|
<HintPath>..\packages\System.ValueTuple.4.4.0\lib\netstandard1.0\System.ValueTuple.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -81,6 +81,7 @@
|
||||||
<AndroidResource Include="Resources\layout\EditLayout.axml">
|
<AndroidResource Include="Resources\layout\EditLayout.axml">
|
||||||
<SubType>AndroidResource</SubType>
|
<SubType>AndroidResource</SubType>
|
||||||
</AndroidResource>
|
</AndroidResource>
|
||||||
|
<AndroidResource Include="Resources\menu\ora_menu.axml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<AndroidResource Include="Resources\values\Strings.xml" />
|
<AndroidResource Include="Resources\values\Strings.xml" />
|
||||||
|
|
11
OrarendAndroidApp/Resources/Resource.Designer.cs
generated
11
OrarendAndroidApp/Resources/Resource.Designer.cs
generated
|
@ -111,8 +111,8 @@ namespace OrarendAndroidApp
|
||||||
// aapt resource value: 0x7f070008
|
// aapt resource value: 0x7f070008
|
||||||
public const int deleteButton = 2131165192;
|
public const int deleteButton = 2131165192;
|
||||||
|
|
||||||
// aapt resource value: 0x7f070011
|
// aapt resource value: 0x7f070010
|
||||||
public const int helyTV = 2131165201;
|
public const int helyTV = 2131165200;
|
||||||
|
|
||||||
// aapt resource value: 0x7f07000e
|
// aapt resource value: 0x7f07000e
|
||||||
public const int horizontalView = 2131165198;
|
public const int horizontalView = 2131165198;
|
||||||
|
@ -120,8 +120,8 @@ namespace OrarendAndroidApp
|
||||||
// aapt resource value: 0x7f070012
|
// aapt resource value: 0x7f070012
|
||||||
public const int kezdvegTV = 2131165202;
|
public const int kezdvegTV = 2131165202;
|
||||||
|
|
||||||
// aapt resource value: 0x7f070010
|
// aapt resource value: 0x7f070011
|
||||||
public const int kivoraTV = 2131165200;
|
public const int kivoraTV = 2131165201;
|
||||||
|
|
||||||
// aapt resource value: 0x7f070013
|
// aapt resource value: 0x7f070013
|
||||||
public const int kovoraTV = 2131165203;
|
public const int kovoraTV = 2131165203;
|
||||||
|
@ -212,6 +212,9 @@ namespace OrarendAndroidApp
|
||||||
// aapt resource value: 0x7f060000
|
// aapt resource value: 0x7f060000
|
||||||
public const int main_menu_light = 2131099648;
|
public const int main_menu_light = 2131099648;
|
||||||
|
|
||||||
|
// aapt resource value: 0x7f060001
|
||||||
|
public const int ora_menu = 2131099649;
|
||||||
|
|
||||||
static Menu()
|
static Menu()
|
||||||
{
|
{
|
||||||
global::Android.Runtime.ResourceIdManager.UpdateIdValues();
|
global::Android.Runtime.ResourceIdManager.UpdateIdValues();
|
||||||
|
|
|
@ -55,14 +55,6 @@
|
||||||
android:isScrollContainer="true" />
|
android:isScrollContainer="true" />
|
||||||
</HorizontalScrollView>
|
</HorizontalScrollView>
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
<TextView
|
|
||||||
android:id="@+id/kivoraTV"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="Kiválasztott óra"
|
|
||||||
android:textSize="14sp"
|
|
||||||
android:textStyle="bold"
|
|
||||||
android:visibility="gone" />
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/helyTV"
|
android:id="@+id/helyTV"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -72,6 +64,14 @@
|
||||||
android:textStyle="bold"
|
android:textStyle="bold"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
android:textColor="#FF0000" />
|
android:textColor="#FF0000" />
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/kivoraTV"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Kiválasztott óra"
|
||||||
|
android:textSize="14sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:visibility="gone" />
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/kezdvegTV"
|
android:id="@+id/kezdvegTV"
|
||||||
android:text="Betöltés"
|
android:text="Betöltés"
|
||||||
|
|
18
OrarendAndroidApp/Resources/menu/ora_menu.axml
Normal file
18
OrarendAndroidApp/Resources/menu/ora_menu.axml
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_refresh"
|
||||||
|
android:title="Frissítés" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_add"
|
||||||
|
android:title="Hozzáadás" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_edit"
|
||||||
|
android:title="Szerkesztés" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_preferences"
|
||||||
|
android:title="Beállítások" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/menu_fullrefresh"
|
||||||
|
android:title="Órarendfrissítés" />
|
||||||
|
</menu>
|
|
@ -5,4 +5,14 @@
|
||||||
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>
|
|
@ -10,11 +10,13 @@ using Android.Runtime;
|
||||||
using Android.Views;
|
using Android.Views;
|
||||||
using Android.Widget;
|
using Android.Widget;
|
||||||
using Android.Preferences;
|
using Android.Preferences;
|
||||||
|
using Orarend;
|
||||||
|
using System.Security;
|
||||||
|
|
||||||
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 +28,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)
|
||||||
|
{
|
||||||
|
case "pref_theme":
|
||||||
Recreate();
|
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 +65,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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
<package id="System.ValueTuple" version="4.3.0" targetFramework="monoandroid60" />
|
<package id="System.ValueTuple" version="4.4.0" targetFramework="monoandroid60" />
|
||||||
</packages>
|
</packages>
|
6
README.md
Normal file
6
README.md
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
# Orarend
|
||||||
|
A school schedule app written in C# using Xamarin.
|
||||||
|
|
||||||
|
This app can obtain the schedule automatically from the school's website and update it as needed. Any temporary changes are marked red.
|
||||||
|
|
||||||
|
It downloads the site HTML and uses regex to fix some issues that the parser can't handle correctly and then parses the code.
|
Loading…
Reference in a new issue