From 300e65e2009c5431baf85e129c58063bcfc9cc0a Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Wed, 21 Mar 2018 17:54:45 +0300 Subject: [PATCH] Suggest converting to rodir, if write test has failed --- res/values-ru/strings.xml | 3 + res/values/strings.xml | 2 + src/in/celest/xash3d/LauncherActivity.java | 20 ++++- src/in/celest/xash3d/XashActivity.java | 92 +++++++++++----------- src/su/xash/fwgslib/FWGSLib.java | 11 +++ 5 files changed, 76 insertions(+), 52 deletions(-) diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index e91ebd4c..bbe9a4a1 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -76,6 +76,9 @@ Из-за политик записи в новых версиях Android, полноценно воспользоваться внешней памятью невозможно. Из-за политик записи Android 4.4, вы не можете воспользоваться внешней памятью. Похоже, ваша файловая система в режиме только для чтения. + Конвертировать в RoDir + Обратите внимание, что теперь ваши настройки будут сохранены в %s + diff --git a/res/values/strings.xml b/res/values/strings.xml index 3284b462..ff9beaff 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -103,6 +103,8 @@ Due to writing politics of newer Android versions, you can\'t use this storage. Due to writing politics of Android 4.4, you can\'t use this storage. Seems you have read-only filesystem. + Convert to RoDir + Please note, that your game settings and saves will be stored in %s diff --git a/src/in/celest/xash3d/LauncherActivity.java b/src/in/celest/xash3d/LauncherActivity.java index 8a31b206..caaafd7b 100644 --- a/src/in/celest/xash3d/LauncherActivity.java +++ b/src/in/celest/xash3d/LauncherActivity.java @@ -257,7 +257,7 @@ public class LauncherActivity extends Activity @Override public void onCheckedChanged( CompoundButton v, boolean isChecked ) { - enableRoDir( isChecked ); + hideRodirSettings( !isChecked ); } }); @@ -303,12 +303,24 @@ public class LauncherActivity extends Activity } changeButtonsStyle((ViewGroup)tabHost.getParent()); hideResolutionSettings( !resolution.isChecked() ); - enableRoDir( useRoDir.isChecked() ); + hideRodirSettings( !useRoDir.isChecked() ); updateResolutionResult(); toggleResolutionFields(); if( !mPref.getBoolean("successfulRun",false) ) showFirstRun(); } + + @Override + public void onResume() + { + super.onResume(); + + useRoDir.setChecked( mPref.getBoolean("use_rodir", false) ); + useRoDirAuto.setChecked( mPref.getBoolean("use_rodir_auto", true) ); + writePath.setText(mPref.getString("writedir", FWGSLib.getExternalFilesDir(this))); + + hideRodirSettings( !useRoDir.isChecked() ); + } void updatePath( String text ) { @@ -321,9 +333,9 @@ public class LauncherActivity extends Activity scaleGroup.setVisibility( hide ? View.GONE : View.VISIBLE ); } - void enableRoDir( boolean enable ) + void hideRodirSettings( boolean hide ) { - rodirSettings.setVisibility( enable ? View.VISIBLE : View.GONE ); + rodirSettings.setVisibility( hide ? View.GONE : View.VISIBLE ); } TextWatcher resTextChangeWatcher = new TextWatcher() diff --git a/src/in/celest/xash3d/XashActivity.java b/src/in/celest/xash3d/XashActivity.java index 79a13210..6a8ae36b 100644 --- a/src/in/celest/xash3d/XashActivity.java +++ b/src/in/celest/xash3d/XashActivity.java @@ -72,7 +72,6 @@ public class XashActivity extends Activity { private static boolean mHasVibrator; private int mReturingWithResultCode = 0; - private static int OPEN_DOCUMENT_TREE_RESULT = 1; private static int FPICKER_RESULT = 2; @@ -148,7 +147,7 @@ public class XashActivity extends Activity { Log.v( TAG, "folderask == false. Checking write permission..." ); // check write permission and run engine, if possible - String basedir = getStringExtraFromIntent( getIntent(), "basedir", mPref.getString( "basedir", "/sdcard/xash/" ) ); + String basedir = FWGSLib.getStringExtraFromIntent( getIntent(), "basedir", mPref.getString( "basedir", "/sdcard/xash/" ) ); checkWritePermission( basedir ); } } @@ -187,36 +186,6 @@ public class XashActivity extends Activity { String basedir = mPref.getString( "basedir", "/sdcard/xash/" ); checkWritePermission( basedir ); } - /*else if( mReturingWithResultCode == OPEN_DOCUMENT_TREE_RESULT ) - { - String basedir = getStringExtraFromIntent( getIntent(), "basedir", mPref.getString("basedir","/sdcard/xash/")); - Log.v(TAG, "Got permissions. Checking writing again..."); - - if( nativeTestWritePermission( basedir ) == 0 ) - { - Log.v(TAG, "Write test has failed twice!"); - String msg = getString(R.string.lollipop_request_permission_fail_msg) + getString(R.string.ask_about_new_basedir_msg); - - new AlertDialog.Builder(this) - .setTitle( R.string.write_failed ) - .setMessage( msg ) - .setPositiveButton( R.string.ok, new DialogInterface.OnClickListener() - { - public void onClick(DialogInterface dialog, int whichButton) - { - XashActivity act = XashActivity.this; - act.setFolderAsk( true ); - act.finish(); - } - }) - .setCancelable(false) - .show(); - } - else - { - launchSurfaceAndEngine(); - } - }*/ mReturingWithResultCode = 0; } @@ -323,16 +292,17 @@ public class XashActivity extends Activity { editor.commit(); } - private String getStringExtraFromIntent( Intent intent, String extraString, String ifNotFound ) + + private DialogInterface.OnClickListener folderAskEnable = new DialogInterface.OnClickListener() { - String ret = intent.getStringExtra( extraString ); - if( ret == null ) + @Override + public void onClick( DialogInterface dialog, int whichButton ) { - ret = ifNotFound; + XashActivity act = XashActivity.this; + act.setFolderAsk( XashActivity.this, true ); + act.finish(); } - - return ret; - } + }; private void checkWritePermission( String basedir ) { @@ -366,13 +336,12 @@ public class XashActivity extends Activity { new AlertDialog.Builder( this ) .setTitle( R.string.write_failed ) .setMessage( msg ) - .setPositiveButton( R.string.ok, new DialogInterface.OnClickListener() + .setPositiveButton( R.string.ok, folderAskEnable ) + .setNegativeButton( R.string.convert_to_rodir, new DialogInterface.OnClickListener() { - public void onClick( DialogInterface dialog, int whichButton ) + public void onClick( DialogInterface dialog, int whichButton ) { - XashActivity act = XashActivity.this; - act.setFolderAsk( XashActivity.this, true ); - act.finish(); + XashActivity.this.convertToRodir(); } }) .setCancelable( false ) @@ -385,6 +354,33 @@ public class XashActivity extends Activity { } } + private void convertToRodir() + { + mWriteDir = FWGSLib.getExternalFilesDir(this); + + new AlertDialog.Builder( this ) + .setTitle( R.string.convert_to_rodir ) + .setMessage( String.format( getString( R.string.rodir_warning, mWriteDir ) ) ) + .setNegativeButton( R.string.cancel, folderAskEnable ) + .setPositiveButton( R.string.ok, new DialogInterface.OnClickListener() + { + @Override + public void onClick( DialogInterface dialog, int whichButton ) + { + XashActivity.mUseRoDir = true; + + SharedPreferences.Editor editor = XashActivity.this.mPref.edit(); + editor.putBoolean("use_rodir", XashActivity.mUseRoDir); + editor.putString("writedir", XashActivity.mWriteDir); + editor.commit(); + + XashActivity.this.launchSurfaceAndEngine(); + } + }) + .setCancelable( false ) + .show(); + } + private void launchSurfaceAndEngine() { Log.v( TAG, "Everything is OK. Launching engine..." ); @@ -468,10 +464,10 @@ public class XashActivity extends Activity { Intent intent = getIntent(); final String enginedir = getFilesDir().getParentFile().getPath() + "/lib"; - String argv = getStringExtraFromIntent( intent, "argv", mPref.getString( "argv", "-dev 3 -log" ) ); - String gamelibdir = getStringExtraFromIntent( intent, "gamelibdir", enginedir ); - String gamedir = getStringExtraFromIntent( intent, "gamedir", "valve" ); - String basedir = getStringExtraFromIntent( intent, "basedir", mPref.getString( "basedir", "/sdcard/xash/" ) ); + String argv = FWGSLib.getStringExtraFromIntent( intent, "argv", mPref.getString( "argv", "-dev 3 -log" ) ); + String gamelibdir = FWGSLib.getStringExtraFromIntent( intent, "gamelibdir", enginedir ); + String gamedir = FWGSLib.getStringExtraFromIntent( intent, "gamedir", "valve" ); + String basedir = FWGSLib.getStringExtraFromIntent( intent, "basedir", mPref.getString( "basedir", "/sdcard/xash/" ) ); String gdbsafe = intent.getStringExtra( "gdbsafe" ); bIsCstrike = ( gamedir.equals("cstrike") || gamedir.equals("czero") || gamedir.equals("czeror") ); diff --git a/src/su/xash/fwgslib/FWGSLib.java b/src/su/xash/fwgslib/FWGSLib.java index 86eb2813..c1a41ee8 100644 --- a/src/su/xash/fwgslib/FWGSLib.java +++ b/src/su/xash/fwgslib/FWGSLib.java @@ -127,6 +127,17 @@ public class FWGSLib return (metrics.widthPixels > metrics.heightPixels); } + public static String getStringExtraFromIntent( Intent intent, String extraString, String ifNotFound ) + { + String ret = intent.getStringExtra( extraString ); + if( ret == null ) + { + ret = ifNotFound; + } + + return ret; + } + public static final int sdk = Integer.valueOf(Build.VERSION.SDK); }