package reparto_mazapa.keymon.lat; import anywheresoftware.b4a.B4AMenuItem; import android.app.Activity; import android.os.Bundle; import anywheresoftware.b4a.BA; import anywheresoftware.b4a.BALayout; import anywheresoftware.b4a.B4AActivity; import anywheresoftware.b4a.ObjectWrapper; import anywheresoftware.b4a.objects.ActivityWrapper; import java.lang.reflect.InvocationTargetException; import anywheresoftware.b4a.B4AUncaughtException; import anywheresoftware.b4a.debug.*; import java.lang.ref.WeakReference; public class main extends Activity implements B4AActivity{ public static main mostCurrent; static boolean afterFirstLayout; static boolean isFirst = true; private static boolean processGlobalsRun = false; BALayout layout; public static BA processBA; BA activityBA; ActivityWrapper _activity; java.util.ArrayList menuItems; public static final boolean fullScreen = false; public static final boolean includeTitle = true; public static WeakReference previousOne; public static boolean dontPause; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mostCurrent = this; if (processBA == null) { processBA = new BA(this.getApplicationContext(), null, null, "reparto_mazapa.keymon.lat", "reparto_mazapa.keymon.lat.main"); processBA.loadHtSubs(this.getClass()); float deviceScale = getApplicationContext().getResources().getDisplayMetrics().density; BALayout.setDeviceScale(deviceScale); } else if (previousOne != null) { Activity p = previousOne.get(); if (p != null && p != this) { BA.LogInfo("Killing previous instance (main)."); p.finish(); } } processBA.setActivityPaused(true); processBA.runHook("oncreate", this, null); if (!includeTitle) { this.getWindow().requestFeature(android.view.Window.FEATURE_NO_TITLE); } if (fullScreen) { getWindow().setFlags(android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN, android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN); } processBA.sharedProcessBA.activityBA = null; layout = new BALayout(this); setContentView(layout); afterFirstLayout = false; WaitForLayout wl = new WaitForLayout(); if (anywheresoftware.b4a.objects.ServiceHelper.StarterHelper.startFromActivity(this, processBA, wl, false)) BA.handler.postDelayed(wl, 5); } static class WaitForLayout implements Runnable { public void run() { if (afterFirstLayout) return; if (mostCurrent == null) return; if (mostCurrent.layout.getWidth() == 0) { BA.handler.postDelayed(this, 5); return; } mostCurrent.layout.getLayoutParams().height = mostCurrent.layout.getHeight(); mostCurrent.layout.getLayoutParams().width = mostCurrent.layout.getWidth(); afterFirstLayout = true; mostCurrent.afterFirstLayout(); } } private void afterFirstLayout() { if (this != mostCurrent) return; activityBA = new BA(this, layout, processBA, "reparto_mazapa.keymon.lat", "reparto_mazapa.keymon.lat.main"); processBA.sharedProcessBA.activityBA = new java.lang.ref.WeakReference(activityBA); anywheresoftware.b4a.objects.ViewWrapper.lastId = 0; _activity = new ActivityWrapper(activityBA, "activity"); anywheresoftware.b4a.Msgbox.isDismissing = false; if (BA.isShellModeRuntimeCheck(processBA)) { if (isFirst) processBA.raiseEvent2(null, true, "SHELL", false); processBA.raiseEvent2(null, true, "CREATE", true, "reparto_mazapa.keymon.lat.main", processBA, activityBA, _activity, anywheresoftware.b4a.keywords.Common.Density, mostCurrent); _activity.reinitializeForShell(activityBA, "activity"); } initializeProcessGlobals(); initializeGlobals(); BA.LogInfo("** Activity (main) Create " + (isFirst ? "(first time)" : "") + " **"); processBA.raiseEvent2(null, true, "activity_create", false, isFirst); isFirst = false; if (this != mostCurrent) return; processBA.setActivityPaused(false); BA.LogInfo("** Activity (main) Resume **"); processBA.raiseEvent(null, "activity_resume"); if (android.os.Build.VERSION.SDK_INT >= 11) { try { android.app.Activity.class.getMethod("invalidateOptionsMenu").invoke(this,(Object[]) null); } catch (Exception e) { e.printStackTrace(); } } } public void addMenuItem(B4AMenuItem item) { if (menuItems == null) menuItems = new java.util.ArrayList(); menuItems.add(item); } @Override public boolean onCreateOptionsMenu(android.view.Menu menu) { super.onCreateOptionsMenu(menu); try { if (processBA.subExists("activity_actionbarhomeclick")) { Class.forName("android.app.ActionBar").getMethod("setHomeButtonEnabled", boolean.class).invoke( getClass().getMethod("getActionBar").invoke(this), true); } } catch (Exception e) { e.printStackTrace(); } if (processBA.runHook("oncreateoptionsmenu", this, new Object[] {menu})) return true; if (menuItems == null) return false; for (B4AMenuItem bmi : menuItems) { android.view.MenuItem mi = menu.add(bmi.title); if (bmi.drawable != null) mi.setIcon(bmi.drawable); if (android.os.Build.VERSION.SDK_INT >= 11) { try { if (bmi.addToBar) { android.view.MenuItem.class.getMethod("setShowAsAction", int.class).invoke(mi, 1); } } catch (Exception e) { e.printStackTrace(); } } mi.setOnMenuItemClickListener(new B4AMenuItemsClickListener(bmi.eventName.toLowerCase(BA.cul))); } return true; } @Override public boolean onOptionsItemSelected(android.view.MenuItem item) { if (item.getItemId() == 16908332) { processBA.raiseEvent(null, "activity_actionbarhomeclick"); return true; } else return super.onOptionsItemSelected(item); } @Override public boolean onPrepareOptionsMenu(android.view.Menu menu) { super.onPrepareOptionsMenu(menu); processBA.runHook("onprepareoptionsmenu", this, new Object[] {menu}); return true; } protected void onStart() { super.onStart(); processBA.runHook("onstart", this, null); } protected void onStop() { super.onStop(); processBA.runHook("onstop", this, null); } public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if (processBA.subExists("activity_windowfocuschanged")) processBA.raiseEvent2(null, true, "activity_windowfocuschanged", false, hasFocus); } private class B4AMenuItemsClickListener implements android.view.MenuItem.OnMenuItemClickListener { private final String eventName; public B4AMenuItemsClickListener(String eventName) { this.eventName = eventName; } public boolean onMenuItemClick(android.view.MenuItem item) { processBA.raiseEventFromUI(item.getTitle(), eventName + "_click"); return true; } } public static Class getObject() { return main.class; } private Boolean onKeySubExist = null; private Boolean onKeyUpSubExist = null; @Override public boolean onKeyDown(int keyCode, android.view.KeyEvent event) { if (processBA.runHook("onkeydown", this, new Object[] {keyCode, event})) return true; if (onKeySubExist == null) onKeySubExist = processBA.subExists("activity_keypress"); if (onKeySubExist) { if (keyCode == anywheresoftware.b4a.keywords.constants.KeyCodes.KEYCODE_BACK && android.os.Build.VERSION.SDK_INT >= 18) { HandleKeyDelayed hk = new HandleKeyDelayed(); hk.kc = keyCode; BA.handler.post(hk); return true; } else { boolean res = new HandleKeyDelayed().runDirectly(keyCode); if (res) return true; } } return super.onKeyDown(keyCode, event); } private class HandleKeyDelayed implements Runnable { int kc; public void run() { runDirectly(kc); } public boolean runDirectly(int keyCode) { Boolean res = (Boolean)processBA.raiseEvent2(_activity, false, "activity_keypress", false, keyCode); if (res == null || res == true) { return true; } else if (keyCode == anywheresoftware.b4a.keywords.constants.KeyCodes.KEYCODE_BACK) { finish(); return true; } return false; } } @Override public boolean onKeyUp(int keyCode, android.view.KeyEvent event) { if (processBA.runHook("onkeyup", this, new Object[] {keyCode, event})) return true; if (onKeyUpSubExist == null) onKeyUpSubExist = processBA.subExists("activity_keyup"); if (onKeyUpSubExist) { Boolean res = (Boolean)processBA.raiseEvent2(_activity, false, "activity_keyup", false, keyCode); if (res == null || res == true) return true; } return super.onKeyUp(keyCode, event); } @Override public void onNewIntent(android.content.Intent intent) { super.onNewIntent(intent); this.setIntent(intent); processBA.runHook("onnewintent", this, new Object[] {intent}); } @Override public void onPause() { super.onPause(); if (_activity == null) return; if (this != mostCurrent) return; anywheresoftware.b4a.Msgbox.dismiss(true); if (!dontPause) BA.LogInfo("** Activity (main) Pause, UserClosed = " + activityBA.activity.isFinishing() + " **"); else BA.LogInfo("** Activity (main) Pause event (activity is not paused). **"); if (mostCurrent != null) processBA.raiseEvent2(_activity, true, "activity_pause", false, activityBA.activity.isFinishing()); if (!dontPause) { processBA.setActivityPaused(true); mostCurrent = null; } if (!activityBA.activity.isFinishing()) previousOne = new WeakReference(this); anywheresoftware.b4a.Msgbox.isDismissing = false; processBA.runHook("onpause", this, null); } @Override public void onDestroy() { super.onDestroy(); previousOne = null; processBA.runHook("ondestroy", this, null); } @Override public void onResume() { super.onResume(); mostCurrent = this; anywheresoftware.b4a.Msgbox.isDismissing = false; if (activityBA != null) { //will be null during activity create (which waits for AfterLayout). ResumeMessage rm = new ResumeMessage(mostCurrent); BA.handler.post(rm); } processBA.runHook("onresume", this, null); } private static class ResumeMessage implements Runnable { private final WeakReference activity; public ResumeMessage(Activity activity) { this.activity = new WeakReference(activity); } public void run() { main mc = mostCurrent; if (mc == null || mc != activity.get()) return; processBA.setActivityPaused(false); BA.LogInfo("** Activity (main) Resume **"); if (mc != mostCurrent) return; processBA.raiseEvent(mc._activity, "activity_resume", (Object[])null); } } @Override protected void onActivityResult(int requestCode, int resultCode, android.content.Intent data) { processBA.onActivityResult(requestCode, resultCode, data); processBA.runHook("onactivityresult", this, new Object[] {requestCode, resultCode}); } private static void initializeGlobals() { processBA.raiseEvent2(null, true, "globals", false, (Object[])null); } public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { for (int i = 0;i < permissions.length;i++) { Object[] o = new Object[] {permissions[i], grantResults[i] == 0}; processBA.raiseEventFromDifferentThread(null,null, 0, "activity_permissionresult", true, o); } } public anywheresoftware.b4a.keywords.Common __c = null; public static boolean _actionbarhomeclicked = false; public b4a.example.dateutils _dateutils = null; public reparto_mazapa.keymon.lat.appupdater _appupdater = null; public reparto_mazapa.keymon.lat.foto _foto = null; public reparto_mazapa.keymon.lat.mapa_cliente _mapa_cliente = null; public reparto_mazapa.keymon.lat.mapa_rutas _mapa_rutas = null; public reparto_mazapa.keymon.lat.starter _starter = null; public reparto_mazapa.keymon.lat.subs _subs = null; public reparto_mazapa.keymon.lat.tracker _tracker = null; public reparto_mazapa.keymon.lat.newinst2 _newinst2 = null; public reparto_mazapa.keymon.lat.b4xpages _b4xpages = null; public reparto_mazapa.keymon.lat.b4xcollections _b4xcollections = null; public reparto_mazapa.keymon.lat.httputils2service _httputils2service = null; public reparto_mazapa.keymon.lat.xuiviewsutils _xuiviewsutils = null; public static boolean isAnyActivityVisible() { boolean vis = false; vis = vis | (main.mostCurrent != null); vis = vis | (foto.mostCurrent != null); vis = vis | (mapa_cliente.mostCurrent != null); vis = vis | (mapa_rutas.mostCurrent != null); return vis;} public static String _activity_actionbarhomeclick() throws Exception{ //BA.debugLineNum = 34;BA.debugLine="Sub Activity_ActionBarHomeClick"; //BA.debugLineNum = 35;BA.debugLine="ActionBarHomeClicked = True"; _actionbarhomeclicked = anywheresoftware.b4a.keywords.Common.True; //BA.debugLineNum = 36;BA.debugLine="B4XPages.Delegate.Activity_ActionBarHomeClick"; mostCurrent._b4xpages._delegate /*reparto_mazapa.keymon.lat.b4xpagesdelegator*/ ._activity_actionbarhomeclick /*String*/ (); //BA.debugLineNum = 37;BA.debugLine="ActionBarHomeClicked = False"; _actionbarhomeclicked = anywheresoftware.b4a.keywords.Common.False; //BA.debugLineNum = 38;BA.debugLine="End Sub"; return ""; } public static String _activity_create(boolean _firsttime) throws Exception{ reparto_mazapa.keymon.lat.b4xpagesmanager _pm = null; //BA.debugLineNum = 26;BA.debugLine="Sub Activity_Create(FirstTime As Boolean)"; //BA.debugLineNum = 27;BA.debugLine="Dim pm As B4XPagesManager"; _pm = new reparto_mazapa.keymon.lat.b4xpagesmanager(); //BA.debugLineNum = 28;BA.debugLine="pm.Initialize(Activity)"; _pm._initialize /*String*/ (mostCurrent.activityBA,mostCurrent._activity); //BA.debugLineNum = 29;BA.debugLine="End Sub"; return ""; } public static boolean _activity_keypress(int _keycode) throws Exception{ //BA.debugLineNum = 40;BA.debugLine="Sub Activity_KeyPress (KeyCode As Int) As Boolean"; //BA.debugLineNum = 41;BA.debugLine="Return B4XPages.Delegate.Activity_KeyPress(KeyCod"; if (true) return mostCurrent._b4xpages._delegate /*reparto_mazapa.keymon.lat.b4xpagesdelegator*/ ._activity_keypress /*boolean*/ (_keycode); //BA.debugLineNum = 42;BA.debugLine="End Sub"; return false; } public static String _activity_pause(boolean _userclosed) throws Exception{ //BA.debugLineNum = 48;BA.debugLine="Sub Activity_Pause (UserClosed As Boolean)"; //BA.debugLineNum = 49;BA.debugLine="B4XPages.Delegate.Activity_Pause"; mostCurrent._b4xpages._delegate /*reparto_mazapa.keymon.lat.b4xpagesdelegator*/ ._activity_pause /*String*/ (); //BA.debugLineNum = 50;BA.debugLine="End Sub"; return ""; } public static String _activity_permissionresult(String _permission,boolean _result) throws Exception{ //BA.debugLineNum = 52;BA.debugLine="Sub Activity_PermissionResult (Permission As Strin"; //BA.debugLineNum = 53;BA.debugLine="B4XPages.Delegate.Activity_PermissionResult(Permi"; mostCurrent._b4xpages._delegate /*reparto_mazapa.keymon.lat.b4xpagesdelegator*/ ._activity_permissionresult /*String*/ (_permission,_result); //BA.debugLineNum = 54;BA.debugLine="End Sub"; return ""; } public static String _activity_resume() throws Exception{ //BA.debugLineNum = 44;BA.debugLine="Sub Activity_Resume"; //BA.debugLineNum = 45;BA.debugLine="B4XPages.Delegate.Activity_Resume"; mostCurrent._b4xpages._delegate /*reparto_mazapa.keymon.lat.b4xpagesdelegator*/ ._activity_resume /*String*/ (); //BA.debugLineNum = 46;BA.debugLine="End Sub"; return ""; } public static String _create_menu(Object _menu) throws Exception{ //BA.debugLineNum = 56;BA.debugLine="Sub Create_Menu (Menu As Object)"; //BA.debugLineNum = 57;BA.debugLine="B4XPages.Delegate.Create_Menu(Menu)"; mostCurrent._b4xpages._delegate /*reparto_mazapa.keymon.lat.b4xpagesdelegator*/ ._create_menu /*String*/ (_menu); //BA.debugLineNum = 58;BA.debugLine="End Sub"; return ""; } public static String _globals() throws Exception{ //BA.debugLineNum = 22;BA.debugLine="Sub Globals"; //BA.debugLineNum = 24;BA.debugLine="End Sub"; return ""; } public static void initializeProcessGlobals() { if (main.processGlobalsRun == false) { main.processGlobalsRun = true; try { b4a.example.dateutils._process_globals(); main._process_globals(); appupdater._process_globals(); foto._process_globals(); mapa_cliente._process_globals(); mapa_rutas._process_globals(); starter._process_globals(); subs._process_globals(); tracker._process_globals(); newinst2._process_globals(); b4xpages._process_globals(); b4xcollections._process_globals(); httputils2service._process_globals(); xuiviewsutils._process_globals(); } catch (Exception e) { throw new RuntimeException(e); } } }public static String _process_globals() throws Exception{ //BA.debugLineNum = 18;BA.debugLine="Sub Process_Globals"; //BA.debugLineNum = 19;BA.debugLine="Public ActionBarHomeClicked As Boolean"; _actionbarhomeclicked = false; //BA.debugLineNum = 20;BA.debugLine="End Sub"; return ""; } public boolean _onCreateOptionsMenu(android.view.Menu menu) { processBA.raiseEvent(null, "create_menu", menu); return true; } }