Index: GScript/src/nl/rogro/GScript/GScriptExec.java IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- GScript/src/nl/rogro/GScript/GScriptExec.java (revision 18) +++ GScript/src/nl/rogro/GScript/GScriptExec.java (revision ) @@ -1,25 +1,35 @@ package nl.rogro.GScript; -import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; import java.io.IOException; -import java.io.InputStreamReader; import java.util.Timer; import java.util.TimerTask; + import android.app.Activity; +import android.app.Notification; +import android.app.NotificationManager; +import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; +import android.net.Uri; import android.os.Bundle; +import android.os.Environment; import android.os.Handler; import android.os.Message; +import android.support.v4.app.NotificationCompat; +import android.support.v4.app.NotificationCompat.Builder; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; +import android.widget.ScrollView; import android.widget.Toast; public class GScriptExec extends Activity { @@ -80,9 +90,7 @@ eCursor.moveToFirst(); EditTextTerm = (EditText) findViewById(R.id.EditTextTerm); - + - EditTextTerm.setVerticalScrollBarEnabled(true); - EditTextTerm.setOnClickListener(new OnClickListener() { public void onClick(View v) { AutoClose = false; @@ -93,7 +101,7 @@ ButtonExecClose.setOnClickListener(new OnClickListener() { public void onClick(View v) { - executeThread.stop(); + executeThread.interrupt(); try { @@ -155,7 +163,7 @@ + AutoCloseSeconds + " seconds )")); if (AutoCloseSeconds == 0) { - executeThread.stop(); + executeThread.interrupt(); try { @@ -163,6 +171,8 @@ } catch(Exception e){} setResult(Activity.RESULT_OK); + sendNotification(); + finish(); } } else { @@ -181,18 +191,22 @@ public void handleMessage(Message msg) { if (msg.what == ExecuteResponse) { - - if(scriptOutput.length() > 500) - { - scriptOutput = scriptOutput.substring(scriptOutput.length()-500, scriptOutput.length()); + String termText = scriptOutput; + if (termText.length() > 2048) { + termText = scriptOutput.substring(scriptOutput.length() - 2048, scriptOutput.length()); } - String termText = scriptOutput; - - if(EditTextTerm.getText().toString()!=termText) - EditTextTerm.setText(termText); + EditTextTerm.setText(termText); + if (termText.length() > 0) { + final ScrollView sv = (ScrollView) EditTextTerm.getParent(); + sv.post(new Runnable() { + public void run() { + sv.fullScroll(ScrollView.FOCUS_DOWN); - } + } + }); + } + } if (msg.what == ExecuteFinished) { @@ -232,9 +246,9 @@ super.setPriority(MIN_PRIORITY); Execute(); } - void Execute() { + try { process = Runtime.getRuntime().exec(processName); @@ -342,5 +356,62 @@ } } + } + + private void sendNotification() { + // prepare intent which is triggered if the + // notification is selected + + File logFile = writeToSdCard(scriptOutput); + + Intent intent = new Intent(Intent.ACTION_VIEW); + // intent.setAction(android.content.Intent.ACTION_VIEW); + if (logFile != null) { + intent.setDataAndType(Uri.fromFile(logFile), "text/plain"); + } + + PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent, + PendingIntent.FLAG_UPDATE_CURRENT); + + // build notification + // the addAction re-use the same intent to keep the example short + Builder builder = new NotificationCompat.Builder(this) + .setContentTitle(processName) + .setContentText(scriptOutput) + .setStyle(new NotificationCompat.BigTextStyle().bigText(scriptOutput)) + .setSmallIcon(R.drawable.icon) + .setContentIntent(pIntent) + .setAutoCancel(false); + + NotificationManager notificationManager = + (NotificationManager) getSystemService(NOTIFICATION_SERVICE); + + notificationManager.notify(0, builder.build()); + } + + private File writeToSdCard(String scriptOutput) { + + try { + File logFolder = new File("/sdcard/gscript/logs"); + logFolder.mkdirs(); + + File logFile = File.createTempFile("log", ".txt", logFolder); + + FileOutputStream fos; + byte[] data = scriptOutput.getBytes(); + + fos = new FileOutputStream(logFile); + fos.write(data); + fos.close(); + + return logFile; + + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException ioe) { + ioe.printStackTrace(); + } + + return null; - } + } } \ No newline at end of file Index: GScript/res/layout/additem.xml IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- GScript/res/layout/additem.xml (revision 18) +++ GScript/res/layout/additem.xml (revision ) @@ -1,17 +1,87 @@ + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:orientation="vertical" + android:padding="6dp" + android:scrollbarAlwaysDrawVerticalTrack="false" > - - - - + + - + + + + + + + + + + + + + + + - + + + + + + + + \ No newline at end of file Index: GScript/res/layout/loadfile.xml IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- GScript/res/layout/loadfile.xml (revision 18) +++ GScript/res/layout/loadfile.xml (revision ) @@ -1,12 +1,36 @@ + + + + + + - - - - - + - + + - + \ No newline at end of file Index: GScript/res/layout/main.xml IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- GScript/res/layout/main.xml (revision 18) +++ GScript/res/layout/main.xml (revision ) @@ -1,6 +1,13 @@ + + + android:layout_height="fill_parent" > - + + \ No newline at end of file Index: GScript/res/layout/edititem.xml IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- GScript/res/layout/edititem.xml (revision 18) +++ GScript/res/layout/edititem.xml (revision ) @@ -1,15 +1,87 @@ + android:layout_width="fill_parent" + android:layout_height="fill_parent" + android:orientation="vertical" + android:padding="6dp" + android:scrollbarAlwaysDrawVerticalTrack="false" > - - + + - + + - + + + + + + + + + + + + - + + + + + + + + + + \ No newline at end of file Index: GScript/res/layout/row.xml IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- GScript/res/layout/row.xml (revision 18) +++ GScript/res/layout/row.xml (revision ) @@ -1,11 +1,41 @@ - + android:orientation="horizontal" > - - - - + + + + + + + + + + \ No newline at end of file Index: GScript/AndroidManifest.xml IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- GScript/AndroidManifest.xml (revision 18) +++ GScript/AndroidManifest.xml (revision ) @@ -3,6 +3,14 @@ package="nl.rogro.GScript" android:versionCode="1" android:versionName="1.0.0"> + + + + + + \ No newline at end of file Index: GScript/res/layout/execitem.xml IDEA additional info: Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP <+>UTF-8 =================================================================== --- GScript/res/layout/execitem.xml (revision 18) +++ GScript/res/layout/execitem.xml (revision ) @@ -1,6 +1,46 @@ - + - - + + + + + + + + + - + + + \ No newline at end of file