Betöltés/mentés működik, javítások

This commit is contained in:
Norbi Peti 2017-02-18 16:17:39 +01:00
parent ace4506bfc
commit 2a25d6f106
15 changed files with 186 additions and 51 deletions

View file

@ -74,14 +74,14 @@ namespace Orarend
for (int i = 0; i < 5; i++) //Napok
{ //TODO: for ciklus az egy időben tartott órákhoz
var óranode = node.ChildNodes[i + 1].FirstChild;
var óra = (ahét ? órarend.ÓrákAHét : órarend.ÓrákBHét)[i, x];
var óra = (ahét ? órarend.ÓrákAHét : órarend.ÓrákBHét)[i][x];
if (óranode.ChildNodes.Count == 0)
continue;
var csoport = óranode.FirstChild.InnerText.TrimEnd(':');
if (csoport != "Egész osztály" && !órarend.Csoportok.Contains(csoport))
continue;
if (óra == null)
(ahét ? órarend.ÓrákAHét : órarend.ÓrákBHét)[i, x] = óra = new Óra();
(ahét ? órarend.ÓrákAHét : órarend.ÓrákBHét)[i][x] = óra = new Óra();
óra.Csoportok = new string[] { csoport }; //Az állandó órarendben osztályonként csak egy csoport van egy órán
óra.Azonosító = óranode.ChildNodes[2].InnerText;
óra.TeljesNév = óranode.ChildNodes[2].Attributes["title"].Value;
@ -133,6 +133,7 @@ namespace Orarend
s.CopyTo(ms);
if (ms.Length > 2)
{
ms.Seek(0, SeekOrigin.Begin);
var serializer = new DataContractJsonSerializer(typeof(T));
return (T)serializer.ReadObject(ms);
}
@ -148,7 +149,7 @@ namespace Orarend
public static void OsztályBetöltés(Stream s)
{
Osztályok = betöltés<Osztály[]>(s);
Osztályok = betöltés<Osztály[]>(s) ?? new Osztály[0];
}
public static void BeállításBetöltés(Stream s)

View file

@ -1,18 +1,26 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace Orarend
{
[DataContract]
public class Helyettesítés
{
[DataMember]
public byte EredetiNap { get; set; }
[DataMember]
public byte EredetiSorszám { get; set; }
[DataMember]
public Óra EredetiÓra { get; set; }
[DataMember]
public byte ÚjNap { get; set; }
[DataMember]
public byte ÚjSorszám { get; set; }
[DataMember]
public Óra ÚjÓra { get; set; }
}
}

View file

@ -1,17 +1,26 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace Orarend
{
[DataContract]
public class Osztály
{
[DataMember]
public string Azonosító { get; internal set; }
[DataMember]
public string Név { get; internal set; }
internal Osztály()
{
}
public override string ToString()
{
return Név;
}
}
}

View file

@ -1,13 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace Orarend
{
[DataContract]
public class Settings
{
[DataMember]
public bool DarkTheme { get; set; }
public void UseCommonNames()
{

View file

@ -1,14 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace Orarend
{
[DataContract]
public struct Tanár
{
[DataMember]
public string Azonosító { get; set; }
[DataMember]
public string Név { get; set; }
}
}

View file

@ -1,21 +1,26 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace Orarend
{
[DataContract]
public class Óra
{
[DataMember]
private ÓraTípus Típus { get; set; }
[DataMember]
public Tanár Tanár { get; set; }
[DataMember]
public string Terem { get; set; }
/// <summary>
/// Az órán résztvevő csoportok
/// </summary>
public string[] Csoportok { get; set; }
public string Azonosító
{
get

View file

@ -1,11 +1,16 @@
using System.Collections.Generic;
using System.Runtime.Serialization;
namespace Orarend
{
[DataContract]
public class ÓraTípus
{
[DataMember]
public string TeljesNév { get; set; }
[DataMember]
public string Azonosító { get; set; }
[DataMember]
public string EgyediNév { get; set; }
/// <summary>

View file

@ -1,33 +1,41 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace Orarend
{
[DataContract]
public class Órarend
{
/// <summary>
/// <para>Egy 6x16 2D tömb, az első koordináta a nap indexe, a második az óráé. Az értékek lehetnek null-ok, ha nincs óra az adott időpontban</para>
/// <para>Egy <see cref="API.Frissítés"/> hívás állítja be az órákat</para>
/// </summary>
public Óra[,] ÓrákAHét { get; } = new Óra[6, 16];
[DataMember]
public Óra[][] ÓrákAHét { get; private set; } = new Óra[6][] { new Óra[16], new Óra[16], new Óra[16], new Óra[16], new Óra[16], new Óra[16] };
/// <summary>
/// <para>Egy 6x16 2D tömb, az első koordináta a nap indexe, a második az óráé. Az értékek lehetnek null-ok, ha nincs óra az adott időpontban</para>
/// <para>Egy <see cref="API.Frissítés"/> hívás állítja be az órákat</para>
/// </summary>
public Óra[,] ÓrákBHét { get; } = new Óra[6, 16];
[DataMember]
public Óra[][] ÓrákBHét { get; private set; } = new Óra[6][] { new Óra[16], new Óra[16], new Óra[16], new Óra[16], new Óra[16], new Óra[16] }; //Multidimensional arrays are not supported (serialization)
/// <summary>
/// <para>Egy <see cref="API.Frissítés"/> hívás állítja be</para>
/// </summary>
[DataMember]
public string Név { get; set; }
[DataMember]
public Osztály Osztály { get; set; }
/// <summary>
/// Egy 16 elemű tömb az órák kezdő időpontjaival
/// </summary>
public TimeSpan[] Órakezdetek { get; } = new TimeSpan[16];
public List<string> Csoportok { get; }
[DataMember]
public TimeSpan[] Órakezdetek { get; private set; } = new TimeSpan[16];
[DataMember]
public List<string> Csoportok { get; private set; } = new List<string>(); //A private set kell a serialization miatt
/// <summary>
/// Létrehoz egy új órarendet
@ -39,7 +47,12 @@ namespace Orarend
{
Név = név;
Osztály = osztály;
Csoportok = new List<string>(csoportok.Replace("Egész osztály", "").Trim().Split(' '));
Csoportok.AddRange(csoportok.Replace("Egész osztály", "").Trim().Split(' '));
}
public override string ToString()
{
return Név;
}
}
}

View file

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
namespace OrarendAndroidApp
{
[Activity(Label = "AddActivity", Theme = "@android:style/Theme.Holo.Light")]
public class EditActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Create your application here
}
}
}

View file

@ -16,7 +16,7 @@ using System.IO;
namespace OrarendAndroidApp
{
[Activity(Label = "Órarend", MainLauncher = true, Icon = "@drawable/icon", Theme = "@android:style/Theme.Holo.Light")]
[Activity(Label = "Órarend", MainLauncher = true, Theme = "@android:style/Theme.Holo.Light")]
public class MainActivity : Activity
{
private Handler handler;
@ -28,8 +28,7 @@ namespace OrarendAndroidApp
SetContentView(Resource.Layout.MainLayout);
ActionBar.SetDisplayShowTitleEnabled(false);
ActionBar.CustomView = FindViewById<Spinner>(Resource.Id.spinner);
handler = new Handler();
new StreamReader(OpenFileInput("osztaly")).ReadToEnd(); //TODO: TMP, fix "[{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]"
handler = new Handler();
string[] list = FileList();
if (list.Contains("beallitasok"))
API.BeállításBetöltés(OpenFileInput("beallitasok"));
@ -37,13 +36,35 @@ namespace OrarendAndroidApp
API.ÓrarendBetöltés(OpenFileInput("orarend"));
if (list.Contains("osztaly"))
API.OsztályBetöltés(OpenFileInput("osztaly"));
if (list.Contains("osztaly"))
API.OsztályBetöltés(OpenFileInput("osztaly"));
if (API.Osztályok == null || API.Osztályok.Length == 0)
ÓrarendFrissítés();
if (list.Contains("helyettesites"))
API.HelyettesítésBetöltés(OpenFileInput("helyettesites"));
var timer = new Timer(CsengőTimer, null, TimeSpan.Zero, new TimeSpan(0, 0, 1));
}
private void osztálylistafrissítés()
{
handler.Post(() =>
{
var list = FindViewById<Spinner>(Resource.Id.spinner);
list.Adapter = new ArrayAdapter(this, Resource.Layout.simple_list_item_1, API.Órarendek);
list.ItemSelected += ÓrarendClick;
bool a = API.Órarendek == null;
bool ab = API.Osztályok == null;
bool b = API.Osztályok.Any(o => o == null);
var osz = API.Osztályok.First(o => o.Azonosító == "12.b|2");
var ór = new Órarend("Teszt", osz, "");
API.Órarendek.Add(ór); //TODO: TMP
API.Órarendek.Add(new Órarend("Teszt2", API.Osztályok.First(o => o.Azonosító == "10.b|2"), "")); //TODO: TMP
});
}
private void ÓrarendClick(object sender, AdapterView.ItemSelectedEventArgs e)
{
órarend = API.Órarendek[e.Position];
}
private void addCell(string text, Color color, TableRow tr1, bool clickable = false, int[] tag = null)
{
TextView textview = new TextView(this);
@ -66,7 +87,7 @@ namespace OrarendAndroidApp
handler.Post(() =>
{
bar.Visibility = ViewStates.Gone;
Toast.MakeText(this, "Helyettesítések frissítve", ToastLength.Short);
Toast.MakeText(this, "Helyettesítések frissítve", ToastLength.Short).Show();
});
});
}
@ -93,13 +114,13 @@ namespace OrarendAndroidApp
addCell("Péntek", Color.Black, tr);
addCell("Szombat", Color.Black, tr);
table.AddView(tr, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent));
for (int j = 0; j < órarend.ÓrákAHét.GetLength(1); j++)
for (int j = 0; j < órarend.ÓrákAHét.GetLength(1); j++) //TODO: GetLength fix
{
tr = new TableRow(this);
bool notnull = false;
for (int i = 0; i < órarend.ÓrákAHét.GetLength(0); i++)
{ //Kihagyja az üres sorokat
if (órarend.ÓrákAHét[i, j] != null)
if (órarend.ÓrákAHét[i][j] != null)
{
notnull = true;
break;
@ -109,13 +130,14 @@ namespace OrarendAndroidApp
{
addCell((j + 1).ToString(), Color.Black, tr);
for (int i = 0; i < órarend.ÓrákAHét.GetLength(0); i++)
addCell(órarend.ÓrákAHét[i, j] != null ? órarend.ÓrákAHét[i, j].EgyediNév : "", Color.Black, tr, true, new int[2] { i, j });
addCell(órarend.ÓrákAHét[i][j] != null ? órarend.ÓrákAHét[i][j].EgyediNév : "", Color.Black, tr, true, new int[2] { i, j });
table.AddView(tr, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent));
}
}
}
bar.Visibility = ViewStates.Gone;
Toast.MakeText(this, "Órarend és osztálylista frissítve", ToastLength.Long);
Toast.MakeText(this, "Órarend és osztálylista frissítve", ToastLength.Long).Show();
osztálylistafrissítés();
});
});
}
@ -128,7 +150,7 @@ namespace OrarendAndroidApp
{
var tv = (TextView)sender;
var ij = (int[])tv.Tag;
Óra óra = órarend.ÓrákAHét[ij[0], ij[1]];
Óra óra = órarend.ÓrákAHét[ij[0]][ij[1]];
if (óra == null)
return;
if (selected != null && selected != sender)
@ -150,6 +172,10 @@ namespace OrarendAndroidApp
public override bool OnCreateOptionsMenu(IMenu menu)
{
MenuInflater.Inflate(Resource.Menu.main_menu_light, menu);
if (API.Osztályok == null || API.Osztályok.Length == 0)
ÓrarendFrissítés();
else
osztálylistafrissítés();
return base.OnCreateOptionsMenu(menu);
}
@ -162,14 +188,24 @@ namespace OrarendAndroidApp
HelyettesítésFrissítés();
break;
}
case Resource.Id.menu_add: //TODO
break;
case Resource.Id.menu_edit: //TODO
break;
case Resource.Id.menu_add:
{
var intent = new Intent(this, typeof(EditActivity));
intent.PutExtra("mode", "add");
StartActivity(intent);
break;
}
case Resource.Id.menu_edit:
{
var intent = new Intent(this, typeof(EditActivity));
intent.PutExtra("mode", "edit"); //Az aktuális órarend elérhető
StartActivity(intent);
break;
}
case Resource.Id.menu_preferences: //TODO
break;
case Resource.Id.menu_fullrefresh: //TODO: Megjelenítés frissítése
{ //TODO: Beállítások mentése
case Resource.Id.menu_fullrefresh:
{
ÓrarendFrissítés();
break;
}
@ -202,11 +238,13 @@ namespace OrarendAndroidApp
{
handler.Post(() =>
{
if (órarend == null)
return;
var kezdveg = FindViewById<TextView>(Resource.Id.kezdvegTV);
//var most = DateTime.Now - DateTime.Today;
var most = new TimeSpan(10, 0, 0) + (DateTime.Now - DateTime.Today - new TimeSpan(22, 0, 0));
if (órarend == null)
{
kezdveg.Text = "Nincs órarend kiválasztva";
return;
}
var most = DateTime.Now - DateTime.Today;
bool talált = false;
var kovora = FindViewById<TextView>(Resource.Id.kovoraTV);
for (int i = 0; i < órarend.Órakezdetek.Length - 1; i++)
@ -237,7 +275,7 @@ namespace OrarendAndroidApp
kovora.Visibility = ViewStates.Invisible;
}
int x = (int)DateTime.Today.DayOfWeek - 1;
var óra = órarend.ÓrákAHét[x, i];
var óra = órarend.ÓrákAHét[x][i];
if (x < 6 && óra != null)
{
kovora.Text = "Következő óra: " + óra.EgyediNév + "\n" + óra.Terem + "\n" + óra.Tanár.Név+"\n"+"ASD";
@ -252,7 +290,6 @@ namespace OrarendAndroidApp
kezdveg.Text = "Nincs több óra ma";
kovora.Visibility = ViewStates.Invisible;
}
kezdveg.Visibility = ViewStates.Visible;
}); //TODO: Az egészet függőlegesen görgethetővé tenni
}
}

