Revision e1637420
Added by Leszek Koltunski over 1 year ago
| src/main/java/org/distorted/bandaged/BandagedActivity.java | ||
|---|---|---|
| 29 | 29 |
import androidx.preference.PreferenceManager; |
| 30 | 30 |
|
| 31 | 31 |
import org.distorted.dialogs.RubikDialogError; |
| 32 |
import org.distorted.dialogs.RubikDialogMessage; |
|
| 32 | 33 |
import org.distorted.external.RubikFiles; |
| 33 | 34 |
import org.distorted.library.main.DistortedLibrary; |
| 34 | 35 |
import org.distorted.main.MainActivity; |
| ... | ... | |
| 58 | 59 |
private BandagedScreen mScreen; |
| 59 | 60 |
private boolean mRTL; |
| 60 | 61 |
private int mObjectOrdinal; |
| 62 |
private boolean mDisplayMessageDialog; |
|
| 61 | 63 |
|
| 62 | 64 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 63 | 65 |
|
| ... | ... | |
| 78 | 80 |
mScreenWidth =displaymetrics.widthPixels; |
| 79 | 81 |
mScreenHeight=displaymetrics.heightPixels; |
| 80 | 82 |
|
| 83 |
mDisplayMessageDialog = true; |
|
| 84 |
|
|
| 81 | 85 |
final Configuration config = getResources().getConfiguration(); |
| 82 | 86 |
final int layoutDirection = config.getLayoutDirection(); |
| 83 | 87 |
mRTL = layoutDirection==LAYOUT_DIRECTION_RTL; |
| ... | ... | |
| 230 | 234 |
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); |
| 231 | 235 |
SharedPreferences.Editor editor = preferences.edit(); |
| 232 | 236 |
mScreen.savePreferences(editor); |
| 237 |
|
|
| 238 |
editor.putBoolean("bandageDisplayDialog", mDisplayMessageDialog );
|
|
| 239 |
|
|
| 233 | 240 |
editor.apply(); |
| 234 | 241 |
} |
| 235 | 242 |
|
| ... | ... | |
| 239 | 246 |
{
|
| 240 | 247 |
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); |
| 241 | 248 |
mScreen.restorePreferences(this,preferences); |
| 249 |
|
|
| 250 |
mDisplayMessageDialog = preferences.getBoolean("bandageDisplayDialog",true);
|
|
| 251 |
|
|
| 252 |
if( mDisplayMessageDialog ) |
|
| 253 |
{
|
|
| 254 |
Bundle bundle = new Bundle(); |
|
| 255 |
bundle.putString("argument", getString(R.string.bandage_message) );
|
|
| 256 |
RubikDialogMessage diag = new RubikDialogMessage(); |
|
| 257 |
diag.setArguments(bundle); |
|
| 258 |
diag.show( getSupportFragmentManager(), RubikDialogMessage.getDialogTag() ); |
|
| 259 |
} |
|
| 260 |
} |
|
| 261 |
|
|
| 262 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 263 |
|
|
| 264 |
void doNotShowDialogAnymore() |
|
| 265 |
{
|
|
| 266 |
mDisplayMessageDialog = false; |
|
| 242 | 267 |
} |
| 243 | 268 |
|
| 244 | 269 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| src/main/java/org/distorted/bandaged/BandagedRenderer.java | ||
|---|---|---|
| 290 | 290 |
{
|
| 291 | 291 |
setupIconCreation(act); |
| 292 | 292 |
act.addObject(obj.getShortName()); |
| 293 |
act.doNotShowDialogAnymore(); |
|
| 293 | 294 |
} |
| 294 | 295 |
} |
| 295 | 296 |
|
| src/main/java/org/distorted/config/ConfigActivity.java | ||
|---|---|---|
| 22 | 22 |
import androidx.preference.PreferenceManager; |
| 23 | 23 |
|
| 24 | 24 |
import org.distorted.dialogs.RubikDialogError; |
| 25 |
import org.distorted.dialogs.RubikDialogMessage; |
|
| 25 | 26 |
import org.distorted.library.main.DistortedLibrary; |
| 26 | 27 |
import org.distorted.main.MainActivity; |
| 27 | 28 |
import org.distorted.main.R; |
| ... | ... | |
| 48 | 49 |
private int mCurrentApiVersion; |
| 49 | 50 |
private int mObjectOrdinal; |
| 50 | 51 |
private boolean mSupportsAdjColors; |
| 52 |
private boolean mDisplayMessageDialog; |
|
| 51 | 53 |
|
| 52 | 54 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 53 | 55 |
|
| ... | ... | |
| 60 | 62 |
setContentView(R.layout.config); |
| 61 | 63 |
|
| 62 | 64 |
Bundle b = getIntent().getExtras(); |
| 63 |
|
|
| 64 | 65 |
if(b != null) mObjectOrdinal = b.getInt("obj");
|
| 65 | 66 |
|
| 67 |
mDisplayMessageDialog = true; |
|
| 68 |
|
|
| 66 | 69 |
DisplayMetrics displaymetrics = new DisplayMetrics(); |
| 67 | 70 |
getWindowManager().getDefaultDisplay().getRealMetrics(displaymetrics); |
| 68 | 71 |
mScreenWidth =displaymetrics.widthPixels; |
| ... | ... | |
| 175 | 178 |
OSInterface os = view.getInterface(); |
| 176 | 179 |
os.setPreferences(preferences); |
| 177 | 180 |
|
| 178 |
restorePreferences(); |
|
| 181 |
restorePreferences(preferences);
|
|
| 179 | 182 |
|
| 180 | 183 |
if( mScreen==null ) mScreen = new ConfigScreen(); |
| 181 | 184 |
mScreen.onAttachedToWindow(this,mObjectOrdinal); |
| ... | ... | |
| 193 | 196 |
ConfigSurfaceView view = findViewById(R.id.configSurfaceView); |
| 194 | 197 |
ObjectControl control = view.getObjectControl(); |
| 195 | 198 |
control.repaintPuzzleFace(cubit,face,color); |
| 199 |
mDisplayMessageDialog = false; |
|
| 196 | 200 |
} |
| 197 | 201 |
} |
| 198 | 202 |
|
| ... | ... | |
| 240 | 244 |
os.setEditor(editor); |
| 241 | 245 |
view.getObjectControl().savePreferences(); |
| 242 | 246 |
|
| 247 |
editor.putBoolean("configDisplayDialog", mDisplayMessageDialog );
|
|
| 248 |
|
|
| 243 | 249 |
editor.apply(); |
| 244 | 250 |
} |
| 245 | 251 |
|
| 246 | 252 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 247 | 253 |
|
| 248 |
private void restorePreferences() |
|
| 254 |
private void restorePreferences(SharedPreferences preferences)
|
|
| 249 | 255 |
{
|
| 250 | 256 |
ConfigSurfaceView view = findViewById(R.id.configSurfaceView); |
| 251 | 257 |
view.getObjectControl().restoreStickers(); |
| 258 |
|
|
| 259 |
mDisplayMessageDialog = preferences.getBoolean("configDisplayDialog",true);
|
|
| 260 |
|
|
| 261 |
if( mDisplayMessageDialog ) |
|
| 262 |
{
|
|
| 263 |
Bundle bundle = new Bundle(); |
|
| 264 |
bundle.putString("argument", getString(R.string.config_message) );
|
|
| 265 |
RubikDialogMessage diag = new RubikDialogMessage(); |
|
| 266 |
diag.setArguments(bundle); |
|
| 267 |
diag.show( getSupportFragmentManager(), RubikDialogMessage.getDialogTag() ); |
|
| 268 |
} |
|
| 252 | 269 |
} |
| 253 | 270 |
|
| 254 | 271 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| src/main/java/org/distorted/dialogs/RubikDialogAbandon.java | ||
|---|---|---|
| 11 | 11 |
|
| 12 | 12 |
import android.app.Dialog; |
| 13 | 13 |
import android.view.View; |
| 14 |
import android.widget.TextView; |
|
| 14 | 15 |
|
| 15 | 16 |
import androidx.fragment.app.FragmentActivity; |
| 16 | 17 |
|
| ... | ... | |
| 22 | 23 |
|
| 23 | 24 |
public class RubikDialogAbandon extends RubikDialogAbstract |
| 24 | 25 |
{
|
| 25 |
public int getResource() { return R.layout.abandon_solve; }
|
|
| 26 |
public int getResource() { return R.layout.dialog_message; }
|
|
| 26 | 27 |
public int getTitleResource() { return -1; }
|
| 27 | 28 |
public boolean hasArgument() { return false; }
|
| 28 | 29 |
public int getPositive() { return R.string.yes; }
|
| 29 | 30 |
public int getNegative() { return R.string.no; }
|
| 30 | 31 |
public void negativeAction() { }
|
| 31 |
public void prepareBody(Dialog dialog, View view, FragmentActivity act, float size) { }
|
|
| 32 | 32 |
|
| 33 | 33 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 34 | 34 |
|
| ... | ... | |
| 37 | 37 |
final PlayActivity act = (PlayActivity)getContext(); |
| 38 | 38 |
ScreenList.goBack(act); |
| 39 | 39 |
} |
| 40 |
|
|
| 41 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 42 |
|
|
| 43 |
public void prepareBody(Dialog dialog, View view, FragmentActivity act, float size) |
|
| 44 |
{
|
|
| 45 |
TextView mess = view.findViewById(R.id.dialog_message); |
|
| 46 |
mess.setText(R.string.abandon_solve); |
|
| 47 |
} |
|
| 40 | 48 |
} |
| src/main/java/org/distorted/dialogs/RubikDialogBandagedDelete.java | ||
|---|---|---|
| 28 | 28 |
public boolean hasArgument() { return true; }
|
| 29 | 29 |
public int getPositive() { return R.string.yes; }
|
| 30 | 30 |
public int getNegative() { return R.string.no; }
|
| 31 |
public void negativeAction() { }
|
|
| 31 | 32 |
|
| 32 | 33 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 33 | 34 |
|
| ... | ... | |
| 37 | 38 |
if( bact!=null ) bact.deleteObject(mArgument); |
| 38 | 39 |
} |
| 39 | 40 |
|
| 40 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 41 |
|
|
| 42 |
public void negativeAction() |
|
| 43 |
{
|
|
| 44 |
|
|
| 45 |
} |
|
| 46 |
|
|
| 47 | 41 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 48 | 42 |
|
| 49 | 43 |
public void prepareBody(Dialog dialog, View view, FragmentActivity act, float size) |
| src/main/java/org/distorted/dialogs/RubikDialogMessage.java | ||
|---|---|---|
| 1 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 2 |
// Copyright 2024 Leszek Koltunski // |
|
| 3 |
// // |
|
| 4 |
// This file is part of Magic Cube. // |
|
| 5 |
// // |
|
| 6 |
// Magic Cube is proprietary software licensed under an EULA which you should have received // |
|
| 7 |
// along with the code. If not, check https://distorted.org/magic/License-Magic-Cube.html // |
|
| 8 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 9 |
|
|
| 10 |
package org.distorted.dialogs; |
|
| 11 |
|
|
| 12 |
import android.app.Dialog; |
|
| 13 |
import android.view.View; |
|
| 14 |
import android.widget.TextView; |
|
| 15 |
|
|
| 16 |
import androidx.fragment.app.FragmentActivity; |
|
| 17 |
|
|
| 18 |
import org.distorted.main.R; |
|
| 19 |
|
|
| 20 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 21 |
|
|
| 22 |
public class RubikDialogMessage extends RubikDialogAbstract |
|
| 23 |
{
|
|
| 24 |
public int getResource() { return R.layout.dialog_message; }
|
|
| 25 |
public int getTitleResource() { return -1; }
|
|
| 26 |
public boolean hasArgument() { return true; }
|
|
| 27 |
public int getPositive() { return R.string.ok; }
|
|
| 28 |
public int getNegative() { return -1; }
|
|
| 29 |
public void negativeAction() { }
|
|
| 30 |
public void positiveAction() { }
|
|
| 31 |
|
|
| 32 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 33 |
|
|
| 34 |
public void prepareBody(Dialog dialog, View view, FragmentActivity act, float size) |
|
| 35 |
{
|
|
| 36 |
TextView mess = view.findViewById(R.id.dialog_message); |
|
| 37 |
mess.setText(mArgument); |
|
| 38 |
} |
|
| 39 |
|
|
| 40 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 41 |
|
|
| 42 |
public static String getDialogTag() |
|
| 43 |
{
|
|
| 44 |
return "DialogBandageMessage"; |
|
| 45 |
} |
|
| 46 |
} |
|
| src/main/java/org/distorted/main/MainActivity.java | ||
|---|---|---|
| 473 | 473 |
int vw = v.getWidth(); |
| 474 | 474 |
|
| 475 | 475 |
MainSettingsPopup popup = new MainSettingsPopup(this,mSortMode,mScreenWidth,mScreenHeight); |
| 476 |
popup.displayPopup(this,v,sw,sh,(int)((vw-sw)/2),0);
|
|
| 476 |
popup.displayPopup(this,v,sw,sh,((vw-sw)/2),0); |
|
| 477 | 477 |
} |
| 478 | 478 |
|
| 479 | 479 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| src/main/java/org/distorted/solverui/ScreenSolver.java | ||
|---|---|---|
| 426 | 426 |
ScreenList.switchScreen(act, ScreenList.SOLU); |
| 427 | 427 |
ScreenSolution solution = (ScreenSolution) ScreenList.SOLU.getScreenClass(); |
| 428 | 428 |
solution.setupMoves(act, moves); |
| 429 |
if( moves.length()>0 ) act.doNotShowDialogAnymore(); |
|
| 429 | 430 |
} |
| 430 | 431 |
}); |
| 431 | 432 |
} |
| ... | ... | |
| 448 | 449 |
ScreenList.switchScreen(act, ScreenList.SOLU); |
| 449 | 450 |
ScreenSolution solution = (ScreenSolution) ScreenList.SOLU.getScreenClass(); |
| 450 | 451 |
solution.setupMoves(act, moves); |
| 452 |
if( moves!=null && moves.length>0 ) act.doNotShowDialogAnymore(); |
|
| 451 | 453 |
} |
| 452 | 454 |
}); |
| 453 | 455 |
} |
| src/main/java/org/distorted/solverui/SolverActivity.java | ||
|---|---|---|
| 23 | 23 |
import androidx.preference.PreferenceManager; |
| 24 | 24 |
|
| 25 | 25 |
import org.distorted.dialogs.RubikDialogError; |
| 26 |
import org.distorted.dialogs.RubikDialogMessage; |
|
| 26 | 27 |
import org.distorted.library.main.DistortedLibrary; |
| 27 | 28 |
import org.distorted.library.main.DistortedScreen; |
| 28 | 29 |
import org.distorted.main.MainActivity; |
| ... | ... | |
| 56 | 57 |
private int mHeightUpperBar; |
| 57 | 58 |
private int mSolverOrdinal; |
| 58 | 59 |
private int mObjectOrdinal; |
| 60 |
private boolean mDisplayMessageDialog; |
|
| 59 | 61 |
|
| 60 | 62 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 61 | 63 |
|
| ... | ... | |
| 77 | 79 |
mScreenWidth =displaymetrics.widthPixels; |
| 78 | 80 |
mScreenHeight=displaymetrics.heightPixels; |
| 79 | 81 |
|
| 82 |
mDisplayMessageDialog = true; |
|
| 83 |
|
|
| 80 | 84 |
cutoutHack(); |
| 81 | 85 |
computeBarHeights(); |
| 82 | 86 |
} |
| ... | ... | |
| 222 | 226 |
|
| 223 | 227 |
ScreenList.savePreferences(editor); |
| 224 | 228 |
|
| 229 |
editor.putBoolean("solverDisplayDialog", mDisplayMessageDialog );
|
|
| 230 |
|
|
| 225 | 231 |
boolean success = editor.commit(); |
| 226 | 232 |
if( !success ) android.util.Log.e("D", "Failed to save preferences");
|
| 227 | 233 |
} |
| ... | ... | |
| 236 | 242 |
} |
| 237 | 243 |
|
| 238 | 244 |
ScreenList.restorePreferences(preferences); |
| 245 |
|
|
| 246 |
mDisplayMessageDialog = preferences.getBoolean("solverDisplayDialog",true);
|
|
| 247 |
|
|
| 248 |
if( mDisplayMessageDialog ) |
|
| 249 |
{
|
|
| 250 |
Bundle bundle = new Bundle(); |
|
| 251 |
bundle.putString("argument", getString(R.string.solver_message) );
|
|
| 252 |
RubikDialogMessage diag = new RubikDialogMessage(); |
|
| 253 |
diag.setArguments(bundle); |
|
| 254 |
diag.show( getSupportFragmentManager(), RubikDialogMessage.getDialogTag() ); |
|
| 255 |
} |
|
| 256 |
} |
|
| 257 |
|
|
| 258 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 259 |
|
|
| 260 |
void doNotShowDialogAnymore() |
|
| 261 |
{
|
|
| 262 |
mDisplayMessageDialog = false; |
|
| 239 | 263 |
} |
| 240 | 264 |
|
| 241 | 265 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| src/main/res/layout/abandon_solve.xml | ||
|---|---|---|
| 1 |
<?xml version="1.0" encoding="utf-8"?> |
|
| 2 |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
|
| 3 |
android:layout_width="fill_parent" |
|
| 4 |
android:layout_height="fill_parent" |
|
| 5 |
android:layout_marginLeft="10dp" |
|
| 6 |
android:layout_marginTop="0dp" |
|
| 7 |
android:layout_marginRight="10dp" |
|
| 8 |
android:background="@color/grey" |
|
| 9 |
android:gravity="center|fill_horizontal"> |
|
| 10 |
|
|
| 11 |
<TextView |
|
| 12 |
android:id="@+id/privacy_string" |
|
| 13 |
android:layout_width="match_parent" |
|
| 14 |
android:layout_height="match_parent" |
|
| 15 |
android:layout_marginLeft="10dp" |
|
| 16 |
android:layout_marginTop="10dp" |
|
| 17 |
android:layout_marginRight="10dp" |
|
| 18 |
android:layout_marginBottom="10dp" |
|
| 19 |
android:gravity="center" |
|
| 20 |
android:text="@string/abandon_solve" |
|
| 21 |
android:textSize="24sp" /> |
|
| 22 |
</LinearLayout> |
|
| src/main/res/layout/dialog_message.xml | ||
|---|---|---|
| 1 |
<?xml version="1.0" encoding="utf-8"?> |
|
| 2 |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" |
|
| 3 |
android:layout_width="fill_parent" |
|
| 4 |
android:layout_height="fill_parent" |
|
| 5 |
android:layout_marginLeft="10dp" |
|
| 6 |
android:layout_marginTop="0dp" |
|
| 7 |
android:layout_marginRight="10dp" |
|
| 8 |
android:background="@color/grey" |
|
| 9 |
android:gravity="center|fill_horizontal"> |
|
| 10 |
|
|
| 11 |
<TextView |
|
| 12 |
android:id="@+id/dialog_message" |
|
| 13 |
android:layout_width="match_parent" |
|
| 14 |
android:layout_height="match_parent" |
|
| 15 |
android:layout_marginLeft="10dp" |
|
| 16 |
android:layout_marginTop="10dp" |
|
| 17 |
android:layout_marginRight="10dp" |
|
| 18 |
android:layout_marginBottom="10dp" |
|
| 19 |
android:gravity="center" |
|
| 20 |
android:textSize="24sp" /> |
|
| 21 |
</LinearLayout> |
|
| src/main/res/values/strings.xml | ||
|---|---|---|
| 114 | 114 |
<string name="config_corner">Corners</string> |
| 115 | 115 |
<string name="config_no_support">Current puzzle does not support adjusting colors.</string> |
| 116 | 116 |
|
| 117 |
<string name="config_message">Touch the stickers to change their color.</string> |
|
| 118 |
<string name="bandage_message">Bandage the cube by touching it.</string> |
|
| 119 |
<string name="solver_message">Set up scrambled position by touching the stickers.</string> |
|
| 120 |
|
|
| 117 | 121 |
<string name="sort_classic">classic</string> |
| 118 | 122 |
<string name="sort_shape">shape</string> |
| 119 | 123 |
<string name="sort_difficulty">difficulty</string> |
Also available in: Unified diff
3 message dialogs.