mirror of
https://github.com/FWGS/xash3d-fwgs
synced 2024-11-23 02:15:55 +01:00
232 lines
6.6 KiB
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();
|
|
}
|
|
|
|
|
|
}
|