Áthelyezés folytatva
This commit is contained in:
parent
318747b5bf
commit
45557da7bf
4 changed files with 79 additions and 20 deletions
|
@ -1,5 +1,6 @@
|
||||||
using HtmlAgilityPack;
|
using HtmlAgilityPack;
|
||||||
using Orarend.Events;
|
using Orarend.Events;
|
||||||
|
using SimpleTimerPortable;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
|
@ -210,12 +211,13 @@ namespace Orarend
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="s">A stream, ahonnan betöltse az adatokat</param>
|
/// <param name="s">A stream, ahonnan betöltse az adatokat</param>
|
||||||
/// <param name="hibánál">Megadja, mi történjen egy hiba esetén</param>
|
/// <param name="hibánál">Megadja, mi történjen egy hiba esetén</param>
|
||||||
public static void Betöltés(Stream s, Action<Exception> hibánál)
|
/// <returns>Elvégezte-e a betöltést</returns>
|
||||||
|
public static bool Betöltés(Stream s, Action<Exception> hibánál)
|
||||||
{
|
{
|
||||||
using (s)
|
using (s)
|
||||||
{
|
{
|
||||||
if (!!(Órarendek.Count > 0 || Osztályok?.Length > 0))
|
if (!!!betöltés())
|
||||||
return;
|
return false;
|
||||||
using (var ms = new MemoryStream())
|
using (var ms = new MemoryStream())
|
||||||
{
|
{
|
||||||
s.CopyTo(ms);
|
s.CopyTo(ms);
|
||||||
|
@ -226,31 +228,38 @@ namespace Orarend
|
||||||
ms.Seek(0, SeekOrigin.Begin);
|
ms.Seek(0, SeekOrigin.Begin);
|
||||||
var serializer = new DataContractJsonSerializer(typeof(API));
|
var serializer = new DataContractJsonSerializer(typeof(API));
|
||||||
serializer.ReadObject(ms); //A példányt beállítja, mikor elkezdi, nem várja meg, hogy végezzen (betöltés())
|
serializer.ReadObject(ms); //A példányt beállítja, mikor elkezdi, nem várja meg, hogy végezzen (betöltés())
|
||||||
betöltés();
|
return true;
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
hibánál(e);
|
hibánál(e);
|
||||||
Betöltés();
|
return Betöltés();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} //TODO: Tényleges órarendből állapítsa meg azt is, hogyha egyáltalán nincs ott egy óra, és máshol sincs, és ezt írja ki
|
} //TODO: Tényleges órarendből állapítsa meg azt is, hogyha egyáltalán nincs ott egy óra, és máshol sincs, és ezt írja ki
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Betölti az alapértelemzett értékeket
|
/// Betölti az alapértelemzett értékeket
|
||||||
|
/// <returns>Elvégezte-e a betöltést</returns>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static void Betöltés()
|
public static bool Betöltés()
|
||||||
{
|
{
|
||||||
|
if (!betöltés())
|
||||||
|
return false;
|
||||||
példány = new API();
|
példány = new API();
|
||||||
betöltés();
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Timer timer;
|
private static Timer timer;
|
||||||
private static void betöltés()
|
private static bool betöltés()
|
||||||
{
|
{
|
||||||
timer = new Timer(CsengőTimer, null, new TimeSpan(0, 0, 0), new TimeSpan(0, 0, 5));
|
if (!!(Órarendek.Count > 0 || Osztályok?.Length > 0 || timer != null))
|
||||||
|
return false;
|
||||||
|
timer = new Timer(CsengőTimer, null, new TimeSpan(0, 0, 0, 0, 100), new TimeSpan(0, 0, 5));
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Mentés(Stream s)
|
public static void Mentés(Stream s)
|
||||||
|
@ -296,12 +305,12 @@ namespace Orarend
|
||||||
frissítésHa1ÓraEltelt();
|
frissítésHa1ÓraEltelt();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
timer.Change(Timeout.Infinite, Timeout.Infinite);
|
timer.Cancel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static DateTime utolsófrissítésplusz1óra = DateTime.MinValue;
|
private static DateTime utolsófrissítésplusz1óra = DateTime.MinValue;
|
||||||
public event EventHandler Frissítéskor;
|
public static event EventHandler Frissítéskor;
|
||||||
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)
|
||||||
|
@ -310,7 +319,7 @@ namespace Orarend
|
||||||
//HelyettesítésFrissítés(false);
|
//HelyettesítésFrissítés(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public DayOfWeek MaiNap
|
public static DayOfWeek MaiNap
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
|
@ -320,8 +329,8 @@ namespace Orarend
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Helyettesítés[] helyettesítésInnenIde(int i, int j)
|
public static Helyettesítés[] HelyettesítésInnenIde(Órarend órarend, int i, int j)
|
||||||
{ //TODO: API-ba
|
{
|
||||||
return new Helyettesítés[]
|
return new Helyettesítés[]
|
||||||
{
|
{
|
||||||
órarend.Helyettesítések.FirstOrDefault(h => (int)h.EredetiNap == i + 1 && h.EredetiSorszám == j + 1),
|
órarend.Helyettesítések.FirstOrDefault(h => (int)h.EredetiNap == i + 1 && h.EredetiSorszám == j + 1),
|
||||||
|
@ -353,7 +362,7 @@ namespace Orarend
|
||||||
bool becsengetés;
|
bool becsengetés;
|
||||||
int x = (int)DateTime.Today.DayOfWeek - 1;
|
int x = (int)DateTime.Today.DayOfWeek - 1;
|
||||||
Óra óra;
|
Óra óra;
|
||||||
var innenide = helyettesítésInnenIde(x, i);
|
var innenide = API.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("mm") + " perc";
|
||||||
if (x != -1 && x < 6 && (óra = innenide[1] != null ? innenide[1].ÚjÓra : innenide[0] != null ? innenide[0].EredetiNap != innenide[0].ÚjNap || innenide[0].EredetiSorszám != innenide[0].ÚjSorszám ? null : innenide[0].ÚjÓra : órarend.Órák[x][i]) != null)
|
if (x != -1 && x < 6 && (óra = innenide[1] != null ? innenide[1].ÚjÓra : innenide[0] != null ? innenide[0].EredetiNap != innenide[0].ÚjNap || innenide[0].EredetiSorszám != innenide[0].ÚjSorszám ? null : innenide[0].ÚjÓra : órarend.Órák[x][i]) != null)
|
||||||
{ //-1: Vasárnap
|
{ //-1: Vasárnap
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Settings.cs" />
|
<Compile Include="Settings.cs" />
|
||||||
<Compile Include="Tanár.cs" />
|
<Compile Include="Tanár.cs" />
|
||||||
|
<Compile Include="Timer.cs" />
|
||||||
<Compile Include="Óra.cs" />
|
<Compile Include="Óra.cs" />
|
||||||
<Compile Include="Órarend.cs" />
|
<Compile Include="Órarend.cs" />
|
||||||
<Compile Include="ÓraTípus.cs" />
|
<Compile Include="ÓraTípus.cs" />
|
||||||
|
|
47
Orarend/Timer.cs
Normal file
47
Orarend/Timer.cs
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
using System;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace SimpleTimerPortable
|
||||||
|
{
|
||||||
|
internal delegate void TimerCallback(object state);
|
||||||
|
|
||||||
|
internal sealed class Timer : CancellationTokenSource, IDisposable
|
||||||
|
{
|
||||||
|
public Timer(TimerCallback callback, object state, TimeSpan dueTime, TimeSpan period)
|
||||||
|
{
|
||||||
|
this.callback = callback;
|
||||||
|
this.state = state;
|
||||||
|
start(dueTime, period);
|
||||||
|
}
|
||||||
|
|
||||||
|
private TimerCallback callback;
|
||||||
|
private object state;
|
||||||
|
private void start(TimeSpan dueTime, TimeSpan period)
|
||||||
|
{
|
||||||
|
Task.Delay(dueTime, Token).ContinueWith(async (t, s) =>
|
||||||
|
{
|
||||||
|
var tuple = (Tuple<TimerCallback, object>)s;
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
if (IsCancellationRequested)
|
||||||
|
break;
|
||||||
|
await Task.Run(() => tuple.Item1(tuple.Item2));
|
||||||
|
await Task.Delay(period);
|
||||||
|
}
|
||||||
|
|
||||||
|
}, Tuple.Create(callback, state), CancellationToken.None,
|
||||||
|
TaskContinuationOptions.ExecuteSynchronously | TaskContinuationOptions.OnlyOnRanToCompletion,
|
||||||
|
TaskScheduler.Default);
|
||||||
|
}
|
||||||
|
|
||||||
|
public new void Dispose() { base.Cancel(); }
|
||||||
|
|
||||||
|
public void Change(TimeSpan dueTime, TimeSpan period)
|
||||||
|
{
|
||||||
|
Cancel();
|
||||||
|
start(dueTime, period);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -14,6 +14,7 @@ using System.Threading;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using Android.Preferences;
|
using Android.Preferences;
|
||||||
|
using Orarend.Events;
|
||||||
|
|
||||||
namespace OrarendAndroidApp
|
namespace OrarendAndroidApp
|
||||||
{
|
{
|
||||||
|
@ -40,11 +41,12 @@ namespace OrarendAndroidApp
|
||||||
//ActionBar.SetCustomView(FindViewById<Spinner>(Resource.Id.spinner), new ActionBar.LayoutParams(GravityFlags.Left));
|
//ActionBar.SetCustomView(FindViewById<Spinner>(Resource.Id.spinner), new ActionBar.LayoutParams(GravityFlags.Left));
|
||||||
handler = new Handler();
|
handler = new Handler();
|
||||||
string[] list = FileList();
|
string[] list = FileList();
|
||||||
|
bool betöltötte;
|
||||||
if (list.Contains(DATA_FILENAME))
|
if (list.Contains(DATA_FILENAME))
|
||||||
API.Betöltés(OpenFileInput(DATA_FILENAME), e => Hiba("Hiba az adatok betöltése során!\n" + e));
|
betöltötte = API.Betöltés(OpenFileInput(DATA_FILENAME), e => Hiba("Hiba az adatok betöltése során!\n" + e));
|
||||||
else
|
else
|
||||||
API.Betöltés();
|
betöltötte = API.Betöltés();
|
||||||
if (API.CsengőTimerEvent == null)
|
if (betöltötte)
|
||||||
API.CsengőTimerEvent += CsengőTimer;
|
API.CsengőTimerEvent += CsengőTimer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -188,7 +190,7 @@ namespace OrarendAndroidApp
|
||||||
addCell((j + 1).ToString(), DarkTheme ? Color.White : Color.Black, tr);
|
addCell((j + 1).ToString(), DarkTheme ? Color.White : Color.Black, tr);
|
||||||
for (int i = 0; i < 6; i++)
|
for (int i = 0; i < 6; i++)
|
||||||
{
|
{
|
||||||
var innenide = helyettesítésInnenIde(i, j);
|
var innenide = API.HelyettesítésInnenIde(órarend, i, j);
|
||||||
var helyettesítés = innenide[0];
|
var helyettesítés = innenide[0];
|
||||||
var helyettesítésIde = innenide[1];
|
var helyettesítésIde = innenide[1];
|
||||||
addCell(helyettesítésIde != null ? helyettesítésIde.ÚjÓra.EgyediNév : helyettesítés != null ? helyettesítés.EredetiNap != helyettesítés.ÚjNap || helyettesítés.EredetiSorszám != helyettesítés.ÚjSorszám ? "Áthelyezve" : helyettesítés.ÚjÓra?.EgyediNév ?? "elmarad" : órarend.Órák[i][j]?.EgyediNév ?? "", helyettesítés == null ? (DarkTheme ? Color.WhiteSmoke : Color.Black) : Color.Red, tr, new int[2] { i, j });
|
addCell(helyettesítésIde != null ? helyettesítésIde.ÚjÓra.EgyediNév : helyettesítés != null ? helyettesítés.EredetiNap != helyettesítés.ÚjNap || helyettesítés.EredetiSorszám != helyettesítés.ÚjSorszám ? "Áthelyezve" : helyettesítés.ÚjÓra?.EgyediNév ?? "elmarad" : órarend.Órák[i][j]?.EgyediNév ?? "", helyettesítés == null ? (DarkTheme ? Color.WhiteSmoke : Color.Black) : Color.Red, tr, new int[2] { i, j });
|
||||||
|
@ -224,7 +226,7 @@ namespace OrarendAndroidApp
|
||||||
Helyettesítés helyettesítésIde = null;
|
Helyettesítés helyettesítésIde = null;
|
||||||
if (ij != null)
|
if (ij != null)
|
||||||
{
|
{
|
||||||
var innenide = helyettesítésInnenIde(ij[0], ij[1]);
|
var innenide = API.HelyettesítésInnenIde(órarend, ij[0], ij[1]);
|
||||||
helyettesítésInnen = innenide[0];
|
helyettesítésInnen = innenide[0];
|
||||||
helyettesítésIde = innenide[1];
|
helyettesítésIde = innenide[1];
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue