diff --git a/Orarend/API.cs b/Orarend/API.cs index 4ddf5ed..bba1da4 100644 --- a/Orarend/API.cs +++ b/Orarend/API.cs @@ -9,6 +9,7 @@ using System.Linq; using System.Net; using System.Runtime.Serialization; using System.Runtime.Serialization.Json; +using System.Security; using System.Text.RegularExpressions; using System.Threading.Tasks; @@ -30,7 +31,7 @@ namespace Orarend public Osztály[] osztályok { get; private set; } = new Osztály[0]; //Ez az initializáció csak akkor fut le, ha nem tölti be fájlból [DataMember(Order = 2)] public List<Órarend> órarendek { get; private set; } = new List<Órarend>(); - [DataMember] + [DataMember(Order = 3)] public Settings beállítások { get; private set; } = new Settings(); /// /// Visszatér az osztályok listájával. @@ -284,14 +285,16 @@ namespace Orarend { get { - int jelenlegihét = CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(DateTime.Today, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday); + int jelenlegihét = napbólhét(DateTime.Today); if (DateTime.Today.DayOfWeek > DayOfWeek.Friday || DateTime.Today.DayOfWeek == DayOfWeek.Sunday) jelenlegihét++; return jelenlegihét; } } - public static bool AHét { get => Hét % 2 == 0; } + private static int napbólhét(DateTime nap) => CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(nap, CalendarWeekRule.FirstFullWeek, DayOfWeek.Monday); + + public static bool AHét { get => Hét % 2 == napbólhét(new DateTime(DateTime.Today.Year - (DateTime.Today.Month < 8 ? 1 : 0), 9, 1)) % 2; } public static bool Fókusz { @@ -309,7 +312,7 @@ namespace Orarend private static DateTime utolsófrissítésplusz1óra = DateTime.MinValue; public static event EventHandler Frissítéskor; - public class FrissítésEventArgs { public bool Siker { get; set; } = false; } + public class FrissítésEventArgs : EventArgs { public bool Siker { get; set; } = false; } private static void frissítésHa1ÓraEltelt() { if (utolsófrissítésplusz1óra > DateTime.Now) @@ -336,8 +339,8 @@ namespace Orarend //Ha az eredeti óra elmarad, és ide lesz helyezve egy másik, az áthelyezést mutassa public static Órarend Órarend { get; private set; } - public static void ÓrarendKiválasztás(int position) => Órarend = Órarendek[position]; - public static void ÓrarendKiválasztásTörlése() => Órarend = null; + public static void ÓrarendKiválasztás(int position) { Órarend = Órarendek[position]; CsengőTimer(null); } + public static void ÓrarendKiválasztásTörlése() { Órarend = null; CsengőTimer(null); } private static bool nincstöbbóra = false; public static event EventHandler CsengőTimerEvent; @@ -349,7 +352,7 @@ namespace Orarend var most = DateTime.Now - DateTime.Today; //var most = new TimeSpan(9, 46, 0); bool talált = false; - if (Órarend.Órakezdetek[0] == TimeSpan.Zero) //Még nincsenek beállítva a kezdetek + if (Órarend.Órakezdetek[Beállítások.ÓraOffset] == TimeSpan.Zero) //Még nincsenek beállítva a kezdetek return new TimerEventArgs(null, "Betöltés"); string kezdveg = null, kovora = null; for (int i = 0; i < Órarend.Órakezdetek.Length - 1; i++) diff --git a/Orarend/Orarend.csproj b/Orarend/Orarend.csproj index 6f0ab8e..bcaa2f3 100644 --- a/Orarend/Orarend.csproj +++ b/Orarend/Orarend.csproj @@ -33,6 +33,9 @@ prompt 4 + + false + diff --git a/Orarend/Properties/AssemblyInfo.cs b/Orarend/Properties/AssemblyInfo.cs index c284b6b..c282b1b 100644 --- a/Orarend/Properties/AssemblyInfo.cs +++ b/Orarend/Properties/AssemblyInfo.cs @@ -2,6 +2,7 @@ using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; +using System.Security; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information @@ -15,6 +16,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: NeutralResourcesLanguage("en")] +[assembly: SecurityTransparent] // Version information for an assembly consists of the following four values: // diff --git a/Orarend/Órarend.cs b/Orarend/Órarend.cs index ba5a1f3..1a792d0 100644 --- a/Orarend/Órarend.cs +++ b/Orarend/Órarend.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; +using System.Security; using System.Text; using System.Threading.Tasks; diff --git a/OrarendAndroidApp/ActivityBase.cs b/OrarendAndroidApp/ActivityBase.cs index 5b6e0ec..2940be2 100644 --- a/OrarendAndroidApp/ActivityBase.cs +++ b/OrarendAndroidApp/ActivityBase.cs @@ -2,6 +2,7 @@ using Android.App; using Android.OS; using Android.Preferences; +using System.Security; namespace OrarendAndroidApp { diff --git a/OrarendAndroidApp/EditActivity.cs b/OrarendAndroidApp/EditActivity.cs index 02c0eca..ad25958 100644 --- a/OrarendAndroidApp/EditActivity.cs +++ b/OrarendAndroidApp/EditActivity.cs @@ -12,6 +12,7 @@ using Android.Widget; using Orarend; using Android.Graphics; using Android.Preferences; +using System.Security; namespace OrarendAndroidApp { diff --git a/OrarendAndroidApp/MainActivity.cs b/OrarendAndroidApp/MainActivity.cs index 292c122..5212da8 100644 --- a/OrarendAndroidApp/MainActivity.cs +++ b/OrarendAndroidApp/MainActivity.cs @@ -15,6 +15,7 @@ using System.IO; using System.Net; using Android.Preferences; using Orarend.Events; +using System.Security; namespace OrarendAndroidApp { @@ -26,7 +27,7 @@ namespace OrarendAndroidApp private const int EDIT_ADD_ACT_REQUEST = 1; private const int SETTINGS_ACT_REQUEST = 2; public const string DATA_FILENAME = "data.json"; - + protected override void OnCreate(Bundle bundle) { AndroidEnvironment.UnhandledExceptionRaiser += AndroidEnvironment_UnhandledExceptionRaiser; @@ -82,6 +83,7 @@ namespace OrarendAndroidApp órarendfrissítés(); } + [SecuritySafeCritical] private void addCell(string text, Color color, TableRow tr1, (int, int)? tag = null) { TextView textview = new TextView(this); @@ -95,6 +97,7 @@ namespace OrarendAndroidApp tr1.AddView(textview); } + [SecuritySafeCritical] private class JavaTuple : Java.Lang.Object { public (T1, T2) obj; @@ -156,6 +159,7 @@ namespace OrarendAndroidApp private string[] Napok = new string[6] { "Hétfő", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat" }; + [SecuritySafeCritical] private void órarendfrissítés() { var table = FindViewById(Resource.Id.tableLayout1); @@ -220,6 +224,7 @@ namespace OrarendAndroidApp /// /// Kiválasztja az adott órát /// + [SecuritySafeCritical] private void ÓraClick(object sender, EventArgs e) { var tv = (TextView)sender; @@ -364,13 +369,16 @@ namespace OrarendAndroidApp { if (ex is WebException wex) { - if (internethiba || wex.Status != WebExceptionStatus.NameResolutionFailure) - Hiba("Nem sikerült csatlakozni az E-naplóhoz.\n" + wex.Message); - else if (wex.Status == WebExceptionStatus.ConnectFailure) + if (internethiba && 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 if (internethiba || wex.Status != WebExceptionStatus.NameResolutionFailure) + Hiba("Nem sikerült csatlakozni az E-naplóhoz.\n" + wex.Message); } else if (ex is InvalidOperationException oex && oex.Data.Contains("OERROR") && (string)oex.Data["OERROR"] == "CLS_NOT_FOUND") + { ÓrarendFrissítés(true); + Toast.MakeText(this, oex.Message, ToastLength.Short).Show(); + } else Hiba(ex.ToString()); ret = false; @@ -384,14 +392,10 @@ namespace OrarendAndroidApp { var kezdveg = FindViewById(Resource.Id.kezdvegTV); var kovora = FindViewById(Resource.Id.kovoraTV); - if (e.KövetkezőÓra == null) - kovora.Visibility = ViewStates.Invisible; - else - kovora.Text = e.KövetkezőÓra; - if (e.HátralévőIdő == null) - kezdveg.Visibility = ViewStates.Invisible; - else - kezdveg.Text = e.HátralévőIdő; + kovora.Visibility = e.KövetkezőÓra == null ? ViewStates.Invisible : ViewStates.Visible; + kovora.Text = e.KövetkezőÓra ?? ""; + kezdveg.Visibility = e.HátralévőIdő == null ? ViewStates.Invisible : ViewStates.Visible; + kezdveg.Text = e.HátralévőIdő ?? ""; }); } diff --git a/OrarendAndroidApp/SettingsActivity.cs b/OrarendAndroidApp/SettingsActivity.cs index 458b6cb..bed4d2f 100644 --- a/OrarendAndroidApp/SettingsActivity.cs +++ b/OrarendAndroidApp/SettingsActivity.cs @@ -11,6 +11,7 @@ using Android.Views; using Android.Widget; using Android.Preferences; using Orarend; +using System.Security; namespace OrarendAndroidApp {