Frissítve C# 7.0-ra, tömörítések..., egyéb módosítások

A ConnectFaliure esetén javasolja, hogy indítsa újra az alkalmazást
This commit is contained in:
Norbi Peti 2017-03-25 23:17:30 +01:00
parent 45557da7bf
commit 95c72a2382
8 changed files with 51 additions and 94 deletions

View file

@ -37,9 +37,9 @@ namespace Orarend
/// <para>Lehet null, ha még nem volt sikeres <see cref="Frissítés"/>.</para> /// <para>Lehet null, ha még nem volt sikeres <see cref="Frissítés"/>.</para>
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public static Osztály[] Osztályok { get { return példány.osztályok; } private set { példány.osztályok = value; } } public static Osztály[] Osztályok { get => példány.osztályok; private set => példány.osztályok = value; }
public static List<Órarend> Órarendek { get { return példány.órarendek; } } public static List<Órarend> Órarendek { get { return példány.órarendek; } }
public static Settings Beállítások { get { return példány.beállítások; } private set { példány.beállítások = value; } } public static Settings Beállítások { get => példány.beállítások; private set => példány.beállítások = value; }
/// <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="stream">A file stream, ahova mentse az adatokat, hogy ne kelljen külön meghívni - Azért funkció, hogy elkerüljök az adatvesztést, mivel így csak a mentéskor nyitja meg</param> /// <param name="stream">A file stream, ahova mentse az adatokat, hogy ne kelljen külön meghívni - Azért funkció, hogy elkerüljök az adatvesztést, mivel így csak a mentéskor nyitja meg</param>
@ -201,10 +201,7 @@ namespace Orarend
} }
[OnDeserializing] [OnDeserializing]
private void betöltés(StreamingContext context) private void betöltés(StreamingContext context) => példány = this; //Az órák azonosítójának beállításakor szükséges már
{ //Az órák azonosítójának beállításakor szükséges már
példány = this;
}
/// <summary> /// <summary>
/// Betölti az adatokat, ha még nincsenek betöltve /// Betölti az adatokat, ha még nincsenek betöltve
@ -265,13 +262,8 @@ namespace Orarend
public static void Mentés(Stream s) public static void Mentés(Stream s)
{ {
using (s) using (s)
{
if (példány != null) if (példány != null)
{ new DataContractJsonSerializer(példány.GetType()).WriteObject(s, példány);
var serializer = new DataContractJsonSerializer(példány.GetType());
serializer.WriteObject(s, példány);
}
}
} }
/// <summary> /// <summary>
/// Visszatér a megjelenítendő héttel. Ez megegyezik a tényleges héttel, kivéve hétvégén, amikor a következő /// Visszatér a megjelenítendő héttel. Ez megegyezik a tényleges héttel, kivéve hétvégén, amikor a következő
@ -287,13 +279,7 @@ namespace Orarend
} }
} }
public static bool AHét public static bool AHét { get => Hét % 2 == 0; }
{
get
{
return Hét % 2 == 0;
}
}
public static bool Fókusz public static bool Fókusz
{ {
@ -329,14 +315,10 @@ namespace Orarend
} }
} }
public static Helyettesítés[] HelyettesítésInnenIde(Órarend órarend, int i, int j) public static (Helyettesítés innen, Helyettesítés ide) HelyettesítésInnenIde(Órarend órarend, int i, int j) =>
{ (órarend.Helyettesítések.FirstOrDefault(h => (int)h.EredetiNap == i + 1 && h.EredetiSorszám == j + 1),
return new Helyettesítés[] órarend.Helyettesítések.FirstOrDefault(h => (int)h.ÚjNap == i + 1 && h.ÚjSorszám == j + 1 && h.ÚjÓra != null));
{ //Ha az eredeti óra elmarad, és ide lesz helyezve egy másik, az áthelyezést mutassa
órarend.Helyettesítések.FirstOrDefault(h => (int)h.EredetiNap == i + 1 && h.EredetiSorszám == j + 1),
órarend.Helyettesítések.FirstOrDefault(h => (int)h.ÚjNap == i + 1 && h.ÚjSorszám == j + 1 && h.ÚjÓra != null) //Ha az eredeti óra elmarad, és ide lesz helyezve egy másik, az áthelyezést mutassa
};
}
private static bool nincstöbbóra = false; private static bool nincstöbbóra = false;
private static Órarend órarend; //TODO private static Órarend órarend; //TODO
@ -354,7 +336,7 @@ namespace Orarend
bool talált = false; bool talált = false;
nincstöbbóra = false; nincstöbbóra = false;
if (órarend.Órakezdetek[0] == TimeSpan.Zero) //Még nincsenek beállítva a kezdetek if (órarend.Órakezdetek[0] == TimeSpan.Zero) //Még nincsenek beállítva a kezdetek
return new TimerEventArgs(null, "Betöltés"); //TODO 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++)
{ {
@ -362,9 +344,9 @@ 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 = API.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("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 = 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])
{ {

View file

@ -2,7 +2,7 @@
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup> <PropertyGroup>
<MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion> <MinimumVisualStudioVersion>10.0</MinimumVisualStudioVersion>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{93C1582B-AD0F-44EC-BB69-02EE1ADFC0DD}</ProjectGuid> <ProjectGuid>{93C1582B-AD0F-44EC-BB69-02EE1ADFC0DD}</ProjectGuid>
@ -13,8 +13,8 @@
<DefaultLanguage>en-US</DefaultLanguage> <DefaultLanguage>en-US</DefaultLanguage>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> <ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<TargetFrameworkProfile>Profile111</TargetFrameworkProfile> <TargetFrameworkProfile>Profile44</TargetFrameworkProfile>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion> <TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@ -47,15 +47,16 @@
<Compile Include="ÓraTípus.cs" /> <Compile Include="ÓraTípus.cs" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Reference Include="HtmlAgilityPack, Version=1.4.9.4, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="HtmlAgilityPack, Version=1.4.9.5, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\HtmlAgilityPack.1.4.9.4\lib\portable-net45+netcore45+wpa81+wp8+MonoAndroid+MonoTouch\HtmlAgilityPack.dll</HintPath> <HintPath>..\packages\HtmlAgilityPack.1.4.9.5\lib\portable-net45+netcore45+wp8+MonoAndroid+MonoTouch\HtmlAgilityPack.dll</HintPath>
<Private>True</Private> </Reference>
<Reference Include="System.ValueTuple, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.ValueTuple.4.3.0\lib\portable-net40+sl4+win8+wp8\System.ValueTuple.dll</HintPath>
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="packages.config" /> <None Include="packages.config" />
</ItemGroup> </ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" /> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.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

@ -18,34 +18,12 @@ namespace Orarend
{ {
} }
public override string ToString() public override string ToString() => Név;
{
return Név;
}
public bool Equals(Osztály other) public bool Equals(Osztály other) => Azonosító == other?.Azonosító;
{ public static bool operator==(Osztály a, Osztály b) => a?.Equals(b) ?? (object)b == null;
return Azonosító == other?.Azonosító; public static bool operator!=(Osztály a, Osztály b) => !(a == b);
} public override bool Equals(object obj) => obj is Osztály ? Equals(obj as Osztály) : base.Equals(obj);
public override int GetHashCode() => Azonosító.GetHashCode();
public static bool operator==(Osztály a, Osztály b)
{
return a?.Equals(b) ?? (object)b == null;
}
public static bool operator!=(Osztály a, Osztály b)
{
return !(a == b);
}
public override bool Equals(object obj)
{
return obj is Osztály ? Equals(obj as Osztály) : base.Equals(obj);
}
public override int GetHashCode()
{
return Azonosító.GetHashCode();
}
} }
} }

View file

@ -1,4 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="HtmlAgilityPack" version="1.4.9.4" targetFramework="portable45-net45+win8+wpa81" /> <package id="HtmlAgilityPack" version="1.4.9.5" targetFramework="portable45-net45+wp8" />
<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.Runtime" version="4.3.0" targetFramework="portable46-net451+win81" />
<package id="System.ValueTuple" version="4.3.0" targetFramework="portable46-net451+win81" />
</packages> </packages>

View file

@ -17,8 +17,8 @@ namespace OrarendAndroidApp
{ {
var settings = PreferenceManager.GetDefaultSharedPreferences(activity); var settings = PreferenceManager.GetDefaultSharedPreferences(activity);
bool darktheme = settings.GetBoolean("pref_theme", false); bool darktheme = settings.GetBoolean("pref_theme", false);
if (activity is ActivityBase) if (activity is ActivityBase ab)
(activity as ActivityBase).DarkTheme = darktheme; ab.DarkTheme = darktheme;
activity.SetTheme(darktheme ? Android.Resource.Style.ThemeDeviceDefault : Android.Resource.Style.ThemeDeviceDefaultLight); activity.SetTheme(darktheme ? Android.Resource.Style.ThemeDeviceDefault : Android.Resource.Style.ThemeDeviceDefaultLight);
} }

View file

@ -32,13 +32,8 @@ namespace OrarendAndroidApp
{ {
AndroidEnvironment.UnhandledExceptionRaiser += AndroidEnvironment_UnhandledExceptionRaiser; AndroidEnvironment.UnhandledExceptionRaiser += AndroidEnvironment_UnhandledExceptionRaiser;
base.OnCreate(bundle); base.OnCreate(bundle);
//RequestWindowFeature(WindowFeatures.ActionBar);
SetContentView(Resource.Layout.MainLayout); SetContentView(Resource.Layout.MainLayout);
//SetActionBar(new Toolbar(this));
ActionBar.SetDisplayShowTitleEnabled(false); ActionBar.SetDisplayShowTitleEnabled(false);
//ActionBar.CustomView = new Spinner(this);
//ActionBar.CustomView = FindViewById<Spinner>(Resource.Id.spinner);
//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; bool betöltötte;
@ -190,10 +185,8 @@ 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 = API.HelyettesítésInnenIde(órarend, i, j); var (innen, ide) = API.HelyettesítésInnenIde(órarend, i, j);
var helyettesítés = innenide[0]; 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" : órarend.Órák[i][j]?.EgyediNév ?? "", innen == null ? (DarkTheme ? Color.WhiteSmoke : Color.Black) : Color.Red, tr, new int[2] { i, j });
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 });
} }
table.AddView(tr, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent)); table.AddView(tr, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent));
} }
@ -225,11 +218,7 @@ namespace OrarendAndroidApp
Helyettesítés helyettesítésInnen = null; Helyettesítés helyettesítésInnen = null;
Helyettesítés helyettesítésIde = null; Helyettesítés helyettesítésIde = null;
if (ij != null) if (ij != null)
{ (helyettesítésInnen, helyettesítésIde) = API.HelyettesítésInnenIde(órarend, ij[0], ij[1]);
var innenide = API.HelyettesítésInnenIde(órarend, ij[0], ij[1]);
helyettesítésInnen = innenide[0];
helyettesítésIde = innenide[1];
}
if (ij == null || (óra = órarend.Órák[ij[0]][ij[1]]) == null && helyettesítésIde?.ÚjÓra == null) if (ij == null || (óra = órarend.Órák[ij[0]][ij[1]]) == null && helyettesítésIde?.ÚjÓra == null)
{ {
deselect(); deselect();
@ -336,15 +325,10 @@ namespace OrarendAndroidApp
return base.OnOptionsItemSelected(item); return base.OnOptionsItemSelected(item);
} }
private void Hiba(string msg) private void Hiba(string msg) => Hiba(this, msg);
{
Hiba(this, msg);
}
public static void Hiba(Context c, string msg) public static void Hiba(Context c, string msg) =>
{
new AlertDialog.Builder(c).SetMessage(msg).SetNeutralButton("OK", (s, e) => { ((AlertDialog)s).Dismiss(); ((AlertDialog)s).Dispose(); }).SetTitle("Hiba").Show(); new AlertDialog.Builder(c).SetMessage(msg).SetNeutralButton("OK", (s, e) => { ((AlertDialog)s).Dismiss(); ((AlertDialog)s).Dispose(); }).SetTitle("Hiba").Show();
}
/// <summary> /// <summary>
/// Az összes hibát kiírja, ami a <see cref="Task"/> futása közben keletkezett /// Az összes hibát kiírja, ami a <see cref="Task"/> futása közben keletkezett
@ -357,10 +341,12 @@ namespace OrarendAndroidApp
bool ret = true; bool ret = true;
foreach (var ex in (IEnumerable<Exception>)t.Exception?.InnerExceptions ?? new Exception[0]) foreach (var ex in (IEnumerable<Exception>)t.Exception?.InnerExceptions ?? new Exception[0])
{ {
if (ex is WebException) if (ex is WebException wex)
{ {
if (internethiba) if (internethiba || wex.Status != WebExceptionStatus.NameResolutionFailure)
Hiba("Nem sikerült csatlakozni az E-naplóhoz.\n" + ex.Message); 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.");
} }
else else
Hiba(ex.ToString()); Hiba(ex.ToString());
@ -404,10 +390,8 @@ namespace OrarendAndroidApp
órarendlistafrissítés(); órarendlistafrissítés();
} }
else if (requestCode == SETTINGS_ACT_REQUEST) else if (requestCode == SETTINGS_ACT_REQUEST)
{
Recreate(); Recreate();
} }
}
public override void OnWindowFocusChanged(bool hasFocus) public override void OnWindowFocusChanged(bool hasFocus)
{ {

View file

@ -55,6 +55,9 @@
<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">
<HintPath>..\packages\System.ValueTuple.4.3.0\lib\netstandard1.0\System.ValueTuple.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="ActivityBase.cs" /> <Compile Include="ActivityBase.cs" />
@ -66,6 +69,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="GettingStarted.Xamarin" /> <None Include="GettingStarted.Xamarin" />
<None Include="packages.config" />
<None Include="Resources\AboutResources.txt" /> <None Include="Resources\AboutResources.txt" />
<None Include="Assets\AboutAssets.txt" /> <None Include="Assets\AboutAssets.txt" />
<AndroidResource Include="Resources\layout\MainLayout.axml"> <AndroidResource Include="Resources\layout\MainLayout.axml">

View file

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="System.ValueTuple" version="4.3.0" targetFramework="monoandroid60" />
</packages>