2
0
mirror of https://github.com/FWGS/xash3d-fwgs synced 2024-11-25 11:19:59 +01:00
xash3d-fwgs/android/unused/SteamActivity.java

232 lines
6.6 KiB
Java

package in.celest.xash3d;
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.content.Intent;
import android.widget.EditText;
import android.widget.ScrollView;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.Button;
import android.widget.TextView;
import android.widget.ArrayAdapter;
import android.widget.AdapterView;
import android.widget.Spinner;
import android.util.Log;
//import android.content.Context;
import android.content.ComponentName;
import android.content.pm.PackageManager;
import android.content.SharedPreferences;
import android.content.res.AssetManager;
import android.content.DialogInterface;
import java.io.BufferedReader;
import java.io.BufferedInputStream;
import java.io.InputStreamReader;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.File;
import java.io.FileOutputStream;
import android.os.AsyncTask;
import java.util.List;
import java.util.ArrayList;
import android.text.method.*;
import android.widget.*;
public class SteamActivity extends Activity {
LinearLayout output;
ScrollView scroll;
boolean isScrolling;
static SteamActivity mSingleton = null;
static final int[] waitSwitch = new int[1];
ProgressBar progress;
TextView progressLine;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mSingleton = this;
// Build layout
LinearLayout launcher = new LinearLayout(this);
launcher.setOrientation(LinearLayout.VERTICAL);
launcher.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
output = new LinearLayout(this);
output.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
output.setOrientation(LinearLayout.VERTICAL);
scroll = new ScrollView(this);
// Set launch button title here
Button startButton = new Button(this);
startButton.setText("Start");
LayoutParams buttonParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
buttonParams.gravity = 5;
startButton.setLayoutParams(buttonParams);
startButton.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
if( SteamService.mSingleton == null )
startService(new Intent(SteamActivity.this, SteamService.class));
}
});
Button stopButton = new Button(this);
stopButton.setText("Stop");
LayoutParams stopbuttonParams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
stopbuttonParams.gravity = 5;
stopButton.setLayoutParams(stopbuttonParams);
stopButton.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
if( SteamService.mSingleton != null )
SteamService.mSingleton.cancelThread();
}
});
LinearLayout buttons = new LinearLayout(this);
buttons.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
buttons.addView(startButton);
buttons.addView(stopButton);
LinearLayout progressLayout = new LinearLayout(this);
progressLayout.setOrientation(LinearLayout.VERTICAL);
progressLayout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
progress = new ProgressBar(this, null,
android.R.attr.progressBarStyleHorizontal);
progress.setMax(100);
progress.setVisibility(View.GONE);
progressLine = new TextView(this);
progressLine.setVisibility(View.GONE);
progressLine.setTextAppearance(this, android.R.style.TextAppearance_Medium);
progressLayout.addView( progressLine );
progressLayout.addView(progress);
buttons.addView(progressLayout);
launcher.addView(buttons);
scroll.addView(output);
launcher.addView(scroll);
setContentView(launcher);
try
{
synchronized( waitSwitch )
{
waitSwitch.notify();
}
}
catch( Exception e ) {}
}
public void progressUpdate( String str, int p)
{
runOnUiThread(new ProgressCallback( str, p ));
}
public void printText(String str)
{
runOnUiThread(new OutputCallback( str ));
}
String promptDialog(final String title, final String prompt, final boolean passwd)
{
final String[] result = new String[1];
runOnUiThread(new Runnable()
{
@Override
public void run()
{
final EditText edit = new EditText(mSingleton);
if( passwd )
edit.setTransformationMethod(new PasswordTransformationMethod());
new AlertDialog.Builder(mSingleton)
.setTitle(title)
.setMessage(prompt)
.setView(edit)
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
synchronized(result)
{
result[0] = edit.getText().toString();
result.notify();
}
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
synchronized(result)
{
result[0] = null;
result.notify();
}
}
})
.setCancelable(false)
.show();
}
});
synchronized(result)
{
try{
result.wait();
return result[0];
}
catch(Exception e)
{
runOnUiThread(new OutputCallback(e.getMessage()));
return result[0];
}
}
}
// Callbacks to interact with UI from other threads
class OutputCallback implements Runnable {
String str;
OutputCallback(String s) { str = s; }
public void run() {
TextView line = new TextView(SteamActivity.this);
line.setText(str);
line.setTextAppearance(SteamActivity.this, android.R.style.TextAppearance_Small);
line.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
progress.setVisibility(View.GONE);
progressLine.setVisibility(View.GONE);
if(output.getChildCount() > 256)
output.removeViewAt(0);
output.addView(line);
if( !isScrolling )
scroll.postDelayed(new Runnable() {
@Override
public void run() {
scroll.fullScroll(ScrollView.FOCUS_DOWN);
isScrolling = false;
}
}, 200);
isScrolling = true;
}
}
class ProgressCallback implements Runnable {
String str;
int p;
ProgressCallback(String s, int pr) { str = s; p = pr; }
public void run() {
progressLine.setText( str );
progressLine.setVisibility(View.VISIBLE);
progress.setProgress(p);
progress.setVisibility(View.VISIBLE);
}
}
@Override
protected void onDestroy()
{
mSingleton = null;
super.onDestroy();
}
}