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