Code clean, improve resolution selection

This commit is contained in:
mittorn 2018-05-12 02:56:17 +07:00
parent 3d19551172
commit 03105e096d
5 changed files with 172 additions and 209 deletions

@ -1 +1 @@
Subproject commit 5bdf537d06bac340e861338af9c3fea99d3724cf
Subproject commit 7895c4fac080f1805668d6b3583ca3a0f7faa6d6

@ -1 +1 @@
Subproject commit f9f501eb0914645a4f68623f48dd92ad5d91de15
Subproject commit 44cfcf8a62735c2d5312a1bcc1c4c633dddba1ed

@ -1 +1 @@
Subproject commit d17387c61ffe0a81b2ae6c6737bc7f08d7040ab3
Subproject commit 2aab84f6432b78246d146348a5a4a29a6ad5decc

View file

@ -183,7 +183,7 @@ public class LauncherActivity extends Activity
resHeight.setText(String.valueOf(mPref.getInt("resolution_height", mEngineHeight )));
resScale.setText(String.valueOf(mPref.getFloat("resolution_scale", 2.0f)));
resWidth.addTextChangedListener( resTextChangeWatcher );
resWidth.addTextChangedListener( resWidthTextChangeWatcher );
resHeight.addTextChangedListener( resTextChangeWatcher );
resScale.addTextChangedListener( resTextChangeWatcher );
@ -256,7 +256,7 @@ public class LauncherActivity extends Activity
// disable autoupdater for Google Play
if( !XashConfig.GP_VERSION && mPref.getBoolean("check_updates", true))
{
new CheckUpdate(true, false).execute(UPDATE_LINK);
new CheckUpdate(getBaseContext(),true, false).execute(UPDATE_LINK);
}
FWGSLib.changeButtonsStyle((ViewGroup)tabHost.getParent());
hideResolutionSettings( !resolution.isChecked() );
@ -295,7 +295,7 @@ public class LauncherActivity extends Activity
rodirSettings.setVisibility( hide ? View.GONE : View.VISIBLE );
}
TextWatcher resTextChangeWatcher = new TextWatcher()
TextWatcher resWidthTextChangeWatcher = new TextWatcher()
{
@Override
public void afterTextChanged(Editable s){}
@ -303,6 +303,23 @@ public class LauncherActivity extends Activity
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after){}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
int h = (int)((float)mEngineHeight / mEngineWidth * getCustomEngineWidth());
resHeight.setText(String.valueOf(h));
updateResolutionResult();
}
};
TextWatcher resTextChangeWatcher = new TextWatcher()
{
@Override
public void afterTextChanged(Editable s){}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after){}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count)
{
@ -317,6 +334,13 @@ public class LauncherActivity extends Activity
{
w = getCustomEngineWidth();
h = getCustomEngineHeight();
// some fool-proof
if( Math.abs((float)w/(float)h - 4.0/3.0) < 0.001 )
{
w = (int)((float)mEngineWidth / mEngineHeight * h+0.5);
resWidth.setText(String.valueOf(w));
}
}
else
{
@ -416,83 +440,6 @@ public class LauncherActivity extends Activity
int m_iFirstRunCounter = 0;
public void showFirstRun()
{
/*if( m_iFirstRunCounter < 0 )
m_iFirstRunCounter = 0;
final int titleres = getResources().getIdentifier("page_title" + String.valueOf(m_iFirstRunCounter), "string", getPackageName());
final int contentres = getResources().getIdentifier("page_content" + String.valueOf(m_iFirstRunCounter), "string", getPackageName());
final Activity a = this;
if( titleres == 0 || contentres == 0 )
return;
this.runOnUiThread(new Runnable()
{
public void run()
{
final TextView content = new TextView(LauncherActivity.this);
content.setMovementMethod(LinkMovementMethod.getInstance());
AlertDialog.Builder builder = new AlertDialog.Builder(a)
.setTitle(titleres)
.setView(content);
DialogInterface.OnClickListener nextClick = new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface d, int p1)
{
m_iFirstRunCounter++;
showFirstRun();
}
};
DialogInterface.OnClickListener prevClick = new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface d, int p1)
{
m_iFirstRunCounter--;
showFirstRun();
}
};
if( sdk >= 21 )
{
builder.setPositiveButton(R.string.next, nextClick);
if( m_iFirstRunCounter > 0 )
{
builder.setNegativeButton(R.string.prev, prevClick);
}
builder.setNeutralButton(R.string.skip, null);
}
else
{
builder.setNegativeButton(R.string.next, nextClick);
if( m_iFirstRunCounter > 0 )
{
builder.setNeutralButton(R.string.prev, prevClick);
}
builder.setPositiveButton(R.string.skip, null);
}
builder.setCancelable(false);
final AlertDialog dialog = builder.create();
dialog.show();
content.setText(Html.fromHtml(getResources().getText(contentres).toString(),
new Html.ImageGetter()
{
@Override
public Drawable getDrawable(String source)
{
int dourceId = getApplicationContext().getResources().getIdentifier(source, "drawable", getPackageName());
Drawable drawable = getApplicationContext().getResources().getDrawable(dourceId);
final int visibleWidth = dialog.getWindow().getDecorView().getWidth();
final int picWidth = drawable.getIntrinsicWidth();
final int picHeight = drawable.getIntrinsicHeight();
final int calcWidth = visibleWidth < picWidth ? visibleWidth : picWidth;
// final int calcHeight = (int)((float)picHeight * ((float)calcWidth / (float)picWidth));
final int calcHeight = (int)((float)picHeight);
drawable.setBounds( 0, 0, calcWidth, calcHeight);
return drawable;
}
}, null));
}
});*/
startActivity(new Intent(this, in.celest.xash3d.XashTutorialActivity.class));
}
@ -588,130 +535,4 @@ public class LauncherActivity extends Activity
return super.onOptionsItemSelected(item);
}
private class CheckUpdate extends AsyncTask<String, Void, String> {
InputStream is = null;
ByteArrayOutputStream os = null;
boolean mSilent;
boolean mBeta;
public CheckUpdate( boolean silent, boolean beta )
{
mSilent = silent;
mBeta = beta;
}
protected String doInBackground(String... urls)
{
try
{
URL url = new URL(urls[0]);
is = url.openConnection().getInputStream();
os = new ByteArrayOutputStream();
byte[] buffer = new byte[8196];
int len;
while ((len = is.read(buffer)) > 0)
{
os.write(buffer, 0, len);
}
os.flush();
return os.toString();
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}
protected void onPostExecute(String result)
{
JSONArray releases = null;
try
{
if (is != null)
{
is.close();
is = null;
}
}
catch(Exception e)
{
e.printStackTrace();
}
try
{
if (os != null)
{
releases = new JSONArray(os.toString());
os.close();
os = null;
}
}
catch(Exception e)
{
e.printStackTrace();
return;
}
if( releases == null )
return;
for( int i = 0; i < releases.length(); i++ )
{
final JSONObject obj;
try
{
obj = releases.getJSONObject(i);
final String version, url, name;
final boolean beta = obj.getBoolean("prerelease");
if( beta && !mBeta )
continue;
version = obj.getString("tag_name");
url = obj.getString("html_url");
name = obj.getString("name");
Log.d("Xash", "Found: " + version +
", I: " + getString(R.string.version_string));
// this is an update
if( getString(R.string.version_string).compareTo(version) < 0 )
{
String dialog_message = String.format(getString(R.string.update_message), name);
AlertDialog.Builder builder = new AlertDialog.Builder(getBaseContext());
builder.setMessage(dialog_message)
.setPositiveButton(R.string.update, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
final Intent intent = new Intent(Intent.ACTION_VIEW).setData(Uri.parse(url));
startActivity(intent);
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener()
{ public void onClick(DialogInterface dialog, int id) {} } );
builder.create().show();
}
else if( !mSilent )
{
Toast.makeText(getBaseContext(), R.string.no_updates, Toast.LENGTH_SHORT).show();
}
// No need to check other releases, so we will stop here.
break;
}
catch(Exception e)
{
e.printStackTrace();
continue;
}
}
}
}
}

View file

@ -0,0 +1,142 @@
package su.xash.fwgslib;
import android.app.*;
import android.content.*;
import android.net.*;
import android.os.*;
import android.util.*;
import android.widget.*;
import in.celest.xash3d.hl.*;
import java.io.*;
import java.net.*;
import org.json.*;
public class CheckUpdate extends AsyncTask<String, Void, String> {
InputStream is = null;
ByteArrayOutputStream os = null;
boolean mSilent;
boolean mBeta;
Context mContext;
public CheckUpdate( Context context, boolean silent, boolean beta )
{
mSilent = silent;
mBeta = beta;
mContext = context;
}
protected String doInBackground(String... urls)
{
try
{
URL url = new URL(urls[0]);
is = url.openConnection().getInputStream();
os = new ByteArrayOutputStream();
byte[] buffer = new byte[8196];
int len;
while ((len = is.read(buffer)) > 0)
{
os.write(buffer, 0, len);
}
os.flush();
return os.toString();
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}
protected void onPostExecute(String result)
{
JSONArray releases = null;
try
{
if (is != null)
{
is.close();
is = null;
}
}
catch(Exception e)
{
e.printStackTrace();
}
try
{
if (os != null)
{
releases = new JSONArray(os.toString());
os.close();
os = null;
}
}
catch(Exception e)
{
e.printStackTrace();
return;
}
if( releases == null )
return;
for( int i = 0; i < releases.length(); i++ )
{
final JSONObject obj;
try
{
obj = releases.getJSONObject(i);
final String version, url, name;
final boolean beta = obj.getBoolean("prerelease");
if( beta && !mBeta )
continue;
version = obj.getString("tag_name");
url = obj.getString("html_url");
name = obj.getString("name");
Log.d("Xash", "Found: " + version +
", I: " + mContext.getString(R.string.version_string));
// this is an update
if( mContext.getString(R.string.version_string).compareTo(version) < 0 )
{
String dialog_message = String.format(mContext.getString(R.string.update_message), name);
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setMessage(dialog_message)
.setPositiveButton(R.string.update, new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
final Intent intent = new Intent(Intent.ACTION_VIEW).setData(Uri.parse(url));
mContext.startActivity(intent);
}
})
.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener()
{ public void onClick(DialogInterface dialog, int id) {} } );
builder.create().show();
}
else if( !mSilent )
{
Toast.makeText(mContext, R.string.no_updates, Toast.LENGTH_SHORT).show();
}
// No need to check other releases, so we will stop here.
break;
}
catch(Exception e)
{
e.printStackTrace();
continue;
}
}
}
}