This shows you the differences between two versions of the page.
sample_code:introspector [2014/10/08 19:05] stevegarman |
sample_code:introspector [2015/03/29 05:06] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Method finder ====== | ||
- | This is a tool that I use at home to enable me to look at what methods are available in most of the controls I use. | ||
- | It is incomplete as it does not drill down far enough but it is much better than nothing. | ||
- | ===== Warnings ===== | ||
- | Please be aware that using undocumented functions is not recommended by the AndroidScript developers and you do so at your own risk.\\ | ||
- | Please also be aware that the **" | ||
- | ===== Acknowledgement ===== | ||
- | Andreas Rozek would recognize much oif the code as the heart of it is stolen from his post at [[https:// | ||
- | ===== The code ===== | ||
- | <code javascript introspector.js> | ||
- | // Introspection lite tool for home use by Steve Garman | ||
- | // Main code stolen from AppInspector by Andreas Rozek | ||
- | |||
- | //Global variables | ||
- | var myobj = app; | ||
- | var ListView, menuView, FunctionView | ||
- | var main_header_txt, | ||
- | var lastMenu = " | ||
- | var pasteable = " | ||
- | var vers = Math.floor((app.GetVersion() | ||
- | +.0005) * 100); | ||
- | var docfold = "/ | ||
- | var docfile = docfold + "/ | ||
- | |||
- | //Called when application is started. | ||
- | function OnStart(){ | ||
- | app.EnableBackKey( false ); | ||
- | | ||
- | //Create a layout with objects vertically centered. | ||
- | var lay = app.CreateLayout( " | ||
- | add_top_bar( lay ); | ||
- | |||
- | /**** prepare page area ****/ | ||
- | var PageArea = app.CreateLayout(' | ||
- | lay.AddChild(PageArea); | ||
- | |||
- | var control_list = " | ||
- | +", | ||
- | +", | ||
- | +", | ||
- | menuView = app.CreateList( control_list, | ||
- | menuView.SetOnTouch(menuView_OnTouch); | ||
- | PageArea.AddChild(menuView); | ||
- | menuView.SetVisibility(' | ||
- | |||
- | ListView = app.CreateList("", | ||
- | prepareFunctionList(); | ||
- | |||
- | ListView.SetOnTouch(showAppFunction); | ||
- | PageArea.AddChild(ListView); | ||
- | |||
- | /**** prepare detail view ****/ | ||
- | |||
- | FunctionView = app.CreateTextEdit('' | ||
- | PageArea.AddChild(FunctionView); | ||
- | FunctionView.SetVisibility(' | ||
- | | ||
- | //Add layout to app. | ||
- | app.AddLayout( lay ); | ||
- | showMenuView(); | ||
- | }//OnStart | ||
- | |||
- | function add_top_bar (lyout, opts){ | ||
- | //basic top bar layout | ||
- | var lay_bar = app.CreateLayout( " | ||
- | lay_bar.SetBackGradient( "# | ||
- | |||
- | //add app name if required - stolen for object/ | ||
- | main_header_txt = app.CreateText( lastMenu , -1, -1 ); | ||
- | main_header_txt.SetTextSize( 24 ); | ||
- | main_header_txt.SetPadding( 0.01, 0, 0.01, 0 ); | ||
- | lay_bar.AddChild( main_header_txt ); | ||
- | |||
- | var filterlabel = app.CreateText(" | ||
- | filterlabel.SetTextSize(18); | ||
- | filterlabel.SetTextColor("# | ||
- | lay_bar.AddChild( filterlabel ); | ||
- | edtFilter = app.CreateTextEdit("", | ||
- | edtFilter.SetBackColor("# | ||
- | edtFilter.SetTextSize(18); | ||
- | edtFilter.SetPadding( 0.01, 0, 0, 0.001 ); | ||
- | edtFilter.SetOnChange(edtFilterOnChange); | ||
- | lay_bar.AddChild(edtFilter); | ||
- | |||
- | lyout.AddChild( lay_bar ); | ||
- | }// | ||
- | |||
- | function menuView_OnTouch(name){ | ||
- | lastMenu = name; | ||
- | switch(name) { | ||
- | case " | ||
- | myobj = lay; | ||
- | break; | ||
- | case " | ||
- | myobj = app.CreateButton(" | ||
- | break; | ||
- | case " | ||
- | myobj = main_header_txt; | ||
- | break; | ||
- | case " | ||
- | myobj = app.CreateImage( "/ | ||
- | break; | ||
- | case " | ||
- | myobj = app.CreateNotification() ; | ||
- | break; | ||
- | case " | ||
- | myobj = app.CreateCheckBox( " | ||
- | break; | ||
- | case " | ||
- | myobj = app.CreateCrypt(); | ||
- | break; | ||
- | case " | ||
- | myobj = app.CreateDialog("" | ||
- | break; | ||
- | case " | ||
- | myobj = app.CreateToggle( " | ||
- | break; | ||
- | case " | ||
- | myobj = app.CreateSeekBar( " | ||
- | break; | ||
- | case " | ||
- | myobj = ListView; | ||
- | break; | ||
- | case " | ||
- | myobj = FunctionView; | ||
- | break; | ||
- | case " | ||
- | myobj = app.CreateWebView( 0.8,0.8 ); | ||
- | break; | ||
- | case " | ||
- | myobj = app.CreateWebServer( 8080, " | ||
- | break; | ||
- | case " | ||
- | myobj = app.CreateCameraView( 0.8,0.8 ); | ||
- | break; | ||
- | case " | ||
- | myobj = app.CreateSensor( " | ||
- | | ||
- | case " | ||
- | myobj = app.CreateEmail( " | ||
- | break; | ||
- | case " | ||
- | myobj = app.CreateLocator( " | ||
- | | ||
- | case " | ||
- | | ||
- | | ||
- | case " | ||
- | myobj = app.CreateSMS(); | ||
- | | ||
- | case " | ||
- | myobj = app.CreateYesNoDialog("" | ||
- | break; | ||
- | case(" | ||
- | showEval(); | ||
- | return; | ||
- | default: | ||
- | myobj=app; | ||
- | lastMenu = " | ||
- | } | ||
- | prepareFunctionList(); | ||
- | showOverview(); | ||
- | main_header_txt.SetText( lastMenu ); | ||
- | }// | ||
- | |||
- | function prepareFunctionList(){ | ||
- | /**** prepare list view ****/ | ||
- | |||
- | var objFunctionList; | ||
- | objFunctionList = []; | ||
- | var filter = edtFilter.GetText().trim().toLowerCase() | ||
- | for (var Key in myobj) { | ||
- | var keyword= Key.toLowerCase() | ||
- | if ((filter == "" | ||
- | if (myobj.hasOwnProperty(Key) && (typeof myobj[Key] === ' | ||
- | objFunctionList.push(Key); | ||
- | }; | ||
- | } | ||
- | }; | ||
- | objFunctionList.sort(); | ||
- | ListView.SetList( objFunctionList.join(',' | ||
- | if(filter != "" | ||
- | pasteable = filter + lastMenu + " | ||
- | var copyDelim = " | ||
- | pasteable += objFunctionList.join( copyDelim ) | ||
- | docfile = docfold + "/" | ||
- | }// | ||
- | function showMenuView(){ | ||
- | ListView.SetVisibility(' | ||
- | FunctionView.SetVisibility(' | ||
- | menuView.SetVisibility(' | ||
- | main_header_txt.SetText( " | ||
- | }// | ||
- | |||
- | function showAppFunction (Name) { | ||
- | FunctionView.SetText(String(myobj[Name])); | ||
- | main_header_txt.SetText( lastMenu + " | ||
- | ListView.SetVisibility(' | ||
- | menuView.SetVisibility(' | ||
- | FunctionView.SetVisibility(' | ||
- | }// | ||
- | |||
- | function showOverview () { | ||
- | ListView.SetVisibility(' | ||
- | FunctionView.SetVisibility(' | ||
- | menuView.SetVisibility(' | ||
- | main_header_txt.SetText( lastMenu ); | ||
- | }// | ||
- | function edtFilterOnChange(){ | ||
- | if( ListView.GetVisibility() == " | ||
- | prepareFunctionList(); | ||
- | } | ||
- | }// | ||
- | |||
- | function OnBack(){ | ||
- | if (menuView.GetVisibility() == " | ||
- | var pasteOnExit = app.CreateYesNoDialog( "Copy to clipboard and create text file?" ); | ||
- | pasteOnExit.SetOnTouch( pasteOnExit_OnTouch ); | ||
- | } | ||
- | else if( ListView.GetVisibility() == " | ||
- | else showOverview(); | ||
- | }//OnBack | ||
- | |||
- | function pasteOnExit_OnTouch( result ){ | ||
- | if( result==" | ||
- | app.SetClipboardText( pasteable ); | ||
- | if( ! app.FolderExists( docfold ) ) | ||
- | app.MakeFolder ( docfold ); | ||
- | app.WriteFile( docfile, pasteable ); | ||
- | } | ||
- | app.Exit(); | ||
- | }// | ||
- | function showEval(){ | ||
- | dlg = app.CreateDialog(" | ||
- | var layDlg = app.CreateLayout( " | ||
- | layDlg.SetPadding( 0.02, 0, 0.02, 0.02 ); | ||
- | edtDlg = app.CreateTextEdit(' | ||
- | edtDlg.SetCursorPos(edtDlg.GetText().length); | ||
- | layDlg.AddChild(edtDlg); | ||
- | dlg.AddLayout( layDlg ); | ||
- | var horiz = app.CreateLayout(" | ||
- | horiz.SetPadding( 0.02, 0.02, 0.02, 0 ); | ||
- | var btn = app.CreateButton(" | ||
- | btn.SetOnTouch(dlg_ok); | ||
- | horiz.AddChild(btn); | ||
- | btn = app.CreateButton(" | ||
- | btn.SetOnTouch(dlg_canc); | ||
- | horiz.AddChild(btn); | ||
- | layDlg.AddChild(horiz); | ||
- | dlg.Show(); | ||
- | }//showEval | ||
- | function dlg_ok(){ | ||
- | app.HideKeyboard(); | ||
- | dlg.Dismiss(); | ||
- | myobj = eval(edtDlg.GetText()); | ||
- | prepareFunctionList(); | ||
- | showOverview(); | ||
- | if ((myobj != null) && (myobj.hasOwnProperty(" | ||
- | lastMenu = myobj.GetType(); | ||
- | else | ||
- | lastMenu = " | ||
- | main_header_txt.SetText( lastMenu ); | ||
- | }//dlg_ok | ||
- | function dlg_canc(){ | ||
- | app.HideKeyboard(); | ||
- | dlg.Dismiss(); | ||
- | }//dlg_canc | ||
- | </ | ||
- | |||
- | I have placed an spk of this app at [[http:// | ||
- | |||
- | And for the sake of completeness, |