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-01-31 21:22:05 +00:00
namespace OrarendAndroidApp
{
2017-02-18 15:17:39 +00:00
[Activity(Label = "Órarend", MainLauncher = true, Theme = "@android:style/Theme.Holo.Light")]
2017-01-31 21:22:05 +00:00
public class MainActivity : Activity
{
2017-02-10 18:09:29 +00:00
private Handler handler ;
2017-02-13 12:27:20 +00:00
private Ó rarend ó rarend ;
2017-02-28 19:37:15 +00:00
private Timer timer ;
2017-02-20 00:14:57 +00:00
private const int EDIT_ADD_ACT_REQUEST = 1 ;
2017-02-24 22:59:45 +00:00
2017-01-31 21:22:05 +00:00
protected override void OnCreate ( Bundle bundle )
{
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 ) ;
ActionBar . CustomView = FindViewById < Spinner > ( Resource . Id . spinner ) ;
2017-02-18 15:17:39 +00:00
handler = new Handler ( ) ;
2017-02-16 23:34:01 +00:00
string [ ] list = FileList ( ) ;
if ( list . Contains ( "beallitasok" ) )
2017-02-28 19:37:15 +00:00
API . BeállításBetöltés ( OpenFileInput ( "beallitasok" ) , e = > Hiba ( "Hiba a beállítások betöltése során!\n" + e ) ) ;
2017-02-24 22:59:45 +00:00
if ( list . Contains ( "orarend" ) & & API . Ó rarendek . Count = = 0 )
2017-02-28 19:37:15 +00:00
API . Ó rarendBetöltés ( OpenFileInput ( "orarend" ) , e = > Hiba ( "Hiba az órarendek betöltése során!\n" + e ) ) ;
2017-02-24 22:59:45 +00:00
if ( list . Contains ( "osztaly" ) & & API . Osztályok = = null )
2017-02-28 19:37:15 +00:00
API . OsztályBetöltés ( OpenFileInput ( "osztaly" ) , e = > Hiba ( "Hiba az osztályok betöltése során!\n" + e ) ) ;
timer = new Timer ( CsengőTimer , null , new TimeSpan ( 0 , 0 , 1 ) , new TimeSpan ( 0 , 0 , 1 ) ) ;
2017-02-13 12:27:20 +00:00
}
2017-02-19 02:04:31 +00:00
private void ó rarendlistafrissítés ( )
2017-02-18 15:17:39 +00:00
{
handler . Post ( ( ) = >
{
var list = FindViewById < Spinner > ( Resource . Id . spinner ) ;
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 )
{
ó rarend = API . Ó rarendek [ e . Position ] ;
2017-02-19 02:04:31 +00:00
ó rarendfrissítés ( ) ;
2017-02-18 15:17:39 +00:00
}
2017-02-26 01:11:18 +00:00
private void addCell ( string text , Color color , TableRow tr1 , 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 ) ;
textview . SetBackgroundResource ( Resource . Drawable . cell_shape_light ) ;
textview . Tag = tag ;
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-02-28 19:37:15 +00:00
private void HelyettesítésFrissítés ( bool internethiba = true )
2017-02-13 12:27:20 +00:00
{
2017-02-17 22:45:47 +00:00
var bar = FindViewById < ProgressBar > ( Resource . Id . progressBar1 ) ;
2017-02-28 19:37:15 +00:00
var menu = FindViewById < ActionMenuView > ( Resource . Id . actionMenuView1 ) ;
Action loadstart = ( ) = >
{
bar . Visibility = ViewStates . Visible ;
menu . Enabled = false ;
} ;
handler . Post ( loadstart ) ;
2017-03-01 18:03:26 +00:00
API . HelyettesítésFrissítés ( ( ) = > OpenFileOutput ( "orarend" , 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-02-28 19:37:15 +00:00
menu . Enabled = true ;
if ( TaskHiba ( t , internethiba ) )
{
ó rarendfrissítés ( ) ;
Toast . MakeText ( this , "Helyettesítések frissítve" , ToastLength . Short ) . Show ( ) ;
}
2017-03-01 18:03:26 +00:00
utolsófrissítésplusz1óra = DateTime . Now + new TimeSpan ( 1 , 0 , 0 ) ; //Mindenképpen állítsa be, hogy ne írja folyamatosan a hibát
2017-02-17 22:45:47 +00:00
} ) ;
} ) ;
2017-02-17 14:33:49 +00:00
}
2017-02-17 22:45:47 +00:00
private void Ó rarendFrissítés ( Ó 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-02-28 19:37:15 +00:00
var menu = FindViewById < ActionMenuView > ( Resource . Id . actionMenuView1 ) ;
Action loadstart = ( ) = >
{
bar . Visibility = ViewStates . Visible ;
menu . Enabled = false ;
} ;
handler . Post ( loadstart ) ;
2017-03-01 18:03:26 +00:00
API . Frissítés ( ( ) = > OpenFileOutput ( "orarend" , FileCreationMode . Private ) , ( ) = > OpenFileOutput ( "osztaly" , FileCreationMode . Private ) , ó r ) . ContinueWith ( t = >
{
handler . RemoveCallbacks ( loadstart ) ;
handler . Post ( ( ) = >
{
bar . Visibility = ViewStates . Gone ;
ó rarendlistafrissítés ( ) ;
HelyettesítésFrissítés ( ) ;
if ( TaskHiba ( t ) )
{
if ( ó r = = null | | ó r = = ó rarend )
ó 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" } ;
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-02-20 22:45:44 +00:00
if ( ó rarend = = null )
return ;
2017-02-18 23:45:06 +00:00
TableRow tr = new TableRow ( this ) ;
2017-02-24 22:59:45 +00:00
addCell ( API . AHét ? "A" : "B" , Color . Black , tr ) ;
2017-02-26 01:11:18 +00:00
for ( int i = 0 ; i < Napok . Length ; i + + )
addCell ( Napok [ i ] , Color . Black , tr ) ;
2017-02-18 23:45:06 +00:00
table . AddView ( tr , new ViewGroup . LayoutParams ( ViewGroup . LayoutParams . WrapContent , ViewGroup . LayoutParams . WrapContent ) ) ;
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-02-24 22:59:45 +00:00
if ( ó rarend . Ó rák [ i ] [ j ] ! = null )
2017-02-18 23:45:06 +00:00
{
notnull = true ;
break ;
}
}
if ( notnull )
{
addCell ( ( j + 1 ) . ToString ( ) , Color . Black , tr ) ;
for ( int i = 0 ; i < 6 ; i + + )
2017-02-26 01:11:18 +00:00
{
2017-03-01 18:03:26 +00:00
var innenide = helyettesítésInnenIde ( i , j ) ;
var helyettesítés = innenide [ 0 ] ;
var helyettesítésIde = innenide [ 1 ] ;
2017-02-26 01:11:18 +00:00
//addCell(helyettesítés?.ÚjÓra?.EgyediNév ?? órarend.Órák[i][j]?.EgyediNév ?? "", helyettesítés == null ? Color.Black : Color.Red, tr, new int[2] { i, j });
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 ? Color . Black : Color . Red , tr , new int [ 2 ] { i , j } ) ;
}
2017-02-18 23:45:06 +00:00
table . AddView ( tr , new ViewGroup . LayoutParams ( ViewGroup . LayoutParams . WrapContent , ViewGroup . LayoutParams . WrapContent ) ) ;
}
}
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-03-01 18:03:26 +00:00
private Helyettesítés [ ] helyettesítésInnenIde ( 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
} ;
}
2017-02-14 22:37:20 +00:00
private TextView selected ;
/// <summary>
/// Kiválasztja az adott órát
/// </summary>
private void Ó raClick ( object sender , EventArgs e )
{
var tv = ( TextView ) sender ;
var ij = ( int [ ] ) tv . Tag ;
if ( selected ! = null & & selected ! = sender )
selected . SetBackgroundResource ( 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 ;
if ( ij ! = null )
{
2017-03-01 18:03:26 +00:00
var innenide = helyettesítésInnenIde ( ij [ 0 ] , ij [ 1 ] ) ;
helyettesítésInnen = innenide [ 0 ] ;
helyettesítésIde = innenide [ 1 ] ;
2017-02-26 01:11:18 +00:00
}
//if (ij == null || (óra = órarend.Órák[ij[0]][ij[1]] ?? ((helyettesítésIde = órarend.Helyettesítések.SingleOrDefault(h => (int)h.ÚjNap == ij[0] + 1 && h.ÚjSorszám == ij[1] + 1))?.ÚjÓra)) == null)
if ( ij = = null | | ( ó ra = ó rarend . Ó rák [ ij [ 0 ] ] [ ij [ 1 ] ] ? ? ( helyettesítésIde ? . Ú jÓra ) ) = = null )
2017-02-28 19:37:15 +00:00
{ //Ha az óra nincs beállítva, beállítja a helyettesítettre - TODO: Ne; rejtse el
2017-02-26 01:11:18 +00:00
deselect ( ) ;
return ;
}
2017-02-14 22:37:20 +00:00
tv . SetBackgroundResource ( Resource . Drawable . cell_shape_selected_light ) ;
selected = tv ;
2017-02-20 00:14:57 +00:00
var kivora = FindViewById < TextView > ( Resource . Id . kivoraTV ) ;
2017-02-26 01:11:18 +00:00
kivora . Text = Napok [ ij [ 0 ] ] + " " + ( ij [ 1 ] + 1 ) + ". óra"
+ "\nNév: " + ó ra . TeljesNév
+ "\nTerem: " + ó ra . Terem
+ "\nTanár: " + ó ra . Tanár . Név
+ "\nIdőtartam: " + ó rarend . Ó rakezdetek [ ij [ 1 ] ] . ToString ( "hh\\:mm" ) + "-" + ó rarend . Ó rakezdetek [ ij [ 1 ] ] . Add ( new TimeSpan ( 0 , 45 , 0 ) ) . ToString ( "hh\\:mm" )
2017-02-28 19:37:15 +00:00
+ "\nCsoport: " + ó ra . Csoportok . Aggregate ( ( a , b ) = > a + ", " + b ) ;
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-02-28 19:37:15 +00:00
? "Áthelyezve: " + Napok [ ( int ) helyettesítésInnen . EredetiNap - 1 ] + " " + helyettesítésIde . EredetiSorszám + ". óra --> ide"
2017-02-26 01:11:18 +00:00
+ ( 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-01 18:03:26 +00:00
+ ( ( ó ra . Tanár . Név ! = ( helyettesítésIde . Ú jÓra . Tanár . Név = = "" ? ó 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 = = "" ? ó 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-02-26 01:11:18 +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
: "" ) //Ha a pozicíó nem változott, a fentebbi rész már kiírta az adatait
;
2017-02-20 00:14:57 +00:00
kivora . Visibility = ViewStates . Visible ;
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-02-18 15:17:39 +00:00
if ( API . Osztályok = = null | | API . Osztályok . Length = = 0 )
Ó rarendFrissítés ( ) ;
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-02-20 22:45:44 +00:00
if ( ó rarend = = null )
{
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 ) ;
intent . PutExtra ( "index" , API . Ó rarendek . IndexOf ( ó 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-02-13 12:27:20 +00:00
case Resource . Id . menu_preferences : //TODO
break ;
2017-02-18 15:17:39 +00:00
case Resource . Id . menu_fullrefresh :
{
2017-02-17 22:45:47 +00:00
Ó rarendFrissítés ( ) ;
2017-02-13 12:27:20 +00:00
break ;
}
}
return base . OnOptionsItemSelected ( item ) ;
}
2017-02-13 21:30:38 +00:00
private void Hiba ( string msg )
{
2017-02-20 22:45:44 +00:00
Hiba ( this , 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 ( ) ;
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-02-28 19:37:15 +00:00
private bool TaskHiba ( 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-02-20 22:45:44 +00:00
if ( ex is WebException )
2017-02-28 19:37:15 +00:00
{
if ( internethiba )
Hiba ( "Nem sikerült csatlakozni az E-naplóhoz.\n" + ex . Message ) ;
}
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-01 18:03:26 +00:00
private bool nincstöbbóra = false ;
2017-02-14 22:37:20 +00:00
private void CsengőTimer ( object state )
{
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
if ( ó rarend = = null )
2017-02-18 15:17:39 +00:00
{
kezdveg . Text = "Nincs órarend kiválasztva" ;
2017-02-14 22:37:20 +00:00
return ;
2017-02-18 15:17:39 +00:00
}
var most = DateTime . Now - DateTime . Today ;
2017-03-01 18:03:26 +00:00
//var most = new TimeSpan(8, 10, 0);
2017-02-14 22:37:20 +00:00
bool talált = false ;
var kovora = FindViewById < TextView > ( Resource . Id . kovoraTV ) ;
2017-03-01 18:03:26 +00:00
nincstöbbóra = false ;
2017-02-20 00:14:57 +00:00
if ( ó rarend . Ó rakezdetek [ 0 ] = = TimeSpan . Zero )
{ //Még nincsenek beállítva a kezdetek
kezdveg . Text = "Betöltés" ;
kovora . Visibility = ViewStates . Invisible ;
return ;
}
2017-02-14 22:37:20 +00:00
for ( int i = 0 ; i < ó rarend . Ó rakezdetek . Length - 1 ; i + + )
{
var vége = ó rarend . Ó rakezdetek [ i ] . Add ( new TimeSpan ( 0 , 45 , 0 ) ) ;
2017-03-01 18:03:26 +00:00
bool becsengetés ;
2017-02-14 22:37:20 +00:00
if ( most > ó rarend . Ó rakezdetek [ i ] )
{
if ( most < vége )
{
kezdveg . Text = "Kicsengetés: " + ( vége - most ) . ToString ( "hh\\:mm\\:ss" ) ;
talált = true ;
2017-03-01 18:03:26 +00:00
becsengetés = false ;
2017-02-14 22:37:20 +00:00
}
else
continue ;
}
else
{
kezdveg . Text = "Becsengetés: " + ( ó rarend . Ó rakezdetek [ i ] - most ) . ToString ( "hh\\:mm\\:ss" ) ;
talált = true ;
kovora . Visibility = ViewStates . Invisible ;
2017-03-01 18:03:26 +00:00
becsengetés = true ;
2017-02-14 22:37:20 +00:00
}
int x = ( int ) DateTime . Today . DayOfWeek - 1 ;
2017-02-20 00:14:57 +00:00
Ó ra ó ra ;
2017-03-01 18:03:26 +00:00
var innenide = helyettesítésInnenIde ( x , i ) ;
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 )
2017-02-26 01:11:18 +00:00
{ //-1: Vasárnap
2017-03-01 18:03:26 +00:00
kovora . Text = ( becsengetés ? "Következő" : "Jelenlegi" ) + " óra: " + ó ra . EgyediNév + "\n" + ó ra . Terem + "\n" + ó ra . Tanár . Név + "\n" + ó ra . Csoportok . Aggregate ( ( a , b ) = > a + ", " + b ) ;
2017-02-14 22:37:20 +00:00
kovora . Visibility = ViewStates . Visible ;
2017-02-24 22:59:45 +00:00
kezdveg . Visibility = ViewStates . Visible ;
2017-03-01 18:03:26 +00:00
break ;
2017-02-14 22:37:20 +00:00
}
else
2017-02-24 22:59:45 +00:00
{
2017-02-14 22:37:20 +00:00
kovora . Visibility = ViewStates . Invisible ;
2017-02-24 22:59:45 +00:00
kezdveg . Visibility = ViewStates . Invisible ;
}
2017-02-14 22:37:20 +00:00
}
if ( ! talált )
{
2017-02-24 22:59:45 +00:00
kezdveg . Visibility = ViewStates . Invisible ;
2017-02-14 22:37:20 +00:00
kovora . Visibility = ViewStates . Invisible ;
2017-03-01 18:03:26 +00:00
nincstöbbóra = true ;
2017-02-14 22:37:20 +00:00
}
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 ( resultCode = = Result . Canceled )
return ;
2017-02-20 22:45:44 +00:00
int index = data . Extras . GetBoolean ( "add" ) ? API . Ó rarendek . Count - 1 : data . Extras . GetInt ( "index" ) ;
2017-02-20 00:14:57 +00:00
if ( requestCode = = EDIT_ADD_ACT_REQUEST )
2017-02-19 02:04:31 +00:00
{
2017-02-20 00:14:57 +00:00
if ( ! data . Extras . GetBoolean ( "deleted" ) )
2017-02-20 22:45:44 +00:00
Ó rarendFrissítés ( API . Ó rarendek [ index ] ) ;
else
{
ó rarend = null ;
ó rarendfrissítés ( ) ;
}
2017-02-19 02:04:31 +00:00
ó rarendlistafrissítés ( ) ;
}
}
2017-02-24 22:59:45 +00:00
public override void OnWindowFocusChanged ( bool hasFocus )
{
base . OnWindowFocusChanged ( hasFocus ) ;
if ( ! hasFocus )
2017-02-28 19:37:15 +00:00
{
timer . Change ( Timeout . Infinite , Timeout . Infinite ) ;
2017-02-24 22:59:45 +00:00
return ;
2017-02-28 19:37:15 +00:00
}
timer . Change ( new TimeSpan ( 0 , 0 , 0 ) , new TimeSpan ( 0 , 0 , 1 ) ) ;
frissítésHa1ÓraEltelt ( ) ;
2017-02-24 22:59:45 +00:00
MaiNaphozGörgetés ( ) ;
}
private void MaiNaphozGörgetés ( )
{
2017-03-01 18:03:26 +00:00
var x = DateTime . Today . DayOfWeek ;
if ( nincstöbbóra ) x + + ;
x = x = = DayOfWeek . Sunday ? DayOfWeek . Monday : x ;
2017-02-24 22:59:45 +00:00
var table = FindViewById < TableLayout > ( Resource . Id . tableLayout1 ) ;
2017-02-28 19:37:15 +00:00
if ( table . ChildCount = = 0 )
return ;
var cell = ( table . GetChildAt ( 0 ) as ViewGroup ) . GetChildAt ( ( int ) x ) ;
FindViewById < HorizontalScrollView > ( Resource . Id . horizontalView ) . SmoothScrollTo ( Math . Max ( cell . Left - ( FindViewById ( Resource . Id . container ) . Width - cell . Width ) / 2 , 0 ) , 0 ) ;
}
private DateTime utolsófrissítésplusz1óra = DateTime . MinValue ;
private void frissítésHa1ÓraEltelt ( )
{
if ( utolsófrissítésplusz1óra > DateTime . Now )
2017-02-24 22:59:45 +00:00
return ;
2017-02-28 19:37:15 +00:00
HelyettesítésFrissítés ( false ) ;
2017-02-24 22:59:45 +00:00
}
2017-01-31 21:22:05 +00:00
}
}