From 912a2deeafb3466419bf7513101c55a75ea54d38 Mon Sep 17 00:00:00 2001 From: allebonvi Date: Tue, 16 Jun 2026 18:51:42 +0200 Subject: [PATCH] Implement Overtime Guard workflow and localization --- .gitignore | 8 + AnalogClock.bas | 166 +- Localization.bas | 292 ++ Objects/AndroidManifest.xml | 5 +- .../bin/classes/b4a/example/analogclock.class | Bin 13574 -> 10314 bytes .../classes/b4a/example/localization.class | Bin 0 -> 11487 bytes Objects/bin/classes/b4a/example/main.class | Bin 18363 -> 44575 bytes .../b4a/example/starter$starter_BR.class | Bin 1082 -> 1048 bytes Objects/bin/classes/b4a/example/starter.class | Bin 6599 -> 5793 bytes Objects/dexed/b4a/example/analogclock.dex | Bin 12484 -> 9516 bytes Objects/dexed/b4a/example/localization.dex | Bin 0 -> 11232 bytes Objects/dexed/b4a/example/main.dex | Bin 16736 -> 41196 bytes .../dexed/b4a/example/starter$starter_BR.dex | Bin 1452 -> 1412 bytes Objects/dexed/b4a/example/starter.dex | Bin 6540 -> 5864 bytes .../bin/classes/b4a/example/analogclock.class | Bin 2544 -> 0 bytes .../b4a/example/analogclock_subs_0.class | Bin 23777 -> 0 bytes .../shell/bin/classes/b4a/example/main.class | Bin 4133 -> 0 bytes .../bin/classes/b4a/example/main_subs_0.class | Bin 15332 -> 0 bytes .../bin/classes/b4a/example/starter.class | Bin 2793 -> 0 bytes .../classes/b4a/example/starter_subs_0.class | Bin 4023 -> 0 bytes Objects/shell/bin/classes/subs.txt | 133 - .../shell/src/b4a/example/analogclock.java | 32 - .../src/b4a/example/analogclock_subs_0.java | 610 ---- Objects/shell/src/b4a/example/main.java | 75 - .../shell/src/b4a/example/main_subs_0.java | 408 --- Objects/shell/src/b4a/example/starter.java | 58 - .../shell/src/b4a/example/starter_subs_0.java | 103 - Objects/src/b4a/example/analogclock.java | 865 +++--- Objects/src/b4a/example/localization.java | 603 ++++ Objects/src/b4a/example/main.java | 2621 +++++++++++++++-- Objects/src/b4a/example/starter.java | 66 +- README.md | 27 +- b4a_orologio_marcatempo.b4a | 1191 +++++++- b4a_orologio_marcatempo.b4a.meta | 2 +- 34 files changed, 4821 insertions(+), 2444 deletions(-) create mode 100644 .gitignore create mode 100644 Localization.bas create mode 100644 Objects/bin/classes/b4a/example/localization.class create mode 100644 Objects/dexed/b4a/example/localization.dex delete mode 100644 Objects/shell/bin/classes/b4a/example/analogclock.class delete mode 100644 Objects/shell/bin/classes/b4a/example/analogclock_subs_0.class delete mode 100644 Objects/shell/bin/classes/b4a/example/main.class delete mode 100644 Objects/shell/bin/classes/b4a/example/main_subs_0.class delete mode 100644 Objects/shell/bin/classes/b4a/example/starter.class delete mode 100644 Objects/shell/bin/classes/b4a/example/starter_subs_0.class delete mode 100644 Objects/shell/bin/classes/subs.txt delete mode 100644 Objects/shell/src/b4a/example/analogclock.java delete mode 100644 Objects/shell/src/b4a/example/analogclock_subs_0.java delete mode 100644 Objects/shell/src/b4a/example/main.java delete mode 100644 Objects/shell/src/b4a/example/main_subs_0.java delete mode 100644 Objects/shell/src/b4a/example/starter.java delete mode 100644 Objects/shell/src/b4a/example/starter_subs_0.java create mode 100644 Objects/src/b4a/example/localization.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..013466d --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +build-b4a.log +install-b4a.log +run-b4a.log +emulator-*.png +Objects/b4a_orologio_marcatempo.apk +Objects/bin/temp.ap_ +Objects/classes.dex +Objects/d8_arguments.txt diff --git a/AnalogClock.bas b/AnalogClock.bas index 105c6bd..1c0bfe3 100644 --- a/AnalogClock.bas +++ b/AnalogClock.bas @@ -12,7 +12,7 @@ Sub Class_Globals Private clockDiameter As Float ' Diametro dell'orologio (in pixel) Private centerX As Float ' Coordinata X del centro dell'orologio Private centerY As Float ' Coordinata Y del centro dell'orologio - Private intervals As List ' Lista degli intervalli da disegnare + Private segments As List ' Segmenti cronologici registrati ' Parametri di spessore Private quadrantStrokeWidth As Float = 5dip @@ -21,40 +21,64 @@ Sub Class_Globals Private intervalArcStrokeWidth As Float = 5dip Private hourHandStrokeWidth As Float = 8dip Private minuteHandStrokeWidth As Float = 5dip - Private intervals As List + Private baseDurationMs As Long + Private activeDurationMs As Long + Private activeColor As Int + Private activeIsPause As Boolean + Private hasActiveSegment As Boolean End Sub ' Inizializza l'orologio Public Sub Initialize(ParentPanel As Panel, PercentageOfWidth As Float) pnlClock = ParentPanel cvsClock.Initialize(pnlClock) - intervals.Initialize - Dim interval As Map - interval.Initialize - interval.Put("startHour", 8) - interval.Put("startMinute", 0) - interval.Put("endHour", 12) - interval.Put("endMinute", 0) - interval.Put("color", Colors.Magenta) - interval.Put("radius",(clockDiameter/2 +25dip)) - interval.Put("strokeWidth", 5dip) - interval.Put("period", "mattino") - intervals.Add(interval) - - interval.Initialize - interval.Put("startHour", 13) - interval.Put("startMinute", 0) - interval.Put("endHour", 17) - interval.Put("endMinute", 0) - interval.Put("color", Colors.Green) - interval.Put("radius", (clockDiameter/2 )+25dip) - interval.Put("strokeWidth", 5dip) - interval.Put("period", "pomeriggio") - intervals.Add(interval) - + segments.Initialize + baseDurationMs = 12 * DateTime.TicksPerHour SetClockSize(PercentageOfWidth) End Sub +' Imposta la durata piena del quadrante. Le pause gialle vengono aggiunte a parte. +Public Sub SetBaseDuration(DurationMs As Long) + baseDurationMs = DurationMs + DrawClock +End Sub + +' Rimuove tutti i segmenti registrati. +Public Sub ClearSegments + If segments.IsInitialized = False Then segments.Initialize + segments.Clear + hasActiveSegment = False + activeDurationMs = 0 + DrawClock +End Sub + +' Aggiunge un segmento concluso. +Public Sub AddSegment(DurationMs As Long, SegmentColor As Int, IsPause As Boolean) + If DurationMs <= 0 Then Return + Dim segment As Map + segment.Initialize + segment.Put("duration", DurationMs) + segment.Put("color", SegmentColor) + segment.Put("pause", IsPause) + segments.Add(segment) + DrawClock +End Sub + +' Imposta il segmento in corso, non ancora concluso. +Public Sub SetActiveSegment(DurationMs As Long, SegmentColor As Int, IsPause As Boolean) + activeDurationMs = Max(0, DurationMs) + activeColor = SegmentColor + activeIsPause = IsPause + hasActiveSegment = activeDurationMs > 0 + DrawClock +End Sub + +Public Sub ClearActiveSegment + hasActiveSegment = False + activeDurationMs = 0 + DrawClock +End Sub + ' Imposta la dimensione dell'orologio come percentuale della larghezza del pannello Public Sub SetClockSize(PercentageOfWidth As Float) clockDiameter = pnlClock.Width * PercentageOfWidth / 100 @@ -90,14 +114,12 @@ Public Sub DrawClock ' Disegna il cerchio esterno cvsClock.DrawCircle(centerX, centerY, clockDiameter / 2, Colors.Black, False, quadrantStrokeWidth) + ' Disegna i segmenti di lavoro / pausa / straordinario + DrawSegments + ' Disegna le tacche delle ore e dei minuti DrawTicks - ' Disegna gli intervalli - For Each interval As Map In intervals - DrawInterval(interval.Get("startHour"), interval.Get("startMinute"), interval.Get("endHour"), interval.Get("endMinute"), interval.Get("color"), interval.Get("radius"), interval.Get("strokeWidth")) - Next - ' Disegna le lancette Dim now As Long = DateTime.Now Dim Hours As Int = DateTime.GetHour(now) Mod 12 @@ -120,6 +142,51 @@ Public Sub DrawClock pnlClock.Invalidate End Sub +Private Sub DrawSegments + If segments.IsInitialized = False Then Return + Dim totalPauseMs As Long = 0 + Dim totalRecordedMs As Long = 0 + For Each segment As Map In segments + Dim duration As Long = segment.Get("duration") + totalRecordedMs = totalRecordedMs + duration + If segment.Get("pause") = True Then totalPauseMs = totalPauseMs + duration + Next + If hasActiveSegment Then + totalRecordedMs = totalRecordedMs + activeDurationMs + If activeIsPause Then totalPauseMs = totalPauseMs + activeDurationMs + End If + + Dim totalDisplayMs As Long = Max(baseDurationMs, totalRecordedMs) + If totalDisplayMs <= 0 Then Return + + Dim startAngle As Float = -90 + Dim radius As Float = clockDiameter / 2 - 22dip + For Each segment As Map In segments + Dim sweepAngle As Float = 360 * segment.Get("duration") / totalDisplayMs + DrawPieSegment(startAngle, sweepAngle, segment.Get("color"), radius) + startAngle = startAngle + sweepAngle + Next + If hasActiveSegment Then + Dim activeSweepAngle As Float = 360 * activeDurationMs / totalDisplayMs + DrawPieSegment(startAngle, activeSweepAngle, activeColor, radius) + End If +End Sub + +Private Sub DrawPieSegment(startAngle As Float, sweepAngle As Float, color As Int, radius As Float) + If sweepAngle <= 0 Then Return + Dim steps As Int = Max(2, Ceil(sweepAngle / 4)) + Dim path As B4XPath + path.Initialize(centerX, centerY) + For i = 0 To steps + Dim angle As Float = startAngle + sweepAngle * i / steps + Dim x As Float = centerX + radius * CosD(angle) + Dim y As Float = centerY + radius * SinD(angle) + path.LineTo(x, y) + Next + path.LineTo(centerX, centerY) + cvsClock.DrawPath(path, color, True, 0) +End Sub + ' Disegna una singola lancetta Private Sub DrawHand(x As Float, y As Float, length As Float, angle As Float, width As Float, color As Int) Dim endX As Float = x + length * CosD(angle) @@ -152,43 +219,6 @@ Private Sub DrawTicks Next End Sub -' Aggiunge un intervallo da disegnare -Public Sub AddInterval(startHour As Int, startMinute As Int, endHour As Int, endMinute As Int, tipo As String) - Dim interval As Map - interval.Initialize - interval.Put("startHour", startHour) - interval.Put("startMinute", startMinute) - interval.Put("endHour", endHour) - interval.Put("endMinute", endMinute) - Select tipo.ToLowerCase - Case "mattino" - interval.Put("color", Colors.Blue) - interval.Put("radius", clockDiameter / 2 - 15dip) - interval.Put("strokeWidth", intervalArcStrokeWidth) - Case "pomeriggio" - interval.Put("color", Colors.Green) - interval.Put("radius", clockDiameter / 2 - 25dip) - interval.Put("strokeWidth", intervalArcStrokeWidth) - Case Else - Log("Tipo di intervallo non riconosciuto: " & tipo) - Return - End Select - intervals.Add(interval) - DrawClock -End Sub -' Disegna un intervallo sul quadrante -Private Sub DrawInterval(startHour As Int, startMinute As Int, endHour As Int, endMinute As Int, color As Int, radius As Float, strokeWidth As Float) - Dim startAngle As Float = (startHour Mod 12 + startMinute / 60) * 30 - 90 - Dim endAngle As Float = (endHour Mod 12 + endMinute / 60) * 30 - 90 - Dim sweepAngle As Float = endAngle - startAngle - If sweepAngle < 0 Then sweepAngle = sweepAngle + 360 - - Dim path As B4XPath - path.InitializeArc(centerX, centerY, radius, startAngle, sweepAngle) - cvsClock.DrawPath(path, color, False, strokeWidth) -End Sub - - ' Aggiorna l'orologio ogni secondo Public Sub StartClock Dim timer As Timer diff --git a/Localization.bas b/Localization.bas new file mode 100644 index 0000000..69c9dd9 --- /dev/null +++ b/Localization.bas @@ -0,0 +1,292 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=StaticCode +Version=13 +@EndOfDesignText@ + +Sub Process_Globals + Private translations As Map + Private currentLanguage As String + Private initialized As Boolean +End Sub + +Public Sub Initialize + If initialized Then Return + translations.Initialize + LoadLanguage("en", CreateEnglishMap) + LoadLanguage("it", CreateItalianMap) + LoadLanguage("fr", CreateFrenchMap) + LoadLanguage("de", CreateGermanMap) + LoadLanguage("es", CreateSpanishMap) + currentLanguage = NormalizeLanguage(DetectDeviceLanguage) + initialized = True +End Sub + +Public Sub T(Key As String) As String + If initialized = False Then Initialize + Dim languageMap As Map = translations.Get(currentLanguage) + If languageMap.IsInitialized And languageMap.ContainsKey(Key) Then Return languageMap.Get(Key) + Dim fallback As Map = translations.Get("en") + If fallback.IsInitialized And fallback.ContainsKey(Key) Then Return fallback.Get(Key) + Return Key +End Sub + +Public Sub CurrentLanguageCode As String + If initialized = False Then Initialize + Return currentLanguage +End Sub + +Private Sub LoadLanguage(Code As String, Values As Map) + translations.Put(Code, Values) +End Sub + +Private Sub NormalizeLanguage(Code As String) As String + Code = Code.ToLowerCase + Select True + Case Code.StartsWith("it") + Return "it" + Case Code.StartsWith("fr") + Return "fr" + Case Code.StartsWith("de") + Return "de" + Case Code.StartsWith("es") + Return "es" + Case Else + Return "en" + End Select +End Sub + +Private Sub DetectDeviceLanguage As String + Dim context As JavaObject + context.InitializeContext + Dim resources As JavaObject = context.RunMethod("getResources", Null) + Dim configuration As JavaObject = resources.RunMethod("getConfiguration", Null) + Dim locale As JavaObject = configuration.GetField("locale") + Dim code As String = locale.RunMethod("getLanguage", Null) + If code <> "" Then Return code + Dim jo As JavaObject + jo.InitializeStatic("java.util.Locale") + locale = jo.RunMethod("getDefault", Null) + Return locale.RunMethod("getLanguage", Null) +End Sub + +Private Sub CreateEnglishMap As Map + Dim m As Map + m.Initialize + m.Put("app_title", "Overtime Guard") + m.Put("start", "Start") + m.Put("end", "End") + m.Put("pause", "Pause") + m.Put("end_pause", "End pause") + m.Put("stats", "Stats") + m.Put("config", "Config") + m.Put("bg", "Bg") + m.Put("statistics", "Statistics") + m.Put("close", "Close") + m.Put("work_start", "Work start") + m.Put("pause_start", "Pause start") + m.Put("pause_end", "Pause end") + m.Put("work_end", "Work end") + m.Put("set_config", "Set config") + m.Put("reset_config", "Reset config") + m.Put("clear_today", "Clear today") + m.Put("date", "Date") + m.Put("work", "Work") + m.Put("pause_col", "Pause") + m.Put("overtime", "Overtime") + m.Put("totals", "Totals") + m.Put("manual_mode", "Manual mode") + m.Put("auto_recording", "Auto: recording...") + m.Put("auto_paused", "Auto: paused...") + m.Put("auto_stopped", "Auto: stopped...") + m.Put("use_hhmm", "Use HH:MM times.") + m.Put("times_order", "Times must be in order.") + m.Put("work_exceed", "Configured work cannot exceed 8 hours.") + m.Put("auto_enabled", "Automatic config enabled.") + m.Put("auto_disabled", "Automatic config disabled.") + m.Put("no_day_to_clear", "No day to clear.") + m.Put("clear_today_title", "Clear today") + m.Put("clear_today_confirm", "Clear all recorded data for") + m.Put("clear_button", "Clear") + m.Put("cancel", "Cancel") + m.Put("today_cleared", "Today cleared.") + m.Put("limit_reached", "9-hour limit already reached for this workday.") + Return m +End Sub + +Private Sub CreateItalianMap As Map + Dim m As Map + m.Initialize + m.Put("app_title", "Overtime Guard") + m.Put("start", "Start") + m.Put("end", "End") + m.Put("pause", "Pausa") + m.Put("end_pause", "Fine pausa") + m.Put("stats", "Statistiche") + m.Put("config", "Config") + m.Put("bg", "Sfondo") + m.Put("statistics", "Statistiche") + m.Put("close", "Chiudi") + m.Put("work_start", "Inizio lavoro") + m.Put("pause_start", "Inizio pausa") + m.Put("pause_end", "Fine pausa") + m.Put("work_end", "Fine lavoro") + m.Put("set_config", "Imposta config") + m.Put("reset_config", "Reset config") + m.Put("clear_today", "Azzera oggi") + m.Put("date", "Data") + m.Put("work", "Lavoro") + m.Put("pause_col", "Pausa") + m.Put("overtime", "Straord.") + m.Put("totals", "Totali") + m.Put("manual_mode", "Modalita manuale") + m.Put("auto_recording", "Auto: registrazione...") + m.Put("auto_paused", "Auto: pausa...") + m.Put("auto_stopped", "Auto: fermo...") + m.Put("use_hhmm", "Usa orari HH:MM.") + m.Put("times_order", "Gli orari devono essere in ordine.") + m.Put("work_exceed", "Il lavoro configurato non puo superare 8 ore.") + m.Put("auto_enabled", "Configurazione automatica attiva.") + m.Put("auto_disabled", "Configurazione automatica disattivata.") + m.Put("no_day_to_clear", "Nessun giorno da azzerare.") + m.Put("clear_today_title", "Azzera oggi") + m.Put("clear_today_confirm", "Cancellare tutti i dati registrati per") + m.Put("clear_button", "Azzera") + m.Put("cancel", "Annulla") + m.Put("today_cleared", "Giornata azzerata.") + m.Put("limit_reached", "Limite di 9 ore gia raggiunto per questa giornata.") + Return m +End Sub + +Private Sub CreateFrenchMap As Map + Dim m As Map + m.Initialize + m.Put("app_title", "Overtime Guard") + m.Put("start", "Demarrer") + m.Put("end", "Arreter") + m.Put("pause", "Pause") + m.Put("end_pause", "Fin pause") + m.Put("stats", "Stats") + m.Put("config", "Config") + m.Put("bg", "Fond") + m.Put("statistics", "Statistiques") + m.Put("close", "Fermer") + m.Put("work_start", "Debut travail") + m.Put("pause_start", "Debut pause") + m.Put("pause_end", "Fin pause") + m.Put("work_end", "Fin travail") + m.Put("set_config", "Activer config") + m.Put("reset_config", "Reinit config") + m.Put("clear_today", "Effacer aujourd'hui") + m.Put("date", "Date") + m.Put("work", "Travail") + m.Put("pause_col", "Pause") + m.Put("overtime", "Heures sup.") + m.Put("totals", "Totaux") + m.Put("manual_mode", "Mode manuel") + m.Put("auto_recording", "Auto: enregistrement...") + m.Put("auto_paused", "Auto: pause...") + m.Put("auto_stopped", "Auto: arrete...") + m.Put("use_hhmm", "Utilisez des heures HH:MM.") + m.Put("times_order", "Les heures doivent etre dans l'ordre.") + m.Put("work_exceed", "Le travail configure ne peut pas depasser 8 heures.") + m.Put("auto_enabled", "Configuration automatique activee.") + m.Put("auto_disabled", "Configuration automatique desactivee.") + m.Put("no_day_to_clear", "Aucun jour a effacer.") + m.Put("clear_today_title", "Effacer aujourd'hui") + m.Put("clear_today_confirm", "Effacer toutes les donnees enregistrees pour") + m.Put("clear_button", "Effacer") + m.Put("cancel", "Annuler") + m.Put("today_cleared", "Journee effacee.") + m.Put("limit_reached", "Limite de 9 heures deja atteinte pour cette journee.") + Return m +End Sub + +Private Sub CreateGermanMap As Map + Dim m As Map + m.Initialize + m.Put("app_title", "Overtime Guard") + m.Put("start", "Start") + m.Put("end", "Stopp") + m.Put("pause", "Pause") + m.Put("end_pause", "Pause beenden") + m.Put("stats", "Statistik") + m.Put("config", "Konfig") + m.Put("bg", "Hint.") + m.Put("statistics", "Statistik") + m.Put("close", "Schliessen") + m.Put("work_start", "Arbeitsbeginn") + m.Put("pause_start", "Pausenbeginn") + m.Put("pause_end", "Pausenende") + m.Put("work_end", "Arbeitsende") + m.Put("set_config", "Konfig setzen") + m.Put("reset_config", "Konfig reset") + m.Put("clear_today", "Heute loschen") + m.Put("date", "Datum") + m.Put("work", "Arbeit") + m.Put("pause_col", "Pause") + m.Put("overtime", "Uberzeit") + m.Put("totals", "Summen") + m.Put("manual_mode", "Manueller Modus") + m.Put("auto_recording", "Auto: Aufnahme...") + m.Put("auto_paused", "Auto: Pause...") + m.Put("auto_stopped", "Auto: gestoppt...") + m.Put("use_hhmm", "Bitte HH:MM verwenden.") + m.Put("times_order", "Die Zeiten muessen in Reihenfolge sein.") + m.Put("work_exceed", "Die konfigurierte Arbeit darf 8 Stunden nicht uberschreiten.") + m.Put("auto_enabled", "Automatische Konfiguration aktiviert.") + m.Put("auto_disabled", "Automatische Konfiguration deaktiviert.") + m.Put("no_day_to_clear", "Kein Tag zum Loschen.") + m.Put("clear_today_title", "Heute loschen") + m.Put("clear_today_confirm", "Alle erfassten Daten loschen fur") + m.Put("clear_button", "Loschen") + m.Put("cancel", "Abbrechen") + m.Put("today_cleared", "Heutige Daten geloscht.") + m.Put("limit_reached", "9-Stunden-Limit fur diesen Arbeitstag bereits erreicht.") + Return m +End Sub + +Private Sub CreateSpanishMap As Map + Dim m As Map + m.Initialize + m.Put("app_title", "Overtime Guard") + m.Put("start", "Iniciar") + m.Put("end", "Detener") + m.Put("pause", "Pausa") + m.Put("end_pause", "Fin pausa") + m.Put("stats", "Stats") + m.Put("config", "Config") + m.Put("bg", "Fondo") + m.Put("statistics", "Estadisticas") + m.Put("close", "Cerrar") + m.Put("work_start", "Inicio trabajo") + m.Put("pause_start", "Inicio pausa") + m.Put("pause_end", "Fin pausa") + m.Put("work_end", "Fin trabajo") + m.Put("set_config", "Activar config") + m.Put("reset_config", "Reset config") + m.Put("clear_today", "Borrar hoy") + m.Put("date", "Fecha") + m.Put("work", "Trabajo") + m.Put("pause_col", "Pausa") + m.Put("overtime", "Extra") + m.Put("totals", "Totales") + m.Put("manual_mode", "Modo manual") + m.Put("auto_recording", "Auto: grabando...") + m.Put("auto_paused", "Auto: pausa...") + m.Put("auto_stopped", "Auto: detenido...") + m.Put("use_hhmm", "Usa horas HH:MM.") + m.Put("times_order", "Las horas deben estar en orden.") + m.Put("work_exceed", "El trabajo configurado no puede superar 8 horas.") + m.Put("auto_enabled", "Configuracion automatica activada.") + m.Put("auto_disabled", "Configuracion automatica desactivada.") + m.Put("no_day_to_clear", "No hay dia para borrar.") + m.Put("clear_today_title", "Borrar hoy") + m.Put("clear_today_confirm", "Borrar todos los datos registrados de") + m.Put("clear_button", "Borrar") + m.Put("cancel", "Cancelar") + m.Put("today_cleared", "Dia borrado.") + m.Put("limit_reached", "Limite de 9 horas ya alcanzado para esta jornada.") + Return m +End Sub diff --git a/Objects/AndroidManifest.xml b/Objects/AndroidManifest.xml index b6f0e18..5e3e8d1 100644 --- a/Objects/AndroidManifest.xml +++ b/Objects/AndroidManifest.xml @@ -11,18 +11,17 @@ android:normalScreens="true" android:smallScreens="true" android:anyDensity="true"/> - diff --git a/Objects/bin/classes/b4a/example/analogclock.class b/Objects/bin/classes/b4a/example/analogclock.class index 9b099a5626b1638a038612f91dba5252861db5b9..c789706ea00817a670ac31d9c8a32e202de0fe36 100644 GIT binary patch literal 10314 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 S<8w6&yC?lD!16idFa9f=d1HhC literal 13574 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 znth<~σ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 A#{d8T literal 0 HcmV?d00001 diff --git a/Objects/bin/classes/b4a/example/main.class b/Objects/bin/classes/b4a/example/main.class index c3196769a0dbe1aa3d78d1b02fb8c8334c4ca194..26a4beaf2a4cd06495ec65b4a792f4437f924dad 100644 GIT binary patch literal 44575 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 literal 18363 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 S4fwth^QqVe>%+!Q^8Y_!Dwbvd diff --git a/Objects/bin/classes/b4a/example/starter$starter_BR.class b/Objects/bin/classes/b4a/example/starter$starter_BR.class index 0ff3d050b1aa7f1123d9e738bffdde3727ceb36f..814f85badc9c7213ed419d10aff850c8ee52534f 100644 GIT binary patch delta 187 zcmW-ZJr06U5QJwz1fCkBHBS)1pC^iiwb$?%9_CrtdISoiq3{4ECLY8i7~^2`&CJg3 z*1;)Ik8gbku*IfQN9ieOjC{mhBpBPLoMmDUPTg7wjD3l*dpFsoaCibz;Gs=sOqwcG z&s-rDjUXqR8VJcLW@KhBZqZRUM9q$a+`iqooYM!84!uL zX3m_<*$hoP`h+h49tL;&MAATx;P~s~VHs?L-Da^r_}f6vJzvh2!D=-b+i+1ZP)wnO zvbxfRs%ol*F-Z{WMnVns!l(j`N5Le-kzm$1N0{G+$f)u8j_Bma~g4dc0CW27Opx-6SJd diff --git a/Objects/bin/classes/b4a/example/starter.class b/Objects/bin/classes/b4a/example/starter.class index 5f2c158203410924d0d0b125d93e6b4be3de9c53..b6ea2c2cd7f1aad42e542eb6e3fb38a86d243cef 100644 GIT binary patch delta 2654 zcma)7X<$^<75?sQ@6DS#Szbs2S=bzCcv%LTsDW5ZjKQQ08W~C$jE0wFj3bkoWM+t< z*s--1moDP9rBEu;60xnelE7r@XtbMHwJln^(#_h^#qPFs!R_2Pfh72+^W)x`d(U^i zbG~!Von!R}YPF}{dUz5*11sO9y|BRz8%j7zF_*#H6N&Yik?{3qG8~ICly&qrnEuc< zb8sjU^3S|$(x9S@qa2(;jYV7HAu}10zA8E9V}a0^;abG880Uyp%wS8zYFk-@iuW*h z$Yk8j)c)sy@_l__17UvNiGdGB^WmtsNZ-8pHux zG2NcWaXuQwq-`@>B^KB#yer{$lZ*FpT!{CJHhX9rc!BreR*nF3>x2%`ayVe{r{Sh-d;BVd57aEe%D(DwGoC|9EaJ5Ww zfMIS`$F$x0YvQr%%-%?-Y1sx1^$2rZi!I_w=Q)(?AV(B2@v?Ji-Z0_{5*$fc1!LF# zVsTTUDlX&R^B5fAXgH~17$cJ5I*Y-K_Qzx4e!n?1>S=qqtAOA&&d;WroHX zdI*QxU|$t}cXj!L9AC4VHj#`C1wxUlHA?>>j>8xeTix~Sh`3NIEm)yp9BHZC1jF*G z4$-U?i5K0Ko>6>5+CEID;@P|1?O8Pc#{@Yolf|Inr}&wIpL6^ICq&BAs&?a79KXhI#50~+brdgf{0=V) z#t%CFz-U6H`jebH{>V^sTB?_L;fj-RYdDF&aJ(dS(%Pwy!tzlFsrVa%5|9(xPN|&4 zKREu0e~DUe3wv1%drOM{%ke)6a>t?f1Lrc8{gn~QykB)7(bPN zJ}W5b8H&gHLWxArKqS^{Muflcgkv7VeA0W4SgbEhx#*pt_k`Xnw|q=!x5-YWogp6u z)?S1;)=qC2?S*vX0jKpX`qfDGM2$Jd1QdfEg;y?xaw$G+q28udhl5s?*4v5a4&+gN z+yvW_BDi!@ZaD$$y6vGeD3^6Ok4gVFCVA*Nq?G_{C;73_`K!b`&lpF=7#1GGa2CFx z!I-{OubKcIFQnrPYWJXszA%Tr!ft;Q^=X{jmBq^71X4|7xFC(yX{^ydKua1O8C<4+ zh^#u(=wd95E4mKB+mS_IuzCWa$H}h;Tzbk{gB~JfbF3i31M!(0PFz)Tj z;NV_x{VQZc5j=31lxRdRLNG~*x5X<(11UQx;)Sa*qQG?XQ&>|E#vII<6AeqK0Mf*5 zRNIN~>s`|ol2ZzLyj8T4F%9b!WGfV_b}bZ07UMyKL^zs3W)ED4ke@}?I(amMNis<3 z-!fcQy493zMF!uYbSvd1<99wl3=}D?C2-Q(Mt#wNV)`3cgpFuMkjda2uoZiVoyK-5 zh6Z^?H*+NU_bh#$Ijzrh26?cj$f%oKUxgxUCW!Nli``Rcbm~9INqhvy_2<+0$>Zo= zTk`}~)ui#u$$Q|dmenDO41Rm5#q_+xN~o4n*h`&Im^++FpG#>eHKaIE>^h-E1e_ZlJJkp&(S|p2C&UF4eTLvnTB~nn{g$=vI#8 z89Rrp8?)->N?DY5GEPSh`fd`$OD%Ku6u)-1@7=Q?dH)Y&-z-SJ1xd|*EZ#+PU>2r; z6;4G~MX^e;_!ugvz-gS)XJB*9e;-M8|17-zt}u7lXX0`X)PvKQ0+khEf|z8O^NCvu s?UHTFri+t9sZ;>@tlC&HE1`Wc={bsFR!UKf({K67<~BB$tjgei2ky^7Q2+n{ literal 6599 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 literal 0 HcmV?d00001 diff --git a/Objects/dexed/b4a/example/main.dex b/Objects/dexed/b4a/example/main.dex index d126fdb096847873865d554728620b098b54341e..e7148e8ce3710c5f293d156d6883bee01a2166bb 100644 GIT binary patch literal 41196 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 H9q|7NjaqO{ diff --git a/Objects/dexed/b4a/example/starter$starter_BR.dex b/Objects/dexed/b4a/example/starter$starter_BR.dex index 2b1395f736f479519c2dc334c26464733dfc46d2..325dbcb2ab0f3457ef4f85ef9920551d4aa46501 100644 GIT binary patch delta 709 zcmXw%ze^lJ6vyA}&hF`*KTbV!r>e^f;NIS=~4s?1VVx$!X=GA@CS&E zZjnG5u}G6c1ltr>2x%l>XKNwoA0UPllFz%_9r(=q?wdF7&CJ_cZYx(_d{@mzmFKea zclFh`hqq6^R>F}V7ky!=S{*+={`qq2pxm=|VMT^SWC=Rp7JLW|Q!+Bx_k64Ci0RxF zsbgO|B41z=cA*Bp;TrxyFL4X70()=*f8ZMK;n9@|F&w~yEObEu%J2fFUT3fX-Jtpz{+>inp;P}Xx-0R|#~)2`u8%J(o^)b8ait&Yb7Q@; zPmNN;Hs1i*7z50|IMR2}q0t&2#FwU638|r3l;u3vm0|J(CL>Fck;qKijP#o)@+op8 zZ@UYDvGIU2IGUq6Tgl{bqNZ(^Y~sr{D&*ofPW^1!t(vIC43;uZtJ7;+i^YI&<87?l zy6c-Ot*Jw^?UU*dPU9OpvX*vSSJJL)blQ0jopxP)daENQ6E?He(Qcvxk{BLe_h=s+ k{F-0?4x7YibwO($UTaibHn1)=7W`yEpHjQ1LHb+%2YQ-BCIA2c delta 775 zcmXw%O=wd=5P)aj+a!HW6PqSBwN0u;TPi4h+A0<*hg}>mDw`%3AjG-KdlW-cQVFoV4EX=_o zv>=2R@OtCtWLv8(z(F8k#1x9!a-gFKs?T6A#rh@m#C{#UFSg%8*E{Mh9kH<#8DwoG zCB4YBxH5#yh`AOyWNT`K(qIy9^XK1LEXH8q;#3F}7d@$iQ!Pj^Yv zH{zRfHY0F^ycQuAq-4mX2iiNynqm@BwuAcCw zvsD?sT5Gh{7J}tqWpRFWt+pIY+?lFP+*kV;{{f=o*Jd9Tk@Y?8_H6((#7Axc-wmX=DEf^;lEI diff --git a/Objects/dexed/b4a/example/starter.dex b/Objects/dexed/b4a/example/starter.dex index 1e531de85a6afeb590039610d48e3e4b9a83f2a9..708eb182fbf8268aff9a6feacd1cdc52dd4347bf 100644 GIT binary patch literal 5864 zcmai&e{37&8ONVHpMNEeV>@n>nzV79(4;Ai-5>mPTbiUP33J-4$)FKUOLrh~sprQRh8rmOBDjE_@AhC&w^^c8Jh)HaqX`4V|(!S4o z=hPj6UGll-x%YkEU(frz@4ddFw%m}}bu;~>`{lulv$y{J{L?3Xe%Sw;H$L6eKe6!q zu0OxOo~TMh%aglf5aQ}W+QZN|y$76=iBgbV9-;=wUnxYlLWaCV669qckrE-g3i)h^ z=sEBLcn5p}5=}&VKtC7;W8fH2K@rS?3RnTB!5MH4JOUmA-v-|WFM{8K_kkQHY6H8# z1UL5_kjr1$+WpqeR=lL2v@B zfXBfl@FaK|JO^F@uY%XXo8b509q=xA5BwGU4g3Rq3_|esX0Qd^0Y<`UH?g1Jw!2{rNa0xsEUIed!E8s)$AK+g{v>n_E_JKx@6@aj!R?r4EfCRV! zw1bUc6X*a*uo-a7b%HK%BiI7E0mtN4&?DF|A@e|Afx<@VGvO z4)+ROffKk+P7gtcYlPkgy=Kz`o!eqR@Wu78o)1QDo?52MoI**;_nJ+)dbWF%jDhlbL704jqeJBp?OF}l&sE`plBxDnf2^pu8 zLi)*ulqp2_L3%K20aun?SrIZW_B=nl%lUpp>Fq*pq&Xp5sU&2O7KLn}B_We^O2`}N zYmgyC%A}Ao6@=VGhLG*F4B3R4)X zj}~0JGmveh&~YJ~>8p?l^3plT8?cgCw!`BmAU7e0$B}gVpTr1{isulWg-l`9t3o!? zEMzBU;9f{xGZOFszP=8wVDZfG0>UNZuXeE(lcLgR(jv{MO~D`5JYshzWFGO8lA=`2 zw9*b`A=!+6HDHJEP){%gZ&x#Ilu;HUyg#t*LZlBP3wc@kDCCRn=!|w#OdeGvITj!F zN=mG2)F&wkuSNR)MjC5rR=D4MjiXKOe>+CQ`$R4MsGH7vVSW0&pOdbBCS4MB%^;oE zL>?ZVz)1B7?-ow2wYDn%Q&vVv&NGpYf2v0KIY!4Ln9qn0ctsqtFWIlBVZ{EcCR6ZK z7_G?S`7F|TZ%tr?3n=G!YXWs8qz6b(-U90oVl@Td-iV&gJK`>dekT0)P$DozF>lQ0_xQiFw zq9_D;GesmGn;uEy&NT#3!-Ck$djd^}#ZB;S1|#a0QrI1;$tYc*;}_r^*dGtdZWPvf z+$DNEf&BXv_WX9tMo5Vbbsp=cgm;QYy#YD4ZqyU-#%>%X+%uy}z#SV#+Ukr>^e7p^ z7aJ2dKbLXX0d}`{_N@)u3weVg#fC3xoUKH3%RW3HQ=OP;AhP~`h zNQQmnq%|S7oisipa2{VZJC=Ob;I-S1KQ7abb=VEbb+p4n9e|%5n{H7St`pB4coTCS zPFuY818A=Ue@;I4iOa=B@0{}y+w)nDP6Ei71L_9n(nVw%cX*9mkd2i z>#oak{gJIJQ808{)9v&i%Vj%DZL1|}StG(COYzkl!%B|~l=PxzI#sQln$t|pGG^>k zs;Q;(yVdkSf0jB>V9l(Yx&q&2Y0KIM^V-TO!z^0pRHeeB*tWKvkw2*wY%4vmyMJi8 zpjDkA-}J@C&S;LBa20p|jxV-$JvOYBVcjKSLNlGGEd8IBt}C0RzAtX6V3f-k4Q9}FNtgQIB5fmrLtHp^}QD3b=pYOl`yp#4g@&Vo->N8 z-Cwjz<@B&>&57Xf=Zx7Aea0Zq*rH9|@!=ut2YwNsBSmT*w~cE5qHR<#H-&@P=w?l0 zQ7@7-N%AE2kxA?$lh{yj!#08&ZzuBP6iHJgV@L5!;aR~gN3r8|eRHRyr9Q3ZJ)20hz6Q#&% zLebg4DZH8@qLSjP&$epKn_9(K(u&le7PyJ7OeRASwOBl=mTb7g*?-8#djPx=tLwA7 z4^krnzt3HK)Kd4*=dJ?s&lu(*wW5({R|BNu+4qgR^CkZ_XZH%v+@J3xwME?z|$#97o>e`q5X?myCIh zT1(dWoK`N68buA^%z-;NrxoU@0qdeT>{QlRF)Vv<(KPWAAfKW0woU;(l$KJby_wbmy zXd!Y!qP%AI@lvLMg#|UPm1n4nwJMf*(yHQ>sp>cdSV?D;#iUy?1#H7v_~czu%ZnQM zg*ZGz@_OkTQoE;BYTe%IlUw;gYTF>MbCecYY48UEQc#h^C2x4>jPhhe3Vz%q1)pe^ zf-itq!Jojni1bMEGBVFJOY)USr*ySRlCDH0>C8Gw`T=+}EJ-gze&qhV6=$cr@W5xN z30Izg{GDsS=PJJV*WT+$<8Nv#`RvD%&toh%xsuOs{LJUG%aDAQ=Zov-i{-du$w66^G9}_GPcvv*Y(BsW)pUb)3YzN!&-eNgKaXyInVK>^iBP;LLg__SWl} z^*$WC6i8^=h9+$zT1ruos8CW6LQtUyArz^Cwo(iH1w}j*2~;Xn2`Y+^5EKyn&Yf9z zBe|hteRIy-xsP+tIrq+ZHe;^TB=+1wKYrovpGI~mT_;|?BRzE}IB~7t`epdJ-wj-7 zBgzxe%4Dw&A&xg&iJpPR<=erxWui{VqY6y8bs@1$ghWpE`e`? zpM$>wy`HES>;(tFFc*aia5LBr;-DAo1$|%$41*N79~=S4!4h~JoCjY6FN0UWkH9a$AHY9> zr-`Tqw1Yk1AQ%VpU>Q6Lz6ibwE`x7@E8tb|6YyK`KKKySH4`;~4d52AA54NYu)!&C z23!DN0++!R@G5u<{06)WJ^=p#-WK=_#K3Ma01ksWumaA57r`a)J#ZDg1O5#D1~|8Z z09_F-328`3Pl|vIU?bQBZUXHf3O0in=m4CfTfkOuGw1@_KsVq#-T`)k9uNn+z;3Vy z^nzQ!t>89rJK!9@10+Eo7zU%@K2QfZ_b)*~x{w#V0v#bDq&)oqI#N{F4I%3A99~B` z(o@XiXV8(7Vm@!XZFyeTpmU$BzXu(uCG-!f>ih#bLMX~r3|Oht2%X1epYXx`u)Y!H zth1lk2CmP(>O?uujs3+(KVY5h8F2L-sB_TOd!bj#dA@^g`5?-NTs>7)XQE0!R;9BI zm3}fPzuRq_gU){D*zqv}STCXc9#?+^ddk($R+V3bey>~p0(ABR$Da=$$uuS8R$35J zq0^AHh~kWpF**Us`Bwv)p&b%Zr~8G}=&+E@v?QdDJ`E`&6XqZlMAGldqAN>6Hqj|a zAF_C#kT;PnWUJU;eHiT#aa~KF5i&-f6>=jz4jDj3albX_!4NV^Pe9gVWgHb!riX-V zr)42G(dQsFM3~!YusF*?<+t^&4H;?AB|>3L8UtGv+z&$_XJu z^niOkDP#*B5mKR(LN-xWNQnwUhKc>c{jy)0@mCfS`<9T7pPG@SD{j3fAtP8RpMu;# zDy4qZsY}r?B3*-BOQEhn3{lJ{B9u^S4X%T z7LKZttT&E&BvtPm^-5~Q^DtQlYG|yXUS)sq(TOp6o*OX--mh3^x=_x0NcFsRDI%XC zo_ADYdxFlaC7x+i3L;K1^wET<%%P7)%*oMskFV}~_s8`8`A^VygWI=^tmaWFeR~jL zwtFA?=Doh!?uhhgRlIJ8H$}7>I`$x1s)9%&Qc6&5S7E=}q-r#$!hZP3(b8&wCIJol!-flsV+&R@>k zW2nP5}H*5@gK;`eDylQT7N&Zwq3&1+%;rHG)`ex~wbv z5zmP+Kc!XVSwbVP8uSY9HHuvKs)Rf7)9^9no%Nn4fNyLg=FgBX~g$P->vomBD$P%nmcpV#)FUK*jW@Ca5Ys94cnN>D`cVTP<(8s|k29@r^lL|LSc&TV8R zda#B9o8jBtn9cO~iL?@`~LmfxEDdIVfox(5cO{0q6qi-3-o41}ARsHVV0;IP% zvlA9YYblEOaW9qlMU*qt5p(>lb#SeSyeigrv~5Ye57gi-2c>l0ZDncOF|Uw#SK5kM zNYcicN`9R~j5xn+O~IWA^2r&Azs+_wh^$?c16CAp3^2ReyeRaV7PH6lg=5hHx+sCq5XwG{r*N+00ov!S1 zCELyQeW+2flkagER*5K!!75=-*EZ_v?v9R|h2`w58SN^Tj6%sQY>N(>#Ztjujdo?{ zEW2Q4wsm*YrgdwMbCW1;x37D9BD-kXWl;f@)*EV|U>YTpZ<5k|XOcWUi$>NW@4l>+ zE!|1pfx|<66GP-1G_7K`v`W%Jl14}!NsWw9%?Rpbja>F&lcW^Mse@nyq)18Oq~eq! zZz?r~KWa-ER;FNQGjSuIkN4&Cx$LY_%Gy?vny$O$`XgD@V%D}wrd5g$uv{r6sdcSI z<<^L(k)+18J9aTX(x0_5X2I!d_0+ssFpKud(kY{0#?!qt(36}-zDj$ z^(&0eo4Fi!5L^F##!Q#z;)8rnQrC^@92S)xC}nfSByC;4=7PC;$}VJzaKYjt`)vFA z_3ZRR=4`1L@9*s!TA4NTj)QmHxU%EBBLxJ8opr~JYrF9oHgl-mDKgM3I9EyfKO=|tq|K>}kz39##0|@`OCovWqvm4TEDYp~V$nqSHmy@-9Lv}!l?!H)BJ13q zm@n9;(6k}-kg;sUbA~k+@3-xoX<&BYszNcyIz{_n??+9m!d~6@V9qv>%+-T%*ylLl zdR6m7B7t}vebnXQvSk_R9PHnCeQ62%OVxPQ{fw6iSqqupR@K5O>n~?>Vo_FGEu7$t z5vgiXFi&y@z{{n1JF{kf8EYjzY!v53R`^o(+=zA3CS|N#BG35n5VjqkNX(H8wTzeS zd|$a_FCt*G2eF^d73{K=A!(B2No-e>*sdnAZ{dX93MbyRavOtm6@4Y(r2)&Dtq0GSt!^A^2~@`)<08p_I|3bXfv~7LndvlAmcm? zD7020@{t77!knGGjJ&+UF?GGlBzI4x za8;RWW-V4hkGtBaq3WW?T@n;bJBd1J zSwp^)cHur_(IjQgERi24;X?{QbK)#i$B7g|>6kIQV9c4KQCM6T&>oM@rS0r!NTDBKVYRMMG<_^nE zq&_G4z`QxTKs8uHnPI21+C{rq8gS-IUfbd)4f$=$d7x6jw%n&U`E1KEE#xY^g~MX1 zv#kk)?yws=G;yET+>e_FXd`?*>$VBx9h>|6sHR|Ki{{WW98R?#>AT5SC|kp}y+C0o z*Cjxae3gs~xk@GB>MPfke5Y73RlI?6K zIlTO6fHRsz0&UkZ379P)-Ur`2~Gq`3~NoU(6=?Z_U z74L%o#;ZBM69(|@gryF7+Wn5g|M&30-*Q(_#@};U@;6dF{o9@qTMln?HY z50=k>Jm7aq{=UnUJkm~E$8n?Y&h59-&Fnw$fBJQ diff --git a/Objects/shell/bin/classes/b4a/example/analogclock.class b/Objects/shell/bin/classes/b4a/example/analogclock.class deleted file mode 100644 index 6f5c419800f932bc44696e6d967f8293bb73f507..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2544 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 Qhi$VuvyIiS^q?>NH^Hl|DgXcg diff --git a/Objects/shell/bin/classes/b4a/example/main.class b/Objects/shell/bin/classes/b4a/example/main.class deleted file mode 100644 index babc8d10beffcd98e5f8ee5869dc547ed7b17b02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4133 zcma)9hkF#q75}Xyw0p0od7vb%?n zLlQgHDNdZ?^pH5cIEgJ$6cam6Pn=$y-ke^X`Um98Z)R7glg!1|_vyXaH*e;>dHo*! z?}HBm=)`}Ls6)Mu1``X=sA1_b`-I)@*zRcif#G8!A8KgaS#S&C^&0A%TMi~*AfY2^ zVj)bj4|m$_;-p zXNJ1>_w3fNq4wL9!d+6@MiZN)3l@&sg|OH2hwR|EwAE%4mrGme#fcur4gwv|)Udgx z1*(iCPq&yz$9SpX$wH`RolkQI9I@~Co)6KZ4c1|25RjyGc>xu%m$HXqs9Sx;?nkU!S^oo>0 zpX|Y29epNll5SZwKag`lc{s>jsbRIukAm$KZW9BMk@q;>u!N+Cy-PF z&!LEd*rh;>3>At> z<${T0lFQ7AXd~o?0Y}4PXV{s??3(Z-^O79*=J3BD4rec~LOd`LMzV_&d51&;Cs=p} zY*#o+xsxU)B!iwSDVl*7@+~FT>5<%0{TG>dvE)ePNR98fod*WXuFH&;EH5?jvPg;_ z5e>Y89LkKs*YPS1P1R0TmK1&xuf}V1yw=3)aF>R4wE|ORGVM_GM#_#D@}g3rVS9Ce z#^G2q^5)b!18?Ailzubzf1`;v$u}f(O1sGVZ=tOugRgA$RugZFY$bOk?Hzchj(3@O zH{QcqR7?LsyHps-lo=M4C(N{frYNDxVZmwNYX@Wd>=Fy{ds!K4U6$@VJTy@f!DcSh zn+@E{#FH%|iPQLiOx_RHsJ#abd^lCDxx(nFamY zYJ)$yBE*!Isv;4S41DS$1*?rQ(Kb`C+MrnRo=BXS(KnVTYoxSS*J&6L;RDD)yVN*+u(x5?{oZ zbbMJV_Z5cLY%A&aTo#z7=9{YZk;EK{{`GSnKH}TsQn$9Kf*tbhQc3s*9=%9R z&N--RN`?KK8dCpPPP!b1o?GGn_ETNoZx0Kn!v5W;ZB)Y8c5TNSRni6y_MAFgv@#?79lGfh)|2CN`)Me^3zqlwU2x zn%qsDhnAXx{s2ET{EToh>Is*l0V{ZDC8 zK2&mcLs!&|7qBdws_#fObWEcuwLrnfj`O(W&?MHL!-n~S*J2IUVFND1ucRPe@@xJ- zj^7f>i`NiKadi#%5mqa3ITiTb99796Rei>MRhxP4_xMAs>M7c#j+}d28#*4rmMJu+ zS{KOGS+u5F8>3ZQtIoyNbJ#Y8Yg&znaZ&05uFIw@<2-ISi}W;lQ)iH#m9~in1PAy8 z$MYt1@Lk(z`A)8`!i~5ZJ-DXw%0E)4KjSZie5KZ)UJg95bp1o9%hp@Z&Sd!#{S4YN z*#*|VOtz6+#du%1VlhzPfEnY3)eg%KgorD+`{ zTr`O>qQ%y6!X?pek;|o4iEvp&@VT_CGGS9h80T`ibsOP|h;WL_mDWoLS54v$qSe;R z2`{l;IgLBHSYy4O@X|@#O|;f}GvT^P+>@ELTNF@zwBBDU5&JkTBLD81#M>|6bk=&` zdA#5H&^dhMkoC!Fe0mB~);Wdmsh`I5G#;M99f@gtL9Onttj4UbDz3csb%n>RZz!CN z@qri*#rPKMTWY@;^PjT5qrQD@3g4Rz-n2@#jj*ttA-aP<9J_D@cGAiGVT9|k7dK#l ztHaEUTam^XonK-}ILV@LJ9=>^f7{gIZ+u`Kp1|LUEv`=EANUu;=P~{o{dZ&Hf4tm8 AWB>pF diff --git a/Objects/shell/bin/classes/b4a/example/main_subs_0.class b/Objects/shell/bin/classes/b4a/example/main_subs_0.class deleted file mode 100644 index b1ab63e5269efe96617bac593faf9a852145bf34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15332 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 diff --git a/Objects/shell/bin/classes/b4a/example/starter_subs_0.class b/Objects/shell/bin/classes/b4a/example/starter_subs_0.class deleted file mode 100644 index 65c247507f769b3d3f06a5ab87fa1d7548df8578..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4023 zcmb7`+jkS!6~@0o293=C@|X}4Ob~4f@(tSr14Te$d?^Oo7++%>B1Y0d637~5G=qUO zEg@-2+mzlf>HXeUO1h|5*J|_LKc($^-n#nj(MXmS@~Vqjb983T*=L{M{`NlSAOHF5 z-vOM!A6u{up)i^ZY{w1_kz3Xst1oXAGJRK)w^Yj2u;Xm5kaN##2*o-Vbm$s7hKj{} zE@innyO0=l9NUS;O0MO&%IS>iXweW3y3H`KD~#O+_8_96EqTJ~Q+KV^VqWzHLo_rO z9Xq8;r3*tEj!amEduv(csFHotU9%k3Cv%Faz8SS@yQ=I|TYH0xTa+ZwFc#0HmH*U1$! z@#o)+Z_W3biNS8hg=>d~R;z}q60R+H8Hd7%8aRy4Xozm+_l#A{rRgwfq^!b-%Bzg! zD$;1+c;~Xvd&R)#BqX}ybDdNzIEq*pod&wlt>KkTm#T?_h8D*w%$JnouYDu7T(h}N zIjz(T3J7#=4V{Fs*T6ARsxfUBt08LUhkgSCI8MFh?Ua=-Y1m(0$8&S}zKLAnwn|^L zO4&)P7}s$^!**Y}EjWo&VVpMbd7RPkq95nyr%?SxkMcTQ3p8-P(RMcE5)9IDmb835 z%{f*|HRC*93*&VIL%6_o8{(FXFw&w)`md(ERSnv>ju8#Vx%Fs+G%RQ1P$@ckH>HY_ zpgqxGQCV@!z!z|lDOWYB!L0E=h*_wK#X(?SHZXxnaXf2#`Sh%77d14+e8FC!*k+XL zIfdw)&~7;0-KMa~b81K$bTU0|BD=aA+ zq^nyN&#xPJ6A8NL6B)L=OqSv6sSRIse7v&;!Nyx1mL?dEB4r>ArqiC3qnKCYtE--C zCG&i9rq;nP zLcjy)V4z;Aj2clT*Rk)_S$DXdiuH8)yAC31t2G}?486|S>R8jzUNK2gIc}Z7d#sxk zgC+T@<8AK1AIO3^UT|5Ub-cqU)GiSisvj1mg3A*+Lp-3k_5%(5!P>_}hC`lfukr*+ zjoFUMIJU>lAN7qWCmOgB0(C5se9yr9ez8jgUvzxHoZG~XMEsF~ui@+55$oH6ol8$D zH)~U`vD$bC+0v+GT?g)4gdX^na5+XQGRNrnj`&y; z>>2|hM1c?kjWB+|NH;k25+xpBiGJqau$>n11~nw9oVl`i&BSvDjs`cjwOYKjQCm!9 zf@bVew^^Kh-@^D=U24x|9eb_pbW1fsS>hv!;O>yfhVtSeMt`f3xnqw zcJTQ__71XT<-+!^zd-vFe`xp-pYmCr&G<1s;zSPB_EV!$>_0HWW^>b1?0kyW$bogd zVDfSBBSfF#vmvwDJh1(5*tQhvnq6w@o_&TRlk4c|dGZu}=Br)LFt{kc;@$Eqa^Pc} zGlxIMs5!olOOX!gPDyu~U7F|Et4-$IGc1&iO!lnf+9y*q*!u}L0rcZOmN5v=Z>9f$ zZ>2BoeZ1?p+x$I^p_T7;BEl^1M+aVIJBVF)4ZAVUOD9hvo;j^Z!bFDmMUP|dvb~RX zyv@tt1NPr1u%FP%E`$a@#Yh;-qhb6MKj*6^B3mY~U*MNzV7!kBL}D~=tRwk^ziQzg zuAB9%>a2egyF@Bw-rT@!2$U~otnyj92Gt$GHB zWX~npvnL1+R}eJ)PXhBkfob}@%>Bi%!e=k0{dOML{I-_BAPJo0xFPQGBuAd&-)WrX z#c&K~a0zkF9ipP*w0I5+yiTpKpTLDGflMO;zrk;VWb0(I@pQ&x^UekVQwZGk33LQ1 zxZ4yY8g<`L{w1U89Ds6VaPQlHgoLI0??Sm`O=~Rk(qhRSjjIN1);N{xW~~FEsfG%K!iX diff --git a/Objects/shell/bin/classes/subs.txt b/Objects/shell/bin/classes/subs.txt deleted file mode 100644 index c24f5ee..0000000 --- a/Objects/shell/bin/classes/subs.txt +++ /dev/null @@ -1,133 +0,0 @@ -b4a.example -0 -1 -analogclock -0 -main,activity_create,1,0,48,73 -,btnpause,,btnreset,,btnstart,,lblelapsedtime,,pnlclock,,myclock,,timer1 -,btnpause,,btnreset,,btnstart,,lblelapsedtime,,pnlclock -analogclock,initialize,analogclock,setclocksize,analogclock,drawclock,analogclock,clearcanvas,analogclock,drawticks,analogclock,drawinterval,analogclock,drawhand -main,activity_pause,0,0,86,88 - - - -main,activity_resume,0,0,82,84 - - - -main,btnpause_click,0,0,169,171 -,running -,running - -main,btnreset_click,0,0,174,178 -,running,,elapsedtime,,lblelapsedtime -,running,,elapsedtime - -main,btnstart_click,0,0,157,166 -,running,,timer1,,starttime,,elapsedtime -,running,,starttime - -main,btnsync_click,0,0,181,183 -,canvas1 - -,synchronizeclock,,drawclock,,drawhand -main,synchronizeclock,0,0,186,188 -,canvas1 - -,drawclock,,drawhand -main,drawclock,0,0,91,120 -,canvas1 - -,drawhand -main,drawhand,0,0,122,126 -,canvas1 - - -main,formatelapsedtime,0,0,147,154 - - - -main,globals,0,1,21,34 -,lblelapsedtime - - -main,process_globals,0,1,13,19 -,running,,starttime,,elapsedtime -,running,,starttime,,elapsedtime - -main,timer1_tick,0,0,78,80 -,myclock - -analogclock,drawclock,analogclock,clearcanvas,analogclock,drawticks,analogclock,drawinterval,analogclock,drawhand -analogclock,initialize,0,1,22,50 - - -,setclocksize,,drawclock,,clearcanvas,,drawticks,,drawinterval,,drawhand -analogclock,drawclock,0,0,78,115 - - -,clearcanvas,,drawticks,,drawinterval,,drawhand -analogclock,addinterval,0,0,150,172 - - -,drawclock,,clearcanvas,,drawticks,,drawinterval,,drawhand -analogclock,class_globals,0,0,1,19 - - - -analogclock,clearcanvas,0,0,72,75 - - - -analogclock,drawticks,0,0,124,147 - - - -analogclock,drawinterval,0,0,174,183 - - - -analogclock,drawhand,0,0,118,122 - - - -analogclock,setclocksize,0,0,53,58 - - -,drawclock,,clearcanvas,,drawticks,,drawinterval,,drawhand -analogclock,setstrokewidths,0,0,61,69 - - -,drawclock,,clearcanvas,,drawticks,,drawinterval,,drawhand -analogclock,startclock,0,0,187,191 - - - -analogclock,timer_tick,0,0,194,196 - - -,drawclock,,clearcanvas,,drawticks,,drawinterval,,drawhand -starter,application_error,0,0,27,29 - - - -starter,process_globals,0,1,6,10 - - - -starter,service_create,0,0,12,16 - - - -starter,service_destroy,0,0,31,33 - - - -starter,service_start,0,0,18,20 - - - -starter,service_taskremoved,0,0,22,24 - - - diff --git a/Objects/shell/src/b4a/example/analogclock.java b/Objects/shell/src/b4a/example/analogclock.java deleted file mode 100644 index 710d948..0000000 --- a/Objects/shell/src/b4a/example/analogclock.java +++ /dev/null @@ -1,32 +0,0 @@ - -package b4a.example; - -import anywheresoftware.b4a.pc.PCBA; -import anywheresoftware.b4a.pc.RemoteObject; - -public class analogclock { - public static RemoteObject myClass; - public analogclock() { - } - public static PCBA staticBA = new PCBA(null, analogclock.class); - -public static RemoteObject __c = RemoteObject.declareNull("anywheresoftware.b4a.keywords.Common"); -public static RemoteObject _xui = RemoteObject.declareNull("anywheresoftware.b4a.objects.B4XViewWrapper.XUI"); -public static RemoteObject _pnlclock = RemoteObject.declareNull("anywheresoftware.b4a.objects.PanelWrapper"); -public static RemoteObject _cvsclock = RemoteObject.declareNull("anywheresoftware.b4a.objects.B4XCanvas"); -public static RemoteObject _clockdiameter = RemoteObject.createImmutable(0f); -public static RemoteObject _centerx = RemoteObject.createImmutable(0f); -public static RemoteObject _centery = RemoteObject.createImmutable(0f); -public static RemoteObject _intervals = RemoteObject.declareNull("anywheresoftware.b4a.objects.collections.List"); -public static RemoteObject _quadrantstrokewidth = RemoteObject.createImmutable(0f); -public static RemoteObject _hourtickstrokewidth = RemoteObject.createImmutable(0f); -public static RemoteObject _minutetickstrokewidth = RemoteObject.createImmutable(0f); -public static RemoteObject _intervalarcstrokewidth = RemoteObject.createImmutable(0f); -public static RemoteObject _hourhandstrokewidth = RemoteObject.createImmutable(0f); -public static RemoteObject _minutehandstrokewidth = RemoteObject.createImmutable(0f); -public static b4a.example.main _main = null; -public static b4a.example.starter _starter = null; -public static Object[] GetGlobals(RemoteObject _ref) throws Exception { - return new Object[] {"centerX",_ref.getField(false, "_centerx"),"centerY",_ref.getField(false, "_centery"),"clockDiameter",_ref.getField(false, "_clockdiameter"),"cvsClock",_ref.getField(false, "_cvsclock"),"hourHandStrokeWidth",_ref.getField(false, "_hourhandstrokewidth"),"hourTickStrokeWidth",_ref.getField(false, "_hourtickstrokewidth"),"intervalArcStrokeWidth",_ref.getField(false, "_intervalarcstrokewidth"),"intervals",_ref.getField(false, "_intervals"),"minuteHandStrokeWidth",_ref.getField(false, "_minutehandstrokewidth"),"minuteTickStrokeWidth",_ref.getField(false, "_minutetickstrokewidth"),"pnlClock",_ref.getField(false, "_pnlclock"),"quadrantStrokeWidth",_ref.getField(false, "_quadrantstrokewidth"),"xui",_ref.getField(false, "_xui")}; -} -} \ No newline at end of file diff --git a/Objects/shell/src/b4a/example/analogclock_subs_0.java b/Objects/shell/src/b4a/example/analogclock_subs_0.java deleted file mode 100644 index 96a9202..0000000 --- a/Objects/shell/src/b4a/example/analogclock_subs_0.java +++ /dev/null @@ -1,610 +0,0 @@ -package b4a.example; - -import anywheresoftware.b4a.BA; -import anywheresoftware.b4a.pc.*; - -public class analogclock_subs_0 { - - -public static RemoteObject _addinterval(RemoteObject __ref,RemoteObject _starthour,RemoteObject _startminute,RemoteObject _endhour,RemoteObject _endminute,RemoteObject _tipo) throws Exception{ -try { - Debug.PushSubsStack("AddInterval (analogclock) ","analogclock",2,__ref.getField(false, "ba"),__ref,150); -if (RapidSub.canDelegate("addinterval")) { return __ref.runUserSub(false, "analogclock","addinterval", __ref, _starthour, _startminute, _endhour, _endminute, _tipo);} -RemoteObject _interval = RemoteObject.declareNull("anywheresoftware.b4a.objects.collections.Map"); -Debug.locals.put("startHour", _starthour); -Debug.locals.put("startMinute", _startminute); -Debug.locals.put("endHour", _endhour); -Debug.locals.put("endMinute", _endminute); -Debug.locals.put("tipo", _tipo); - BA.debugLineNum = 150;BA.debugLine="Public Sub AddInterval(startHour As Int, startMinu"; -Debug.ShouldStop(2097152); - BA.debugLineNum = 151;BA.debugLine="Dim interval As Map"; -Debug.ShouldStop(4194304); -_interval = RemoteObject.createNew ("anywheresoftware.b4a.objects.collections.Map");Debug.locals.put("interval", _interval); - BA.debugLineNum = 152;BA.debugLine="interval.Initialize"; -Debug.ShouldStop(8388608); -_interval.runVoidMethod ("Initialize"); - BA.debugLineNum = 153;BA.debugLine="interval.Put(\"startHour\", startHour)"; -Debug.ShouldStop(16777216); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("startHour"))),(Object)((_starthour))); - BA.debugLineNum = 154;BA.debugLine="interval.Put(\"startMinute\", startMinute)"; -Debug.ShouldStop(33554432); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("startMinute"))),(Object)((_startminute))); - BA.debugLineNum = 155;BA.debugLine="interval.Put(\"endHour\", endHour)"; -Debug.ShouldStop(67108864); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("endHour"))),(Object)((_endhour))); - BA.debugLineNum = 156;BA.debugLine="interval.Put(\"endMinute\", endMinute)"; -Debug.ShouldStop(134217728); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("endMinute"))),(Object)((_endminute))); - BA.debugLineNum = 157;BA.debugLine="Select tipo.ToLowerCase"; -Debug.ShouldStop(268435456); -switch (BA.switchObjectToInt(_tipo.runMethod(true,"toLowerCase"),BA.ObjectToString("mattino"),BA.ObjectToString("pomeriggio"))) { -case 0: { - BA.debugLineNum = 159;BA.debugLine="interval.Put(\"color\", Colors.Blue)"; -Debug.ShouldStop(1073741824); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("color"))),(Object)((analogclock.__c.getField(false,"Colors").getField(true,"Blue")))); - BA.debugLineNum = 160;BA.debugLine="interval.Put(\"radius\", clockDiameter /"; -Debug.ShouldStop(-2147483648); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("radius"))),(Object)((RemoteObject.solve(new RemoteObject[] {__ref.getField(true,"_clockdiameter" /*RemoteObject*/ ),RemoteObject.createImmutable(2),analogclock.__c.runMethod(true,"DipToCurrent",(Object)(BA.numberCast(int.class, 15)))}, "/-",1, 0)))); - BA.debugLineNum = 161;BA.debugLine="interval.Put(\"strokeWidth\", intervalAr"; -Debug.ShouldStop(1); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("strokeWidth"))),(Object)((__ref.getField(true,"_intervalarcstrokewidth" /*RemoteObject*/ )))); - break; } -case 1: { - BA.debugLineNum = 163;BA.debugLine="interval.Put(\"color\", Colors.Green)"; -Debug.ShouldStop(4); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("color"))),(Object)((analogclock.__c.getField(false,"Colors").getField(true,"Green")))); - BA.debugLineNum = 164;BA.debugLine="interval.Put(\"radius\", clockDiameter /"; -Debug.ShouldStop(8); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("radius"))),(Object)((RemoteObject.solve(new RemoteObject[] {__ref.getField(true,"_clockdiameter" /*RemoteObject*/ ),RemoteObject.createImmutable(2),analogclock.__c.runMethod(true,"DipToCurrent",(Object)(BA.numberCast(int.class, 25)))}, "/-",1, 0)))); - BA.debugLineNum = 165;BA.debugLine="interval.Put(\"strokeWidth\", intervalAr"; -Debug.ShouldStop(16); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("strokeWidth"))),(Object)((__ref.getField(true,"_intervalarcstrokewidth" /*RemoteObject*/ )))); - break; } -default: { - BA.debugLineNum = 167;BA.debugLine="Log(\"Tipo di intervallo non riconosciu"; -Debug.ShouldStop(64); -analogclock.__c.runVoidMethod ("LogImpl","31835025",RemoteObject.concat(RemoteObject.createImmutable("Tipo di intervallo non riconosciuto: "),_tipo),0); - BA.debugLineNum = 168;BA.debugLine="Return"; -Debug.ShouldStop(128); -if (true) return RemoteObject.createImmutable(""); - break; } -} -; - BA.debugLineNum = 170;BA.debugLine="intervals.Add(interval)"; -Debug.ShouldStop(512); -__ref.getField(false,"_intervals" /*RemoteObject*/ ).runVoidMethod ("Add",(Object)((_interval.getObject()))); - BA.debugLineNum = 171;BA.debugLine="DrawClock"; -Debug.ShouldStop(1024); -__ref.runClassMethod (b4a.example.analogclock.class, "_drawclock" /*RemoteObject*/ ); - BA.debugLineNum = 172;BA.debugLine="End Sub"; -Debug.ShouldStop(2048); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _class_globals(RemoteObject __ref) throws Exception{ - //BA.debugLineNum = 1;BA.debugLine="Sub Class_Globals"; - //BA.debugLineNum = 2;BA.debugLine="Private xui As XUI"; -analogclock._xui = RemoteObject.createNew ("anywheresoftware.b4a.objects.B4XViewWrapper.XUI");__ref.setField("_xui",analogclock._xui); - //BA.debugLineNum = 4;BA.debugLine="Private pnlClock As Panel ' Pannello in c"; -analogclock._pnlclock = RemoteObject.createNew ("anywheresoftware.b4a.objects.PanelWrapper");__ref.setField("_pnlclock",analogclock._pnlclock); - //BA.debugLineNum = 5;BA.debugLine="Private cvsClock As B4XCanvas ' Canvas per"; -analogclock._cvsclock = RemoteObject.createNew ("anywheresoftware.b4a.objects.B4XCanvas");__ref.setField("_cvsclock",analogclock._cvsclock); - //BA.debugLineNum = 6;BA.debugLine="Private clockDiameter As Float ' Diametro dell"; -analogclock._clockdiameter = RemoteObject.createImmutable(0f);__ref.setField("_clockdiameter",analogclock._clockdiameter); - //BA.debugLineNum = 7;BA.debugLine="Private centerX As Float ' Coordinata X"; -analogclock._centerx = RemoteObject.createImmutable(0f);__ref.setField("_centerx",analogclock._centerx); - //BA.debugLineNum = 8;BA.debugLine="Private centerY As Float ' Coordinata Y"; -analogclock._centery = RemoteObject.createImmutable(0f);__ref.setField("_centery",analogclock._centery); - //BA.debugLineNum = 9;BA.debugLine="Private intervals As List ' Lista degli i"; -analogclock._intervals = RemoteObject.createNew ("anywheresoftware.b4a.objects.collections.List");__ref.setField("_intervals",analogclock._intervals); - //BA.debugLineNum = 12;BA.debugLine="Private quadrantStrokeWidth As Float = 5dip"; -analogclock._quadrantstrokewidth = BA.numberCast(float.class, analogclock.__c.runMethod(true,"DipToCurrent",(Object)(BA.numberCast(int.class, 5))));__ref.setField("_quadrantstrokewidth",analogclock._quadrantstrokewidth); - //BA.debugLineNum = 13;BA.debugLine="Private hourTickStrokeWidth As Float = 5dip"; -analogclock._hourtickstrokewidth = BA.numberCast(float.class, analogclock.__c.runMethod(true,"DipToCurrent",(Object)(BA.numberCast(int.class, 5))));__ref.setField("_hourtickstrokewidth",analogclock._hourtickstrokewidth); - //BA.debugLineNum = 14;BA.debugLine="Private minuteTickStrokeWidth As Float = 2dip"; -analogclock._minutetickstrokewidth = BA.numberCast(float.class, analogclock.__c.runMethod(true,"DipToCurrent",(Object)(BA.numberCast(int.class, 2))));__ref.setField("_minutetickstrokewidth",analogclock._minutetickstrokewidth); - //BA.debugLineNum = 15;BA.debugLine="Private intervalArcStrokeWidth As Float = 5dip"; -analogclock._intervalarcstrokewidth = BA.numberCast(float.class, analogclock.__c.runMethod(true,"DipToCurrent",(Object)(BA.numberCast(int.class, 5))));__ref.setField("_intervalarcstrokewidth",analogclock._intervalarcstrokewidth); - //BA.debugLineNum = 16;BA.debugLine="Private hourHandStrokeWidth As Float = 8dip"; -analogclock._hourhandstrokewidth = BA.numberCast(float.class, analogclock.__c.runMethod(true,"DipToCurrent",(Object)(BA.numberCast(int.class, 8))));__ref.setField("_hourhandstrokewidth",analogclock._hourhandstrokewidth); - //BA.debugLineNum = 17;BA.debugLine="Private minuteHandStrokeWidth As Float = 5dip"; -analogclock._minutehandstrokewidth = BA.numberCast(float.class, analogclock.__c.runMethod(true,"DipToCurrent",(Object)(BA.numberCast(int.class, 5))));__ref.setField("_minutehandstrokewidth",analogclock._minutehandstrokewidth); - //BA.debugLineNum = 18;BA.debugLine="Private intervals As List"; -analogclock._intervals = RemoteObject.createNew ("anywheresoftware.b4a.objects.collections.List");__ref.setField("_intervals",analogclock._intervals); - //BA.debugLineNum = 19;BA.debugLine="End Sub"; -return RemoteObject.createImmutable(""); -} -public static RemoteObject _clearcanvas(RemoteObject __ref,RemoteObject _color) throws Exception{ -try { - Debug.PushSubsStack("ClearCanvas (analogclock) ","analogclock",2,__ref.getField(false, "ba"),__ref,72); -if (RapidSub.canDelegate("clearcanvas")) { return __ref.runUserSub(false, "analogclock","clearcanvas", __ref, _color);} -Debug.locals.put("color", _color); - BA.debugLineNum = 72;BA.debugLine="Private Sub ClearCanvas(color As Int)"; -Debug.ShouldStop(128); - BA.debugLineNum = 73;BA.debugLine="cvsClock.DrawRect(cvsClock.TargetRect, color, Tru"; -Debug.ShouldStop(256); -__ref.getField(false,"_cvsclock" /*RemoteObject*/ ).runVoidMethod ("DrawRect",(Object)(__ref.getField(false,"_cvsclock" /*RemoteObject*/ ).runMethod(false,"getTargetRect")),(Object)(_color),(Object)(analogclock.__c.getField(true,"True")),(Object)(BA.numberCast(float.class, 0))); - BA.debugLineNum = 74;BA.debugLine="cvsClock.Invalidate"; -Debug.ShouldStop(512); -__ref.getField(false,"_cvsclock" /*RemoteObject*/ ).runVoidMethod ("Invalidate"); - BA.debugLineNum = 75;BA.debugLine="End Sub"; -Debug.ShouldStop(1024); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _drawclock(RemoteObject __ref) throws Exception{ -try { - Debug.PushSubsStack("DrawClock (analogclock) ","analogclock",2,__ref.getField(false, "ba"),__ref,78); -if (RapidSub.canDelegate("drawclock")) { return __ref.runUserSub(false, "analogclock","drawclock", __ref);} -RemoteObject _interval = RemoteObject.declareNull("anywheresoftware.b4a.objects.collections.Map"); -RemoteObject _now = RemoteObject.createImmutable(0L); -RemoteObject _hours = RemoteObject.createImmutable(0); -RemoteObject _minutes = RemoteObject.createImmutable(0); -RemoteObject _seconds = RemoteObject.createImmutable(0); -RemoteObject _hourangle = RemoteObject.createImmutable(0f); -RemoteObject _minuteangle = RemoteObject.createImmutable(0f); -RemoteObject _secondangle = RemoteObject.createImmutable(0f); - BA.debugLineNum = 78;BA.debugLine="Public Sub DrawClock"; -Debug.ShouldStop(8192); - BA.debugLineNum = 79;BA.debugLine="cvsClock.Initialize(pnlClock)"; -Debug.ShouldStop(16384); -__ref.getField(false,"_cvsclock" /*RemoteObject*/ ).runVoidMethod ("Initialize",RemoteObject.declareNull("anywheresoftware.b4a.AbsObjectWrapper").runMethod(false, "ConvertToWrapper", RemoteObject.createNew("anywheresoftware.b4a.objects.B4XViewWrapper"), __ref.getField(false,"_pnlclock" /*RemoteObject*/ ).getObject())); - BA.debugLineNum = 82;BA.debugLine="ClearCanvas(Colors.White)"; -Debug.ShouldStop(131072); -__ref.runClassMethod (b4a.example.analogclock.class, "_clearcanvas" /*RemoteObject*/ ,(Object)(analogclock.__c.getField(false,"Colors").getField(true,"White"))); - BA.debugLineNum = 85;BA.debugLine="cvsClock.DrawCircle(centerX, centerY, clockDia"; -Debug.ShouldStop(1048576); -__ref.getField(false,"_cvsclock" /*RemoteObject*/ ).runVoidMethod ("DrawCircle",(Object)(__ref.getField(true,"_centerx" /*RemoteObject*/ )),(Object)(__ref.getField(true,"_centery" /*RemoteObject*/ )),(Object)(BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {__ref.getField(true,"_clockdiameter" /*RemoteObject*/ ),RemoteObject.createImmutable(2)}, "/",0, 0))),(Object)(analogclock.__c.getField(false,"Colors").getField(true,"Black")),(Object)(analogclock.__c.getField(true,"False")),(Object)(__ref.getField(true,"_quadrantstrokewidth" /*RemoteObject*/ ))); - BA.debugLineNum = 88;BA.debugLine="DrawTicks"; -Debug.ShouldStop(8388608); -__ref.runClassMethod (b4a.example.analogclock.class, "_drawticks" /*RemoteObject*/ ); - BA.debugLineNum = 91;BA.debugLine="For Each interval As Map In intervals"; -Debug.ShouldStop(67108864); -_interval = RemoteObject.createNew ("anywheresoftware.b4a.objects.collections.Map"); -{ -final RemoteObject group5 = __ref.getField(false,"_intervals" /*RemoteObject*/ ); -final int groupLen5 = group5.runMethod(true,"getSize").get() -;int index5 = 0; -; -for (; index5 < groupLen5;index5++){ -_interval = RemoteObject.declareNull("anywheresoftware.b4a.AbsObjectWrapper").runMethod(false, "ConvertToWrapper", RemoteObject.createNew("anywheresoftware.b4a.objects.collections.Map"), group5.runMethod(false,"Get",index5));Debug.locals.put("interval", _interval); -Debug.locals.put("interval", _interval); - BA.debugLineNum = 92;BA.debugLine="DrawInterval(interval.Get(\"startHour\"), in"; -Debug.ShouldStop(134217728); -__ref.runClassMethod (b4a.example.analogclock.class, "_drawinterval" /*RemoteObject*/ ,(Object)(BA.numberCast(int.class, _interval.runMethod(false,"Get",(Object)((RemoteObject.createImmutable("startHour")))))),(Object)(BA.numberCast(int.class, _interval.runMethod(false,"Get",(Object)((RemoteObject.createImmutable("startMinute")))))),(Object)(BA.numberCast(int.class, _interval.runMethod(false,"Get",(Object)((RemoteObject.createImmutable("endHour")))))),(Object)(BA.numberCast(int.class, _interval.runMethod(false,"Get",(Object)((RemoteObject.createImmutable("endMinute")))))),(Object)(BA.numberCast(int.class, _interval.runMethod(false,"Get",(Object)((RemoteObject.createImmutable("color")))))),(Object)(BA.numberCast(float.class, _interval.runMethod(false,"Get",(Object)((RemoteObject.createImmutable("radius")))))),(Object)(BA.numberCast(float.class, _interval.runMethod(false,"Get",(Object)((RemoteObject.createImmutable("strokeWidth"))))))); - } -}Debug.locals.put("interval", _interval); -; - BA.debugLineNum = 96;BA.debugLine="Dim now As Long = DateTime.Now"; -Debug.ShouldStop(-2147483648); -_now = analogclock.__c.getField(false,"DateTime").runMethod(true,"getNow");Debug.locals.put("now", _now);Debug.locals.put("now", _now); - BA.debugLineNum = 97;BA.debugLine="Dim Hours As Int = DateTime.GetHour(now) Mod 1"; -Debug.ShouldStop(1); -_hours = RemoteObject.solve(new RemoteObject[] {analogclock.__c.getField(false,"DateTime").runMethod(true,"GetHour",(Object)(_now)),RemoteObject.createImmutable(12)}, "%",0, 1);Debug.locals.put("Hours", _hours);Debug.locals.put("Hours", _hours); - BA.debugLineNum = 98;BA.debugLine="Dim Minutes As Int = DateTime.GetMinute(now)"; -Debug.ShouldStop(2); -_minutes = analogclock.__c.getField(false,"DateTime").runMethod(true,"GetMinute",(Object)(_now));Debug.locals.put("Minutes", _minutes);Debug.locals.put("Minutes", _minutes); - BA.debugLineNum = 99;BA.debugLine="Dim Seconds As Int = DateTime.GetSecond(now)"; -Debug.ShouldStop(4); -_seconds = analogclock.__c.getField(false,"DateTime").runMethod(true,"GetSecond",(Object)(_now));Debug.locals.put("Seconds", _seconds);Debug.locals.put("Seconds", _seconds); - BA.debugLineNum = 102;BA.debugLine="Dim HourAngle As Float = -90 + Hours * 30 + Mi"; -Debug.ShouldStop(32); -_hourangle = BA.numberCast(float.class, -(double) (0 + 90)+(double) (0 + _hours.get().intValue())*(double) (0 + 30)+(double) (0 + _minutes.get().intValue())/(double)(double) (0 + 2));Debug.locals.put("HourAngle", _hourangle);Debug.locals.put("HourAngle", _hourangle); - BA.debugLineNum = 103;BA.debugLine="DrawHand(centerX, centerY, clockDiameter * 0.2"; -Debug.ShouldStop(64); -__ref.runClassMethod (b4a.example.analogclock.class, "_drawhand" /*RemoteObject*/ ,(Object)(__ref.getField(true,"_centerx" /*RemoteObject*/ )),(Object)(__ref.getField(true,"_centery" /*RemoteObject*/ )),(Object)(BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {__ref.getField(true,"_clockdiameter" /*RemoteObject*/ ),RemoteObject.createImmutable(0.25)}, "*",0, 0))),(Object)(_hourangle),(Object)(__ref.getField(true,"_hourhandstrokewidth" /*RemoteObject*/ )),(Object)(analogclock.__c.getField(false,"Colors").getField(true,"Black"))); - BA.debugLineNum = 106;BA.debugLine="Dim MinuteAngle As Float = -90 + Minutes * 6"; -Debug.ShouldStop(512); -_minuteangle = BA.numberCast(float.class, -(double) (0 + 90)+(double) (0 + _minutes.get().intValue())*(double) (0 + 6));Debug.locals.put("MinuteAngle", _minuteangle);Debug.locals.put("MinuteAngle", _minuteangle); - BA.debugLineNum = 107;BA.debugLine="DrawHand(centerX, centerY, clockDiameter * 0.4"; -Debug.ShouldStop(1024); -__ref.runClassMethod (b4a.example.analogclock.class, "_drawhand" /*RemoteObject*/ ,(Object)(__ref.getField(true,"_centerx" /*RemoteObject*/ )),(Object)(__ref.getField(true,"_centery" /*RemoteObject*/ )),(Object)(BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {__ref.getField(true,"_clockdiameter" /*RemoteObject*/ ),RemoteObject.createImmutable(0.4)}, "*",0, 0))),(Object)(_minuteangle),(Object)(__ref.getField(true,"_minutehandstrokewidth" /*RemoteObject*/ )),(Object)(analogclock.__c.getField(false,"Colors").getField(true,"Blue"))); - BA.debugLineNum = 110;BA.debugLine="Dim SecondAngle As Float = -90 + Seconds * 6"; -Debug.ShouldStop(8192); -_secondangle = BA.numberCast(float.class, -(double) (0 + 90)+(double) (0 + _seconds.get().intValue())*(double) (0 + 6));Debug.locals.put("SecondAngle", _secondangle);Debug.locals.put("SecondAngle", _secondangle); - BA.debugLineNum = 111;BA.debugLine="DrawHand(centerX, centerY, clockDiameter * 0.4"; -Debug.ShouldStop(16384); -__ref.runClassMethod (b4a.example.analogclock.class, "_drawhand" /*RemoteObject*/ ,(Object)(__ref.getField(true,"_centerx" /*RemoteObject*/ )),(Object)(__ref.getField(true,"_centery" /*RemoteObject*/ )),(Object)(BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {__ref.getField(true,"_clockdiameter" /*RemoteObject*/ ),RemoteObject.createImmutable(0.45)}, "*",0, 0))),(Object)(_secondangle),(Object)(BA.numberCast(float.class, analogclock.__c.runMethod(true,"DipToCurrent",(Object)(BA.numberCast(int.class, 2))))),(Object)(analogclock.__c.getField(false,"Colors").getField(true,"Red"))); - BA.debugLineNum = 114;BA.debugLine="pnlClock.Invalidate"; -Debug.ShouldStop(131072); -__ref.getField(false,"_pnlclock" /*RemoteObject*/ ).runVoidMethod ("Invalidate"); - BA.debugLineNum = 115;BA.debugLine="End Sub"; -Debug.ShouldStop(262144); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _drawhand(RemoteObject __ref,RemoteObject _x,RemoteObject _y,RemoteObject _length,RemoteObject _angle,RemoteObject _width,RemoteObject _color) throws Exception{ -try { - Debug.PushSubsStack("DrawHand (analogclock) ","analogclock",2,__ref.getField(false, "ba"),__ref,118); -if (RapidSub.canDelegate("drawhand")) { return __ref.runUserSub(false, "analogclock","drawhand", __ref, _x, _y, _length, _angle, _width, _color);} -RemoteObject _endx = RemoteObject.createImmutable(0f); -RemoteObject _endy = RemoteObject.createImmutable(0f); -Debug.locals.put("x", _x); -Debug.locals.put("y", _y); -Debug.locals.put("length", _length); -Debug.locals.put("angle", _angle); -Debug.locals.put("width", _width); -Debug.locals.put("color", _color); - BA.debugLineNum = 118;BA.debugLine="Private Sub DrawHand(x As Float, y As Float, lengt"; -Debug.ShouldStop(2097152); - BA.debugLineNum = 119;BA.debugLine="Dim endX As Float = x + length * CosD(angle)"; -Debug.ShouldStop(4194304); -_endx = BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {_x,_length,analogclock.__c.runMethod(true,"CosD",(Object)(BA.numberCast(double.class, _angle)))}, "+*",1, 0));Debug.locals.put("endX", _endx);Debug.locals.put("endX", _endx); - BA.debugLineNum = 120;BA.debugLine="Dim endY As Float = y + length * SinD(angle)"; -Debug.ShouldStop(8388608); -_endy = BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {_y,_length,analogclock.__c.runMethod(true,"SinD",(Object)(BA.numberCast(double.class, _angle)))}, "+*",1, 0));Debug.locals.put("endY", _endy);Debug.locals.put("endY", _endy); - BA.debugLineNum = 121;BA.debugLine="cvsClock.DrawLine(x, y, endX, endY, color, wid"; -Debug.ShouldStop(16777216); -__ref.getField(false,"_cvsclock" /*RemoteObject*/ ).runVoidMethod ("DrawLine",(Object)(_x),(Object)(_y),(Object)(_endx),(Object)(_endy),(Object)(_color),(Object)(_width)); - BA.debugLineNum = 122;BA.debugLine="End Sub"; -Debug.ShouldStop(33554432); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _drawinterval(RemoteObject __ref,RemoteObject _starthour,RemoteObject _startminute,RemoteObject _endhour,RemoteObject _endminute,RemoteObject _color,RemoteObject _radius,RemoteObject _strokewidth) throws Exception{ -try { - Debug.PushSubsStack("DrawInterval (analogclock) ","analogclock",2,__ref.getField(false, "ba"),__ref,174); -if (RapidSub.canDelegate("drawinterval")) { return __ref.runUserSub(false, "analogclock","drawinterval", __ref, _starthour, _startminute, _endhour, _endminute, _color, _radius, _strokewidth);} -RemoteObject _startangle = RemoteObject.createImmutable(0f); -RemoteObject _endangle = RemoteObject.createImmutable(0f); -RemoteObject _sweepangle = RemoteObject.createImmutable(0f); -RemoteObject _path = RemoteObject.declareNull("anywheresoftware.b4a.objects.B4XCanvas.B4XPath"); -Debug.locals.put("startHour", _starthour); -Debug.locals.put("startMinute", _startminute); -Debug.locals.put("endHour", _endhour); -Debug.locals.put("endMinute", _endminute); -Debug.locals.put("color", _color); -Debug.locals.put("radius", _radius); -Debug.locals.put("strokeWidth", _strokewidth); - BA.debugLineNum = 174;BA.debugLine="Private Sub DrawInterval(startHour As Int, startMi"; -Debug.ShouldStop(8192); - BA.debugLineNum = 175;BA.debugLine="Dim startAngle As Float = (startHour Mod 12 + sta"; -Debug.ShouldStop(16384); -_startangle = BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {(RemoteObject.solve(new RemoteObject[] {_starthour,RemoteObject.createImmutable(12),_startminute,RemoteObject.createImmutable(60)}, "%+/",1, 0)),RemoteObject.createImmutable(30),RemoteObject.createImmutable(90)}, "*-",1, 0));Debug.locals.put("startAngle", _startangle);Debug.locals.put("startAngle", _startangle); - BA.debugLineNum = 176;BA.debugLine="Dim endAngle As Float = (endHour Mod 12 + endMinu"; -Debug.ShouldStop(32768); -_endangle = BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {(RemoteObject.solve(new RemoteObject[] {_endhour,RemoteObject.createImmutable(12),_endminute,RemoteObject.createImmutable(60)}, "%+/",1, 0)),RemoteObject.createImmutable(30),RemoteObject.createImmutable(90)}, "*-",1, 0));Debug.locals.put("endAngle", _endangle);Debug.locals.put("endAngle", _endangle); - BA.debugLineNum = 177;BA.debugLine="Dim sweepAngle As Float = endAngle - startAngle"; -Debug.ShouldStop(65536); -_sweepangle = BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {_endangle,_startangle}, "-",1, 0));Debug.locals.put("sweepAngle", _sweepangle);Debug.locals.put("sweepAngle", _sweepangle); - BA.debugLineNum = 178;BA.debugLine="If sweepAngle < 0 Then sweepAngle = sweepAngle +"; -Debug.ShouldStop(131072); -if (RemoteObject.solveBoolean("<",_sweepangle,BA.numberCast(double.class, 0))) { -_sweepangle = BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {_sweepangle,RemoteObject.createImmutable(360)}, "+",1, 0));Debug.locals.put("sweepAngle", _sweepangle);}; - BA.debugLineNum = 180;BA.debugLine="Dim path As B4XPath"; -Debug.ShouldStop(524288); -_path = RemoteObject.createNew ("anywheresoftware.b4a.objects.B4XCanvas.B4XPath");Debug.locals.put("path", _path); - BA.debugLineNum = 181;BA.debugLine="path.InitializeArc(centerX, centerY, radius, star"; -Debug.ShouldStop(1048576); -_path.runVoidMethod ("InitializeArc",(Object)(__ref.getField(true,"_centerx" /*RemoteObject*/ )),(Object)(__ref.getField(true,"_centery" /*RemoteObject*/ )),(Object)(_radius),(Object)(_startangle),(Object)(_sweepangle)); - BA.debugLineNum = 182;BA.debugLine="cvsClock.DrawPath(path, color, False, strokeWidth"; -Debug.ShouldStop(2097152); -__ref.getField(false,"_cvsclock" /*RemoteObject*/ ).runVoidMethod ("DrawPath",(Object)(_path),(Object)(_color),(Object)(analogclock.__c.getField(true,"False")),(Object)(_strokewidth)); - BA.debugLineNum = 183;BA.debugLine="End Sub"; -Debug.ShouldStop(4194304); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _drawticks(RemoteObject __ref) throws Exception{ -try { - Debug.PushSubsStack("DrawTicks (analogclock) ","analogclock",2,__ref.getField(false, "ba"),__ref,124); -if (RapidSub.canDelegate("drawticks")) { return __ref.runUserSub(false, "analogclock","drawticks", __ref);} -int _i = 0; -RemoteObject _angle = RemoteObject.createImmutable(0f); -RemoteObject _startx = RemoteObject.createImmutable(0f); -RemoteObject _starty = RemoteObject.createImmutable(0f); -RemoteObject _endx = RemoteObject.createImmutable(0f); -RemoteObject _endy = RemoteObject.createImmutable(0f); - BA.debugLineNum = 124;BA.debugLine="Private Sub DrawTicks"; -Debug.ShouldStop(134217728); - BA.debugLineNum = 125;BA.debugLine="For i = 0 To 59"; -Debug.ShouldStop(268435456); -{ -final int step1 = 1; -final int limit1 = 59; -_i = 0 ; -for (;(step1 > 0 && _i <= limit1) || (step1 < 0 && _i >= limit1) ;_i = ((int)(0 + _i + step1)) ) { -Debug.locals.put("i", _i); - BA.debugLineNum = 126;BA.debugLine="Dim angle As Float = -90 + i * 6"; -Debug.ShouldStop(536870912); -_angle = BA.numberCast(float.class, -(double) (0 + 90)+(double) (0 + _i)*(double) (0 + 6));Debug.locals.put("angle", _angle);Debug.locals.put("angle", _angle); - BA.debugLineNum = 127;BA.debugLine="Dim startX As Float"; -Debug.ShouldStop(1073741824); -_startx = RemoteObject.createImmutable(0f);Debug.locals.put("startX", _startx); - BA.debugLineNum = 128;BA.debugLine="Dim startY As Float"; -Debug.ShouldStop(-2147483648); -_starty = RemoteObject.createImmutable(0f);Debug.locals.put("startY", _starty); - BA.debugLineNum = 129;BA.debugLine="Dim endX As Float"; -Debug.ShouldStop(1); -_endx = RemoteObject.createImmutable(0f);Debug.locals.put("endX", _endx); - BA.debugLineNum = 130;BA.debugLine="Dim endY As Float"; -Debug.ShouldStop(2); -_endy = RemoteObject.createImmutable(0f);Debug.locals.put("endY", _endy); - BA.debugLineNum = 131;BA.debugLine="If i Mod 5 = 0 Then"; -Debug.ShouldStop(4); -if (RemoteObject.solveBoolean("=",RemoteObject.solve(new RemoteObject[] {RemoteObject.createImmutable(_i),RemoteObject.createImmutable(5)}, "%",0, 1),BA.numberCast(double.class, 0))) { - BA.debugLineNum = 133;BA.debugLine="startX = centerX + (clockDiameter / 2"; -Debug.ShouldStop(16); -_startx = BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {__ref.getField(true,"_centerx" /*RemoteObject*/ ),(RemoteObject.solve(new RemoteObject[] {__ref.getField(true,"_clockdiameter" /*RemoteObject*/ ),RemoteObject.createImmutable(2),analogclock.__c.runMethod(true,"DipToCurrent",(Object)(BA.numberCast(int.class, 20)))}, "/-",1, 0)),analogclock.__c.runMethod(true,"CosD",(Object)(BA.numberCast(double.class, _angle)))}, "+*",1, 0));Debug.locals.put("startX", _startx); - BA.debugLineNum = 134;BA.debugLine="startY = centerY + (clockDiameter / 2"; -Debug.ShouldStop(32); -_starty = BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {__ref.getField(true,"_centery" /*RemoteObject*/ ),(RemoteObject.solve(new RemoteObject[] {__ref.getField(true,"_clockdiameter" /*RemoteObject*/ ),RemoteObject.createImmutable(2),analogclock.__c.runMethod(true,"DipToCurrent",(Object)(BA.numberCast(int.class, 20)))}, "/-",1, 0)),analogclock.__c.runMethod(true,"SinD",(Object)(BA.numberCast(double.class, _angle)))}, "+*",1, 0));Debug.locals.put("startY", _starty); - BA.debugLineNum = 135;BA.debugLine="endX = centerX + (clockDiameter / 2 -"; -Debug.ShouldStop(64); -_endx = BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {__ref.getField(true,"_centerx" /*RemoteObject*/ ),(RemoteObject.solve(new RemoteObject[] {__ref.getField(true,"_clockdiameter" /*RemoteObject*/ ),RemoteObject.createImmutable(2),analogclock.__c.runMethod(true,"DipToCurrent",(Object)(BA.numberCast(int.class, 5)))}, "/-",1, 0)),analogclock.__c.runMethod(true,"CosD",(Object)(BA.numberCast(double.class, _angle)))}, "+*",1, 0));Debug.locals.put("endX", _endx); - BA.debugLineNum = 136;BA.debugLine="endY = centerY + (clockDiameter / 2 -"; -Debug.ShouldStop(128); -_endy = BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {__ref.getField(true,"_centery" /*RemoteObject*/ ),(RemoteObject.solve(new RemoteObject[] {__ref.getField(true,"_clockdiameter" /*RemoteObject*/ ),RemoteObject.createImmutable(2),analogclock.__c.runMethod(true,"DipToCurrent",(Object)(BA.numberCast(int.class, 5)))}, "/-",1, 0)),analogclock.__c.runMethod(true,"SinD",(Object)(BA.numberCast(double.class, _angle)))}, "+*",1, 0));Debug.locals.put("endY", _endy); - BA.debugLineNum = 137;BA.debugLine="cvsClock.DrawLine(startX, startY, endX"; -Debug.ShouldStop(256); -__ref.getField(false,"_cvsclock" /*RemoteObject*/ ).runVoidMethod ("DrawLine",(Object)(_startx),(Object)(_starty),(Object)(_endx),(Object)(_endy),(Object)(analogclock.__c.getField(false,"Colors").getField(true,"Black")),(Object)(__ref.getField(true,"_hourtickstrokewidth" /*RemoteObject*/ ))); - }else { - BA.debugLineNum = 140;BA.debugLine="startX = centerX + (clockDiameter / 2"; -Debug.ShouldStop(2048); -_startx = BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {__ref.getField(true,"_centerx" /*RemoteObject*/ ),(RemoteObject.solve(new RemoteObject[] {__ref.getField(true,"_clockdiameter" /*RemoteObject*/ ),RemoteObject.createImmutable(2),analogclock.__c.runMethod(true,"DipToCurrent",(Object)(BA.numberCast(int.class, 10)))}, "/-",1, 0)),analogclock.__c.runMethod(true,"CosD",(Object)(BA.numberCast(double.class, _angle)))}, "+*",1, 0));Debug.locals.put("startX", _startx); - BA.debugLineNum = 141;BA.debugLine="startY = centerY + (clockDiameter / 2"; -Debug.ShouldStop(4096); -_starty = BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {__ref.getField(true,"_centery" /*RemoteObject*/ ),(RemoteObject.solve(new RemoteObject[] {__ref.getField(true,"_clockdiameter" /*RemoteObject*/ ),RemoteObject.createImmutable(2),analogclock.__c.runMethod(true,"DipToCurrent",(Object)(BA.numberCast(int.class, 10)))}, "/-",1, 0)),analogclock.__c.runMethod(true,"SinD",(Object)(BA.numberCast(double.class, _angle)))}, "+*",1, 0));Debug.locals.put("startY", _starty); - BA.debugLineNum = 142;BA.debugLine="endX = centerX + (clockDiameter / 2 -"; -Debug.ShouldStop(8192); -_endx = BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {__ref.getField(true,"_centerx" /*RemoteObject*/ ),(RemoteObject.solve(new RemoteObject[] {__ref.getField(true,"_clockdiameter" /*RemoteObject*/ ),RemoteObject.createImmutable(2),analogclock.__c.runMethod(true,"DipToCurrent",(Object)(BA.numberCast(int.class, 5)))}, "/-",1, 0)),analogclock.__c.runMethod(true,"CosD",(Object)(BA.numberCast(double.class, _angle)))}, "+*",1, 0));Debug.locals.put("endX", _endx); - BA.debugLineNum = 143;BA.debugLine="endY = centerY + (clockDiameter / 2 -"; -Debug.ShouldStop(16384); -_endy = BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {__ref.getField(true,"_centery" /*RemoteObject*/ ),(RemoteObject.solve(new RemoteObject[] {__ref.getField(true,"_clockdiameter" /*RemoteObject*/ ),RemoteObject.createImmutable(2),analogclock.__c.runMethod(true,"DipToCurrent",(Object)(BA.numberCast(int.class, 5)))}, "/-",1, 0)),analogclock.__c.runMethod(true,"SinD",(Object)(BA.numberCast(double.class, _angle)))}, "+*",1, 0));Debug.locals.put("endY", _endy); - BA.debugLineNum = 144;BA.debugLine="cvsClock.DrawLine(startX, startY, endX"; -Debug.ShouldStop(32768); -__ref.getField(false,"_cvsclock" /*RemoteObject*/ ).runVoidMethod ("DrawLine",(Object)(_startx),(Object)(_starty),(Object)(_endx),(Object)(_endy),(Object)(analogclock.__c.getField(false,"Colors").getField(true,"Black")),(Object)(__ref.getField(true,"_minutetickstrokewidth" /*RemoteObject*/ ))); - }; - } -}Debug.locals.put("i", _i); -; - BA.debugLineNum = 147;BA.debugLine="End Sub"; -Debug.ShouldStop(262144); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _initialize(RemoteObject __ref,RemoteObject _ba,RemoteObject _parentpanel,RemoteObject _percentageofwidth) throws Exception{ -try { - Debug.PushSubsStack("Initialize (analogclock) ","analogclock",2,__ref.getField(false, "ba"),__ref,22); -if (RapidSub.canDelegate("initialize")) { return __ref.runUserSub(false, "analogclock","initialize", __ref, _ba, _parentpanel, _percentageofwidth);} -__ref.runVoidMethodAndSync("innerInitializeHelper", _ba); -RemoteObject _interval = RemoteObject.declareNull("anywheresoftware.b4a.objects.collections.Map"); -Debug.locals.put("ba", _ba); -Debug.locals.put("ParentPanel", _parentpanel); -Debug.locals.put("PercentageOfWidth", _percentageofwidth); - BA.debugLineNum = 22;BA.debugLine="Public Sub Initialize(ParentPanel As Panel, Percen"; -Debug.ShouldStop(2097152); - BA.debugLineNum = 23;BA.debugLine="pnlClock = ParentPanel"; -Debug.ShouldStop(4194304); -__ref.setField ("_pnlclock" /*RemoteObject*/ ,_parentpanel); - BA.debugLineNum = 24;BA.debugLine="cvsClock.Initialize(pnlClock)"; -Debug.ShouldStop(8388608); -__ref.getField(false,"_cvsclock" /*RemoteObject*/ ).runVoidMethod ("Initialize",RemoteObject.declareNull("anywheresoftware.b4a.AbsObjectWrapper").runMethod(false, "ConvertToWrapper", RemoteObject.createNew("anywheresoftware.b4a.objects.B4XViewWrapper"), __ref.getField(false,"_pnlclock" /*RemoteObject*/ ).getObject())); - BA.debugLineNum = 25;BA.debugLine="intervals.Initialize"; -Debug.ShouldStop(16777216); -__ref.getField(false,"_intervals" /*RemoteObject*/ ).runVoidMethod ("Initialize"); - BA.debugLineNum = 26;BA.debugLine="Dim interval As Map"; -Debug.ShouldStop(33554432); -_interval = RemoteObject.createNew ("anywheresoftware.b4a.objects.collections.Map");Debug.locals.put("interval", _interval); - BA.debugLineNum = 27;BA.debugLine="interval.Initialize"; -Debug.ShouldStop(67108864); -_interval.runVoidMethod ("Initialize"); - BA.debugLineNum = 28;BA.debugLine="interval.Put(\"startHour\", 8)"; -Debug.ShouldStop(134217728); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("startHour"))),(Object)(RemoteObject.createImmutable((8)))); - BA.debugLineNum = 29;BA.debugLine="interval.Put(\"startMinute\", 0)"; -Debug.ShouldStop(268435456); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("startMinute"))),(Object)(RemoteObject.createImmutable((0)))); - BA.debugLineNum = 30;BA.debugLine="interval.Put(\"endHour\", 12)"; -Debug.ShouldStop(536870912); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("endHour"))),(Object)(RemoteObject.createImmutable((12)))); - BA.debugLineNum = 31;BA.debugLine="interval.Put(\"endMinute\", 0)"; -Debug.ShouldStop(1073741824); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("endMinute"))),(Object)(RemoteObject.createImmutable((0)))); - BA.debugLineNum = 32;BA.debugLine="interval.Put(\"color\", Colors.Magenta)"; -Debug.ShouldStop(-2147483648); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("color"))),(Object)((analogclock.__c.getField(false,"Colors").getField(true,"Magenta")))); - BA.debugLineNum = 33;BA.debugLine="interval.Put(\"radius\",(clockDiameter/2 +25dip))"; -Debug.ShouldStop(1); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("radius"))),(Object)(((RemoteObject.solve(new RemoteObject[] {__ref.getField(true,"_clockdiameter" /*RemoteObject*/ ),RemoteObject.createImmutable(2),analogclock.__c.runMethod(true,"DipToCurrent",(Object)(BA.numberCast(int.class, 25)))}, "/+",1, 0))))); - BA.debugLineNum = 34;BA.debugLine="interval.Put(\"strokeWidth\", 5dip)"; -Debug.ShouldStop(2); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("strokeWidth"))),(Object)((analogclock.__c.runMethod(true,"DipToCurrent",(Object)(BA.numberCast(int.class, 5)))))); - BA.debugLineNum = 35;BA.debugLine="interval.Put(\"period\", \"mattino\")"; -Debug.ShouldStop(4); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("period"))),(Object)((RemoteObject.createImmutable("mattino")))); - BA.debugLineNum = 36;BA.debugLine="intervals.Add(interval)"; -Debug.ShouldStop(8); -__ref.getField(false,"_intervals" /*RemoteObject*/ ).runVoidMethod ("Add",(Object)((_interval.getObject()))); - BA.debugLineNum = 38;BA.debugLine="interval.Initialize"; -Debug.ShouldStop(32); -_interval.runVoidMethod ("Initialize"); - BA.debugLineNum = 39;BA.debugLine="interval.Put(\"startHour\", 13)"; -Debug.ShouldStop(64); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("startHour"))),(Object)(RemoteObject.createImmutable((13)))); - BA.debugLineNum = 40;BA.debugLine="interval.Put(\"startMinute\", 0)"; -Debug.ShouldStop(128); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("startMinute"))),(Object)(RemoteObject.createImmutable((0)))); - BA.debugLineNum = 41;BA.debugLine="interval.Put(\"endHour\", 17)"; -Debug.ShouldStop(256); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("endHour"))),(Object)(RemoteObject.createImmutable((17)))); - BA.debugLineNum = 42;BA.debugLine="interval.Put(\"endMinute\", 0)"; -Debug.ShouldStop(512); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("endMinute"))),(Object)(RemoteObject.createImmutable((0)))); - BA.debugLineNum = 43;BA.debugLine="interval.Put(\"color\", Colors.Green)"; -Debug.ShouldStop(1024); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("color"))),(Object)((analogclock.__c.getField(false,"Colors").getField(true,"Green")))); - BA.debugLineNum = 44;BA.debugLine="interval.Put(\"radius\", (clockDiameter/2 )+25dip)"; -Debug.ShouldStop(2048); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("radius"))),(Object)((RemoteObject.solve(new RemoteObject[] {(RemoteObject.solve(new RemoteObject[] {__ref.getField(true,"_clockdiameter" /*RemoteObject*/ ),RemoteObject.createImmutable(2)}, "/",0, 0)),analogclock.__c.runMethod(true,"DipToCurrent",(Object)(BA.numberCast(int.class, 25)))}, "+",1, 0)))); - BA.debugLineNum = 45;BA.debugLine="interval.Put(\"strokeWidth\", 5dip)"; -Debug.ShouldStop(4096); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("strokeWidth"))),(Object)((analogclock.__c.runMethod(true,"DipToCurrent",(Object)(BA.numberCast(int.class, 5)))))); - BA.debugLineNum = 46;BA.debugLine="interval.Put(\"period\", \"pomeriggio\")"; -Debug.ShouldStop(8192); -_interval.runVoidMethod ("Put",(Object)(RemoteObject.createImmutable(("period"))),(Object)((RemoteObject.createImmutable("pomeriggio")))); - BA.debugLineNum = 47;BA.debugLine="intervals.Add(interval)"; -Debug.ShouldStop(16384); -__ref.getField(false,"_intervals" /*RemoteObject*/ ).runVoidMethod ("Add",(Object)((_interval.getObject()))); - BA.debugLineNum = 49;BA.debugLine="SetClockSize(PercentageOfWidth)"; -Debug.ShouldStop(65536); -__ref.runClassMethod (b4a.example.analogclock.class, "_setclocksize" /*RemoteObject*/ ,(Object)(_percentageofwidth)); - BA.debugLineNum = 50;BA.debugLine="End Sub"; -Debug.ShouldStop(131072); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _setclocksize(RemoteObject __ref,RemoteObject _percentageofwidth) throws Exception{ -try { - Debug.PushSubsStack("SetClockSize (analogclock) ","analogclock",2,__ref.getField(false, "ba"),__ref,53); -if (RapidSub.canDelegate("setclocksize")) { return __ref.runUserSub(false, "analogclock","setclocksize", __ref, _percentageofwidth);} -Debug.locals.put("PercentageOfWidth", _percentageofwidth); - BA.debugLineNum = 53;BA.debugLine="Public Sub SetClockSize(PercentageOfWidth As Float"; -Debug.ShouldStop(1048576); - BA.debugLineNum = 54;BA.debugLine="clockDiameter = pnlClock.Width * PercentageOfW"; -Debug.ShouldStop(2097152); -__ref.setField ("_clockdiameter" /*RemoteObject*/ ,BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {__ref.getField(false,"_pnlclock" /*RemoteObject*/ ).runMethod(true,"getWidth"),_percentageofwidth,RemoteObject.createImmutable(100)}, "*/",0, 0))); - BA.debugLineNum = 55;BA.debugLine="centerX = pnlClock.Width / 2"; -Debug.ShouldStop(4194304); -__ref.setField ("_centerx" /*RemoteObject*/ ,BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {__ref.getField(false,"_pnlclock" /*RemoteObject*/ ).runMethod(true,"getWidth"),RemoteObject.createImmutable(2)}, "/",0, 0))); - BA.debugLineNum = 56;BA.debugLine="centerY = pnlClock.Height / 2"; -Debug.ShouldStop(8388608); -__ref.setField ("_centery" /*RemoteObject*/ ,BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {__ref.getField(false,"_pnlclock" /*RemoteObject*/ ).runMethod(true,"getHeight"),RemoteObject.createImmutable(2)}, "/",0, 0))); - BA.debugLineNum = 57;BA.debugLine="DrawClock"; -Debug.ShouldStop(16777216); -__ref.runClassMethod (b4a.example.analogclock.class, "_drawclock" /*RemoteObject*/ ); - BA.debugLineNum = 58;BA.debugLine="End Sub"; -Debug.ShouldStop(33554432); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _setstrokewidths(RemoteObject __ref,RemoteObject _quadrantwidth,RemoteObject _hourtickwidth,RemoteObject _minutetickwidth,RemoteObject _intervalarcwidth,RemoteObject _hourhandwidth,RemoteObject _minutehandwidth) throws Exception{ -try { - Debug.PushSubsStack("SetStrokeWidths (analogclock) ","analogclock",2,__ref.getField(false, "ba"),__ref,61); -if (RapidSub.canDelegate("setstrokewidths")) { return __ref.runUserSub(false, "analogclock","setstrokewidths", __ref, _quadrantwidth, _hourtickwidth, _minutetickwidth, _intervalarcwidth, _hourhandwidth, _minutehandwidth);} -Debug.locals.put("quadrantWidth", _quadrantwidth); -Debug.locals.put("hourTickWidth", _hourtickwidth); -Debug.locals.put("minuteTickWidth", _minutetickwidth); -Debug.locals.put("intervalArcWidth", _intervalarcwidth); -Debug.locals.put("hourHandWidth", _hourhandwidth); -Debug.locals.put("minuteHandWidth", _minutehandwidth); - BA.debugLineNum = 61;BA.debugLine="Public Sub SetStrokeWidths(quadrantWidth As Float,"; -Debug.ShouldStop(268435456); - BA.debugLineNum = 62;BA.debugLine="quadrantStrokeWidth = quadrantWidth"; -Debug.ShouldStop(536870912); -__ref.setField ("_quadrantstrokewidth" /*RemoteObject*/ ,_quadrantwidth); - BA.debugLineNum = 63;BA.debugLine="hourTickStrokeWidth = hourTickWidth"; -Debug.ShouldStop(1073741824); -__ref.setField ("_hourtickstrokewidth" /*RemoteObject*/ ,_hourtickwidth); - BA.debugLineNum = 64;BA.debugLine="minuteTickStrokeWidth = minuteTickWidth"; -Debug.ShouldStop(-2147483648); -__ref.setField ("_minutetickstrokewidth" /*RemoteObject*/ ,_minutetickwidth); - BA.debugLineNum = 65;BA.debugLine="intervalArcStrokeWidth = intervalArcWidth"; -Debug.ShouldStop(1); -__ref.setField ("_intervalarcstrokewidth" /*RemoteObject*/ ,_intervalarcwidth); - BA.debugLineNum = 66;BA.debugLine="hourHandStrokeWidth = hourHandWidth"; -Debug.ShouldStop(2); -__ref.setField ("_hourhandstrokewidth" /*RemoteObject*/ ,_hourhandwidth); - BA.debugLineNum = 67;BA.debugLine="minuteHandStrokeWidth = minuteHandWidth"; -Debug.ShouldStop(4); -__ref.setField ("_minutehandstrokewidth" /*RemoteObject*/ ,_minutehandwidth); - BA.debugLineNum = 68;BA.debugLine="DrawClock"; -Debug.ShouldStop(8); -__ref.runClassMethod (b4a.example.analogclock.class, "_drawclock" /*RemoteObject*/ ); - BA.debugLineNum = 69;BA.debugLine="End Sub"; -Debug.ShouldStop(16); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _startclock(RemoteObject __ref) throws Exception{ -try { - Debug.PushSubsStack("StartClock (analogclock) ","analogclock",2,__ref.getField(false, "ba"),__ref,187); -if (RapidSub.canDelegate("startclock")) { return __ref.runUserSub(false, "analogclock","startclock", __ref);} -RemoteObject _timer = RemoteObject.declareNull("anywheresoftware.b4a.objects.Timer"); - BA.debugLineNum = 187;BA.debugLine="Public Sub StartClock"; -Debug.ShouldStop(67108864); - BA.debugLineNum = 188;BA.debugLine="Dim timer As Timer"; -Debug.ShouldStop(134217728); -_timer = RemoteObject.createNew ("anywheresoftware.b4a.objects.Timer");Debug.locals.put("timer", _timer); - BA.debugLineNum = 189;BA.debugLine="timer.Initialize(\"timer\", 1000)"; -Debug.ShouldStop(268435456); -_timer.runVoidMethod ("Initialize",__ref.getField(false, "ba"),(Object)(BA.ObjectToString("timer")),(Object)(BA.numberCast(long.class, 1000))); - BA.debugLineNum = 190;BA.debugLine="timer.Enabled = True"; -Debug.ShouldStop(536870912); -_timer.runMethod(true,"setEnabled",analogclock.__c.getField(true,"True")); - BA.debugLineNum = 191;BA.debugLine="End Sub"; -Debug.ShouldStop(1073741824); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _timer_tick(RemoteObject __ref) throws Exception{ -try { - Debug.PushSubsStack("timer_Tick (analogclock) ","analogclock",2,__ref.getField(false, "ba"),__ref,194); -if (RapidSub.canDelegate("timer_tick")) { return __ref.runUserSub(false, "analogclock","timer_tick", __ref);} - BA.debugLineNum = 194;BA.debugLine="Private Sub timer_Tick"; -Debug.ShouldStop(2); - BA.debugLineNum = 195;BA.debugLine="DrawClock"; -Debug.ShouldStop(4); -__ref.runClassMethod (b4a.example.analogclock.class, "_drawclock" /*RemoteObject*/ ); - BA.debugLineNum = 196;BA.debugLine="End Sub"; -Debug.ShouldStop(8); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -} \ No newline at end of file diff --git a/Objects/shell/src/b4a/example/main.java b/Objects/shell/src/b4a/example/main.java deleted file mode 100644 index 83c473c..0000000 --- a/Objects/shell/src/b4a/example/main.java +++ /dev/null @@ -1,75 +0,0 @@ - -package b4a.example; - -import java.io.IOException; -import anywheresoftware.b4a.BA; -import anywheresoftware.b4a.pc.PCBA; -import anywheresoftware.b4a.pc.RDebug; -import anywheresoftware.b4a.pc.RemoteObject; -import anywheresoftware.b4a.pc.RDebug.IRemote; -import anywheresoftware.b4a.pc.Debug; -import anywheresoftware.b4a.pc.B4XTypes.B4XClass; -import anywheresoftware.b4a.pc.B4XTypes.DeviceClass; - -public class main implements IRemote{ - public static main mostCurrent; - public static RemoteObject processBA; - public static boolean processGlobalsRun; - public static RemoteObject myClass; - public static RemoteObject remoteMe; - public main() { - mostCurrent = this; - } - public RemoteObject getRemoteMe() { - return remoteMe; - } - - public static void main (String[] args) throws Exception { - new RDebug(args[0], Integer.parseInt(args[1]), Integer.parseInt(args[2]), args[3]); - RDebug.INSTANCE.waitForTask(); - - } - static { - anywheresoftware.b4a.pc.RapidSub.moduleToObject.put(new B4XClass("main"), "b4a.example.main"); - } - -public boolean isSingleton() { - return true; - } - public static RemoteObject getObject() { - return myClass; - } - - public RemoteObject activityBA; - public RemoteObject _activity; - private PCBA pcBA; - - public PCBA create(Object[] args) throws ClassNotFoundException{ - processBA = (RemoteObject) args[1]; - activityBA = (RemoteObject) args[2]; - _activity = (RemoteObject) args[3]; - anywheresoftware.b4a.keywords.Common.Density = (Float)args[4]; - remoteMe = (RemoteObject) args[5]; - pcBA = new PCBA(this, main.class); - main_subs_0.initializeProcessGlobals(); - return pcBA; - } -public static RemoteObject __c = RemoteObject.declareNull("anywheresoftware.b4a.keywords.Common"); -public static RemoteObject _timer1 = RemoteObject.declareNull("anywheresoftware.b4a.objects.Timer"); -public static RemoteObject _running = RemoteObject.createImmutable(false); -public static RemoteObject _starttime = RemoteObject.createImmutable(0L); -public static RemoteObject _elapsedtime = RemoteObject.createImmutable(0L); -public static RemoteObject _canvas1 = RemoteObject.declareNull("anywheresoftware.b4a.objects.drawable.CanvasWrapper"); -public static RemoteObject _panel1 = RemoteObject.declareNull("anywheresoftware.b4a.objects.PanelWrapper"); -public static RemoteObject _btnstart = RemoteObject.declareNull("anywheresoftware.b4a.objects.ButtonWrapper"); -public static RemoteObject _btnpause = RemoteObject.declareNull("anywheresoftware.b4a.objects.ButtonWrapper"); -public static RemoteObject _btnreset = RemoteObject.declareNull("anywheresoftware.b4a.objects.ButtonWrapper"); -public static RemoteObject _btnsync = RemoteObject.declareNull("anywheresoftware.b4a.objects.ButtonWrapper"); -public static RemoteObject _lblelapsedtime = RemoteObject.declareNull("anywheresoftware.b4a.objects.LabelWrapper"); -public static RemoteObject _pnlclock = RemoteObject.declareNull("anywheresoftware.b4a.objects.PanelWrapper"); -public static RemoteObject _myclock = RemoteObject.declareNull("b4a.example.analogclock"); -public static b4a.example.starter _starter = null; - public Object[] GetGlobals() { - return new Object[] {"Activity",main.mostCurrent._activity,"BtnPause",main.mostCurrent._btnpause,"BtnReset",main.mostCurrent._btnreset,"BtnStart",main.mostCurrent._btnstart,"BtnSync",main.mostCurrent._btnsync,"Canvas1",main.mostCurrent._canvas1,"ElapsedTime",main._elapsedtime,"lblElapsedTime",main.mostCurrent._lblelapsedtime,"myClock",main.mostCurrent._myclock,"Panel1",main.mostCurrent._panel1,"pnlClock",main.mostCurrent._pnlclock,"Running",main._running,"Starter",Debug.moduleToString(b4a.example.starter.class),"StartTime",main._starttime,"Timer1",main._timer1}; -} -} \ No newline at end of file diff --git a/Objects/shell/src/b4a/example/main_subs_0.java b/Objects/shell/src/b4a/example/main_subs_0.java deleted file mode 100644 index e487a62..0000000 --- a/Objects/shell/src/b4a/example/main_subs_0.java +++ /dev/null @@ -1,408 +0,0 @@ -package b4a.example; - -import anywheresoftware.b4a.BA; -import anywheresoftware.b4a.pc.*; - -public class main_subs_0 { - - -public static RemoteObject _activity_create(RemoteObject _firsttime) throws Exception{ -try { - Debug.PushSubsStack("Activity_Create (main) ","main",0,main.mostCurrent.activityBA,main.mostCurrent,48); -if (RapidSub.canDelegate("activity_create")) { return b4a.example.main.remoteMe.runUserSub(false, "main","activity_create", _firsttime);} -Debug.locals.put("FirstTime", _firsttime); - BA.debugLineNum = 48;BA.debugLine="Sub Activity_Create(FirstTime As Boolean)"; -Debug.ShouldStop(32768); - BA.debugLineNum = 49;BA.debugLine="Activity.LoadLayout(\"Main_Layout\")"; -Debug.ShouldStop(65536); -main.mostCurrent._activity.runMethodAndSync(false,"LoadLayout",(Object)(RemoteObject.createImmutable("Main_Layout")),main.mostCurrent.activityBA); - BA.debugLineNum = 50;BA.debugLine="Log(\"Layout caricato correttamente.\")"; -Debug.ShouldStop(131072); -main.mostCurrent.__c.runVoidMethod ("LogImpl","3131074",RemoteObject.createImmutable("Layout caricato correttamente."),0); - BA.debugLineNum = 53;BA.debugLine="myClock.Initialize(pnlClock, 50) ' L'orologio avr"; -Debug.ShouldStop(1048576); -main.mostCurrent._myclock.runClassMethod (b4a.example.analogclock.class, "_initialize" /*RemoteObject*/ ,main.mostCurrent.activityBA,(Object)(main.mostCurrent._pnlclock),(Object)(BA.numberCast(float.class, 50))); - BA.debugLineNum = 56;BA.debugLine="Timer1.Initialize(\"Timer1\", 1000) ' Aggiornamento"; -Debug.ShouldStop(8388608); -main._timer1.runVoidMethod ("Initialize",main.processBA,(Object)(BA.ObjectToString("Timer1")),(Object)(BA.numberCast(long.class, 1000))); - BA.debugLineNum = 57;BA.debugLine="Timer1.Enabled = True"; -Debug.ShouldStop(16777216); -main._timer1.runMethod(true,"setEnabled",main.mostCurrent.__c.getField(true,"True")); - BA.debugLineNum = 73;BA.debugLine="End Sub"; -Debug.ShouldStop(256); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _activity_pause(RemoteObject _userclosed) throws Exception{ -try { - Debug.PushSubsStack("Activity_Pause (main) ","main",0,main.mostCurrent.activityBA,main.mostCurrent,86); -if (RapidSub.canDelegate("activity_pause")) { return b4a.example.main.remoteMe.runUserSub(false, "main","activity_pause", _userclosed);} -Debug.locals.put("UserClosed", _userclosed); - BA.debugLineNum = 86;BA.debugLine="Sub Activity_Pause (UserClosed As Boolean)"; -Debug.ShouldStop(2097152); - BA.debugLineNum = 88;BA.debugLine="End Sub"; -Debug.ShouldStop(8388608); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _activity_resume() throws Exception{ -try { - Debug.PushSubsStack("Activity_Resume (main) ","main",0,main.mostCurrent.activityBA,main.mostCurrent,82); -if (RapidSub.canDelegate("activity_resume")) { return b4a.example.main.remoteMe.runUserSub(false, "main","activity_resume");} - BA.debugLineNum = 82;BA.debugLine="Sub Activity_Resume"; -Debug.ShouldStop(131072); - BA.debugLineNum = 84;BA.debugLine="End Sub"; -Debug.ShouldStop(524288); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _btnpause_click() throws Exception{ -try { - Debug.PushSubsStack("BtnPause_Click (main) ","main",0,main.mostCurrent.activityBA,main.mostCurrent,169); -if (RapidSub.canDelegate("btnpause_click")) { return b4a.example.main.remoteMe.runUserSub(false, "main","btnpause_click");} - BA.debugLineNum = 169;BA.debugLine="Sub BtnPause_Click"; -Debug.ShouldStop(256); - BA.debugLineNum = 170;BA.debugLine="Running = False"; -Debug.ShouldStop(512); -main._running = main.mostCurrent.__c.getField(true,"False"); - BA.debugLineNum = 171;BA.debugLine="End Sub"; -Debug.ShouldStop(1024); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _btnreset_click() throws Exception{ -try { - Debug.PushSubsStack("BtnReset_Click (main) ","main",0,main.mostCurrent.activityBA,main.mostCurrent,174); -if (RapidSub.canDelegate("btnreset_click")) { return b4a.example.main.remoteMe.runUserSub(false, "main","btnreset_click");} - BA.debugLineNum = 174;BA.debugLine="Sub BtnReset_Click"; -Debug.ShouldStop(8192); - BA.debugLineNum = 175;BA.debugLine="Running = False"; -Debug.ShouldStop(16384); -main._running = main.mostCurrent.__c.getField(true,"False"); - BA.debugLineNum = 176;BA.debugLine="ElapsedTime = 0"; -Debug.ShouldStop(32768); -main._elapsedtime = BA.numberCast(long.class, 0); - BA.debugLineNum = 177;BA.debugLine="lblElapsedTime.Text = \"Tempo: 00:00:00\""; -Debug.ShouldStop(65536); -main.mostCurrent._lblelapsedtime.runMethod(true,"setText",BA.ObjectToCharSequence("Tempo: 00:00:00")); - BA.debugLineNum = 178;BA.debugLine="End Sub"; -Debug.ShouldStop(131072); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _btnstart_click() throws Exception{ -try { - Debug.PushSubsStack("BtnStart_Click (main) ","main",0,main.mostCurrent.activityBA,main.mostCurrent,157); -if (RapidSub.canDelegate("btnstart_click")) { return b4a.example.main.remoteMe.runUserSub(false, "main","btnstart_click");} - BA.debugLineNum = 157;BA.debugLine="Sub BtnStart_Click"; -Debug.ShouldStop(268435456); - BA.debugLineNum = 158;BA.debugLine="If Not(Running) Then"; -Debug.ShouldStop(536870912); -if (main.mostCurrent.__c.runMethod(true,"Not",(Object)(main._running)).get().booleanValue()) { - BA.debugLineNum = 159;BA.debugLine="Running = True"; -Debug.ShouldStop(1073741824); -main._running = main.mostCurrent.__c.getField(true,"True"); - BA.debugLineNum = 161;BA.debugLine="Timer1.Initialize(\"Timer1\",1000)"; -Debug.ShouldStop(1); -main._timer1.runVoidMethod ("Initialize",main.processBA,(Object)(BA.ObjectToString("Timer1")),(Object)(BA.numberCast(long.class, 1000))); - BA.debugLineNum = 163;BA.debugLine="Timer1.Enabled = True"; -Debug.ShouldStop(4); -main._timer1.runMethod(true,"setEnabled",main.mostCurrent.__c.getField(true,"True")); - BA.debugLineNum = 164;BA.debugLine="StartTime = DateTime.Now - ElapsedTime"; -Debug.ShouldStop(8); -main._starttime = RemoteObject.solve(new RemoteObject[] {main.mostCurrent.__c.getField(false,"DateTime").runMethod(true,"getNow"),main._elapsedtime}, "-",1, 2); - }; - BA.debugLineNum = 166;BA.debugLine="End Sub"; -Debug.ShouldStop(32); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _btnsync_click() throws Exception{ -try { - Debug.PushSubsStack("BtnSync_Click (main) ","main",0,main.mostCurrent.activityBA,main.mostCurrent,181); -if (RapidSub.canDelegate("btnsync_click")) { return b4a.example.main.remoteMe.runUserSub(false, "main","btnsync_click");} - BA.debugLineNum = 181;BA.debugLine="Sub BtnSync_Click"; -Debug.ShouldStop(1048576); - BA.debugLineNum = 182;BA.debugLine="SynchronizeClock"; -Debug.ShouldStop(2097152); -_synchronizeclock(); - BA.debugLineNum = 183;BA.debugLine="End Sub"; -Debug.ShouldStop(4194304); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _drawclock() throws Exception{ -try { - Debug.PushSubsStack("DrawClock (main) ","main",0,main.mostCurrent.activityBA,main.mostCurrent,91); -if (RapidSub.canDelegate("drawclock")) { return b4a.example.main.remoteMe.runUserSub(false, "main","drawclock");} -RemoteObject _now = RemoteObject.createImmutable(0L); -RemoteObject _hours = RemoteObject.createImmutable(0); -RemoteObject _minutes = RemoteObject.createImmutable(0); -RemoteObject _seconds = RemoteObject.createImmutable(0); -RemoteObject _x = RemoteObject.createImmutable(0); -RemoteObject _y = RemoteObject.createImmutable(0); -RemoteObject _radius = RemoteObject.createImmutable(0); -RemoteObject _hourangle = RemoteObject.createImmutable(0f); -RemoteObject _minuteangle = RemoteObject.createImmutable(0f); -RemoteObject _secondangle = RemoteObject.createImmutable(0f); - BA.debugLineNum = 91;BA.debugLine="Sub DrawClock"; -Debug.ShouldStop(67108864); - BA.debugLineNum = 92;BA.debugLine="Canvas1.Initialize(Activity)"; -Debug.ShouldStop(134217728); -main.mostCurrent._canvas1.runVoidMethod ("Initialize",(Object)((main.mostCurrent._activity.getObject()))); - BA.debugLineNum = 93;BA.debugLine="Dim now As Long = DateTime.Now"; -Debug.ShouldStop(268435456); -_now = main.mostCurrent.__c.getField(false,"DateTime").runMethod(true,"getNow");Debug.locals.put("now", _now);Debug.locals.put("now", _now); - BA.debugLineNum = 94;BA.debugLine="Dim Hours As Int = DateTime.GetHour(now) Mod 1"; -Debug.ShouldStop(536870912); -_hours = RemoteObject.solve(new RemoteObject[] {main.mostCurrent.__c.getField(false,"DateTime").runMethod(true,"GetHour",(Object)(_now)),RemoteObject.createImmutable(12)}, "%",0, 1);Debug.locals.put("Hours", _hours);Debug.locals.put("Hours", _hours); - BA.debugLineNum = 95;BA.debugLine="Dim Minutes As Int = DateTime.GetMinute(now)"; -Debug.ShouldStop(1073741824); -_minutes = main.mostCurrent.__c.getField(false,"DateTime").runMethod(true,"GetMinute",(Object)(_now));Debug.locals.put("Minutes", _minutes);Debug.locals.put("Minutes", _minutes); - BA.debugLineNum = 96;BA.debugLine="Dim Seconds As Int = DateTime.GetSecond(now)"; -Debug.ShouldStop(-2147483648); -_seconds = main.mostCurrent.__c.getField(false,"DateTime").runMethod(true,"GetSecond",(Object)(_now));Debug.locals.put("Seconds", _seconds);Debug.locals.put("Seconds", _seconds); - BA.debugLineNum = 99;BA.debugLine="Dim x As Int = Activity.Width / 2"; -Debug.ShouldStop(4); -_x = BA.numberCast(int.class, RemoteObject.solve(new RemoteObject[] {main.mostCurrent._activity.runMethod(true,"getWidth"),RemoteObject.createImmutable(2)}, "/",0, 0));Debug.locals.put("x", _x);Debug.locals.put("x", _x); - BA.debugLineNum = 100;BA.debugLine="Dim y As Int = Activity.Height / 2"; -Debug.ShouldStop(8); -_y = BA.numberCast(int.class, RemoteObject.solve(new RemoteObject[] {main.mostCurrent._activity.runMethod(true,"getHeight"),RemoteObject.createImmutable(2)}, "/",0, 0));Debug.locals.put("y", _y);Debug.locals.put("y", _y); - BA.debugLineNum = 101;BA.debugLine="Dim Radius As Int = Min(x, y) - 10"; -Debug.ShouldStop(16); -_radius = BA.numberCast(int.class, RemoteObject.solve(new RemoteObject[] {main.mostCurrent.__c.runMethod(true,"Min",(Object)(BA.numberCast(double.class, _x)),(Object)(BA.numberCast(double.class, _y))),RemoteObject.createImmutable(10)}, "-",1, 0));Debug.locals.put("Radius", _radius);Debug.locals.put("Radius", _radius); - BA.debugLineNum = 104;BA.debugLine="Canvas1.DrawColor(Colors.White)"; -Debug.ShouldStop(128); -main.mostCurrent._canvas1.runVoidMethod ("DrawColor",(Object)(main.mostCurrent.__c.getField(false,"Colors").getField(true,"White"))); - BA.debugLineNum = 107;BA.debugLine="Canvas1.DrawCircle(x, y, Radius, Colors.Black,"; -Debug.ShouldStop(1024); -main.mostCurrent._canvas1.runVoidMethod ("DrawCircle",(Object)(BA.numberCast(float.class, _x)),(Object)(BA.numberCast(float.class, _y)),(Object)(BA.numberCast(float.class, _radius)),(Object)(main.mostCurrent.__c.getField(false,"Colors").getField(true,"Black")),(Object)(main.mostCurrent.__c.getField(true,"False")),(Object)(BA.numberCast(float.class, 5))); - BA.debugLineNum = 110;BA.debugLine="Dim HourAngle As Float = -90 + Hours * 30 + Mi"; -Debug.ShouldStop(8192); -_hourangle = BA.numberCast(float.class, -(double) (0 + 90)+(double) (0 + _hours.get().intValue())*(double) (0 + 30)+(double) (0 + _minutes.get().intValue())/(double)(double) (0 + 2));Debug.locals.put("HourAngle", _hourangle);Debug.locals.put("HourAngle", _hourangle); - BA.debugLineNum = 111;BA.debugLine="DrawHand(x, y, Radius * 0.5, HourAngle, 8, Col"; -Debug.ShouldStop(16384); -_drawhand(_x,_y,BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {_radius,RemoteObject.createImmutable(0.5)}, "*",0, 0)),_hourangle,BA.numberCast(int.class, 8),main.mostCurrent.__c.getField(false,"Colors").getField(true,"Black")); - BA.debugLineNum = 114;BA.debugLine="Dim MinuteAngle As Float = -90 + Minutes * 6"; -Debug.ShouldStop(131072); -_minuteangle = BA.numberCast(float.class, -(double) (0 + 90)+(double) (0 + _minutes.get().intValue())*(double) (0 + 6));Debug.locals.put("MinuteAngle", _minuteangle);Debug.locals.put("MinuteAngle", _minuteangle); - BA.debugLineNum = 115;BA.debugLine="DrawHand(x, y, Radius * 0.7, MinuteAngle, 5, C"; -Debug.ShouldStop(262144); -_drawhand(_x,_y,BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {_radius,RemoteObject.createImmutable(0.7)}, "*",0, 0)),_minuteangle,BA.numberCast(int.class, 5),main.mostCurrent.__c.getField(false,"Colors").getField(true,"Blue")); - BA.debugLineNum = 118;BA.debugLine="Dim SecondAngle As Float = -90 + Seconds * 6"; -Debug.ShouldStop(2097152); -_secondangle = BA.numberCast(float.class, -(double) (0 + 90)+(double) (0 + _seconds.get().intValue())*(double) (0 + 6));Debug.locals.put("SecondAngle", _secondangle);Debug.locals.put("SecondAngle", _secondangle); - BA.debugLineNum = 119;BA.debugLine="DrawHand(x, y, Radius * 0.9, SecondAngle, 2, C"; -Debug.ShouldStop(4194304); -_drawhand(_x,_y,BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {_radius,RemoteObject.createImmutable(0.9)}, "*",0, 0)),_secondangle,BA.numberCast(int.class, 2),main.mostCurrent.__c.getField(false,"Colors").getField(true,"Red")); - BA.debugLineNum = 120;BA.debugLine="End Sub"; -Debug.ShouldStop(8388608); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _drawhand(RemoteObject _x,RemoteObject _y,RemoteObject _length,RemoteObject _angle,RemoteObject _width,RemoteObject _color) throws Exception{ -try { - Debug.PushSubsStack("DrawHand (main) ","main",0,main.mostCurrent.activityBA,main.mostCurrent,122); -if (RapidSub.canDelegate("drawhand")) { return b4a.example.main.remoteMe.runUserSub(false, "main","drawhand", _x, _y, _length, _angle, _width, _color);} -RemoteObject _endx = RemoteObject.createImmutable(0f); -RemoteObject _endy = RemoteObject.createImmutable(0f); -Debug.locals.put("x", _x); -Debug.locals.put("y", _y); -Debug.locals.put("length", _length); -Debug.locals.put("angle", _angle); -Debug.locals.put("width", _width); -Debug.locals.put("color", _color); - BA.debugLineNum = 122;BA.debugLine="Sub DrawHand(x As Int, y As Int, length As Float,"; -Debug.ShouldStop(33554432); - BA.debugLineNum = 123;BA.debugLine="Dim endX As Float = x + length * CosD(angle)"; -Debug.ShouldStop(67108864); -_endx = BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {_x,_length,main.mostCurrent.__c.runMethod(true,"CosD",(Object)(BA.numberCast(double.class, _angle)))}, "+*",1, 0));Debug.locals.put("endX", _endx);Debug.locals.put("endX", _endx); - BA.debugLineNum = 124;BA.debugLine="Dim endY As Float = y + length * SinD(angle)"; -Debug.ShouldStop(134217728); -_endy = BA.numberCast(float.class, RemoteObject.solve(new RemoteObject[] {_y,_length,main.mostCurrent.__c.runMethod(true,"SinD",(Object)(BA.numberCast(double.class, _angle)))}, "+*",1, 0));Debug.locals.put("endY", _endy);Debug.locals.put("endY", _endy); - BA.debugLineNum = 125;BA.debugLine="Canvas1.DrawLine(x, y, endX, endY, color, widt"; -Debug.ShouldStop(268435456); -main.mostCurrent._canvas1.runVoidMethod ("DrawLine",(Object)(BA.numberCast(float.class, _x)),(Object)(BA.numberCast(float.class, _y)),(Object)(_endx),(Object)(_endy),(Object)(_color),(Object)(BA.numberCast(float.class, _width))); - BA.debugLineNum = 126;BA.debugLine="End Sub"; -Debug.ShouldStop(536870912); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _formatelapsedtime(RemoteObject _ms) throws Exception{ -try { - Debug.PushSubsStack("FormatElapsedTime (main) ","main",0,main.mostCurrent.activityBA,main.mostCurrent,147); -if (RapidSub.canDelegate("formatelapsedtime")) { return b4a.example.main.remoteMe.runUserSub(false, "main","formatelapsedtime", _ms);} -RemoteObject _seconds = RemoteObject.createImmutable(0); -RemoteObject _minutes = RemoteObject.createImmutable(0); -RemoteObject _hours = RemoteObject.createImmutable(0); -Debug.locals.put("ms", _ms); - BA.debugLineNum = 147;BA.debugLine="Sub FormatElapsedTime(ms As Long) As String"; -Debug.ShouldStop(262144); - BA.debugLineNum = 148;BA.debugLine="Dim seconds As Int = ms / 1000"; -Debug.ShouldStop(524288); -_seconds = BA.numberCast(int.class, RemoteObject.solve(new RemoteObject[] {_ms,RemoteObject.createImmutable(1000)}, "/",0, 0));Debug.locals.put("seconds", _seconds);Debug.locals.put("seconds", _seconds); - BA.debugLineNum = 149;BA.debugLine="Dim minutes As Int = seconds / 60"; -Debug.ShouldStop(1048576); -_minutes = BA.numberCast(int.class, RemoteObject.solve(new RemoteObject[] {_seconds,RemoteObject.createImmutable(60)}, "/",0, 0));Debug.locals.put("minutes", _minutes);Debug.locals.put("minutes", _minutes); - BA.debugLineNum = 150;BA.debugLine="Dim hours As Int = minutes / 60"; -Debug.ShouldStop(2097152); -_hours = BA.numberCast(int.class, RemoteObject.solve(new RemoteObject[] {_minutes,RemoteObject.createImmutable(60)}, "/",0, 0));Debug.locals.put("hours", _hours);Debug.locals.put("hours", _hours); - BA.debugLineNum = 151;BA.debugLine="seconds = seconds Mod 60"; -Debug.ShouldStop(4194304); -_seconds = RemoteObject.solve(new RemoteObject[] {_seconds,RemoteObject.createImmutable(60)}, "%",0, 1);Debug.locals.put("seconds", _seconds); - BA.debugLineNum = 152;BA.debugLine="minutes = minutes Mod 60"; -Debug.ShouldStop(8388608); -_minutes = RemoteObject.solve(new RemoteObject[] {_minutes,RemoteObject.createImmutable(60)}, "%",0, 1);Debug.locals.put("minutes", _minutes); - BA.debugLineNum = 153;BA.debugLine="Return NumberFormat(hours, 2, 0) & \":\" & Numbe"; -Debug.ShouldStop(16777216); -if (true) return RemoteObject.concat(main.mostCurrent.__c.runMethod(true,"NumberFormat",(Object)(BA.numberCast(double.class, _hours)),(Object)(BA.numberCast(int.class, 2)),(Object)(BA.numberCast(int.class, 0))),RemoteObject.createImmutable(":"),main.mostCurrent.__c.runMethod(true,"NumberFormat",(Object)(BA.numberCast(double.class, _minutes)),(Object)(BA.numberCast(int.class, 2)),(Object)(BA.numberCast(int.class, 0))),RemoteObject.createImmutable(":"),main.mostCurrent.__c.runMethod(true,"NumberFormat",(Object)(BA.numberCast(double.class, _seconds)),(Object)(BA.numberCast(int.class, 2)),(Object)(BA.numberCast(int.class, 0)))); - BA.debugLineNum = 154;BA.debugLine="End Sub"; -Debug.ShouldStop(33554432); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _globals() throws Exception{ - //BA.debugLineNum = 21;BA.debugLine="Sub Globals"; - //BA.debugLineNum = 22;BA.debugLine="Private Canvas1 As Canvas"; -main.mostCurrent._canvas1 = RemoteObject.createNew ("anywheresoftware.b4a.objects.drawable.CanvasWrapper"); - //BA.debugLineNum = 23;BA.debugLine="Private Panel1 As Panel"; -main.mostCurrent._panel1 = RemoteObject.createNew ("anywheresoftware.b4a.objects.PanelWrapper"); - //BA.debugLineNum = 24;BA.debugLine="Private BtnStart As Button"; -main.mostCurrent._btnstart = RemoteObject.createNew ("anywheresoftware.b4a.objects.ButtonWrapper"); - //BA.debugLineNum = 25;BA.debugLine="Private BtnPause As Button"; -main.mostCurrent._btnpause = RemoteObject.createNew ("anywheresoftware.b4a.objects.ButtonWrapper"); - //BA.debugLineNum = 26;BA.debugLine="Private BtnReset As Button"; -main.mostCurrent._btnreset = RemoteObject.createNew ("anywheresoftware.b4a.objects.ButtonWrapper"); - //BA.debugLineNum = 27;BA.debugLine="Private BtnSync As Button"; -main.mostCurrent._btnsync = RemoteObject.createNew ("anywheresoftware.b4a.objects.ButtonWrapper"); - //BA.debugLineNum = 29;BA.debugLine="Private lblElapsedTime As Label"; -main.mostCurrent._lblelapsedtime = RemoteObject.createNew ("anywheresoftware.b4a.objects.LabelWrapper"); - //BA.debugLineNum = 30;BA.debugLine="Private pnlClock As Panel"; -main.mostCurrent._pnlclock = RemoteObject.createNew ("anywheresoftware.b4a.objects.PanelWrapper"); - //BA.debugLineNum = 31;BA.debugLine="Private Timer1 As Timer"; -main._timer1 = RemoteObject.createNew ("anywheresoftware.b4a.objects.Timer"); - //BA.debugLineNum = 32;BA.debugLine="Private myClock As AnalogClock"; -main.mostCurrent._myclock = RemoteObject.createNew ("b4a.example.analogclock"); - //BA.debugLineNum = 33;BA.debugLine="Log(\"lblElapsedTime nel Sub Globals: \" & lblElaps"; -main.mostCurrent.__c.runVoidMethod ("LogImpl","365548",RemoteObject.concat(RemoteObject.createImmutable("lblElapsedTime nel Sub Globals: "),main.mostCurrent._lblelapsedtime.runMethod(true,"IsInitialized")),0); - //BA.debugLineNum = 34;BA.debugLine="End Sub"; -return RemoteObject.createImmutable(""); -} - -public static void initializeProcessGlobals() { - - if (main.processGlobalsRun == false) { - main.processGlobalsRun = true; - try { - main_subs_0._process_globals(); -starter_subs_0._process_globals(); -main.myClass = BA.getDeviceClass ("b4a.example.main"); -starter.myClass = BA.getDeviceClass ("b4a.example.starter"); -analogclock.myClass = BA.getDeviceClass ("b4a.example.analogclock"); - - } catch (Exception e) { - throw new RuntimeException(e); - } - } -}public static RemoteObject _process_globals() throws Exception{ - //BA.debugLineNum = 13;BA.debugLine="Sub Process_Globals"; - //BA.debugLineNum = 14;BA.debugLine="Private Timer1 As Timer"; -main._timer1 = RemoteObject.createNew ("anywheresoftware.b4a.objects.Timer"); - //BA.debugLineNum = 15;BA.debugLine="Private Running As Boolean = False"; -main._running = main.mostCurrent.__c.getField(true,"False"); - //BA.debugLineNum = 16;BA.debugLine="Private StartTime As Long = 0"; -main._starttime = BA.numberCast(long.class, 0); - //BA.debugLineNum = 17;BA.debugLine="Private ElapsedTime As Long = 0"; -main._elapsedtime = BA.numberCast(long.class, 0); - //BA.debugLineNum = 19;BA.debugLine="End Sub"; -return RemoteObject.createImmutable(""); -} -public static RemoteObject _synchronizeclock() throws Exception{ -try { - Debug.PushSubsStack("SynchronizeClock (main) ","main",0,main.mostCurrent.activityBA,main.mostCurrent,186); -if (RapidSub.canDelegate("synchronizeclock")) { return b4a.example.main.remoteMe.runUserSub(false, "main","synchronizeclock");} - BA.debugLineNum = 186;BA.debugLine="Sub SynchronizeClock"; -Debug.ShouldStop(33554432); - BA.debugLineNum = 187;BA.debugLine="DrawClock"; -Debug.ShouldStop(67108864); -_drawclock(); - BA.debugLineNum = 188;BA.debugLine="End Sub"; -Debug.ShouldStop(134217728); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _timer1_tick() throws Exception{ -try { - Debug.PushSubsStack("Timer1_Tick (main) ","main",0,main.mostCurrent.activityBA,main.mostCurrent,78); -if (RapidSub.canDelegate("timer1_tick")) { return b4a.example.main.remoteMe.runUserSub(false, "main","timer1_tick");} - BA.debugLineNum = 78;BA.debugLine="Sub Timer1_Tick"; -Debug.ShouldStop(8192); - BA.debugLineNum = 79;BA.debugLine="myClock.DrawClock"; -Debug.ShouldStop(16384); -main.mostCurrent._myclock.runClassMethod (b4a.example.analogclock.class, "_drawclock" /*RemoteObject*/ ); - BA.debugLineNum = 80;BA.debugLine="End Sub"; -Debug.ShouldStop(32768); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -} \ No newline at end of file diff --git a/Objects/shell/src/b4a/example/starter.java b/Objects/shell/src/b4a/example/starter.java deleted file mode 100644 index 2731137..0000000 --- a/Objects/shell/src/b4a/example/starter.java +++ /dev/null @@ -1,58 +0,0 @@ - -package b4a.example; - -import java.io.IOException; -import anywheresoftware.b4a.BA; -import anywheresoftware.b4a.pc.PCBA; -import anywheresoftware.b4a.pc.RDebug; -import anywheresoftware.b4a.pc.RemoteObject; -import anywheresoftware.b4a.pc.RDebug.IRemote; -import anywheresoftware.b4a.pc.Debug; -import anywheresoftware.b4a.pc.B4XTypes.B4XClass; -import anywheresoftware.b4a.pc.B4XTypes.DeviceClass; - -public class starter implements IRemote{ - public static starter mostCurrent; - public static RemoteObject processBA; - public static boolean processGlobalsRun; - public static RemoteObject myClass; - public static RemoteObject remoteMe; - public starter() { - mostCurrent = this; - } - public RemoteObject getRemoteMe() { - return remoteMe; - } - -public boolean isSingleton() { - return true; - } - static { - anywheresoftware.b4a.pc.RapidSub.moduleToObject.put(new B4XClass("starter"), "b4a.example.starter"); - } - public static RemoteObject getObject() { - return myClass; - } - public RemoteObject _service; - private PCBA pcBA; - - public PCBA create(Object[] args) throws ClassNotFoundException{ - processBA = (RemoteObject) args[1]; - _service = (RemoteObject) args[2]; - remoteMe = RemoteObject.declareNull("b4a.example.starter"); - anywheresoftware.b4a.keywords.Common.Density = (Float)args[3]; - pcBA = new PCBA(this, starter.class); - main_subs_0.initializeProcessGlobals(); - return pcBA; - }public static RemoteObject runMethod(boolean notUsed, String method, Object... args) throws Exception{ - return (RemoteObject) mostCurrent.pcBA.raiseEvent(method.substring(1), args); - } - public static void runVoidMethod(String method, Object... args) throws Exception{ - runMethod(false, method, args); - } -public static RemoteObject __c = RemoteObject.declareNull("anywheresoftware.b4a.keywords.Common"); -public static b4a.example.main _main = null; - public Object[] GetGlobals() { - return new Object[] {"Main",Debug.moduleToString(b4a.example.main.class),"Service",starter.mostCurrent._service}; -} -} \ No newline at end of file diff --git a/Objects/shell/src/b4a/example/starter_subs_0.java b/Objects/shell/src/b4a/example/starter_subs_0.java deleted file mode 100644 index f71a094..0000000 --- a/Objects/shell/src/b4a/example/starter_subs_0.java +++ /dev/null @@ -1,103 +0,0 @@ -package b4a.example; - -import anywheresoftware.b4a.BA; -import anywheresoftware.b4a.pc.*; - -public class starter_subs_0 { - - -public static RemoteObject _application_error(RemoteObject _error,RemoteObject _stacktrace) throws Exception{ -try { - Debug.PushSubsStack("Application_Error (starter) ","starter",1,starter.processBA,starter.mostCurrent,27); -if (RapidSub.canDelegate("application_error")) { return b4a.example.starter.remoteMe.runUserSub(false, "starter","application_error", _error, _stacktrace);} -Debug.locals.put("Error", _error); -Debug.locals.put("StackTrace", _stacktrace); - BA.debugLineNum = 27;BA.debugLine="Sub Application_Error (Error As Exception, StackTr"; -Debug.ShouldStop(67108864); - BA.debugLineNum = 28;BA.debugLine="Return True"; -Debug.ShouldStop(134217728); -if (true) return starter.mostCurrent.__c.getField(true,"True"); - BA.debugLineNum = 29;BA.debugLine="End Sub"; -Debug.ShouldStop(268435456); -return RemoteObject.createImmutable(false); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _process_globals() throws Exception{ - //BA.debugLineNum = 6;BA.debugLine="Sub Process_Globals"; - //BA.debugLineNum = 10;BA.debugLine="End Sub"; -return RemoteObject.createImmutable(""); -} -public static RemoteObject _service_create() throws Exception{ -try { - Debug.PushSubsStack("Service_Create (starter) ","starter",1,starter.processBA,starter.mostCurrent,12); -if (RapidSub.canDelegate("service_create")) { return b4a.example.starter.remoteMe.runUserSub(false, "starter","service_create");} - BA.debugLineNum = 12;BA.debugLine="Sub Service_Create"; -Debug.ShouldStop(2048); - BA.debugLineNum = 16;BA.debugLine="End Sub"; -Debug.ShouldStop(32768); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _service_destroy() throws Exception{ -try { - Debug.PushSubsStack("Service_Destroy (starter) ","starter",1,starter.processBA,starter.mostCurrent,31); -if (RapidSub.canDelegate("service_destroy")) { return b4a.example.starter.remoteMe.runUserSub(false, "starter","service_destroy");} - BA.debugLineNum = 31;BA.debugLine="Sub Service_Destroy"; -Debug.ShouldStop(1073741824); - BA.debugLineNum = 33;BA.debugLine="End Sub"; -Debug.ShouldStop(1); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _service_start(RemoteObject _startingintent) throws Exception{ -try { - Debug.PushSubsStack("Service_Start (starter) ","starter",1,starter.processBA,starter.mostCurrent,18); -if (RapidSub.canDelegate("service_start")) { return b4a.example.starter.remoteMe.runUserSub(false, "starter","service_start", _startingintent);} -Debug.locals.put("StartingIntent", _startingintent); - BA.debugLineNum = 18;BA.debugLine="Sub Service_Start (StartingIntent As Intent)"; -Debug.ShouldStop(131072); - BA.debugLineNum = 19;BA.debugLine="Service.StopAutomaticForeground 'Starter service"; -Debug.ShouldStop(262144); -starter.mostCurrent._service.runVoidMethod ("StopAutomaticForeground"); - BA.debugLineNum = 20;BA.debugLine="End Sub"; -Debug.ShouldStop(524288); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -public static RemoteObject _service_taskremoved() throws Exception{ -try { - Debug.PushSubsStack("Service_TaskRemoved (starter) ","starter",1,starter.processBA,starter.mostCurrent,22); -if (RapidSub.canDelegate("service_taskremoved")) { return b4a.example.starter.remoteMe.runUserSub(false, "starter","service_taskremoved");} - BA.debugLineNum = 22;BA.debugLine="Sub Service_TaskRemoved"; -Debug.ShouldStop(2097152); - BA.debugLineNum = 24;BA.debugLine="End Sub"; -Debug.ShouldStop(8388608); -return RemoteObject.createImmutable(""); -} -catch (Exception e) { - throw Debug.ErrorCaught(e); - } -finally { - Debug.PopSubsStack(); - }} -} \ No newline at end of file diff --git a/Objects/src/b4a/example/analogclock.java b/Objects/src/b4a/example/analogclock.java index bbbd6f8..eb1ea45 100644 --- a/Objects/src/b4a/example/analogclock.java +++ b/Objects/src/b4a/example/analogclock.java @@ -10,7 +10,7 @@ public class analogclock extends B4AClass.ImplB4AClass implements BA.SubDelegato private static java.util.HashMap htSubs; private void innerInitialize(BA _ba) throws Exception { if (ba == null) { - ba = new anywheresoftware.b4a.ShellBA(_ba, this, htSubs, "b4a.example.analogclock"); + ba = new BA(_ba, this, htSubs, "b4a.example.analogclock"); if (htSubs == null) { ba.loadHtSubs(this.getClass()); htSubs = ba.htSubs; @@ -23,123 +23,129 @@ public class analogclock extends B4AClass.ImplB4AClass implements BA.SubDelegato ba.raiseEvent2(null, true, "class_globals", false); } - - public void innerInitializeHelper(anywheresoftware.b4a.BA _ba) throws Exception{ - innerInitialize(_ba); - } - public Object callSub(String sub, Object sender, Object[] args) throws Exception { - return BA.SubDelegator.SubNotFound; - } -public anywheresoftware.b4a.keywords.Common __c = null; + public anywheresoftware.b4a.keywords.Common __c = null; public anywheresoftware.b4a.objects.B4XViewWrapper.XUI _xui = null; public anywheresoftware.b4a.objects.PanelWrapper _pnlclock = null; public anywheresoftware.b4a.objects.B4XCanvas _cvsclock = null; public float _clockdiameter = 0f; public float _centerx = 0f; public float _centery = 0f; -public anywheresoftware.b4a.objects.collections.List _intervals = null; +public anywheresoftware.b4a.objects.collections.List _segments = null; public float _quadrantstrokewidth = 0f; public float _hourtickstrokewidth = 0f; public float _minutetickstrokewidth = 0f; public float _intervalarcstrokewidth = 0f; public float _hourhandstrokewidth = 0f; public float _minutehandstrokewidth = 0f; +public long _basedurationms = 0L; +public long _activedurationms = 0L; +public int _activecolor = 0; +public boolean _activeispause = false; +public boolean _hasactivesegment = false; public b4a.example.main _main = null; public b4a.example.starter _starter = null; -public String _initialize(b4a.example.analogclock __ref,anywheresoftware.b4a.BA _ba,anywheresoftware.b4a.objects.PanelWrapper _parentpanel,float _percentageofwidth) throws Exception{ -__ref = this; -innerInitialize(_ba); -RDebugUtils.currentModule="analogclock"; -if (Debug.shouldDelegate(ba, "initialize", false)) - {return ((String) Debug.delegate(ba, "initialize", new Object[] {_ba,_parentpanel,_percentageofwidth}));} -anywheresoftware.b4a.objects.collections.Map _interval = null; -RDebugUtils.currentLine=1376256; - //BA.debugLineNum = 1376256;BA.debugLine="Public Sub Initialize(ParentPanel As Panel, Percen"; -RDebugUtils.currentLine=1376257; - //BA.debugLineNum = 1376257;BA.debugLine="pnlClock = ParentPanel"; -__ref._pnlclock /*anywheresoftware.b4a.objects.PanelWrapper*/ = _parentpanel; -RDebugUtils.currentLine=1376258; - //BA.debugLineNum = 1376258;BA.debugLine="cvsClock.Initialize(pnlClock)"; -__ref._cvsclock /*anywheresoftware.b4a.objects.B4XCanvas*/ .Initialize((anywheresoftware.b4a.objects.B4XViewWrapper) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4a.objects.B4XViewWrapper(), (java.lang.Object)(__ref._pnlclock /*anywheresoftware.b4a.objects.PanelWrapper*/ .getObject()))); -RDebugUtils.currentLine=1376259; - //BA.debugLineNum = 1376259;BA.debugLine="intervals.Initialize"; -__ref._intervals /*anywheresoftware.b4a.objects.collections.List*/ .Initialize(); -RDebugUtils.currentLine=1376260; - //BA.debugLineNum = 1376260;BA.debugLine="Dim interval As Map"; -_interval = new anywheresoftware.b4a.objects.collections.Map(); -RDebugUtils.currentLine=1376261; - //BA.debugLineNum = 1376261;BA.debugLine="interval.Initialize"; -_interval.Initialize(); -RDebugUtils.currentLine=1376262; - //BA.debugLineNum = 1376262;BA.debugLine="interval.Put(\"startHour\", 8)"; -_interval.Put((Object)("startHour"),(Object)(8)); -RDebugUtils.currentLine=1376263; - //BA.debugLineNum = 1376263;BA.debugLine="interval.Put(\"startMinute\", 0)"; -_interval.Put((Object)("startMinute"),(Object)(0)); -RDebugUtils.currentLine=1376264; - //BA.debugLineNum = 1376264;BA.debugLine="interval.Put(\"endHour\", 12)"; -_interval.Put((Object)("endHour"),(Object)(12)); -RDebugUtils.currentLine=1376265; - //BA.debugLineNum = 1376265;BA.debugLine="interval.Put(\"endMinute\", 0)"; -_interval.Put((Object)("endMinute"),(Object)(0)); -RDebugUtils.currentLine=1376266; - //BA.debugLineNum = 1376266;BA.debugLine="interval.Put(\"color\", Colors.Magenta)"; -_interval.Put((Object)("color"),(Object)(__c.Colors.Magenta)); -RDebugUtils.currentLine=1376267; - //BA.debugLineNum = 1376267;BA.debugLine="interval.Put(\"radius\",(clockDiameter/2 +25dip))"; -_interval.Put((Object)("radius"),(Object)((__ref._clockdiameter /*float*/ /(double)2+__c.DipToCurrent((int) (25))))); -RDebugUtils.currentLine=1376268; - //BA.debugLineNum = 1376268;BA.debugLine="interval.Put(\"strokeWidth\", 5dip)"; -_interval.Put((Object)("strokeWidth"),(Object)(__c.DipToCurrent((int) (5)))); -RDebugUtils.currentLine=1376269; - //BA.debugLineNum = 1376269;BA.debugLine="interval.Put(\"period\", \"mattino\")"; -_interval.Put((Object)("period"),(Object)("mattino")); -RDebugUtils.currentLine=1376270; - //BA.debugLineNum = 1376270;BA.debugLine="intervals.Add(interval)"; -__ref._intervals /*anywheresoftware.b4a.objects.collections.List*/ .Add((Object)(_interval.getObject())); -RDebugUtils.currentLine=1376272; - //BA.debugLineNum = 1376272;BA.debugLine="interval.Initialize"; -_interval.Initialize(); -RDebugUtils.currentLine=1376273; - //BA.debugLineNum = 1376273;BA.debugLine="interval.Put(\"startHour\", 13)"; -_interval.Put((Object)("startHour"),(Object)(13)); -RDebugUtils.currentLine=1376274; - //BA.debugLineNum = 1376274;BA.debugLine="interval.Put(\"startMinute\", 0)"; -_interval.Put((Object)("startMinute"),(Object)(0)); -RDebugUtils.currentLine=1376275; - //BA.debugLineNum = 1376275;BA.debugLine="interval.Put(\"endHour\", 17)"; -_interval.Put((Object)("endHour"),(Object)(17)); -RDebugUtils.currentLine=1376276; - //BA.debugLineNum = 1376276;BA.debugLine="interval.Put(\"endMinute\", 0)"; -_interval.Put((Object)("endMinute"),(Object)(0)); -RDebugUtils.currentLine=1376277; - //BA.debugLineNum = 1376277;BA.debugLine="interval.Put(\"color\", Colors.Green)"; -_interval.Put((Object)("color"),(Object)(__c.Colors.Green)); -RDebugUtils.currentLine=1376278; - //BA.debugLineNum = 1376278;BA.debugLine="interval.Put(\"radius\", (clockDiameter/2 )+25dip)"; -_interval.Put((Object)("radius"),(Object)((__ref._clockdiameter /*float*/ /(double)2)+__c.DipToCurrent((int) (25)))); -RDebugUtils.currentLine=1376279; - //BA.debugLineNum = 1376279;BA.debugLine="interval.Put(\"strokeWidth\", 5dip)"; -_interval.Put((Object)("strokeWidth"),(Object)(__c.DipToCurrent((int) (5)))); -RDebugUtils.currentLine=1376280; - //BA.debugLineNum = 1376280;BA.debugLine="interval.Put(\"period\", \"pomeriggio\")"; -_interval.Put((Object)("period"),(Object)("pomeriggio")); -RDebugUtils.currentLine=1376281; - //BA.debugLineNum = 1376281;BA.debugLine="intervals.Add(interval)"; -__ref._intervals /*anywheresoftware.b4a.objects.collections.List*/ .Add((Object)(_interval.getObject())); -RDebugUtils.currentLine=1376283; - //BA.debugLineNum = 1376283;BA.debugLine="SetClockSize(PercentageOfWidth)"; -__ref._setclocksize /*String*/ (null,_percentageofwidth); -RDebugUtils.currentLine=1376284; - //BA.debugLineNum = 1376284;BA.debugLine="End Sub"; +public b4a.example.localization _localization = null; +public String _addsegment(long _durationms,int _segmentcolor,boolean _ispause) throws Exception{ +anywheresoftware.b4a.objects.collections.Map _segment = null; + //BA.debugLineNum = 50;BA.debugLine="Public Sub AddSegment(DurationMs As Long, SegmentC"; + //BA.debugLineNum = 51;BA.debugLine="If DurationMs <= 0 Then Return"; +if (_durationms<=0) { +if (true) return "";}; + //BA.debugLineNum = 52;BA.debugLine="Dim segment As Map"; +_segment = new anywheresoftware.b4a.objects.collections.Map(); + //BA.debugLineNum = 53;BA.debugLine="segment.Initialize"; +_segment.Initialize(); + //BA.debugLineNum = 54;BA.debugLine="segment.Put(\"duration\", DurationMs)"; +_segment.Put((Object)("duration"),(Object)(_durationms)); + //BA.debugLineNum = 55;BA.debugLine="segment.Put(\"color\", SegmentColor)"; +_segment.Put((Object)("color"),(Object)(_segmentcolor)); + //BA.debugLineNum = 56;BA.debugLine="segment.Put(\"pause\", IsPause)"; +_segment.Put((Object)("pause"),(Object)(_ispause)); + //BA.debugLineNum = 57;BA.debugLine="segments.Add(segment)"; +_segments.Add((Object)(_segment.getObject())); + //BA.debugLineNum = 58;BA.debugLine="DrawClock"; +_drawclock(); + //BA.debugLineNum = 59;BA.debugLine="End Sub"; return ""; } -public String _drawclock(b4a.example.analogclock __ref) throws Exception{ -__ref = this; -RDebugUtils.currentModule="analogclock"; -if (Debug.shouldDelegate(ba, "drawclock", false)) - {return ((String) Debug.delegate(ba, "drawclock", null));} -anywheresoftware.b4a.objects.collections.Map _interval = null; +public String _class_globals() throws Exception{ + //BA.debugLineNum = 1;BA.debugLine="Sub Class_Globals"; + //BA.debugLineNum = 2;BA.debugLine="Private xui As XUI"; +_xui = new anywheresoftware.b4a.objects.B4XViewWrapper.XUI(); + //BA.debugLineNum = 4;BA.debugLine="Private pnlClock As Panel ' Pannello in c"; +_pnlclock = new anywheresoftware.b4a.objects.PanelWrapper(); + //BA.debugLineNum = 5;BA.debugLine="Private cvsClock As B4XCanvas ' Canvas per"; +_cvsclock = new anywheresoftware.b4a.objects.B4XCanvas(); + //BA.debugLineNum = 6;BA.debugLine="Private clockDiameter As Float ' Diametro dell"; +_clockdiameter = 0f; + //BA.debugLineNum = 7;BA.debugLine="Private centerX As Float ' Coordinata X"; +_centerx = 0f; + //BA.debugLineNum = 8;BA.debugLine="Private centerY As Float ' Coordinata Y"; +_centery = 0f; + //BA.debugLineNum = 9;BA.debugLine="Private segments As List ' Segmenti cron"; +_segments = new anywheresoftware.b4a.objects.collections.List(); + //BA.debugLineNum = 12;BA.debugLine="Private quadrantStrokeWidth As Float = 5dip"; +_quadrantstrokewidth = (float) (__c.DipToCurrent((int) (5))); + //BA.debugLineNum = 13;BA.debugLine="Private hourTickStrokeWidth As Float = 5dip"; +_hourtickstrokewidth = (float) (__c.DipToCurrent((int) (5))); + //BA.debugLineNum = 14;BA.debugLine="Private minuteTickStrokeWidth As Float = 2dip"; +_minutetickstrokewidth = (float) (__c.DipToCurrent((int) (2))); + //BA.debugLineNum = 15;BA.debugLine="Private intervalArcStrokeWidth As Float = 5dip"; +_intervalarcstrokewidth = (float) (__c.DipToCurrent((int) (5))); + //BA.debugLineNum = 16;BA.debugLine="Private hourHandStrokeWidth As Float = 8dip"; +_hourhandstrokewidth = (float) (__c.DipToCurrent((int) (8))); + //BA.debugLineNum = 17;BA.debugLine="Private minuteHandStrokeWidth As Float = 5dip"; +_minutehandstrokewidth = (float) (__c.DipToCurrent((int) (5))); + //BA.debugLineNum = 18;BA.debugLine="Private baseDurationMs As Long"; +_basedurationms = 0L; + //BA.debugLineNum = 19;BA.debugLine="Private activeDurationMs As Long"; +_activedurationms = 0L; + //BA.debugLineNum = 20;BA.debugLine="Private activeColor As Int"; +_activecolor = 0; + //BA.debugLineNum = 21;BA.debugLine="Private activeIsPause As Boolean"; +_activeispause = false; + //BA.debugLineNum = 22;BA.debugLine="Private hasActiveSegment As Boolean"; +_hasactivesegment = false; + //BA.debugLineNum = 23;BA.debugLine="End Sub"; +return ""; +} +public String _clearactivesegment() throws Exception{ + //BA.debugLineNum = 70;BA.debugLine="Public Sub ClearActiveSegment"; + //BA.debugLineNum = 71;BA.debugLine="hasActiveSegment = False"; +_hasactivesegment = __c.False; + //BA.debugLineNum = 72;BA.debugLine="activeDurationMs = 0"; +_activedurationms = (long) (0); + //BA.debugLineNum = 73;BA.debugLine="DrawClock"; +_drawclock(); + //BA.debugLineNum = 74;BA.debugLine="End Sub"; +return ""; +} +public String _clearcanvas(int _color) throws Exception{ + //BA.debugLineNum = 96;BA.debugLine="Private Sub ClearCanvas(color As Int)"; + //BA.debugLineNum = 97;BA.debugLine="cvsClock.DrawRect(cvsClock.TargetRect, color, Tru"; +_cvsclock.DrawRect(_cvsclock.getTargetRect(),_color,__c.True,(float) (0)); + //BA.debugLineNum = 98;BA.debugLine="cvsClock.Invalidate"; +_cvsclock.Invalidate(); + //BA.debugLineNum = 99;BA.debugLine="End Sub"; +return ""; +} +public String _clearsegments() throws Exception{ + //BA.debugLineNum = 41;BA.debugLine="Public Sub ClearSegments"; + //BA.debugLineNum = 42;BA.debugLine="If segments.IsInitialized = False Then segments.I"; +if (_segments.IsInitialized()==__c.False) { +_segments.Initialize();}; + //BA.debugLineNum = 43;BA.debugLine="segments.Clear"; +_segments.Clear(); + //BA.debugLineNum = 44;BA.debugLine="hasActiveSegment = False"; +_hasactivesegment = __c.False; + //BA.debugLineNum = 45;BA.debugLine="activeDurationMs = 0"; +_activedurationms = (long) (0); + //BA.debugLineNum = 46;BA.debugLine="DrawClock"; +_drawclock(); + //BA.debugLineNum = 47;BA.debugLine="End Sub"; +return ""; +} +public String _drawclock() throws Exception{ long _now = 0L; int _hours = 0; int _minutes = 0; @@ -147,434 +153,321 @@ int _seconds = 0; float _hourangle = 0f; float _minuteangle = 0f; float _secondangle = 0f; -RDebugUtils.currentLine=1638400; - //BA.debugLineNum = 1638400;BA.debugLine="Public Sub DrawClock"; -RDebugUtils.currentLine=1638401; - //BA.debugLineNum = 1638401;BA.debugLine="cvsClock.Initialize(pnlClock)"; -__ref._cvsclock /*anywheresoftware.b4a.objects.B4XCanvas*/ .Initialize((anywheresoftware.b4a.objects.B4XViewWrapper) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4a.objects.B4XViewWrapper(), (java.lang.Object)(__ref._pnlclock /*anywheresoftware.b4a.objects.PanelWrapper*/ .getObject()))); -RDebugUtils.currentLine=1638404; - //BA.debugLineNum = 1638404;BA.debugLine="ClearCanvas(Colors.White)"; -__ref._clearcanvas /*String*/ (null,__c.Colors.White); -RDebugUtils.currentLine=1638407; - //BA.debugLineNum = 1638407;BA.debugLine="cvsClock.DrawCircle(centerX, centerY, clockDia"; -__ref._cvsclock /*anywheresoftware.b4a.objects.B4XCanvas*/ .DrawCircle(__ref._centerx /*float*/ ,__ref._centery /*float*/ ,(float) (__ref._clockdiameter /*float*/ /(double)2),__c.Colors.Black,__c.False,__ref._quadrantstrokewidth /*float*/ ); -RDebugUtils.currentLine=1638410; - //BA.debugLineNum = 1638410;BA.debugLine="DrawTicks"; -__ref._drawticks /*String*/ (null); -RDebugUtils.currentLine=1638413; - //BA.debugLineNum = 1638413;BA.debugLine="For Each interval As Map In intervals"; -_interval = new anywheresoftware.b4a.objects.collections.Map(); + //BA.debugLineNum = 102;BA.debugLine="Public Sub DrawClock"; + //BA.debugLineNum = 103;BA.debugLine="cvsClock.Initialize(pnlClock)"; +_cvsclock.Initialize((anywheresoftware.b4a.objects.B4XViewWrapper) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4a.objects.B4XViewWrapper(), (java.lang.Object)(_pnlclock.getObject()))); + //BA.debugLineNum = 106;BA.debugLine="ClearCanvas(Colors.White)"; +_clearcanvas(__c.Colors.White); + //BA.debugLineNum = 109;BA.debugLine="cvsClock.DrawCircle(centerX, centerY, clockDia"; +_cvsclock.DrawCircle(_centerx,_centery,(float) (_clockdiameter/(double)2),__c.Colors.Black,__c.False,_quadrantstrokewidth); + //BA.debugLineNum = 112;BA.debugLine="DrawSegments"; +_drawsegments(); + //BA.debugLineNum = 115;BA.debugLine="DrawTicks"; +_drawticks(); + //BA.debugLineNum = 118;BA.debugLine="Dim now As Long = DateTime.Now"; +_now = __c.DateTime.getNow(); + //BA.debugLineNum = 119;BA.debugLine="Dim Hours As Int = DateTime.GetHour(now) Mod 1"; +_hours = (int) (__c.DateTime.GetHour(_now)%12); + //BA.debugLineNum = 120;BA.debugLine="Dim Minutes As Int = DateTime.GetMinute(now)"; +_minutes = __c.DateTime.GetMinute(_now); + //BA.debugLineNum = 121;BA.debugLine="Dim Seconds As Int = DateTime.GetSecond(now)"; +_seconds = __c.DateTime.GetSecond(_now); + //BA.debugLineNum = 124;BA.debugLine="Dim HourAngle As Float = -90 + Hours * 30 + Mi"; +_hourangle = (float) (-90+_hours*30+_minutes/(double)2); + //BA.debugLineNum = 125;BA.debugLine="DrawHand(centerX, centerY, clockDiameter * 0.2"; +_drawhand(_centerx,_centery,(float) (_clockdiameter*0.25),_hourangle,_hourhandstrokewidth,__c.Colors.Black); + //BA.debugLineNum = 128;BA.debugLine="Dim MinuteAngle As Float = -90 + Minutes * 6"; +_minuteangle = (float) (-90+_minutes*6); + //BA.debugLineNum = 129;BA.debugLine="DrawHand(centerX, centerY, clockDiameter * 0.4"; +_drawhand(_centerx,_centery,(float) (_clockdiameter*0.4),_minuteangle,_minutehandstrokewidth,__c.Colors.Blue); + //BA.debugLineNum = 132;BA.debugLine="Dim SecondAngle As Float = -90 + Seconds * 6"; +_secondangle = (float) (-90+_seconds*6); + //BA.debugLineNum = 133;BA.debugLine="DrawHand(centerX, centerY, clockDiameter * 0.4"; +_drawhand(_centerx,_centery,(float) (_clockdiameter*0.45),_secondangle,(float) (__c.DipToCurrent((int) (2))),__c.Colors.Red); + //BA.debugLineNum = 136;BA.debugLine="pnlClock.Invalidate"; +_pnlclock.Invalidate(); + //BA.debugLineNum = 137;BA.debugLine="End Sub"; +return ""; +} +public String _drawhand(float _x,float _y,float _length,float _angle,float _width,int _color) throws Exception{ +float _endx = 0f; +float _endy = 0f; + //BA.debugLineNum = 185;BA.debugLine="Private Sub DrawHand(x As Float, y As Float, lengt"; + //BA.debugLineNum = 186;BA.debugLine="Dim endX As Float = x + length * CosD(angle)"; +_endx = (float) (_x+_length*__c.CosD(_angle)); + //BA.debugLineNum = 187;BA.debugLine="Dim endY As Float = y + length * SinD(angle)"; +_endy = (float) (_y+_length*__c.SinD(_angle)); + //BA.debugLineNum = 188;BA.debugLine="cvsClock.DrawLine(x, y, endX, endY, color, wid"; +_cvsclock.DrawLine(_x,_y,_endx,_endy,_color,_width); + //BA.debugLineNum = 189;BA.debugLine="End Sub"; +return ""; +} +public String _drawpiesegment(float _startangle,float _sweepangle,int _color,float _radius) throws Exception{ +int _steps = 0; +anywheresoftware.b4a.objects.B4XCanvas.B4XPath _path = null; +int _i = 0; +float _angle = 0f; +float _x = 0f; +float _y = 0f; + //BA.debugLineNum = 169;BA.debugLine="Private Sub DrawPieSegment(startAngle As Float, sw"; + //BA.debugLineNum = 170;BA.debugLine="If sweepAngle <= 0 Then Return"; +if (_sweepangle<=0) { +if (true) return "";}; + //BA.debugLineNum = 171;BA.debugLine="Dim steps As Int = Max(2, Ceil(sweepAngle / 4))"; +_steps = (int) (__c.Max(2,__c.Ceil(_sweepangle/(double)4))); + //BA.debugLineNum = 172;BA.debugLine="Dim path As B4XPath"; +_path = new anywheresoftware.b4a.objects.B4XCanvas.B4XPath(); + //BA.debugLineNum = 173;BA.debugLine="path.Initialize(centerX, centerY)"; +_path.Initialize(_centerx,_centery); + //BA.debugLineNum = 174;BA.debugLine="For i = 0 To steps"; { -final anywheresoftware.b4a.BA.IterableList group5 = __ref._intervals /*anywheresoftware.b4a.objects.collections.List*/ ; -final int groupLen5 = group5.getSize() -;int index5 = 0; -; -for (; index5 < groupLen5;index5++){ -_interval = (anywheresoftware.b4a.objects.collections.Map) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4a.objects.collections.Map(), (java.util.Map)(group5.Get(index5))); -RDebugUtils.currentLine=1638414; - //BA.debugLineNum = 1638414;BA.debugLine="DrawInterval(interval.Get(\"startHour\"), in"; -__ref._drawinterval /*String*/ (null,(int)(BA.ObjectToNumber(_interval.Get((Object)("startHour")))),(int)(BA.ObjectToNumber(_interval.Get((Object)("startMinute")))),(int)(BA.ObjectToNumber(_interval.Get((Object)("endHour")))),(int)(BA.ObjectToNumber(_interval.Get((Object)("endMinute")))),(int)(BA.ObjectToNumber(_interval.Get((Object)("color")))),(float)(BA.ObjectToNumber(_interval.Get((Object)("radius")))),(float)(BA.ObjectToNumber(_interval.Get((Object)("strokeWidth"))))); +final int step5 = 1; +final int limit5 = _steps; +_i = (int) (0) ; +for (;_i <= limit5 ;_i = _i + step5 ) { + //BA.debugLineNum = 175;BA.debugLine="Dim angle As Float = startAngle + sweepAngle * i"; +_angle = (float) (_startangle+_sweepangle*_i/(double)_steps); + //BA.debugLineNum = 176;BA.debugLine="Dim x As Float = centerX + radius * CosD(angle)"; +_x = (float) (_centerx+_radius*__c.CosD(_angle)); + //BA.debugLineNum = 177;BA.debugLine="Dim y As Float = centerY + radius * SinD(angle)"; +_y = (float) (_centery+_radius*__c.SinD(_angle)); + //BA.debugLineNum = 178;BA.debugLine="path.LineTo(x, y)"; +_path.LineTo(_x,_y); } }; -RDebugUtils.currentLine=1638418; - //BA.debugLineNum = 1638418;BA.debugLine="Dim now As Long = DateTime.Now"; -_now = __c.DateTime.getNow(); -RDebugUtils.currentLine=1638419; - //BA.debugLineNum = 1638419;BA.debugLine="Dim Hours As Int = DateTime.GetHour(now) Mod 1"; -_hours = (int) (__c.DateTime.GetHour(_now)%12); -RDebugUtils.currentLine=1638420; - //BA.debugLineNum = 1638420;BA.debugLine="Dim Minutes As Int = DateTime.GetMinute(now)"; -_minutes = __c.DateTime.GetMinute(_now); -RDebugUtils.currentLine=1638421; - //BA.debugLineNum = 1638421;BA.debugLine="Dim Seconds As Int = DateTime.GetSecond(now)"; -_seconds = __c.DateTime.GetSecond(_now); -RDebugUtils.currentLine=1638424; - //BA.debugLineNum = 1638424;BA.debugLine="Dim HourAngle As Float = -90 + Hours * 30 + Mi"; -_hourangle = (float) (-90+_hours*30+_minutes/(double)2); -RDebugUtils.currentLine=1638425; - //BA.debugLineNum = 1638425;BA.debugLine="DrawHand(centerX, centerY, clockDiameter * 0.2"; -__ref._drawhand /*String*/ (null,__ref._centerx /*float*/ ,__ref._centery /*float*/ ,(float) (__ref._clockdiameter /*float*/ *0.25),_hourangle,__ref._hourhandstrokewidth /*float*/ ,__c.Colors.Black); -RDebugUtils.currentLine=1638428; - //BA.debugLineNum = 1638428;BA.debugLine="Dim MinuteAngle As Float = -90 + Minutes * 6"; -_minuteangle = (float) (-90+_minutes*6); -RDebugUtils.currentLine=1638429; - //BA.debugLineNum = 1638429;BA.debugLine="DrawHand(centerX, centerY, clockDiameter * 0.4"; -__ref._drawhand /*String*/ (null,__ref._centerx /*float*/ ,__ref._centery /*float*/ ,(float) (__ref._clockdiameter /*float*/ *0.4),_minuteangle,__ref._minutehandstrokewidth /*float*/ ,__c.Colors.Blue); -RDebugUtils.currentLine=1638432; - //BA.debugLineNum = 1638432;BA.debugLine="Dim SecondAngle As Float = -90 + Seconds * 6"; -_secondangle = (float) (-90+_seconds*6); -RDebugUtils.currentLine=1638433; - //BA.debugLineNum = 1638433;BA.debugLine="DrawHand(centerX, centerY, clockDiameter * 0.4"; -__ref._drawhand /*String*/ (null,__ref._centerx /*float*/ ,__ref._centery /*float*/ ,(float) (__ref._clockdiameter /*float*/ *0.45),_secondangle,(float) (__c.DipToCurrent((int) (2))),__c.Colors.Red); -RDebugUtils.currentLine=1638436; - //BA.debugLineNum = 1638436;BA.debugLine="pnlClock.Invalidate"; -__ref._pnlclock /*anywheresoftware.b4a.objects.PanelWrapper*/ .Invalidate(); -RDebugUtils.currentLine=1638437; - //BA.debugLineNum = 1638437;BA.debugLine="End Sub"; + //BA.debugLineNum = 180;BA.debugLine="path.LineTo(centerX, centerY)"; +_path.LineTo(_centerx,_centery); + //BA.debugLineNum = 181;BA.debugLine="cvsClock.DrawPath(path, color, True, 0)"; +_cvsclock.DrawPath(_path,_color,__c.True,(float) (0)); + //BA.debugLineNum = 182;BA.debugLine="End Sub"; return ""; } -public String _addinterval(b4a.example.analogclock __ref,int _starthour,int _startminute,int _endhour,int _endminute,String _tipo) throws Exception{ -__ref = this; -RDebugUtils.currentModule="analogclock"; -if (Debug.shouldDelegate(ba, "addinterval", false)) - {return ((String) Debug.delegate(ba, "addinterval", new Object[] {_starthour,_startminute,_endhour,_endminute,_tipo}));} -anywheresoftware.b4a.objects.collections.Map _interval = null; -RDebugUtils.currentLine=1835008; - //BA.debugLineNum = 1835008;BA.debugLine="Public Sub AddInterval(startHour As Int, startMinu"; -RDebugUtils.currentLine=1835009; - //BA.debugLineNum = 1835009;BA.debugLine="Dim interval As Map"; -_interval = new anywheresoftware.b4a.objects.collections.Map(); -RDebugUtils.currentLine=1835010; - //BA.debugLineNum = 1835010;BA.debugLine="interval.Initialize"; -_interval.Initialize(); -RDebugUtils.currentLine=1835011; - //BA.debugLineNum = 1835011;BA.debugLine="interval.Put(\"startHour\", startHour)"; -_interval.Put((Object)("startHour"),(Object)(_starthour)); -RDebugUtils.currentLine=1835012; - //BA.debugLineNum = 1835012;BA.debugLine="interval.Put(\"startMinute\", startMinute)"; -_interval.Put((Object)("startMinute"),(Object)(_startminute)); -RDebugUtils.currentLine=1835013; - //BA.debugLineNum = 1835013;BA.debugLine="interval.Put(\"endHour\", endHour)"; -_interval.Put((Object)("endHour"),(Object)(_endhour)); -RDebugUtils.currentLine=1835014; - //BA.debugLineNum = 1835014;BA.debugLine="interval.Put(\"endMinute\", endMinute)"; -_interval.Put((Object)("endMinute"),(Object)(_endminute)); -RDebugUtils.currentLine=1835015; - //BA.debugLineNum = 1835015;BA.debugLine="Select tipo.ToLowerCase"; -switch (BA.switchObjectToInt(_tipo.toLowerCase(),"mattino","pomeriggio")) { -case 0: { -RDebugUtils.currentLine=1835017; - //BA.debugLineNum = 1835017;BA.debugLine="interval.Put(\"color\", Colors.Blue)"; -_interval.Put((Object)("color"),(Object)(__c.Colors.Blue)); -RDebugUtils.currentLine=1835018; - //BA.debugLineNum = 1835018;BA.debugLine="interval.Put(\"radius\", clockDiameter /"; -_interval.Put((Object)("radius"),(Object)(__ref._clockdiameter /*float*/ /(double)2-__c.DipToCurrent((int) (15)))); -RDebugUtils.currentLine=1835019; - //BA.debugLineNum = 1835019;BA.debugLine="interval.Put(\"strokeWidth\", intervalAr"; -_interval.Put((Object)("strokeWidth"),(Object)(__ref._intervalarcstrokewidth /*float*/ )); - break; } -case 1: { -RDebugUtils.currentLine=1835021; - //BA.debugLineNum = 1835021;BA.debugLine="interval.Put(\"color\", Colors.Green)"; -_interval.Put((Object)("color"),(Object)(__c.Colors.Green)); -RDebugUtils.currentLine=1835022; - //BA.debugLineNum = 1835022;BA.debugLine="interval.Put(\"radius\", clockDiameter /"; -_interval.Put((Object)("radius"),(Object)(__ref._clockdiameter /*float*/ /(double)2-__c.DipToCurrent((int) (25)))); -RDebugUtils.currentLine=1835023; - //BA.debugLineNum = 1835023;BA.debugLine="interval.Put(\"strokeWidth\", intervalAr"; -_interval.Put((Object)("strokeWidth"),(Object)(__ref._intervalarcstrokewidth /*float*/ )); - break; } -default: { -RDebugUtils.currentLine=1835025; - //BA.debugLineNum = 1835025;BA.debugLine="Log(\"Tipo di intervallo non riconosciu"; -__c.LogImpl("31835025","Tipo di intervallo non riconosciuto: "+_tipo,0); -RDebugUtils.currentLine=1835026; - //BA.debugLineNum = 1835026;BA.debugLine="Return"; -if (true) return ""; - break; } -} +public String _drawsegments() throws Exception{ +long _totalpausems = 0L; +long _totalrecordedms = 0L; +anywheresoftware.b4a.objects.collections.Map _segment = null; +long _duration = 0L; +long _totaldisplayms = 0L; +float _startangle = 0f; +float _radius = 0f; +float _sweepangle = 0f; +float _activesweepangle = 0f; + //BA.debugLineNum = 139;BA.debugLine="Private Sub DrawSegments"; + //BA.debugLineNum = 140;BA.debugLine="If segments.IsInitialized = False Then Return"; +if (_segments.IsInitialized()==__c.False) { +if (true) return "";}; + //BA.debugLineNum = 141;BA.debugLine="Dim totalPauseMs As Long = 0"; +_totalpausems = (long) (0); + //BA.debugLineNum = 142;BA.debugLine="Dim totalRecordedMs As Long = 0"; +_totalrecordedms = (long) (0); + //BA.debugLineNum = 143;BA.debugLine="For Each segment As Map In segments"; +_segment = new anywheresoftware.b4a.objects.collections.Map(); +{ +final anywheresoftware.b4a.BA.IterableList group4 = _segments; +final int groupLen4 = group4.getSize() +;int index4 = 0; ; -RDebugUtils.currentLine=1835028; - //BA.debugLineNum = 1835028;BA.debugLine="intervals.Add(interval)"; -__ref._intervals /*anywheresoftware.b4a.objects.collections.List*/ .Add((Object)(_interval.getObject())); -RDebugUtils.currentLine=1835029; - //BA.debugLineNum = 1835029;BA.debugLine="DrawClock"; -__ref._drawclock /*String*/ (null); -RDebugUtils.currentLine=1835030; - //BA.debugLineNum = 1835030;BA.debugLine="End Sub"; +for (; index4 < groupLen4;index4++){ +_segment = (anywheresoftware.b4a.objects.collections.Map) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4a.objects.collections.Map(), (java.util.Map)(group4.Get(index4))); + //BA.debugLineNum = 144;BA.debugLine="Dim duration As Long = segment.Get(\"duration\")"; +_duration = BA.ObjectToLongNumber(_segment.Get((Object)("duration"))); + //BA.debugLineNum = 145;BA.debugLine="totalRecordedMs = totalRecordedMs + duration"; +_totalrecordedms = (long) (_totalrecordedms+_duration); + //BA.debugLineNum = 146;BA.debugLine="If segment.Get(\"pause\") = True Then totalPauseMs"; +if ((_segment.Get((Object)("pause"))).equals((Object)(__c.True))) { +_totalpausems = (long) (_totalpausems+_duration);}; + } +}; + //BA.debugLineNum = 148;BA.debugLine="If hasActiveSegment Then"; +if (_hasactivesegment) { + //BA.debugLineNum = 149;BA.debugLine="totalRecordedMs = totalRecordedMs + activeDurati"; +_totalrecordedms = (long) (_totalrecordedms+_activedurationms); + //BA.debugLineNum = 150;BA.debugLine="If activeIsPause Then totalPauseMs = totalPauseM"; +if (_activeispause) { +_totalpausems = (long) (_totalpausems+_activedurationms);}; + }; + //BA.debugLineNum = 153;BA.debugLine="Dim totalDisplayMs As Long = Max(baseDurationMs,"; +_totaldisplayms = (long) (__c.Max(_basedurationms,_totalrecordedms)); + //BA.debugLineNum = 154;BA.debugLine="If totalDisplayMs <= 0 Then Return"; +if (_totaldisplayms<=0) { +if (true) return "";}; + //BA.debugLineNum = 156;BA.debugLine="Dim startAngle As Float = -90"; +_startangle = (float) (-90); + //BA.debugLineNum = 157;BA.debugLine="Dim radius As Float = clockDiameter / 2 - 22dip"; +_radius = (float) (_clockdiameter/(double)2-__c.DipToCurrent((int) (22))); + //BA.debugLineNum = 158;BA.debugLine="For Each segment As Map In segments"; +_segment = new anywheresoftware.b4a.objects.collections.Map(); +{ +final anywheresoftware.b4a.BA.IterableList group17 = _segments; +final int groupLen17 = group17.getSize() +;int index17 = 0; +; +for (; index17 < groupLen17;index17++){ +_segment = (anywheresoftware.b4a.objects.collections.Map) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4a.objects.collections.Map(), (java.util.Map)(group17.Get(index17))); + //BA.debugLineNum = 159;BA.debugLine="Dim sweepAngle As Float = 360 * segment.Get(\"dur"; +_sweepangle = (float) (360*(double)(BA.ObjectToNumber(_segment.Get((Object)("duration"))))/(double)_totaldisplayms); + //BA.debugLineNum = 160;BA.debugLine="DrawPieSegment(startAngle, sweepAngle, segment.G"; +_drawpiesegment(_startangle,_sweepangle,(int)(BA.ObjectToNumber(_segment.Get((Object)("color")))),_radius); + //BA.debugLineNum = 161;BA.debugLine="startAngle = startAngle + sweepAngle"; +_startangle = (float) (_startangle+_sweepangle); + } +}; + //BA.debugLineNum = 163;BA.debugLine="If hasActiveSegment Then"; +if (_hasactivesegment) { + //BA.debugLineNum = 164;BA.debugLine="Dim activeSweepAngle As Float = 360 * activeDura"; +_activesweepangle = (float) (360*_activedurationms/(double)_totaldisplayms); + //BA.debugLineNum = 165;BA.debugLine="DrawPieSegment(startAngle, activeSweepAngle, act"; +_drawpiesegment(_startangle,_activesweepangle,_activecolor,_radius); + }; + //BA.debugLineNum = 167;BA.debugLine="End Sub"; return ""; } -public String _class_globals(b4a.example.analogclock __ref) throws Exception{ -__ref = this; -RDebugUtils.currentModule="analogclock"; -RDebugUtils.currentLine=1310720; - //BA.debugLineNum = 1310720;BA.debugLine="Sub Class_Globals"; -RDebugUtils.currentLine=1310721; - //BA.debugLineNum = 1310721;BA.debugLine="Private xui As XUI"; -_xui = new anywheresoftware.b4a.objects.B4XViewWrapper.XUI(); -RDebugUtils.currentLine=1310723; - //BA.debugLineNum = 1310723;BA.debugLine="Private pnlClock As Panel ' Pannello in c"; -_pnlclock = new anywheresoftware.b4a.objects.PanelWrapper(); -RDebugUtils.currentLine=1310724; - //BA.debugLineNum = 1310724;BA.debugLine="Private cvsClock As B4XCanvas ' Canvas per"; -_cvsclock = new anywheresoftware.b4a.objects.B4XCanvas(); -RDebugUtils.currentLine=1310725; - //BA.debugLineNum = 1310725;BA.debugLine="Private clockDiameter As Float ' Diametro dell"; -_clockdiameter = 0f; -RDebugUtils.currentLine=1310726; - //BA.debugLineNum = 1310726;BA.debugLine="Private centerX As Float ' Coordinata X"; -_centerx = 0f; -RDebugUtils.currentLine=1310727; - //BA.debugLineNum = 1310727;BA.debugLine="Private centerY As Float ' Coordinata Y"; -_centery = 0f; -RDebugUtils.currentLine=1310728; - //BA.debugLineNum = 1310728;BA.debugLine="Private intervals As List ' Lista degli i"; -_intervals = new anywheresoftware.b4a.objects.collections.List(); -RDebugUtils.currentLine=1310731; - //BA.debugLineNum = 1310731;BA.debugLine="Private quadrantStrokeWidth As Float = 5dip"; -_quadrantstrokewidth = (float) (__c.DipToCurrent((int) (5))); -RDebugUtils.currentLine=1310732; - //BA.debugLineNum = 1310732;BA.debugLine="Private hourTickStrokeWidth As Float = 5dip"; -_hourtickstrokewidth = (float) (__c.DipToCurrent((int) (5))); -RDebugUtils.currentLine=1310733; - //BA.debugLineNum = 1310733;BA.debugLine="Private minuteTickStrokeWidth As Float = 2dip"; -_minutetickstrokewidth = (float) (__c.DipToCurrent((int) (2))); -RDebugUtils.currentLine=1310734; - //BA.debugLineNum = 1310734;BA.debugLine="Private intervalArcStrokeWidth As Float = 5dip"; -_intervalarcstrokewidth = (float) (__c.DipToCurrent((int) (5))); -RDebugUtils.currentLine=1310735; - //BA.debugLineNum = 1310735;BA.debugLine="Private hourHandStrokeWidth As Float = 8dip"; -_hourhandstrokewidth = (float) (__c.DipToCurrent((int) (8))); -RDebugUtils.currentLine=1310736; - //BA.debugLineNum = 1310736;BA.debugLine="Private minuteHandStrokeWidth As Float = 5dip"; -_minutehandstrokewidth = (float) (__c.DipToCurrent((int) (5))); -RDebugUtils.currentLine=1310737; - //BA.debugLineNum = 1310737;BA.debugLine="Private intervals As List"; -_intervals = new anywheresoftware.b4a.objects.collections.List(); -RDebugUtils.currentLine=1310738; - //BA.debugLineNum = 1310738;BA.debugLine="End Sub"; -return ""; -} -public String _clearcanvas(b4a.example.analogclock __ref,int _color) throws Exception{ -__ref = this; -RDebugUtils.currentModule="analogclock"; -if (Debug.shouldDelegate(ba, "clearcanvas", false)) - {return ((String) Debug.delegate(ba, "clearcanvas", new Object[] {_color}));} -RDebugUtils.currentLine=1572864; - //BA.debugLineNum = 1572864;BA.debugLine="Private Sub ClearCanvas(color As Int)"; -RDebugUtils.currentLine=1572865; - //BA.debugLineNum = 1572865;BA.debugLine="cvsClock.DrawRect(cvsClock.TargetRect, color, Tru"; -__ref._cvsclock /*anywheresoftware.b4a.objects.B4XCanvas*/ .DrawRect(__ref._cvsclock /*anywheresoftware.b4a.objects.B4XCanvas*/ .getTargetRect(),_color,__c.True,(float) (0)); -RDebugUtils.currentLine=1572866; - //BA.debugLineNum = 1572866;BA.debugLine="cvsClock.Invalidate"; -__ref._cvsclock /*anywheresoftware.b4a.objects.B4XCanvas*/ .Invalidate(); -RDebugUtils.currentLine=1572867; - //BA.debugLineNum = 1572867;BA.debugLine="End Sub"; -return ""; -} -public String _drawticks(b4a.example.analogclock __ref) throws Exception{ -__ref = this; -RDebugUtils.currentModule="analogclock"; -if (Debug.shouldDelegate(ba, "drawticks", false)) - {return ((String) Debug.delegate(ba, "drawticks", null));} +public String _drawticks() throws Exception{ int _i = 0; float _angle = 0f; float _startx = 0f; float _starty = 0f; float _endx = 0f; float _endy = 0f; -RDebugUtils.currentLine=1769472; - //BA.debugLineNum = 1769472;BA.debugLine="Private Sub DrawTicks"; -RDebugUtils.currentLine=1769473; - //BA.debugLineNum = 1769473;BA.debugLine="For i = 0 To 59"; + //BA.debugLineNum = 191;BA.debugLine="Private Sub DrawTicks"; + //BA.debugLineNum = 192;BA.debugLine="For i = 0 To 59"; { final int step1 = 1; final int limit1 = (int) (59); _i = (int) (0) ; for (;_i <= limit1 ;_i = _i + step1 ) { -RDebugUtils.currentLine=1769474; - //BA.debugLineNum = 1769474;BA.debugLine="Dim angle As Float = -90 + i * 6"; + //BA.debugLineNum = 193;BA.debugLine="Dim angle As Float = -90 + i * 6"; _angle = (float) (-90+_i*6); -RDebugUtils.currentLine=1769475; - //BA.debugLineNum = 1769475;BA.debugLine="Dim startX As Float"; + //BA.debugLineNum = 194;BA.debugLine="Dim startX As Float"; _startx = 0f; -RDebugUtils.currentLine=1769476; - //BA.debugLineNum = 1769476;BA.debugLine="Dim startY As Float"; + //BA.debugLineNum = 195;BA.debugLine="Dim startY As Float"; _starty = 0f; -RDebugUtils.currentLine=1769477; - //BA.debugLineNum = 1769477;BA.debugLine="Dim endX As Float"; + //BA.debugLineNum = 196;BA.debugLine="Dim endX As Float"; _endx = 0f; -RDebugUtils.currentLine=1769478; - //BA.debugLineNum = 1769478;BA.debugLine="Dim endY As Float"; + //BA.debugLineNum = 197;BA.debugLine="Dim endY As Float"; _endy = 0f; -RDebugUtils.currentLine=1769479; - //BA.debugLineNum = 1769479;BA.debugLine="If i Mod 5 = 0 Then"; + //BA.debugLineNum = 198;BA.debugLine="If i Mod 5 = 0 Then"; if (_i%5==0) { -RDebugUtils.currentLine=1769481; - //BA.debugLineNum = 1769481;BA.debugLine="startX = centerX + (clockDiameter / 2"; -_startx = (float) (__ref._centerx /*float*/ +(__ref._clockdiameter /*float*/ /(double)2-__c.DipToCurrent((int) (20)))*__c.CosD(_angle)); -RDebugUtils.currentLine=1769482; - //BA.debugLineNum = 1769482;BA.debugLine="startY = centerY + (clockDiameter / 2"; -_starty = (float) (__ref._centery /*float*/ +(__ref._clockdiameter /*float*/ /(double)2-__c.DipToCurrent((int) (20)))*__c.SinD(_angle)); -RDebugUtils.currentLine=1769483; - //BA.debugLineNum = 1769483;BA.debugLine="endX = centerX + (clockDiameter / 2 -"; -_endx = (float) (__ref._centerx /*float*/ +(__ref._clockdiameter /*float*/ /(double)2-__c.DipToCurrent((int) (5)))*__c.CosD(_angle)); -RDebugUtils.currentLine=1769484; - //BA.debugLineNum = 1769484;BA.debugLine="endY = centerY + (clockDiameter / 2 -"; -_endy = (float) (__ref._centery /*float*/ +(__ref._clockdiameter /*float*/ /(double)2-__c.DipToCurrent((int) (5)))*__c.SinD(_angle)); -RDebugUtils.currentLine=1769485; - //BA.debugLineNum = 1769485;BA.debugLine="cvsClock.DrawLine(startX, startY, endX"; -__ref._cvsclock /*anywheresoftware.b4a.objects.B4XCanvas*/ .DrawLine(_startx,_starty,_endx,_endy,__c.Colors.Black,__ref._hourtickstrokewidth /*float*/ ); + //BA.debugLineNum = 200;BA.debugLine="startX = centerX + (clockDiameter / 2"; +_startx = (float) (_centerx+(_clockdiameter/(double)2-__c.DipToCurrent((int) (20)))*__c.CosD(_angle)); + //BA.debugLineNum = 201;BA.debugLine="startY = centerY + (clockDiameter / 2"; +_starty = (float) (_centery+(_clockdiameter/(double)2-__c.DipToCurrent((int) (20)))*__c.SinD(_angle)); + //BA.debugLineNum = 202;BA.debugLine="endX = centerX + (clockDiameter / 2 -"; +_endx = (float) (_centerx+(_clockdiameter/(double)2-__c.DipToCurrent((int) (5)))*__c.CosD(_angle)); + //BA.debugLineNum = 203;BA.debugLine="endY = centerY + (clockDiameter / 2 -"; +_endy = (float) (_centery+(_clockdiameter/(double)2-__c.DipToCurrent((int) (5)))*__c.SinD(_angle)); + //BA.debugLineNum = 204;BA.debugLine="cvsClock.DrawLine(startX, startY, endX"; +_cvsclock.DrawLine(_startx,_starty,_endx,_endy,__c.Colors.Black,_hourtickstrokewidth); }else { -RDebugUtils.currentLine=1769488; - //BA.debugLineNum = 1769488;BA.debugLine="startX = centerX + (clockDiameter / 2"; -_startx = (float) (__ref._centerx /*float*/ +(__ref._clockdiameter /*float*/ /(double)2-__c.DipToCurrent((int) (10)))*__c.CosD(_angle)); -RDebugUtils.currentLine=1769489; - //BA.debugLineNum = 1769489;BA.debugLine="startY = centerY + (clockDiameter / 2"; -_starty = (float) (__ref._centery /*float*/ +(__ref._clockdiameter /*float*/ /(double)2-__c.DipToCurrent((int) (10)))*__c.SinD(_angle)); -RDebugUtils.currentLine=1769490; - //BA.debugLineNum = 1769490;BA.debugLine="endX = centerX + (clockDiameter / 2 -"; -_endx = (float) (__ref._centerx /*float*/ +(__ref._clockdiameter /*float*/ /(double)2-__c.DipToCurrent((int) (5)))*__c.CosD(_angle)); -RDebugUtils.currentLine=1769491; - //BA.debugLineNum = 1769491;BA.debugLine="endY = centerY + (clockDiameter / 2 -"; -_endy = (float) (__ref._centery /*float*/ +(__ref._clockdiameter /*float*/ /(double)2-__c.DipToCurrent((int) (5)))*__c.SinD(_angle)); -RDebugUtils.currentLine=1769492; - //BA.debugLineNum = 1769492;BA.debugLine="cvsClock.DrawLine(startX, startY, endX"; -__ref._cvsclock /*anywheresoftware.b4a.objects.B4XCanvas*/ .DrawLine(_startx,_starty,_endx,_endy,__c.Colors.Black,__ref._minutetickstrokewidth /*float*/ ); + //BA.debugLineNum = 207;BA.debugLine="startX = centerX + (clockDiameter / 2"; +_startx = (float) (_centerx+(_clockdiameter/(double)2-__c.DipToCurrent((int) (10)))*__c.CosD(_angle)); + //BA.debugLineNum = 208;BA.debugLine="startY = centerY + (clockDiameter / 2"; +_starty = (float) (_centery+(_clockdiameter/(double)2-__c.DipToCurrent((int) (10)))*__c.SinD(_angle)); + //BA.debugLineNum = 209;BA.debugLine="endX = centerX + (clockDiameter / 2 -"; +_endx = (float) (_centerx+(_clockdiameter/(double)2-__c.DipToCurrent((int) (5)))*__c.CosD(_angle)); + //BA.debugLineNum = 210;BA.debugLine="endY = centerY + (clockDiameter / 2 -"; +_endy = (float) (_centery+(_clockdiameter/(double)2-__c.DipToCurrent((int) (5)))*__c.SinD(_angle)); + //BA.debugLineNum = 211;BA.debugLine="cvsClock.DrawLine(startX, startY, endX"; +_cvsclock.DrawLine(_startx,_starty,_endx,_endy,__c.Colors.Black,_minutetickstrokewidth); }; } }; -RDebugUtils.currentLine=1769495; - //BA.debugLineNum = 1769495;BA.debugLine="End Sub"; + //BA.debugLineNum = 214;BA.debugLine="End Sub"; return ""; } -public String _drawinterval(b4a.example.analogclock __ref,int _starthour,int _startminute,int _endhour,int _endminute,int _color,float _radius,float _strokewidth) throws Exception{ -__ref = this; -RDebugUtils.currentModule="analogclock"; -if (Debug.shouldDelegate(ba, "drawinterval", false)) - {return ((String) Debug.delegate(ba, "drawinterval", new Object[] {_starthour,_startminute,_endhour,_endminute,_color,_radius,_strokewidth}));} -float _startangle = 0f; -float _endangle = 0f; -float _sweepangle = 0f; -anywheresoftware.b4a.objects.B4XCanvas.B4XPath _path = null; -RDebugUtils.currentLine=1900544; - //BA.debugLineNum = 1900544;BA.debugLine="Private Sub DrawInterval(startHour As Int, startMi"; -RDebugUtils.currentLine=1900545; - //BA.debugLineNum = 1900545;BA.debugLine="Dim startAngle As Float = (startHour Mod 12 + sta"; -_startangle = (float) ((_starthour%12+_startminute/(double)60)*30-90); -RDebugUtils.currentLine=1900546; - //BA.debugLineNum = 1900546;BA.debugLine="Dim endAngle As Float = (endHour Mod 12 + endMinu"; -_endangle = (float) ((_endhour%12+_endminute/(double)60)*30-90); -RDebugUtils.currentLine=1900547; - //BA.debugLineNum = 1900547;BA.debugLine="Dim sweepAngle As Float = endAngle - startAngle"; -_sweepangle = (float) (_endangle-_startangle); -RDebugUtils.currentLine=1900548; - //BA.debugLineNum = 1900548;BA.debugLine="If sweepAngle < 0 Then sweepAngle = sweepAngle +"; -if (_sweepangle<0) { -_sweepangle = (float) (_sweepangle+360);}; -RDebugUtils.currentLine=1900550; - //BA.debugLineNum = 1900550;BA.debugLine="Dim path As B4XPath"; -_path = new anywheresoftware.b4a.objects.B4XCanvas.B4XPath(); -RDebugUtils.currentLine=1900551; - //BA.debugLineNum = 1900551;BA.debugLine="path.InitializeArc(centerX, centerY, radius, star"; -_path.InitializeArc(__ref._centerx /*float*/ ,__ref._centery /*float*/ ,_radius,_startangle,_sweepangle); -RDebugUtils.currentLine=1900552; - //BA.debugLineNum = 1900552;BA.debugLine="cvsClock.DrawPath(path, color, False, strokeWidth"; -__ref._cvsclock /*anywheresoftware.b4a.objects.B4XCanvas*/ .DrawPath(_path,_color,__c.False,_strokewidth); -RDebugUtils.currentLine=1900553; - //BA.debugLineNum = 1900553;BA.debugLine="End Sub"; +public String _initialize(anywheresoftware.b4a.BA _ba,anywheresoftware.b4a.objects.PanelWrapper _parentpanel,float _percentageofwidth) throws Exception{ +innerInitialize(_ba); + //BA.debugLineNum = 26;BA.debugLine="Public Sub Initialize(ParentPanel As Panel, Percen"; + //BA.debugLineNum = 27;BA.debugLine="pnlClock = ParentPanel"; +_pnlclock = _parentpanel; + //BA.debugLineNum = 28;BA.debugLine="cvsClock.Initialize(pnlClock)"; +_cvsclock.Initialize((anywheresoftware.b4a.objects.B4XViewWrapper) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4a.objects.B4XViewWrapper(), (java.lang.Object)(_pnlclock.getObject()))); + //BA.debugLineNum = 29;BA.debugLine="segments.Initialize"; +_segments.Initialize(); + //BA.debugLineNum = 30;BA.debugLine="baseDurationMs = 12 * DateTime.TicksPerHour"; +_basedurationms = (long) (12*__c.DateTime.TicksPerHour); + //BA.debugLineNum = 31;BA.debugLine="SetClockSize(PercentageOfWidth)"; +_setclocksize(_percentageofwidth); + //BA.debugLineNum = 32;BA.debugLine="End Sub"; return ""; } -public String _drawhand(b4a.example.analogclock __ref,float _x,float _y,float _length,float _angle,float _width,int _color) throws Exception{ -__ref = this; -RDebugUtils.currentModule="analogclock"; -if (Debug.shouldDelegate(ba, "drawhand", false)) - {return ((String) Debug.delegate(ba, "drawhand", new Object[] {_x,_y,_length,_angle,_width,_color}));} -float _endx = 0f; -float _endy = 0f; -RDebugUtils.currentLine=1703936; - //BA.debugLineNum = 1703936;BA.debugLine="Private Sub DrawHand(x As Float, y As Float, lengt"; -RDebugUtils.currentLine=1703937; - //BA.debugLineNum = 1703937;BA.debugLine="Dim endX As Float = x + length * CosD(angle)"; -_endx = (float) (_x+_length*__c.CosD(_angle)); -RDebugUtils.currentLine=1703938; - //BA.debugLineNum = 1703938;BA.debugLine="Dim endY As Float = y + length * SinD(angle)"; -_endy = (float) (_y+_length*__c.SinD(_angle)); -RDebugUtils.currentLine=1703939; - //BA.debugLineNum = 1703939;BA.debugLine="cvsClock.DrawLine(x, y, endX, endY, color, wid"; -__ref._cvsclock /*anywheresoftware.b4a.objects.B4XCanvas*/ .DrawLine(_x,_y,_endx,_endy,_color,_width); -RDebugUtils.currentLine=1703940; - //BA.debugLineNum = 1703940;BA.debugLine="End Sub"; +public String _setactivesegment(long _durationms,int _segmentcolor,boolean _ispause) throws Exception{ + //BA.debugLineNum = 62;BA.debugLine="Public Sub SetActiveSegment(DurationMs As Long, Se"; + //BA.debugLineNum = 63;BA.debugLine="activeDurationMs = Max(0, DurationMs)"; +_activedurationms = (long) (__c.Max(0,_durationms)); + //BA.debugLineNum = 64;BA.debugLine="activeColor = SegmentColor"; +_activecolor = _segmentcolor; + //BA.debugLineNum = 65;BA.debugLine="activeIsPause = IsPause"; +_activeispause = _ispause; + //BA.debugLineNum = 66;BA.debugLine="hasActiveSegment = activeDurationMs > 0"; +_hasactivesegment = _activedurationms>0; + //BA.debugLineNum = 67;BA.debugLine="DrawClock"; +_drawclock(); + //BA.debugLineNum = 68;BA.debugLine="End Sub"; return ""; } -public String _setclocksize(b4a.example.analogclock __ref,float _percentageofwidth) throws Exception{ -__ref = this; -RDebugUtils.currentModule="analogclock"; -if (Debug.shouldDelegate(ba, "setclocksize", false)) - {return ((String) Debug.delegate(ba, "setclocksize", new Object[] {_percentageofwidth}));} -RDebugUtils.currentLine=1441792; - //BA.debugLineNum = 1441792;BA.debugLine="Public Sub SetClockSize(PercentageOfWidth As Float"; -RDebugUtils.currentLine=1441793; - //BA.debugLineNum = 1441793;BA.debugLine="clockDiameter = pnlClock.Width * PercentageOfW"; -__ref._clockdiameter /*float*/ = (float) (__ref._pnlclock /*anywheresoftware.b4a.objects.PanelWrapper*/ .getWidth()*_percentageofwidth/(double)100); -RDebugUtils.currentLine=1441794; - //BA.debugLineNum = 1441794;BA.debugLine="centerX = pnlClock.Width / 2"; -__ref._centerx /*float*/ = (float) (__ref._pnlclock /*anywheresoftware.b4a.objects.PanelWrapper*/ .getWidth()/(double)2); -RDebugUtils.currentLine=1441795; - //BA.debugLineNum = 1441795;BA.debugLine="centerY = pnlClock.Height / 2"; -__ref._centery /*float*/ = (float) (__ref._pnlclock /*anywheresoftware.b4a.objects.PanelWrapper*/ .getHeight()/(double)2); -RDebugUtils.currentLine=1441796; - //BA.debugLineNum = 1441796;BA.debugLine="DrawClock"; -__ref._drawclock /*String*/ (null); -RDebugUtils.currentLine=1441797; - //BA.debugLineNum = 1441797;BA.debugLine="End Sub"; +public String _setbaseduration(long _durationms) throws Exception{ + //BA.debugLineNum = 35;BA.debugLine="Public Sub SetBaseDuration(DurationMs As Long)"; + //BA.debugLineNum = 36;BA.debugLine="baseDurationMs = DurationMs"; +_basedurationms = _durationms; + //BA.debugLineNum = 37;BA.debugLine="DrawClock"; +_drawclock(); + //BA.debugLineNum = 38;BA.debugLine="End Sub"; return ""; } -public String _setstrokewidths(b4a.example.analogclock __ref,float _quadrantwidth,float _hourtickwidth,float _minutetickwidth,float _intervalarcwidth,float _hourhandwidth,float _minutehandwidth) throws Exception{ -__ref = this; -RDebugUtils.currentModule="analogclock"; -if (Debug.shouldDelegate(ba, "setstrokewidths", false)) - {return ((String) Debug.delegate(ba, "setstrokewidths", new Object[] {_quadrantwidth,_hourtickwidth,_minutetickwidth,_intervalarcwidth,_hourhandwidth,_minutehandwidth}));} -RDebugUtils.currentLine=1507328; - //BA.debugLineNum = 1507328;BA.debugLine="Public Sub SetStrokeWidths(quadrantWidth As Float,"; -RDebugUtils.currentLine=1507329; - //BA.debugLineNum = 1507329;BA.debugLine="quadrantStrokeWidth = quadrantWidth"; -__ref._quadrantstrokewidth /*float*/ = _quadrantwidth; -RDebugUtils.currentLine=1507330; - //BA.debugLineNum = 1507330;BA.debugLine="hourTickStrokeWidth = hourTickWidth"; -__ref._hourtickstrokewidth /*float*/ = _hourtickwidth; -RDebugUtils.currentLine=1507331; - //BA.debugLineNum = 1507331;BA.debugLine="minuteTickStrokeWidth = minuteTickWidth"; -__ref._minutetickstrokewidth /*float*/ = _minutetickwidth; -RDebugUtils.currentLine=1507332; - //BA.debugLineNum = 1507332;BA.debugLine="intervalArcStrokeWidth = intervalArcWidth"; -__ref._intervalarcstrokewidth /*float*/ = _intervalarcwidth; -RDebugUtils.currentLine=1507333; - //BA.debugLineNum = 1507333;BA.debugLine="hourHandStrokeWidth = hourHandWidth"; -__ref._hourhandstrokewidth /*float*/ = _hourhandwidth; -RDebugUtils.currentLine=1507334; - //BA.debugLineNum = 1507334;BA.debugLine="minuteHandStrokeWidth = minuteHandWidth"; -__ref._minutehandstrokewidth /*float*/ = _minutehandwidth; -RDebugUtils.currentLine=1507335; - //BA.debugLineNum = 1507335;BA.debugLine="DrawClock"; -__ref._drawclock /*String*/ (null); -RDebugUtils.currentLine=1507336; - //BA.debugLineNum = 1507336;BA.debugLine="End Sub"; +public String _setclocksize(float _percentageofwidth) throws Exception{ + //BA.debugLineNum = 77;BA.debugLine="Public Sub SetClockSize(PercentageOfWidth As Float"; + //BA.debugLineNum = 78;BA.debugLine="clockDiameter = pnlClock.Width * PercentageOfW"; +_clockdiameter = (float) (_pnlclock.getWidth()*_percentageofwidth/(double)100); + //BA.debugLineNum = 79;BA.debugLine="centerX = pnlClock.Width / 2"; +_centerx = (float) (_pnlclock.getWidth()/(double)2); + //BA.debugLineNum = 80;BA.debugLine="centerY = pnlClock.Height / 2"; +_centery = (float) (_pnlclock.getHeight()/(double)2); + //BA.debugLineNum = 81;BA.debugLine="DrawClock"; +_drawclock(); + //BA.debugLineNum = 82;BA.debugLine="End Sub"; return ""; } -public String _startclock(b4a.example.analogclock __ref) throws Exception{ -__ref = this; -RDebugUtils.currentModule="analogclock"; -if (Debug.shouldDelegate(ba, "startclock", false)) - {return ((String) Debug.delegate(ba, "startclock", null));} +public String _setstrokewidths(float _quadrantwidth,float _hourtickwidth,float _minutetickwidth,float _intervalarcwidth,float _hourhandwidth,float _minutehandwidth) throws Exception{ + //BA.debugLineNum = 85;BA.debugLine="Public Sub SetStrokeWidths(quadrantWidth As Float,"; + //BA.debugLineNum = 86;BA.debugLine="quadrantStrokeWidth = quadrantWidth"; +_quadrantstrokewidth = _quadrantwidth; + //BA.debugLineNum = 87;BA.debugLine="hourTickStrokeWidth = hourTickWidth"; +_hourtickstrokewidth = _hourtickwidth; + //BA.debugLineNum = 88;BA.debugLine="minuteTickStrokeWidth = minuteTickWidth"; +_minutetickstrokewidth = _minutetickwidth; + //BA.debugLineNum = 89;BA.debugLine="intervalArcStrokeWidth = intervalArcWidth"; +_intervalarcstrokewidth = _intervalarcwidth; + //BA.debugLineNum = 90;BA.debugLine="hourHandStrokeWidth = hourHandWidth"; +_hourhandstrokewidth = _hourhandwidth; + //BA.debugLineNum = 91;BA.debugLine="minuteHandStrokeWidth = minuteHandWidth"; +_minutehandstrokewidth = _minutehandwidth; + //BA.debugLineNum = 92;BA.debugLine="DrawClock"; +_drawclock(); + //BA.debugLineNum = 93;BA.debugLine="End Sub"; +return ""; +} +public String _startclock() throws Exception{ anywheresoftware.b4a.objects.Timer _timer = null; -RDebugUtils.currentLine=1966080; - //BA.debugLineNum = 1966080;BA.debugLine="Public Sub StartClock"; -RDebugUtils.currentLine=1966081; - //BA.debugLineNum = 1966081;BA.debugLine="Dim timer As Timer"; + //BA.debugLineNum = 217;BA.debugLine="Public Sub StartClock"; + //BA.debugLineNum = 218;BA.debugLine="Dim timer As Timer"; _timer = new anywheresoftware.b4a.objects.Timer(); -RDebugUtils.currentLine=1966082; - //BA.debugLineNum = 1966082;BA.debugLine="timer.Initialize(\"timer\", 1000)"; + //BA.debugLineNum = 219;BA.debugLine="timer.Initialize(\"timer\", 1000)"; _timer.Initialize(ba,"timer",(long) (1000)); -RDebugUtils.currentLine=1966083; - //BA.debugLineNum = 1966083;BA.debugLine="timer.Enabled = True"; + //BA.debugLineNum = 220;BA.debugLine="timer.Enabled = True"; _timer.setEnabled(__c.True); -RDebugUtils.currentLine=1966084; - //BA.debugLineNum = 1966084;BA.debugLine="End Sub"; + //BA.debugLineNum = 221;BA.debugLine="End Sub"; return ""; } -public String _timer_tick(b4a.example.analogclock __ref) throws Exception{ -__ref = this; -RDebugUtils.currentModule="analogclock"; -if (Debug.shouldDelegate(ba, "timer_tick", false)) - {return ((String) Debug.delegate(ba, "timer_tick", null));} -RDebugUtils.currentLine=2031616; - //BA.debugLineNum = 2031616;BA.debugLine="Private Sub timer_Tick"; -RDebugUtils.currentLine=2031617; - //BA.debugLineNum = 2031617;BA.debugLine="DrawClock"; -__ref._drawclock /*String*/ (null); -RDebugUtils.currentLine=2031618; - //BA.debugLineNum = 2031618;BA.debugLine="End Sub"; +public String _timer_tick() throws Exception{ + //BA.debugLineNum = 224;BA.debugLine="Private Sub timer_Tick"; + //BA.debugLineNum = 225;BA.debugLine="DrawClock"; +_drawclock(); + //BA.debugLineNum = 226;BA.debugLine="End Sub"; return ""; } -} \ No newline at end of file +public Object callSub(String sub, Object sender, Object[] args) throws Exception { +BA.senderHolder.set(sender); +return BA.SubDelegator.SubNotFound; +} +} diff --git a/Objects/src/b4a/example/localization.java b/Objects/src/b4a/example/localization.java new file mode 100644 index 0000000..540dac1 --- /dev/null +++ b/Objects/src/b4a/example/localization.java @@ -0,0 +1,603 @@ +package b4a.example; + + +import anywheresoftware.b4a.BA; +import anywheresoftware.b4a.BALayout; +import anywheresoftware.b4a.debug.*; + +public class localization { +private static localization mostCurrent = new localization(); +public static Object getObject() { + throw new RuntimeException("Code module does not support this method."); +} + public anywheresoftware.b4a.keywords.Common __c = null; +public static anywheresoftware.b4a.objects.collections.Map _translations = null; +public static String _currentlanguage = ""; +public static boolean _initialized = false; +public b4a.example.main _main = null; +public b4a.example.starter _starter = null; +public static anywheresoftware.b4a.objects.collections.Map _createenglishmap(anywheresoftware.b4a.BA _ba) throws Exception{ +anywheresoftware.b4a.objects.collections.Map _m = null; + //BA.debugLineNum = 68;BA.debugLine="Private Sub CreateEnglishMap As Map"; + //BA.debugLineNum = 69;BA.debugLine="Dim m As Map"; +_m = new anywheresoftware.b4a.objects.collections.Map(); + //BA.debugLineNum = 70;BA.debugLine="m.Initialize"; +_m.Initialize(); + //BA.debugLineNum = 71;BA.debugLine="m.Put(\"app_title\", \"Overtime Guard\")"; +_m.Put((Object)("app_title"),(Object)("Overtime Guard")); + //BA.debugLineNum = 72;BA.debugLine="m.Put(\"start\", \"Start\")"; +_m.Put((Object)("start"),(Object)("Start")); + //BA.debugLineNum = 73;BA.debugLine="m.Put(\"end\", \"End\")"; +_m.Put((Object)("end"),(Object)("End")); + //BA.debugLineNum = 74;BA.debugLine="m.Put(\"pause\", \"Pause\")"; +_m.Put((Object)("pause"),(Object)("Pause")); + //BA.debugLineNum = 75;BA.debugLine="m.Put(\"end_pause\", \"End pause\")"; +_m.Put((Object)("end_pause"),(Object)("End pause")); + //BA.debugLineNum = 76;BA.debugLine="m.Put(\"stats\", \"Stats\")"; +_m.Put((Object)("stats"),(Object)("Stats")); + //BA.debugLineNum = 77;BA.debugLine="m.Put(\"config\", \"Config\")"; +_m.Put((Object)("config"),(Object)("Config")); + //BA.debugLineNum = 78;BA.debugLine="m.Put(\"bg\", \"Bg\")"; +_m.Put((Object)("bg"),(Object)("Bg")); + //BA.debugLineNum = 79;BA.debugLine="m.Put(\"statistics\", \"Statistics\")"; +_m.Put((Object)("statistics"),(Object)("Statistics")); + //BA.debugLineNum = 80;BA.debugLine="m.Put(\"close\", \"Close\")"; +_m.Put((Object)("close"),(Object)("Close")); + //BA.debugLineNum = 81;BA.debugLine="m.Put(\"work_start\", \"Work start\")"; +_m.Put((Object)("work_start"),(Object)("Work start")); + //BA.debugLineNum = 82;BA.debugLine="m.Put(\"pause_start\", \"Pause start\")"; +_m.Put((Object)("pause_start"),(Object)("Pause start")); + //BA.debugLineNum = 83;BA.debugLine="m.Put(\"pause_end\", \"Pause end\")"; +_m.Put((Object)("pause_end"),(Object)("Pause end")); + //BA.debugLineNum = 84;BA.debugLine="m.Put(\"work_end\", \"Work end\")"; +_m.Put((Object)("work_end"),(Object)("Work end")); + //BA.debugLineNum = 85;BA.debugLine="m.Put(\"set_config\", \"Set config\")"; +_m.Put((Object)("set_config"),(Object)("Set config")); + //BA.debugLineNum = 86;BA.debugLine="m.Put(\"reset_config\", \"Reset config\")"; +_m.Put((Object)("reset_config"),(Object)("Reset config")); + //BA.debugLineNum = 87;BA.debugLine="m.Put(\"clear_today\", \"Clear today\")"; +_m.Put((Object)("clear_today"),(Object)("Clear today")); + //BA.debugLineNum = 88;BA.debugLine="m.Put(\"date\", \"Date\")"; +_m.Put((Object)("date"),(Object)("Date")); + //BA.debugLineNum = 89;BA.debugLine="m.Put(\"work\", \"Work\")"; +_m.Put((Object)("work"),(Object)("Work")); + //BA.debugLineNum = 90;BA.debugLine="m.Put(\"pause_col\", \"Pause\")"; +_m.Put((Object)("pause_col"),(Object)("Pause")); + //BA.debugLineNum = 91;BA.debugLine="m.Put(\"overtime\", \"Overtime\")"; +_m.Put((Object)("overtime"),(Object)("Overtime")); + //BA.debugLineNum = 92;BA.debugLine="m.Put(\"totals\", \"Totals\")"; +_m.Put((Object)("totals"),(Object)("Totals")); + //BA.debugLineNum = 93;BA.debugLine="m.Put(\"manual_mode\", \"Manual mode\")"; +_m.Put((Object)("manual_mode"),(Object)("Manual mode")); + //BA.debugLineNum = 94;BA.debugLine="m.Put(\"auto_recording\", \"Auto: recording...\")"; +_m.Put((Object)("auto_recording"),(Object)("Auto: recording...")); + //BA.debugLineNum = 95;BA.debugLine="m.Put(\"auto_paused\", \"Auto: paused...\")"; +_m.Put((Object)("auto_paused"),(Object)("Auto: paused...")); + //BA.debugLineNum = 96;BA.debugLine="m.Put(\"auto_stopped\", \"Auto: stopped...\")"; +_m.Put((Object)("auto_stopped"),(Object)("Auto: stopped...")); + //BA.debugLineNum = 97;BA.debugLine="m.Put(\"use_hhmm\", \"Use HH:MM times.\")"; +_m.Put((Object)("use_hhmm"),(Object)("Use HH:MM times.")); + //BA.debugLineNum = 98;BA.debugLine="m.Put(\"times_order\", \"Times must be in order.\")"; +_m.Put((Object)("times_order"),(Object)("Times must be in order.")); + //BA.debugLineNum = 99;BA.debugLine="m.Put(\"work_exceed\", \"Configured work cannot exce"; +_m.Put((Object)("work_exceed"),(Object)("Configured work cannot exceed 8 hours.")); + //BA.debugLineNum = 100;BA.debugLine="m.Put(\"auto_enabled\", \"Automatic config enabled.\""; +_m.Put((Object)("auto_enabled"),(Object)("Automatic config enabled.")); + //BA.debugLineNum = 101;BA.debugLine="m.Put(\"auto_disabled\", \"Automatic config disabled"; +_m.Put((Object)("auto_disabled"),(Object)("Automatic config disabled.")); + //BA.debugLineNum = 102;BA.debugLine="m.Put(\"no_day_to_clear\", \"No day to clear.\")"; +_m.Put((Object)("no_day_to_clear"),(Object)("No day to clear.")); + //BA.debugLineNum = 103;BA.debugLine="m.Put(\"clear_today_title\", \"Clear today\")"; +_m.Put((Object)("clear_today_title"),(Object)("Clear today")); + //BA.debugLineNum = 104;BA.debugLine="m.Put(\"clear_today_confirm\", \"Clear all recorded"; +_m.Put((Object)("clear_today_confirm"),(Object)("Clear all recorded data for")); + //BA.debugLineNum = 105;BA.debugLine="m.Put(\"clear_button\", \"Clear\")"; +_m.Put((Object)("clear_button"),(Object)("Clear")); + //BA.debugLineNum = 106;BA.debugLine="m.Put(\"cancel\", \"Cancel\")"; +_m.Put((Object)("cancel"),(Object)("Cancel")); + //BA.debugLineNum = 107;BA.debugLine="m.Put(\"today_cleared\", \"Today cleared.\")"; +_m.Put((Object)("today_cleared"),(Object)("Today cleared.")); + //BA.debugLineNum = 108;BA.debugLine="m.Put(\"limit_reached\", \"9-hour limit already reac"; +_m.Put((Object)("limit_reached"),(Object)("9-hour limit already reached for this workday.")); + //BA.debugLineNum = 109;BA.debugLine="Return m"; +if (true) return _m; + //BA.debugLineNum = 110;BA.debugLine="End Sub"; +return null; +} +public static anywheresoftware.b4a.objects.collections.Map _createfrenchmap(anywheresoftware.b4a.BA _ba) throws Exception{ +anywheresoftware.b4a.objects.collections.Map _m = null; + //BA.debugLineNum = 156;BA.debugLine="Private Sub CreateFrenchMap As Map"; + //BA.debugLineNum = 157;BA.debugLine="Dim m As Map"; +_m = new anywheresoftware.b4a.objects.collections.Map(); + //BA.debugLineNum = 158;BA.debugLine="m.Initialize"; +_m.Initialize(); + //BA.debugLineNum = 159;BA.debugLine="m.Put(\"app_title\", \"Overtime Guard\")"; +_m.Put((Object)("app_title"),(Object)("Overtime Guard")); + //BA.debugLineNum = 160;BA.debugLine="m.Put(\"start\", \"Demarrer\")"; +_m.Put((Object)("start"),(Object)("Demarrer")); + //BA.debugLineNum = 161;BA.debugLine="m.Put(\"end\", \"Arreter\")"; +_m.Put((Object)("end"),(Object)("Arreter")); + //BA.debugLineNum = 162;BA.debugLine="m.Put(\"pause\", \"Pause\")"; +_m.Put((Object)("pause"),(Object)("Pause")); + //BA.debugLineNum = 163;BA.debugLine="m.Put(\"end_pause\", \"Fin pause\")"; +_m.Put((Object)("end_pause"),(Object)("Fin pause")); + //BA.debugLineNum = 164;BA.debugLine="m.Put(\"stats\", \"Stats\")"; +_m.Put((Object)("stats"),(Object)("Stats")); + //BA.debugLineNum = 165;BA.debugLine="m.Put(\"config\", \"Config\")"; +_m.Put((Object)("config"),(Object)("Config")); + //BA.debugLineNum = 166;BA.debugLine="m.Put(\"bg\", \"Fond\")"; +_m.Put((Object)("bg"),(Object)("Fond")); + //BA.debugLineNum = 167;BA.debugLine="m.Put(\"statistics\", \"Statistiques\")"; +_m.Put((Object)("statistics"),(Object)("Statistiques")); + //BA.debugLineNum = 168;BA.debugLine="m.Put(\"close\", \"Fermer\")"; +_m.Put((Object)("close"),(Object)("Fermer")); + //BA.debugLineNum = 169;BA.debugLine="m.Put(\"work_start\", \"Debut travail\")"; +_m.Put((Object)("work_start"),(Object)("Debut travail")); + //BA.debugLineNum = 170;BA.debugLine="m.Put(\"pause_start\", \"Debut pause\")"; +_m.Put((Object)("pause_start"),(Object)("Debut pause")); + //BA.debugLineNum = 171;BA.debugLine="m.Put(\"pause_end\", \"Fin pause\")"; +_m.Put((Object)("pause_end"),(Object)("Fin pause")); + //BA.debugLineNum = 172;BA.debugLine="m.Put(\"work_end\", \"Fin travail\")"; +_m.Put((Object)("work_end"),(Object)("Fin travail")); + //BA.debugLineNum = 173;BA.debugLine="m.Put(\"set_config\", \"Activer config\")"; +_m.Put((Object)("set_config"),(Object)("Activer config")); + //BA.debugLineNum = 174;BA.debugLine="m.Put(\"reset_config\", \"Reinit config\")"; +_m.Put((Object)("reset_config"),(Object)("Reinit config")); + //BA.debugLineNum = 175;BA.debugLine="m.Put(\"clear_today\", \"Effacer aujourd'hui\")"; +_m.Put((Object)("clear_today"),(Object)("Effacer aujourd'hui")); + //BA.debugLineNum = 176;BA.debugLine="m.Put(\"date\", \"Date\")"; +_m.Put((Object)("date"),(Object)("Date")); + //BA.debugLineNum = 177;BA.debugLine="m.Put(\"work\", \"Travail\")"; +_m.Put((Object)("work"),(Object)("Travail")); + //BA.debugLineNum = 178;BA.debugLine="m.Put(\"pause_col\", \"Pause\")"; +_m.Put((Object)("pause_col"),(Object)("Pause")); + //BA.debugLineNum = 179;BA.debugLine="m.Put(\"overtime\", \"Heures sup.\")"; +_m.Put((Object)("overtime"),(Object)("Heures sup.")); + //BA.debugLineNum = 180;BA.debugLine="m.Put(\"totals\", \"Totaux\")"; +_m.Put((Object)("totals"),(Object)("Totaux")); + //BA.debugLineNum = 181;BA.debugLine="m.Put(\"manual_mode\", \"Mode manuel\")"; +_m.Put((Object)("manual_mode"),(Object)("Mode manuel")); + //BA.debugLineNum = 182;BA.debugLine="m.Put(\"auto_recording\", \"Auto: enregistrement...\""; +_m.Put((Object)("auto_recording"),(Object)("Auto: enregistrement...")); + //BA.debugLineNum = 183;BA.debugLine="m.Put(\"auto_paused\", \"Auto: pause...\")"; +_m.Put((Object)("auto_paused"),(Object)("Auto: pause...")); + //BA.debugLineNum = 184;BA.debugLine="m.Put(\"auto_stopped\", \"Auto: arrete...\")"; +_m.Put((Object)("auto_stopped"),(Object)("Auto: arrete...")); + //BA.debugLineNum = 185;BA.debugLine="m.Put(\"use_hhmm\", \"Utilisez des heures HH:MM.\")"; +_m.Put((Object)("use_hhmm"),(Object)("Utilisez des heures HH:MM.")); + //BA.debugLineNum = 186;BA.debugLine="m.Put(\"times_order\", \"Les heures doivent etre dan"; +_m.Put((Object)("times_order"),(Object)("Les heures doivent etre dans l'ordre.")); + //BA.debugLineNum = 187;BA.debugLine="m.Put(\"work_exceed\", \"Le travail configure ne peu"; +_m.Put((Object)("work_exceed"),(Object)("Le travail configure ne peut pas depasser 8 heures.")); + //BA.debugLineNum = 188;BA.debugLine="m.Put(\"auto_enabled\", \"Configuration automatique"; +_m.Put((Object)("auto_enabled"),(Object)("Configuration automatique activee.")); + //BA.debugLineNum = 189;BA.debugLine="m.Put(\"auto_disabled\", \"Configuration automatique"; +_m.Put((Object)("auto_disabled"),(Object)("Configuration automatique desactivee.")); + //BA.debugLineNum = 190;BA.debugLine="m.Put(\"no_day_to_clear\", \"Aucun jour a effacer.\")"; +_m.Put((Object)("no_day_to_clear"),(Object)("Aucun jour a effacer.")); + //BA.debugLineNum = 191;BA.debugLine="m.Put(\"clear_today_title\", \"Effacer aujourd'hui\")"; +_m.Put((Object)("clear_today_title"),(Object)("Effacer aujourd'hui")); + //BA.debugLineNum = 192;BA.debugLine="m.Put(\"clear_today_confirm\", \"Effacer toutes les"; +_m.Put((Object)("clear_today_confirm"),(Object)("Effacer toutes les donnees enregistrees pour")); + //BA.debugLineNum = 193;BA.debugLine="m.Put(\"clear_button\", \"Effacer\")"; +_m.Put((Object)("clear_button"),(Object)("Effacer")); + //BA.debugLineNum = 194;BA.debugLine="m.Put(\"cancel\", \"Annuler\")"; +_m.Put((Object)("cancel"),(Object)("Annuler")); + //BA.debugLineNum = 195;BA.debugLine="m.Put(\"today_cleared\", \"Journee effacee.\")"; +_m.Put((Object)("today_cleared"),(Object)("Journee effacee.")); + //BA.debugLineNum = 196;BA.debugLine="m.Put(\"limit_reached\", \"Limite de 9 heures deja a"; +_m.Put((Object)("limit_reached"),(Object)("Limite de 9 heures deja atteinte pour cette journee.")); + //BA.debugLineNum = 197;BA.debugLine="Return m"; +if (true) return _m; + //BA.debugLineNum = 198;BA.debugLine="End Sub"; +return null; +} +public static anywheresoftware.b4a.objects.collections.Map _creategermanmap(anywheresoftware.b4a.BA _ba) throws Exception{ +anywheresoftware.b4a.objects.collections.Map _m = null; + //BA.debugLineNum = 200;BA.debugLine="Private Sub CreateGermanMap As Map"; + //BA.debugLineNum = 201;BA.debugLine="Dim m As Map"; +_m = new anywheresoftware.b4a.objects.collections.Map(); + //BA.debugLineNum = 202;BA.debugLine="m.Initialize"; +_m.Initialize(); + //BA.debugLineNum = 203;BA.debugLine="m.Put(\"app_title\", \"Overtime Guard\")"; +_m.Put((Object)("app_title"),(Object)("Overtime Guard")); + //BA.debugLineNum = 204;BA.debugLine="m.Put(\"start\", \"Start\")"; +_m.Put((Object)("start"),(Object)("Start")); + //BA.debugLineNum = 205;BA.debugLine="m.Put(\"end\", \"Stopp\")"; +_m.Put((Object)("end"),(Object)("Stopp")); + //BA.debugLineNum = 206;BA.debugLine="m.Put(\"pause\", \"Pause\")"; +_m.Put((Object)("pause"),(Object)("Pause")); + //BA.debugLineNum = 207;BA.debugLine="m.Put(\"end_pause\", \"Pause beenden\")"; +_m.Put((Object)("end_pause"),(Object)("Pause beenden")); + //BA.debugLineNum = 208;BA.debugLine="m.Put(\"stats\", \"Statistik\")"; +_m.Put((Object)("stats"),(Object)("Statistik")); + //BA.debugLineNum = 209;BA.debugLine="m.Put(\"config\", \"Konfig\")"; +_m.Put((Object)("config"),(Object)("Konfig")); + //BA.debugLineNum = 210;BA.debugLine="m.Put(\"bg\", \"Hint.\")"; +_m.Put((Object)("bg"),(Object)("Hint.")); + //BA.debugLineNum = 211;BA.debugLine="m.Put(\"statistics\", \"Statistik\")"; +_m.Put((Object)("statistics"),(Object)("Statistik")); + //BA.debugLineNum = 212;BA.debugLine="m.Put(\"close\", \"Schliessen\")"; +_m.Put((Object)("close"),(Object)("Schliessen")); + //BA.debugLineNum = 213;BA.debugLine="m.Put(\"work_start\", \"Arbeitsbeginn\")"; +_m.Put((Object)("work_start"),(Object)("Arbeitsbeginn")); + //BA.debugLineNum = 214;BA.debugLine="m.Put(\"pause_start\", \"Pausenbeginn\")"; +_m.Put((Object)("pause_start"),(Object)("Pausenbeginn")); + //BA.debugLineNum = 215;BA.debugLine="m.Put(\"pause_end\", \"Pausenende\")"; +_m.Put((Object)("pause_end"),(Object)("Pausenende")); + //BA.debugLineNum = 216;BA.debugLine="m.Put(\"work_end\", \"Arbeitsende\")"; +_m.Put((Object)("work_end"),(Object)("Arbeitsende")); + //BA.debugLineNum = 217;BA.debugLine="m.Put(\"set_config\", \"Konfig setzen\")"; +_m.Put((Object)("set_config"),(Object)("Konfig setzen")); + //BA.debugLineNum = 218;BA.debugLine="m.Put(\"reset_config\", \"Konfig reset\")"; +_m.Put((Object)("reset_config"),(Object)("Konfig reset")); + //BA.debugLineNum = 219;BA.debugLine="m.Put(\"clear_today\", \"Heute loschen\")"; +_m.Put((Object)("clear_today"),(Object)("Heute loschen")); + //BA.debugLineNum = 220;BA.debugLine="m.Put(\"date\", \"Datum\")"; +_m.Put((Object)("date"),(Object)("Datum")); + //BA.debugLineNum = 221;BA.debugLine="m.Put(\"work\", \"Arbeit\")"; +_m.Put((Object)("work"),(Object)("Arbeit")); + //BA.debugLineNum = 222;BA.debugLine="m.Put(\"pause_col\", \"Pause\")"; +_m.Put((Object)("pause_col"),(Object)("Pause")); + //BA.debugLineNum = 223;BA.debugLine="m.Put(\"overtime\", \"Uberzeit\")"; +_m.Put((Object)("overtime"),(Object)("Uberzeit")); + //BA.debugLineNum = 224;BA.debugLine="m.Put(\"totals\", \"Summen\")"; +_m.Put((Object)("totals"),(Object)("Summen")); + //BA.debugLineNum = 225;BA.debugLine="m.Put(\"manual_mode\", \"Manueller Modus\")"; +_m.Put((Object)("manual_mode"),(Object)("Manueller Modus")); + //BA.debugLineNum = 226;BA.debugLine="m.Put(\"auto_recording\", \"Auto: Aufnahme...\")"; +_m.Put((Object)("auto_recording"),(Object)("Auto: Aufnahme...")); + //BA.debugLineNum = 227;BA.debugLine="m.Put(\"auto_paused\", \"Auto: Pause...\")"; +_m.Put((Object)("auto_paused"),(Object)("Auto: Pause...")); + //BA.debugLineNum = 228;BA.debugLine="m.Put(\"auto_stopped\", \"Auto: gestoppt...\")"; +_m.Put((Object)("auto_stopped"),(Object)("Auto: gestoppt...")); + //BA.debugLineNum = 229;BA.debugLine="m.Put(\"use_hhmm\", \"Bitte HH:MM verwenden.\")"; +_m.Put((Object)("use_hhmm"),(Object)("Bitte HH:MM verwenden.")); + //BA.debugLineNum = 230;BA.debugLine="m.Put(\"times_order\", \"Die Zeiten muessen in Reihe"; +_m.Put((Object)("times_order"),(Object)("Die Zeiten muessen in Reihenfolge sein.")); + //BA.debugLineNum = 231;BA.debugLine="m.Put(\"work_exceed\", \"Die konfigurierte Arbeit da"; +_m.Put((Object)("work_exceed"),(Object)("Die konfigurierte Arbeit darf 8 Stunden nicht uberschreiten.")); + //BA.debugLineNum = 232;BA.debugLine="m.Put(\"auto_enabled\", \"Automatische Konfiguration"; +_m.Put((Object)("auto_enabled"),(Object)("Automatische Konfiguration aktiviert.")); + //BA.debugLineNum = 233;BA.debugLine="m.Put(\"auto_disabled\", \"Automatische Konfiguratio"; +_m.Put((Object)("auto_disabled"),(Object)("Automatische Konfiguration deaktiviert.")); + //BA.debugLineNum = 234;BA.debugLine="m.Put(\"no_day_to_clear\", \"Kein Tag zum Loschen.\")"; +_m.Put((Object)("no_day_to_clear"),(Object)("Kein Tag zum Loschen.")); + //BA.debugLineNum = 235;BA.debugLine="m.Put(\"clear_today_title\", \"Heute loschen\")"; +_m.Put((Object)("clear_today_title"),(Object)("Heute loschen")); + //BA.debugLineNum = 236;BA.debugLine="m.Put(\"clear_today_confirm\", \"Alle erfassten Date"; +_m.Put((Object)("clear_today_confirm"),(Object)("Alle erfassten Daten loschen fur")); + //BA.debugLineNum = 237;BA.debugLine="m.Put(\"clear_button\", \"Loschen\")"; +_m.Put((Object)("clear_button"),(Object)("Loschen")); + //BA.debugLineNum = 238;BA.debugLine="m.Put(\"cancel\", \"Abbrechen\")"; +_m.Put((Object)("cancel"),(Object)("Abbrechen")); + //BA.debugLineNum = 239;BA.debugLine="m.Put(\"today_cleared\", \"Heutige Daten geloscht.\")"; +_m.Put((Object)("today_cleared"),(Object)("Heutige Daten geloscht.")); + //BA.debugLineNum = 240;BA.debugLine="m.Put(\"limit_reached\", \"9-Stunden-Limit fur diese"; +_m.Put((Object)("limit_reached"),(Object)("9-Stunden-Limit fur diesen Arbeitstag bereits erreicht.")); + //BA.debugLineNum = 241;BA.debugLine="Return m"; +if (true) return _m; + //BA.debugLineNum = 242;BA.debugLine="End Sub"; +return null; +} +public static anywheresoftware.b4a.objects.collections.Map _createitalianmap(anywheresoftware.b4a.BA _ba) throws Exception{ +anywheresoftware.b4a.objects.collections.Map _m = null; + //BA.debugLineNum = 112;BA.debugLine="Private Sub CreateItalianMap As Map"; + //BA.debugLineNum = 113;BA.debugLine="Dim m As Map"; +_m = new anywheresoftware.b4a.objects.collections.Map(); + //BA.debugLineNum = 114;BA.debugLine="m.Initialize"; +_m.Initialize(); + //BA.debugLineNum = 115;BA.debugLine="m.Put(\"app_title\", \"Overtime Guard\")"; +_m.Put((Object)("app_title"),(Object)("Overtime Guard")); + //BA.debugLineNum = 116;BA.debugLine="m.Put(\"start\", \"Start\")"; +_m.Put((Object)("start"),(Object)("Start")); + //BA.debugLineNum = 117;BA.debugLine="m.Put(\"end\", \"End\")"; +_m.Put((Object)("end"),(Object)("End")); + //BA.debugLineNum = 118;BA.debugLine="m.Put(\"pause\", \"Pausa\")"; +_m.Put((Object)("pause"),(Object)("Pausa")); + //BA.debugLineNum = 119;BA.debugLine="m.Put(\"end_pause\", \"Fine pausa\")"; +_m.Put((Object)("end_pause"),(Object)("Fine pausa")); + //BA.debugLineNum = 120;BA.debugLine="m.Put(\"stats\", \"Statistiche\")"; +_m.Put((Object)("stats"),(Object)("Statistiche")); + //BA.debugLineNum = 121;BA.debugLine="m.Put(\"config\", \"Config\")"; +_m.Put((Object)("config"),(Object)("Config")); + //BA.debugLineNum = 122;BA.debugLine="m.Put(\"bg\", \"Sfondo\")"; +_m.Put((Object)("bg"),(Object)("Sfondo")); + //BA.debugLineNum = 123;BA.debugLine="m.Put(\"statistics\", \"Statistiche\")"; +_m.Put((Object)("statistics"),(Object)("Statistiche")); + //BA.debugLineNum = 124;BA.debugLine="m.Put(\"close\", \"Chiudi\")"; +_m.Put((Object)("close"),(Object)("Chiudi")); + //BA.debugLineNum = 125;BA.debugLine="m.Put(\"work_start\", \"Inizio lavoro\")"; +_m.Put((Object)("work_start"),(Object)("Inizio lavoro")); + //BA.debugLineNum = 126;BA.debugLine="m.Put(\"pause_start\", \"Inizio pausa\")"; +_m.Put((Object)("pause_start"),(Object)("Inizio pausa")); + //BA.debugLineNum = 127;BA.debugLine="m.Put(\"pause_end\", \"Fine pausa\")"; +_m.Put((Object)("pause_end"),(Object)("Fine pausa")); + //BA.debugLineNum = 128;BA.debugLine="m.Put(\"work_end\", \"Fine lavoro\")"; +_m.Put((Object)("work_end"),(Object)("Fine lavoro")); + //BA.debugLineNum = 129;BA.debugLine="m.Put(\"set_config\", \"Imposta config\")"; +_m.Put((Object)("set_config"),(Object)("Imposta config")); + //BA.debugLineNum = 130;BA.debugLine="m.Put(\"reset_config\", \"Reset config\")"; +_m.Put((Object)("reset_config"),(Object)("Reset config")); + //BA.debugLineNum = 131;BA.debugLine="m.Put(\"clear_today\", \"Azzera oggi\")"; +_m.Put((Object)("clear_today"),(Object)("Azzera oggi")); + //BA.debugLineNum = 132;BA.debugLine="m.Put(\"date\", \"Data\")"; +_m.Put((Object)("date"),(Object)("Data")); + //BA.debugLineNum = 133;BA.debugLine="m.Put(\"work\", \"Lavoro\")"; +_m.Put((Object)("work"),(Object)("Lavoro")); + //BA.debugLineNum = 134;BA.debugLine="m.Put(\"pause_col\", \"Pausa\")"; +_m.Put((Object)("pause_col"),(Object)("Pausa")); + //BA.debugLineNum = 135;BA.debugLine="m.Put(\"overtime\", \"Straord.\")"; +_m.Put((Object)("overtime"),(Object)("Straord.")); + //BA.debugLineNum = 136;BA.debugLine="m.Put(\"totals\", \"Totali\")"; +_m.Put((Object)("totals"),(Object)("Totali")); + //BA.debugLineNum = 137;BA.debugLine="m.Put(\"manual_mode\", \"Modalita manuale\")"; +_m.Put((Object)("manual_mode"),(Object)("Modalita manuale")); + //BA.debugLineNum = 138;BA.debugLine="m.Put(\"auto_recording\", \"Auto: registrazione...\")"; +_m.Put((Object)("auto_recording"),(Object)("Auto: registrazione...")); + //BA.debugLineNum = 139;BA.debugLine="m.Put(\"auto_paused\", \"Auto: pausa...\")"; +_m.Put((Object)("auto_paused"),(Object)("Auto: pausa...")); + //BA.debugLineNum = 140;BA.debugLine="m.Put(\"auto_stopped\", \"Auto: fermo...\")"; +_m.Put((Object)("auto_stopped"),(Object)("Auto: fermo...")); + //BA.debugLineNum = 141;BA.debugLine="m.Put(\"use_hhmm\", \"Usa orari HH:MM.\")"; +_m.Put((Object)("use_hhmm"),(Object)("Usa orari HH:MM.")); + //BA.debugLineNum = 142;BA.debugLine="m.Put(\"times_order\", \"Gli orari devono essere in"; +_m.Put((Object)("times_order"),(Object)("Gli orari devono essere in ordine.")); + //BA.debugLineNum = 143;BA.debugLine="m.Put(\"work_exceed\", \"Il lavoro configurato non p"; +_m.Put((Object)("work_exceed"),(Object)("Il lavoro configurato non puo superare 8 ore.")); + //BA.debugLineNum = 144;BA.debugLine="m.Put(\"auto_enabled\", \"Configurazione automatica"; +_m.Put((Object)("auto_enabled"),(Object)("Configurazione automatica attiva.")); + //BA.debugLineNum = 145;BA.debugLine="m.Put(\"auto_disabled\", \"Configurazione automatica"; +_m.Put((Object)("auto_disabled"),(Object)("Configurazione automatica disattivata.")); + //BA.debugLineNum = 146;BA.debugLine="m.Put(\"no_day_to_clear\", \"Nessun giorno da azzera"; +_m.Put((Object)("no_day_to_clear"),(Object)("Nessun giorno da azzerare.")); + //BA.debugLineNum = 147;BA.debugLine="m.Put(\"clear_today_title\", \"Azzera oggi\")"; +_m.Put((Object)("clear_today_title"),(Object)("Azzera oggi")); + //BA.debugLineNum = 148;BA.debugLine="m.Put(\"clear_today_confirm\", \"Cancellare tutti i"; +_m.Put((Object)("clear_today_confirm"),(Object)("Cancellare tutti i dati registrati per")); + //BA.debugLineNum = 149;BA.debugLine="m.Put(\"clear_button\", \"Azzera\")"; +_m.Put((Object)("clear_button"),(Object)("Azzera")); + //BA.debugLineNum = 150;BA.debugLine="m.Put(\"cancel\", \"Annulla\")"; +_m.Put((Object)("cancel"),(Object)("Annulla")); + //BA.debugLineNum = 151;BA.debugLine="m.Put(\"today_cleared\", \"Giornata azzerata.\")"; +_m.Put((Object)("today_cleared"),(Object)("Giornata azzerata.")); + //BA.debugLineNum = 152;BA.debugLine="m.Put(\"limit_reached\", \"Limite di 9 ore gia raggi"; +_m.Put((Object)("limit_reached"),(Object)("Limite di 9 ore gia raggiunto per questa giornata.")); + //BA.debugLineNum = 153;BA.debugLine="Return m"; +if (true) return _m; + //BA.debugLineNum = 154;BA.debugLine="End Sub"; +return null; +} +public static anywheresoftware.b4a.objects.collections.Map _createspanishmap(anywheresoftware.b4a.BA _ba) throws Exception{ +anywheresoftware.b4a.objects.collections.Map _m = null; + //BA.debugLineNum = 244;BA.debugLine="Private Sub CreateSpanishMap As Map"; + //BA.debugLineNum = 245;BA.debugLine="Dim m As Map"; +_m = new anywheresoftware.b4a.objects.collections.Map(); + //BA.debugLineNum = 246;BA.debugLine="m.Initialize"; +_m.Initialize(); + //BA.debugLineNum = 247;BA.debugLine="m.Put(\"app_title\", \"Overtime Guard\")"; +_m.Put((Object)("app_title"),(Object)("Overtime Guard")); + //BA.debugLineNum = 248;BA.debugLine="m.Put(\"start\", \"Iniciar\")"; +_m.Put((Object)("start"),(Object)("Iniciar")); + //BA.debugLineNum = 249;BA.debugLine="m.Put(\"end\", \"Detener\")"; +_m.Put((Object)("end"),(Object)("Detener")); + //BA.debugLineNum = 250;BA.debugLine="m.Put(\"pause\", \"Pausa\")"; +_m.Put((Object)("pause"),(Object)("Pausa")); + //BA.debugLineNum = 251;BA.debugLine="m.Put(\"end_pause\", \"Fin pausa\")"; +_m.Put((Object)("end_pause"),(Object)("Fin pausa")); + //BA.debugLineNum = 252;BA.debugLine="m.Put(\"stats\", \"Stats\")"; +_m.Put((Object)("stats"),(Object)("Stats")); + //BA.debugLineNum = 253;BA.debugLine="m.Put(\"config\", \"Config\")"; +_m.Put((Object)("config"),(Object)("Config")); + //BA.debugLineNum = 254;BA.debugLine="m.Put(\"bg\", \"Fondo\")"; +_m.Put((Object)("bg"),(Object)("Fondo")); + //BA.debugLineNum = 255;BA.debugLine="m.Put(\"statistics\", \"Estadisticas\")"; +_m.Put((Object)("statistics"),(Object)("Estadisticas")); + //BA.debugLineNum = 256;BA.debugLine="m.Put(\"close\", \"Cerrar\")"; +_m.Put((Object)("close"),(Object)("Cerrar")); + //BA.debugLineNum = 257;BA.debugLine="m.Put(\"work_start\", \"Inicio trabajo\")"; +_m.Put((Object)("work_start"),(Object)("Inicio trabajo")); + //BA.debugLineNum = 258;BA.debugLine="m.Put(\"pause_start\", \"Inicio pausa\")"; +_m.Put((Object)("pause_start"),(Object)("Inicio pausa")); + //BA.debugLineNum = 259;BA.debugLine="m.Put(\"pause_end\", \"Fin pausa\")"; +_m.Put((Object)("pause_end"),(Object)("Fin pausa")); + //BA.debugLineNum = 260;BA.debugLine="m.Put(\"work_end\", \"Fin trabajo\")"; +_m.Put((Object)("work_end"),(Object)("Fin trabajo")); + //BA.debugLineNum = 261;BA.debugLine="m.Put(\"set_config\", \"Activar config\")"; +_m.Put((Object)("set_config"),(Object)("Activar config")); + //BA.debugLineNum = 262;BA.debugLine="m.Put(\"reset_config\", \"Reset config\")"; +_m.Put((Object)("reset_config"),(Object)("Reset config")); + //BA.debugLineNum = 263;BA.debugLine="m.Put(\"clear_today\", \"Borrar hoy\")"; +_m.Put((Object)("clear_today"),(Object)("Borrar hoy")); + //BA.debugLineNum = 264;BA.debugLine="m.Put(\"date\", \"Fecha\")"; +_m.Put((Object)("date"),(Object)("Fecha")); + //BA.debugLineNum = 265;BA.debugLine="m.Put(\"work\", \"Trabajo\")"; +_m.Put((Object)("work"),(Object)("Trabajo")); + //BA.debugLineNum = 266;BA.debugLine="m.Put(\"pause_col\", \"Pausa\")"; +_m.Put((Object)("pause_col"),(Object)("Pausa")); + //BA.debugLineNum = 267;BA.debugLine="m.Put(\"overtime\", \"Extra\")"; +_m.Put((Object)("overtime"),(Object)("Extra")); + //BA.debugLineNum = 268;BA.debugLine="m.Put(\"totals\", \"Totales\")"; +_m.Put((Object)("totals"),(Object)("Totales")); + //BA.debugLineNum = 269;BA.debugLine="m.Put(\"manual_mode\", \"Modo manual\")"; +_m.Put((Object)("manual_mode"),(Object)("Modo manual")); + //BA.debugLineNum = 270;BA.debugLine="m.Put(\"auto_recording\", \"Auto: grabando...\")"; +_m.Put((Object)("auto_recording"),(Object)("Auto: grabando...")); + //BA.debugLineNum = 271;BA.debugLine="m.Put(\"auto_paused\", \"Auto: pausa...\")"; +_m.Put((Object)("auto_paused"),(Object)("Auto: pausa...")); + //BA.debugLineNum = 272;BA.debugLine="m.Put(\"auto_stopped\", \"Auto: detenido...\")"; +_m.Put((Object)("auto_stopped"),(Object)("Auto: detenido...")); + //BA.debugLineNum = 273;BA.debugLine="m.Put(\"use_hhmm\", \"Usa horas HH:MM.\")"; +_m.Put((Object)("use_hhmm"),(Object)("Usa horas HH:MM.")); + //BA.debugLineNum = 274;BA.debugLine="m.Put(\"times_order\", \"Las horas deben estar en or"; +_m.Put((Object)("times_order"),(Object)("Las horas deben estar en orden.")); + //BA.debugLineNum = 275;BA.debugLine="m.Put(\"work_exceed\", \"El trabajo configurado no p"; +_m.Put((Object)("work_exceed"),(Object)("El trabajo configurado no puede superar 8 horas.")); + //BA.debugLineNum = 276;BA.debugLine="m.Put(\"auto_enabled\", \"Configuracion automatica a"; +_m.Put((Object)("auto_enabled"),(Object)("Configuracion automatica activada.")); + //BA.debugLineNum = 277;BA.debugLine="m.Put(\"auto_disabled\", \"Configuracion automatica"; +_m.Put((Object)("auto_disabled"),(Object)("Configuracion automatica desactivada.")); + //BA.debugLineNum = 278;BA.debugLine="m.Put(\"no_day_to_clear\", \"No hay dia para borrar."; +_m.Put((Object)("no_day_to_clear"),(Object)("No hay dia para borrar.")); + //BA.debugLineNum = 279;BA.debugLine="m.Put(\"clear_today_title\", \"Borrar hoy\")"; +_m.Put((Object)("clear_today_title"),(Object)("Borrar hoy")); + //BA.debugLineNum = 280;BA.debugLine="m.Put(\"clear_today_confirm\", \"Borrar todos los da"; +_m.Put((Object)("clear_today_confirm"),(Object)("Borrar todos los datos registrados de")); + //BA.debugLineNum = 281;BA.debugLine="m.Put(\"clear_button\", \"Borrar\")"; +_m.Put((Object)("clear_button"),(Object)("Borrar")); + //BA.debugLineNum = 282;BA.debugLine="m.Put(\"cancel\", \"Cancelar\")"; +_m.Put((Object)("cancel"),(Object)("Cancelar")); + //BA.debugLineNum = 283;BA.debugLine="m.Put(\"today_cleared\", \"Dia borrado.\")"; +_m.Put((Object)("today_cleared"),(Object)("Dia borrado.")); + //BA.debugLineNum = 284;BA.debugLine="m.Put(\"limit_reached\", \"Limite de 9 horas ya alca"; +_m.Put((Object)("limit_reached"),(Object)("Limite de 9 horas ya alcanzado para esta jornada.")); + //BA.debugLineNum = 285;BA.debugLine="Return m"; +if (true) return _m; + //BA.debugLineNum = 286;BA.debugLine="End Sub"; +return null; +} +public static String _currentlanguagecode(anywheresoftware.b4a.BA _ba) throws Exception{ + //BA.debugLineNum = 29;BA.debugLine="Public Sub CurrentLanguageCode As String"; + //BA.debugLineNum = 30;BA.debugLine="If initialized = False Then Initialize"; +if (_initialized==anywheresoftware.b4a.keywords.Common.False) { +_initialize(_ba);}; + //BA.debugLineNum = 31;BA.debugLine="Return currentLanguage"; +if (true) return _currentlanguage; + //BA.debugLineNum = 32;BA.debugLine="End Sub"; +return ""; +} +public static String _detectdevicelanguage(anywheresoftware.b4a.BA _ba) throws Exception{ +anywheresoftware.b4j.object.JavaObject _context = null; +anywheresoftware.b4j.object.JavaObject _resources = null; +anywheresoftware.b4j.object.JavaObject _configuration = null; +anywheresoftware.b4j.object.JavaObject _locale = null; +String _code = ""; +anywheresoftware.b4j.object.JavaObject _jo = null; + //BA.debugLineNum = 54;BA.debugLine="Private Sub DetectDeviceLanguage As String"; + //BA.debugLineNum = 55;BA.debugLine="Dim context As JavaObject"; +_context = new anywheresoftware.b4j.object.JavaObject(); + //BA.debugLineNum = 56;BA.debugLine="context.InitializeContext"; +_context.InitializeContext((_ba.processBA == null ? _ba : _ba.processBA)); + //BA.debugLineNum = 57;BA.debugLine="Dim resources As JavaObject = context.RunMethod(\""; +_resources = new anywheresoftware.b4j.object.JavaObject(); +_resources = (anywheresoftware.b4j.object.JavaObject) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4j.object.JavaObject(), (java.lang.Object)(_context.RunMethod("getResources",(Object[])(anywheresoftware.b4a.keywords.Common.Null)))); + //BA.debugLineNum = 58;BA.debugLine="Dim configuration As JavaObject = resources.RunMe"; +_configuration = new anywheresoftware.b4j.object.JavaObject(); +_configuration = (anywheresoftware.b4j.object.JavaObject) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4j.object.JavaObject(), (java.lang.Object)(_resources.RunMethod("getConfiguration",(Object[])(anywheresoftware.b4a.keywords.Common.Null)))); + //BA.debugLineNum = 59;BA.debugLine="Dim locale As JavaObject = configuration.GetField"; +_locale = new anywheresoftware.b4j.object.JavaObject(); +_locale = (anywheresoftware.b4j.object.JavaObject) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4j.object.JavaObject(), (java.lang.Object)(_configuration.GetField("locale"))); + //BA.debugLineNum = 60;BA.debugLine="Dim code As String = locale.RunMethod(\"getLanguag"; +_code = BA.ObjectToString(_locale.RunMethod("getLanguage",(Object[])(anywheresoftware.b4a.keywords.Common.Null))); + //BA.debugLineNum = 61;BA.debugLine="If code <> \"\" Then Return code"; +if ((_code).equals("") == false) { +if (true) return _code;}; + //BA.debugLineNum = 62;BA.debugLine="Dim jo As JavaObject"; +_jo = new anywheresoftware.b4j.object.JavaObject(); + //BA.debugLineNum = 63;BA.debugLine="jo.InitializeStatic(\"java.util.Locale\")"; +_jo.InitializeStatic("java.util.Locale"); + //BA.debugLineNum = 64;BA.debugLine="locale = jo.RunMethod(\"getDefault\", Null)"; +_locale = (anywheresoftware.b4j.object.JavaObject) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4j.object.JavaObject(), (java.lang.Object)(_jo.RunMethod("getDefault",(Object[])(anywheresoftware.b4a.keywords.Common.Null)))); + //BA.debugLineNum = 65;BA.debugLine="Return locale.RunMethod(\"getLanguage\", Null)"; +if (true) return BA.ObjectToString(_locale.RunMethod("getLanguage",(Object[])(anywheresoftware.b4a.keywords.Common.Null))); + //BA.debugLineNum = 66;BA.debugLine="End Sub"; +return ""; +} +public static String _initialize(anywheresoftware.b4a.BA _ba) throws Exception{ + //BA.debugLineNum = 8;BA.debugLine="Public Sub Initialize"; + //BA.debugLineNum = 9;BA.debugLine="If initialized Then Return"; +if (_initialized) { +if (true) return "";}; + //BA.debugLineNum = 10;BA.debugLine="translations.Initialize"; +_translations.Initialize(); + //BA.debugLineNum = 11;BA.debugLine="LoadLanguage(\"en\", CreateEnglishMap)"; +_loadlanguage(_ba,"en",_createenglishmap(_ba)); + //BA.debugLineNum = 12;BA.debugLine="LoadLanguage(\"it\", CreateItalianMap)"; +_loadlanguage(_ba,"it",_createitalianmap(_ba)); + //BA.debugLineNum = 13;BA.debugLine="LoadLanguage(\"fr\", CreateFrenchMap)"; +_loadlanguage(_ba,"fr",_createfrenchmap(_ba)); + //BA.debugLineNum = 14;BA.debugLine="LoadLanguage(\"de\", CreateGermanMap)"; +_loadlanguage(_ba,"de",_creategermanmap(_ba)); + //BA.debugLineNum = 15;BA.debugLine="LoadLanguage(\"es\", CreateSpanishMap)"; +_loadlanguage(_ba,"es",_createspanishmap(_ba)); + //BA.debugLineNum = 16;BA.debugLine="currentLanguage = NormalizeLanguage(DetectDeviceL"; +_currentlanguage = _normalizelanguage(_ba,_detectdevicelanguage(_ba)); + //BA.debugLineNum = 17;BA.debugLine="initialized = True"; +_initialized = anywheresoftware.b4a.keywords.Common.True; + //BA.debugLineNum = 18;BA.debugLine="End Sub"; +return ""; +} +public static String _loadlanguage(anywheresoftware.b4a.BA _ba,String _code,anywheresoftware.b4a.objects.collections.Map _values) throws Exception{ + //BA.debugLineNum = 34;BA.debugLine="Private Sub LoadLanguage(Code As String, Values As"; + //BA.debugLineNum = 35;BA.debugLine="translations.Put(Code, Values)"; +_translations.Put((Object)(_code),(Object)(_values.getObject())); + //BA.debugLineNum = 36;BA.debugLine="End Sub"; +return ""; +} +public static String _normalizelanguage(anywheresoftware.b4a.BA _ba,String _code) throws Exception{ + //BA.debugLineNum = 38;BA.debugLine="Private Sub NormalizeLanguage(Code As String) As S"; + //BA.debugLineNum = 39;BA.debugLine="Code = Code.ToLowerCase"; +_code = _code.toLowerCase(); + //BA.debugLineNum = 40;BA.debugLine="Select True"; +switch (BA.switchObjectToInt(anywheresoftware.b4a.keywords.Common.True,_code.startsWith("it"),_code.startsWith("fr"),_code.startsWith("de"),_code.startsWith("es"))) { +case 0: { + //BA.debugLineNum = 42;BA.debugLine="Return \"it\""; +if (true) return "it"; + break; } +case 1: { + //BA.debugLineNum = 44;BA.debugLine="Return \"fr\""; +if (true) return "fr"; + break; } +case 2: { + //BA.debugLineNum = 46;BA.debugLine="Return \"de\""; +if (true) return "de"; + break; } +case 3: { + //BA.debugLineNum = 48;BA.debugLine="Return \"es\""; +if (true) return "es"; + break; } +default: { + //BA.debugLineNum = 50;BA.debugLine="Return \"en\""; +if (true) return "en"; + break; } +} +; + //BA.debugLineNum = 52;BA.debugLine="End Sub"; +return ""; +} +public static String _process_globals() throws Exception{ + //BA.debugLineNum = 2;BA.debugLine="Sub Process_Globals"; + //BA.debugLineNum = 3;BA.debugLine="Private translations As Map"; +_translations = new anywheresoftware.b4a.objects.collections.Map(); + //BA.debugLineNum = 4;BA.debugLine="Private currentLanguage As String"; +_currentlanguage = ""; + //BA.debugLineNum = 5;BA.debugLine="Private initialized As Boolean"; +_initialized = false; + //BA.debugLineNum = 6;BA.debugLine="End Sub"; +return ""; +} +public static String _t(anywheresoftware.b4a.BA _ba,String _key) throws Exception{ +anywheresoftware.b4a.objects.collections.Map _languagemap = null; +anywheresoftware.b4a.objects.collections.Map _fallback = null; + //BA.debugLineNum = 20;BA.debugLine="Public Sub T(Key As String) As String"; + //BA.debugLineNum = 21;BA.debugLine="If initialized = False Then Initialize"; +if (_initialized==anywheresoftware.b4a.keywords.Common.False) { +_initialize(_ba);}; + //BA.debugLineNum = 22;BA.debugLine="Dim languageMap As Map = translations.Get(current"; +_languagemap = new anywheresoftware.b4a.objects.collections.Map(); +_languagemap = (anywheresoftware.b4a.objects.collections.Map) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4a.objects.collections.Map(), (java.util.Map)(_translations.Get((Object)(_currentlanguage)))); + //BA.debugLineNum = 23;BA.debugLine="If languageMap.IsInitialized And languageMap.Cont"; +if (_languagemap.IsInitialized() && _languagemap.ContainsKey((Object)(_key))) { +if (true) return BA.ObjectToString(_languagemap.Get((Object)(_key)));}; + //BA.debugLineNum = 24;BA.debugLine="Dim fallback As Map = translations.Get(\"en\")"; +_fallback = new anywheresoftware.b4a.objects.collections.Map(); +_fallback = (anywheresoftware.b4a.objects.collections.Map) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4a.objects.collections.Map(), (java.util.Map)(_translations.Get((Object)("en")))); + //BA.debugLineNum = 25;BA.debugLine="If fallback.IsInitialized And fallback.ContainsKe"; +if (_fallback.IsInitialized() && _fallback.ContainsKey((Object)(_key))) { +if (true) return BA.ObjectToString(_fallback.Get((Object)(_key)));}; + //BA.debugLineNum = 26;BA.debugLine="Return Key"; +if (true) return _key; + //BA.debugLineNum = 27;BA.debugLine="End Sub"; +return ""; +} +} diff --git a/Objects/src/b4a/example/main.java b/Objects/src/b4a/example/main.java index 5599ff4..43788d1 100644 --- a/Objects/src/b4a/example/main.java +++ b/Objects/src/b4a/example/main.java @@ -25,7 +25,7 @@ public class main extends Activity implements B4AActivity{ ActivityWrapper _activity; java.util.ArrayList menuItems; public static final boolean fullScreen = false; - public static final boolean includeTitle = true; + public static final boolean includeTitle = false; public static WeakReference previousOne; public static boolean dontPause; @@ -34,7 +34,7 @@ public class main extends Activity implements B4AActivity{ super.onCreate(savedInstanceState); mostCurrent = this; if (processBA == null) { - processBA = new anywheresoftware.b4a.ShellBA(this.getApplicationContext(), null, null, "b4a.example", "b4a.example.main"); + processBA = new BA(this.getApplicationContext(), null, null, "b4a.example", "b4a.example.main"); processBA.loadHtSubs(this.getClass()); float deviceScale = getApplicationContext().getResources().getDisplayMetrics().density; BALayout.setDeviceScale(deviceScale); @@ -335,320 +335,2351 @@ public class main extends Activity implements B4AActivity{ } +public anywheresoftware.b4a.keywords.Common __c = null; +public static anywheresoftware.b4a.objects.Timer _timer1 = null; +public static long _firstworklimitms = 0L; +public static long _worklimitms = 0L; +public static long _overtimelimitms = 0L; +public static long _maxproductivems = 0L; +public static String _statsfilename = ""; +public static String _statefilename = ""; +public static String _autoconfigfilename = ""; +public static int _maxstoreddays = 0; +public anywheresoftware.b4a.objects.ButtonWrapper _btnstart = null; +public anywheresoftware.b4a.objects.ButtonWrapper _btnpause = null; +public anywheresoftware.b4a.objects.ButtonWrapper _btnreset = null; +public anywheresoftware.b4a.objects.ButtonWrapper _btnsync = null; +public anywheresoftware.b4a.objects.LabelWrapper _btnstats = null; +public anywheresoftware.b4a.objects.ButtonWrapper _btnstatsclose = null; +public anywheresoftware.b4a.objects.LabelWrapper _btnconfig = null; +public anywheresoftware.b4a.objects.ButtonWrapper _btnconfigclose = null; +public anywheresoftware.b4a.objects.ButtonWrapper _btnconfigsave = null; +public anywheresoftware.b4a.objects.ButtonWrapper _btnconfigreset = null; +public anywheresoftware.b4a.objects.ButtonWrapper _btncleartoday = null; +public anywheresoftware.b4a.objects.LabelWrapper _btnbackground = null; +public anywheresoftware.b4a.objects.LabelWrapper _lblelapsedtime = null; +public anywheresoftware.b4a.objects.LabelWrapper _lblautostatus = null; +public anywheresoftware.b4a.objects.PanelWrapper _pnlclock = null; +public anywheresoftware.b4a.objects.PanelWrapper _pnlstats = null; +public anywheresoftware.b4a.objects.PanelWrapper _pnlconfig = null; +public anywheresoftware.b4a.objects.ScrollViewWrapper _svstats = null; +public anywheresoftware.b4a.objects.EditTextWrapper _txtcfgstart = null; +public anywheresoftware.b4a.objects.EditTextWrapper _txtcfgpausestart = null; +public anywheresoftware.b4a.objects.EditTextWrapper _txtcfgpauseend = null; +public anywheresoftware.b4a.objects.EditTextWrapper _txtcfgend = null; +public b4a.example.analogclock _myclock = null; +public static boolean _sessionactive = false; +public static boolean _pauseactive = false; +public static long _productiveelapsedms = 0L; +public static long _currentsegmentstart = 0L; +public static int _currentsegmentcolor = 0; +public anywheresoftware.b4a.objects.collections.List _statsrows = null; +public static int _workmorningcolor = 0; +public static long _currentworkdaystart = 0L; +public static long _currentworkdaykey = 0L; +public static boolean _automodeenabled = false; +public static int _autostartminutes = 0; +public static int _autopausestartminutes = 0; +public static int _autopauseendminutes = 0; +public static int _autoendminutes = 0; +public static String _autostate = ""; +public static long _lastactivestatesaveat = 0L; +public b4a.example.starter _starter = null; +public b4a.example.localization _localization = null; +public static boolean isAnyActivityVisible() { + boolean vis = false; +vis = vis | (main.mostCurrent != null); +return vis;} +public static String _activity_create(boolean _firsttime) throws Exception{ + //BA.debugLineNum = 68;BA.debugLine="Sub Activity_Create(FirstTime As Boolean)"; + //BA.debugLineNum = 69;BA.debugLine="Localization.Initialize"; +mostCurrent._localization._initialize /*String*/ (mostCurrent.activityBA); + //BA.debugLineNum = 70;BA.debugLine="Activity.LoadLayout(\"Main_Layout\")"; +mostCurrent._activity.LoadLayout("Main_Layout",mostCurrent.activityBA); + //BA.debugLineNum = 71;BA.debugLine="Activity.Title = Localization.T(\"app_title\")"; +mostCurrent._activity.setTitle(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"app_title"))); + //BA.debugLineNum = 72;BA.debugLine="Log(\"Layout loaded successfully.\")"; +anywheresoftware.b4a.keywords.Common.LogImpl("131076","Layout loaded successfully.",0); + //BA.debugLineNum = 73;BA.debugLine="ResizeClockPanel"; +_resizeclockpanel(); + //BA.debugLineNum = 75;BA.debugLine="FirstWorkLimitMs = 4 * DateTime.TicksPerHour"; +_firstworklimitms = (long) (4*anywheresoftware.b4a.keywords.Common.DateTime.TicksPerHour); + //BA.debugLineNum = 76;BA.debugLine="WorkLimitMs = 8 * DateTime.TicksPerHour"; +_worklimitms = (long) (8*anywheresoftware.b4a.keywords.Common.DateTime.TicksPerHour); + //BA.debugLineNum = 77;BA.debugLine="OvertimeLimitMs = DateTime.TicksPerHour"; +_overtimelimitms = anywheresoftware.b4a.keywords.Common.DateTime.TicksPerHour; + //BA.debugLineNum = 78;BA.debugLine="MaxProductiveMs = WorkLimitMs + OvertimeLimitMs"; +_maxproductivems = (long) (_worklimitms+_overtimelimitms); + //BA.debugLineNum = 79;BA.debugLine="WorkMorningColor = Colors.RGB(0, 190, 255)"; +_workmorningcolor = anywheresoftware.b4a.keywords.Common.Colors.RGB((int) (0),(int) (190),(int) (255)); + //BA.debugLineNum = 80;BA.debugLine="StatsFileName = \"work_segments.txt\""; +_statsfilename = "work_segments.txt"; + //BA.debugLineNum = 81;BA.debugLine="StateFileName = \"active_state.txt\""; +_statefilename = "active_state.txt"; + //BA.debugLineNum = 82;BA.debugLine="AutoConfigFileName = \"auto_config.txt\""; +_autoconfigfilename = "auto_config.txt"; + //BA.debugLineNum = 83;BA.debugLine="MaxStoredDays = 62"; +_maxstoreddays = (int) (62); + //BA.debugLineNum = 85;BA.debugLine="myClock.Initialize(pnlClock, 96)"; +mostCurrent._myclock._initialize /*String*/ (mostCurrent.activityBA,mostCurrent._pnlclock,(float) (96)); + //BA.debugLineNum = 86;BA.debugLine="myClock.SetBaseDuration(12 * DateTime.TicksPerHou"; +mostCurrent._myclock._setbaseduration /*String*/ ((long) (12*anywheresoftware.b4a.keywords.Common.DateTime.TicksPerHour)); + //BA.debugLineNum = 88;BA.debugLine="Timer1.Initialize(\"Timer1\", 1000)"; +_timer1.Initialize(processBA,"Timer1",(long) (1000)); + //BA.debugLineNum = 89;BA.debugLine="Timer1.Enabled = True"; +_timer1.setEnabled(anywheresoftware.b4a.keywords.Common.True); + //BA.debugLineNum = 91;BA.debugLine="StatsRows.Initialize"; +mostCurrent._statsrows.Initialize(); + //BA.debugLineNum = 92;BA.debugLine="LoadStatsRows"; +_loadstatsrows(); + //BA.debugLineNum = 93;BA.debugLine="HideLegacyButtons"; +_hidelegacybuttons(); + //BA.debugLineNum = 94;BA.debugLine="CreateStatsButton"; +_createstatsbutton(); + //BA.debugLineNum = 95;BA.debugLine="CreateStatsPage"; +_createstatspage(); + //BA.debugLineNum = 96;BA.debugLine="CreateConfigButton"; +_createconfigbutton(); + //BA.debugLineNum = 97;BA.debugLine="CreateConfigPage"; +_createconfigpage(); + //BA.debugLineNum = 98;BA.debugLine="CreateBackgroundButton"; +_createbackgroundbutton(); + //BA.debugLineNum = 99;BA.debugLine="CreateAutoStatusLabel"; +_createautostatuslabel(); + //BA.debugLineNum = 100;BA.debugLine="LayoutMainButtons"; +_layoutmainbuttons(); + //BA.debugLineNum = 101;BA.debugLine="LoadAutoConfig"; +_loadautoconfig(); + //BA.debugLineNum = 102;BA.debugLine="ResetSessionState(False)"; +_resetsessionstate(anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 103;BA.debugLine="If AutoModeEnabled Then"; +if (_automodeenabled) { + //BA.debugLineNum = 104;BA.debugLine="UpdateAutomaticState(DateTime.Now)"; +_updateautomaticstate(anywheresoftware.b4a.keywords.Common.DateTime.getNow()); + }else { + //BA.debugLineNum = 106;BA.debugLine="RestoreActiveState"; +_restoreactivestate(); + //BA.debugLineNum = 107;BA.debugLine="If SessionActive = False Then RestoreLastClosedD"; +if (_sessionactive==anywheresoftware.b4a.keywords.Common.False) { +_restorelastcloseddaystate();}; + }; + //BA.debugLineNum = 109;BA.debugLine="End Sub"; +return ""; +} +public static String _activity_pause(boolean _userclosed) throws Exception{ + //BA.debugLineNum = 294;BA.debugLine="Sub Activity_Pause (UserClosed As Boolean)"; + //BA.debugLineNum = 295;BA.debugLine="If AutoModeEnabled = False Then SaveActiveState"; +if (_automodeenabled==anywheresoftware.b4a.keywords.Common.False) { +_saveactivestate();}; + //BA.debugLineNum = 296;BA.debugLine="End Sub"; +return ""; +} +public static String _activity_resume() throws Exception{ + //BA.debugLineNum = 135;BA.debugLine="Sub Activity_Resume"; + //BA.debugLineNum = 136;BA.debugLine="If AutoModeEnabled Then"; +if (_automodeenabled) { + //BA.debugLineNum = 137;BA.debugLine="UpdateAutomaticState(DateTime.Now)"; +_updateautomaticstate(anywheresoftware.b4a.keywords.Common.DateTime.getNow()); + }else { + //BA.debugLineNum = 139;BA.debugLine="RestoreActiveState"; +_restoreactivestate(); + //BA.debugLineNum = 140;BA.debugLine="If SessionActive = False Then RestoreLastClosedD"; +if (_sessionactive==anywheresoftware.b4a.keywords.Common.False) { +_restorelastcloseddaystate();}; + }; + //BA.debugLineNum = 142;BA.debugLine="End Sub"; +return ""; +} +public static String _addautosegmentnosave(long _daystart,int _fromminutes,int _tominutes,String _category) throws Exception{ +long _duration = 0L; +anywheresoftware.b4a.objects.collections.Map _row = null; + //BA.debugLineNum = 1045;BA.debugLine="Private Sub AddAutoSegmentNoSave(DayStart As Long,"; + //BA.debugLineNum = 1046;BA.debugLine="Dim duration As Long = (ToMinutes - FromMinutes)"; +_duration = (long) ((_tominutes-_fromminutes)*anywheresoftware.b4a.keywords.Common.DateTime.TicksPerMinute); + //BA.debugLineNum = 1047;BA.debugLine="If duration <= 0 Then Return"; +if (_duration<=0) { +if (true) return "";}; + //BA.debugLineNum = 1048;BA.debugLine="Dim row As Map"; +_row = new anywheresoftware.b4a.objects.collections.Map(); + //BA.debugLineNum = 1049;BA.debugLine="row.Initialize"; +_row.Initialize(); + //BA.debugLineNum = 1050;BA.debugLine="row.Put(\"dayStart\", DayStart)"; +_row.Put((Object)("dayStart"),(Object)(_daystart)); + //BA.debugLineNum = 1051;BA.debugLine="row.Put(\"dayKey\", DayStart)"; +_row.Put((Object)("dayKey"),(Object)(_daystart)); + //BA.debugLineNum = 1052;BA.debugLine="row.Put(\"segmentStart\", DayStart + FromMinutes *"; +_row.Put((Object)("segmentStart"),(Object)(_daystart+_fromminutes*anywheresoftware.b4a.keywords.Common.DateTime.TicksPerMinute)); + //BA.debugLineNum = 1053;BA.debugLine="row.Put(\"date\", DateTime.Date(DayStart))"; +_row.Put((Object)("date"),(Object)(anywheresoftware.b4a.keywords.Common.DateTime.Date(_daystart))); + //BA.debugLineNum = 1054;BA.debugLine="row.Put(\"duration\", duration)"; +_row.Put((Object)("duration"),(Object)(_duration)); + //BA.debugLineNum = 1055;BA.debugLine="row.Put(\"category\", Category)"; +_row.Put((Object)("category"),(Object)(_category)); + //BA.debugLineNum = 1056;BA.debugLine="row.Put(\"source\", \"auto\")"; +_row.Put((Object)("source"),(Object)("auto")); + //BA.debugLineNum = 1057;BA.debugLine="StatsRows.Add(row)"; +mostCurrent._statsrows.Add((Object)(_row.getObject())); + //BA.debugLineNum = 1058;BA.debugLine="End Sub"; +return ""; +} +public static String _addcell(String _text,int _x,int _y,int _w,int _h,boolean _header) throws Exception{ +anywheresoftware.b4a.objects.LabelWrapper _lbl = null; + //BA.debugLineNum = 1112;BA.debugLine="Private Sub AddCell(Text As String, x As Int, y As"; + //BA.debugLineNum = 1113;BA.debugLine="Dim lbl As Label"; +_lbl = new anywheresoftware.b4a.objects.LabelWrapper(); + //BA.debugLineNum = 1114;BA.debugLine="lbl.Initialize(\"\")"; +_lbl.Initialize(mostCurrent.activityBA,""); + //BA.debugLineNum = 1115;BA.debugLine="lbl.Text = Text"; +_lbl.setText(BA.ObjectToCharSequence(_text)); + //BA.debugLineNum = 1116;BA.debugLine="lbl.TextSize = 12"; +_lbl.setTextSize((float) (12)); + //BA.debugLineNum = 1117;BA.debugLine="lbl.TextColor = Colors.Black"; +_lbl.setTextColor(anywheresoftware.b4a.keywords.Common.Colors.Black); + //BA.debugLineNum = 1118;BA.debugLine="lbl.Gravity = Gravity.CENTER"; +_lbl.setGravity(anywheresoftware.b4a.keywords.Common.Gravity.CENTER); + //BA.debugLineNum = 1119;BA.debugLine="If Header Then"; +if (_header) { + //BA.debugLineNum = 1120;BA.debugLine="lbl.Color = Colors.RGB(230, 230, 230)"; +_lbl.setColor(anywheresoftware.b4a.keywords.Common.Colors.RGB((int) (230),(int) (230),(int) (230))); + }else { + //BA.debugLineNum = 1122;BA.debugLine="lbl.Color = Colors.White"; +_lbl.setColor(anywheresoftware.b4a.keywords.Common.Colors.White); + }; + //BA.debugLineNum = 1124;BA.debugLine="svStats.Panel.AddView(lbl, x, y, w, h)"; +mostCurrent._svstats.getPanel().AddView((android.view.View)(_lbl.getObject()),_x,_y,_w,_h); + //BA.debugLineNum = 1125;BA.debugLine="End Sub"; +return ""; +} +public static anywheresoftware.b4a.objects.EditTextWrapper _addconfigfield(String _labeltext,String _valuetext,int _y) throws Exception{ +anywheresoftware.b4a.objects.LabelWrapper _lbl = null; +anywheresoftware.b4a.objects.EditTextWrapper _txt = null; + //BA.debugLineNum = 275;BA.debugLine="Private Sub AddConfigField(LabelText As String, Va"; + //BA.debugLineNum = 276;BA.debugLine="Dim lbl As Label"; +_lbl = new anywheresoftware.b4a.objects.LabelWrapper(); + //BA.debugLineNum = 277;BA.debugLine="lbl.Initialize(\"\")"; +_lbl.Initialize(mostCurrent.activityBA,""); + //BA.debugLineNum = 278;BA.debugLine="lbl.Text = LabelText"; +_lbl.setText(BA.ObjectToCharSequence(_labeltext)); + //BA.debugLineNum = 279;BA.debugLine="lbl.TextSize = 16"; +_lbl.setTextSize((float) (16)); + //BA.debugLineNum = 280;BA.debugLine="lbl.TextColor = Colors.Black"; +_lbl.setTextColor(anywheresoftware.b4a.keywords.Common.Colors.Black); + //BA.debugLineNum = 281;BA.debugLine="lbl.Gravity = Gravity.CENTER_VERTICAL"; +_lbl.setGravity(anywheresoftware.b4a.keywords.Common.Gravity.CENTER_VERTICAL); + //BA.debugLineNum = 282;BA.debugLine="pnlConfig.AddView(lbl, 12dip, y, 140dip, 46dip)"; +mostCurrent._pnlconfig.AddView((android.view.View)(_lbl.getObject()),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (12)),_y,anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (140)),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (46))); + //BA.debugLineNum = 284;BA.debugLine="Dim txt As EditText"; +_txt = new anywheresoftware.b4a.objects.EditTextWrapper(); + //BA.debugLineNum = 285;BA.debugLine="txt.Initialize(\"\")"; +_txt.Initialize(mostCurrent.activityBA,""); + //BA.debugLineNum = 286;BA.debugLine="txt.Text = ValueText"; +_txt.setText(BA.ObjectToCharSequence(_valuetext)); + //BA.debugLineNum = 287;BA.debugLine="txt.TextSize = 18"; +_txt.setTextSize((float) (18)); + //BA.debugLineNum = 288;BA.debugLine="txt.SingleLine = True"; +_txt.setSingleLine(anywheresoftware.b4a.keywords.Common.True); + //BA.debugLineNum = 289;BA.debugLine="txt.InputType = txt.INPUT_TYPE_NUMBERS"; +_txt.setInputType(_txt.INPUT_TYPE_NUMBERS); + //BA.debugLineNum = 290;BA.debugLine="pnlConfig.AddView(txt, 160dip, y, Activity.Width"; +mostCurrent._pnlconfig.AddView((android.view.View)(_txt.getObject()),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (160)),_y,(int) (mostCurrent._activity.getWidth()-anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (172))),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (46))); + //BA.debugLineNum = 291;BA.debugLine="Return txt"; +if (true) return _txt; + //BA.debugLineNum = 292;BA.debugLine="End Sub"; +return null; +} +public static String _adddisplayproductivesegment(long _duration,long _startproductivems) throws Exception{ +long _remaining = 0L; +long _cursor = 0L; +int _segmentcolor = 0; +long _boundary = 0L; +long _chunk = 0L; + //BA.debugLineNum = 628;BA.debugLine="Private Sub AddDisplayProductiveSegment(Duration A"; + //BA.debugLineNum = 629;BA.debugLine="Dim remaining As Long = Duration"; +_remaining = _duration; + //BA.debugLineNum = 630;BA.debugLine="Dim cursor As Long = StartProductiveMs"; +_cursor = _startproductivems; + //BA.debugLineNum = 631;BA.debugLine="Do While remaining > 0"; +while (_remaining>0) { + //BA.debugLineNum = 632;BA.debugLine="Dim segmentColor As Int"; +_segmentcolor = 0; + //BA.debugLineNum = 633;BA.debugLine="Dim boundary As Long"; +_boundary = 0L; + //BA.debugLineNum = 634;BA.debugLine="If cursor < FirstWorkLimitMs Then"; +if (_cursor<_firstworklimitms) { + //BA.debugLineNum = 635;BA.debugLine="segmentColor = WorkMorningColor"; +_segmentcolor = _workmorningcolor; + //BA.debugLineNum = 636;BA.debugLine="boundary = FirstWorkLimitMs"; +_boundary = _firstworklimitms; + }else if(_cursor<_worklimitms) { + //BA.debugLineNum = 638;BA.debugLine="segmentColor = Colors.Green"; +_segmentcolor = anywheresoftware.b4a.keywords.Common.Colors.Green; + //BA.debugLineNum = 639;BA.debugLine="boundary = WorkLimitMs"; +_boundary = _worklimitms; + }else { + //BA.debugLineNum = 641;BA.debugLine="segmentColor = Colors.Red"; +_segmentcolor = anywheresoftware.b4a.keywords.Common.Colors.Red; + //BA.debugLineNum = 642;BA.debugLine="boundary = MaxProductiveMs"; +_boundary = _maxproductivems; + }; + //BA.debugLineNum = 644;BA.debugLine="Dim chunk As Long = remaining"; +_chunk = _remaining; + //BA.debugLineNum = 645;BA.debugLine="If cursor < boundary Then chunk = Min(chunk, bou"; +if (_cursor<_boundary) { +_chunk = (long) (anywheresoftware.b4a.keywords.Common.Min(_chunk,_boundary-_cursor));}; + //BA.debugLineNum = 646;BA.debugLine="myClock.AddSegment(chunk, segmentColor, False)"; +mostCurrent._myclock._addsegment /*String*/ (_chunk,_segmentcolor,anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 647;BA.debugLine="remaining = remaining - chunk"; +_remaining = (long) (_remaining-_chunk); + //BA.debugLineNum = 648;BA.debugLine="cursor = cursor + chunk"; +_cursor = (long) (_cursor+_chunk); + } +; + //BA.debugLineNum = 650;BA.debugLine="End Sub"; +return ""; +} +public static String _addstatsduration(anywheresoftware.b4a.objects.collections.Map _dailyrows,String _datetext,String _category,long _duration) throws Exception{ +anywheresoftware.b4a.objects.collections.Map _dailytotals = null; + //BA.debugLineNum = 905;BA.debugLine="Private Sub AddStatsDuration(dailyRows As Map, Dat"; + //BA.debugLineNum = 906;BA.debugLine="Dim dailyTotals As Map"; +_dailytotals = new anywheresoftware.b4a.objects.collections.Map(); + //BA.debugLineNum = 907;BA.debugLine="If dailyRows.ContainsKey(DateText) Then"; +if (_dailyrows.ContainsKey((Object)(_datetext))) { + //BA.debugLineNum = 908;BA.debugLine="dailyTotals = dailyRows.Get(DateText)"; +_dailytotals = (anywheresoftware.b4a.objects.collections.Map) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4a.objects.collections.Map(), (java.util.Map)(_dailyrows.Get((Object)(_datetext)))); + }else { + //BA.debugLineNum = 910;BA.debugLine="dailyTotals.Initialize"; +_dailytotals.Initialize(); + //BA.debugLineNum = 911;BA.debugLine="dailyTotals.Put(\"lavoro\", 0)"; +_dailytotals.Put((Object)("lavoro"),(Object)(0)); + //BA.debugLineNum = 912;BA.debugLine="dailyTotals.Put(\"pausa\", 0)"; +_dailytotals.Put((Object)("pausa"),(Object)(0)); + //BA.debugLineNum = 913;BA.debugLine="dailyTotals.Put(\"straordinario\", 0)"; +_dailytotals.Put((Object)("straordinario"),(Object)(0)); + //BA.debugLineNum = 914;BA.debugLine="dailyRows.Put(DateText, dailyTotals)"; +_dailyrows.Put((Object)(_datetext),(Object)(_dailytotals.getObject())); + }; + //BA.debugLineNum = 916;BA.debugLine="dailyTotals.Put(Category, dailyTotals.Get(Categor"; +_dailytotals.Put((Object)(_category),(Object)((double)(BA.ObjectToNumber(_dailytotals.Get((Object)(_category))))+_duration)); + //BA.debugLineNum = 917;BA.debugLine="End Sub"; +return ""; +} +public static String _addstatsrow(int _y,String _datetext,String _worktext,String _pausetext,String _overtimetext,boolean _header) throws Exception{ +int _rowheight = 0; +int _col1 = 0; +int _col = 0; + //BA.debugLineNum = 1102;BA.debugLine="Private Sub AddStatsRow(y As Int, DateText As Stri"; + //BA.debugLineNum = 1103;BA.debugLine="Dim rowHeight As Int = 30dip"; +_rowheight = anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (30)); + //BA.debugLineNum = 1104;BA.debugLine="Dim col1 As Int = 104dip"; +_col1 = anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (104)); + //BA.debugLineNum = 1105;BA.debugLine="Dim col As Int = (Activity.Width - col1) / 3"; +_col = (int) ((mostCurrent._activity.getWidth()-_col1)/(double)3); + //BA.debugLineNum = 1106;BA.debugLine="AddCell(DateText, 0, y, col1, rowHeight, Header)"; +_addcell(_datetext,(int) (0),_y,_col1,_rowheight,_header); + //BA.debugLineNum = 1107;BA.debugLine="AddCell(WorkText, col1, y, col, rowHeight, Header"; +_addcell(_worktext,_col1,_y,_col,_rowheight,_header); + //BA.debugLineNum = 1108;BA.debugLine="AddCell(PauseText, col1 + col, y, col, rowHeight,"; +_addcell(_pausetext,(int) (_col1+_col),_y,_col,_rowheight,_header); + //BA.debugLineNum = 1109;BA.debugLine="AddCell(OvertimeText, col1 + 2 * col, y, col, row"; +_addcell(_overtimetext,(int) (_col1+2*_col),_y,_col,_rowheight,_header); + //BA.debugLineNum = 1110;BA.debugLine="End Sub"; +return ""; +} +public static String _addstatssegment(long _daystart,long _daykey,long _segmentstart,long _duration,String _category,String _source) throws Exception{ +anywheresoftware.b4a.objects.collections.Map _row = null; + //BA.debugLineNum = 505;BA.debugLine="Private Sub AddStatsSegment(DayStart As Long, DayK"; + //BA.debugLineNum = 506;BA.debugLine="Dim row As Map"; +_row = new anywheresoftware.b4a.objects.collections.Map(); + //BA.debugLineNum = 507;BA.debugLine="row.Initialize"; +_row.Initialize(); + //BA.debugLineNum = 508;BA.debugLine="row.Put(\"dayStart\", DayStart)"; +_row.Put((Object)("dayStart"),(Object)(_daystart)); + //BA.debugLineNum = 509;BA.debugLine="row.Put(\"dayKey\", DayKey)"; +_row.Put((Object)("dayKey"),(Object)(_daykey)); + //BA.debugLineNum = 510;BA.debugLine="row.Put(\"segmentStart\", SegmentStart)"; +_row.Put((Object)("segmentStart"),(Object)(_segmentstart)); + //BA.debugLineNum = 511;BA.debugLine="row.Put(\"date\", DateTime.Date(DayStart))"; +_row.Put((Object)("date"),(Object)(anywheresoftware.b4a.keywords.Common.DateTime.Date(_daystart))); + //BA.debugLineNum = 512;BA.debugLine="row.Put(\"duration\", Duration)"; +_row.Put((Object)("duration"),(Object)(_duration)); + //BA.debugLineNum = 513;BA.debugLine="row.Put(\"category\", Category)"; +_row.Put((Object)("category"),(Object)(_category)); + //BA.debugLineNum = 514;BA.debugLine="row.Put(\"source\", Source)"; +_row.Put((Object)("source"),(Object)(_source)); + //BA.debugLineNum = 515;BA.debugLine="StatsRows.Add(row)"; +mostCurrent._statsrows.Add((Object)(_row.getObject())); + //BA.debugLineNum = 516;BA.debugLine="TrimStatsRows"; +_trimstatsrows(); + //BA.debugLineNum = 517;BA.debugLine="SaveStatsRows"; +_savestatsrows(); + //BA.debugLineNum = 518;BA.debugLine="End Sub"; +return ""; +} +public static String _btnbackground_click() throws Exception{ +anywheresoftware.b4a.objects.IntentWrapper _home = null; + //BA.debugLineNum = 384;BA.debugLine="Sub BtnBackground_Click"; + //BA.debugLineNum = 385;BA.debugLine="SaveActiveState"; +_saveactivestate(); + //BA.debugLineNum = 386;BA.debugLine="Dim home As Intent"; +_home = new anywheresoftware.b4a.objects.IntentWrapper(); + //BA.debugLineNum = 387;BA.debugLine="home.Initialize(\"android.intent.action.MAIN\", \"\")"; +_home.Initialize("android.intent.action.MAIN",""); + //BA.debugLineNum = 388;BA.debugLine="home.AddCategory(\"android.intent.category.HOME\")"; +_home.AddCategory("android.intent.category.HOME"); + //BA.debugLineNum = 389;BA.debugLine="home.Flags = 268435456"; +_home.setFlags((int) (268435456)); + //BA.debugLineNum = 390;BA.debugLine="StartActivity(home)"; +anywheresoftware.b4a.keywords.Common.StartActivity(processBA,(Object)(_home.getObject())); + //BA.debugLineNum = 391;BA.debugLine="End Sub"; +return ""; +} +public static String _btncleartoday_click() throws Exception{ + //BA.debugLineNum = 380;BA.debugLine="Sub BtnClearToday_Click"; + //BA.debugLineNum = 381;BA.debugLine="ClearDisplayedDay"; +_cleardisplayedday(); + //BA.debugLineNum = 382;BA.debugLine="End Sub"; +return ""; +} +public static String _btnconfig_click() throws Exception{ + //BA.debugLineNum = 364;BA.debugLine="Sub BtnConfig_Click"; + //BA.debugLineNum = 365;BA.debugLine="ShowConfigPage"; +_showconfigpage(); + //BA.debugLineNum = 366;BA.debugLine="End Sub"; +return ""; +} +public static String _btnconfigclose_click() throws Exception{ + //BA.debugLineNum = 368;BA.debugLine="Sub BtnConfigClose_Click"; + //BA.debugLineNum = 369;BA.debugLine="ShowMainPage"; +_showmainpage(); + //BA.debugLineNum = 370;BA.debugLine="End Sub"; +return ""; +} +public static String _btnconfigreset_click() throws Exception{ + //BA.debugLineNum = 376;BA.debugLine="Sub BtnConfigReset_Click"; + //BA.debugLineNum = 377;BA.debugLine="ResetAutomaticConfig"; +_resetautomaticconfig(); + //BA.debugLineNum = 378;BA.debugLine="End Sub"; +return ""; +} +public static String _btnconfigsave_click() throws Exception{ + //BA.debugLineNum = 372;BA.debugLine="Sub BtnConfigSave_Click"; + //BA.debugLineNum = 373;BA.debugLine="SetAutomaticConfig"; +_setautomaticconfig(); + //BA.debugLineNum = 374;BA.debugLine="End Sub"; +return ""; +} +public static String _btnpause_click() throws Exception{ +long _now = 0L; + //BA.debugLineNum = 319;BA.debugLine="Sub BtnPause_Click"; + //BA.debugLineNum = 320;BA.debugLine="If AutoModeEnabled Then Return"; +if (_automodeenabled) { +if (true) return "";}; + //BA.debugLineNum = 321;BA.debugLine="If SessionActive = False Then Return"; +if (_sessionactive==anywheresoftware.b4a.keywords.Common.False) { +if (true) return "";}; + //BA.debugLineNum = 322;BA.debugLine="Dim now As Long = DateTime.Now"; +_now = anywheresoftware.b4a.keywords.Common.DateTime.getNow(); + //BA.debugLineNum = 323;BA.debugLine="If PauseActive Then"; +if (_pauseactive) { + //BA.debugLineNum = 324;BA.debugLine="CloseCurrentSegment(now)"; +_closecurrentsegment(_now); + //BA.debugLineNum = 325;BA.debugLine="PauseActive = False"; +_pauseactive = anywheresoftware.b4a.keywords.Common.False; + //BA.debugLineNum = 326;BA.debugLine="BtnPause.Text = Localization.T(\"pause\")"; +mostCurrent._btnpause.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"pause"))); + //BA.debugLineNum = 327;BA.debugLine="CurrentSegmentStart = now"; +_currentsegmentstart = _now; + //BA.debugLineNum = 328;BA.debugLine="CurrentSegmentColor = GetCurrentWorkColor"; +_currentsegmentcolor = _getcurrentworkcolor(); + //BA.debugLineNum = 329;BA.debugLine="myClock.SetActiveSegment(0, CurrentSegmentColor,"; +mostCurrent._myclock._setactivesegment /*String*/ ((long) (0),_currentsegmentcolor,anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 330;BA.debugLine="SaveActiveState"; +_saveactivestate(); + //BA.debugLineNum = 331;BA.debugLine="Log(\"Pause ended.\")"; +anywheresoftware.b4a.keywords.Common.LogImpl("1179660","Pause ended.",0); + }else { + //BA.debugLineNum = 333;BA.debugLine="ProcessActiveWorkSegment(now)"; +_processactiveworksegment(_now); + //BA.debugLineNum = 334;BA.debugLine="If SessionActive = False Then Return"; +if (_sessionactive==anywheresoftware.b4a.keywords.Common.False) { +if (true) return "";}; + //BA.debugLineNum = 335;BA.debugLine="CloseCurrentSegment(now)"; +_closecurrentsegment(_now); + //BA.debugLineNum = 336;BA.debugLine="PauseActive = True"; +_pauseactive = anywheresoftware.b4a.keywords.Common.True; + //BA.debugLineNum = 337;BA.debugLine="BtnPause.Text = Localization.T(\"end_pause\")"; +mostCurrent._btnpause.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"end_pause"))); + //BA.debugLineNum = 338;BA.debugLine="CurrentSegmentStart = now"; +_currentsegmentstart = _now; + //BA.debugLineNum = 339;BA.debugLine="CurrentSegmentColor = Colors.Yellow"; +_currentsegmentcolor = anywheresoftware.b4a.keywords.Common.Colors.Yellow; + //BA.debugLineNum = 340;BA.debugLine="myClock.SetActiveSegment(0, CurrentSegmentColor,"; +mostCurrent._myclock._setactivesegment /*String*/ ((long) (0),_currentsegmentcolor,anywheresoftware.b4a.keywords.Common.True); + //BA.debugLineNum = 341;BA.debugLine="SaveActiveState"; +_saveactivestate(); + //BA.debugLineNum = 342;BA.debugLine="Log(\"Pause started.\")"; +anywheresoftware.b4a.keywords.Common.LogImpl("1179671","Pause started.",0); + }; + //BA.debugLineNum = 344;BA.debugLine="End Sub"; +return ""; +} +public static String _btnreset_click() throws Exception{ + //BA.debugLineNum = 347;BA.debugLine="Sub BtnReset_Click"; + //BA.debugLineNum = 348;BA.debugLine="ShowStatsPage"; +_showstatspage(); + //BA.debugLineNum = 349;BA.debugLine="End Sub"; +return ""; +} +public static String _btnstart_click() throws Exception{ + //BA.debugLineNum = 309;BA.debugLine="Sub BtnStart_Click"; + //BA.debugLineNum = 310;BA.debugLine="If AutoModeEnabled Then Return"; +if (_automodeenabled) { +if (true) return "";}; + //BA.debugLineNum = 311;BA.debugLine="If SessionActive = False Then"; +if (_sessionactive==anywheresoftware.b4a.keywords.Common.False) { + //BA.debugLineNum = 312;BA.debugLine="StartSession"; +_startsession(); + }else { + //BA.debugLineNum = 314;BA.debugLine="EndSession(DateTime.Now, False)"; +_endsession(anywheresoftware.b4a.keywords.Common.DateTime.getNow(),anywheresoftware.b4a.keywords.Common.False); + }; + //BA.debugLineNum = 316;BA.debugLine="End Sub"; +return ""; +} +public static String _btnstats_click() throws Exception{ + //BA.debugLineNum = 356;BA.debugLine="Sub BtnStats_Click"; + //BA.debugLineNum = 357;BA.debugLine="ShowStatsPage"; +_showstatspage(); + //BA.debugLineNum = 358;BA.debugLine="End Sub"; +return ""; +} +public static String _btnstatsclose_click() throws Exception{ + //BA.debugLineNum = 360;BA.debugLine="Sub BtnStatsClose_Click"; + //BA.debugLineNum = 361;BA.debugLine="ShowMainPage"; +_showmainpage(); + //BA.debugLineNum = 362;BA.debugLine="End Sub"; +return ""; +} +public static String _btnsync_click() throws Exception{ + //BA.debugLineNum = 352;BA.debugLine="Sub BtnSync_Click"; + //BA.debugLineNum = 353;BA.debugLine="ShowConfigPage"; +_showconfigpage(); + //BA.debugLineNum = 354;BA.debugLine="End Sub"; +return ""; +} +public static String _buildstatstable() throws Exception{ +int _y = 0; +long _totalwork = 0L; +long _totalpause = 0L; +long _totalovertime = 0L; +anywheresoftware.b4a.objects.collections.Map _dailyrows = null; +anywheresoftware.b4a.objects.collections.Map _row = null; +long _activeduration = 0L; +String _datetext = ""; +anywheresoftware.b4a.objects.collections.Map _dailytotals = null; + //BA.debugLineNum = 865;BA.debugLine="Private Sub BuildStatsTable"; + //BA.debugLineNum = 866;BA.debugLine="svStats.Panel.RemoveAllViews"; +mostCurrent._svstats.getPanel().RemoveAllViews(); + //BA.debugLineNum = 867;BA.debugLine="Dim y As Int = 0"; +_y = (int) (0); + //BA.debugLineNum = 868;BA.debugLine="AddStatsRow(y, Localization.T(\"date\"), Localizati"; +_addstatsrow(_y,mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"date"),mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"work"),mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"pause_col"),mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"overtime"),anywheresoftware.b4a.keywords.Common.True); + //BA.debugLineNum = 869;BA.debugLine="y = y + 34dip"; +_y = (int) (_y+anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (34))); + //BA.debugLineNum = 871;BA.debugLine="Dim totalWork As Long = 0"; +_totalwork = (long) (0); + //BA.debugLineNum = 872;BA.debugLine="Dim totalPause As Long = 0"; +_totalpause = (long) (0); + //BA.debugLineNum = 873;BA.debugLine="Dim totalOvertime As Long = 0"; +_totalovertime = (long) (0); + //BA.debugLineNum = 874;BA.debugLine="Dim dailyRows As Map"; +_dailyrows = new anywheresoftware.b4a.objects.collections.Map(); + //BA.debugLineNum = 875;BA.debugLine="dailyRows.Initialize"; +_dailyrows.Initialize(); + //BA.debugLineNum = 876;BA.debugLine="For Each row As Map In StatsRows"; +_row = new anywheresoftware.b4a.objects.collections.Map(); +{ +final anywheresoftware.b4a.BA.IterableList group10 = mostCurrent._statsrows; +final int groupLen10 = group10.getSize() +;int index10 = 0; +; +for (; index10 < groupLen10;index10++){ +_row = (anywheresoftware.b4a.objects.collections.Map) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4a.objects.collections.Map(), (java.util.Map)(group10.Get(index10))); + //BA.debugLineNum = 877;BA.debugLine="AddStatsDuration(dailyRows, row.Get(\"date\"), row"; +_addstatsduration(_dailyrows,BA.ObjectToString(_row.Get((Object)("date"))),BA.ObjectToString(_row.Get((Object)("category"))),BA.ObjectToLongNumber(_row.Get((Object)("duration")))); + } +}; + //BA.debugLineNum = 879;BA.debugLine="If SessionActive Then"; +if (_sessionactive) { + //BA.debugLineNum = 880;BA.debugLine="Dim activeDuration As Long = Max(0, DateTime.Now"; +_activeduration = (long) (anywheresoftware.b4a.keywords.Common.Max(0,anywheresoftware.b4a.keywords.Common.DateTime.getNow()-_currentsegmentstart)); + //BA.debugLineNum = 881;BA.debugLine="If activeDuration > 0 Then"; +if (_activeduration>0) { + //BA.debugLineNum = 882;BA.debugLine="AddStatsDuration(dailyRows, DateTime.Date(Curre"; +_addstatsduration(_dailyrows,anywheresoftware.b4a.keywords.Common.DateTime.Date(_currentworkdaystart),_getsegmentcategory(_currentsegmentcolor,_pauseactive),_activeduration); + }; + }; + //BA.debugLineNum = 886;BA.debugLine="For Each dateText As String In dailyRows.Keys"; +{ +final anywheresoftware.b4a.BA.IterableList group19 = _dailyrows.Keys(); +final int groupLen19 = group19.getSize() +;int index19 = 0; +; +for (; index19 < groupLen19;index19++){ +_datetext = BA.ObjectToString(group19.Get(index19)); + //BA.debugLineNum = 887;BA.debugLine="Dim dailyTotals As Map = dailyRows.Get(dateText)"; +_dailytotals = new anywheresoftware.b4a.objects.collections.Map(); +_dailytotals = (anywheresoftware.b4a.objects.collections.Map) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4a.objects.collections.Map(), (java.util.Map)(_dailyrows.Get((Object)(_datetext)))); + //BA.debugLineNum = 888;BA.debugLine="totalWork = totalWork + dailyTotals.Get(\"lavoro\""; +_totalwork = (long) (_totalwork+(double)(BA.ObjectToNumber(_dailytotals.Get((Object)("lavoro"))))); + //BA.debugLineNum = 889;BA.debugLine="totalPause = totalPause + dailyTotals.Get(\"pausa"; +_totalpause = (long) (_totalpause+(double)(BA.ObjectToNumber(_dailytotals.Get((Object)("pausa"))))); + //BA.debugLineNum = 890;BA.debugLine="totalOvertime = totalOvertime + dailyTotals.Get("; +_totalovertime = (long) (_totalovertime+(double)(BA.ObjectToNumber(_dailytotals.Get((Object)("straordinario"))))); + } +}; + //BA.debugLineNum = 893;BA.debugLine="For Each dateText As String In dailyRows.Keys"; +{ +final anywheresoftware.b4a.BA.IterableList group25 = _dailyrows.Keys(); +final int groupLen25 = group25.getSize() +;int index25 = 0; +; +for (; index25 < groupLen25;index25++){ +_datetext = BA.ObjectToString(group25.Get(index25)); + //BA.debugLineNum = 894;BA.debugLine="Dim dailyTotals As Map = dailyRows.Get(dateText)"; +_dailytotals = new anywheresoftware.b4a.objects.collections.Map(); +_dailytotals = (anywheresoftware.b4a.objects.collections.Map) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4a.objects.collections.Map(), (java.util.Map)(_dailyrows.Get((Object)(_datetext)))); + //BA.debugLineNum = 895;BA.debugLine="AddStatsRow(y, dateText, FormatElapsedTime(daily"; +_addstatsrow(_y,_datetext,_formatelapsedtime(BA.ObjectToLongNumber(_dailytotals.Get((Object)("lavoro")))),_formatelapsedtime(BA.ObjectToLongNumber(_dailytotals.Get((Object)("pausa")))),_formatelapsedtime(BA.ObjectToLongNumber(_dailytotals.Get((Object)("straordinario")))),anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 896;BA.debugLine="y = y + 30dip"; +_y = (int) (_y+anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (30))); + } +}; + //BA.debugLineNum = 899;BA.debugLine="y = y + 8dip"; +_y = (int) (_y+anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (8))); + //BA.debugLineNum = 900;BA.debugLine="AddStatsRow(y, Localization.T(\"totals\"), FormatEl"; +_addstatsrow(_y,mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"totals"),_formatelapsedtime(_totalwork),_formatelapsedtime(_totalpause),_formatelapsedtime(_totalovertime),anywheresoftware.b4a.keywords.Common.True); + //BA.debugLineNum = 901;BA.debugLine="y = y + 40dip"; +_y = (int) (_y+anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (40))); + //BA.debugLineNum = 902;BA.debugLine="svStats.Panel.Height = Max(y, svStats.Height + 1d"; +mostCurrent._svstats.getPanel().setHeight((int) (anywheresoftware.b4a.keywords.Common.Max(_y,mostCurrent._svstats.getHeight()+anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (1))))); + //BA.debugLineNum = 903;BA.debugLine="End Sub"; +return ""; +} +public static String _cleardisplayedday() throws Exception{ +long _daystart = 0L; +int _result = 0; +anywheresoftware.b4a.objects.collections.List _kept = null; +anywheresoftware.b4a.objects.collections.Map _row = null; + //BA.debugLineNum = 1076;BA.debugLine="Private Sub ClearDisplayedDay"; + //BA.debugLineNum = 1077;BA.debugLine="Dim dayStart As Long = GetDisplayedWorkDayStart"; +_daystart = _getdisplayedworkdaystart(); + //BA.debugLineNum = 1078;BA.debugLine="If dayStart = 0 Then"; +if (_daystart==0) { + //BA.debugLineNum = 1079;BA.debugLine="ToastMessageShow(Localization.T(\"no_day_to_clear"; +anywheresoftware.b4a.keywords.Common.ToastMessageShow(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"no_day_to_clear")),anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 1080;BA.debugLine="Return"; +if (true) return ""; + }; + //BA.debugLineNum = 1082;BA.debugLine="Dim result As Int = Msgbox2(Localization.T(\"clear"; +_result = anywheresoftware.b4a.keywords.Common.Msgbox2(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"clear_today_confirm")+" "+_formatdayshort(_daystart)+"?"),BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"clear_today_title")),mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"clear_button"),mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"cancel"),"",(android.graphics.Bitmap)(anywheresoftware.b4a.keywords.Common.Null),mostCurrent.activityBA); + //BA.debugLineNum = 1083;BA.debugLine="If result <> DialogResponse.POSITIVE Then Return"; +if (_result!=anywheresoftware.b4a.keywords.Common.DialogResponse.POSITIVE) { +if (true) return "";}; + //BA.debugLineNum = 1084;BA.debugLine="Dim kept As List"; +_kept = new anywheresoftware.b4a.objects.collections.List(); + //BA.debugLineNum = 1085;BA.debugLine="kept.Initialize"; +_kept.Initialize(); + //BA.debugLineNum = 1086;BA.debugLine="For Each row As Map In StatsRows"; +_row = new anywheresoftware.b4a.objects.collections.Map(); +{ +final anywheresoftware.b4a.BA.IterableList group10 = mostCurrent._statsrows; +final int groupLen10 = group10.getSize() +;int index10 = 0; +; +for (; index10 < groupLen10;index10++){ +_row = (anywheresoftware.b4a.objects.collections.Map) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4a.objects.collections.Map(), (java.util.Map)(group10.Get(index10))); + //BA.debugLineNum = 1087;BA.debugLine="If row.Get(\"dayStart\") <> dayStart Then kept.Add"; +if ((_row.Get((Object)("dayStart"))).equals((Object)(_daystart)) == false) { +_kept.Add((Object)(_row.getObject()));}; + } +}; + //BA.debugLineNum = 1089;BA.debugLine="StatsRows.Clear"; +mostCurrent._statsrows.Clear(); + //BA.debugLineNum = 1090;BA.debugLine="StatsRows.AddAll(kept)"; +mostCurrent._statsrows.AddAll(_kept); + //BA.debugLineNum = 1091;BA.debugLine="SaveStatsRows"; +_savestatsrows(); + //BA.debugLineNum = 1092;BA.debugLine="If File.Exists(File.DirInternal, StateFileName) T"; +if (anywheresoftware.b4a.keywords.Common.File.Exists(anywheresoftware.b4a.keywords.Common.File.getDirInternal(),_statefilename)) { +anywheresoftware.b4a.keywords.Common.File.Delete(anywheresoftware.b4a.keywords.Common.File.getDirInternal(),_statefilename);}; + //BA.debugLineNum = 1093;BA.debugLine="ResetSessionState(True)"; +_resetsessionstate(anywheresoftware.b4a.keywords.Common.True); + //BA.debugLineNum = 1094;BA.debugLine="If AutoModeEnabled Then"; +if (_automodeenabled) { + //BA.debugLineNum = 1095;BA.debugLine="UpdateAutomaticState(DateTime.Now)"; +_updateautomaticstate(anywheresoftware.b4a.keywords.Common.DateTime.getNow()); + }else { + //BA.debugLineNum = 1097;BA.debugLine="RestoreLastClosedDayState"; +_restorelastcloseddaystate(); + }; + //BA.debugLineNum = 1099;BA.debugLine="ToastMessageShow(Localization.T(\"today_cleared\"),"; +anywheresoftware.b4a.keywords.Common.ToastMessageShow(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"today_cleared")),anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 1100;BA.debugLine="End Sub"; +return ""; +} +public static String _closecurrentsegment(long _finaltime) throws Exception{ +long _duration = 0L; + //BA.debugLineNum = 489;BA.debugLine="Private Sub CloseCurrentSegment(FinalTime As Long)"; + //BA.debugLineNum = 490;BA.debugLine="Dim duration As Long = FinalTime - CurrentSegment"; +_duration = (long) (_finaltime-_currentsegmentstart); + //BA.debugLineNum = 491;BA.debugLine="If duration <= 0 Then Return"; +if (_duration<=0) { +if (true) return "";}; + //BA.debugLineNum = 492;BA.debugLine="If PauseActive Then"; +if (_pauseactive) { + //BA.debugLineNum = 493;BA.debugLine="RecordSegment(CurrentSegmentStart, duration, Col"; +_recordsegment(_currentsegmentstart,_duration,anywheresoftware.b4a.keywords.Common.Colors.Yellow,anywheresoftware.b4a.keywords.Common.True); + }else { + //BA.debugLineNum = 495;BA.debugLine="RecordSegment(CurrentSegmentStart, duration, Get"; +_recordsegment(_currentsegmentstart,_duration,_getcurrentworkcolor(),anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 496;BA.debugLine="ProductiveElapsedMs = ProductiveElapsedMs + dura"; +_productiveelapsedms = (long) (_productiveelapsedms+_duration); + }; + //BA.debugLineNum = 498;BA.debugLine="End Sub"; +return ""; +} +public static String _createautostatuslabel() throws Exception{ + //BA.debugLineNum = 226;BA.debugLine="Private Sub CreateAutoStatusLabel"; + //BA.debugLineNum = 227;BA.debugLine="lblAutoStatus.Initialize(\"\")"; +mostCurrent._lblautostatus.Initialize(mostCurrent.activityBA,""); + //BA.debugLineNum = 228;BA.debugLine="lblAutoStatus.TextColor = Colors.DarkGray"; +mostCurrent._lblautostatus.setTextColor(anywheresoftware.b4a.keywords.Common.Colors.DarkGray); + //BA.debugLineNum = 229;BA.debugLine="lblAutoStatus.TextSize = 13"; +mostCurrent._lblautostatus.setTextSize((float) (13)); + //BA.debugLineNum = 230;BA.debugLine="lblAutoStatus.Gravity = Bit.Or(Gravity.RIGHT, Gra"; +mostCurrent._lblautostatus.setGravity(anywheresoftware.b4a.keywords.Common.Bit.Or(anywheresoftware.b4a.keywords.Common.Gravity.RIGHT,anywheresoftware.b4a.keywords.Common.Gravity.CENTER_VERTICAL)); + //BA.debugLineNum = 231;BA.debugLine="lblAutoStatus.Text = Localization.T(\"manual_mode\""; +mostCurrent._lblautostatus.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"manual_mode"))); + //BA.debugLineNum = 232;BA.debugLine="Activity.AddView(lblAutoStatus, 0, 0, 10dip, 10di"; +mostCurrent._activity.AddView((android.view.View)(mostCurrent._lblautostatus.getObject()),(int) (0),(int) (0),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (10)),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (10))); + //BA.debugLineNum = 233;BA.debugLine="End Sub"; +return ""; +} +public static String _createbackgroundbutton() throws Exception{ + //BA.debugLineNum = 183;BA.debugLine="Private Sub CreateBackgroundButton"; + //BA.debugLineNum = 184;BA.debugLine="BtnBackground.Initialize(\"BtnBackground\")"; +mostCurrent._btnbackground.Initialize(mostCurrent.activityBA,"BtnBackground"); + //BA.debugLineNum = 185;BA.debugLine="BtnBackground.Text = Localization.T(\"bg\")"; +mostCurrent._btnbackground.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"bg"))); + //BA.debugLineNum = 186;BA.debugLine="Activity.AddView(BtnBackground, BtnPause.Left, Bt"; +mostCurrent._activity.AddView((android.view.View)(mostCurrent._btnbackground.getObject()),mostCurrent._btnpause.getLeft(),mostCurrent._btnpause.getTop(),mostCurrent._btnpause.getWidth(),mostCurrent._btnpause.getHeight()); + //BA.debugLineNum = 187;BA.debugLine="End Sub"; +return ""; +} +public static String _createconfigbutton() throws Exception{ + //BA.debugLineNum = 177;BA.debugLine="Private Sub CreateConfigButton"; + //BA.debugLineNum = 178;BA.debugLine="BtnConfig.Initialize(\"BtnConfig\")"; +mostCurrent._btnconfig.Initialize(mostCurrent.activityBA,"BtnConfig"); + //BA.debugLineNum = 179;BA.debugLine="BtnConfig.Text = Localization.T(\"config\")"; +mostCurrent._btnconfig.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"config"))); + //BA.debugLineNum = 180;BA.debugLine="Activity.AddView(BtnConfig, BtnReset.Left, BtnRes"; +mostCurrent._activity.AddView((android.view.View)(mostCurrent._btnconfig.getObject()),mostCurrent._btnreset.getLeft(),mostCurrent._btnreset.getTop(),mostCurrent._btnreset.getWidth(),mostCurrent._btnreset.getHeight()); + //BA.debugLineNum = 181;BA.debugLine="End Sub"; +return ""; +} +public static String _createconfigpage() throws Exception{ +anywheresoftware.b4a.objects.LabelWrapper _title = null; +int _y = 0; + //BA.debugLineNum = 235;BA.debugLine="Private Sub CreateConfigPage"; + //BA.debugLineNum = 236;BA.debugLine="pnlConfig.Initialize(\"\")"; +mostCurrent._pnlconfig.Initialize(mostCurrent.activityBA,""); + //BA.debugLineNum = 237;BA.debugLine="pnlConfig.Color = Colors.White"; +mostCurrent._pnlconfig.setColor(anywheresoftware.b4a.keywords.Common.Colors.White); + //BA.debugLineNum = 238;BA.debugLine="pnlConfig.Visible = False"; +mostCurrent._pnlconfig.setVisible(anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 239;BA.debugLine="Activity.AddView(pnlConfig, 0, 0, Activity.Width,"; +mostCurrent._activity.AddView((android.view.View)(mostCurrent._pnlconfig.getObject()),(int) (0),(int) (0),mostCurrent._activity.getWidth(),mostCurrent._activity.getHeight()); + //BA.debugLineNum = 241;BA.debugLine="Dim title As Label"; +_title = new anywheresoftware.b4a.objects.LabelWrapper(); + //BA.debugLineNum = 242;BA.debugLine="title.Initialize(\"\")"; +_title.Initialize(mostCurrent.activityBA,""); + //BA.debugLineNum = 243;BA.debugLine="title.Text = Localization.T(\"config\")"; +_title.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"config"))); + //BA.debugLineNum = 244;BA.debugLine="title.TextSize = 22"; +_title.setTextSize((float) (22)); + //BA.debugLineNum = 245;BA.debugLine="title.TextColor = Colors.Black"; +_title.setTextColor(anywheresoftware.b4a.keywords.Common.Colors.Black); + //BA.debugLineNum = 246;BA.debugLine="title.Gravity = Gravity.CENTER_VERTICAL"; +_title.setGravity(anywheresoftware.b4a.keywords.Common.Gravity.CENTER_VERTICAL); + //BA.debugLineNum = 247;BA.debugLine="pnlConfig.AddView(title, 12dip, 8dip, Activity.Wi"; +mostCurrent._pnlconfig.AddView((android.view.View)(_title.getObject()),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (12)),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (8)),(int) (mostCurrent._activity.getWidth()-anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (110))),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (46))); + //BA.debugLineNum = 249;BA.debugLine="BtnConfigClose.Initialize(\"BtnConfigClose\")"; +mostCurrent._btnconfigclose.Initialize(mostCurrent.activityBA,"BtnConfigClose"); + //BA.debugLineNum = 250;BA.debugLine="BtnConfigClose.Text = Localization.T(\"close\")"; +mostCurrent._btnconfigclose.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"close"))); + //BA.debugLineNum = 251;BA.debugLine="pnlConfig.AddView(BtnConfigClose, Activity.Width"; +mostCurrent._pnlconfig.AddView((android.view.View)(mostCurrent._btnconfigclose.getObject()),(int) (mostCurrent._activity.getWidth()-anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (94))),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (8)),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (84)),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (46))); + //BA.debugLineNum = 253;BA.debugLine="Dim y As Int = 78dip"; +_y = anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (78)); + //BA.debugLineNum = 254;BA.debugLine="txtCfgStart = AddConfigField(Localization.T(\"work"; +mostCurrent._txtcfgstart = _addconfigfield(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"work_start"),"08:30",_y); + //BA.debugLineNum = 255;BA.debugLine="y = y + 58dip"; +_y = (int) (_y+anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (58))); + //BA.debugLineNum = 256;BA.debugLine="txtCfgPauseStart = AddConfigField(Localization.T("; +mostCurrent._txtcfgpausestart = _addconfigfield(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"pause_start"),"12:30",_y); + //BA.debugLineNum = 257;BA.debugLine="y = y + 58dip"; +_y = (int) (_y+anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (58))); + //BA.debugLineNum = 258;BA.debugLine="txtCfgPauseEnd = AddConfigField(Localization.T(\"p"; +mostCurrent._txtcfgpauseend = _addconfigfield(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"pause_end"),"13:00",_y); + //BA.debugLineNum = 259;BA.debugLine="y = y + 58dip"; +_y = (int) (_y+anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (58))); + //BA.debugLineNum = 260;BA.debugLine="txtCfgEnd = AddConfigField(Localization.T(\"work_e"; +mostCurrent._txtcfgend = _addconfigfield(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"work_end"),"17:00",_y); + //BA.debugLineNum = 262;BA.debugLine="BtnConfigSave.Initialize(\"BtnConfigSave\")"; +mostCurrent._btnconfigsave.Initialize(mostCurrent.activityBA,"BtnConfigSave"); + //BA.debugLineNum = 263;BA.debugLine="BtnConfigSave.Text = Localization.T(\"set_config\")"; +mostCurrent._btnconfigsave.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"set_config"))); + //BA.debugLineNum = 264;BA.debugLine="pnlConfig.AddView(BtnConfigSave, 12dip, y + 70dip"; +mostCurrent._pnlconfig.AddView((android.view.View)(mostCurrent._btnconfigsave.getObject()),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (12)),(int) (_y+anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (70))),(int) ((mostCurrent._activity.getWidth()-anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (32)))/(double)2),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (48))); + //BA.debugLineNum = 266;BA.debugLine="BtnConfigReset.Initialize(\"BtnConfigReset\")"; +mostCurrent._btnconfigreset.Initialize(mostCurrent.activityBA,"BtnConfigReset"); + //BA.debugLineNum = 267;BA.debugLine="BtnConfigReset.Text = Localization.T(\"reset_confi"; +mostCurrent._btnconfigreset.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"reset_config"))); + //BA.debugLineNum = 268;BA.debugLine="pnlConfig.AddView(BtnConfigReset, 20dip + ((Activ"; +mostCurrent._pnlconfig.AddView((android.view.View)(mostCurrent._btnconfigreset.getObject()),(int) (anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (20))+((mostCurrent._activity.getWidth()-anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (32)))/(double)2)),(int) (_y+anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (70))),(int) ((mostCurrent._activity.getWidth()-anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (32)))/(double)2),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (48))); + //BA.debugLineNum = 270;BA.debugLine="BtnClearToday.Initialize(\"BtnClearToday\")"; +mostCurrent._btncleartoday.Initialize(mostCurrent.activityBA,"BtnClearToday"); + //BA.debugLineNum = 271;BA.debugLine="BtnClearToday.Text = Localization.T(\"clear_today\""; +mostCurrent._btncleartoday.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"clear_today"))); + //BA.debugLineNum = 272;BA.debugLine="pnlConfig.AddView(BtnClearToday, 12dip, y + 126di"; +mostCurrent._pnlconfig.AddView((android.view.View)(mostCurrent._btncleartoday.getObject()),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (12)),(int) (_y+anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (126))),(int) (mostCurrent._activity.getWidth()-anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (24))),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (48))); + //BA.debugLineNum = 273;BA.debugLine="End Sub"; +return ""; +} +public static String _createstatsbutton() throws Exception{ + //BA.debugLineNum = 149;BA.debugLine="Private Sub CreateStatsButton"; + //BA.debugLineNum = 150;BA.debugLine="BtnStats.Initialize(\"BtnStats\")"; +mostCurrent._btnstats.Initialize(mostCurrent.activityBA,"BtnStats"); + //BA.debugLineNum = 151;BA.debugLine="BtnStats.Text = Localization.T(\"stats\")"; +mostCurrent._btnstats.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"stats"))); + //BA.debugLineNum = 152;BA.debugLine="Activity.AddView(BtnStats, BtnReset.Left, BtnRese"; +mostCurrent._activity.AddView((android.view.View)(mostCurrent._btnstats.getObject()),mostCurrent._btnreset.getLeft(),mostCurrent._btnreset.getTop(),mostCurrent._btnreset.getWidth(),mostCurrent._btnreset.getHeight()); + //BA.debugLineNum = 153;BA.debugLine="End Sub"; +return ""; +} +public static String _createstatspage() throws Exception{ +anywheresoftware.b4a.objects.LabelWrapper _title = null; + //BA.debugLineNum = 155;BA.debugLine="Private Sub CreateStatsPage"; + //BA.debugLineNum = 156;BA.debugLine="pnlStats.Initialize(\"\")"; +mostCurrent._pnlstats.Initialize(mostCurrent.activityBA,""); + //BA.debugLineNum = 157;BA.debugLine="pnlStats.Color = Colors.White"; +mostCurrent._pnlstats.setColor(anywheresoftware.b4a.keywords.Common.Colors.White); + //BA.debugLineNum = 158;BA.debugLine="pnlStats.Visible = False"; +mostCurrent._pnlstats.setVisible(anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 159;BA.debugLine="Activity.AddView(pnlStats, 0, 0, Activity.Width,"; +mostCurrent._activity.AddView((android.view.View)(mostCurrent._pnlstats.getObject()),(int) (0),(int) (0),mostCurrent._activity.getWidth(),mostCurrent._activity.getHeight()); + //BA.debugLineNum = 161;BA.debugLine="Dim title As Label"; +_title = new anywheresoftware.b4a.objects.LabelWrapper(); + //BA.debugLineNum = 162;BA.debugLine="title.Initialize(\"\")"; +_title.Initialize(mostCurrent.activityBA,""); + //BA.debugLineNum = 163;BA.debugLine="title.Text = Localization.T(\"statistics\")"; +_title.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"statistics"))); + //BA.debugLineNum = 164;BA.debugLine="title.TextSize = 22"; +_title.setTextSize((float) (22)); + //BA.debugLineNum = 165;BA.debugLine="title.TextColor = Colors.Black"; +_title.setTextColor(anywheresoftware.b4a.keywords.Common.Colors.Black); + //BA.debugLineNum = 166;BA.debugLine="title.Gravity = Gravity.CENTER_VERTICAL"; +_title.setGravity(anywheresoftware.b4a.keywords.Common.Gravity.CENTER_VERTICAL); + //BA.debugLineNum = 167;BA.debugLine="pnlStats.AddView(title, 12dip, 8dip, Activity.Wid"; +mostCurrent._pnlstats.AddView((android.view.View)(_title.getObject()),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (12)),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (8)),(int) (mostCurrent._activity.getWidth()-anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (110))),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (46))); + //BA.debugLineNum = 169;BA.debugLine="BtnStatsClose.Initialize(\"BtnStatsClose\")"; +mostCurrent._btnstatsclose.Initialize(mostCurrent.activityBA,"BtnStatsClose"); + //BA.debugLineNum = 170;BA.debugLine="BtnStatsClose.Text = Localization.T(\"close\")"; +mostCurrent._btnstatsclose.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"close"))); + //BA.debugLineNum = 171;BA.debugLine="pnlStats.AddView(BtnStatsClose, Activity.Width -"; +mostCurrent._pnlstats.AddView((android.view.View)(mostCurrent._btnstatsclose.getObject()),(int) (mostCurrent._activity.getWidth()-anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (94))),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (8)),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (84)),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (46))); + //BA.debugLineNum = 173;BA.debugLine="svStats.Initialize(0)"; +mostCurrent._svstats.Initialize(mostCurrent.activityBA,(int) (0)); + //BA.debugLineNum = 174;BA.debugLine="pnlStats.AddView(svStats, 0, 62dip, Activity.Widt"; +mostCurrent._pnlstats.AddView((android.view.View)(mostCurrent._svstats.getObject()),(int) (0),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (62)),mostCurrent._activity.getWidth(),(int) (mostCurrent._activity.getHeight()-anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (62)))); + //BA.debugLineNum = 175;BA.debugLine="End Sub"; +return ""; +} +public static String _endsession(long _finaltime,boolean _automatic) throws Exception{ + //BA.debugLineNum = 424;BA.debugLine="Private Sub EndSession(FinalTime As Long, Automati"; + //BA.debugLineNum = 425;BA.debugLine="If SessionActive Then CloseCurrentSegment(FinalTi"; +if (_sessionactive) { +_closecurrentsegment(_finaltime);}; + //BA.debugLineNum = 426;BA.debugLine="SessionActive = False"; +_sessionactive = anywheresoftware.b4a.keywords.Common.False; + //BA.debugLineNum = 427;BA.debugLine="PauseActive = False"; +_pauseactive = anywheresoftware.b4a.keywords.Common.False; + //BA.debugLineNum = 428;BA.debugLine="BtnStart.Text = Localization.T(\"start\")"; +mostCurrent._btnstart.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"start"))); + //BA.debugLineNum = 429;BA.debugLine="BtnPause.Text = Localization.T(\"pause\")"; +mostCurrent._btnpause.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"pause"))); + //BA.debugLineNum = 430;BA.debugLine="BtnPause.Enabled = False"; +mostCurrent._btnpause.setEnabled(anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 431;BA.debugLine="UpdateMainControlState"; +_updatemaincontrolstate(); + //BA.debugLineNum = 432;BA.debugLine="myClock.ClearActiveSegment"; +mostCurrent._myclock._clearactivesegment /*String*/ (); + //BA.debugLineNum = 433;BA.debugLine="UpdateElapsedLabel"; +_updateelapsedlabel(); + //BA.debugLineNum = 434;BA.debugLine="If File.Exists(File.DirInternal, StateFileName) T"; +if (anywheresoftware.b4a.keywords.Common.File.Exists(anywheresoftware.b4a.keywords.Common.File.getDirInternal(),_statefilename)) { +anywheresoftware.b4a.keywords.Common.File.Delete(anywheresoftware.b4a.keywords.Common.File.getDirInternal(),_statefilename);}; + //BA.debugLineNum = 435;BA.debugLine="If Automatic Then"; +if (_automatic) { + //BA.debugLineNum = 436;BA.debugLine="Log(\"Workday stopped automatically.\")"; +anywheresoftware.b4a.keywords.Common.LogImpl("2031628","Workday stopped automatically.",0); + }else { + //BA.debugLineNum = 438;BA.debugLine="Log(\"Workday closed manually.\")"; +anywheresoftware.b4a.keywords.Common.LogImpl("2031630","Workday closed manually.",0); + }; + //BA.debugLineNum = 440;BA.debugLine="End Sub"; +return ""; +} +public static String _formatdayshort(long _ticks) throws Exception{ + //BA.debugLineNum = 591;BA.debugLine="Private Sub FormatDayShort(ticks As Long) As Strin"; + //BA.debugLineNum = 592;BA.debugLine="Return NumberFormat(DateTime.GetDayOfMonth(ticks)"; +if (true) return anywheresoftware.b4a.keywords.Common.NumberFormat(anywheresoftware.b4a.keywords.Common.DateTime.GetDayOfMonth(_ticks),(int) (2),(int) (0))+"/"+anywheresoftware.b4a.keywords.Common.NumberFormat(anywheresoftware.b4a.keywords.Common.DateTime.GetMonth(_ticks),(int) (2),(int) (0)); + //BA.debugLineNum = 593;BA.debugLine="End Sub"; +return ""; +} +public static String _formatelapsedtime(long _ms) throws Exception{ +int _seconds = 0; +int _minutes = 0; +int _hours = 0; + //BA.debugLineNum = 299;BA.debugLine="Sub FormatElapsedTime(ms As Long) As String"; + //BA.debugLineNum = 300;BA.debugLine="Dim seconds As Int = ms / 1000"; +_seconds = (int) (_ms/(double)1000); + //BA.debugLineNum = 301;BA.debugLine="Dim minutes As Int = seconds / 60"; +_minutes = (int) (_seconds/(double)60); + //BA.debugLineNum = 302;BA.debugLine="Dim hours As Int = minutes / 60"; +_hours = (int) (_minutes/(double)60); + //BA.debugLineNum = 303;BA.debugLine="seconds = seconds Mod 60"; +_seconds = (int) (_seconds%60); + //BA.debugLineNum = 304;BA.debugLine="minutes = minutes Mod 60"; +_minutes = (int) (_minutes%60); + //BA.debugLineNum = 305;BA.debugLine="Return NumberFormat(hours, 2, 0) & \":\" & Numbe"; +if (true) return anywheresoftware.b4a.keywords.Common.NumberFormat(_hours,(int) (2),(int) (0))+":"+anywheresoftware.b4a.keywords.Common.NumberFormat(_minutes,(int) (2),(int) (0))+":"+anywheresoftware.b4a.keywords.Common.NumberFormat(_seconds,(int) (2),(int) (0)); + //BA.debugLineNum = 306;BA.debugLine="End Sub"; +return ""; +} +public static int _getcurrentworkcolor() throws Exception{ + //BA.debugLineNum = 534;BA.debugLine="Private Sub GetCurrentWorkColor As Int"; + //BA.debugLineNum = 535;BA.debugLine="If ProductiveElapsedMs < FirstWorkLimitMs Then Re"; +if (_productiveelapsedms<_firstworklimitms) { +if (true) return _workmorningcolor;}; + //BA.debugLineNum = 536;BA.debugLine="If ProductiveElapsedMs < WorkLimitMs Then Return"; +if (_productiveelapsedms<_worklimitms) { +if (true) return anywheresoftware.b4a.keywords.Common.Colors.Green;}; + //BA.debugLineNum = 537;BA.debugLine="Return Colors.Red"; +if (true) return anywheresoftware.b4a.keywords.Common.Colors.Red; + //BA.debugLineNum = 538;BA.debugLine="End Sub"; +return 0; +} +public static long _getdisplayedproductiveelapsed(long _now) throws Exception{ +long _total = 0L; + //BA.debugLineNum = 595;BA.debugLine="Private Sub GetDisplayedProductiveElapsed(now As L"; + //BA.debugLineNum = 596;BA.debugLine="Dim total As Long = ProductiveElapsedMs"; +_total = _productiveelapsedms; + //BA.debugLineNum = 597;BA.debugLine="If SessionActive And PauseActive = False Then tot"; +if (_sessionactive && _pauseactive==anywheresoftware.b4a.keywords.Common.False) { +_total = (long) (_total+anywheresoftware.b4a.keywords.Common.Max(0,_now-_currentsegmentstart));}; + //BA.debugLineNum = 598;BA.debugLine="Return total"; +if (true) return _total; + //BA.debugLineNum = 599;BA.debugLine="End Sub"; +return 0L; +} +public static long _getdisplayedworkdaystart() throws Exception{ + //BA.debugLineNum = 586;BA.debugLine="Private Sub GetDisplayedWorkDayStart As Long"; + //BA.debugLineNum = 587;BA.debugLine="If CurrentWorkDayStart > 0 Then Return CurrentWor"; +if (_currentworkdaystart>0) { +if (true) return _currentworkdaystart;}; + //BA.debugLineNum = 588;BA.debugLine="Return GetLatestWorkDayStart"; +if (true) return _getlatestworkdaystart(); + //BA.debugLineNum = 589;BA.debugLine="End Sub"; +return 0L; +} +public static long _getlatestworkdaystart() throws Exception{ +long _latestdaystart = 0L; +anywheresoftware.b4a.objects.collections.Map _row = null; +long _daystart = 0L; + //BA.debugLineNum = 665;BA.debugLine="Private Sub GetLatestWorkDayStart As Long"; + //BA.debugLineNum = 666;BA.debugLine="Dim latestDayStart As Long = 0"; +_latestdaystart = (long) (0); + //BA.debugLineNum = 667;BA.debugLine="For Each row As Map In StatsRows"; +_row = new anywheresoftware.b4a.objects.collections.Map(); +{ +final anywheresoftware.b4a.BA.IterableList group2 = mostCurrent._statsrows; +final int groupLen2 = group2.getSize() +;int index2 = 0; +; +for (; index2 < groupLen2;index2++){ +_row = (anywheresoftware.b4a.objects.collections.Map) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4a.objects.collections.Map(), (java.util.Map)(group2.Get(index2))); + //BA.debugLineNum = 668;BA.debugLine="Dim dayStart As Long = row.Get(\"dayStart\")"; +_daystart = BA.ObjectToLongNumber(_row.Get((Object)("dayStart"))); + //BA.debugLineNum = 669;BA.debugLine="If dayStart > latestDayStart Then latestDayStart"; +if (_daystart>_latestdaystart) { +_latestdaystart = _daystart;}; + } +}; + //BA.debugLineNum = 671;BA.debugLine="Return latestDayStart"; +if (true) return _latestdaystart; + //BA.debugLineNum = 672;BA.debugLine="End Sub"; +return 0L; +} +public static long _getnextmidnight(long _ticks) throws Exception{ + //BA.debugLineNum = 674;BA.debugLine="Private Sub GetNextMidnight(ticks As Long) As Long"; + //BA.debugLineNum = 675;BA.debugLine="Return DateTime.DateParse(DateTime.Date(ticks)) +"; +if (true) return (long) (anywheresoftware.b4a.keywords.Common.DateTime.DateParse(anywheresoftware.b4a.keywords.Common.DateTime.Date(_ticks))+anywheresoftware.b4a.keywords.Common.DateTime.TicksPerDay); + //BA.debugLineNum = 676;BA.debugLine="End Sub"; +return 0L; +} +public static long _getnextworkboundary() throws Exception{ + //BA.debugLineNum = 540;BA.debugLine="Private Sub GetNextWorkBoundary As Long"; + //BA.debugLineNum = 541;BA.debugLine="If ProductiveElapsedMs < FirstWorkLimitMs Then Re"; +if (_productiveelapsedms<_firstworklimitms) { +if (true) return _firstworklimitms;}; + //BA.debugLineNum = 542;BA.debugLine="If ProductiveElapsedMs < WorkLimitMs Then Return"; +if (_productiveelapsedms<_worklimitms) { +if (true) return _worklimitms;}; + //BA.debugLineNum = 543;BA.debugLine="Return MaxProductiveMs"; +if (true) return _maxproductivems; + //BA.debugLineNum = 544;BA.debugLine="End Sub"; +return 0L; +} +public static long _getproductivetotalforworkday(long _daykey) throws Exception{ +long _total = 0L; +anywheresoftware.b4a.objects.collections.Map _row = null; +String _category = ""; + //BA.debugLineNum = 601;BA.debugLine="Private Sub GetProductiveTotalForWorkDay(DayKey As"; + //BA.debugLineNum = 602;BA.debugLine="Dim total As Long = 0"; +_total = (long) (0); + //BA.debugLineNum = 603;BA.debugLine="For Each row As Map In StatsRows"; +_row = new anywheresoftware.b4a.objects.collections.Map(); +{ +final anywheresoftware.b4a.BA.IterableList group2 = mostCurrent._statsrows; +final int groupLen2 = group2.getSize() +;int index2 = 0; +; +for (; index2 < groupLen2;index2++){ +_row = (anywheresoftware.b4a.objects.collections.Map) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4a.objects.collections.Map(), (java.util.Map)(group2.Get(index2))); + //BA.debugLineNum = 604;BA.debugLine="If row.Get(\"dayKey\") = DayKey Then"; +if ((_row.Get((Object)("dayKey"))).equals((Object)(_daykey))) { + //BA.debugLineNum = 605;BA.debugLine="Dim category As String = row.Get(\"category\")"; +_category = BA.ObjectToString(_row.Get((Object)("category"))); + //BA.debugLineNum = 606;BA.debugLine="If category = \"lavoro\" Or category = \"straordin"; +if ((_category).equals("lavoro") || (_category).equals("straordinario")) { +_total = (long) (_total+(double)(BA.ObjectToNumber(_row.Get((Object)("duration")))));}; + }; + } +}; + //BA.debugLineNum = 609;BA.debugLine="Return total"; +if (true) return _total; + //BA.debugLineNum = 610;BA.debugLine="End Sub"; +return 0L; +} +public static String _getsegmentcategory(int _segmentcolor,boolean _ispausesegment) throws Exception{ + //BA.debugLineNum = 528;BA.debugLine="Private Sub GetSegmentCategory(SegmentColor As Int"; + //BA.debugLineNum = 529;BA.debugLine="If IsPauseSegment Then Return \"pausa\""; +if (_ispausesegment) { +if (true) return "pausa";}; + //BA.debugLineNum = 530;BA.debugLine="If SegmentColor = Colors.Red Then Return \"straord"; +if (_segmentcolor==anywheresoftware.b4a.keywords.Common.Colors.Red) { +if (true) return "straordinario";}; + //BA.debugLineNum = 531;BA.debugLine="Return \"lavoro\""; +if (true) return "lavoro"; + //BA.debugLineNum = 532;BA.debugLine="End Sub"; +return ""; +} +public static long _getworkdaystart(long _now) throws Exception{ +long _latestdaystart = 0L; +String _today = ""; +anywheresoftware.b4a.objects.collections.Map _row = null; +long _daystart = 0L; + //BA.debugLineNum = 652;BA.debugLine="Private Sub GetWorkDayStart(now As Long) As Long"; + //BA.debugLineNum = 653;BA.debugLine="Dim latestDayStart As Long = 0"; +_latestdaystart = (long) (0); + //BA.debugLineNum = 654;BA.debugLine="Dim today As String = DateTime.Date(now)"; +_today = anywheresoftware.b4a.keywords.Common.DateTime.Date(_now); + //BA.debugLineNum = 655;BA.debugLine="For Each row As Map In StatsRows"; +_row = new anywheresoftware.b4a.objects.collections.Map(); +{ +final anywheresoftware.b4a.BA.IterableList group3 = mostCurrent._statsrows; +final int groupLen3 = group3.getSize() +;int index3 = 0; +; +for (; index3 < groupLen3;index3++){ +_row = (anywheresoftware.b4a.objects.collections.Map) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4a.objects.collections.Map(), (java.util.Map)(group3.Get(index3))); + //BA.debugLineNum = 656;BA.debugLine="Dim dayStart As Long = row.Get(\"dayStart\")"; +_daystart = BA.ObjectToLongNumber(_row.Get((Object)("dayStart"))); + //BA.debugLineNum = 657;BA.debugLine="If dayStart > latestDayStart And DateTime.Date(d"; +if (_daystart>_latestdaystart && (anywheresoftware.b4a.keywords.Common.DateTime.Date(_daystart)).equals(_today)) { + //BA.debugLineNum = 658;BA.debugLine="latestDayStart = dayStart"; +_latestdaystart = _daystart; + }; + } +}; + //BA.debugLineNum = 661;BA.debugLine="If latestDayStart > 0 Then Return latestDayStart"; +if (_latestdaystart>0) { +if (true) return _latestdaystart;}; + //BA.debugLineNum = 662;BA.debugLine="Return now"; +if (true) return _now; + //BA.debugLineNum = 663;BA.debugLine="End Sub"; +return 0L; +} +public static String _globals() throws Exception{ + //BA.debugLineNum = 25;BA.debugLine="Sub Globals"; + //BA.debugLineNum = 26;BA.debugLine="Private BtnStart As Button"; +mostCurrent._btnstart = new anywheresoftware.b4a.objects.ButtonWrapper(); + //BA.debugLineNum = 27;BA.debugLine="Private BtnPause As Button"; +mostCurrent._btnpause = new anywheresoftware.b4a.objects.ButtonWrapper(); + //BA.debugLineNum = 28;BA.debugLine="Private BtnReset As Button"; +mostCurrent._btnreset = new anywheresoftware.b4a.objects.ButtonWrapper(); + //BA.debugLineNum = 29;BA.debugLine="Private BtnSync As Button"; +mostCurrent._btnsync = new anywheresoftware.b4a.objects.ButtonWrapper(); + //BA.debugLineNum = 30;BA.debugLine="Private BtnStats As Label"; +mostCurrent._btnstats = new anywheresoftware.b4a.objects.LabelWrapper(); + //BA.debugLineNum = 31;BA.debugLine="Private BtnStatsClose As Button"; +mostCurrent._btnstatsclose = new anywheresoftware.b4a.objects.ButtonWrapper(); + //BA.debugLineNum = 32;BA.debugLine="Private BtnConfig As Label"; +mostCurrent._btnconfig = new anywheresoftware.b4a.objects.LabelWrapper(); + //BA.debugLineNum = 33;BA.debugLine="Private BtnConfigClose As Button"; +mostCurrent._btnconfigclose = new anywheresoftware.b4a.objects.ButtonWrapper(); + //BA.debugLineNum = 34;BA.debugLine="Private BtnConfigSave As Button"; +mostCurrent._btnconfigsave = new anywheresoftware.b4a.objects.ButtonWrapper(); + //BA.debugLineNum = 35;BA.debugLine="Private BtnConfigReset As Button"; +mostCurrent._btnconfigreset = new anywheresoftware.b4a.objects.ButtonWrapper(); + //BA.debugLineNum = 36;BA.debugLine="Private BtnClearToday As Button"; +mostCurrent._btncleartoday = new anywheresoftware.b4a.objects.ButtonWrapper(); + //BA.debugLineNum = 37;BA.debugLine="Private BtnBackground As Label"; +mostCurrent._btnbackground = new anywheresoftware.b4a.objects.LabelWrapper(); + //BA.debugLineNum = 38;BA.debugLine="Private lblElapsedTime As Label"; +mostCurrent._lblelapsedtime = new anywheresoftware.b4a.objects.LabelWrapper(); + //BA.debugLineNum = 39;BA.debugLine="Private lblAutoStatus As Label"; +mostCurrent._lblautostatus = new anywheresoftware.b4a.objects.LabelWrapper(); + //BA.debugLineNum = 40;BA.debugLine="Private pnlClock As Panel"; +mostCurrent._pnlclock = new anywheresoftware.b4a.objects.PanelWrapper(); + //BA.debugLineNum = 41;BA.debugLine="Private pnlStats As Panel"; +mostCurrent._pnlstats = new anywheresoftware.b4a.objects.PanelWrapper(); + //BA.debugLineNum = 42;BA.debugLine="Private pnlConfig As Panel"; +mostCurrent._pnlconfig = new anywheresoftware.b4a.objects.PanelWrapper(); + //BA.debugLineNum = 43;BA.debugLine="Private svStats As ScrollView"; +mostCurrent._svstats = new anywheresoftware.b4a.objects.ScrollViewWrapper(); + //BA.debugLineNum = 44;BA.debugLine="Private txtCfgStart As EditText"; +mostCurrent._txtcfgstart = new anywheresoftware.b4a.objects.EditTextWrapper(); + //BA.debugLineNum = 45;BA.debugLine="Private txtCfgPauseStart As EditText"; +mostCurrent._txtcfgpausestart = new anywheresoftware.b4a.objects.EditTextWrapper(); + //BA.debugLineNum = 46;BA.debugLine="Private txtCfgPauseEnd As EditText"; +mostCurrent._txtcfgpauseend = new anywheresoftware.b4a.objects.EditTextWrapper(); + //BA.debugLineNum = 47;BA.debugLine="Private txtCfgEnd As EditText"; +mostCurrent._txtcfgend = new anywheresoftware.b4a.objects.EditTextWrapper(); + //BA.debugLineNum = 48;BA.debugLine="Private myClock As AnalogClock"; +mostCurrent._myclock = new b4a.example.analogclock(); + //BA.debugLineNum = 50;BA.debugLine="Private SessionActive As Boolean"; +_sessionactive = false; + //BA.debugLineNum = 51;BA.debugLine="Private PauseActive As Boolean"; +_pauseactive = false; + //BA.debugLineNum = 52;BA.debugLine="Private ProductiveElapsedMs As Long"; +_productiveelapsedms = 0L; + //BA.debugLineNum = 53;BA.debugLine="Private CurrentSegmentStart As Long"; +_currentsegmentstart = 0L; + //BA.debugLineNum = 54;BA.debugLine="Private CurrentSegmentColor As Int"; +_currentsegmentcolor = 0; + //BA.debugLineNum = 55;BA.debugLine="Private StatsRows As List"; +mostCurrent._statsrows = new anywheresoftware.b4a.objects.collections.List(); + //BA.debugLineNum = 56;BA.debugLine="Private WorkMorningColor As Int"; +_workmorningcolor = 0; + //BA.debugLineNum = 57;BA.debugLine="Private CurrentWorkDayStart As Long"; +_currentworkdaystart = 0L; + //BA.debugLineNum = 58;BA.debugLine="Private CurrentWorkDayKey As Long"; +_currentworkdaykey = 0L; + //BA.debugLineNum = 59;BA.debugLine="Private AutoModeEnabled As Boolean"; +_automodeenabled = false; + //BA.debugLineNum = 60;BA.debugLine="Private AutoStartMinutes As Int"; +_autostartminutes = 0; + //BA.debugLineNum = 61;BA.debugLine="Private AutoPauseStartMinutes As Int"; +_autopausestartminutes = 0; + //BA.debugLineNum = 62;BA.debugLine="Private AutoPauseEndMinutes As Int"; +_autopauseendminutes = 0; + //BA.debugLineNum = 63;BA.debugLine="Private AutoEndMinutes As Int"; +_autoendminutes = 0; + //BA.debugLineNum = 64;BA.debugLine="Private AutoState As String"; +mostCurrent._autostate = ""; + //BA.debugLineNum = 65;BA.debugLine="Private LastActiveStateSaveAt As Long"; +_lastactivestatesaveat = 0L; + //BA.debugLineNum = 66;BA.debugLine="End Sub"; +return ""; +} +public static String _hidelegacybuttons() throws Exception{ +int _i = 0; +anywheresoftware.b4a.objects.ConcreteViewWrapper _v = null; +anywheresoftware.b4a.objects.ButtonWrapper _legacy = null; + //BA.debugLineNum = 830;BA.debugLine="Private Sub HideLegacyButtons"; + //BA.debugLineNum = 831;BA.debugLine="If BtnReset.IsInitialized Then"; +if (mostCurrent._btnreset.IsInitialized()) { + //BA.debugLineNum = 832;BA.debugLine="BtnReset.Enabled = False"; +mostCurrent._btnreset.setEnabled(anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 833;BA.debugLine="BtnReset.Visible = False"; +mostCurrent._btnreset.setVisible(anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 834;BA.debugLine="BtnReset.SetLayout(-200dip, -200dip, 1dip, 1dip)"; +mostCurrent._btnreset.SetLayout((int) (-anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (200))),(int) (-anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (200))),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (1)),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (1))); + }; + //BA.debugLineNum = 836;BA.debugLine="If BtnSync.IsInitialized Then"; +if (mostCurrent._btnsync.IsInitialized()) { + //BA.debugLineNum = 837;BA.debugLine="BtnSync.Enabled = False"; +mostCurrent._btnsync.setEnabled(anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 838;BA.debugLine="BtnSync.Visible = False"; +mostCurrent._btnsync.setVisible(anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 839;BA.debugLine="BtnSync.SetLayout(-200dip, -200dip, 1dip, 1dip)"; +mostCurrent._btnsync.SetLayout((int) (-anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (200))),(int) (-anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (200))),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (1)),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (1))); + }; + //BA.debugLineNum = 841;BA.debugLine="For i = Activity.NumberOfViews - 1 To 0 Step -1"; +{ +final int step11 = -1; +final int limit11 = (int) (0); +_i = (int) (mostCurrent._activity.getNumberOfViews()-1) ; +for (;_i >= limit11 ;_i = _i + step11 ) { + //BA.debugLineNum = 842;BA.debugLine="Dim v As View = Activity.GetView(i)"; +_v = new anywheresoftware.b4a.objects.ConcreteViewWrapper(); +_v = mostCurrent._activity.GetView(_i); + //BA.debugLineNum = 843;BA.debugLine="If v Is Button Then"; +if (_v.getObjectOrNull() instanceof android.widget.Button) { + //BA.debugLineNum = 844;BA.debugLine="Dim legacy As Button = v"; +_legacy = new anywheresoftware.b4a.objects.ButtonWrapper(); +_legacy = (anywheresoftware.b4a.objects.ButtonWrapper) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4a.objects.ButtonWrapper(), (android.widget.Button)(_v.getObject())); + //BA.debugLineNum = 845;BA.debugLine="If legacy.Text = \"Sync\" Or legacy.Text = \"Reset"; +if ((_legacy.getText()).equals("Sync") || (_legacy.getText()).equals("Reset")) { + //BA.debugLineNum = 846;BA.debugLine="legacy.RemoveView"; +_legacy.RemoveView(); + }; + }; + } +}; + //BA.debugLineNum = 850;BA.debugLine="End Sub"; +return ""; +} +public static String _layoutmainbuttons() throws Exception{ +int _margin = 0; +int _gap = 0; +int _rowgap = 0; +int _buttonheight = 0; +int _labeltop = 0; +int _row2top = 0; +int _row1top = 0; +int _widebuttonwidth = 0; +int _smallbuttonwidth = 0; + //BA.debugLineNum = 189;BA.debugLine="Private Sub LayoutMainButtons"; + //BA.debugLineNum = 190;BA.debugLine="Dim margin As Int = 8dip"; +_margin = anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (8)); + //BA.debugLineNum = 191;BA.debugLine="Dim gap As Int = 8dip"; +_gap = anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (8)); + //BA.debugLineNum = 192;BA.debugLine="Dim rowGap As Int = 8dip"; +_rowgap = anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (8)); + //BA.debugLineNum = 193;BA.debugLine="Dim buttonHeight As Int = 48dip"; +_buttonheight = anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (48)); + //BA.debugLineNum = 194;BA.debugLine="Dim labelTop As Int = Activity.Height - 28dip"; +_labeltop = (int) (mostCurrent._activity.getHeight()-anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (28))); + //BA.debugLineNum = 195;BA.debugLine="Dim row2Top As Int = labelTop - gap - buttonHeigh"; +_row2top = (int) (_labeltop-_gap-_buttonheight); + //BA.debugLineNum = 196;BA.debugLine="Dim row1Top As Int = row2Top - rowGap - buttonHei"; +_row1top = (int) (_row2top-_rowgap-_buttonheight); + //BA.debugLineNum = 197;BA.debugLine="Dim wideButtonWidth As Int = (Activity.Width - (2"; +_widebuttonwidth = (int) ((mostCurrent._activity.getWidth()-(2*_margin)-_gap)/(double)2); + //BA.debugLineNum = 198;BA.debugLine="Dim smallButtonWidth As Int = (Activity.Width - ("; +_smallbuttonwidth = (int) ((mostCurrent._activity.getWidth()-(2*_margin)-(2*_gap))/(double)3); + //BA.debugLineNum = 200;BA.debugLine="BtnStart.TextSize = 16"; +mostCurrent._btnstart.setTextSize((float) (16)); + //BA.debugLineNum = 201;BA.debugLine="BtnPause.TextSize = 16"; +mostCurrent._btnpause.setTextSize((float) (16)); + //BA.debugLineNum = 202;BA.debugLine="BtnBackground.TextSize = 15"; +mostCurrent._btnbackground.setTextSize((float) (15)); + //BA.debugLineNum = 203;BA.debugLine="BtnStats.TextSize = 15"; +mostCurrent._btnstats.setTextSize((float) (15)); + //BA.debugLineNum = 204;BA.debugLine="BtnConfig.TextSize = 15"; +mostCurrent._btnconfig.setTextSize((float) (15)); + //BA.debugLineNum = 205;BA.debugLine="StyleNeutralButton(BtnPause)"; +_styleneutralbutton((anywheresoftware.b4a.objects.LabelWrapper) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4a.objects.LabelWrapper(), (android.widget.TextView)(mostCurrent._btnpause.getObject()))); + //BA.debugLineNum = 206;BA.debugLine="StyleNeutralButton(BtnBackground)"; +_styleneutralbutton(mostCurrent._btnbackground); + //BA.debugLineNum = 207;BA.debugLine="StyleNeutralButton(BtnStats)"; +_styleneutralbutton(mostCurrent._btnstats); + //BA.debugLineNum = 208;BA.debugLine="StyleNeutralButton(BtnConfig)"; +_styleneutralbutton(mostCurrent._btnconfig); + //BA.debugLineNum = 210;BA.debugLine="BtnStart.SetLayout(margin, row1Top, wideButtonWid"; +mostCurrent._btnstart.SetLayout(_margin,_row1top,_widebuttonwidth,_buttonheight); + //BA.debugLineNum = 211;BA.debugLine="BtnPause.SetLayout(margin + wideButtonWidth + gap"; +mostCurrent._btnpause.SetLayout((int) (_margin+_widebuttonwidth+_gap),_row1top,_widebuttonwidth,_buttonheight); + //BA.debugLineNum = 212;BA.debugLine="BtnBackground.SetLayout(margin, row2Top, smallBut"; +mostCurrent._btnbackground.SetLayout(_margin,_row2top,_smallbuttonwidth,_buttonheight); + //BA.debugLineNum = 213;BA.debugLine="BtnStats.SetLayout(margin + smallButtonWidth + ga"; +mostCurrent._btnstats.SetLayout((int) (_margin+_smallbuttonwidth+_gap),_row2top,_smallbuttonwidth,_buttonheight); + //BA.debugLineNum = 214;BA.debugLine="BtnConfig.SetLayout(margin + (2 * (smallButtonWid"; +mostCurrent._btnconfig.SetLayout((int) (_margin+(2*(_smallbuttonwidth+_gap))),_row2top,_smallbuttonwidth,_buttonheight); + //BA.debugLineNum = 215;BA.debugLine="If lblElapsedTime.IsInitialized Then lblElapsedTi"; +if (mostCurrent._lblelapsedtime.IsInitialized()) { +mostCurrent._lblelapsedtime.SetLayout((int) (0),_labeltop,(int) (mostCurrent._activity.getWidth()*0.58),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (28)));}; + //BA.debugLineNum = 216;BA.debugLine="If lblAutoStatus.IsInitialized Then lblAutoStatus"; +if (mostCurrent._lblautostatus.IsInitialized()) { +mostCurrent._lblautostatus.SetLayout((int) (mostCurrent._activity.getWidth()*0.58),_labeltop,(int) (mostCurrent._activity.getWidth()*0.42),anywheresoftware.b4a.keywords.Common.DipToCurrent((int) (28)));}; + //BA.debugLineNum = 217;BA.debugLine="End Sub"; +return ""; +} +public static String _loadautoconfig() throws Exception{ +anywheresoftware.b4a.objects.collections.List _lines = null; + //BA.debugLineNum = 969;BA.debugLine="Private Sub LoadAutoConfig"; + //BA.debugLineNum = 970;BA.debugLine="AutoModeEnabled = False"; +_automodeenabled = anywheresoftware.b4a.keywords.Common.False; + //BA.debugLineNum = 971;BA.debugLine="AutoState = \"stopped\""; +mostCurrent._autostate = "stopped"; + //BA.debugLineNum = 972;BA.debugLine="If File.Exists(File.DirInternal, AutoConfigFileNa"; +if (anywheresoftware.b4a.keywords.Common.File.Exists(anywheresoftware.b4a.keywords.Common.File.getDirInternal(),_autoconfigfilename)==anywheresoftware.b4a.keywords.Common.False) { +if (true) return "";}; + //BA.debugLineNum = 973;BA.debugLine="Dim lines As List = File.ReadList(File.DirInterna"; +_lines = new anywheresoftware.b4a.objects.collections.List(); +_lines = anywheresoftware.b4a.keywords.Common.File.ReadList(anywheresoftware.b4a.keywords.Common.File.getDirInternal(),_autoconfigfilename); + //BA.debugLineNum = 974;BA.debugLine="If lines.Size < 4 Then Return"; +if (_lines.getSize()<4) { +if (true) return "";}; + //BA.debugLineNum = 975;BA.debugLine="AutoStartMinutes = lines.Get(0)"; +_autostartminutes = (int)(BA.ObjectToNumber(_lines.Get((int) (0)))); + //BA.debugLineNum = 976;BA.debugLine="AutoPauseStartMinutes = lines.Get(1)"; +_autopausestartminutes = (int)(BA.ObjectToNumber(_lines.Get((int) (1)))); + //BA.debugLineNum = 977;BA.debugLine="AutoPauseEndMinutes = lines.Get(2)"; +_autopauseendminutes = (int)(BA.ObjectToNumber(_lines.Get((int) (2)))); + //BA.debugLineNum = 978;BA.debugLine="AutoEndMinutes = lines.Get(3)"; +_autoendminutes = (int)(BA.ObjectToNumber(_lines.Get((int) (3)))); + //BA.debugLineNum = 979;BA.debugLine="AutoModeEnabled = True"; +_automodeenabled = anywheresoftware.b4a.keywords.Common.True; + //BA.debugLineNum = 980;BA.debugLine="txtCfgStart.Text = MinutesToTime(AutoStartMinutes"; +mostCurrent._txtcfgstart.setText(BA.ObjectToCharSequence(_minutestotime(_autostartminutes))); + //BA.debugLineNum = 981;BA.debugLine="txtCfgPauseStart.Text = MinutesToTime(AutoPauseSt"; +mostCurrent._txtcfgpausestart.setText(BA.ObjectToCharSequence(_minutestotime(_autopausestartminutes))); + //BA.debugLineNum = 982;BA.debugLine="txtCfgPauseEnd.Text = MinutesToTime(AutoPauseEndM"; +mostCurrent._txtcfgpauseend.setText(BA.ObjectToCharSequence(_minutestotime(_autopauseendminutes))); + //BA.debugLineNum = 983;BA.debugLine="txtCfgEnd.Text = MinutesToTime(AutoEndMinutes)"; +mostCurrent._txtcfgend.setText(BA.ObjectToCharSequence(_minutestotime(_autoendminutes))); + //BA.debugLineNum = 984;BA.debugLine="End Sub"; +return ""; +} +public static String _loadstatsrows() throws Exception{ +anywheresoftware.b4a.objects.collections.List _lines = null; +String _line = ""; +String[] _parts = null; +anywheresoftware.b4a.objects.collections.Map _row = null; +long _daystart = 0L; +long _segmentstart = 0L; +long _duration = 0L; + //BA.debugLineNum = 678;BA.debugLine="Private Sub LoadStatsRows"; + //BA.debugLineNum = 679;BA.debugLine="StatsRows.Clear"; +mostCurrent._statsrows.Clear(); + //BA.debugLineNum = 680;BA.debugLine="If File.Exists(File.DirInternal, StatsFileName) ="; +if (anywheresoftware.b4a.keywords.Common.File.Exists(anywheresoftware.b4a.keywords.Common.File.getDirInternal(),_statsfilename)==anywheresoftware.b4a.keywords.Common.False) { +if (true) return "";}; + //BA.debugLineNum = 681;BA.debugLine="Dim lines As List = File.ReadList(File.DirInterna"; +_lines = new anywheresoftware.b4a.objects.collections.List(); +_lines = anywheresoftware.b4a.keywords.Common.File.ReadList(anywheresoftware.b4a.keywords.Common.File.getDirInternal(),_statsfilename); + //BA.debugLineNum = 682;BA.debugLine="For Each line As String In lines"; +{ +final anywheresoftware.b4a.BA.IterableList group4 = _lines; +final int groupLen4 = group4.getSize() +;int index4 = 0; +; +for (; index4 < groupLen4;index4++){ +_line = BA.ObjectToString(group4.Get(index4)); + //BA.debugLineNum = 683;BA.debugLine="If line.Trim.Length > 0 Then"; +if (_line.trim().length()>0) { + //BA.debugLineNum = 684;BA.debugLine="Dim parts() As String = Regex.Split(\"\\|\", line)"; +_parts = anywheresoftware.b4a.keywords.Common.Regex.Split("\\|",_line); + //BA.debugLineNum = 685;BA.debugLine="If parts.Length >= 4 Then"; +if (_parts.length>=4) { + //BA.debugLineNum = 686;BA.debugLine="Dim row As Map"; +_row = new anywheresoftware.b4a.objects.collections.Map(); + //BA.debugLineNum = 687;BA.debugLine="row.Initialize"; +_row.Initialize(); + //BA.debugLineNum = 688;BA.debugLine="Dim dayStart As Long = parts(0)"; +_daystart = (long)(Double.parseDouble(_parts[(int) (0)])); + //BA.debugLineNum = 689;BA.debugLine="Dim segmentStart As Long = parts(1)"; +_segmentstart = (long)(Double.parseDouble(_parts[(int) (1)])); + //BA.debugLineNum = 690;BA.debugLine="Dim duration As Long = parts(2)"; +_duration = (long)(Double.parseDouble(_parts[(int) (2)])); + //BA.debugLineNum = 691;BA.debugLine="row.Put(\"dayStart\", dayStart)"; +_row.Put((Object)("dayStart"),(Object)(_daystart)); + //BA.debugLineNum = 692;BA.debugLine="row.Put(\"dayKey\", dayStart)"; +_row.Put((Object)("dayKey"),(Object)(_daystart)); + //BA.debugLineNum = 693;BA.debugLine="row.Put(\"segmentStart\", segmentStart)"; +_row.Put((Object)("segmentStart"),(Object)(_segmentstart)); + //BA.debugLineNum = 694;BA.debugLine="row.Put(\"date\", DateTime.Date(dayStart))"; +_row.Put((Object)("date"),(Object)(anywheresoftware.b4a.keywords.Common.DateTime.Date(_daystart))); + //BA.debugLineNum = 695;BA.debugLine="row.Put(\"duration\", duration)"; +_row.Put((Object)("duration"),(Object)(_duration)); + //BA.debugLineNum = 696;BA.debugLine="row.Put(\"category\", parts(3))"; +_row.Put((Object)("category"),(Object)(_parts[(int) (3)])); + //BA.debugLineNum = 697;BA.debugLine="If parts.Length >= 5 Then"; +if (_parts.length>=5) { + //BA.debugLineNum = 698;BA.debugLine="row.Put(\"source\", parts(4))"; +_row.Put((Object)("source"),(Object)(_parts[(int) (4)])); + }else { + //BA.debugLineNum = 700;BA.debugLine="row.Put(\"source\", \"manual\")"; +_row.Put((Object)("source"),(Object)("manual")); + }; + //BA.debugLineNum = 702;BA.debugLine="StatsRows.Add(row)"; +mostCurrent._statsrows.Add((Object)(_row.getObject())); + }; + }; + } +}; + //BA.debugLineNum = 706;BA.debugLine="TrimStatsRows"; +_trimstatsrows(); + //BA.debugLineNum = 707;BA.debugLine="SaveStatsRows"; +_savestatsrows(); + //BA.debugLineNum = 708;BA.debugLine="End Sub"; +return ""; +} +public static String _loadworkdaysegmentsintoclock(long _daykey) throws Exception{ +long _productivecursor = 0L; +anywheresoftware.b4a.objects.collections.Map _row = null; +String _category = ""; +long _duration = 0L; + //BA.debugLineNum = 612;BA.debugLine="Private Sub LoadWorkDaySegmentsIntoClock(DayKey As"; + //BA.debugLineNum = 613;BA.debugLine="Dim productiveCursor As Long = 0"; +_productivecursor = (long) (0); + //BA.debugLineNum = 614;BA.debugLine="For Each row As Map In StatsRows"; +_row = new anywheresoftware.b4a.objects.collections.Map(); +{ +final anywheresoftware.b4a.BA.IterableList group2 = mostCurrent._statsrows; +final int groupLen2 = group2.getSize() +;int index2 = 0; +; +for (; index2 < groupLen2;index2++){ +_row = (anywheresoftware.b4a.objects.collections.Map) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4a.objects.collections.Map(), (java.util.Map)(group2.Get(index2))); + //BA.debugLineNum = 615;BA.debugLine="If row.Get(\"dayKey\") = DayKey Then"; +if ((_row.Get((Object)("dayKey"))).equals((Object)(_daykey))) { + //BA.debugLineNum = 616;BA.debugLine="Dim category As String = row.Get(\"category\")"; +_category = BA.ObjectToString(_row.Get((Object)("category"))); + //BA.debugLineNum = 617;BA.debugLine="Dim duration As Long = row.Get(\"duration\")"; +_duration = BA.ObjectToLongNumber(_row.Get((Object)("duration"))); + //BA.debugLineNum = 618;BA.debugLine="If category = \"pausa\" Then"; +if ((_category).equals("pausa")) { + //BA.debugLineNum = 619;BA.debugLine="myClock.AddSegment(duration, Colors.Yellow, Tr"; +mostCurrent._myclock._addsegment /*String*/ (_duration,anywheresoftware.b4a.keywords.Common.Colors.Yellow,anywheresoftware.b4a.keywords.Common.True); + }else { + //BA.debugLineNum = 621;BA.debugLine="AddDisplayProductiveSegment(duration, producti"; +_adddisplayproductivesegment(_duration,_productivecursor); + //BA.debugLineNum = 622;BA.debugLine="productiveCursor = productiveCursor + duration"; +_productivecursor = (long) (_productivecursor+_duration); + }; + }; + } +}; + //BA.debugLineNum = 626;BA.debugLine="End Sub"; +return ""; +} +public static String _minutestotime(int _minutes) throws Exception{ + //BA.debugLineNum = 996;BA.debugLine="Private Sub MinutesToTime(Minutes As Int) As Strin"; + //BA.debugLineNum = 997;BA.debugLine="Return NumberFormat(Minutes / 60, 2, 0) & \":\" & N"; +if (true) return anywheresoftware.b4a.keywords.Common.NumberFormat(_minutes/(double)60,(int) (2),(int) (0))+":"+anywheresoftware.b4a.keywords.Common.NumberFormat(_minutes%60,(int) (2),(int) (0)); + //BA.debugLineNum = 998;BA.debugLine="End Sub"; +return ""; +} +public static int _parsetimetominutes(String _value) throws Exception{ +String[] _parts = null; +int _h = 0; +int _m = 0; + //BA.debugLineNum = 986;BA.debugLine="Private Sub ParseTimeToMinutes(Value As String) As"; + //BA.debugLineNum = 987;BA.debugLine="Dim parts() As String = Regex.Split(\":\", Value.Tr"; +_parts = anywheresoftware.b4a.keywords.Common.Regex.Split(":",_value.trim()); + //BA.debugLineNum = 988;BA.debugLine="If parts.Length <> 2 Then Return -1"; +if (_parts.length!=2) { +if (true) return (int) (-1);}; + //BA.debugLineNum = 989;BA.debugLine="If IsNumber(parts(0)) = False Or IsNumber(parts(1"; +if (anywheresoftware.b4a.keywords.Common.IsNumber(_parts[(int) (0)])==anywheresoftware.b4a.keywords.Common.False || anywheresoftware.b4a.keywords.Common.IsNumber(_parts[(int) (1)])==anywheresoftware.b4a.keywords.Common.False) { +if (true) return (int) (-1);}; + //BA.debugLineNum = 990;BA.debugLine="Dim h As Int = parts(0)"; +_h = (int)(Double.parseDouble(_parts[(int) (0)])); + //BA.debugLineNum = 991;BA.debugLine="Dim m As Int = parts(1)"; +_m = (int)(Double.parseDouble(_parts[(int) (1)])); + //BA.debugLineNum = 992;BA.debugLine="If h < 0 Or h > 23 Or m < 0 Or m > 59 Then Return"; +if (_h<0 || _h>23 || _m<0 || _m>59) { +if (true) return (int) (-1);}; + //BA.debugLineNum = 993;BA.debugLine="Return h * 60 + m"; +if (true) return (int) (_h*60+_m); + //BA.debugLineNum = 994;BA.debugLine="End Sub"; +return 0; +} public static void initializeProcessGlobals() { if (main.processGlobalsRun == false) { main.processGlobalsRun = true; try { - + main._process_globals(); +starter._process_globals(); +localization._process_globals(); + } catch (Exception e) { throw new RuntimeException(e); } } -} -public static boolean isAnyActivityVisible() { - boolean vis = false; -vis = vis | (main.mostCurrent != null); -return vis;} - -private static BA killProgramHelper(BA ba) { - if (ba == null) - return null; - anywheresoftware.b4a.BA.SharedProcessBA sharedProcessBA = ba.sharedProcessBA; - if (sharedProcessBA == null || sharedProcessBA.activityBA == null) - return null; - return sharedProcessBA.activityBA.get(); -} -public static void killProgram() { - { - Activity __a = null; - if (main.previousOne != null) { - __a = main.previousOne.get(); - } - else { - BA ba = killProgramHelper(main.mostCurrent == null ? null : main.mostCurrent.processBA); - if (ba != null) __a = ba.activity; - } - if (__a != null) - __a.finish();} - -BA.applicationContext.stopService(new android.content.Intent(BA.applicationContext, starter.class)); -} -public anywheresoftware.b4a.keywords.Common __c = null; -public static anywheresoftware.b4a.objects.Timer _timer1 = null; -public static boolean _running = false; -public static long _starttime = 0L; -public static long _elapsedtime = 0L; -public anywheresoftware.b4a.objects.drawable.CanvasWrapper _canvas1 = null; -public anywheresoftware.b4a.objects.PanelWrapper _panel1 = null; -public anywheresoftware.b4a.objects.ButtonWrapper _btnstart = null; -public anywheresoftware.b4a.objects.ButtonWrapper _btnpause = null; -public anywheresoftware.b4a.objects.ButtonWrapper _btnreset = null; -public anywheresoftware.b4a.objects.ButtonWrapper _btnsync = null; -public anywheresoftware.b4a.objects.LabelWrapper _lblelapsedtime = null; -public anywheresoftware.b4a.objects.PanelWrapper _pnlclock = null; -public b4a.example.analogclock _myclock = null; -public b4a.example.starter _starter = null; -public static String _activity_create(boolean _firsttime) throws Exception{ -RDebugUtils.currentModule="main"; -if (Debug.shouldDelegate(mostCurrent.activityBA, "activity_create", false)) - {return ((String) Debug.delegate(mostCurrent.activityBA, "activity_create", new Object[] {_firsttime}));} -RDebugUtils.currentLine=131072; - //BA.debugLineNum = 131072;BA.debugLine="Sub Activity_Create(FirstTime As Boolean)"; -RDebugUtils.currentLine=131073; - //BA.debugLineNum = 131073;BA.debugLine="Activity.LoadLayout(\"Main_Layout\")"; -mostCurrent._activity.LoadLayout("Main_Layout",mostCurrent.activityBA); -RDebugUtils.currentLine=131074; - //BA.debugLineNum = 131074;BA.debugLine="Log(\"Layout caricato correttamente.\")"; -anywheresoftware.b4a.keywords.Common.LogImpl("3131074","Layout caricato correttamente.",0); -RDebugUtils.currentLine=131077; - //BA.debugLineNum = 131077;BA.debugLine="myClock.Initialize(pnlClock, 50) ' L'orologio avr"; -mostCurrent._myclock._initialize /*String*/ (null,mostCurrent.activityBA,mostCurrent._pnlclock,(float) (50)); -RDebugUtils.currentLine=131080; - //BA.debugLineNum = 131080;BA.debugLine="Timer1.Initialize(\"Timer1\", 1000) ' Aggiornamento"; -_timer1.Initialize(processBA,"Timer1",(long) (1000)); -RDebugUtils.currentLine=131081; - //BA.debugLineNum = 131081;BA.debugLine="Timer1.Enabled = True"; -_timer1.setEnabled(anywheresoftware.b4a.keywords.Common.True); -RDebugUtils.currentLine=131097; - //BA.debugLineNum = 131097;BA.debugLine="End Sub"; +}public static String _process_globals() throws Exception{ + //BA.debugLineNum = 13;BA.debugLine="Sub Process_Globals"; + //BA.debugLineNum = 14;BA.debugLine="Private Timer1 As Timer"; +_timer1 = new anywheresoftware.b4a.objects.Timer(); + //BA.debugLineNum = 15;BA.debugLine="Private FirstWorkLimitMs As Long"; +_firstworklimitms = 0L; + //BA.debugLineNum = 16;BA.debugLine="Private WorkLimitMs As Long"; +_worklimitms = 0L; + //BA.debugLineNum = 17;BA.debugLine="Private OvertimeLimitMs As Long"; +_overtimelimitms = 0L; + //BA.debugLineNum = 18;BA.debugLine="Private MaxProductiveMs As Long"; +_maxproductivems = 0L; + //BA.debugLineNum = 19;BA.debugLine="Private StatsFileName As String"; +_statsfilename = ""; + //BA.debugLineNum = 20;BA.debugLine="Private StateFileName As String"; +_statefilename = ""; + //BA.debugLineNum = 21;BA.debugLine="Private AutoConfigFileName As String"; +_autoconfigfilename = ""; + //BA.debugLineNum = 22;BA.debugLine="Private MaxStoredDays As Int"; +_maxstoreddays = 0; + //BA.debugLineNum = 23;BA.debugLine="End Sub"; return ""; } -public static String _activity_pause(boolean _userclosed) throws Exception{ -RDebugUtils.currentModule="main"; -RDebugUtils.currentLine=327680; - //BA.debugLineNum = 327680;BA.debugLine="Sub Activity_Pause (UserClosed As Boolean)"; -RDebugUtils.currentLine=327682; - //BA.debugLineNum = 327682;BA.debugLine="End Sub"; -return ""; -} -public static String _activity_resume() throws Exception{ -RDebugUtils.currentModule="main"; -if (Debug.shouldDelegate(mostCurrent.activityBA, "activity_resume", false)) - {return ((String) Debug.delegate(mostCurrent.activityBA, "activity_resume", null));} -RDebugUtils.currentLine=262144; - //BA.debugLineNum = 262144;BA.debugLine="Sub Activity_Resume"; -RDebugUtils.currentLine=262146; - //BA.debugLineNum = 262146;BA.debugLine="End Sub"; -return ""; -} -public static String _btnpause_click() throws Exception{ -RDebugUtils.currentModule="main"; -if (Debug.shouldDelegate(mostCurrent.activityBA, "btnpause_click", false)) - {return ((String) Debug.delegate(mostCurrent.activityBA, "btnpause_click", null));} -RDebugUtils.currentLine=655360; - //BA.debugLineNum = 655360;BA.debugLine="Sub BtnPause_Click"; -RDebugUtils.currentLine=655361; - //BA.debugLineNum = 655361;BA.debugLine="Running = False"; -_running = anywheresoftware.b4a.keywords.Common.False; -RDebugUtils.currentLine=655362; - //BA.debugLineNum = 655362;BA.debugLine="End Sub"; -return ""; -} -public static String _btnreset_click() throws Exception{ -RDebugUtils.currentModule="main"; -if (Debug.shouldDelegate(mostCurrent.activityBA, "btnreset_click", false)) - {return ((String) Debug.delegate(mostCurrent.activityBA, "btnreset_click", null));} -RDebugUtils.currentLine=720896; - //BA.debugLineNum = 720896;BA.debugLine="Sub BtnReset_Click"; -RDebugUtils.currentLine=720897; - //BA.debugLineNum = 720897;BA.debugLine="Running = False"; -_running = anywheresoftware.b4a.keywords.Common.False; -RDebugUtils.currentLine=720898; - //BA.debugLineNum = 720898;BA.debugLine="ElapsedTime = 0"; -_elapsedtime = (long) (0); -RDebugUtils.currentLine=720899; - //BA.debugLineNum = 720899;BA.debugLine="lblElapsedTime.Text = \"Tempo: 00:00:00\""; -mostCurrent._lblelapsedtime.setText(BA.ObjectToCharSequence("Tempo: 00:00:00")); -RDebugUtils.currentLine=720900; - //BA.debugLineNum = 720900;BA.debugLine="End Sub"; -return ""; -} -public static String _btnstart_click() throws Exception{ -RDebugUtils.currentModule="main"; -if (Debug.shouldDelegate(mostCurrent.activityBA, "btnstart_click", false)) - {return ((String) Debug.delegate(mostCurrent.activityBA, "btnstart_click", null));} -RDebugUtils.currentLine=589824; - //BA.debugLineNum = 589824;BA.debugLine="Sub BtnStart_Click"; -RDebugUtils.currentLine=589825; - //BA.debugLineNum = 589825;BA.debugLine="If Not(Running) Then"; -if (anywheresoftware.b4a.keywords.Common.Not(_running)) { -RDebugUtils.currentLine=589826; - //BA.debugLineNum = 589826;BA.debugLine="Running = True"; -_running = anywheresoftware.b4a.keywords.Common.True; -RDebugUtils.currentLine=589828; - //BA.debugLineNum = 589828;BA.debugLine="Timer1.Initialize(\"Timer1\",1000)"; -_timer1.Initialize(processBA,"Timer1",(long) (1000)); -RDebugUtils.currentLine=589830; - //BA.debugLineNum = 589830;BA.debugLine="Timer1.Enabled = True"; -_timer1.setEnabled(anywheresoftware.b4a.keywords.Common.True); -RDebugUtils.currentLine=589831; - //BA.debugLineNum = 589831;BA.debugLine="StartTime = DateTime.Now - ElapsedTime"; -_starttime = (long) (anywheresoftware.b4a.keywords.Common.DateTime.getNow()-_elapsedtime); +public static String _processactivepausesegment(long _now) throws Exception{ +long _midnight = 0L; + //BA.debugLineNum = 520;BA.debugLine="Private Sub ProcessActivePauseSegment(now As Long)"; + //BA.debugLineNum = 521;BA.debugLine="Dim midnight As Long = GetNextMidnight(CurrentSeg"; +_midnight = _getnextmidnight(_currentsegmentstart); + //BA.debugLineNum = 522;BA.debugLine="If now >= midnight Then"; +if (_now>=_midnight) { + //BA.debugLineNum = 523;BA.debugLine="EndSession(midnight, True)"; +_endsession(_midnight,anywheresoftware.b4a.keywords.Common.True); + //BA.debugLineNum = 524;BA.debugLine="Log(\"Workday stopped automatically during pause:"; +anywheresoftware.b4a.keywords.Common.LogImpl("2424836","Workday stopped automatically during pause: midnight reached.",0); }; -RDebugUtils.currentLine=589833; - //BA.debugLineNum = 589833;BA.debugLine="End Sub"; + //BA.debugLineNum = 526;BA.debugLine="End Sub"; return ""; } -public static String _btnsync_click() throws Exception{ -RDebugUtils.currentModule="main"; -if (Debug.shouldDelegate(mostCurrent.activityBA, "btnsync_click", false)) - {return ((String) Debug.delegate(mostCurrent.activityBA, "btnsync_click", null));} -RDebugUtils.currentLine=786432; - //BA.debugLineNum = 786432;BA.debugLine="Sub BtnSync_Click"; -RDebugUtils.currentLine=786433; - //BA.debugLineNum = 786433;BA.debugLine="SynchronizeClock"; -_synchronizeclock(); -RDebugUtils.currentLine=786434; - //BA.debugLineNum = 786434;BA.debugLine="End Sub"; +public static String _processactiveworksegment(long _now) throws Exception{ +long _midnight = 0L; +long _segmentduration = 0L; +long _nextboundary = 0L; +long _durationtoboundary = 0L; + //BA.debugLineNum = 460;BA.debugLine="Private Sub ProcessActiveWorkSegment(now As Long)"; + //BA.debugLineNum = 461;BA.debugLine="Do While SessionActive And PauseActive = False"; +while (_sessionactive && _pauseactive==anywheresoftware.b4a.keywords.Common.False) { + //BA.debugLineNum = 462;BA.debugLine="Dim midnight As Long = GetNextMidnight(CurrentSe"; +_midnight = _getnextmidnight(_currentsegmentstart); + //BA.debugLineNum = 463;BA.debugLine="If now >= midnight Then"; +if (_now>=_midnight) { + //BA.debugLineNum = 464;BA.debugLine="EndSession(midnight, True)"; +_endsession(_midnight,anywheresoftware.b4a.keywords.Common.True); + //BA.debugLineNum = 465;BA.debugLine="Log(\"Workday stopped automatically: midnight re"; +anywheresoftware.b4a.keywords.Common.LogImpl("2162693","Workday stopped automatically: midnight reached.",0); + //BA.debugLineNum = 466;BA.debugLine="Return"; +if (true) return ""; + }; + //BA.debugLineNum = 468;BA.debugLine="Dim segmentDuration As Long = now - CurrentSegme"; +_segmentduration = (long) (_now-_currentsegmentstart); + //BA.debugLineNum = 469;BA.debugLine="If segmentDuration <= 0 Then Return"; +if (_segmentduration<=0) { +if (true) return "";}; + //BA.debugLineNum = 470;BA.debugLine="Dim nextBoundary As Long = GetNextWorkBoundary"; +_nextboundary = _getnextworkboundary(); + //BA.debugLineNum = 471;BA.debugLine="Dim durationToBoundary As Long = nextBoundary -"; +_durationtoboundary = (long) (_nextboundary-_productiveelapsedms); + //BA.debugLineNum = 472;BA.debugLine="If segmentDuration < durationToBoundary Then"; +if (_segmentduration<_durationtoboundary) { + //BA.debugLineNum = 473;BA.debugLine="CurrentSegmentColor = GetCurrentWorkColor"; +_currentsegmentcolor = _getcurrentworkcolor(); + //BA.debugLineNum = 474;BA.debugLine="Return"; +if (true) return ""; + }; + //BA.debugLineNum = 477;BA.debugLine="RecordSegment(CurrentSegmentStart, durationToBou"; +_recordsegment(_currentsegmentstart,_durationtoboundary,_getcurrentworkcolor(),anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 478;BA.debugLine="ProductiveElapsedMs = ProductiveElapsedMs + dura"; +_productiveelapsedms = (long) (_productiveelapsedms+_durationtoboundary); + //BA.debugLineNum = 479;BA.debugLine="CurrentSegmentStart = CurrentSegmentStart + dura"; +_currentsegmentstart = (long) (_currentsegmentstart+_durationtoboundary); + //BA.debugLineNum = 480;BA.debugLine="CurrentSegmentColor = GetCurrentWorkColor"; +_currentsegmentcolor = _getcurrentworkcolor(); + //BA.debugLineNum = 482;BA.debugLine="If ProductiveElapsedMs >= MaxProductiveMs Then"; +if (_productiveelapsedms>=_maxproductivems) { + //BA.debugLineNum = 483;BA.debugLine="EndSession(CurrentSegmentStart, True)"; +_endsession(_currentsegmentstart,anywheresoftware.b4a.keywords.Common.True); + //BA.debugLineNum = 484;BA.debugLine="Return"; +if (true) return ""; + }; + } +; + //BA.debugLineNum = 487;BA.debugLine="End Sub"; +return ""; +} +public static String _recordsegment(long _segmentstart,long _duration,int _segmentcolor,boolean _ispausesegment) throws Exception{ + //BA.debugLineNum = 500;BA.debugLine="Private Sub RecordSegment(SegmentStart As Long, Du"; + //BA.debugLineNum = 501;BA.debugLine="myClock.AddSegment(Duration, SegmentColor, IsPaus"; +mostCurrent._myclock._addsegment /*String*/ (_duration,_segmentcolor,_ispausesegment); + //BA.debugLineNum = 502;BA.debugLine="AddStatsSegment(CurrentWorkDayStart, CurrentWorkD"; +_addstatssegment(_currentworkdaystart,_currentworkdaykey,_segmentstart,_duration,_getsegmentcategory(_segmentcolor,_ispausesegment),"manual"); + //BA.debugLineNum = 503;BA.debugLine="End Sub"; +return ""; +} +public static String _regenerateautosegmentsforday(long _daystart,int _minuteofday) throws Exception{ +int _firstworkend = 0; +int _pauseend = 0; +int _secondworkend = 0; + //BA.debugLineNum = 1027;BA.debugLine="Private Sub RegenerateAutoSegmentsForDay(DayStart"; + //BA.debugLineNum = 1028;BA.debugLine="RemoveAutoRowsForDay(DayStart)"; +_removeautorowsforday(_daystart); + //BA.debugLineNum = 1029;BA.debugLine="Dim firstWorkEnd As Int = Min(MinuteOfDay, AutoPa"; +_firstworkend = (int) (anywheresoftware.b4a.keywords.Common.Min(_minuteofday,_autopausestartminutes)); + //BA.debugLineNum = 1030;BA.debugLine="If firstWorkEnd > AutoStartMinutes Then"; +if (_firstworkend>_autostartminutes) { + //BA.debugLineNum = 1031;BA.debugLine="AddAutoSegmentNoSave(DayStart, AutoStartMinutes,"; +_addautosegmentnosave(_daystart,_autostartminutes,_firstworkend,"lavoro"); + }; + //BA.debugLineNum = 1033;BA.debugLine="Dim pauseEnd As Int = Min(MinuteOfDay, AutoPauseE"; +_pauseend = (int) (anywheresoftware.b4a.keywords.Common.Min(_minuteofday,_autopauseendminutes)); + //BA.debugLineNum = 1034;BA.debugLine="If pauseEnd > AutoPauseStartMinutes Then"; +if (_pauseend>_autopausestartminutes) { + //BA.debugLineNum = 1035;BA.debugLine="AddAutoSegmentNoSave(DayStart, AutoPauseStartMin"; +_addautosegmentnosave(_daystart,_autopausestartminutes,_pauseend,"pausa"); + }; + //BA.debugLineNum = 1037;BA.debugLine="Dim secondWorkEnd As Int = Min(MinuteOfDay, AutoE"; +_secondworkend = (int) (anywheresoftware.b4a.keywords.Common.Min(_minuteofday,_autoendminutes)); + //BA.debugLineNum = 1038;BA.debugLine="If secondWorkEnd > AutoPauseEndMinutes Then"; +if (_secondworkend>_autopauseendminutes) { + //BA.debugLineNum = 1039;BA.debugLine="AddAutoSegmentNoSave(DayStart, AutoPauseEndMinut"; +_addautosegmentnosave(_daystart,_autopauseendminutes,_secondworkend,"lavoro"); + }; + //BA.debugLineNum = 1041;BA.debugLine="TrimStatsRows"; +_trimstatsrows(); + //BA.debugLineNum = 1042;BA.debugLine="SaveStatsRows"; +_savestatsrows(); + //BA.debugLineNum = 1043;BA.debugLine="End Sub"; +return ""; +} +public static String _removeautorowsforday(long _daystart) throws Exception{ +anywheresoftware.b4a.objects.collections.List _kept = null; +anywheresoftware.b4a.objects.collections.Map _row = null; +String _source = ""; + //BA.debugLineNum = 1060;BA.debugLine="Private Sub RemoveAutoRowsForDay(DayStart As Long)"; + //BA.debugLineNum = 1061;BA.debugLine="Dim kept As List"; +_kept = new anywheresoftware.b4a.objects.collections.List(); + //BA.debugLineNum = 1062;BA.debugLine="kept.Initialize"; +_kept.Initialize(); + //BA.debugLineNum = 1063;BA.debugLine="For Each row As Map In StatsRows"; +_row = new anywheresoftware.b4a.objects.collections.Map(); +{ +final anywheresoftware.b4a.BA.IterableList group3 = mostCurrent._statsrows; +final int groupLen3 = group3.getSize() +;int index3 = 0; +; +for (; index3 < groupLen3;index3++){ +_row = (anywheresoftware.b4a.objects.collections.Map) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4a.objects.collections.Map(), (java.util.Map)(group3.Get(index3))); + //BA.debugLineNum = 1064;BA.debugLine="Dim source As String = \"manual\""; +_source = "manual"; + //BA.debugLineNum = 1065;BA.debugLine="If row.ContainsKey(\"source\") Then source = row.G"; +if (_row.ContainsKey((Object)("source"))) { +_source = BA.ObjectToString(_row.Get((Object)("source")));}; + //BA.debugLineNum = 1066;BA.debugLine="If row.Get(\"dayStart\") = DayStart And source = \""; +if ((_row.Get((Object)("dayStart"))).equals((Object)(_daystart)) && (_source).equals("auto")) { + }else { + //BA.debugLineNum = 1069;BA.debugLine="kept.Add(row)"; +_kept.Add((Object)(_row.getObject())); + }; + } +}; + //BA.debugLineNum = 1072;BA.debugLine="StatsRows.Clear"; +mostCurrent._statsrows.Clear(); + //BA.debugLineNum = 1073;BA.debugLine="StatsRows.AddAll(kept)"; +mostCurrent._statsrows.AddAll(_kept); + //BA.debugLineNum = 1074;BA.debugLine="End Sub"; +return ""; +} +public static String _resetautomaticconfig() throws Exception{ + //BA.debugLineNum = 949;BA.debugLine="Private Sub ResetAutomaticConfig"; + //BA.debugLineNum = 950;BA.debugLine="AutoModeEnabled = False"; +_automodeenabled = anywheresoftware.b4a.keywords.Common.False; + //BA.debugLineNum = 951;BA.debugLine="AutoState = \"stopped\""; +mostCurrent._autostate = "stopped"; + //BA.debugLineNum = 952;BA.debugLine="If File.Exists(File.DirInternal, AutoConfigFileNa"; +if (anywheresoftware.b4a.keywords.Common.File.Exists(anywheresoftware.b4a.keywords.Common.File.getDirInternal(),_autoconfigfilename)) { +anywheresoftware.b4a.keywords.Common.File.Delete(anywheresoftware.b4a.keywords.Common.File.getDirInternal(),_autoconfigfilename);}; + //BA.debugLineNum = 953;BA.debugLine="ResetSessionState(False)"; +_resetsessionstate(anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 954;BA.debugLine="RestoreLastClosedDayState"; +_restorelastcloseddaystate(); + //BA.debugLineNum = 955;BA.debugLine="UpdateMainControlState"; +_updatemaincontrolstate(); + //BA.debugLineNum = 956;BA.debugLine="ToastMessageShow(Localization.T(\"auto_disabled\"),"; +anywheresoftware.b4a.keywords.Common.ToastMessageShow(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"auto_disabled")),anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 957;BA.debugLine="End Sub"; +return ""; +} +public static String _resetsessionstate(boolean _clearclock) throws Exception{ + //BA.debugLineNum = 442;BA.debugLine="Private Sub ResetSessionState(ClearClock As Boolea"; + //BA.debugLineNum = 443;BA.debugLine="SessionActive = False"; +_sessionactive = anywheresoftware.b4a.keywords.Common.False; + //BA.debugLineNum = 444;BA.debugLine="PauseActive = False"; +_pauseactive = anywheresoftware.b4a.keywords.Common.False; + //BA.debugLineNum = 445;BA.debugLine="ProductiveElapsedMs = 0"; +_productiveelapsedms = (long) (0); + //BA.debugLineNum = 446;BA.debugLine="CurrentSegmentStart = 0"; +_currentsegmentstart = (long) (0); + //BA.debugLineNum = 447;BA.debugLine="CurrentWorkDayStart = 0"; +_currentworkdaystart = (long) (0); + //BA.debugLineNum = 448;BA.debugLine="CurrentWorkDayKey = 0"; +_currentworkdaykey = (long) (0); + //BA.debugLineNum = 449;BA.debugLine="CurrentSegmentColor = WorkMorningColor"; +_currentsegmentcolor = _workmorningcolor; + //BA.debugLineNum = 450;BA.debugLine="LastActiveStateSaveAt = 0"; +_lastactivestatesaveat = (long) (0); + //BA.debugLineNum = 451;BA.debugLine="BtnStart.Text = Localization.T(\"start\")"; +mostCurrent._btnstart.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"start"))); + //BA.debugLineNum = 452;BA.debugLine="BtnPause.Text = Localization.T(\"pause\")"; +mostCurrent._btnpause.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"pause"))); + //BA.debugLineNum = 453;BA.debugLine="BtnPause.Enabled = False"; +mostCurrent._btnpause.setEnabled(anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 454;BA.debugLine="UpdateMainControlState"; +_updatemaincontrolstate(); + //BA.debugLineNum = 455;BA.debugLine="If ClearClock Then myClock.ClearSegments"; +if (_clearclock) { +mostCurrent._myclock._clearsegments /*String*/ ();}; + //BA.debugLineNum = 456;BA.debugLine="myClock.ClearActiveSegment"; +mostCurrent._myclock._clearactivesegment /*String*/ (); + //BA.debugLineNum = 457;BA.debugLine="UpdateElapsedLabel"; +_updateelapsedlabel(); + //BA.debugLineNum = 458;BA.debugLine="End Sub"; +return ""; +} +public static String _resizeclockpanel() throws Exception{ +int _clocksize = 0; + //BA.debugLineNum = 144;BA.debugLine="Private Sub ResizeClockPanel"; + //BA.debugLineNum = 145;BA.debugLine="Dim clockSize As Int = Activity.Width"; +_clocksize = mostCurrent._activity.getWidth(); + //BA.debugLineNum = 146;BA.debugLine="pnlClock.SetLayout(0, 0, clockSize, clockSize)"; +mostCurrent._pnlclock.SetLayout((int) (0),(int) (0),_clocksize,_clocksize); + //BA.debugLineNum = 147;BA.debugLine="End Sub"; +return ""; +} +public static String _restoreactivestate() throws Exception{ +anywheresoftware.b4a.objects.collections.List _lines = null; +long _now = 0L; + //BA.debugLineNum = 752;BA.debugLine="Private Sub RestoreActiveState"; + //BA.debugLineNum = 753;BA.debugLine="If SessionActive Then Return"; +if (_sessionactive) { +if (true) return "";}; + //BA.debugLineNum = 754;BA.debugLine="If File.Exists(File.DirInternal, StateFileName) ="; +if (anywheresoftware.b4a.keywords.Common.File.Exists(anywheresoftware.b4a.keywords.Common.File.getDirInternal(),_statefilename)==anywheresoftware.b4a.keywords.Common.False) { +if (true) return "";}; + //BA.debugLineNum = 755;BA.debugLine="Dim lines As List = File.ReadList(File.DirInterna"; +_lines = new anywheresoftware.b4a.objects.collections.List(); +_lines = anywheresoftware.b4a.keywords.Common.File.ReadList(anywheresoftware.b4a.keywords.Common.File.getDirInternal(),_statefilename); + //BA.debugLineNum = 756;BA.debugLine="If lines.Size < 5 Then Return"; +if (_lines.getSize()<5) { +if (true) return "";}; + //BA.debugLineNum = 758;BA.debugLine="CurrentWorkDayStart = lines.Get(0)"; +_currentworkdaystart = BA.ObjectToLongNumber(_lines.Get((int) (0))); + //BA.debugLineNum = 759;BA.debugLine="CurrentWorkDayKey = CurrentWorkDayStart"; +_currentworkdaykey = _currentworkdaystart; + //BA.debugLineNum = 760;BA.debugLine="CurrentSegmentStart = lines.Get(1)"; +_currentsegmentstart = BA.ObjectToLongNumber(_lines.Get((int) (1))); + //BA.debugLineNum = 761;BA.debugLine="ProductiveElapsedMs = lines.Get(2)"; +_productiveelapsedms = BA.ObjectToLongNumber(_lines.Get((int) (2))); + //BA.debugLineNum = 762;BA.debugLine="ProductiveElapsedMs = Max(ProductiveElapsedMs, Ge"; +_productiveelapsedms = (long) (anywheresoftware.b4a.keywords.Common.Max(_productiveelapsedms,_getproductivetotalforworkday(_currentworkdaykey))); + //BA.debugLineNum = 763;BA.debugLine="PauseActive = lines.Get(3)"; +_pauseactive = BA.ObjectToBoolean(_lines.Get((int) (3))); + //BA.debugLineNum = 764;BA.debugLine="CurrentSegmentColor = lines.Get(4)"; +_currentsegmentcolor = (int)(BA.ObjectToNumber(_lines.Get((int) (4)))); + //BA.debugLineNum = 766;BA.debugLine="Dim now As Long = DateTime.Now"; +_now = anywheresoftware.b4a.keywords.Common.DateTime.getNow(); + //BA.debugLineNum = 767;BA.debugLine="If now >= GetNextMidnight(CurrentSegmentStart) Th"; +if (_now>=_getnextmidnight(_currentsegmentstart)) { + //BA.debugLineNum = 768;BA.debugLine="SessionActive = True"; +_sessionactive = anywheresoftware.b4a.keywords.Common.True; + //BA.debugLineNum = 769;BA.debugLine="EndSession(GetNextMidnight(CurrentSegmentStart),"; +_endsession(_getnextmidnight(_currentsegmentstart),anywheresoftware.b4a.keywords.Common.True); + //BA.debugLineNum = 770;BA.debugLine="If File.Exists(File.DirInternal, StateFileName)"; +if (anywheresoftware.b4a.keywords.Common.File.Exists(anywheresoftware.b4a.keywords.Common.File.getDirInternal(),_statefilename)) { +anywheresoftware.b4a.keywords.Common.File.Delete(anywheresoftware.b4a.keywords.Common.File.getDirInternal(),_statefilename);}; + //BA.debugLineNum = 771;BA.debugLine="Return"; +if (true) return ""; + }; + //BA.debugLineNum = 773;BA.debugLine="If ProductiveElapsedMs >= MaxProductiveMs Then"; +if (_productiveelapsedms>=_maxproductivems) { + //BA.debugLineNum = 774;BA.debugLine="If File.Exists(File.DirInternal, StateFileName)"; +if (anywheresoftware.b4a.keywords.Common.File.Exists(anywheresoftware.b4a.keywords.Common.File.getDirInternal(),_statefilename)) { +anywheresoftware.b4a.keywords.Common.File.Delete(anywheresoftware.b4a.keywords.Common.File.getDirInternal(),_statefilename);}; + //BA.debugLineNum = 775;BA.debugLine="Return"; +if (true) return ""; + }; + //BA.debugLineNum = 778;BA.debugLine="SessionActive = True"; +_sessionactive = anywheresoftware.b4a.keywords.Common.True; + //BA.debugLineNum = 779;BA.debugLine="BtnStart.Text = Localization.T(\"end\")"; +mostCurrent._btnstart.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"end"))); + //BA.debugLineNum = 780;BA.debugLine="If PauseActive Then"; +if (_pauseactive) { + //BA.debugLineNum = 781;BA.debugLine="BtnPause.Text = Localization.T(\"end_pause\")"; +mostCurrent._btnpause.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"end_pause"))); + //BA.debugLineNum = 782;BA.debugLine="BtnPause.Enabled = True"; +mostCurrent._btnpause.setEnabled(anywheresoftware.b4a.keywords.Common.True); + }else { + //BA.debugLineNum = 784;BA.debugLine="BtnPause.Text = Localization.T(\"pause\")"; +mostCurrent._btnpause.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"pause"))); + //BA.debugLineNum = 785;BA.debugLine="BtnPause.Enabled = True"; +mostCurrent._btnpause.setEnabled(anywheresoftware.b4a.keywords.Common.True); + //BA.debugLineNum = 786;BA.debugLine="CurrentSegmentColor = GetCurrentWorkColor"; +_currentsegmentcolor = _getcurrentworkcolor(); + }; + //BA.debugLineNum = 788;BA.debugLine="UpdateMainControlState"; +_updatemaincontrolstate(); + //BA.debugLineNum = 789;BA.debugLine="myClock.ClearSegments"; +mostCurrent._myclock._clearsegments /*String*/ (); + //BA.debugLineNum = 790;BA.debugLine="LoadWorkDaySegmentsIntoClock(CurrentWorkDayKey)"; +_loadworkdaysegmentsintoclock(_currentworkdaykey); + //BA.debugLineNum = 791;BA.debugLine="myClock.SetActiveSegment(Max(0, now - CurrentSegm"; +mostCurrent._myclock._setactivesegment /*String*/ ((long) (anywheresoftware.b4a.keywords.Common.Max(0,_now-_currentsegmentstart)),_currentsegmentcolor,_pauseactive); + //BA.debugLineNum = 792;BA.debugLine="UpdateElapsedLabel"; +_updateelapsedlabel(); + //BA.debugLineNum = 793;BA.debugLine="End Sub"; +return ""; +} +public static String _restorelastcloseddaystate() throws Exception{ +long _latestdaystart = 0L; + //BA.debugLineNum = 795;BA.debugLine="Private Sub RestoreLastClosedDayState"; + //BA.debugLineNum = 796;BA.debugLine="If SessionActive Then Return"; +if (_sessionactive) { +if (true) return "";}; + //BA.debugLineNum = 797;BA.debugLine="Dim latestDayStart As Long = GetLatestWorkDayStar"; +_latestdaystart = _getlatestworkdaystart(); + //BA.debugLineNum = 798;BA.debugLine="If latestDayStart = 0 Then Return"; +if (_latestdaystart==0) { +if (true) return "";}; + //BA.debugLineNum = 799;BA.debugLine="If CurrentWorkDayStart = latestDayStart And Produ"; +if (_currentworkdaystart==_latestdaystart && _productiveelapsedms>0) { +if (true) return "";}; + //BA.debugLineNum = 800;BA.debugLine="CurrentWorkDayStart = latestDayStart"; +_currentworkdaystart = _latestdaystart; + //BA.debugLineNum = 801;BA.debugLine="CurrentWorkDayKey = latestDayStart"; +_currentworkdaykey = _latestdaystart; + //BA.debugLineNum = 802;BA.debugLine="ProductiveElapsedMs = GetProductiveTotalForWorkDa"; +_productiveelapsedms = _getproductivetotalforworkday(_currentworkdaykey); + //BA.debugLineNum = 803;BA.debugLine="CurrentSegmentStart = 0"; +_currentsegmentstart = (long) (0); + //BA.debugLineNum = 804;BA.debugLine="PauseActive = False"; +_pauseactive = anywheresoftware.b4a.keywords.Common.False; + //BA.debugLineNum = 805;BA.debugLine="CurrentSegmentColor = GetCurrentWorkColor"; +_currentsegmentcolor = _getcurrentworkcolor(); + //BA.debugLineNum = 806;BA.debugLine="myClock.ClearSegments"; +mostCurrent._myclock._clearsegments /*String*/ (); + //BA.debugLineNum = 807;BA.debugLine="LoadWorkDaySegmentsIntoClock(CurrentWorkDayKey)"; +_loadworkdaysegmentsintoclock(_currentworkdaykey); + //BA.debugLineNum = 808;BA.debugLine="myClock.ClearActiveSegment"; +mostCurrent._myclock._clearactivesegment /*String*/ (); + //BA.debugLineNum = 809;BA.debugLine="UpdateElapsedLabel"; +_updateelapsedlabel(); + //BA.debugLineNum = 810;BA.debugLine="End Sub"; +return ""; +} +public static String _saveactivestate() throws Exception{ +anywheresoftware.b4a.objects.collections.List _lines = null; + //BA.debugLineNum = 735;BA.debugLine="Private Sub SaveActiveState"; + //BA.debugLineNum = 736;BA.debugLine="If SessionActive = False Then"; +if (_sessionactive==anywheresoftware.b4a.keywords.Common.False) { + //BA.debugLineNum = 737;BA.debugLine="If File.Exists(File.DirInternal, StateFileName)"; +if (anywheresoftware.b4a.keywords.Common.File.Exists(anywheresoftware.b4a.keywords.Common.File.getDirInternal(),_statefilename)) { +anywheresoftware.b4a.keywords.Common.File.Delete(anywheresoftware.b4a.keywords.Common.File.getDirInternal(),_statefilename);}; + //BA.debugLineNum = 738;BA.debugLine="LastActiveStateSaveAt = 0"; +_lastactivestatesaveat = (long) (0); + //BA.debugLineNum = 739;BA.debugLine="Return"; +if (true) return ""; + }; + //BA.debugLineNum = 741;BA.debugLine="Dim lines As List"; +_lines = new anywheresoftware.b4a.objects.collections.List(); + //BA.debugLineNum = 742;BA.debugLine="lines.Initialize"; +_lines.Initialize(); + //BA.debugLineNum = 743;BA.debugLine="lines.Add(CurrentWorkDayStart)"; +_lines.Add((Object)(_currentworkdaystart)); + //BA.debugLineNum = 744;BA.debugLine="lines.Add(CurrentSegmentStart)"; +_lines.Add((Object)(_currentsegmentstart)); + //BA.debugLineNum = 745;BA.debugLine="lines.Add(ProductiveElapsedMs)"; +_lines.Add((Object)(_productiveelapsedms)); + //BA.debugLineNum = 746;BA.debugLine="lines.Add(PauseActive)"; +_lines.Add((Object)(_pauseactive)); + //BA.debugLineNum = 747;BA.debugLine="lines.Add(CurrentSegmentColor)"; +_lines.Add((Object)(_currentsegmentcolor)); + //BA.debugLineNum = 748;BA.debugLine="File.WriteList(File.DirInternal, StateFileName, l"; +anywheresoftware.b4a.keywords.Common.File.WriteList(anywheresoftware.b4a.keywords.Common.File.getDirInternal(),_statefilename,_lines); + //BA.debugLineNum = 749;BA.debugLine="LastActiveStateSaveAt = DateTime.Now"; +_lastactivestatesaveat = anywheresoftware.b4a.keywords.Common.DateTime.getNow(); + //BA.debugLineNum = 750;BA.debugLine="End Sub"; +return ""; +} +public static String _saveautoconfig() throws Exception{ +anywheresoftware.b4a.objects.collections.List _lines = null; + //BA.debugLineNum = 959;BA.debugLine="Private Sub SaveAutoConfig"; + //BA.debugLineNum = 960;BA.debugLine="Dim lines As List"; +_lines = new anywheresoftware.b4a.objects.collections.List(); + //BA.debugLineNum = 961;BA.debugLine="lines.Initialize"; +_lines.Initialize(); + //BA.debugLineNum = 962;BA.debugLine="lines.Add(AutoStartMinutes)"; +_lines.Add((Object)(_autostartminutes)); + //BA.debugLineNum = 963;BA.debugLine="lines.Add(AutoPauseStartMinutes)"; +_lines.Add((Object)(_autopausestartminutes)); + //BA.debugLineNum = 964;BA.debugLine="lines.Add(AutoPauseEndMinutes)"; +_lines.Add((Object)(_autopauseendminutes)); + //BA.debugLineNum = 965;BA.debugLine="lines.Add(AutoEndMinutes)"; +_lines.Add((Object)(_autoendminutes)); + //BA.debugLineNum = 966;BA.debugLine="File.WriteList(File.DirInternal, AutoConfigFileNa"; +anywheresoftware.b4a.keywords.Common.File.WriteList(anywheresoftware.b4a.keywords.Common.File.getDirInternal(),_autoconfigfilename,_lines); + //BA.debugLineNum = 967;BA.debugLine="End Sub"; +return ""; +} +public static String _savestatsrows() throws Exception{ +anywheresoftware.b4a.objects.collections.List _lines = null; +anywheresoftware.b4a.objects.collections.Map _row = null; +String _source = ""; + //BA.debugLineNum = 710;BA.debugLine="Private Sub SaveStatsRows"; + //BA.debugLineNum = 711;BA.debugLine="Dim lines As List"; +_lines = new anywheresoftware.b4a.objects.collections.List(); + //BA.debugLineNum = 712;BA.debugLine="lines.Initialize"; +_lines.Initialize(); + //BA.debugLineNum = 713;BA.debugLine="For Each row As Map In StatsRows"; +_row = new anywheresoftware.b4a.objects.collections.Map(); +{ +final anywheresoftware.b4a.BA.IterableList group3 = mostCurrent._statsrows; +final int groupLen3 = group3.getSize() +;int index3 = 0; +; +for (; index3 < groupLen3;index3++){ +_row = (anywheresoftware.b4a.objects.collections.Map) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4a.objects.collections.Map(), (java.util.Map)(group3.Get(index3))); + //BA.debugLineNum = 714;BA.debugLine="Dim source As String = \"manual\""; +_source = "manual"; + //BA.debugLineNum = 715;BA.debugLine="If row.ContainsKey(\"source\") Then source = row.G"; +if (_row.ContainsKey((Object)("source"))) { +_source = BA.ObjectToString(_row.Get((Object)("source")));}; + //BA.debugLineNum = 716;BA.debugLine="lines.Add(row.Get(\"dayStart\") & \"|\" & row.Get(\"s"; +_lines.Add((Object)(BA.ObjectToString(_row.Get((Object)("dayStart")))+"|"+BA.ObjectToString(_row.Get((Object)("segmentStart")))+"|"+BA.ObjectToString(_row.Get((Object)("duration")))+"|"+BA.ObjectToString(_row.Get((Object)("category")))+"|"+_source)); + } +}; + //BA.debugLineNum = 718;BA.debugLine="File.WriteList(File.DirInternal, StatsFileName, l"; +anywheresoftware.b4a.keywords.Common.File.WriteList(anywheresoftware.b4a.keywords.Common.File.getDirInternal(),_statsfilename,_lines); + //BA.debugLineNum = 719;BA.debugLine="End Sub"; +return ""; +} +public static String _setautomaticconfig() throws Exception{ +int _startminutes = 0; +int _pausestartminutes = 0; +int _pauseendminutes = 0; +int _endminutes = 0; +int _workminutes = 0; + //BA.debugLineNum = 919;BA.debugLine="Private Sub SetAutomaticConfig"; + //BA.debugLineNum = 920;BA.debugLine="Dim startMinutes As Int = ParseTimeToMinutes(txtC"; +_startminutes = _parsetimetominutes(mostCurrent._txtcfgstart.getText()); + //BA.debugLineNum = 921;BA.debugLine="Dim pauseStartMinutes As Int = ParseTimeToMinutes"; +_pausestartminutes = _parsetimetominutes(mostCurrent._txtcfgpausestart.getText()); + //BA.debugLineNum = 922;BA.debugLine="Dim pauseEndMinutes As Int = ParseTimeToMinutes(t"; +_pauseendminutes = _parsetimetominutes(mostCurrent._txtcfgpauseend.getText()); + //BA.debugLineNum = 923;BA.debugLine="Dim endMinutes As Int = ParseTimeToMinutes(txtCfg"; +_endminutes = _parsetimetominutes(mostCurrent._txtcfgend.getText()); + //BA.debugLineNum = 924;BA.debugLine="If startMinutes < 0 Or pauseStartMinutes < 0 Or p"; +if (_startminutes<0 || _pausestartminutes<0 || _pauseendminutes<0 || _endminutes<0) { + //BA.debugLineNum = 925;BA.debugLine="ToastMessageShow(Localization.T(\"use_hhmm\"), Fal"; +anywheresoftware.b4a.keywords.Common.ToastMessageShow(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"use_hhmm")),anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 926;BA.debugLine="Return"; +if (true) return ""; + }; + //BA.debugLineNum = 928;BA.debugLine="If startMinutes >= pauseStartMinutes Or pauseStar"; +if (_startminutes>=_pausestartminutes || _pausestartminutes>=_pauseendminutes || _pauseendminutes>=_endminutes) { + //BA.debugLineNum = 929;BA.debugLine="ToastMessageShow(Localization.T(\"times_order\"),"; +anywheresoftware.b4a.keywords.Common.ToastMessageShow(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"times_order")),anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 930;BA.debugLine="Return"; +if (true) return ""; + }; + //BA.debugLineNum = 932;BA.debugLine="Dim workMinutes As Int = (pauseStartMinutes - sta"; +_workminutes = (int) ((_pausestartminutes-_startminutes)+(_endminutes-_pauseendminutes)); + //BA.debugLineNum = 933;BA.debugLine="If workMinutes > 480 Then"; +if (_workminutes>480) { + //BA.debugLineNum = 934;BA.debugLine="ToastMessageShow(Localization.T(\"work_exceed\"),"; +anywheresoftware.b4a.keywords.Common.ToastMessageShow(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"work_exceed")),anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 935;BA.debugLine="Return"; +if (true) return ""; + }; + //BA.debugLineNum = 937;BA.debugLine="AutoStartMinutes = startMinutes"; +_autostartminutes = _startminutes; + //BA.debugLineNum = 938;BA.debugLine="AutoPauseStartMinutes = pauseStartMinutes"; +_autopausestartminutes = _pausestartminutes; + //BA.debugLineNum = 939;BA.debugLine="AutoPauseEndMinutes = pauseEndMinutes"; +_autopauseendminutes = _pauseendminutes; + //BA.debugLineNum = 940;BA.debugLine="AutoEndMinutes = endMinutes"; +_autoendminutes = _endminutes; + //BA.debugLineNum = 941;BA.debugLine="AutoModeEnabled = True"; +_automodeenabled = anywheresoftware.b4a.keywords.Common.True; + //BA.debugLineNum = 942;BA.debugLine="SaveAutoConfig"; +_saveautoconfig(); + //BA.debugLineNum = 943;BA.debugLine="If SessionActive Then EndSession(DateTime.Now, Fa"; +if (_sessionactive) { +_endsession(anywheresoftware.b4a.keywords.Common.DateTime.getNow(),anywheresoftware.b4a.keywords.Common.False);}; + //BA.debugLineNum = 944;BA.debugLine="If File.Exists(File.DirInternal, StateFileName) T"; +if (anywheresoftware.b4a.keywords.Common.File.Exists(anywheresoftware.b4a.keywords.Common.File.getDirInternal(),_statefilename)) { +anywheresoftware.b4a.keywords.Common.File.Delete(anywheresoftware.b4a.keywords.Common.File.getDirInternal(),_statefilename);}; + //BA.debugLineNum = 945;BA.debugLine="UpdateAutomaticState(DateTime.Now)"; +_updateautomaticstate(anywheresoftware.b4a.keywords.Common.DateTime.getNow()); + //BA.debugLineNum = 946;BA.debugLine="ToastMessageShow(Localization.T(\"auto_enabled\"),"; +anywheresoftware.b4a.keywords.Common.ToastMessageShow(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"auto_enabled")),anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 947;BA.debugLine="End Sub"; +return ""; +} +public static String _setmaincontrolsvisible(boolean _visible) throws Exception{ +int _i = 0; +anywheresoftware.b4a.objects.ConcreteViewWrapper _v = null; + //BA.debugLineNum = 820;BA.debugLine="Private Sub SetMainControlsVisible(Visible As Bool"; + //BA.debugLineNum = 821;BA.debugLine="For i = 0 To Activity.NumberOfViews - 1"; +{ +final int step1 = 1; +final int limit1 = (int) (mostCurrent._activity.getNumberOfViews()-1); +_i = (int) (0) ; +for (;_i <= limit1 ;_i = _i + step1 ) { + //BA.debugLineNum = 822;BA.debugLine="Dim v As View = Activity.GetView(i)"; +_v = new anywheresoftware.b4a.objects.ConcreteViewWrapper(); +_v = mostCurrent._activity.GetView(_i); + //BA.debugLineNum = 823;BA.debugLine="v.Visible = Visible"; +_v.setVisible(_visible); + } +}; + //BA.debugLineNum = 825;BA.debugLine="HideLegacyButtons"; +_hidelegacybuttons(); + //BA.debugLineNum = 826;BA.debugLine="pnlStats.Visible = False"; +mostCurrent._pnlstats.setVisible(anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 827;BA.debugLine="pnlConfig.Visible = False"; +mostCurrent._pnlconfig.setVisible(anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 828;BA.debugLine="End Sub"; +return ""; +} +public static String _showconfigpage() throws Exception{ + //BA.debugLineNum = 852;BA.debugLine="Private Sub ShowConfigPage"; + //BA.debugLineNum = 853;BA.debugLine="SetMainControlsVisible(False)"; +_setmaincontrolsvisible(anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 854;BA.debugLine="pnlStats.Visible = False"; +mostCurrent._pnlstats.setVisible(anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 855;BA.debugLine="pnlConfig.Visible = True"; +mostCurrent._pnlconfig.setVisible(anywheresoftware.b4a.keywords.Common.True); + //BA.debugLineNum = 856;BA.debugLine="pnlConfig.BringToFront"; +mostCurrent._pnlconfig.BringToFront(); + //BA.debugLineNum = 857;BA.debugLine="End Sub"; +return ""; +} +public static String _showmainpage() throws Exception{ + //BA.debugLineNum = 859;BA.debugLine="Private Sub ShowMainPage"; + //BA.debugLineNum = 860;BA.debugLine="SetMainControlsVisible(True)"; +_setmaincontrolsvisible(anywheresoftware.b4a.keywords.Common.True); + //BA.debugLineNum = 861;BA.debugLine="pnlStats.Visible = False"; +mostCurrent._pnlstats.setVisible(anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 862;BA.debugLine="pnlConfig.Visible = False"; +mostCurrent._pnlconfig.setVisible(anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 863;BA.debugLine="End Sub"; +return ""; +} +public static String _showstatspage() throws Exception{ + //BA.debugLineNum = 812;BA.debugLine="Private Sub ShowStatsPage"; + //BA.debugLineNum = 813;BA.debugLine="BuildStatsTable"; +_buildstatstable(); + //BA.debugLineNum = 814;BA.debugLine="SetMainControlsVisible(False)"; +_setmaincontrolsvisible(anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 815;BA.debugLine="pnlStats.Visible = True"; +mostCurrent._pnlstats.setVisible(anywheresoftware.b4a.keywords.Common.True); + //BA.debugLineNum = 816;BA.debugLine="pnlConfig.Visible = False"; +mostCurrent._pnlconfig.setVisible(anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 817;BA.debugLine="pnlStats.BringToFront"; +mostCurrent._pnlstats.BringToFront(); + //BA.debugLineNum = 818;BA.debugLine="End Sub"; +return ""; +} +public static String _startsession() throws Exception{ + //BA.debugLineNum = 398;BA.debugLine="Private Sub StartSession"; + //BA.debugLineNum = 399;BA.debugLine="CurrentWorkDayStart = GetWorkDayStart(DateTime.No"; +_currentworkdaystart = _getworkdaystart(anywheresoftware.b4a.keywords.Common.DateTime.getNow()); + //BA.debugLineNum = 400;BA.debugLine="CurrentWorkDayKey = CurrentWorkDayStart"; +_currentworkdaykey = _currentworkdaystart; + //BA.debugLineNum = 401;BA.debugLine="ProductiveElapsedMs = GetProductiveTotalForWorkDa"; +_productiveelapsedms = _getproductivetotalforworkday(_currentworkdaykey); + //BA.debugLineNum = 402;BA.debugLine="If ProductiveElapsedMs >= MaxProductiveMs Then"; +if (_productiveelapsedms>=_maxproductivems) { + //BA.debugLineNum = 403;BA.debugLine="ToastMessageShow(Localization.T(\"limit_reached\")"; +anywheresoftware.b4a.keywords.Common.ToastMessageShow(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"limit_reached")),anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 404;BA.debugLine="UpdateElapsedLabel"; +_updateelapsedlabel(); + //BA.debugLineNum = 405;BA.debugLine="Log(\"Start ignored: 9-hour limit already reached"; +anywheresoftware.b4a.keywords.Common.LogImpl("1966087","Start ignored: 9-hour limit already reached.",0); + //BA.debugLineNum = 406;BA.debugLine="Return"; +if (true) return ""; + }; + //BA.debugLineNum = 408;BA.debugLine="SessionActive = True"; +_sessionactive = anywheresoftware.b4a.keywords.Common.True; + //BA.debugLineNum = 409;BA.debugLine="PauseActive = False"; +_pauseactive = anywheresoftware.b4a.keywords.Common.False; + //BA.debugLineNum = 410;BA.debugLine="CurrentSegmentStart = DateTime.Now"; +_currentsegmentstart = anywheresoftware.b4a.keywords.Common.DateTime.getNow(); + //BA.debugLineNum = 411;BA.debugLine="CurrentSegmentColor = GetCurrentWorkColor"; +_currentsegmentcolor = _getcurrentworkcolor(); + //BA.debugLineNum = 412;BA.debugLine="BtnStart.Text = Localization.T(\"end\")"; +mostCurrent._btnstart.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"end"))); + //BA.debugLineNum = 413;BA.debugLine="BtnPause.Text = Localization.T(\"pause\")"; +mostCurrent._btnpause.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"pause"))); + //BA.debugLineNum = 414;BA.debugLine="BtnPause.Enabled = True"; +mostCurrent._btnpause.setEnabled(anywheresoftware.b4a.keywords.Common.True); + //BA.debugLineNum = 415;BA.debugLine="UpdateMainControlState"; +_updatemaincontrolstate(); + //BA.debugLineNum = 416;BA.debugLine="myClock.ClearSegments"; +mostCurrent._myclock._clearsegments /*String*/ (); + //BA.debugLineNum = 417;BA.debugLine="LoadWorkDaySegmentsIntoClock(CurrentWorkDayKey)"; +_loadworkdaysegmentsintoclock(_currentworkdaykey); + //BA.debugLineNum = 418;BA.debugLine="myClock.SetActiveSegment(0, CurrentSegmentColor,"; +mostCurrent._myclock._setactivesegment /*String*/ ((long) (0),_currentsegmentcolor,anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 419;BA.debugLine="UpdateElapsedLabel"; +_updateelapsedlabel(); + //BA.debugLineNum = 420;BA.debugLine="SaveActiveState"; +_saveactivestate(); + //BA.debugLineNum = 421;BA.debugLine="Log(\"Workday started.\")"; +anywheresoftware.b4a.keywords.Common.LogImpl("1966103","Workday started.",0); + //BA.debugLineNum = 422;BA.debugLine="End Sub"; +return ""; +} +public static String _styleneutralbutton(anywheresoftware.b4a.objects.LabelWrapper _btn) throws Exception{ + //BA.debugLineNum = 219;BA.debugLine="Private Sub StyleNeutralButton(btn As Label)"; + //BA.debugLineNum = 220;BA.debugLine="If btn.IsInitialized = False Then Return"; +if (_btn.IsInitialized()==anywheresoftware.b4a.keywords.Common.False) { +if (true) return "";}; + //BA.debugLineNum = 221;BA.debugLine="btn.Color = Colors.RGB(230, 230, 230)"; +_btn.setColor(anywheresoftware.b4a.keywords.Common.Colors.RGB((int) (230),(int) (230),(int) (230))); + //BA.debugLineNum = 222;BA.debugLine="btn.TextColor = Colors.Black"; +_btn.setTextColor(anywheresoftware.b4a.keywords.Common.Colors.Black); + //BA.debugLineNum = 223;BA.debugLine="btn.Gravity = Gravity.CENTER"; +_btn.setGravity(anywheresoftware.b4a.keywords.Common.Gravity.CENTER); + //BA.debugLineNum = 224;BA.debugLine="End Sub"; return ""; } public static String _synchronizeclock() throws Exception{ -RDebugUtils.currentModule="main"; -if (Debug.shouldDelegate(mostCurrent.activityBA, "synchronizeclock", false)) - {return ((String) Debug.delegate(mostCurrent.activityBA, "synchronizeclock", null));} -RDebugUtils.currentLine=851968; - //BA.debugLineNum = 851968;BA.debugLine="Sub SynchronizeClock"; -RDebugUtils.currentLine=851969; - //BA.debugLineNum = 851969;BA.debugLine="DrawClock"; -_drawclock(); -RDebugUtils.currentLine=851970; - //BA.debugLineNum = 851970;BA.debugLine="End Sub"; -return ""; -} -public static String _drawclock() throws Exception{ -RDebugUtils.currentModule="main"; -if (Debug.shouldDelegate(mostCurrent.activityBA, "drawclock", false)) - {return ((String) Debug.delegate(mostCurrent.activityBA, "drawclock", null));} -long _now = 0L; -int _hours = 0; -int _minutes = 0; -int _seconds = 0; -int _x = 0; -int _y = 0; -int _radius = 0; -float _hourangle = 0f; -float _minuteangle = 0f; -float _secondangle = 0f; -RDebugUtils.currentLine=393216; - //BA.debugLineNum = 393216;BA.debugLine="Sub DrawClock"; -RDebugUtils.currentLine=393217; - //BA.debugLineNum = 393217;BA.debugLine="Canvas1.Initialize(Activity)"; -mostCurrent._canvas1.Initialize((android.view.View)(mostCurrent._activity.getObject())); -RDebugUtils.currentLine=393218; - //BA.debugLineNum = 393218;BA.debugLine="Dim now As Long = DateTime.Now"; -_now = anywheresoftware.b4a.keywords.Common.DateTime.getNow(); -RDebugUtils.currentLine=393219; - //BA.debugLineNum = 393219;BA.debugLine="Dim Hours As Int = DateTime.GetHour(now) Mod 1"; -_hours = (int) (anywheresoftware.b4a.keywords.Common.DateTime.GetHour(_now)%12); -RDebugUtils.currentLine=393220; - //BA.debugLineNum = 393220;BA.debugLine="Dim Minutes As Int = DateTime.GetMinute(now)"; -_minutes = anywheresoftware.b4a.keywords.Common.DateTime.GetMinute(_now); -RDebugUtils.currentLine=393221; - //BA.debugLineNum = 393221;BA.debugLine="Dim Seconds As Int = DateTime.GetSecond(now)"; -_seconds = anywheresoftware.b4a.keywords.Common.DateTime.GetSecond(_now); -RDebugUtils.currentLine=393224; - //BA.debugLineNum = 393224;BA.debugLine="Dim x As Int = Activity.Width / 2"; -_x = (int) (mostCurrent._activity.getWidth()/(double)2); -RDebugUtils.currentLine=393225; - //BA.debugLineNum = 393225;BA.debugLine="Dim y As Int = Activity.Height / 2"; -_y = (int) (mostCurrent._activity.getHeight()/(double)2); -RDebugUtils.currentLine=393226; - //BA.debugLineNum = 393226;BA.debugLine="Dim Radius As Int = Min(x, y) - 10"; -_radius = (int) (anywheresoftware.b4a.keywords.Common.Min(_x,_y)-10); -RDebugUtils.currentLine=393229; - //BA.debugLineNum = 393229;BA.debugLine="Canvas1.DrawColor(Colors.White)"; -mostCurrent._canvas1.DrawColor(anywheresoftware.b4a.keywords.Common.Colors.White); -RDebugUtils.currentLine=393232; - //BA.debugLineNum = 393232;BA.debugLine="Canvas1.DrawCircle(x, y, Radius, Colors.Black,"; -mostCurrent._canvas1.DrawCircle((float) (_x),(float) (_y),(float) (_radius),anywheresoftware.b4a.keywords.Common.Colors.Black,anywheresoftware.b4a.keywords.Common.False,(float) (5)); -RDebugUtils.currentLine=393235; - //BA.debugLineNum = 393235;BA.debugLine="Dim HourAngle As Float = -90 + Hours * 30 + Mi"; -_hourangle = (float) (-90+_hours*30+_minutes/(double)2); -RDebugUtils.currentLine=393236; - //BA.debugLineNum = 393236;BA.debugLine="DrawHand(x, y, Radius * 0.5, HourAngle, 8, Col"; -_drawhand(_x,_y,(float) (_radius*0.5),_hourangle,(int) (8),anywheresoftware.b4a.keywords.Common.Colors.Black); -RDebugUtils.currentLine=393239; - //BA.debugLineNum = 393239;BA.debugLine="Dim MinuteAngle As Float = -90 + Minutes * 6"; -_minuteangle = (float) (-90+_minutes*6); -RDebugUtils.currentLine=393240; - //BA.debugLineNum = 393240;BA.debugLine="DrawHand(x, y, Radius * 0.7, MinuteAngle, 5, C"; -_drawhand(_x,_y,(float) (_radius*0.7),_minuteangle,(int) (5),anywheresoftware.b4a.keywords.Common.Colors.Blue); -RDebugUtils.currentLine=393243; - //BA.debugLineNum = 393243;BA.debugLine="Dim SecondAngle As Float = -90 + Seconds * 6"; -_secondangle = (float) (-90+_seconds*6); -RDebugUtils.currentLine=393244; - //BA.debugLineNum = 393244;BA.debugLine="DrawHand(x, y, Radius * 0.9, SecondAngle, 2, C"; -_drawhand(_x,_y,(float) (_radius*0.9),_secondangle,(int) (2),anywheresoftware.b4a.keywords.Common.Colors.Red); -RDebugUtils.currentLine=393245; - //BA.debugLineNum = 393245;BA.debugLine="End Sub"; -return ""; -} -public static String _drawhand(int _x,int _y,float _length,float _angle,int _width,int _color) throws Exception{ -RDebugUtils.currentModule="main"; -if (Debug.shouldDelegate(mostCurrent.activityBA, "drawhand", false)) - {return ((String) Debug.delegate(mostCurrent.activityBA, "drawhand", new Object[] {_x,_y,_length,_angle,_width,_color}));} -float _endx = 0f; -float _endy = 0f; -RDebugUtils.currentLine=458752; - //BA.debugLineNum = 458752;BA.debugLine="Sub DrawHand(x As Int, y As Int, length As Float,"; -RDebugUtils.currentLine=458753; - //BA.debugLineNum = 458753;BA.debugLine="Dim endX As Float = x + length * CosD(angle)"; -_endx = (float) (_x+_length*anywheresoftware.b4a.keywords.Common.CosD(_angle)); -RDebugUtils.currentLine=458754; - //BA.debugLineNum = 458754;BA.debugLine="Dim endY As Float = y + length * SinD(angle)"; -_endy = (float) (_y+_length*anywheresoftware.b4a.keywords.Common.SinD(_angle)); -RDebugUtils.currentLine=458755; - //BA.debugLineNum = 458755;BA.debugLine="Canvas1.DrawLine(x, y, endX, endY, color, widt"; -mostCurrent._canvas1.DrawLine((float) (_x),(float) (_y),_endx,_endy,_color,(float) (_width)); -RDebugUtils.currentLine=458756; - //BA.debugLineNum = 458756;BA.debugLine="End Sub"; -return ""; -} -public static String _formatelapsedtime(long _ms) throws Exception{ -RDebugUtils.currentModule="main"; -if (Debug.shouldDelegate(mostCurrent.activityBA, "formatelapsedtime", false)) - {return ((String) Debug.delegate(mostCurrent.activityBA, "formatelapsedtime", new Object[] {_ms}));} -int _seconds = 0; -int _minutes = 0; -int _hours = 0; -RDebugUtils.currentLine=524288; - //BA.debugLineNum = 524288;BA.debugLine="Sub FormatElapsedTime(ms As Long) As String"; -RDebugUtils.currentLine=524289; - //BA.debugLineNum = 524289;BA.debugLine="Dim seconds As Int = ms / 1000"; -_seconds = (int) (_ms/(double)1000); -RDebugUtils.currentLine=524290; - //BA.debugLineNum = 524290;BA.debugLine="Dim minutes As Int = seconds / 60"; -_minutes = (int) (_seconds/(double)60); -RDebugUtils.currentLine=524291; - //BA.debugLineNum = 524291;BA.debugLine="Dim hours As Int = minutes / 60"; -_hours = (int) (_minutes/(double)60); -RDebugUtils.currentLine=524292; - //BA.debugLineNum = 524292;BA.debugLine="seconds = seconds Mod 60"; -_seconds = (int) (_seconds%60); -RDebugUtils.currentLine=524293; - //BA.debugLineNum = 524293;BA.debugLine="minutes = minutes Mod 60"; -_minutes = (int) (_minutes%60); -RDebugUtils.currentLine=524294; - //BA.debugLineNum = 524294;BA.debugLine="Return NumberFormat(hours, 2, 0) & \":\" & Numbe"; -if (true) return anywheresoftware.b4a.keywords.Common.NumberFormat(_hours,(int) (2),(int) (0))+":"+anywheresoftware.b4a.keywords.Common.NumberFormat(_minutes,(int) (2),(int) (0))+":"+anywheresoftware.b4a.keywords.Common.NumberFormat(_seconds,(int) (2),(int) (0)); -RDebugUtils.currentLine=524295; - //BA.debugLineNum = 524295;BA.debugLine="End Sub"; + //BA.debugLineNum = 394;BA.debugLine="Sub SynchronizeClock"; + //BA.debugLineNum = 395;BA.debugLine="myClock.DrawClock"; +mostCurrent._myclock._drawclock /*String*/ (); + //BA.debugLineNum = 396;BA.debugLine="End Sub"; return ""; } public static String _timer1_tick() throws Exception{ -RDebugUtils.currentModule="main"; -if (Debug.shouldDelegate(mostCurrent.activityBA, "timer1_tick", false)) - {return ((String) Debug.delegate(mostCurrent.activityBA, "timer1_tick", null));} -RDebugUtils.currentLine=196608; - //BA.debugLineNum = 196608;BA.debugLine="Sub Timer1_Tick"; -RDebugUtils.currentLine=196609; - //BA.debugLineNum = 196609;BA.debugLine="myClock.DrawClock"; -mostCurrent._myclock._drawclock /*String*/ (null); -RDebugUtils.currentLine=196610; - //BA.debugLineNum = 196610;BA.debugLine="End Sub"; +long _now = 0L; + //BA.debugLineNum = 111;BA.debugLine="Sub Timer1_Tick"; + //BA.debugLineNum = 112;BA.debugLine="If AutoModeEnabled Then"; +if (_automodeenabled) { + //BA.debugLineNum = 113;BA.debugLine="UpdateAutomaticState(DateTime.Now)"; +_updateautomaticstate(anywheresoftware.b4a.keywords.Common.DateTime.getNow()); + //BA.debugLineNum = 114;BA.debugLine="Return"; +if (true) return ""; + }; + //BA.debugLineNum = 116;BA.debugLine="If SessionActive Then"; +if (_sessionactive) { + //BA.debugLineNum = 117;BA.debugLine="Dim now As Long = DateTime.Now"; +_now = anywheresoftware.b4a.keywords.Common.DateTime.getNow(); + //BA.debugLineNum = 118;BA.debugLine="If PauseActive Then"; +if (_pauseactive) { + //BA.debugLineNum = 119;BA.debugLine="ProcessActivePauseSegment(now)"; +_processactivepausesegment(_now); + //BA.debugLineNum = 120;BA.debugLine="If SessionActive = False Then Return"; +if (_sessionactive==anywheresoftware.b4a.keywords.Common.False) { +if (true) return "";}; + //BA.debugLineNum = 121;BA.debugLine="myClock.SetActiveSegment(now - CurrentSegmentSt"; +mostCurrent._myclock._setactivesegment /*String*/ ((long) (_now-_currentsegmentstart),anywheresoftware.b4a.keywords.Common.Colors.Yellow,anywheresoftware.b4a.keywords.Common.True); + }else { + //BA.debugLineNum = 123;BA.debugLine="ProcessActiveWorkSegment(now)"; +_processactiveworksegment(_now); + //BA.debugLineNum = 124;BA.debugLine="If SessionActive Then"; +if (_sessionactive) { + //BA.debugLineNum = 125;BA.debugLine="myClock.SetActiveSegment(now - CurrentSegmentS"; +mostCurrent._myclock._setactivesegment /*String*/ ((long) (_now-_currentsegmentstart),_currentsegmentcolor,anywheresoftware.b4a.keywords.Common.False); + }; + }; + //BA.debugLineNum = 128;BA.debugLine="If SessionActive And now - LastActiveStateSaveAt"; +if (_sessionactive && _now-_lastactivestatesaveat>=30*anywheresoftware.b4a.keywords.Common.DateTime.TicksPerSecond) { +_saveactivestate();}; + //BA.debugLineNum = 129;BA.debugLine="UpdateElapsedLabel"; +_updateelapsedlabel(); + }else { + //BA.debugLineNum = 131;BA.debugLine="myClock.DrawClock"; +mostCurrent._myclock._drawclock /*String*/ (); + }; + //BA.debugLineNum = 133;BA.debugLine="End Sub"; return ""; } -} \ No newline at end of file +public static String _trimstatsrows() throws Exception{ +long _retention = 0L; +long _cutoff = 0L; +anywheresoftware.b4a.objects.collections.List _kept = null; +anywheresoftware.b4a.objects.collections.Map _row = null; +long _daystart = 0L; + //BA.debugLineNum = 721;BA.debugLine="Private Sub TrimStatsRows"; + //BA.debugLineNum = 722;BA.debugLine="Dim retention As Long = MaxStoredDays"; +_retention = (long) (_maxstoreddays); + //BA.debugLineNum = 723;BA.debugLine="retention = retention * DateTime.TicksPerDay"; +_retention = (long) (_retention*anywheresoftware.b4a.keywords.Common.DateTime.TicksPerDay); + //BA.debugLineNum = 724;BA.debugLine="Dim cutoff As Long = DateTime.Now - retention"; +_cutoff = (long) (anywheresoftware.b4a.keywords.Common.DateTime.getNow()-_retention); + //BA.debugLineNum = 725;BA.debugLine="Dim kept As List"; +_kept = new anywheresoftware.b4a.objects.collections.List(); + //BA.debugLineNum = 726;BA.debugLine="kept.Initialize"; +_kept.Initialize(); + //BA.debugLineNum = 727;BA.debugLine="For Each row As Map In StatsRows"; +_row = new anywheresoftware.b4a.objects.collections.Map(); +{ +final anywheresoftware.b4a.BA.IterableList group6 = mostCurrent._statsrows; +final int groupLen6 = group6.getSize() +;int index6 = 0; +; +for (; index6 < groupLen6;index6++){ +_row = (anywheresoftware.b4a.objects.collections.Map) anywheresoftware.b4a.AbsObjectWrapper.ConvertToWrapper(new anywheresoftware.b4a.objects.collections.Map(), (java.util.Map)(group6.Get(index6))); + //BA.debugLineNum = 728;BA.debugLine="Dim dayStart As Long = row.Get(\"dayStart\")"; +_daystart = BA.ObjectToLongNumber(_row.Get((Object)("dayStart"))); + //BA.debugLineNum = 729;BA.debugLine="If dayStart >= cutoff Then kept.Add(row)"; +if (_daystart>=_cutoff) { +_kept.Add((Object)(_row.getObject()));}; + } +}; + //BA.debugLineNum = 731;BA.debugLine="StatsRows.Clear"; +mostCurrent._statsrows.Clear(); + //BA.debugLineNum = 732;BA.debugLine="StatsRows.AddAll(kept)"; +mostCurrent._statsrows.AddAll(_kept); + //BA.debugLineNum = 733;BA.debugLine="End Sub"; +return ""; +} +public static String _updateautomaticstate(long _now) throws Exception{ +long _daystart = 0L; +int _minuteofday = 0; + //BA.debugLineNum = 1000;BA.debugLine="Private Sub UpdateAutomaticState(now As Long)"; + //BA.debugLineNum = 1001;BA.debugLine="Dim dayStart As Long = DateTime.DateParse(DateTim"; +_daystart = anywheresoftware.b4a.keywords.Common.DateTime.DateParse(anywheresoftware.b4a.keywords.Common.DateTime.Date(_now)); + //BA.debugLineNum = 1002;BA.debugLine="Dim minuteOfDay As Int = DateTime.GetHour(now) *"; +_minuteofday = (int) (anywheresoftware.b4a.keywords.Common.DateTime.GetHour(_now)*60+anywheresoftware.b4a.keywords.Common.DateTime.GetMinute(_now)); + //BA.debugLineNum = 1003;BA.debugLine="CurrentWorkDayStart = dayStart"; +_currentworkdaystart = _daystart; + //BA.debugLineNum = 1004;BA.debugLine="CurrentWorkDayKey = dayStart"; +_currentworkdaykey = _daystart; + //BA.debugLineNum = 1005;BA.debugLine="RegenerateAutoSegmentsForDay(dayStart, minuteOfDa"; +_regenerateautosegmentsforday(_daystart,_minuteofday); + //BA.debugLineNum = 1006;BA.debugLine="ProductiveElapsedMs = GetProductiveTotalForWorkDa"; +_productiveelapsedms = _getproductivetotalforworkday(_currentworkdaykey); + //BA.debugLineNum = 1007;BA.debugLine="SessionActive = minuteOfDay >= AutoStartMinutes A"; +_sessionactive = _minuteofday>=_autostartminutes && _minuteofday<_autoendminutes && _productiveelapsedms<_worklimitms; + //BA.debugLineNum = 1008;BA.debugLine="PauseActive = minuteOfDay >= AutoPauseStartMinute"; +_pauseactive = _minuteofday>=_autopausestartminutes && _minuteofday<_autopauseendminutes; + //BA.debugLineNum = 1009;BA.debugLine="If SessionActive And PauseActive = False Then"; +if (_sessionactive && _pauseactive==anywheresoftware.b4a.keywords.Common.False) { + //BA.debugLineNum = 1010;BA.debugLine="AutoState = \"recording\""; +mostCurrent._autostate = "recording"; + }else if(_sessionactive && _pauseactive) { + //BA.debugLineNum = 1012;BA.debugLine="AutoState = \"paused\""; +mostCurrent._autostate = "paused"; + }else { + //BA.debugLineNum = 1014;BA.debugLine="AutoState = \"stopped\""; +mostCurrent._autostate = "stopped"; + }; + //BA.debugLineNum = 1016;BA.debugLine="BtnStart.Text = IIf(SessionActive, Localization.T"; +mostCurrent._btnstart.setText(BA.ObjectToCharSequence(((_sessionactive) ? ((Object)(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"end"))) : ((Object)(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"start")))))); + //BA.debugLineNum = 1017;BA.debugLine="BtnPause.Text = IIf(PauseActive, Localization.T(\""; +mostCurrent._btnpause.setText(BA.ObjectToCharSequence(((_pauseactive) ? ((Object)(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"end_pause"))) : ((Object)(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"pause")))))); + //BA.debugLineNum = 1018;BA.debugLine="CurrentSegmentStart = now"; +_currentsegmentstart = _now; + //BA.debugLineNum = 1019;BA.debugLine="CurrentSegmentColor = GetCurrentWorkColor"; +_currentsegmentcolor = _getcurrentworkcolor(); + //BA.debugLineNum = 1020;BA.debugLine="myClock.ClearSegments"; +mostCurrent._myclock._clearsegments /*String*/ (); + //BA.debugLineNum = 1021;BA.debugLine="LoadWorkDaySegmentsIntoClock(CurrentWorkDayKey)"; +_loadworkdaysegmentsintoclock(_currentworkdaykey); + //BA.debugLineNum = 1022;BA.debugLine="myClock.ClearActiveSegment"; +mostCurrent._myclock._clearactivesegment /*String*/ (); + //BA.debugLineNum = 1023;BA.debugLine="UpdateElapsedLabel"; +_updateelapsedlabel(); + //BA.debugLineNum = 1024;BA.debugLine="UpdateMainControlState"; +_updatemaincontrolstate(); + //BA.debugLineNum = 1025;BA.debugLine="End Sub"; +return ""; +} +public static String _updateelapsedlabel() throws Exception{ +String _labelprefix = ""; +long _daystart = 0L; + //BA.debugLineNum = 546;BA.debugLine="Private Sub UpdateElapsedLabel"; + //BA.debugLineNum = 547;BA.debugLine="If lblElapsedTime.IsInitialized Then"; +if (mostCurrent._lblelapsedtime.IsInitialized()) { + //BA.debugLineNum = 548;BA.debugLine="Dim labelPrefix As String = Localization.T(\"work"; +_labelprefix = mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"work"); + //BA.debugLineNum = 549;BA.debugLine="Dim dayStart As Long = GetDisplayedWorkDayStart"; +_daystart = _getdisplayedworkdaystart(); + //BA.debugLineNum = 550;BA.debugLine="If dayStart > 0 Then labelPrefix = FormatDayShor"; +if (_daystart>0) { +_labelprefix = _formatdayshort(_daystart)+" "+mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"work");}; + //BA.debugLineNum = 551;BA.debugLine="lblElapsedTime.Text = labelPrefix & \": \" & Forma"; +mostCurrent._lblelapsedtime.setText(BA.ObjectToCharSequence(_labelprefix+": "+_formatelapsedtime(_getdisplayedproductiveelapsed(anywheresoftware.b4a.keywords.Common.DateTime.getNow())))); + }; + //BA.debugLineNum = 553;BA.debugLine="End Sub"; +return ""; +} +public static String _updatemaincontrolstate() throws Exception{ + //BA.debugLineNum = 555;BA.debugLine="Private Sub UpdateMainControlState"; + //BA.debugLineNum = 556;BA.debugLine="If BtnStart.IsInitialized = False Then Return"; +if (mostCurrent._btnstart.IsInitialized()==anywheresoftware.b4a.keywords.Common.False) { +if (true) return "";}; + //BA.debugLineNum = 557;BA.debugLine="BtnStart.Enabled = AutoModeEnabled = False"; +mostCurrent._btnstart.setEnabled(_automodeenabled==anywheresoftware.b4a.keywords.Common.False); + //BA.debugLineNum = 558;BA.debugLine="If SessionActive Or (AutoModeEnabled And AutoStat"; +if (_sessionactive || (_automodeenabled && (mostCurrent._autostate).equals("recording"))) { + //BA.debugLineNum = 559;BA.debugLine="BtnStart.Color = Colors.RGB(0, 150, 70)"; +mostCurrent._btnstart.setColor(anywheresoftware.b4a.keywords.Common.Colors.RGB((int) (0),(int) (150),(int) (70))); + //BA.debugLineNum = 560;BA.debugLine="BtnStart.TextColor = Colors.White"; +mostCurrent._btnstart.setTextColor(anywheresoftware.b4a.keywords.Common.Colors.White); + }else { + //BA.debugLineNum = 562;BA.debugLine="BtnStart.Color = Colors.RGB(190, 40, 40)"; +mostCurrent._btnstart.setColor(anywheresoftware.b4a.keywords.Common.Colors.RGB((int) (190),(int) (40),(int) (40))); + //BA.debugLineNum = 563;BA.debugLine="BtnStart.TextColor = Colors.White"; +mostCurrent._btnstart.setTextColor(anywheresoftware.b4a.keywords.Common.Colors.White); + }; + //BA.debugLineNum = 565;BA.debugLine="If AutoModeEnabled Then"; +if (_automodeenabled) { + //BA.debugLineNum = 566;BA.debugLine="BtnPause.Enabled = False"; +mostCurrent._btnpause.setEnabled(anywheresoftware.b4a.keywords.Common.False); + }else if(_sessionactive) { + //BA.debugLineNum = 568;BA.debugLine="BtnPause.Enabled = True"; +mostCurrent._btnpause.setEnabled(anywheresoftware.b4a.keywords.Common.True); + }; + //BA.debugLineNum = 570;BA.debugLine="If lblAutoStatus.IsInitialized Then"; +if (mostCurrent._lblautostatus.IsInitialized()) { + //BA.debugLineNum = 571;BA.debugLine="If AutoModeEnabled Then"; +if (_automodeenabled) { + //BA.debugLineNum = 572;BA.debugLine="Select AutoState"; +switch (BA.switchObjectToInt(mostCurrent._autostate,"recording","paused")) { +case 0: { + //BA.debugLineNum = 574;BA.debugLine="lblAutoStatus.Text = Localization.T(\"auto_rec"; +mostCurrent._lblautostatus.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"auto_recording"))); + break; } +case 1: { + //BA.debugLineNum = 576;BA.debugLine="lblAutoStatus.Text = Localization.T(\"auto_pau"; +mostCurrent._lblautostatus.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"auto_paused"))); + break; } +default: { + //BA.debugLineNum = 578;BA.debugLine="lblAutoStatus.Text = Localization.T(\"auto_sto"; +mostCurrent._lblautostatus.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"auto_stopped"))); + break; } +} +; + }else { + //BA.debugLineNum = 581;BA.debugLine="lblAutoStatus.Text = Localization.T(\"manual_mod"; +mostCurrent._lblautostatus.setText(BA.ObjectToCharSequence(mostCurrent._localization._t /*String*/ (mostCurrent.activityBA,"manual_mode"))); + }; + }; + //BA.debugLineNum = 584;BA.debugLine="End Sub"; +return ""; +} +} diff --git a/Objects/src/b4a/example/starter.java b/Objects/src/b4a/example/starter.java index d724ce3..7b7d1fa 100644 --- a/Objects/src/b4a/example/starter.java +++ b/Objects/src/b4a/example/starter.java @@ -14,7 +14,7 @@ public class starter extends android.app.Service{ android.content.Intent in = new android.content.Intent(context, starter.class); if (intent != null) in.putExtra("b4a_internal_intent", intent); - ServiceHelper.StarterHelper.startServiceFromReceiver (context, in, true, anywheresoftware.b4a.ShellBA.class); + ServiceHelper.StarterHelper.startServiceFromReceiver (context, in, true, BA.class); } } @@ -29,7 +29,7 @@ public class starter extends android.app.Service{ super.onCreate(); mostCurrent = this; if (processBA == null) { - processBA = new anywheresoftware.b4a.ShellBA(this, null, null, "b4a.example", "b4a.example.starter"); + processBA = new BA(this, null, null, "b4a.example", "b4a.example.starter"); if (BA.isShellModeRuntimeCheck(processBA)) { processBA.raiseEvent2(null, true, "SHELL", false); } @@ -135,63 +135,41 @@ public class starter extends android.app.Service{ @Override public android.os.IBinder onBind(android.content.Intent intent) { return null; - } -public anywheresoftware.b4a.keywords.Common __c = null; + }public anywheresoftware.b4a.keywords.Common __c = null; public b4a.example.main _main = null; +public b4a.example.localization _localization = null; public static boolean _application_error(anywheresoftware.b4a.objects.B4AException _error,String _stacktrace) throws Exception{ -RDebugUtils.currentModule="starter"; -if (Debug.shouldDelegate(processBA, "application_error", false)) - {return ((Boolean) Debug.delegate(processBA, "application_error", new Object[] {_error,_stacktrace}));} -RDebugUtils.currentLine=1179648; - //BA.debugLineNum = 1179648;BA.debugLine="Sub Application_Error (Error As Exception, StackTr"; -RDebugUtils.currentLine=1179649; - //BA.debugLineNum = 1179649;BA.debugLine="Return True"; + //BA.debugLineNum = 27;BA.debugLine="Sub Application_Error (Error As Exception, StackTr"; + //BA.debugLineNum = 28;BA.debugLine="Return True"; if (true) return anywheresoftware.b4a.keywords.Common.True; -RDebugUtils.currentLine=1179650; - //BA.debugLineNum = 1179650;BA.debugLine="End Sub"; + //BA.debugLineNum = 29;BA.debugLine="End Sub"; return false; } +public static String _process_globals() throws Exception{ + //BA.debugLineNum = 6;BA.debugLine="Sub Process_Globals"; + //BA.debugLineNum = 10;BA.debugLine="End Sub"; +return ""; +} public static String _service_create() throws Exception{ -RDebugUtils.currentModule="starter"; -if (Debug.shouldDelegate(processBA, "service_create", false)) - {return ((String) Debug.delegate(processBA, "service_create", null));} -RDebugUtils.currentLine=983040; - //BA.debugLineNum = 983040;BA.debugLine="Sub Service_Create"; -RDebugUtils.currentLine=983044; - //BA.debugLineNum = 983044;BA.debugLine="End Sub"; + //BA.debugLineNum = 12;BA.debugLine="Sub Service_Create"; + //BA.debugLineNum = 16;BA.debugLine="End Sub"; return ""; } public static String _service_destroy() throws Exception{ -RDebugUtils.currentModule="starter"; -if (Debug.shouldDelegate(processBA, "service_destroy", false)) - {return ((String) Debug.delegate(processBA, "service_destroy", null));} -RDebugUtils.currentLine=1245184; - //BA.debugLineNum = 1245184;BA.debugLine="Sub Service_Destroy"; -RDebugUtils.currentLine=1245186; - //BA.debugLineNum = 1245186;BA.debugLine="End Sub"; + //BA.debugLineNum = 31;BA.debugLine="Sub Service_Destroy"; + //BA.debugLineNum = 33;BA.debugLine="End Sub"; return ""; } public static String _service_start(anywheresoftware.b4a.objects.IntentWrapper _startingintent) throws Exception{ -RDebugUtils.currentModule="starter"; -if (Debug.shouldDelegate(processBA, "service_start", false)) - {return ((String) Debug.delegate(processBA, "service_start", new Object[] {_startingintent}));} -RDebugUtils.currentLine=1048576; - //BA.debugLineNum = 1048576;BA.debugLine="Sub Service_Start (StartingIntent As Intent)"; -RDebugUtils.currentLine=1048577; - //BA.debugLineNum = 1048577;BA.debugLine="Service.StopAutomaticForeground 'Starter service"; + //BA.debugLineNum = 18;BA.debugLine="Sub Service_Start (StartingIntent As Intent)"; + //BA.debugLineNum = 19;BA.debugLine="Service.StopAutomaticForeground 'Starter service"; mostCurrent._service.StopAutomaticForeground(); -RDebugUtils.currentLine=1048578; - //BA.debugLineNum = 1048578;BA.debugLine="End Sub"; + //BA.debugLineNum = 20;BA.debugLine="End Sub"; return ""; } public static String _service_taskremoved() throws Exception{ -RDebugUtils.currentModule="starter"; -if (Debug.shouldDelegate(processBA, "service_taskremoved", false)) - {return ((String) Debug.delegate(processBA, "service_taskremoved", null));} -RDebugUtils.currentLine=1114112; - //BA.debugLineNum = 1114112;BA.debugLine="Sub Service_TaskRemoved"; -RDebugUtils.currentLine=1114114; - //BA.debugLineNum = 1114114;BA.debugLine="End Sub"; + //BA.debugLineNum = 22;BA.debugLine="Sub Service_TaskRemoved"; + //BA.debugLineNum = 24;BA.debugLine="End Sub"; return ""; } -} \ No newline at end of file +} diff --git a/README.md b/README.md index c136f56..27d9e36 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,25 @@ -# b4a_orologio_marcatempo -orologio analogico con fasce che indicano il trascorrere di intervalli di tempo riempiendosi nel tempo (segmenti d'arco) predefiniti, per ora due : mattino e pomeriggio +# Overtime Guard + +Minimal B4A Android app for tracking work time, breaks, and overtime without project-based time sheets. + +## Current features + +- Large analog clock with filled pie slices for work, break, and overtime +- Manual `Start/End` and `Pause/End Pause` workflow +- Automatic timezone-aware clock display based on the device locale/time settings +- Daily stats grouped by date +- Config page for preset workday intervals +- Automatic/manual state indicator +- Daily persistence with restore after app restart +- Localization with automatic device-language selection + - English + - Italian + - French + - German + - Spanish + +## Project + +- Platform: B4A / Android +- Main project file: `b4a_orologio_marcatempo.b4a` +- Custom modules: `AnalogClock.bas`, `Starter.bas`, `Localization.bas` diff --git a/b4a_orologio_marcatempo.b4a b/b4a_orologio_marcatempo.b4a index aa6f889..96c386e 100644 --- a/b4a_orologio_marcatempo.b4a +++ b/b4a_orologio_marcatempo.b4a @@ -1,19 +1,21 @@ -Build1=Default,b4a.example +Build1=Default,b4a.example File1=Main_Layout.bal FileGroup1=Default Group Group=Default Group Library1=core Library2=xui +Library3=javaobject ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~AddManifestText(~\n~~\n~)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~'End of default text.~\n~ Module1=AnalogClock Module2=Starter +Module3=Localization NumberOfFiles=1 -NumberOfLibraries=2 -NumberOfModules=2 +NumberOfLibraries=3 +NumberOfModules=3 Version=13 @EndOfDesignText@ #Region Project Attributes - #ApplicationLabel: Orologio Marcatempo + #ApplicationLabel: Overtime Guard #VersionCode: 1 #VersionName: 1.0 #CanInstallToExternalStorage: False @@ -21,142 +23,294 @@ Version=13 #Region Activity Attributes #FullScreen: False - #IncludeTitle: True + #IncludeTitle: False #End Region Sub Process_Globals - Private Timer1 As Timer - Private Running As Boolean = False - Private StartTime As Long = 0 - Private ElapsedTime As Long = 0 - + Private Timer1 As Timer + Private FirstWorkLimitMs As Long + Private WorkLimitMs As Long + Private OvertimeLimitMs As Long + Private MaxProductiveMs As Long + Private StatsFileName As String + Private StateFileName As String + Private AutoConfigFileName As String + Private MaxStoredDays As Int End Sub Sub Globals - Private Canvas1 As Canvas - Private Panel1 As Panel - Private BtnStart As Button - Private BtnPause As Button - Private BtnReset As Button - Private BtnSync As Button - + Private BtnStart As Button + Private BtnPause As Button + Private BtnReset As Button + Private BtnSync As Button + Private BtnStats As Label + Private BtnStatsClose As Button + Private BtnConfig As Label + Private BtnConfigClose As Button + Private BtnConfigSave As Button + Private BtnConfigReset As Button + Private BtnClearToday As Button + Private BtnBackground As Label Private lblElapsedTime As Label + Private lblAutoStatus As Label Private pnlClock As Panel - Private Timer1 As Timer + Private pnlStats As Panel + Private pnlConfig As Panel + Private svStats As ScrollView + Private txtCfgStart As EditText + Private txtCfgPauseStart As EditText + Private txtCfgPauseEnd As EditText + Private txtCfgEnd As EditText Private myClock As AnalogClock - Log("lblElapsedTime nel Sub Globals: " & lblElapsedTime.IsInitialized) -End Sub -'Sub Activity_Create(FirstTime As Boolean) -' Activity.LoadLayout("Main_Layout") 'Layout file to be created in the designer. -' Log("Layout caricato correttamente.") -' -' ' Impostazioni Timer -' Log("Panel1 inizializzato: " & Panel1.IsInitialized) -' Log("Numero di viste in Panel1: " & Panel1.NumberOfViews) -' -' ' Sincronizza inizialmente -' SynchronizeClock -'End Sub + Private SessionActive As Boolean + Private PauseActive As Boolean + Private ProductiveElapsedMs As Long + Private CurrentSegmentStart As Long + Private CurrentSegmentColor As Int + Private StatsRows As List + Private WorkMorningColor As Int + Private CurrentWorkDayStart As Long + Private CurrentWorkDayKey As Long + Private AutoModeEnabled As Boolean + Private AutoStartMinutes As Int + Private AutoPauseStartMinutes As Int + Private AutoPauseEndMinutes As Int + Private AutoEndMinutes As Int + Private AutoState As String + Private LastActiveStateSaveAt As Long +End Sub Sub Activity_Create(FirstTime As Boolean) + Localization.Initialize Activity.LoadLayout("Main_Layout") - Log("Layout caricato correttamente.") + Activity.Title = Localization.T("app_title") + Log("Layout loaded successfully.") + ResizeClockPanel - 'Inizializza l'orologio - myClock.Initialize(pnlClock, 50) ' L'orologio avrà un diametro pari al 50% della larghezza del pannello + FirstWorkLimitMs = 4 * DateTime.TicksPerHour + WorkLimitMs = 8 * DateTime.TicksPerHour + OvertimeLimitMs = DateTime.TicksPerHour + MaxProductiveMs = WorkLimitMs + OvertimeLimitMs + WorkMorningColor = Colors.RGB(0, 190, 255) + StatsFileName = "work_segments.txt" + StateFileName = "active_state.txt" + AutoConfigFileName = "auto_config.txt" + MaxStoredDays = 62 - ' Imposta il timer per aggiornare l'orologio - Timer1.Initialize("Timer1", 1000) ' Aggiornamento ogni secondo + myClock.Initialize(pnlClock, 96) + myClock.SetBaseDuration(12 * DateTime.TicksPerHour) + + Timer1.Initialize("Timer1", 1000) Timer1.Enabled = True -' ' Cerca tra tutte le viste dell'Activity -' For i = 0 To Activity.NumberOfViews - 1 -' Dim v As View = Activity.GetView(i) -' Log("Vista trovata: " & v) -' -' ' Controlla se la vista è un Label -' If v Is Label Then -' Dim tempLabel As Label = v -' Log("Label trovato: " & tempLabel.Text) -' If tempLabel.Text = "Tempo: 00:00:00" Then ' Verifica basata sul testo iniziale -' lblElapsedTime = tempLabel -' Log("lblElapsedTime assegnato correttamente!") -' End If -' End If -' Next + + StatsRows.Initialize + LoadStatsRows + HideLegacyButtons + CreateStatsButton + CreateStatsPage + CreateConfigButton + CreateConfigPage + CreateBackgroundButton + CreateAutoStatusLabel + LayoutMainButtons + LoadAutoConfig + ResetSessionState(False) + If AutoModeEnabled Then + UpdateAutomaticState(DateTime.Now) + Else + RestoreActiveState + If SessionActive = False Then RestoreLastClosedDayState + End If End Sub - - - Sub Timer1_Tick - myClock.DrawClock + If AutoModeEnabled Then + UpdateAutomaticState(DateTime.Now) + Return + End If + If SessionActive Then + Dim now As Long = DateTime.Now + If PauseActive Then + ProcessActivePauseSegment(now) + If SessionActive = False Then Return + myClock.SetActiveSegment(now - CurrentSegmentStart, Colors.Yellow, True) + Else + ProcessActiveWorkSegment(now) + If SessionActive Then + myClock.SetActiveSegment(now - CurrentSegmentStart, CurrentSegmentColor, False) + End If + End If + If SessionActive And now - LastActiveStateSaveAt >= 30 * DateTime.TicksPerSecond Then SaveActiveState + UpdateElapsedLabel + Else + myClock.DrawClock + End If End Sub Sub Activity_Resume + If AutoModeEnabled Then + UpdateAutomaticState(DateTime.Now) + Else + RestoreActiveState + If SessionActive = False Then RestoreLastClosedDayState + End If +End Sub +Private Sub ResizeClockPanel + Dim clockSize As Int = Activity.Width + pnlClock.SetLayout(0, 0, clockSize, clockSize) +End Sub + +Private Sub CreateStatsButton + BtnStats.Initialize("BtnStats") + BtnStats.Text = Localization.T("stats") + Activity.AddView(BtnStats, BtnReset.Left, BtnReset.Top, BtnReset.Width, BtnReset.Height) +End Sub + +Private Sub CreateStatsPage + pnlStats.Initialize("") + pnlStats.Color = Colors.White + pnlStats.Visible = False + Activity.AddView(pnlStats, 0, 0, Activity.Width, Activity.Height) + + Dim title As Label + title.Initialize("") + title.Text = Localization.T("statistics") + title.TextSize = 22 + title.TextColor = Colors.Black + title.Gravity = Gravity.CENTER_VERTICAL + pnlStats.AddView(title, 12dip, 8dip, Activity.Width - 110dip, 46dip) + + BtnStatsClose.Initialize("BtnStatsClose") + BtnStatsClose.Text = Localization.T("close") + pnlStats.AddView(BtnStatsClose, Activity.Width - 94dip, 8dip, 84dip, 46dip) + + svStats.Initialize(0) + pnlStats.AddView(svStats, 0, 62dip, Activity.Width, Activity.Height - 62dip) +End Sub + +Private Sub CreateConfigButton + BtnConfig.Initialize("BtnConfig") + BtnConfig.Text = Localization.T("config") + Activity.AddView(BtnConfig, BtnReset.Left, BtnReset.Top, BtnReset.Width, BtnReset.Height) +End Sub + +Private Sub CreateBackgroundButton + BtnBackground.Initialize("BtnBackground") + BtnBackground.Text = Localization.T("bg") + Activity.AddView(BtnBackground, BtnPause.Left, BtnPause.Top, BtnPause.Width, BtnPause.Height) +End Sub + +Private Sub LayoutMainButtons + Dim margin As Int = 8dip + Dim gap As Int = 8dip + Dim rowGap As Int = 8dip + Dim buttonHeight As Int = 48dip + Dim labelTop As Int = Activity.Height - 28dip + Dim row2Top As Int = labelTop - gap - buttonHeight + Dim row1Top As Int = row2Top - rowGap - buttonHeight + Dim wideButtonWidth As Int = (Activity.Width - (2 * margin) - gap) / 2 + Dim smallButtonWidth As Int = (Activity.Width - (2 * margin) - (2 * gap)) / 3 + + BtnStart.TextSize = 16 + BtnPause.TextSize = 16 + BtnBackground.TextSize = 15 + BtnStats.TextSize = 15 + BtnConfig.TextSize = 15 + StyleNeutralButton(BtnPause) + StyleNeutralButton(BtnBackground) + StyleNeutralButton(BtnStats) + StyleNeutralButton(BtnConfig) + + BtnStart.SetLayout(margin, row1Top, wideButtonWidth, buttonHeight) + BtnPause.SetLayout(margin + wideButtonWidth + gap, row1Top, wideButtonWidth, buttonHeight) + BtnBackground.SetLayout(margin, row2Top, smallButtonWidth, buttonHeight) + BtnStats.SetLayout(margin + smallButtonWidth + gap, row2Top, smallButtonWidth, buttonHeight) + BtnConfig.SetLayout(margin + (2 * (smallButtonWidth + gap)), row2Top, smallButtonWidth, buttonHeight) + If lblElapsedTime.IsInitialized Then lblElapsedTime.SetLayout(0, labelTop, Activity.Width * 0.58, 28dip) + If lblAutoStatus.IsInitialized Then lblAutoStatus.SetLayout(Activity.Width * 0.58, labelTop, Activity.Width * 0.42, 28dip) +End Sub + +Private Sub StyleNeutralButton(btn As Label) + If btn.IsInitialized = False Then Return + btn.Color = Colors.RGB(230, 230, 230) + btn.TextColor = Colors.Black + btn.Gravity = Gravity.CENTER +End Sub + +Private Sub CreateAutoStatusLabel + lblAutoStatus.Initialize("") + lblAutoStatus.TextColor = Colors.DarkGray + lblAutoStatus.TextSize = 13 + lblAutoStatus.Gravity = Bit.Or(Gravity.RIGHT, Gravity.CENTER_VERTICAL) + lblAutoStatus.Text = Localization.T("manual_mode") + Activity.AddView(lblAutoStatus, 0, 0, 10dip, 10dip) +End Sub + +Private Sub CreateConfigPage + pnlConfig.Initialize("") + pnlConfig.Color = Colors.White + pnlConfig.Visible = False + Activity.AddView(pnlConfig, 0, 0, Activity.Width, Activity.Height) + + Dim title As Label + title.Initialize("") + title.Text = Localization.T("config") + title.TextSize = 22 + title.TextColor = Colors.Black + title.Gravity = Gravity.CENTER_VERTICAL + pnlConfig.AddView(title, 12dip, 8dip, Activity.Width - 110dip, 46dip) + + BtnConfigClose.Initialize("BtnConfigClose") + BtnConfigClose.Text = Localization.T("close") + pnlConfig.AddView(BtnConfigClose, Activity.Width - 94dip, 8dip, 84dip, 46dip) + + Dim y As Int = 78dip + txtCfgStart = AddConfigField(Localization.T("work_start"), "08:30", y) + y = y + 58dip + txtCfgPauseStart = AddConfigField(Localization.T("pause_start"), "12:30", y) + y = y + 58dip + txtCfgPauseEnd = AddConfigField(Localization.T("pause_end"), "13:00", y) + y = y + 58dip + txtCfgEnd = AddConfigField(Localization.T("work_end"), "17:00", y) + + BtnConfigSave.Initialize("BtnConfigSave") + BtnConfigSave.Text = Localization.T("set_config") + pnlConfig.AddView(BtnConfigSave, 12dip, y + 70dip, (Activity.Width - 32dip) / 2, 48dip) + + BtnConfigReset.Initialize("BtnConfigReset") + BtnConfigReset.Text = Localization.T("reset_config") + pnlConfig.AddView(BtnConfigReset, 20dip + ((Activity.Width - 32dip) / 2), y + 70dip, (Activity.Width - 32dip) / 2, 48dip) + + BtnClearToday.Initialize("BtnClearToday") + BtnClearToday.Text = Localization.T("clear_today") + pnlConfig.AddView(BtnClearToday, 12dip, y + 126dip, Activity.Width - 24dip, 48dip) +End Sub + +Private Sub AddConfigField(LabelText As String, ValueText As String, y As Int) As EditText + Dim lbl As Label + lbl.Initialize("") + lbl.Text = LabelText + lbl.TextSize = 16 + lbl.TextColor = Colors.Black + lbl.Gravity = Gravity.CENTER_VERTICAL + pnlConfig.AddView(lbl, 12dip, y, 140dip, 46dip) + + Dim txt As EditText + txt.Initialize("") + txt.Text = ValueText + txt.TextSize = 18 + txt.SingleLine = True + txt.InputType = txt.INPUT_TYPE_NUMBERS + pnlConfig.AddView(txt, 160dip, y, Activity.Width - 172dip, 46dip) + Return txt End Sub Sub Activity_Pause (UserClosed As Boolean) - + If AutoModeEnabled = False Then SaveActiveState End Sub -' Disegna l'orologio -Sub DrawClock - Canvas1.Initialize(Activity) - Dim now As Long = DateTime.Now - Dim Hours As Int = DateTime.GetHour(now) Mod 12 - Dim Minutes As Int = DateTime.GetMinute(now) - Dim Seconds As Int = DateTime.GetSecond(now) - - ' Centro - Dim x As Int = Activity.Width / 2 - Dim y As Int = Activity.Height / 2 - Dim Radius As Int = Min(x, y) - 10 - - ' Cancella il canvas - Canvas1.DrawColor(Colors.White) - - ' Cerchio esterno - Canvas1.DrawCircle(x, y, Radius, Colors.Black, False, 5) - - ' Lancetta ore - Dim HourAngle As Float = -90 + Hours * 30 + Minutes / 2 - DrawHand(x, y, Radius * 0.5, HourAngle, 8, Colors.Black) - - ' Lancetta minuti - Dim MinuteAngle As Float = -90 + Minutes * 6 - DrawHand(x, y, Radius * 0.7, MinuteAngle, 5, Colors.Blue) - - ' Lancetta secondi - Dim SecondAngle As Float = -90 + Seconds * 6 - DrawHand(x, y, Radius * 0.9, SecondAngle, 2, Colors.Red) -End Sub - -Sub DrawHand(x As Int, y As Int, length As Float, angle As Float, width As Int, color As Int) - Dim endX As Float = x + length * CosD(angle) - Dim endY As Float = y + length * SinD(angle) - Canvas1.DrawLine(x, y, endX, endY, color, width) -End Sub - -' Aggiorna l'orologio e il cronometro -'Sub Timer1_Tick -' DrawClock -' If lblElapsedTime.IsInitialized Then -' DrawClock -' If Running Then -' ElapsedTime = DateTime.Now - StartTime -' lblElapsedTime.Text = "Tempo: " & FormatElapsedTime(ElapsedTime) -' End If -' Else -' Log("lblElapsedTime non è inizializzato.") -' End If -' -' -' -' -'End Sub - ' Formatta il tempo in HH:MM:SS Sub FormatElapsedTime(ms As Long) As String Dim seconds As Int = ms / 1000 @@ -169,34 +323,819 @@ End Sub ' Pulsante Start Sub BtnStart_Click - If Not(Running) Then - Running = True - - Timer1.Initialize("Timer1",1000) - - Timer1.Enabled = True - StartTime = DateTime.Now - ElapsedTime - End If + If AutoModeEnabled Then Return + If SessionActive = False Then + StartSession + Else + EndSession(DateTime.Now, False) + End If End Sub ' Pulsante Pause Sub BtnPause_Click - Running = False + If AutoModeEnabled Then Return + If SessionActive = False Then Return + Dim now As Long = DateTime.Now + If PauseActive Then + CloseCurrentSegment(now) + PauseActive = False + BtnPause.Text = Localization.T("pause") + CurrentSegmentStart = now + CurrentSegmentColor = GetCurrentWorkColor + myClock.SetActiveSegment(0, CurrentSegmentColor, False) + SaveActiveState + Log("Pause ended.") + Else + ProcessActiveWorkSegment(now) + If SessionActive = False Then Return + CloseCurrentSegment(now) + PauseActive = True + BtnPause.Text = Localization.T("end_pause") + CurrentSegmentStart = now + CurrentSegmentColor = Colors.Yellow + myClock.SetActiveSegment(0, CurrentSegmentColor, True) + SaveActiveState + Log("Pause started.") + End If End Sub ' Pulsante Reset Sub BtnReset_Click - Running = False - ElapsedTime = 0 - lblElapsedTime.Text = "Tempo: 00:00:00" + ShowStatsPage End Sub ' Pulsante Sync Sub BtnSync_Click - SynchronizeClock + ShowConfigPage +End Sub + +Sub BtnStats_Click + ShowStatsPage +End Sub + +Sub BtnStatsClose_Click + ShowMainPage +End Sub + +Sub BtnConfig_Click + ShowConfigPage +End Sub + +Sub BtnConfigClose_Click + ShowMainPage +End Sub + +Sub BtnConfigSave_Click + SetAutomaticConfig +End Sub + +Sub BtnConfigReset_Click + ResetAutomaticConfig +End Sub + +Sub BtnClearToday_Click + ClearDisplayedDay +End Sub + +Sub BtnBackground_Click + SaveActiveState + Dim home As Intent + home.Initialize("android.intent.action.MAIN", "") + home.AddCategory("android.intent.category.HOME") + home.Flags = 268435456 + StartActivity(home) End Sub ' Sincronizza l'orologio Sub SynchronizeClock - DrawClock + myClock.DrawClock +End Sub + +Private Sub StartSession + CurrentWorkDayStart = GetWorkDayStart(DateTime.Now) + CurrentWorkDayKey = CurrentWorkDayStart + ProductiveElapsedMs = GetProductiveTotalForWorkDay(CurrentWorkDayKey) + If ProductiveElapsedMs >= MaxProductiveMs Then + ToastMessageShow(Localization.T("limit_reached"), False) + UpdateElapsedLabel + Log("Start ignored: 9-hour limit already reached.") + Return + End If + SessionActive = True + PauseActive = False + CurrentSegmentStart = DateTime.Now + CurrentSegmentColor = GetCurrentWorkColor + BtnStart.Text = Localization.T("end") + BtnPause.Text = Localization.T("pause") + BtnPause.Enabled = True + UpdateMainControlState + myClock.ClearSegments + LoadWorkDaySegmentsIntoClock(CurrentWorkDayKey) + myClock.SetActiveSegment(0, CurrentSegmentColor, False) + UpdateElapsedLabel + SaveActiveState + Log("Workday started.") +End Sub + +Private Sub EndSession(FinalTime As Long, Automatic As Boolean) + If SessionActive Then CloseCurrentSegment(FinalTime) + SessionActive = False + PauseActive = False + BtnStart.Text = Localization.T("start") + BtnPause.Text = Localization.T("pause") + BtnPause.Enabled = False + UpdateMainControlState + myClock.ClearActiveSegment + UpdateElapsedLabel + If File.Exists(File.DirInternal, StateFileName) Then File.Delete(File.DirInternal, StateFileName) + If Automatic Then + Log("Workday stopped automatically.") + Else + Log("Workday closed manually.") + End If +End Sub + +Private Sub ResetSessionState(ClearClock As Boolean) + SessionActive = False + PauseActive = False + ProductiveElapsedMs = 0 + CurrentSegmentStart = 0 + CurrentWorkDayStart = 0 + CurrentWorkDayKey = 0 + CurrentSegmentColor = WorkMorningColor + LastActiveStateSaveAt = 0 + BtnStart.Text = Localization.T("start") + BtnPause.Text = Localization.T("pause") + BtnPause.Enabled = False + UpdateMainControlState + If ClearClock Then myClock.ClearSegments + myClock.ClearActiveSegment + UpdateElapsedLabel +End Sub + +Private Sub ProcessActiveWorkSegment(now As Long) + Do While SessionActive And PauseActive = False + Dim midnight As Long = GetNextMidnight(CurrentSegmentStart) + If now >= midnight Then + EndSession(midnight, True) + Log("Workday stopped automatically: midnight reached.") + Return + End If + Dim segmentDuration As Long = now - CurrentSegmentStart + If segmentDuration <= 0 Then Return + Dim nextBoundary As Long = GetNextWorkBoundary + Dim durationToBoundary As Long = nextBoundary - ProductiveElapsedMs + If segmentDuration < durationToBoundary Then + CurrentSegmentColor = GetCurrentWorkColor + Return + End If + + RecordSegment(CurrentSegmentStart, durationToBoundary, GetCurrentWorkColor, False) + ProductiveElapsedMs = ProductiveElapsedMs + durationToBoundary + CurrentSegmentStart = CurrentSegmentStart + durationToBoundary + CurrentSegmentColor = GetCurrentWorkColor + + If ProductiveElapsedMs >= MaxProductiveMs Then + EndSession(CurrentSegmentStart, True) + Return + End If + Loop +End Sub + +Private Sub CloseCurrentSegment(FinalTime As Long) + Dim duration As Long = FinalTime - CurrentSegmentStart + If duration <= 0 Then Return + If PauseActive Then + RecordSegment(CurrentSegmentStart, duration, Colors.Yellow, True) + Else + RecordSegment(CurrentSegmentStart, duration, GetCurrentWorkColor, False) + ProductiveElapsedMs = ProductiveElapsedMs + duration + End If +End Sub + +Private Sub RecordSegment(SegmentStart As Long, Duration As Long, SegmentColor As Int, IsPauseSegment As Boolean) + myClock.AddSegment(Duration, SegmentColor, IsPauseSegment) + AddStatsSegment(CurrentWorkDayStart, CurrentWorkDayKey, SegmentStart, Duration, GetSegmentCategory(SegmentColor, IsPauseSegment), "manual") +End Sub + +Private Sub AddStatsSegment(DayStart As Long, DayKey As Long, SegmentStart As Long, Duration As Long, Category As String, Source As String) + Dim row As Map + row.Initialize + row.Put("dayStart", DayStart) + row.Put("dayKey", DayKey) + row.Put("segmentStart", SegmentStart) + row.Put("date", DateTime.Date(DayStart)) + row.Put("duration", Duration) + row.Put("category", Category) + row.Put("source", Source) + StatsRows.Add(row) + TrimStatsRows + SaveStatsRows +End Sub + +Private Sub ProcessActivePauseSegment(now As Long) + Dim midnight As Long = GetNextMidnight(CurrentSegmentStart) + If now >= midnight Then + EndSession(midnight, True) + Log("Workday stopped automatically during pause: midnight reached.") + End If +End Sub + +Private Sub GetSegmentCategory(SegmentColor As Int, IsPauseSegment As Boolean) As String + If IsPauseSegment Then Return "pausa" + If SegmentColor = Colors.Red Then Return "straordinario" + Return "lavoro" +End Sub + +Private Sub GetCurrentWorkColor As Int + If ProductiveElapsedMs < FirstWorkLimitMs Then Return WorkMorningColor + If ProductiveElapsedMs < WorkLimitMs Then Return Colors.Green + Return Colors.Red +End Sub + +Private Sub GetNextWorkBoundary As Long + If ProductiveElapsedMs < FirstWorkLimitMs Then Return FirstWorkLimitMs + If ProductiveElapsedMs < WorkLimitMs Then Return WorkLimitMs + Return MaxProductiveMs +End Sub + +Private Sub UpdateElapsedLabel + If lblElapsedTime.IsInitialized Then + Dim labelPrefix As String = Localization.T("work") + Dim dayStart As Long = GetDisplayedWorkDayStart + If dayStart > 0 Then labelPrefix = FormatDayShort(dayStart) & " " & Localization.T("work") + lblElapsedTime.Text = labelPrefix & ": " & FormatElapsedTime(GetDisplayedProductiveElapsed(DateTime.Now)) + End If +End Sub + +Private Sub UpdateMainControlState + If BtnStart.IsInitialized = False Then Return + BtnStart.Enabled = AutoModeEnabled = False + If SessionActive Or (AutoModeEnabled And AutoState = "recording") Then + BtnStart.Color = Colors.RGB(0, 150, 70) + BtnStart.TextColor = Colors.White + Else + BtnStart.Color = Colors.RGB(190, 40, 40) + BtnStart.TextColor = Colors.White + End If + If AutoModeEnabled Then + BtnPause.Enabled = False + Else If SessionActive Then + BtnPause.Enabled = True + End If + If lblAutoStatus.IsInitialized Then + If AutoModeEnabled Then + Select AutoState + Case "recording" + lblAutoStatus.Text = Localization.T("auto_recording") + Case "paused" + lblAutoStatus.Text = Localization.T("auto_paused") + Case Else + lblAutoStatus.Text = Localization.T("auto_stopped") + End Select + Else + lblAutoStatus.Text = Localization.T("manual_mode") + End If + End If +End Sub + +Private Sub GetDisplayedWorkDayStart As Long + If CurrentWorkDayStart > 0 Then Return CurrentWorkDayStart + Return GetLatestWorkDayStart +End Sub + +Private Sub FormatDayShort(ticks As Long) As String + Return NumberFormat(DateTime.GetDayOfMonth(ticks), 2, 0) & "/" & NumberFormat(DateTime.GetMonth(ticks), 2, 0) +End Sub + +Private Sub GetDisplayedProductiveElapsed(now As Long) As Long + Dim total As Long = ProductiveElapsedMs + If SessionActive And PauseActive = False Then total = total + Max(0, now - CurrentSegmentStart) + Return total +End Sub + +Private Sub GetProductiveTotalForWorkDay(DayKey As Long) As Long + Dim total As Long = 0 + For Each row As Map In StatsRows + If row.Get("dayKey") = DayKey Then + Dim category As String = row.Get("category") + If category = "lavoro" Or category = "straordinario" Then total = total + row.Get("duration") + End If + Next + Return total +End Sub + +Private Sub LoadWorkDaySegmentsIntoClock(DayKey As Long) + Dim productiveCursor As Long = 0 + For Each row As Map In StatsRows + If row.Get("dayKey") = DayKey Then + Dim category As String = row.Get("category") + Dim duration As Long = row.Get("duration") + If category = "pausa" Then + myClock.AddSegment(duration, Colors.Yellow, True) + Else + AddDisplayProductiveSegment(duration, productiveCursor) + productiveCursor = productiveCursor + duration + End If + End If + Next +End Sub + +Private Sub AddDisplayProductiveSegment(Duration As Long, StartProductiveMs As Long) + Dim remaining As Long = Duration + Dim cursor As Long = StartProductiveMs + Do While remaining > 0 + Dim segmentColor As Int + Dim boundary As Long + If cursor < FirstWorkLimitMs Then + segmentColor = WorkMorningColor + boundary = FirstWorkLimitMs + Else If cursor < WorkLimitMs Then + segmentColor = Colors.Green + boundary = WorkLimitMs + Else + segmentColor = Colors.Red + boundary = MaxProductiveMs + End If + Dim chunk As Long = remaining + If cursor < boundary Then chunk = Min(chunk, boundary - cursor) + myClock.AddSegment(chunk, segmentColor, False) + remaining = remaining - chunk + cursor = cursor + chunk + Loop +End Sub + +Private Sub GetWorkDayStart(now As Long) As Long + Dim latestDayStart As Long = 0 + Dim today As String = DateTime.Date(now) + For Each row As Map In StatsRows + Dim dayStart As Long = row.Get("dayStart") + If dayStart > latestDayStart And DateTime.Date(dayStart) = today Then + latestDayStart = dayStart + End If + Next + If latestDayStart > 0 Then Return latestDayStart + Return now +End Sub + +Private Sub GetLatestWorkDayStart As Long + Dim latestDayStart As Long = 0 + For Each row As Map In StatsRows + Dim dayStart As Long = row.Get("dayStart") + If dayStart > latestDayStart Then latestDayStart = dayStart + Next + Return latestDayStart +End Sub + +Private Sub GetNextMidnight(ticks As Long) As Long + Return DateTime.DateParse(DateTime.Date(ticks)) + DateTime.TicksPerDay +End Sub + +Private Sub LoadStatsRows + StatsRows.Clear + If File.Exists(File.DirInternal, StatsFileName) = False Then Return + Dim lines As List = File.ReadList(File.DirInternal, StatsFileName) + For Each line As String In lines + If line.Trim.Length > 0 Then + Dim parts() As String = Regex.Split("\|", line) + If parts.Length >= 4 Then + Dim row As Map + row.Initialize + Dim dayStart As Long = parts(0) + Dim segmentStart As Long = parts(1) + Dim duration As Long = parts(2) + row.Put("dayStart", dayStart) + row.Put("dayKey", dayStart) + row.Put("segmentStart", segmentStart) + row.Put("date", DateTime.Date(dayStart)) + row.Put("duration", duration) + row.Put("category", parts(3)) + If parts.Length >= 5 Then + row.Put("source", parts(4)) + Else + row.Put("source", "manual") + End If + StatsRows.Add(row) + End If + End If + Next + TrimStatsRows + SaveStatsRows +End Sub + +Private Sub SaveStatsRows + Dim lines As List + lines.Initialize + For Each row As Map In StatsRows + Dim source As String = "manual" + If row.ContainsKey("source") Then source = row.Get("source") + lines.Add(row.Get("dayStart") & "|" & row.Get("segmentStart") & "|" & row.Get("duration") & "|" & row.Get("category") & "|" & source) + Next + File.WriteList(File.DirInternal, StatsFileName, lines) +End Sub + +Private Sub TrimStatsRows + Dim retention As Long = MaxStoredDays + retention = retention * DateTime.TicksPerDay + Dim cutoff As Long = DateTime.Now - retention + Dim kept As List + kept.Initialize + For Each row As Map In StatsRows + Dim dayStart As Long = row.Get("dayStart") + If dayStart >= cutoff Then kept.Add(row) + Next + StatsRows.Clear + StatsRows.AddAll(kept) +End Sub + +Private Sub SaveActiveState + If SessionActive = False Then + If File.Exists(File.DirInternal, StateFileName) Then File.Delete(File.DirInternal, StateFileName) + LastActiveStateSaveAt = 0 + Return + End If + Dim lines As List + lines.Initialize + lines.Add(CurrentWorkDayStart) + lines.Add(CurrentSegmentStart) + lines.Add(ProductiveElapsedMs) + lines.Add(PauseActive) + lines.Add(CurrentSegmentColor) + File.WriteList(File.DirInternal, StateFileName, lines) + LastActiveStateSaveAt = DateTime.Now +End Sub + +Private Sub RestoreActiveState + If SessionActive Then Return + If File.Exists(File.DirInternal, StateFileName) = False Then Return + Dim lines As List = File.ReadList(File.DirInternal, StateFileName) + If lines.Size < 5 Then Return + + CurrentWorkDayStart = lines.Get(0) + CurrentWorkDayKey = CurrentWorkDayStart + CurrentSegmentStart = lines.Get(1) + ProductiveElapsedMs = lines.Get(2) + ProductiveElapsedMs = Max(ProductiveElapsedMs, GetProductiveTotalForWorkDay(CurrentWorkDayKey)) + PauseActive = lines.Get(3) + CurrentSegmentColor = lines.Get(4) + + Dim now As Long = DateTime.Now + If now >= GetNextMidnight(CurrentSegmentStart) Then + SessionActive = True + EndSession(GetNextMidnight(CurrentSegmentStart), True) + If File.Exists(File.DirInternal, StateFileName) Then File.Delete(File.DirInternal, StateFileName) + Return + End If + If ProductiveElapsedMs >= MaxProductiveMs Then + If File.Exists(File.DirInternal, StateFileName) Then File.Delete(File.DirInternal, StateFileName) + Return + End If + + SessionActive = True + BtnStart.Text = Localization.T("end") + If PauseActive Then + BtnPause.Text = Localization.T("end_pause") + BtnPause.Enabled = True + Else + BtnPause.Text = Localization.T("pause") + BtnPause.Enabled = True + CurrentSegmentColor = GetCurrentWorkColor + End If + UpdateMainControlState + myClock.ClearSegments + LoadWorkDaySegmentsIntoClock(CurrentWorkDayKey) + myClock.SetActiveSegment(Max(0, now - CurrentSegmentStart), CurrentSegmentColor, PauseActive) + UpdateElapsedLabel +End Sub + +Private Sub RestoreLastClosedDayState + If SessionActive Then Return + Dim latestDayStart As Long = GetLatestWorkDayStart + If latestDayStart = 0 Then Return + If CurrentWorkDayStart = latestDayStart And ProductiveElapsedMs > 0 Then Return + CurrentWorkDayStart = latestDayStart + CurrentWorkDayKey = latestDayStart + ProductiveElapsedMs = GetProductiveTotalForWorkDay(CurrentWorkDayKey) + CurrentSegmentStart = 0 + PauseActive = False + CurrentSegmentColor = GetCurrentWorkColor + myClock.ClearSegments + LoadWorkDaySegmentsIntoClock(CurrentWorkDayKey) + myClock.ClearActiveSegment + UpdateElapsedLabel +End Sub + +Private Sub ShowStatsPage + BuildStatsTable + SetMainControlsVisible(False) + pnlStats.Visible = True + pnlConfig.Visible = False + pnlStats.BringToFront +End Sub + +Private Sub SetMainControlsVisible(Visible As Boolean) + For i = 0 To Activity.NumberOfViews - 1 + Dim v As View = Activity.GetView(i) + v.Visible = Visible + Next + HideLegacyButtons + pnlStats.Visible = False + pnlConfig.Visible = False +End Sub + +Private Sub HideLegacyButtons + If BtnReset.IsInitialized Then + BtnReset.Enabled = False + BtnReset.Visible = False + BtnReset.SetLayout(-200dip, -200dip, 1dip, 1dip) + End If + If BtnSync.IsInitialized Then + BtnSync.Enabled = False + BtnSync.Visible = False + BtnSync.SetLayout(-200dip, -200dip, 1dip, 1dip) + End If + For i = Activity.NumberOfViews - 1 To 0 Step -1 + Dim v As View = Activity.GetView(i) + If v Is Button Then + Dim legacy As Button = v + If legacy.Text = "Sync" Or legacy.Text = "Reset" Then + legacy.RemoveView + End If + End If + Next +End Sub + +Private Sub ShowConfigPage + SetMainControlsVisible(False) + pnlStats.Visible = False + pnlConfig.Visible = True + pnlConfig.BringToFront +End Sub + +Private Sub ShowMainPage + SetMainControlsVisible(True) + pnlStats.Visible = False + pnlConfig.Visible = False +End Sub + +Private Sub BuildStatsTable + svStats.Panel.RemoveAllViews + Dim y As Int = 0 + AddStatsRow(y, Localization.T("date"), Localization.T("work"), Localization.T("pause_col"), Localization.T("overtime"), True) + y = y + 34dip + + Dim totalWork As Long = 0 + Dim totalPause As Long = 0 + Dim totalOvertime As Long = 0 + Dim dailyRows As Map + dailyRows.Initialize + For Each row As Map In StatsRows + AddStatsDuration(dailyRows, row.Get("date"), row.Get("category"), row.Get("duration")) + Next + If SessionActive Then + Dim activeDuration As Long = Max(0, DateTime.Now - CurrentSegmentStart) + If activeDuration > 0 Then + AddStatsDuration(dailyRows, DateTime.Date(CurrentWorkDayStart), GetSegmentCategory(CurrentSegmentColor, PauseActive), activeDuration) + End If + End If + + For Each dateText As String In dailyRows.Keys + Dim dailyTotals As Map = dailyRows.Get(dateText) + totalWork = totalWork + dailyTotals.Get("lavoro") + totalPause = totalPause + dailyTotals.Get("pausa") + totalOvertime = totalOvertime + dailyTotals.Get("straordinario") + Next + + For Each dateText As String In dailyRows.Keys + Dim dailyTotals As Map = dailyRows.Get(dateText) + AddStatsRow(y, dateText, FormatElapsedTime(dailyTotals.Get("lavoro")), FormatElapsedTime(dailyTotals.Get("pausa")), FormatElapsedTime(dailyTotals.Get("straordinario")), False) + y = y + 30dip + Next + + y = y + 8dip + AddStatsRow(y, Localization.T("totals"), FormatElapsedTime(totalWork), FormatElapsedTime(totalPause), FormatElapsedTime(totalOvertime), True) + y = y + 40dip + svStats.Panel.Height = Max(y, svStats.Height + 1dip) +End Sub + +Private Sub AddStatsDuration(dailyRows As Map, DateText As String, Category As String, Duration As Long) + Dim dailyTotals As Map + If dailyRows.ContainsKey(DateText) Then + dailyTotals = dailyRows.Get(DateText) + Else + dailyTotals.Initialize + dailyTotals.Put("lavoro", 0) + dailyTotals.Put("pausa", 0) + dailyTotals.Put("straordinario", 0) + dailyRows.Put(DateText, dailyTotals) + End If + dailyTotals.Put(Category, dailyTotals.Get(Category) + Duration) +End Sub + +Private Sub SetAutomaticConfig + Dim startMinutes As Int = ParseTimeToMinutes(txtCfgStart.Text) + Dim pauseStartMinutes As Int = ParseTimeToMinutes(txtCfgPauseStart.Text) + Dim pauseEndMinutes As Int = ParseTimeToMinutes(txtCfgPauseEnd.Text) + Dim endMinutes As Int = ParseTimeToMinutes(txtCfgEnd.Text) + If startMinutes < 0 Or pauseStartMinutes < 0 Or pauseEndMinutes < 0 Or endMinutes < 0 Then + ToastMessageShow(Localization.T("use_hhmm"), False) + Return + End If + If startMinutes >= pauseStartMinutes Or pauseStartMinutes >= pauseEndMinutes Or pauseEndMinutes >= endMinutes Then + ToastMessageShow(Localization.T("times_order"), False) + Return + End If + Dim workMinutes As Int = (pauseStartMinutes - startMinutes) + (endMinutes - pauseEndMinutes) + If workMinutes > 480 Then + ToastMessageShow(Localization.T("work_exceed"), False) + Return + End If + AutoStartMinutes = startMinutes + AutoPauseStartMinutes = pauseStartMinutes + AutoPauseEndMinutes = pauseEndMinutes + AutoEndMinutes = endMinutes + AutoModeEnabled = True + SaveAutoConfig + If SessionActive Then EndSession(DateTime.Now, False) + If File.Exists(File.DirInternal, StateFileName) Then File.Delete(File.DirInternal, StateFileName) + UpdateAutomaticState(DateTime.Now) + ToastMessageShow(Localization.T("auto_enabled"), False) +End Sub + +Private Sub ResetAutomaticConfig + AutoModeEnabled = False + AutoState = "stopped" + If File.Exists(File.DirInternal, AutoConfigFileName) Then File.Delete(File.DirInternal, AutoConfigFileName) + ResetSessionState(False) + RestoreLastClosedDayState + UpdateMainControlState + ToastMessageShow(Localization.T("auto_disabled"), False) +End Sub + +Private Sub SaveAutoConfig + Dim lines As List + lines.Initialize + lines.Add(AutoStartMinutes) + lines.Add(AutoPauseStartMinutes) + lines.Add(AutoPauseEndMinutes) + lines.Add(AutoEndMinutes) + File.WriteList(File.DirInternal, AutoConfigFileName, lines) +End Sub + +Private Sub LoadAutoConfig + AutoModeEnabled = False + AutoState = "stopped" + If File.Exists(File.DirInternal, AutoConfigFileName) = False Then Return + Dim lines As List = File.ReadList(File.DirInternal, AutoConfigFileName) + If lines.Size < 4 Then Return + AutoStartMinutes = lines.Get(0) + AutoPauseStartMinutes = lines.Get(1) + AutoPauseEndMinutes = lines.Get(2) + AutoEndMinutes = lines.Get(3) + AutoModeEnabled = True + txtCfgStart.Text = MinutesToTime(AutoStartMinutes) + txtCfgPauseStart.Text = MinutesToTime(AutoPauseStartMinutes) + txtCfgPauseEnd.Text = MinutesToTime(AutoPauseEndMinutes) + txtCfgEnd.Text = MinutesToTime(AutoEndMinutes) +End Sub + +Private Sub ParseTimeToMinutes(Value As String) As Int + Dim parts() As String = Regex.Split(":", Value.Trim) + If parts.Length <> 2 Then Return -1 + If IsNumber(parts(0)) = False Or IsNumber(parts(1)) = False Then Return -1 + Dim h As Int = parts(0) + Dim m As Int = parts(1) + If h < 0 Or h > 23 Or m < 0 Or m > 59 Then Return -1 + Return h * 60 + m +End Sub + +Private Sub MinutesToTime(Minutes As Int) As String + Return NumberFormat(Minutes / 60, 2, 0) & ":" & NumberFormat(Minutes Mod 60, 2, 0) +End Sub + +Private Sub UpdateAutomaticState(now As Long) + Dim dayStart As Long = DateTime.DateParse(DateTime.Date(now)) + Dim minuteOfDay As Int = DateTime.GetHour(now) * 60 + DateTime.GetMinute(now) + CurrentWorkDayStart = dayStart + CurrentWorkDayKey = dayStart + RegenerateAutoSegmentsForDay(dayStart, minuteOfDay) + ProductiveElapsedMs = GetProductiveTotalForWorkDay(CurrentWorkDayKey) + SessionActive = minuteOfDay >= AutoStartMinutes And minuteOfDay < AutoEndMinutes And ProductiveElapsedMs < WorkLimitMs + PauseActive = minuteOfDay >= AutoPauseStartMinutes And minuteOfDay < AutoPauseEndMinutes + If SessionActive And PauseActive = False Then + AutoState = "recording" + Else If SessionActive And PauseActive Then + AutoState = "paused" + Else + AutoState = "stopped" + End If + BtnStart.Text = IIf(SessionActive, Localization.T("end"), Localization.T("start")) + BtnPause.Text = IIf(PauseActive, Localization.T("end_pause"), Localization.T("pause")) + CurrentSegmentStart = now + CurrentSegmentColor = GetCurrentWorkColor + myClock.ClearSegments + LoadWorkDaySegmentsIntoClock(CurrentWorkDayKey) + myClock.ClearActiveSegment + UpdateElapsedLabel + UpdateMainControlState +End Sub + +Private Sub RegenerateAutoSegmentsForDay(DayStart As Long, MinuteOfDay As Int) + RemoveAutoRowsForDay(DayStart) + Dim firstWorkEnd As Int = Min(MinuteOfDay, AutoPauseStartMinutes) + If firstWorkEnd > AutoStartMinutes Then + AddAutoSegmentNoSave(DayStart, AutoStartMinutes, firstWorkEnd, "lavoro") + End If + Dim pauseEnd As Int = Min(MinuteOfDay, AutoPauseEndMinutes) + If pauseEnd > AutoPauseStartMinutes Then + AddAutoSegmentNoSave(DayStart, AutoPauseStartMinutes, pauseEnd, "pausa") + End If + Dim secondWorkEnd As Int = Min(MinuteOfDay, AutoEndMinutes) + If secondWorkEnd > AutoPauseEndMinutes Then + AddAutoSegmentNoSave(DayStart, AutoPauseEndMinutes, secondWorkEnd, "lavoro") + End If + TrimStatsRows + SaveStatsRows +End Sub + +Private Sub AddAutoSegmentNoSave(DayStart As Long, FromMinutes As Int, ToMinutes As Int, Category As String) + Dim duration As Long = (ToMinutes - FromMinutes) * DateTime.TicksPerMinute + If duration <= 0 Then Return + Dim row As Map + row.Initialize + row.Put("dayStart", DayStart) + row.Put("dayKey", DayStart) + row.Put("segmentStart", DayStart + FromMinutes * DateTime.TicksPerMinute) + row.Put("date", DateTime.Date(DayStart)) + row.Put("duration", duration) + row.Put("category", Category) + row.Put("source", "auto") + StatsRows.Add(row) +End Sub + +Private Sub RemoveAutoRowsForDay(DayStart As Long) + Dim kept As List + kept.Initialize + For Each row As Map In StatsRows + Dim source As String = "manual" + If row.ContainsKey("source") Then source = row.Get("source") + If row.Get("dayStart") = DayStart And source = "auto" Then + ' skip regenerated automatic segment + Else + kept.Add(row) + End If + Next + StatsRows.Clear + StatsRows.AddAll(kept) +End Sub + +Private Sub ClearDisplayedDay + Dim dayStart As Long = GetDisplayedWorkDayStart + If dayStart = 0 Then + ToastMessageShow(Localization.T("no_day_to_clear"), False) + Return + End If + Dim result As Int = Msgbox2(Localization.T("clear_today_confirm") & " " & FormatDayShort(dayStart) & "?", Localization.T("clear_today_title"), Localization.T("clear_button"), Localization.T("cancel"), "", Null) + If result <> DialogResponse.POSITIVE Then Return + Dim kept As List + kept.Initialize + For Each row As Map In StatsRows + If row.Get("dayStart") <> dayStart Then kept.Add(row) + Next + StatsRows.Clear + StatsRows.AddAll(kept) + SaveStatsRows + If File.Exists(File.DirInternal, StateFileName) Then File.Delete(File.DirInternal, StateFileName) + ResetSessionState(True) + If AutoModeEnabled Then + UpdateAutomaticState(DateTime.Now) + Else + RestoreLastClosedDayState + End If + ToastMessageShow(Localization.T("today_cleared"), False) +End Sub + +Private Sub AddStatsRow(y As Int, DateText As String, WorkText As String, PauseText As String, OvertimeText As String, Header As Boolean) + Dim rowHeight As Int = 30dip + Dim col1 As Int = 104dip + Dim col As Int = (Activity.Width - col1) / 3 + AddCell(DateText, 0, y, col1, rowHeight, Header) + AddCell(WorkText, col1, y, col, rowHeight, Header) + AddCell(PauseText, col1 + col, y, col, rowHeight, Header) + AddCell(OvertimeText, col1 + 2 * col, y, col, rowHeight, Header) +End Sub + +Private Sub AddCell(Text As String, x As Int, y As Int, w As Int, h As Int, Header As Boolean) + Dim lbl As Label + lbl.Initialize("") + lbl.Text = Text + lbl.TextSize = 12 + lbl.TextColor = Colors.Black + lbl.Gravity = Gravity.CENTER + If Header Then + lbl.Color = Colors.RGB(230, 230, 230) + Else + lbl.Color = Colors.White + End If + svStats.Panel.AddView(lbl, x, y, w, h) End Sub diff --git a/b4a_orologio_marcatempo.b4a.meta b/b4a_orologio_marcatempo.b4a.meta index e5ef38e..f9712c5 100644 --- a/b4a_orologio_marcatempo.b4a.meta +++ b/b4a_orologio_marcatempo.b4a.meta @@ -7,6 +7,6 @@ ModuleBreakpoints2= ModuleClosedNodes0= ModuleClosedNodes1= ModuleClosedNodes2= -NavigationStack=Main,Activity_Resume,79,0,Main,Timer1_Tick,77,0,Main,Activity_Create,74,0,Main,DrawHand,140,0,Designer Visuale,Main_Layout.bal,-100,4,Main,Globals,36,0,AnalogClock,DrawClock,94,0,AnalogClock,SetClockSize,53,0,AnalogClock,Class_Globals,5,0,AnalogClock,Initialize,43,6 +NavigationStack=Main,Activity_Resume,79,0,Main,Timer1_Tick,77,0,Main,Activity_Create,74,0,Main,DrawHand,140,0,Designer Visuale,Main_Layout.bal,-100,4,AnalogClock,DrawClock,94,0,AnalogClock,SetClockSize,53,0,AnalogClock,Class_Globals,5,0,AnalogClock,Initialize,43,6,Main,Globals,45,0 SelectedBuild=0 VisibleModules=2,1