2017-01-31 21:22:05 +00:00
using System ;
using Android.App ;
using Android.Content ;
using Android.Runtime ;
using Android.Views ;
using Android.Widget ;
using Android.OS ;
using Orarend ;
2017-02-08 21:21:11 +00:00
using System.Linq ;
using Android.Graphics ;
2017-02-13 21:30:38 +00:00
using System.Collections.Generic ;
using System.Threading.Tasks ;
2017-02-14 22:37:20 +00:00
using System.Threading ;
2017-02-16 23:34:01 +00:00
using System.IO ;
2017-02-20 00:14:57 +00:00
using System.Net ;
2017-03-11 21:25:37 +00:00
using Android.Preferences ;
2017-03-24 22:26:16 +00:00
using Orarend.Events ;
2017-09-24 19:45:05 +00:00
using System.Security ;
2017-01-31 21:22:05 +00:00
namespace OrarendAndroidApp
{
2017-03-17 20:27:45 +00:00
[Activity(Label = "Órarend", MainLauncher = true, Theme = "@android:style/Theme.DeviceDefault")]
2017-03-11 21:25:37 +00:00
public class MainActivity : ActivityBase
2017-01-31 21:22:05 +00:00
{
2017-02-10 18:09:29 +00:00
private Handler handler ;
2017-02-20 00:14:57 +00:00
private const int EDIT_ADD_ACT_REQUEST = 1 ;
2017-03-11 21:25:37 +00:00
private const int SETTINGS_ACT_REQUEST = 2 ;
2017-03-11 15:11:08 +00:00
public const string DATA_FILENAME = "data.json" ;
2017-09-24 19:45:05 +00:00
2017-01-31 21:22:05 +00:00
protected override void OnCreate ( Bundle bundle )
{
2017-03-11 21:25:37 +00:00
AndroidEnvironment . UnhandledExceptionRaiser + = AndroidEnvironment_UnhandledExceptionRaiser ;
2017-01-31 21:22:05 +00:00
base . OnCreate ( bundle ) ;
2017-02-08 21:21:11 +00:00
SetContentView ( Resource . Layout . MainLayout ) ;
2017-02-17 14:33:49 +00:00
ActionBar . SetDisplayShowTitleEnabled ( false ) ;
2017-02-18 15:17:39 +00:00
handler = new Handler ( ) ;
2017-02-16 23:34:01 +00:00
string [ ] list = FileList ( ) ;
2017-03-26 00:15:28 +00:00
if ( list . Contains ( DATA_FILENAME )
? API . Betöltés ( OpenFileInput ( DATA_FILENAME ) , e = > Hiba ( "Hiba az adatok betöltése során!\n" + e ) ) : API . Betöltés ( ) )
{
2017-03-23 08:54:40 +00:00
API . CsengőTimerEvent + = CsengőTimer ;
2017-09-05 14:52:19 +00:00
API . Frissítéskor + = ( _ , args ) = > HelyettesítésFrissítés ( false , args ) ;
2017-03-26 00:15:28 +00:00
}
2017-02-13 12:27:20 +00:00
}
2017-03-11 21:25:37 +00:00
private void AndroidEnvironment_UnhandledExceptionRaiser ( object sender , RaiseThrowableEventArgs e )
{
2017-03-26 00:15:28 +00:00
if ( ! e . Handled ) Hiba ( "Kezeletlen hiba!\n" + e . Exception ) ;
2017-03-11 21:25:37 +00:00
e . Handled = true ;
}
private Spinner list ;
2017-02-19 02:04:31 +00:00
private void ó rarendlistafrissítés ( )
2017-02-18 15:17:39 +00:00
{
handler . Post ( ( ) = >
{
2017-02-20 22:45:44 +00:00
int selected = list . SelectedItemPosition ;
int count = list . Count ;
2017-02-20 00:14:57 +00:00
ArrayAdapter adapter ;
if ( list . Adapter ! = null )
{
adapter = ( ArrayAdapter ) list . Adapter ;
adapter . Clear ( ) ;
adapter . AddAll ( API . Ó rarendek ) ;
}
else
2017-02-20 22:45:44 +00:00
{
2017-02-20 00:14:57 +00:00
adapter = new ArrayAdapter ( this , Resource . Layout . simple_list_item_1 , API . Ó rarendek ) ;
2017-02-20 22:45:44 +00:00
list . ItemSelected + = Ó rarendClick ;
}
2017-02-19 02:04:31 +00:00
list . Adapter = adapter ;
2017-02-20 00:14:57 +00:00
adapter . NotifyDataSetChanged ( ) ;
2017-02-20 22:45:44 +00:00
if ( selected > = list . Count | | list . Count > count ) //TÖrlés vagy hozzáadás után
selected = list . Count - 1 ;
list . SetSelection ( selected ) ;
2017-02-18 15:17:39 +00:00
} ) ;
}
private void Ó rarendClick ( object sender , AdapterView . ItemSelectedEventArgs e )
{
2017-03-28 20:17:57 +00:00
API . Ó rarendKiválasztás ( e . Position ) ;
2017-02-19 02:04:31 +00:00
ó rarendfrissítés ( ) ;
2017-02-18 15:17:39 +00:00
}
2017-09-24 19:45:05 +00:00
[SecuritySafeCritical]
2017-03-26 00:15:28 +00:00
private void addCell ( string text , Color color , TableRow tr1 , ( int , int ) ? tag = null )
2017-02-17 14:33:49 +00:00
{
TextView textview = new TextView ( this ) ;
textview . SetText ( text , TextView . BufferType . Normal ) ;
textview . SetTextColor ( color ) ;
textview . SetPadding ( 10 , 10 , 10 , 10 ) ;
2017-03-11 21:25:37 +00:00
textview . SetBackgroundResource ( DarkTheme ? Resource . Drawable . cell_shape_dark : Resource . Drawable . cell_shape_light ) ;
2017-03-26 00:15:28 +00:00
textview . Tag = tag . HasValue ? new JavaTuple < int , int > ( tag . Value ) : null ;
2017-02-26 01:11:18 +00:00
textview . Clickable = true ;
textview . Click + = Ó raClick ;
2017-02-17 14:33:49 +00:00
tr1 . AddView ( textview ) ;
}
2017-09-24 19:45:05 +00:00
[SecuritySafeCritical]
2017-03-26 00:15:28 +00:00
private class JavaTuple < T1 , T2 > : Java . Lang . Object
{
public ( T1 , T2 ) obj ;
public JavaTuple ( ( T1 , T2 ) obj ) = > this . obj = obj ;
public void Deconstruct ( out T1 first , out T2 second ) = > ( first , second ) = obj ;
}
2017-09-05 14:52:19 +00:00
private void HelyettesítésFrissítés ( bool internethiba = true , API . FrissítésEventArgs args = null )
2017-02-13 12:27:20 +00:00
{
2017-02-17 22:45:47 +00:00
var bar = FindViewById < ProgressBar > ( Resource . Id . progressBar1 ) ;
2017-03-11 21:25:37 +00:00
//var menu = FindViewById<ActionMenuView>(Resource.Id.actionMenuView1);
2017-03-26 00:15:28 +00:00
Action loadstart = ( ) = > bar . Visibility = ViewStates . Visible ;
2017-09-07 21:07:18 +00:00
if ( internethiba )
handler . Post ( loadstart ) ;
else
handler . PostDelayed ( loadstart , 500 ) ;
2017-03-11 15:11:08 +00:00
API . HelyettesítésFrissítés ( ( ) = > OpenFileOutput ( DATA_FILENAME , FileCreationMode . Private ) ) . ContinueWith ( t = >
2017-02-17 22:45:47 +00:00
{
2017-02-28 19:37:15 +00:00
handler . RemoveCallbacks ( loadstart ) ;
2017-02-17 22:45:47 +00:00
handler . Post ( ( ) = >
{
bar . Visibility = ViewStates . Gone ;
2017-09-05 14:52:19 +00:00
if ( TaskHibaNemVolt ( t , internethiba ) & & t . Result )
2017-02-28 19:37:15 +00:00
{
ó rarendfrissítés ( ) ;
2017-09-05 14:52:19 +00:00
Toast . MakeText ( this , "Helyettesítések frissítve" , ToastLength . Short ) . Show ( ) ;
if ( args ! = null ) args . Siker = true ;
2017-02-28 19:37:15 +00:00
}
2017-09-05 14:52:19 +00:00
else if ( ! internethiba & & args ! = null ) args . Siker = true ;
2017-02-17 22:45:47 +00:00
} ) ;
} ) ;
2017-02-17 14:33:49 +00:00
}
2017-09-07 21:07:18 +00:00
private void Ó rarendFrissítés ( bool auto , Ó rarend ó r = null )
2017-02-28 19:37:15 +00:00
{
2017-02-20 22:45:44 +00:00
var bar = FindViewById < ProgressBar > ( Resource . Id . progressBar1 ) ;
2017-03-26 00:15:28 +00:00
Action loadstart = ( ) = > bar . Visibility = ViewStates . Visible ;
2017-09-07 21:07:18 +00:00
if ( auto )
handler . PostDelayed ( loadstart , 500 ) ;
else
handler . Post ( loadstart ) ;
2017-03-11 15:11:08 +00:00
API . Frissítés ( ( ) = > OpenFileOutput ( DATA_FILENAME , FileCreationMode . Private ) , ó r ) . ContinueWith ( t = >
2017-03-01 18:03:26 +00:00
{
handler . RemoveCallbacks ( loadstart ) ;
handler . Post ( ( ) = >
{
bar . Visibility = ViewStates . Gone ;
ó rarendlistafrissítés ( ) ;
HelyettesítésFrissítés ( ) ;
2017-09-05 14:52:19 +00:00
if ( TaskHibaNemVolt ( t ) )
2017-03-01 18:03:26 +00:00
{
2017-03-28 20:17:57 +00:00
if ( ó r = = null | | ó r = = API . Ó rarend )
2017-03-01 18:03:26 +00:00
ó rarendfrissítés ( ) ;
Toast . MakeText ( this , ( API . Ó rarendek . Count > 0 ? "Órarend" + ( ó r = = null ? "ek" : "" ) + " és o" : "O" ) + "sztálylista frissítve" , ToastLength . Short ) . Show ( ) ;
}
} ) ;
} ) ;
2017-01-31 21:22:05 +00:00
}
2017-02-13 12:27:20 +00:00
2017-02-26 01:11:18 +00:00
private string [ ] Napok = new string [ 6 ] { "Hétfő" , "Kedd" , "Szerda" , "Csütörtök" , "Péntek" , "Szombat" } ;
2017-09-24 19:45:05 +00:00
[SecuritySafeCritical]
2017-02-26 01:11:18 +00:00
private void ó rarendfrissítés ( )
2017-02-18 23:45:06 +00:00
{
var table = FindViewById < TableLayout > ( Resource . Id . tableLayout1 ) ;
2017-02-26 01:11:18 +00:00
deselect ( ) ;
2017-02-28 19:37:15 +00:00
if ( table . ChildCount > 0 )
table . RemoveViews ( 0 , table . ChildCount ) ;
2017-03-28 20:17:57 +00:00
if ( API . Ó rarend = = null )
2017-02-20 22:45:44 +00:00
return ;
2017-02-18 23:45:06 +00:00
TableRow tr = new TableRow ( this ) ;
2017-03-11 21:25:37 +00:00
addCell ( API . AHét ? "A" : "B" , DarkTheme ? Color . White : Color . Black , tr ) ;
2017-02-26 01:11:18 +00:00
for ( int i = 0 ; i < Napok . Length ; i + + )
2017-03-11 21:25:37 +00:00
addCell ( Napok [ i ] , DarkTheme ? Color . White : Color . Black , tr ) ;
2017-02-18 23:45:06 +00:00
table . AddView ( tr , new ViewGroup . LayoutParams ( ViewGroup . LayoutParams . WrapContent , ViewGroup . LayoutParams . WrapContent ) ) ;
2017-03-28 20:17:57 +00:00
byte rowadds = 0 ;
2017-02-18 23:45:06 +00:00
for ( int j = 0 ; j < 16 ; j + + )
{
tr = new TableRow ( this ) ;
bool notnull = false ;
for ( int i = 0 ; i < 6 ; i + + )
{ //Kihagyja az üres sorokat
2017-03-28 20:17:57 +00:00
if ( API . Ó rarend . Ó rák [ i ] [ j ] ! = null ) //TODO: Helyettesítéseket is figyelje
2017-02-18 23:45:06 +00:00
{
notnull = true ;
break ;
}
}
if ( notnull )
{
2017-03-26 00:15:28 +00:00
for ( int x = 0 ; x < rowadds ; x + + )
{
var tr1 = new TableRow ( this ) ;
2017-03-28 20:17:57 +00:00
addCell ( ( j + x ) . ToString ( ) , DarkTheme ? Color . White : Color . Black , tr1 ) ;
2017-03-26 00:15:28 +00:00
for ( int i = 0 ; i < 6 ; i + + )
addCell ( "" , Color . Black , tr1 ) ;
2017-03-28 20:17:57 +00:00
table . AddView ( tr1 , new ViewGroup . LayoutParams ( ViewGroup . LayoutParams . WrapContent , ViewGroup . LayoutParams . WrapContent ) ) ;
2017-03-26 00:15:28 +00:00
}
rowadds = 0 ;
2017-03-11 21:25:37 +00:00
addCell ( ( j + 1 ) . ToString ( ) , DarkTheme ? Color . White : Color . Black , tr ) ;
2017-02-18 23:45:06 +00:00
for ( int i = 0 ; i < 6 ; i + + )
2017-02-26 01:11:18 +00:00
{
2017-03-28 20:17:57 +00:00
var ( innen , ide ) = API . HelyettesítésInnenIde ( API . Ó 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" : API . Ó rarend . Ó rák [ i ] [ j ] ? . EgyediNév ? ? "" , innen = = null ? ( DarkTheme ? Color . WhiteSmoke : Color . Black ) : Color . Red , tr , ( i , j ) ) ;
2017-02-26 01:11:18 +00:00
}
2017-02-18 23:45:06 +00:00
table . AddView ( tr , new ViewGroup . LayoutParams ( ViewGroup . LayoutParams . WrapContent , ViewGroup . LayoutParams . WrapContent ) ) ;
}
2017-03-26 00:15:28 +00:00
else rowadds + + ;
2017-02-18 23:45:06 +00:00
}
2017-02-24 22:59:45 +00:00
handler . Post ( ( ) = > MaiNaphozGörgetés ( ) ) ;
2017-02-18 23:45:06 +00:00
}
2017-02-26 01:11:18 +00:00
/// <summary>
/// A cellát nem frissíti, csak a szöveget tünteti el
/// </summary>
private void deselect ( )
{
FindViewById < TextView > ( Resource . Id . kivoraTV ) . Visibility = ViewStates . Gone ;
2017-02-28 19:37:15 +00:00
FindViewById < TextView > ( Resource . Id . helyTV ) . Visibility = ViewStates . Gone ;
2017-02-26 01:11:18 +00:00
selected = null ;
}
2017-02-14 22:37:20 +00:00
private TextView selected ;
/// <summary>
/// Kiválasztja az adott órát
/// </summary>
2017-09-24 19:45:05 +00:00
[SecuritySafeCritical]
2017-02-14 22:37:20 +00:00
private void Ó raClick ( object sender , EventArgs e )
{
var tv = ( TextView ) sender ;
if ( selected ! = null & & selected ! = sender )
2017-03-11 21:25:37 +00:00
selected . SetBackgroundResource ( DarkTheme ? Resource . Drawable . cell_shape_dark : Resource . Drawable . cell_shape_light ) ;
2017-02-26 01:11:18 +00:00
Ó ra ó ra ;
Helyettesítés helyettesítésInnen = null ;
Helyettesítés helyettesítésIde = null ;
2017-03-26 00:15:28 +00:00
var ij = ( JavaTuple < int , int > ) tv . Tag ;
int i , j ;
2017-02-26 01:11:18 +00:00
if ( ij ! = null )
2017-03-26 00:15:28 +00:00
{
( i , j ) = ij ;
2017-03-28 20:17:57 +00:00
( helyettesítésInnen , helyettesítésIde ) = API . HelyettesítésInnenIde ( API . Ó rarend , i , j ) ;
if ( ( ó ra = API . Ó rarend . Ó rák [ i ] [ j ] ) = = null & & helyettesítésIde ? . Ú jÓra = = null )
2017-03-26 00:15:28 +00:00
{
deselect ( ) ;
return ;
}
}
else
2017-03-11 15:11:08 +00:00
{
2017-02-26 01:11:18 +00:00
deselect ( ) ;
return ;
}
2017-03-11 21:25:37 +00:00
tv . SetBackgroundResource ( DarkTheme ? Resource . Drawable . cell_shape_selected_dark : Resource . Drawable . cell_shape_selected_light ) ;
2017-02-14 22:37:20 +00:00
selected = tv ;
2017-02-20 00:14:57 +00:00
var kivora = FindViewById < TextView > ( Resource . Id . kivoraTV ) ;
2017-03-11 15:11:08 +00:00
if ( ó ra = = null )
kivora . Visibility = ViewStates . Gone ;
else
{
2017-03-26 00:15:28 +00:00
kivora . Text = Napok [ i ] + " " + ( j + 1 ) + ". óra"
2017-03-11 15:11:08 +00:00
+ "\nNév: " + ó ra . TeljesNév
+ "\nTerem: " + ó ra . Terem
+ "\nTanár: " + ó ra . Tanár . Név
2017-03-28 20:17:57 +00:00
+ "\nIdőtartam: " + API . Ó rarend . Ó rakezdetek [ j ] . ToString ( "hh\\:mm" ) + "-" + API . Ó rarend . Ó rakezdetek [ j ] . Add ( new TimeSpan ( 0 , 45 , 0 ) ) . ToString ( "hh\\:mm" )
2017-03-11 15:11:08 +00:00
+ "\nCsoport: " + ó ra . Csoportok . Aggregate ( ( a , b ) = > a + ", " + b ) ;
kivora . Visibility = ViewStates . Visible ;
}
2017-02-28 19:37:15 +00:00
var hely = FindViewById < TextView > ( Resource . Id . helyTV ) ;
hely . Text = ( helyettesítésInnen = = null ? ""
2017-02-26 01:11:18 +00:00
: helyettesítésInnen . EredetiNap ! = helyettesítésInnen . Ú jNap | | helyettesítésInnen . EredetiSorszám ! = helyettesítésInnen . Ú jSorszám
2017-02-28 19:37:15 +00:00
? "Áthelyezve: innen --> " + Napok [ ( int ) helyettesítésInnen . Ú jNap - 1 ] + " " + helyettesítésInnen . Ú jSorszám + ". óra"
2017-02-26 01:11:18 +00:00
: helyettesítésInnen . Ú jÓra ! = null & & helyettesítésInnen . Ú jÓra ! = ó ra
2017-02-28 19:37:15 +00:00
? "Helyettesítés:"
2017-02-26 01:11:18 +00:00
+ ( helyettesítésInnen . Ú jÓra . EgyediNév ! = ó ra . EgyediNév ? "\nÓra: " + helyettesítésInnen . Ú jÓra . EgyediNév : "" )
+ ( helyettesítésInnen . Ú jÓra . Terem ! = ó ra . Terem ? "\nTerem: " + helyettesítésInnen . Ú jÓra . Terem : "" )
+ ( helyettesítésInnen . Ú jÓra . Tanár . Név ! = ó ra . Tanár . Név ? "\nTanár: " + helyettesítésInnen . Ú jÓra . Tanár . Név : "" )
+ ( helyettesítésInnen . Ú jÓra . Csoportok [ 0 ] ! = ó ra . Csoportok [ 0 ] ? "\nCsoport: " + helyettesítésInnen . Ú jÓra . Csoportok . Aggregate ( ( a , b ) = > a + ", " + b ) : "" )
2017-02-28 19:37:15 +00:00
: "Az óra elmarad" )
2017-02-26 01:11:18 +00:00
+ ( helyettesítésIde = = null ? ""
: helyettesítésIde . EredetiNap ! = helyettesítésIde . Ú jNap | | helyettesítésIde . EredetiSorszám ! = helyettesítésIde . Ú jSorszám
2017-03-11 15:11:08 +00:00
? "Áthelyezve: " + Napok [ ( int ) helyettesítésIde . EredetiNap - 1 ] + " " + helyettesítésIde . EredetiSorszám + ". óra --> ide"
+ ( helyettesítésIde . Ú jÓra . EgyediNév ! = ó ra ? . EgyediNév ? "\nÓra: " + helyettesítésIde . Ú jÓra . EgyediNév : "" )
+ ( helyettesítésIde . Ú jÓra . Terem ! = ó ra ? . Terem ? "\nTerem: " + helyettesítésIde . Ú jÓra . Terem : "" )
2017-03-28 20:17:57 +00:00
+ ( ( ó ra ? . Tanár . Név ! = ( helyettesítésIde . Ú jÓra . Tanár . Név = = "" ? API . Ó rarend . Ó rák [ ( int ) helyettesítésIde . EredetiNap - 1 ] [ helyettesítésIde . EredetiSorszám - 1 ] . Tanár . Név : helyettesítésIde . Ú jÓra . Tanár . Név ) ) ? "\nTanár: " + ( ó ra ? . Tanár . Név = = "" ? API . Ó rarend . Ó rák [ ( int ) helyettesítésIde . EredetiNap - 1 ] [ helyettesítésIde . EredetiSorszám - 1 ] . Tanár . Név : helyettesítésIde . Ú jÓra . Tanár . Név ) : "" )
2017-03-11 15:11:08 +00:00
+ ( helyettesítésIde . Ú jÓra . Csoportok [ 0 ] ! = ó ra ? . Csoportok [ 0 ] ? "\nCsoport: " + helyettesítésIde . Ú jÓra . Csoportok . Aggregate ( ( a , b ) = > a + ", " + b ) : "" ) //ˇˇ De ha változott, akkor nem
2017-02-26 01:11:18 +00:00
: "" ) //Ha a pozicíó nem változott, a fentebbi rész már kiírta az adatait
;
2017-02-28 19:37:15 +00:00
hely . Visibility = ViewStates . Visible ;
2017-02-14 22:37:20 +00:00
}
2017-02-13 12:27:20 +00:00
public override bool OnCreateOptionsMenu ( IMenu menu )
{
MenuInflater . Inflate ( Resource . Menu . main_menu_light , menu ) ;
2017-03-11 21:25:37 +00:00
ActionBar . SetCustomView ( list = new Spinner ( this , SpinnerMode . Dropdown ) , new ActionBar . LayoutParams ( ActionBar . LayoutParams . MatchParent , ActionBar . LayoutParams . MatchParent , GravityFlags . Left ) ) ;
ActionBar . SetDisplayShowCustomEnabled ( true ) ;
if ( DarkTheme )
{
menu . FindItem ( Resource . Id . menu_add ) . SetIcon ( Resource . Drawable . ic_add_white_24dp ) ;
menu . FindItem ( Resource . Id . menu_edit ) . SetIcon ( Resource . Drawable . ic_create_white_24dp ) ;
menu . FindItem ( Resource . Id . menu_refresh ) . SetIcon ( Resource . Drawable . ic_autorenew_white_24dp ) ;
menu . FindItem ( Resource . Id . menu_preferences ) . SetIcon ( Resource . Drawable . ic_settings_white_24dp ) ;
}
2017-02-18 15:17:39 +00:00
if ( API . Osztályok = = null | | API . Osztályok . Length = = 0 )
2017-09-07 21:07:18 +00:00
Ó rarendFrissítés ( true ) ;
2017-02-18 15:17:39 +00:00
else
2017-02-19 02:04:31 +00:00
ó rarendlistafrissítés ( ) ;
2017-02-13 12:27:20 +00:00
return base . OnCreateOptionsMenu ( menu ) ;
}
public override bool OnOptionsItemSelected ( IMenuItem item )
{
switch ( item . ItemId )
{
case Resource . Id . menu_refresh :
{
2017-02-17 22:45:47 +00:00
HelyettesítésFrissítés ( ) ;
2017-02-13 12:27:20 +00:00
break ;
}
2017-02-18 15:17:39 +00:00
case Resource . Id . menu_add :
{
var intent = new Intent ( this , typeof ( EditActivity ) ) ;
2017-02-19 02:04:31 +00:00
intent . PutExtra ( "add" , true ) ;
2017-02-20 00:14:57 +00:00
StartActivityForResult ( intent , EDIT_ADD_ACT_REQUEST ) ;
2017-02-18 15:17:39 +00:00
break ;
}
case Resource . Id . menu_edit :
{
2017-03-28 20:17:57 +00:00
if ( API . Ó rarend = = null )
2017-02-20 22:45:44 +00:00
{
Toast . MakeText ( this , "Nincs órarend kiválasztva" , ToastLength . Short ) . Show ( ) ;
break ;
}
2017-02-18 15:17:39 +00:00
var intent = new Intent ( this , typeof ( EditActivity ) ) ;
2017-02-19 02:04:31 +00:00
intent . PutExtra ( "add" , false ) ;
2017-03-28 20:17:57 +00:00
intent . PutExtra ( "index" , API . Ó rarendek . IndexOf ( API . Ó rarend ) ) ;
2017-02-20 00:14:57 +00:00
StartActivityForResult ( intent , EDIT_ADD_ACT_REQUEST ) ;
2017-02-18 15:17:39 +00:00
break ;
}
2017-03-11 21:25:37 +00:00
case Resource . Id . menu_preferences :
{
var intent = new Intent ( this , typeof ( SettingsActivity ) ) ;
StartActivityForResult ( intent , SETTINGS_ACT_REQUEST ) ;
break ;
}
2017-02-18 15:17:39 +00:00
case Resource . Id . menu_fullrefresh :
{
2017-09-07 21:07:18 +00:00
Ó rarendFrissítés ( false ) ;
2017-02-13 12:27:20 +00:00
break ;
}
}
return base . OnOptionsItemSelected ( item ) ;
}
2017-02-13 21:30:38 +00:00
2017-03-25 22:17:30 +00:00
private void Hiba ( string msg ) = > Hiba ( this , msg ) ;
2017-02-20 22:45:44 +00:00
2017-03-25 22:17:30 +00:00
public static void Hiba ( Context c , string msg ) = >
2017-02-20 22:45:44 +00:00
new AlertDialog . Builder ( c ) . SetMessage ( msg ) . SetNeutralButton ( "OK" , ( s , e ) = > { ( ( AlertDialog ) s ) . Dismiss ( ) ; ( ( AlertDialog ) s ) . Dispose ( ) ; } ) . SetTitle ( "Hiba" ) . Show ( ) ;
2017-02-13 21:30:38 +00:00
2017-02-17 14:33:49 +00:00
/// <summary>
/// Az összes hibát kiírja, ami a <see cref="Task"/> futása közben keletkezett
/// </summary>
/// <param name="t"></param>
2017-02-28 19:37:15 +00:00
/// <param name="internethiba">Ha igaz, kiírja a WebException-öket is</param>
2017-02-17 14:33:49 +00:00
/// <returns>Igaz, ha nem volt hiba</returns>
2017-09-05 14:52:19 +00:00
private bool TaskHibaNemVolt ( Task t , bool internethiba = true )
2017-02-13 21:30:38 +00:00
{
2017-02-17 14:33:49 +00:00
bool ret = true ;
2017-02-28 19:37:15 +00:00
foreach ( var ex in ( IEnumerable < Exception > ) t . Exception ? . InnerExceptions ? ? new Exception [ 0 ] )
2017-02-17 14:33:49 +00:00
{
2017-03-25 22:17:30 +00:00
if ( ex is WebException wex )
2017-02-28 19:37:15 +00:00
{
2017-09-24 19:45:05 +00:00
if ( internethiba & & wex . Status = = WebExceptionStatus . ConnectFailure )
2017-03-25 22:17:30 +00:00
Hiba ( "Nem sikerült csatlakozni az E-naplóhoz.\nHa van internet, próbáld újraindítani az alkalmazást." ) ;
2017-09-24 19:45:05 +00:00
else if ( internethiba | | wex . Status ! = WebExceptionStatus . NameResolutionFailure )
Hiba ( "Nem sikerült csatlakozni az E-naplóhoz.\n" + wex . Message ) ;
2017-02-28 19:37:15 +00:00
}
2017-09-05 14:52:19 +00:00
else if ( ex is InvalidOperationException oex & & oex . Data . Contains ( "OERROR" ) & & ( string ) oex . Data [ "OERROR" ] = = "CLS_NOT_FOUND" )
2017-09-24 19:45:05 +00:00
{
2017-09-07 21:07:18 +00:00
Ó rarendFrissítés ( true ) ;
2017-09-24 19:45:05 +00:00
Toast . MakeText ( this , oex . Message , ToastLength . Short ) . Show ( ) ;
}
2017-02-20 22:45:44 +00:00
else
Hiba ( ex . ToString ( ) ) ;
2017-02-17 14:33:49 +00:00
ret = false ;
}
return ret ;
2017-02-13 21:30:38 +00:00
}
2017-02-14 22:37:20 +00:00
2017-03-23 08:54:40 +00:00
private void CsengőTimer ( object sender , TimerEventArgs e )
2017-02-14 22:37:20 +00:00
{
handler . Post ( ( ) = >
{
2017-02-18 15:17:39 +00:00
var kezdveg = FindViewById < TextView > ( Resource . Id . kezdvegTV ) ;
2017-02-14 22:37:20 +00:00
var kovora = FindViewById < TextView > ( Resource . Id . kovoraTV ) ;
2017-09-24 19:45:05 +00:00
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ő ? ? "" ;
2017-02-20 00:14:57 +00:00
} ) ;
2017-02-14 22:37:20 +00:00
}
2017-02-19 02:04:31 +00:00
2017-02-20 00:14:57 +00:00
protected override void OnActivityResult ( int requestCode , [ GeneratedEnum ] Result resultCode , Intent data )
2017-02-19 02:04:31 +00:00
{
2017-02-20 00:14:57 +00:00
base . OnActivityResult ( requestCode , resultCode , data ) ;
if ( requestCode = = EDIT_ADD_ACT_REQUEST )
2017-02-19 02:04:31 +00:00
{
2017-03-11 21:25:37 +00:00
if ( resultCode = = Result . Canceled )
return ;
int index = data . Extras . GetBoolean ( "add" ) ? API . Ó rarendek . Count - 1 : data . Extras . GetInt ( "index" ) ;
2017-02-20 00:14:57 +00:00
if ( ! data . Extras . GetBoolean ( "deleted" ) )
2017-09-07 21:07:18 +00:00
Ó rarendFrissítés ( false , API . Ó rarendek [ index ] ) ;
2017-02-20 22:45:44 +00:00
else
{
2017-03-28 20:17:57 +00:00
API . Ó rarendKiválasztásTörlése ( ) ;
2017-02-20 22:45:44 +00:00
ó rarendfrissítés ( ) ;
}
2017-02-19 02:04:31 +00:00
ó rarendlistafrissítés ( ) ;
}
2017-03-11 21:25:37 +00:00
else if ( requestCode = = SETTINGS_ACT_REQUEST )
2017-09-07 21:07:18 +00:00
{
if ( data ? . Extras ? . GetBoolean ( "offsetchanged" ) ? ? false )
Ó rarendFrissítés ( false ) ;
2017-03-11 21:25:37 +00:00
Recreate ( ) ;
2017-09-07 21:07:18 +00:00
}
2017-02-19 02:04:31 +00:00
}
2017-03-11 22:11:44 +00:00
2017-02-24 22:59:45 +00:00
public override void OnWindowFocusChanged ( bool hasFocus )
{
base . OnWindowFocusChanged ( hasFocus ) ;
2017-03-26 00:15:28 +00:00
API . Fókusz = hasFocus ;
2017-02-24 22:59:45 +00:00
if ( ! hasFocus )
return ;
MaiNaphozGörgetés ( ) ;
}
private void MaiNaphozGörgetés ( )
{
var table = FindViewById < TableLayout > ( Resource . Id . tableLayout1 ) ;
2017-02-28 19:37:15 +00:00
if ( table . ChildCount = = 0 )
return ;
2017-03-26 00:15:28 +00:00
var cell = ( table . GetChildAt ( 0 ) as ViewGroup ) . GetChildAt ( ( int ) API . MaiNap ) ;
2017-02-28 19:37:15 +00:00
FindViewById < HorizontalScrollView > ( Resource . Id . horizontalView ) . SmoothScrollTo ( Math . Max ( cell . Left - ( FindViewById ( Resource . Id . container ) . Width - cell . Width ) / 2 , 0 ) , 0 ) ;
}
2017-01-31 21:22:05 +00:00
}
}