View file

@ -47,6 +47,7 @@
<Reference Include="System.Core" />
</ItemGroup>
<ItemGroup>
<Compile Include="EditActivity.cs" />
<Compile Include="MainActivity.cs" />
<Compile Include="Resources\Resource.Designer.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
@ -58,6 +59,9 @@
<AndroidResource Include="Resources\layout\MainLayout.axml">
<SubType>AndroidResource</SubType>
</AndroidResource>
<AndroidResource Include="Resources\layout\simple_list_item_1.axml">
<SubType>AndroidResource</SubType>
</AndroidResource>
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\values\Strings.xml" />

View file

@ -102,32 +102,35 @@ namespace OrarendAndroidApp
// aapt resource value: 0x7f06000b
public const int kovoraTV = 2131099659;
// aapt resource value: 0x7f06000e
public const int menu_add = 2131099662;
// aapt resource value: 0x7f06000f
public const int menu_edit = 2131099663;
// aapt resource value: 0x7f060011
public const int menu_fullrefresh = 2131099665;
public const int menu_add = 2131099663;
// aapt resource value: 0x7f060010
public const int menu_preferences = 2131099664;
public const int menu_edit = 2131099664;
// aapt resource value: 0x7f06000d
public const int menu_refresh = 2131099661;
// aapt resource value: 0x7f060012
public const int menu_fullrefresh = 2131099666;
// aapt resource value: 0x7f060011
public const int menu_preferences = 2131099665;
// aapt resource value: 0x7f06000e
public const int menu_refresh = 2131099662;
// aapt resource value: 0x7f060006
public const int nevTV = 2131099654;
// aapt resource value: 0x7f06000c
public const int osztalylistaTV = 2131099660;
// aapt resource value: 0x7f060005
public const int pozTV = 2131099653;
// aapt resource value: 0x7f060003
public const int progressBar1 = 2131099651;
// aapt resource value: 0x7f06000c
public const int spinner = 2131099660;
// aapt resource value: 0x7f06000d
public const int spinner = 2131099661;
// aapt resource value: 0x7f060002
public const int tableLayout1 = 2131099650;
@ -154,6 +157,9 @@ namespace OrarendAndroidApp
// aapt resource value: 0x7f030000
public const int MainLayout = 2130903040;
// aapt resource value: 0x7f030001
public const int simple_list_item_1 = 2130903041;
static Layout()
{
global::Android.Runtime.ResourceIdManager.UpdateIdValues();

View file

@ -85,13 +85,13 @@
android:visibility="gone" />
<TextView
android:id="@+id/kezdvegTV"
android:text="Becsengetés: 00:10:00"
android:text="Betöltés"
android:textSize="32sp"
android:textStyle="bold"
android:gravity="center"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="invisible" />
android:visibility="visible" />
<TextView
android:id="@+id/kovoraTV"
android:text="Következő óra"
@ -101,4 +101,9 @@
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="invisible" />
<TextView
android:id="@+id/osztalylistaTV"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:visibility="gone" />
</LinearLayout>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:gravity="center_vertical"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
android:minHeight="?android:attr/listPreferredItemHeightSmall" />

View file

@ -2,17 +2,17 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/spinner"
android:title="will be replaced anyway"
android:showAsAction="ifRoom"
android:showAsAction="always"
android:actionViewClass="android.widget.Spinner" />
<item
android:id="@+id/menu_refresh"
android:icon="@drawable/ic_autorenew_black_24dp"
android:showAsAction="ifRoom"
android:showAsAction="always"
android:title="Frissítés" />
<item
android:id="@+id/menu_add"
android:icon="@drawable/ic_add_black_24dp"
android:showAsAction="ifRoom"
android:showAsAction="always"
android:title="Hozzáadás" />
<item
android:id="@+id/menu_edit"