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>
/// </summary>
/// <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 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>
/// 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>
@ -201,10 +201,7 @@ namespace Orarend
}
[OnDeserializing]
private void betöltés(StreamingContext context)
{ //Az órák azonosítójának beállításakor szükséges már
példány = this;
}
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
/// <summary>
/// Betölti az adatokat, ha még nincsenek betöltve
@ -265,13 +262,8 @@ namespace Orarend
public static void Mentés(Stream s)
{
using (s)
{
if (példány != null)
{
var serializer = new DataContractJsonSerializer(példány.GetType());
serializer.WriteObject(s, példány);
}
}
new DataContractJsonSerializer(példány.GetType()).WriteObject(s, példány);
}
/// <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ő
@ -287,13 +279,7 @@ namespace Orarend
}
}
public static bool AHét
{
get
{
return Hét % 2 == 0;
}
}
public static bool AHét { get => Hét % 2 == 0; }
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)
{
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.Ú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
};
}
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),
ó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 Órarend órarend; //TODO
@ -354,7 +336,7 @@ namespace Orarend
bool talált = false;
nincstöbbóra = false;
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;
for (int i = 0; i < órarend.Órakezdetek.Length - 1; i++)
{
@ -362,9 +344,9 @@ namespace Orarend
bool becsengetés;
int x = (int)DateTime.Today.DayOfWeek - 1;
Ó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";
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
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">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<MinimumVisualStudioVersion>11.0</MinimumVisualStudioVersion>
<MinimumVisualStudioVersion>10.0</MinimumVisualStudioVersion>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{93C1582B-AD0F-44EC-BB69-02EE1ADFC0DD}</ProjectGuid>
@ -13,8 +13,8 @@
<DefaultLanguage>en-US</DefaultLanguage>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<TargetFrameworkProfile>Profile111</TargetFrameworkProfile>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetFrameworkProfile>Profile44</TargetFrameworkProfile>
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@ -47,15 +47,16 @@
<Compile Include="ÓraTípus.cs" />
</ItemGroup>
<ItemGroup>
<Reference Include="HtmlAgilityPack, Version=1.4.9.4, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\HtmlAgilityPack.1.4.9.4\lib\portable-net45+netcore45+wpa81+wp8+MonoAndroid+MonoTouch\HtmlAgilityPack.dll</HintPath>
<Private>True</Private>
<Reference Include="HtmlAgilityPack, Version=1.4.9.5, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\HtmlAgilityPack.1.4.9.5\lib\portable-net45+netcore45+wp8+MonoAndroid+MonoTouch\HtmlAgilityPack.dll</HintPath>
</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>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup />
<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.
Other similar extension points exist, see Microsoft.Common.targets.

View file

@ -18,34 +18,12 @@ namespace Orarend
{
}
public override string ToString()
{
return Név;
}
public override string ToString() => Név;
public bool Equals(Osztály other)
{
return Azonosító == other?.Azonosító;
}
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();
}
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;
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();
}
}

View file

@ -1,4 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<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>

View file

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

View file

@ -32,13 +32,8 @@ namespace OrarendAndroidApp
{
AndroidEnvironment.UnhandledExceptionRaiser += AndroidEnvironment_UnhandledExceptionRaiser;
base.OnCreate(bundle);
//RequestWindowFeature(WindowFeatures.ActionBar);
SetContentView(Resource.Layout.MainLayout);
//SetActionBar(new Toolbar(this));
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();
string[] list = FileList();
bool betöltötte;
@ -190,10 +185,8 @@ namespace OrarendAndroidApp
addCell((j + 1).ToString(), DarkTheme ? Color.White : Color.Black, tr);
for (int i = 0; i < 6; i++)
{
var innenide = API.HelyettesítésInnenIde(órarend, i, j);
var helyettesítés = innenide[0];
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 });
var (innen, ide) = API.HelyettesítésInnenIde(órarend, i, j);
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 });
}
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ésIde = null;
if (ij != null)
{
var innenide = API.HelyettesítésInnenIde(órarend, ij[0], ij[1]);
helyettesítésInnen = innenide[0];
helyettesítésIde = innenide[1];
}
(helyettesítésInnen, helyettesítésIde) = API.HelyettesítésInnenIde(órarend, ij[0], ij[1]);
if (ij == null || (óra = órarend.Órák[ij[0]][ij[1]]) == null && helyettesítésIde?.ÚjÓra == null)
{
deselect();
@ -336,15 +325,10 @@ namespace OrarendAndroidApp
return base.OnOptionsItemSelected(item);
}
private void Hiba(string msg)
{
Hiba(this, msg);
}
private void Hiba(string 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();
}
/// <summary>
/// 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;
foreach (var ex in (IEnumerable<Exception>)t.Exception?.InnerExceptions ?? new Exception[0])
{
if (ex is WebException)
if (ex is WebException wex)
{
if (internethiba)
Hiba("Nem sikerült csatlakozni az E-naplóhoz.\n" + ex.Message);
if (internethiba || wex.Status != WebExceptionStatus.NameResolutionFailure)
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
Hiba(ex.ToString());
@ -404,9 +390,7 @@ namespace OrarendAndroidApp
órarendlistafrissítés();
}
else if (requestCode == SETTINGS_ACT_REQUEST)
{
Recreate();
}
}
public override void OnWindowFocusChanged(bool hasFocus)

View file

@ -55,6 +55,9 @@
<Reference Include="mscorlib" />
<Reference Include="System" />
<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>
<Compile Include="ActivityBase.cs" />
@ -66,6 +69,7 @@
</ItemGroup>
<ItemGroup>
<None Include="GettingStarted.Xamarin" />
<None Include="packages.config" />
<None Include="Resources\AboutResources.txt" />
<None Include="Assets\AboutAssets.txt" />
<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>