A betöltéssel és a mentéssel kapcsolatos javítások
This commit is contained in:
parent
e9bcba3493
commit
ace4506bfc
4 changed files with 146 additions and 150 deletions
|
@ -24,9 +24,10 @@ namespace Orarend
|
||||||
public static List<Helyettesítés> Helyettesítések { get; } = new List<Helyettesítés>();
|
public static List<Helyettesítés> Helyettesítések { get; } = new List<Helyettesítés>();
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Frissíti az osztálylistát és az eredeti órarendet, első megnyitásnál, és egy órarend hozzáadásánál/szerkesztésénél, majd hetente elegendő meghívni
|
/// Frissíti az osztálylistát és az eredeti órarendet, első megnyitásnál, és egy órarend hozzáadásánál/szerkesztésénél, majd hetente elegendő meghívni
|
||||||
/// <param name="s">A file stream, ahova mentse az adatokat, hogy ne kelljen külön meghívni</param>
|
/// <param name="órarendstream">A file stream, ahova mentse az adatokat, hogy ne kelljen külön meghívni</param>
|
||||||
|
/// <param name="osztálystream">A file stream, ahova mentse az adatokat, hogy ne kelljen külön meghívni</param>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static async Task Frissítés(Stream s)
|
public static async Task Frissítés(Stream órarendstream, Stream osztálystream, Órarend ór = null)
|
||||||
{
|
{
|
||||||
Func<string, Task<HtmlDocument>> load = async (url) =>
|
Func<string, Task<HtmlDocument>> load = async (url) =>
|
||||||
{
|
{
|
||||||
|
@ -49,7 +50,7 @@ namespace Orarend
|
||||||
var doc = await load("http://deri.enaplo.net/ajax/orarend/orarendoszt.php");
|
var doc = await load("http://deri.enaplo.net/ajax/orarend/orarendoszt.php");
|
||||||
await Task.Run(() => Osztályok = doc.GetElementbyId("uok").ChildNodes.Where(node => node.HasAttributes).Select(node => new Osztály { Azonosító = node.GetAttributeValue("value", ""), Név = node.NextSibling.InnerText }).ToArray());
|
await Task.Run(() => Osztályok = doc.GetElementbyId("uok").ChildNodes.Where(node => node.HasAttributes).Select(node => new Osztály { Azonosító = node.GetAttributeValue("value", ""), Név = node.NextSibling.InnerText }).ToArray());
|
||||||
}
|
}
|
||||||
foreach (var órarend in Órarendek)
|
Func<Órarend, Task> órarenda = async órarend =>
|
||||||
{
|
{
|
||||||
var doc = await load("http://deri.enaplo.net/ajax/orarend/orarendoszt.php?p=" + Uri.EscapeDataString(órarend.Osztály.Azonosító));
|
var doc = await load("http://deri.enaplo.net/ajax/orarend/orarendoszt.php?p=" + Uri.EscapeDataString(órarend.Osztály.Azonosító));
|
||||||
await Task.Run(() =>
|
await Task.Run(() =>
|
||||||
|
@ -95,11 +96,16 @@ namespace Orarend
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ÓrarendMentés(s);
|
|
||||||
OsztályMentés(s);
|
|
||||||
Thread.Sleep(10);
|
Thread.Sleep(10);
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
if (ór == null)
|
||||||
|
foreach (var órarend in Órarendek)
|
||||||
|
await órarenda(órarend);
|
||||||
|
else
|
||||||
|
await órarenda(ór);
|
||||||
|
ÓrarendMentés(órarendstream);
|
||||||
|
OsztályMentés(osztálystream);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -118,76 +124,73 @@ namespace Orarend
|
||||||
}); //TODO
|
}); //TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ÓrarendBetöltés(Stream s)
|
private static T betöltés<T>(Stream s)
|
||||||
{
|
{
|
||||||
using (s)
|
using (s)
|
||||||
{
|
{
|
||||||
var serializer = new DataContractJsonSerializer(typeof(Órarend[]));
|
using (var ms = new MemoryStream())
|
||||||
Órarendek.AddRange((Órarend[])serializer.ReadObject(s));
|
{
|
||||||
|
s.CopyTo(ms);
|
||||||
|
if (ms.Length > 2)
|
||||||
|
{
|
||||||
|
var serializer = new DataContractJsonSerializer(typeof(T));
|
||||||
|
return (T)serializer.ReadObject(ms);
|
||||||
}
|
}
|
||||||
|
return default(T);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void ÓrarendBetöltés(Stream s)
|
||||||
|
{
|
||||||
|
Órarendek.AddRange(betöltés<Órarend[]>(s) ?? new Órarend[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void OsztályBetöltés(Stream s)
|
public static void OsztályBetöltés(Stream s)
|
||||||
{
|
{
|
||||||
using (s)
|
Osztályok = betöltés<Osztály[]>(s);
|
||||||
{
|
|
||||||
var serializer = new DataContractJsonSerializer(typeof(Osztály[]));
|
|
||||||
Osztályok = ((Osztály[])serializer.ReadObject(s));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void BeállításBetöltés(Stream s)
|
public static void BeállításBetöltés(Stream s)
|
||||||
{
|
{
|
||||||
using (s)
|
Beállítások = betöltés<Settings>(s);
|
||||||
{
|
|
||||||
var serializer = new DataContractJsonSerializer(typeof(Settings));
|
|
||||||
Beállítások = ((Settings)serializer.ReadObject(s));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void HelyettesítésBetöltés(Stream s)
|
public static void HelyettesítésBetöltés(Stream s)
|
||||||
|
{ //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
|
||||||
|
Helyettesítések.AddRange(betöltés<Helyettesítés[]>(s) ?? new Helyettesítés[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void mentés<T>(Stream s, T obj)
|
||||||
{
|
{
|
||||||
using (s)
|
using (s)
|
||||||
{
|
{
|
||||||
var serializer = new DataContractJsonSerializer(typeof(Helyettesítés[])); //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
|
if (obj != null)
|
||||||
Helyettesítések.AddRange((Helyettesítés[])serializer.ReadObject(s));
|
{
|
||||||
|
var serializer = new DataContractJsonSerializer(typeof(T));
|
||||||
|
serializer.WriteObject(s, obj);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ÓrarendMentés(Stream s)
|
private static void ÓrarendMentés(Stream s)
|
||||||
{
|
{
|
||||||
using (s)
|
mentés(s, Órarendek.ToArray());
|
||||||
{
|
|
||||||
var serializer = new DataContractJsonSerializer(typeof(Órarend[]));
|
|
||||||
serializer.WriteObject(s, Órarendek);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void OsztályMentés(Stream s)
|
private static void OsztályMentés(Stream s)
|
||||||
{
|
{
|
||||||
using (s)
|
mentés(s, Osztályok);
|
||||||
{
|
|
||||||
var serializer = new DataContractJsonSerializer(typeof(Osztály[]));
|
|
||||||
serializer.WriteObject(s, Osztályok);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void BeállításMentés(Stream s)
|
public static void BeállításMentés(Stream s)
|
||||||
{
|
{
|
||||||
using (s)
|
mentés(s, Beállítások);
|
||||||
{
|
|
||||||
var serializer = new DataContractJsonSerializer(typeof(Settings));
|
|
||||||
serializer.WriteObject(s, Beállítások);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void HelyettesítésMentés(Stream s)
|
private static void HelyettesítésMentés(Stream s)
|
||||||
{
|
{
|
||||||
using (s)
|
mentés(s, Helyettesítések.ToArray());
|
||||||
{
|
|
||||||
var serializer = new DataContractJsonSerializer(typeof(Helyettesítés[]));
|
|
||||||
serializer.WriteObject(s, Helyettesítések);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,7 @@ namespace OrarendAndroidApp
|
||||||
ActionBar.SetDisplayShowTitleEnabled(false);
|
ActionBar.SetDisplayShowTitleEnabled(false);
|
||||||
ActionBar.CustomView = FindViewById<Spinner>(Resource.Id.spinner);
|
ActionBar.CustomView = FindViewById<Spinner>(Resource.Id.spinner);
|
||||||
handler = new Handler();
|
handler = new Handler();
|
||||||
|
new StreamReader(OpenFileInput("osztaly")).ReadToEnd(); //TODO: TMP, fix "[{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]"
|
||||||
string[] list = FileList();
|
string[] list = FileList();
|
||||||
if (list.Contains("beallitasok"))
|
if (list.Contains("beallitasok"))
|
||||||
API.BeállításBetöltés(OpenFileInput("beallitasok"));
|
API.BeállításBetöltés(OpenFileInput("beallitasok"));
|
||||||
|
@ -58,21 +59,31 @@ namespace OrarendAndroidApp
|
||||||
|
|
||||||
private void HelyettesítésFrissítés()
|
private void HelyettesítésFrissítés()
|
||||||
{
|
{
|
||||||
API.HelyettesítésFrissítés().ContinueWith(t =>
|
var bar = FindViewById<ProgressBar>(Resource.Id.progressBar1);
|
||||||
{ //TODO: Ezt ne itt, ne így
|
handler.Post(() => bar.Visibility = ViewStates.Visible);
|
||||||
}); //TODO: Tárolja el a helyettesített órarendeket is valahogyan, akár külön osztály, hogy csak a változásokat tárolja
|
API.HelyettesítésFrissítés(OpenFileOutput("helyettesites", FileCreationMode.Private)).ContinueWith(t =>
|
||||||
}
|
|
||||||
|
|
||||||
private void ÓrarendFrissítés()
|
|
||||||
{ //TODO: Meghívni minden tervezett alkalommal; hozzáadásnál csak a hozzáadott órarendet frissítse
|
|
||||||
API.Frissítés(OpenFileOutput("orarend", FileCreationMode.Private)).ContinueWith(t =>
|
|
||||||
{
|
{
|
||||||
handler.Post(() =>
|
handler.Post(() =>
|
||||||
{
|
{
|
||||||
if(TaskHiba(t))
|
bar.Visibility = ViewStates.Gone;
|
||||||
|
Toast.MakeText(this, "Helyettesítések frissítve", ToastLength.Short);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ÓrarendFrissítés(Órarend ór = null)
|
||||||
|
{ //TODO: Meghívni minden tervezett alkalommal; hozzáadásnál csak a hozzáadott órarendet frissítse
|
||||||
|
var bar = FindViewById<ProgressBar>(Resource.Id.progressBar1);
|
||||||
|
handler.Post(() => bar.Visibility = ViewStates.Visible);
|
||||||
|
API.Frissítés(OpenFileOutput("orarend", FileCreationMode.Private), OpenFileOutput("osztaly", FileCreationMode.Private), ór).ContinueWith(t =>
|
||||||
|
{
|
||||||
|
handler.Post(() =>
|
||||||
|
{
|
||||||
|
if (TaskHiba(t) && órarend != null && (ór == null || ór == órarend))
|
||||||
{
|
{
|
||||||
var table = FindViewById<TableLayout>(Resource.Id.tableLayout1);
|
var table = FindViewById<TableLayout>(Resource.Id.tableLayout1);
|
||||||
table.RemoveViews(0, table.ChildCount); //TODO: Test
|
if (table.ChildCount > 1)
|
||||||
|
table.RemoveViews(1, table.ChildCount);
|
||||||
TableRow tr = new TableRow(this);
|
TableRow tr = new TableRow(this);
|
||||||
addCell("", Color.Black, tr);
|
addCell("", Color.Black, tr);
|
||||||
addCell("Hétfő", Color.Black, tr);
|
addCell("Hétfő", Color.Black, tr);
|
||||||
|
@ -103,6 +114,8 @@ namespace OrarendAndroidApp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
bar.Visibility = ViewStates.Gone;
|
||||||
|
Toast.MakeText(this, "Órarend és osztálylista frissítve", ToastLength.Long);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -146,12 +159,7 @@ namespace OrarendAndroidApp
|
||||||
{
|
{
|
||||||
case Resource.Id.menu_refresh:
|
case Resource.Id.menu_refresh:
|
||||||
{
|
{
|
||||||
var bar = FindViewById<ProgressBar>(Resource.Id.progressBar1);
|
HelyettesítésFrissítés();
|
||||||
handler.Post(() => bar.Visibility = ViewStates.Visible);
|
|
||||||
API.HelyettesítésFrissítés().ContinueWith(t => //TODO: Megjelenítés frissítése
|
|
||||||
{
|
|
||||||
handler.Post(() => bar.Visibility = ViewStates.Gone);
|
|
||||||
});
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case Resource.Id.menu_add: //TODO
|
case Resource.Id.menu_add: //TODO
|
||||||
|
@ -160,16 +168,9 @@ namespace OrarendAndroidApp
|
||||||
break;
|
break;
|
||||||
case Resource.Id.menu_preferences: //TODO
|
case Resource.Id.menu_preferences: //TODO
|
||||||
break;
|
break;
|
||||||
case Resource.Id.menu_fullrefresh:
|
case Resource.Id.menu_fullrefresh: //TODO: Megjelenítés frissítése
|
||||||
{
|
{ //TODO: Beállítások mentése
|
||||||
var bar = FindViewById<ProgressBar>(Resource.Id.progressBar1);
|
ÓrarendFrissítés();
|
||||||
handler.Post(() => bar.Visibility = ViewStates.Visible);
|
|
||||||
API.Frissítés().ContinueWith(t => //TODO: Megjelenítés frissítése
|
|
||||||
{
|
|
||||||
API.ÓrarendMentés(OpenFileOutput("orarend", FileCreationMode.Private));
|
|
||||||
API.OsztályMentés(OpenFileOutput("osztaly", FileCreationMode.Private)); //TODO: Beállítások mentése
|
|
||||||
handler.Post(() => bar.Visibility = ViewStates.Gone);
|
|
||||||
});
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
57
OrarendAndroidApp/Resources/Resource.Designer.cs
generated
57
OrarendAndroidApp/Resources/Resource.Designer.cs
generated
|
@ -93,53 +93,50 @@ namespace OrarendAndroidApp
|
||||||
// aapt resource value: 0x7f060001
|
// aapt resource value: 0x7f060001
|
||||||
public const int horizontalView = 2131099649;
|
public const int horizontalView = 2131099649;
|
||||||
|
|
||||||
|
// aapt resource value: 0x7f060009
|
||||||
|
public const int idoTV = 2131099657;
|
||||||
|
|
||||||
// aapt resource value: 0x7f06000a
|
// aapt resource value: 0x7f06000a
|
||||||
public const int idoTV = 2131099658;
|
public const int kezdvegTV = 2131099658;
|
||||||
|
|
||||||
// aapt resource value: 0x7f06000b
|
// aapt resource value: 0x7f06000b
|
||||||
public const int kezdvegTV = 2131099659;
|
public const int kovoraTV = 2131099659;
|
||||||
|
|
||||||
// aapt resource value: 0x7f06000c
|
|
||||||
public const int kovoraTV = 2131099660;
|
|
||||||
|
|
||||||
// aapt resource value: 0x7f06000f
|
|
||||||
public const int menu_add = 2131099663;
|
|
||||||
|
|
||||||
// aapt resource value: 0x7f060010
|
|
||||||
public const int menu_edit = 2131099664;
|
|
||||||
|
|
||||||
// aapt resource value: 0x7f060012
|
|
||||||
public const int menu_fullrefresh = 2131099666;
|
|
||||||
|
|
||||||
// aapt resource value: 0x7f060011
|
|
||||||
public const int menu_preferences = 2131099665;
|
|
||||||
|
|
||||||
// aapt resource value: 0x7f06000e
|
// aapt resource value: 0x7f06000e
|
||||||
public const int menu_refresh = 2131099662;
|
public const int menu_add = 2131099662;
|
||||||
|
|
||||||
// aapt resource value: 0x7f060007
|
// aapt resource value: 0x7f06000f
|
||||||
public const int nevTV = 2131099655;
|
public const int menu_edit = 2131099663;
|
||||||
|
|
||||||
|
// aapt resource value: 0x7f060011
|
||||||
|
public const int menu_fullrefresh = 2131099665;
|
||||||
|
|
||||||
|
// aapt resource value: 0x7f060010
|
||||||
|
public const int menu_preferences = 2131099664;
|
||||||
|
|
||||||
|
// aapt resource value: 0x7f06000d
|
||||||
|
public const int menu_refresh = 2131099661;
|
||||||
|
|
||||||
// aapt resource value: 0x7f060006
|
// aapt resource value: 0x7f060006
|
||||||
public const int pozTV = 2131099654;
|
public const int nevTV = 2131099654;
|
||||||
|
|
||||||
|
// aapt resource value: 0x7f060005
|
||||||
|
public const int pozTV = 2131099653;
|
||||||
|
|
||||||
// aapt resource value: 0x7f060003
|
// aapt resource value: 0x7f060003
|
||||||
public const int progressBar1 = 2131099651;
|
public const int progressBar1 = 2131099651;
|
||||||
|
|
||||||
// aapt resource value: 0x7f060005
|
// aapt resource value: 0x7f06000c
|
||||||
public const int spiner_id = 2131099653;
|
public const int spinner = 2131099660;
|
||||||
|
|
||||||
// aapt resource value: 0x7f06000d
|
|
||||||
public const int spinner = 2131099661;
|
|
||||||
|
|
||||||
// aapt resource value: 0x7f060002
|
// aapt resource value: 0x7f060002
|
||||||
public const int tableLayout1 = 2131099650;
|
public const int tableLayout1 = 2131099650;
|
||||||
|
|
||||||
// aapt resource value: 0x7f060009
|
|
||||||
public const int tanarTV = 2131099657;
|
|
||||||
|
|
||||||
// aapt resource value: 0x7f060008
|
// aapt resource value: 0x7f060008
|
||||||
public const int teremTV = 2131099656;
|
public const int tanarTV = 2131099656;
|
||||||
|
|
||||||
|
// aapt resource value: 0x7f060007
|
||||||
|
public const int teremTV = 2131099655;
|
||||||
|
|
||||||
static Id()
|
static Id()
|
||||||
{
|
{
|
||||||
|
|
|
@ -43,11 +43,6 @@
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:id="@+id/actionMenuView1" />
|
android:id="@+id/actionMenuView1" />
|
||||||
<Spinner
|
|
||||||
android:id="@+id/spiner_id"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:spinnerMode="dropdown"
|
|
||||||
android:layout_height="wrap_content" />
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/pozTV"
|
android:id="@+id/pozTV"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
|
Loading…
Reference in a new issue