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);
}