A táblázat görgethető, formázott; egyéb javítások

This commit is contained in:
Norbi Peti 2017-02-13 22:30:38 +01:00
parent 0444c1b867
commit 2a8dbe811d
11 changed files with 231 additions and 62 deletions

View file

@ -73,9 +73,11 @@ namespace Orarend
continue; continue;
if (óra == null) 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();
var csoportok = óranode.FirstChild.InnerText.TrimEnd(':'); var csoport = óranode.FirstChild.InnerText.TrimEnd(':');
if (csoport != "Egész osztály" && !órarend.Csoportok.Contains(csoport))
continue;
óra.Sorszám = x + 1; óra.Sorszám = x + 1;
óra.Csoportok = new string[] { csoportok }; //Az állandó órarendben osztályonként csak egy csoport van egy órán ó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.Azonosító = óranode.ChildNodes[2].InnerText;
óra.TeljesNév = óranode.ChildNodes[2].Attributes["title"].Value; óra.TeljesNév = óranode.ChildNodes[2].Attributes["title"].Value;
óra.Terem = óranode.ChildNodes[3].InnerText.Trim(' ', '(', ')'); óra.Terem = óranode.ChildNodes[3].InnerText.Trim(' ', '(', ')');
@ -99,7 +101,7 @@ namespace Orarend
/// </summary> /// </summary>
public static async Task HelyettesítésFrissítés() public static async Task HelyettesítésFrissítés()
{ {
//TODO
} }
} }
} }

View file

@ -8,7 +8,10 @@ namespace Orarend
{ {
public class Osztály public class Osztály
{ {
public string Azonosító { get; set; } public string Azonosító { get; internal set; }
public string Név { get; set; } public string Név { get; internal set; }
internal Osztály()
{
}
} }
} }

View file

@ -9,13 +9,18 @@ namespace Orarend
public class Órarend public class Órarend
{ {
/// <summary> /// <summary>
/// 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>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> /// </summary>
public Óra[,] ÓrákAHét { get; } = new Óra[6, 16]; public Óra[,] ÓrákAHét { get; } = new Óra[6, 16];
/// <summary> /// <summary>
/// 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>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> /// </summary>
public Óra[,] ÓrákBHét { get; } = new Óra[6, 16]; public Óra[,] ÓrákBHét { get; } = new Óra[6, 16];
/// <summary>
/// <para>Egy <see cref="API.Frissítés"/> hívás állítja be</para>
/// </summary>
public string Név { get; set; } public string Név { get; set; }
public Osztály Osztály { get; set; } public Osztály Osztály { get; set; }
/// <summary> /// <summary>
@ -23,5 +28,18 @@ namespace Orarend
/// </summary> /// </summary>
public TimeSpan[] Órakezdetek { get; } = new TimeSpan[16]; public TimeSpan[] Órakezdetek { get; } = new TimeSpan[16];
public List<string> Csoportok { get; } public List<string> Csoportok { get; }
/// <summary>
/// Létrehoz egy új órarendet
/// </summary>
/// <param name="név">Az órarend neve. Ez jelenik meg a fejlécen</param>
/// <param name="osztály">Az osztály, amihez tartozik ez az órarend. Lásd <see cref="API.Osztályok"/> </param>
/// <param name="csoportok">A megjelenítendő csoportok szóközzel elválasztva</param>
public Órarend(string név, Osztály osztály, string csoportok)
{
Név = név;
Osztály = osztály;
Csoportok = new List<string>(csoportok.Replace("Egész osztály", "").Trim().Split(' '));
}
} }
} }

View file

@ -9,6 +9,8 @@ using Orarend;
using System.Linq; using System.Linq;
using Android.Graphics; using Android.Graphics;
using Java.Lang; using Java.Lang;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace OrarendAndroidApp namespace OrarendAndroidApp
{ {
@ -23,8 +25,19 @@ namespace OrarendAndroidApp
base.OnCreate(bundle); base.OnCreate(bundle);
SetContentView(Resource.Layout.MainLayout); SetContentView(Resource.Layout.MainLayout);
handler = new Handler(); handler = new Handler();
API.Frissítés().ContinueWith(t =>
{
handler.Post(() =>
{
TaskHiba(t);
});
órarend = new Órarend("Teszt", API.Osztályok.First(), "gy1");
API.Órarendek.Add(órarend);
API.Frissítés().ContinueWith(tt => HelyettesítésFrissítés());
});
} }
private int a = 0; //TODO: TMP
private void HelyettesítésFrissítés() private void HelyettesítésFrissítés()
{ {
var table = FindViewById<TableLayout>(Resource.Id.tableLayout1); var table = FindViewById<TableLayout>(Resource.Id.tableLayout1);
@ -33,29 +46,69 @@ namespace OrarendAndroidApp
TextView textview = new TextView(this); TextView textview = new TextView(this);
textview.SetText(text, TextView.BufferType.Normal); textview.SetText(text, TextView.BufferType.Normal);
textview.SetTextColor(color); textview.SetTextColor(color);
textview.SetPadding(10, 10, 10, 10);
switch(a)
{
case 0:
textview.SetBackgroundResource(Resource.Drawable.cell_shape_light);
a++;
break;
case 1:
textview.SetBackgroundResource(Resource.Drawable.cell_shape_selected_light);
a++;
break;
case 2:
textview.SetBackgroundResource(Resource.Drawable.cell_shape_removed_light);
a++;
break;
case 3:
textview.SetBackgroundResource(Resource.Drawable.cell_shape_added_light);
a++;
break;
default:
a = 0;
break;
}
tr1.AddView(textview); tr1.AddView(textview);
}; };
API.HelyettesítésFrissítés().ContinueWith(t => API.HelyettesítésFrissítés().ContinueWith(t =>
{ {
handler.Post(() => handler.Post(() =>
{ {
if (t.Exception?.InnerExceptions.Count > 0) TaskHiba(t);
{ {
foreach (var ex in t.Exception.InnerExceptions) TableRow tr = new TableRow(this);
{ addCell("", Color.Black, tr);
TableRow tr = new TableRow(this); addCell("Hétfő", Color.Black, tr);
addCell(ex.ToString(), Color.Red, tr); addCell("Kedd", Color.Black, tr);
table.AddView(tr); addCell("Szerda", Color.Black, tr);
} addCell("Csütörtök", Color.Black, tr);
addCell("Péntek", Color.Black, tr);
addCell("Szombat", Color.Black, tr);
table.AddView(tr, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent));
} }
else if ((t.Exception?.InnerExceptions?.Count ?? 0) == 0)
{ {
for (int j = 0; j < órarend.ÓrákAHét.GetLength(1); j++) for (int j = 0; j < órarend.ÓrákAHét.GetLength(1); j++)
{ {
TableRow tr = new TableRow(this); TableRow tr = new TableRow(this);
bool notnull = false;
for (int i = 0; i < órarend.ÓrákAHét.GetLength(0); i++) 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.Aqua, tr); { //Kihagyja az üres sorokat
table.AddView(tr); if (órarend.ÓrákAHét[i, j] != null)
{
notnull = true;
break;
}
}
if (notnull)
{
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);
table.AddView(tr, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent));
}
} }
} }
}); });
@ -101,5 +154,16 @@ namespace OrarendAndroidApp
} }
return base.OnOptionsItemSelected(item); return base.OnOptionsItemSelected(item);
} }
private void Hiba(string msg)
{
new AlertDialog.Builder(this).SetMessage(msg).SetNeutralButton("OK", (s, e) => { ((AlertDialog)s).Dismiss(); ((AlertDialog)s).Dispose(); }).SetTitle("Hiba").Show();
}
private void TaskHiba(Task t)
{
foreach (var ex in (IEnumerable<System.Exception>)t.Exception?.InnerExceptions ?? new System.Exception[0])
Hiba(ex.ToString());
}
} }
} }

View file

@ -89,6 +89,26 @@
<ItemGroup> <ItemGroup>
<AndroidResource Include="Resources\drawable\ic_autorenew_black_24dp.png" /> <AndroidResource Include="Resources\drawable\ic_autorenew_black_24dp.png" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable\cell_shape_light.xml">
<SubType>Designer</SubType>
</AndroidResource>
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable\cell_shape_selected_light.xml">
<SubType>Designer</SubType>
</AndroidResource>
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable\cell_shape_removed_light.xml">
<SubType>Designer</SubType>
</AndroidResource>
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable\cell_shape_added_light.xml">
<SubType>Designer</SubType>
</AndroidResource>
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" /> <Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets. Other similar extension points exist, see Microsoft.Common.targets.

View file

@ -45,19 +45,31 @@ namespace OrarendAndroidApp
{ {
// aapt resource value: 0x7f020000 // aapt resource value: 0x7f020000
public const int ic_add_black_24dp = 2130837504; public const int cell_shape_added_light = 2130837504;
// aapt resource value: 0x7f020001 // aapt resource value: 0x7f020001
public const int ic_autorenew_black_24dp = 2130837505; public const int cell_shape_light = 2130837505;
// aapt resource value: 0x7f020002 // aapt resource value: 0x7f020002
public const int ic_create_black_24dp = 2130837506; public const int cell_shape_removed_light = 2130837506;
// aapt resource value: 0x7f020003 // aapt resource value: 0x7f020003
public const int ic_settings_black_24dp = 2130837507; public const int cell_shape_selected_light = 2130837507;
// aapt resource value: 0x7f020004 // aapt resource value: 0x7f020004
public const int Icon = 2130837508; public const int ic_add_black_24dp = 2130837508;
// aapt resource value: 0x7f020005
public const int ic_autorenew_black_24dp = 2130837509;
// aapt resource value: 0x7f020006
public const int ic_create_black_24dp = 2130837510;
// aapt resource value: 0x7f020007
public const int ic_settings_black_24dp = 2130837511;
// aapt resource value: 0x7f020008
public const int Icon = 2130837512;
static Drawable() static Drawable()
{ {
@ -72,29 +84,35 @@ namespace OrarendAndroidApp
public partial class Id public partial class Id
{ {
// aapt resource value: 0x7f060002 // aapt resource value: 0x7f060000
public const int actionMenuView1 = 2131099650; public const int ScrollView01 = 2131099648;
// aapt resource value: 0x7f060004 // aapt resource value: 0x7f060004
public const int menu_add = 2131099652; public const int actionMenuView1 = 2131099652;
// aapt resource value: 0x7f060005
public const int menu_edit = 2131099653;
// aapt resource value: 0x7f060007
public const int menu_fullrefresh = 2131099655;
// aapt resource value: 0x7f060006
public const int menu_preferences = 2131099654;
// aapt resource value: 0x7f060003
public const int menu_refresh = 2131099651;
// aapt resource value: 0x7f060001 // aapt resource value: 0x7f060001
public const int progressBar1 = 2131099649; public const int horizontalView = 2131099649;
// aapt resource value: 0x7f060000 // aapt resource value: 0x7f060006
public const int tableLayout1 = 2131099648; public const int menu_add = 2131099654;
// aapt resource value: 0x7f060007
public const int menu_edit = 2131099655;
// aapt resource value: 0x7f060009
public const int menu_fullrefresh = 2131099657;
// aapt resource value: 0x7f060008
public const int menu_preferences = 2131099656;
// aapt resource value: 0x7f060005
public const int menu_refresh = 2131099653;
// aapt resource value: 0x7f060003
public const int progressBar1 = 2131099651;
// aapt resource value: 0x7f060002
public const int tableLayout1 = 2131099650;
static Id() static Id()
{ {

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape= "rectangle" >
<solid android:color="#eee"/>
<stroke android:width="1dp" android:color="#00d"/>
</shape>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape= "rectangle" >
<solid android:color="#eee"/>
<stroke android:width="1dp" android:color="#000"/>
</shape>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape= "rectangle" >
<solid android:color="#eee"/>
<stroke android:width="1dp" android:color="#0d0"/>
</shape>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape= "rectangle" >
<solid android:color="#ddd"/>
<stroke android:width="1dp" android:color="#000"/>
</shape>

View file

@ -1,28 +1,44 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="fill_parent"
android:layout_height="match_parent" android:layout_height="fill_parent"
android:minWidth="25px" android:minWidth="25px"
android:minHeight="25px"> android:minHeight="25px">
<TableLayout <ScrollView
android:id="@+id/tableLayout1" android:id="@+id/ScrollView01"
android:layout_width="fill_parent" android:layout_height="match_parent"
android:layout_height="fill_parent" android:scrollbars="horizontal|vertical"
android:stretchColumns="1" android:layout_width="match_parent"
android:scrollbars="horizontal"> android:layout_marginTop="5dip"
<ProgressBar android:scrollbarStyle="outsideInset"
style="@android:attr/progressBarStyleHorizontal" android:fillViewport="true">
android:id="@+id/progressBar1" <HorizontalScrollView
android:indeterminateTint="#00ffffff" android:id="@+id/horizontalView"
android:indeterminate="true" android:layout_height="wrap_content"
android:indeterminateBehavior="repeat" android:scrollbars="horizontal"
android:indeterminateOnly="true" android:layout_width="wrap_content"
android:indeterminateTintMode="add" android:layout_marginTop="5dip">
android:visibility="gone" /> <TableLayout
<ActionMenuView android:id="@+id/tableLayout1"
android:minWidth="25px" android:layout_width="wrap_content"
android:minHeight="25px" android:layout_height="wrap_content"
android:id="@+id/actionMenuView1" /> android:stretchColumns="1"
</TableLayout> android:isScrollContainer="true">
<ProgressBar
style="@android:attr/progressBarStyleHorizontal"
android:id="@+id/progressBar1"
android:indeterminateTint="#00ffffff"
android:indeterminate="true"
android:indeterminateBehavior="repeat"
android:indeterminateOnly="true"
android:indeterminateTintMode="add"
android:visibility="gone" />
<ActionMenuView
android:minWidth="25px"
android:minHeight="25px"
android:id="@+id/actionMenuView1" />
</TableLayout>
</HorizontalScrollView>
</ScrollView>
</LinearLayout> </LinearLayout>