Revision 93a1c364
Added by Leszek Koltunski almost 3 years ago
| src/main/java/org/distorted/dialogs/RubikDialogSolverView.java | ||
|---|---|---|
| 1 | /////////////////////////////////////////////////////////////////////////////////////////////////// | |
| 2 | // Copyright 2023 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.util.TypedValue; | |
| 13 | import android.view.View; | |
| 14 | import android.widget.Button; | |
| 15 | import android.widget.ImageView; | |
| 16 | import android.widget.LinearLayout; | |
| 17 | import android.widget.TextView; | |
| 18 |  | |
| 19 | import org.distorted.main.R; | |
| 20 | import org.distorted.main.RubikActivity; | |
| 21 | import org.distorted.objects.RubikObject; | |
| 22 | import org.distorted.objects.RubikObjectList; | |
| 23 | import org.distorted.screens.ScreenList; | |
| 24 |  | |
| 25 | /////////////////////////////////////////////////////////////////////////////////////////////////// | |
| 26 |  | |
| 27 | public class RubikDialogSolverView | |
| 28 |   {
 | |
| 29 | private final View mView; | |
| 30 |  | |
| 31 | /////////////////////////////////////////////////////////////////////////////////////////////////// | |
| 32 |  | |
| 33 | public RubikDialogSolverView(final RubikActivity act, final RubikDialogSolvers dialog, int object, int title, int desc, boolean implemented, int padding, int fontSize, | |
| 34 | LinearLayout.LayoutParams pView, LinearLayout.LayoutParams pText, LinearLayout.LayoutParams pButt ) | |
| 35 |     {
 | |
| 36 | mView = act.getLayoutInflater().inflate(R.layout.dialog_solvers_pane, null); | |
| 37 | mView.setLayoutParams(pView); | |
| 38 | mView.setPadding(padding,padding,padding,padding); | |
| 39 |  | |
| 40 | TextView titleView = mView.findViewById(R.id.solvers_pane_title); | |
| 41 | titleView.setText(title); | |
| 42 | TextView descView = mView.findViewById(R.id.solvers_pane_description); | |
| 43 | descView.setText(desc); | |
| 44 |  | |
| 45 | titleView.setLayoutParams(pText); | |
| 46 | descView.setLayoutParams(pText); | |
| 47 |  | |
| 48 | ImageView icon = mView.findViewById(R.id.solvers_pane_image); | |
| 49 | RubikObject robject = RubikObjectList.getObject(object); | |
| 50 | if( robject!=null ) robject.setIconTo(act,icon); | |
| 51 |  | |
| 52 | Button button = mView.findViewById(R.id.solvers_pane_button); | |
| 53 |  | |
| 54 | button.setOnClickListener( new View.OnClickListener() | |
| 55 |       {
 | |
| 56 | @Override | |
| 57 | public void onClick(View v) | |
| 58 |         {
 | |
| 59 | dialog.dismiss(); | |
| 60 | ScreenList.switchScreen(act, ScreenList.SVER); | |
| 61 | } | |
| 62 | }); | |
| 63 |  | |
| 64 | button.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize); | |
| 65 | button.setLayoutParams(pButt); | |
| 66 | } | |
| 67 |  | |
| 68 | /////////////////////////////////////////////////////////////////////////////////////////////////// | |
| 69 |  | |
| 70 | public View getView() | |
| 71 |     {
 | |
| 72 | return mView; | |
| 73 | } | |
| 74 | } | |
| src/main/java/org/distorted/dialogs/RubikDialogSolvers.java | ||
|---|---|---|
| 1 | /////////////////////////////////////////////////////////////////////////////////////////////////// | |
| 2 | // Copyright 2022 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.LinearLayout; | |
| 15 | import android.widget.TextView; | |
| 16 |  | |
| 17 | import androidx.fragment.app.FragmentActivity; | |
| 18 |  | |
| 19 | import org.distorted.main.R; | |
| 20 | import org.distorted.main.RubikActivity; | |
| 21 | import org.distorted.solvers.ImplementedSolversList; | |
| 22 |  | |
| 23 | /////////////////////////////////////////////////////////////////////////////////////////////////// | |
| 24 |  | |
| 25 | public class RubikDialogSolvers extends RubikDialogAbstract | |
| 26 |   {
 | |
| 27 |   public int getResource()      { return R.layout.dialog_scrollable_panes; }
 | |
| 28 |   public int getTitleResource() { return R.string.solver; }
 | |
| 29 |   public boolean hasArgument()  { return false; }
 | |
| 30 |   public int getPositive()      { return R.string.ok; }
 | |
| 31 |   public int getNegative()      { return -1; }
 | |
| 32 |  | |
| 33 | /////////////////////////////////////////////////////////////////////////////////////////////////// | |
| 34 |  | |
| 35 | public void positiveAction() | |
| 36 |     {
 | |
| 37 |  | |
| 38 | } | |
| 39 |  | |
| 40 | /////////////////////////////////////////////////////////////////////////////////////////////////// | |
| 41 |  | |
| 42 | public void negativeAction() | |
| 43 |     {
 | |
| 44 |  | |
| 45 | } | |
| 46 |  | |
| 47 | /////////////////////////////////////////////////////////////////////////////////////////////////// | |
| 48 |  | |
| 49 | public void prepareBody(Dialog dialog, View view, FragmentActivity act, float size) | |
| 50 |     {
 | |
| 51 | int minH = (int)(mHeight*0.25f); | |
| 52 | int margin= (int)(mHeight*0.01f); | |
| 53 | int sizeH = (int)(mHeight*0.14f); | |
| 54 | int textH = (int)(sizeH*0.27f); | |
| 55 | int buttH = (int)(sizeH*0.35f); | |
| 56 | int padd = (int)(mHeight*0.01f); | |
| 57 | int font = (int)(mHeight*0.02f); | |
| 58 |  | |
| 59 | LinearLayout layout= view.findViewById(R.id.updates_main_layout); | |
| 60 | TextView text = view.findViewById(R.id.updates_message); | |
| 61 | text.setVisibility(View.GONE); | |
| 62 |  | |
| 63 | layout.setMinimumHeight(minH); | |
| 64 | view.setMinimumHeight(minH); | |
| 65 |  | |
| 66 | LinearLayout.LayoutParams pV = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, sizeH ); | |
| 67 | pV.setMargins(margin, margin, margin, 0); | |
| 68 | LinearLayout.LayoutParams pT = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, textH ); | |
| 69 | LinearLayout.LayoutParams pB = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, buttH ); | |
| 70 |  | |
| 71 | int num = ImplementedSolversList.NUM_OBJECTS; | |
| 72 | RubikActivity ract = (RubikActivity) getContext(); | |
| 73 |  | |
| 74 | for(int i=0; i<num; i++) | |
| 75 |       {
 | |
| 76 | ImplementedSolversList solver = ImplementedSolversList.getSolver(i); | |
| 77 | int object = solver.getObject(); | |
| 78 | int title = solver.getTitle(); | |
| 79 | int description = solver.getDescription(); | |
| 80 | boolean implemented = solver.isImplemented(); | |
| 81 |  | |
| 82 | RubikDialogSolverView pane = new RubikDialogSolverView(ract,this,object,title,description,implemented, padd, font, pV,pT,pB); | |
| 83 | layout.addView(pane.getView()); | |
| 84 | } | |
| 85 | } | |
| 86 |  | |
| 87 | /////////////////////////////////////////////////////////////////////////////////////////////////// | |
| 88 |  | |
| 89 | public static String getDialogTag() | |
| 90 |     {
 | |
| 91 | return "DialogSolvers"; | |
| 92 | } | |
| 93 | } | |
| src/main/java/org/distorted/dialogs/RubikDialogUpdates.java | ||
|---|---|---|
| 35 | 35 |  | 
| 36 | 36 | /////////////////////////////////////////////////////////////////////////////////////////////////// | 
| 37 | 37 |  | 
| 38 |   public int getResource()      { return R.layout.dialog_updates; }
 | |
| 38 |   public int getResource()      { return R.layout.dialog_scrollable_panes; }
 | |
| 39 | 39 |   public int getTitleResource() { return R.string.updates; }
 | 
| 40 | 40 |   public boolean hasArgument()  { return false; }
 | 
| 41 | 41 |   public int getPositive()      { return R.string.ok; }
 | 
| src/main/java/org/distorted/screens/RubikScreenPlay.java | ||
|---|---|---|
| 30 | 30 | import android.widget.RelativeLayout; | 
| 31 | 31 | import android.widget.TextView; | 
| 32 | 32 |  | 
| 33 | import org.distorted.dialogs.RubikDialogSolvers; | |
| 33 | 34 | import org.distorted.dialogs.RubikDialogStarsStatus; | 
| 34 | 35 | import org.distorted.dialogs.RubikDialogUpdates; | 
| 35 | 36 | import org.distorted.external.RubikNetwork; | 
| ... | ... | |
| 380 | 381 | stars.setVisibility(GONE); | 
| 381 | 382 | } | 
| 382 | 383 |  | 
| 384 | Button solver = layout.findViewById(R.id.menuSolver); | |
| 385 | solver.setTextSize(TypedValue.COMPLEX_UNIT_PX, mMenuTextSize); | |
| 386 | solver.setOnClickListener( new View.OnClickListener() | |
| 387 |         {
 | |
| 388 | @Override | |
| 389 | public void onClick(View v) | |
| 390 |           {
 | |
| 391 | mMenuPopup.dismiss(); | |
| 392 | RubikDialogSolvers solvers = new RubikDialogSolvers(); | |
| 393 | solvers.show(act.getSupportFragmentManager(), RubikDialogSolvers.getDialogTag() ); | |
| 394 | } | |
| 395 | }); | |
| 396 |  | |
| 383 | 397 | Button highScores = layout.findViewById(R.id.menuHighScores); | 
| 384 | 398 | highScores.setTextSize(TypedValue.COMPLEX_UNIT_PX, mMenuTextSize); | 
| 385 | 399 | highScores.setOnClickListener( new View.OnClickListener() | 
| ... | ... | |
| 409 | 423 | } | 
| 410 | 424 | }); | 
| 411 | 425 |  | 
| 412 | Button solver = layout.findViewById(R.id.menuSolver); | |
| 413 | solver.setTextSize(TypedValue.COMPLEX_UNIT_PX, mMenuTextSize); | |
| 414 | solver.setOnClickListener( new View.OnClickListener() | |
| 415 |         {
 | |
| 416 | @Override | |
| 417 | public void onClick(View v) | |
| 418 |           {
 | |
| 419 | mMenuPopup.dismiss(); | |
| 420 | ScreenList.switchScreen(act, ScreenList.SVER); | |
| 421 | } | |
| 422 | }); | |
| 423 |  | |
| 424 | 426 | Button tutorials = layout.findViewById(R.id.menuTutorials); | 
| 425 | 427 | tutorials.setTextSize(TypedValue.COMPLEX_UNIT_PX, mMenuTextSize); | 
| 426 | 428 | tutorials.setOnClickListener( new View.OnClickListener() | 
| src/main/java/org/distorted/screens/RubikScreenSolver.java | ||
|---|---|---|
| 24 | 24 | import android.widget.LinearLayout; | 
| 25 | 25 |  | 
| 26 | 26 | import org.distorted.objectlib.main.ObjectControl; | 
| 27 | import org.distorted.objectlib.main.ObjectSignatures; | |
| 27 | 28 | import org.distorted.objectlib.main.TwistyObject; | 
| 28 | 29 |  | 
| 29 | 30 | import org.distorted.dialogs.RubikDialogSolverError; | 
| ... | ... | |
| 73 | 74 | mWeakAct = new WeakReference<>(act); | 
| 74 | 75 | mSolving = false; | 
| 75 | 76 |  | 
| 76 |     int currentObject= ImplementedSolversList.getObject(0);
 | |
| 77 |     int currentObject= ObjectSignatures.CUBE_3;//ImplementedSolversList.getObject(0); //TODO
 | |
| 77 | 78 | act.changeIfDifferent(currentObject,control); | 
| 78 | 79 | control.solveOnly(); | 
| 79 | 80 |  | 
| src/main/java/org/distorted/solvers/ImplementedSolversList.java | ||
|---|---|---|
| 9 | 9 |  | 
| 10 | 10 | package org.distorted.solvers; | 
| 11 | 11 |  | 
| 12 | import org.distorted.main.R; | |
| 12 | 13 | import org.distorted.objectlib.main.ObjectSignatures; | 
| 13 | 14 |  | 
| 14 | 15 | /////////////////////////////////////////////////////////////////////////////////////////////////// | 
| 15 | 16 |  | 
| 16 | 17 | public enum ImplementedSolversList | 
| 17 | 18 | {
 | 
| 18 | CUBE3 (ObjectSignatures.CUBE_3), | |
| 19 | CUBE3_KOCIEMBA (ObjectSignatures.CUBE_3, R.string.solver_cube3_title, R.string.solver_cube3_description, true), | |
| 20 | PYRAMINX (ObjectSignatures.PYRA_3, R.string.solver_pyra3_title, R.string.solver_pyra3_description, false), | |
| 21 | IVY (ObjectSignatures.IVY_2 , R.string.solver_ivy_title, R.string.solver_ivy_description, false), | |
| 19 | 22 | ; | 
| 20 | 23 |  | 
| 21 | 24 | public static final int NUM_OBJECTS = values().length; | 
| 22 | 25 |  | 
| 23 | 26 | private final int mObject; | 
| 27 | private final int mTitle; | |
| 28 | private final int mDescription; | |
| 29 | private final boolean mImplemented; | |
| 24 | 30 |  | 
| 25 | 31 | private static final ImplementedSolversList[] objects; | 
| 26 | 32 |  | 
| ... | ... | |
| 37 | 43 |  | 
| 38 | 44 | /////////////////////////////////////////////////////////////////////////////////////////////////// | 
| 39 | 45 |  | 
| 40 |   public static int getObject(int ordinal)
 | |
| 46 |   public static ImplementedSolversList getSolver(int ordinal)
 | |
| 41 | 47 |     {
 | 
| 42 |     return objects[ordinal].mObject;
 | |
| 48 | return objects[ordinal]; | |
| 43 | 49 | } | 
| 44 | 50 |  | 
| 45 | 51 | /////////////////////////////////////////////////////////////////////////////////////////////////// | 
| 46 | 52 |  | 
| 47 | ImplementedSolversList(int object) | |
| 53 |   ImplementedSolversList(int object, int title, int descripton, boolean implemented)
 | |
| 48 | 54 |     {
 | 
| 49 | mObject= object; | |
| 55 | mObject = object; | |
| 56 | mTitle = title; | |
| 57 | mDescription = descripton; | |
| 58 | mImplemented = implemented; | |
| 59 | } | |
| 60 |  | |
| 61 | /////////////////////////////////////////////////////////////////////////////////////////////////// | |
| 62 |  | |
| 63 | public int getObject() | |
| 64 |     {
 | |
| 65 | return mObject; | |
| 66 | } | |
| 67 |  | |
| 68 | /////////////////////////////////////////////////////////////////////////////////////////////////// | |
| 69 |  | |
| 70 | public int getTitle() | |
| 71 |     {
 | |
| 72 | return mTitle; | |
| 73 | } | |
| 74 |  | |
| 75 | /////////////////////////////////////////////////////////////////////////////////////////////////// | |
| 76 |  | |
| 77 | public int getDescription() | |
| 78 |     {
 | |
| 79 | return mDescription; | |
| 80 | } | |
| 81 |  | |
| 82 | /////////////////////////////////////////////////////////////////////////////////////////////////// | |
| 83 |  | |
| 84 | public boolean isImplemented() | |
| 85 |     {
 | |
| 86 | return mImplemented; | |
| 50 | 87 | } | 
| 51 | 88 | } | 
| src/main/res/layout/dialog_scrollable_panes.xml | ||
|---|---|---|
| 1 | <?xml version="1.0" encoding="utf-8"?> | |
| 2 | <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" | |
| 3 | android:id="@+id/updates_scroll" | |
| 4 | android:layout_width="match_parent" | |
| 5 | android:layout_height="match_parent" | |
| 6 | android:paddingLeft="10dp" | |
| 7 | android:paddingRight="10dp"> | |
| 8 |  | |
| 9 | <LinearLayout | |
| 10 | android:id="@+id/updates_main_layout" | |
| 11 | android:layout_width="match_parent" | |
| 12 | android:layout_height="wrap_content" | |
| 13 | android:background="@color/black" | |
| 14 | android:paddingBottom="8dp" | |
| 15 | android:orientation="vertical"> | |
| 16 |  | |
| 17 | <TextView | |
| 18 | android:id="@+id/updates_message" | |
| 19 | android:layout_width="match_parent" | |
| 20 | android:layout_height="match_parent" | |
| 21 | android:gravity="center"/> | |
| 22 |  | |
| 23 | </LinearLayout> | |
| 24 |  | |
| 25 | </ScrollView> | |
| src/main/res/layout/dialog_solvers_pane.xml | ||
|---|---|---|
| 1 | <?xml version="1.0" encoding="utf-8"?> | |
| 2 | <LinearLayout | |
| 3 | xmlns:android="http://schemas.android.com/apk/res/android" | |
| 4 | android:layout_width="match_parent" | |
| 5 | android:layout_height="wrap_content" | |
| 6 | android:background="@color/medium_grey" | |
| 7 | android:padding="8dp" | |
| 8 | android:orientation="horizontal"> | |
| 9 |  | |
| 10 | <LinearLayout | |
| 11 | android:layout_width="0dp" | |
| 12 | android:layout_height="match_parent" | |
| 13 | android:orientation="horizontal" | |
| 14 | android:layout_weight="0.5"> | |
| 15 |  | |
| 16 | <ImageView | |
| 17 | android:id="@+id/solvers_pane_image" | |
| 18 | android:scaleType="fitCenter" | |
| 19 | android:layout_width="match_parent" | |
| 20 | android:layout_height="match_parent"/> | |
| 21 | </LinearLayout> | |
| 22 |  | |
| 23 | <LinearLayout | |
| 24 | android:layout_width="0dp" | |
| 25 | android:layout_height="match_parent" | |
| 26 | android:orientation="vertical" | |
| 27 | android:layout_marginStart="8dp" | |
| 28 | android:layout_weight="1.0"> | |
| 29 |  | |
| 30 | <TextView | |
| 31 | android:id="@+id/solvers_pane_title" | |
| 32 | android:gravity="top|start" | |
| 33 | android:layout_width="match_parent" | |
| 34 | android:layout_height="wrap_content" | |
| 35 | android:singleLine="true" | |
| 36 | android:textStyle="bold"/> | |
| 37 |  | |
| 38 | <TextView | |
| 39 | android:id="@+id/solvers_pane_description" | |
| 40 | android:gravity="top|start" | |
| 41 | android:layout_width="wrap_content" | |
| 42 | android:layout_height="wrap_content" | |
| 43 | android:singleLine="true"/> | |
| 44 |  | |
| 45 | <Button | |
| 46 | android:id="@+id/solvers_pane_button" | |
| 47 | android:layout_width="match_parent" | |
| 48 | android:layout_height="wrap_content" | |
| 49 | android:backgroundTint="@color/black" | |
| 50 | android:minHeight="0dp" | |
| 51 | android:minWidth="0dp" | |
| 52 | android:insetTop="0dp" | |
| 53 | android:insetBottom="0dp" | |
| 54 | android:text="@string/use_solver"/> | |
| 55 |  | |
| 56 | </LinearLayout> | |
| 57 | </LinearLayout> | |
| src/main/res/layout/dialog_updates.xml | ||
|---|---|---|
| 1 | <?xml version="1.0" encoding="utf-8"?> | |
| 2 | <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" | |
| 3 | android:id="@+id/updates_scroll" | |
| 4 | android:layout_width="match_parent" | |
| 5 | android:layout_height="match_parent" | |
| 6 | android:paddingLeft="10dp" | |
| 7 | android:paddingRight="10dp"> | |
| 8 |  | |
| 9 | <LinearLayout | |
| 10 | android:id="@+id/updates_main_layout" | |
| 11 | android:layout_width="match_parent" | |
| 12 | android:layout_height="wrap_content" | |
| 13 | android:background="@color/black" | |
| 14 | android:paddingBottom="8dp" | |
| 15 | android:orientation="vertical"> | |
| 16 |  | |
| 17 | <TextView | |
| 18 | android:id="@+id/updates_message" | |
| 19 | android:layout_width="match_parent" | |
| 20 | android:layout_height="match_parent" | |
| 21 | android:gravity="center"/> | |
| 22 |  | |
| 23 | </LinearLayout> | |
| 24 |  | |
| 25 | </ScrollView> | |
| src/main/res/values-de/strings.xml | ||
|---|---|---|
| 43 | 43 | <string name="settings">Scramble-Einstellungen</string> | 
| 44 | 44 | <string name="depth">Tiefe</string> | 
| 45 | 45 | <string name="animation">Animation</string> | 
| 46 | <string name="updates">Aktualisierungen</string> | |
| 47 | <string name="no_updates">Nicht gefunden</string> | |
| 48 | <string name="install">Installieren</string> | |
| 49 | <string name="abandon_solve">Give up</string> | |
| 50 | <string name="use_solver">Benutze</string> | |
| 46 | 51 |  | 
| 47 | 52 | <string name="stars">Sterne</string> | 
| 48 | 53 | <string name="scores">Highscores</string> | 
| ... | ... | |
| 52 | 57 | <string name="tutorials">Lernprogrammen</string> | 
| 53 | 58 | <string name="about">Über die App</string> | 
| 54 | 59 | <string name="bandaged">Bandaged</string> | 
| 55 | <string name="updates">Aktualisierungen</string> | |
| 56 | <string name="no_updates">Nicht gefunden</string> | |
| 57 | <string name="install">Installieren</string> | |
| 58 | <string name="abandon_solve">Gib auf</string> | |
| 59 | 60 |  | 
| 60 | 61 | <string name="buy_one">Diesen Würfel freischalten</string> | 
| 61 | 62 | <string name="buy_all">Alle Würfel freischalten</string> | 
| src/main/res/values-es/strings.xml | ||
|---|---|---|
| 43 | 43 | <string name="settings">Ajustes del revuelto</string> | 
| 44 | 44 | <string name="depth">Profundidad</string> | 
| 45 | 45 | <string name="animation">Animación</string> | 
| 46 | <string name="updates">Actualizaciones</string> | |
| 47 | <string name="no_updates">Extraviado</string> | |
| 48 | <string name="install">Instalar</string> | |
| 49 | <string name="abandon_solve">Abandonar</string> | |
| 50 | <string name="use_solver">Utilizar</string> | |
| 46 | 51 |  | 
| 47 | 52 | <string name="stars">Estrellas</string> | 
| 48 | 53 | <string name="scores">Leaderboard</string> | 
| ... | ... | |
| 52 | 57 | <string name="tutorials">Tutoriales</string> | 
| 53 | 58 | <string name="about">Acerca de</string> | 
| 54 | 59 | <string name="bandaged">Bandaged</string> | 
| 55 | <string name="updates">Actualizaciones</string> | |
| 56 | <string name="no_updates">Extraviado</string> | |
| 57 | <string name="install">Instalar</string> | |
| 58 | <string name="abandon_solve">Abandonar</string> | |
| 59 | 60 |  | 
| 60 | 61 | <string name="buy_one">Desbloquear este cubo</string> | 
| 61 | 62 | <string name="buy_all">Desbloquear todos los cubos</string> | 
| src/main/res/values-fr/strings.xml | ||
|---|---|---|
| 43 | 43 | <string name="settings">Paramètres de brouillage</string> | 
| 44 | 44 | <string name="depth">Profondeur</string> | 
| 45 | 45 | <string name="animation">Animation</string> | 
| 46 | <string name="updates">Mises à jour</string> | |
| 47 | <string name="no_updates">Pas trouvé</string> | |
| 48 | <string name="install">Installer</string> | |
| 49 | <string name="abandon_solve">Abandonner</string> | |
| 50 | <string name="use_solver">Utiliser</string> | |
| 46 | 51 |  | 
| 47 | 52 | <string name="stars">Étoiles</string> | 
| 48 | 53 | <string name="scores">Meilleurs scores</string> | 
| ... | ... | |
| 52 | 57 | <string name="tutorials">Tutoriels</string> | 
| 53 | 58 | <string name="about">À propos de</string> | 
| 54 | 59 | <string name="bandaged">Bandaged</string> | 
| 55 | <string name="updates">Mises à jour</string> | |
| 56 | <string name="no_updates">Pas trouvé</string> | |
| 57 | <string name="install">Installer</string> | |
| 58 | <string name="abandon_solve">Abandonner</string> | |
| 59 | 60 |  | 
| 60 | 61 | <string name="buy_one">Déverrouiller ce cube</string> | 
| 61 | 62 | <string name="buy_all">Débloquer tous les cubes</string> | 
| src/main/res/values-ja/strings.xml | ||
|---|---|---|
| 43 | 43 | <string name="settings">スクランブルの設定</string> | 
| 44 | 44 | <string name="depth">深さ</string> | 
| 45 | 45 | <string name="animation">効果</string> | 
| 46 | <string name="updates">更新</string> | |
| 47 | <string name="no_updates">見つかりません</string> | |
| 48 | <string name="install">インストール</string> | |
| 49 | <string name="abandon_solve">あきらめる</string> | |
| 50 | <string name="use_solver">使用する</string> | |
| 46 | 51 |  | 
| 47 | 52 | <string name="stars">星</string> | 
| 48 | 53 | <string name="scores">ハイスコア</string> | 
| ... | ... | |
| 52 | 57 | <string name="tutorials">チュートリアル</string> | 
| 53 | 58 | <string name="about">アプリについて</string> | 
| 54 | 59 | <string name="bandaged">包帯</string> | 
| 55 | <string name="updates">更新</string> | |
| 56 | <string name="no_updates">見つかりません</string> | |
| 57 | <string name="install">インストール</string> | |
| 58 | <string name="abandon_solve">あきらめる</string> | |
| 60 |  | |
| 59 | 61 |  | 
| 60 | 62 | <string name="buy_one">このパズルのロックを解除する</string> | 
| 61 | 63 | <string name="buy_all">すべてのパズルを解除する</string> | 
| src/main/res/values-ko/strings.xml | ||
|---|---|---|
| 43 | 43 | <string name="settings">스크램블 설정</string> | 
| 44 | 44 | <string name="depth">깊이</string> | 
| 45 | 45 | <string name="animation">효과</string> | 
| 46 | <string name="updates">업데이트</string> | |
| 47 | <string name="no_updates">업데이트가 없습니다</string> | |
| 48 | <string name="install">설치</string> | |
| 49 | <string name="abandon_solve">포기</string> | |
| 50 | <string name="use_solver">사용</string> | |
| 46 | 51 |  | 
| 47 | 52 | <string name="stars">별</string> | 
| 48 | 53 | <string name="scores">고득점</string> | 
| ... | ... | |
| 52 | 57 | <string name="tutorials">튜토리얼</string> | 
| 53 | 58 | <string name="about">정보</string> | 
| 54 | 59 | <string name="bandaged">밴디지</string> | 
| 55 | <string name="updates">업데이트</string> | |
| 56 | <string name="no_updates">업데이트가 없습니다</string> | |
| 57 | <string name="install">설치</string> | |
| 58 | <string name="abandon_solve">포기</string> | |
| 59 | 60 |  | 
| 60 | 61 | <string name="buy_one">이 큐브 잠금 해제</string> | 
| 61 | 62 | <string name="buy_all">모든 큐브 잠금 해제</string> | 
| src/main/res/values-pl/strings.xml | ||
|---|---|---|
| 43 | 43 | <string name="settings">Ustawienia Mieszania</string> | 
| 44 | 44 | <string name="depth">Głębokość</string> | 
| 45 | 45 | <string name="animation">Animacja</string> | 
| 46 | <string name="updates">Aktualizacje</string> | |
| 47 | <string name="no_updates">Nie znaleziono</string> | |
| 48 | <string name="install">Zainstaluj</string> | |
| 49 | <string name="abandon_solve">Zrezygnuj</string> | |
| 50 | <string name="use_solver">Użyj</string> | |
| 46 | 51 |  | 
| 47 | 52 | <string name="stars">Gwiazdki</string> | 
| 48 | 53 | <string name="scores">Lista najlepszych</string> | 
| ... | ... | |
| 52 | 57 | <string name="tutorials">Tutoriale</string> | 
| 53 | 58 | <string name="about">O aplikacji</string> | 
| 54 | 59 | <string name="bandaged">Bandaged</string> | 
| 55 | <string name="updates">Aktualizacje</string> | |
| 56 | <string name="no_updates">Nie znaleziono</string> | |
| 57 | <string name="install">Zainstaluj</string> | |
| 58 | <string name="abandon_solve">Zrezygnuj</string> | |
| 59 | 60 |  | 
| 60 | 61 | <string name="buy_one">Odblokuj tą kostkę</string> | 
| 61 | 62 | <string name="buy_all">Odblokuj wszystkie kostki</string> | 
| src/main/res/values-ru/strings.xml | ||
|---|---|---|
| 43 | 43 | <string name="settings">Настройки скрэмбла</string> | 
| 44 | 44 | <string name="depth">Глубина</string> | 
| 45 | 45 | <string name="animation">Эффект</string> | 
| 46 | <string name="updates">Обновления</string> | |
| 47 | <string name="no_updates">Не найдено</string> | |
| 48 | <string name="install">Установите</string> | |
| 49 | <string name="abandon_solve">Сдаться</string> | |
| 50 | <string name="use_solver">Попробуй</string> | |
| 46 | 51 |  | 
| 47 | 52 | <string name="stars">Звезды</string> | 
| 48 | 53 | <string name="scores">Высокие баллы</string> | 
| ... | ... | |
| 52 | 57 | <string name="tutorials">Учебники</string> | 
| 53 | 58 | <string name="about">О нас</string> | 
| 54 | 59 | <string name="bandaged">Bandaged</string> | 
| 55 | <string name="updates">Обновления</string> | |
| 56 | <string name="no_updates">Не найдено</string> | |
| 57 | <string name="install">Установите</string> | |
| 58 | <string name="abandon_solve">Сдаться</string> | |
| 59 | 60 |  | 
| 60 | 61 | <string name="buy_one">Разблокируйте этот куб</string> | 
| 61 | 62 | <string name="buy_all">Разблокируйте все кубы</string> | 
| src/main/res/values-zh-rCN/strings.xml | ||
|---|---|---|
| 43 | 43 | <string name="settings">乱码设置</string> | 
| 44 | 44 | <string name="depth">深度</string> | 
| 45 | 45 | <string name="animation">动画</string> | 
| 46 | <string name="updates">更新</string> | |
| 47 | <string name="no_updates">未找到更新</string> | |
| 48 | <string name="install">安装</string> | |
| 49 | <string name="abandon_solve">放弃</string> | |
| 50 | <string name="use_solver">尝试</string> | |
| 46 | 51 |  | 
| 47 | 52 | <string name="stars">星星</string> | 
| 48 | 53 | <string name="scores">高分</string> | 
| ... | ... | |
| 52 | 57 | <string name="tutorials">讲解</string> | 
| 53 | 58 | <string name="about">关于</string> | 
| 54 | 59 | <string name="bandaged">捆绑魔方</string> | 
| 55 | <string name="updates">更新</string> | |
| 56 | <string name="no_updates">未找到更新</string> | |
| 57 | <string name="install">安装</string> | |
| 58 | <string name="abandon_solve">放弃</string> | |
| 59 | 60 |  | 
| 60 | 61 | <string name="buy_one">解锁这个立方体</string> | 
| 61 | 62 | <string name="buy_all">解锁所有立方体</string> | 
| src/main/res/values-zh-rTW/strings.xml | ||
|---|---|---|
| 43 | 43 | <string name="settings">加擾設置</string> | 
| 44 | 44 | <string name="depth">深度</string> | 
| 45 | 45 | <string name="animation">動畫</string> | 
| 46 | <string name="updates">更新</string> | |
| 47 | <string name="no_updates">未找到更新</string> | |
| 48 | <string name="install">安裝</string> | |
| 49 | <string name="abandon_solve">放棄</string> | |
| 50 | <string name="use_solver">嘗試</string> | |
| 46 | 51 |  | 
| 47 | 52 | <string name="stars">星星</string> | 
| 48 | 53 | <string name="scores">高分</string> | 
| ... | ... | |
| 52 | 57 | <string name="tutorials">講解</string> | 
| 53 | 58 | <string name="about">關於</string> | 
| 54 | 59 | <string name="bandaged">捆绑魔方</string> | 
| 55 | <string name="updates">更新</string> | |
| 56 | <string name="no_updates">未找到更新</string> | |
| 57 | <string name="install">安裝</string> | |
| 58 | <string name="abandon_solve">放棄</string> | |
| 59 | 60 |  | 
| 60 | 61 | <string name="buy_one">解鎖這個立方體</string> | 
| 61 | 62 | <string name="buy_all">解鎖所有立方體</string> | 
| src/main/res/values/strings.xml | ||
|---|---|---|
| 45 | 45 | <string name="settings">Scramble Settings</string> | 
| 46 | 46 | <string name="depth">Depth</string> | 
| 47 | 47 | <string name="animation">Animation</string> | 
| 48 | <string name="updates">Updates</string> | |
| 49 | <string name="no_updates">No update found</string> | |
| 50 | <string name="install">Install</string> | |
| 51 | <string name="abandon_solve">Give up</string> | |
| 52 | <string name="use_solver">Try</string> | |
| 48 | 53 |  | 
| 49 | 54 | <string name="stars">Stars</string> | 
| 50 | 55 | <string name="scores">High Scores</string> | 
| ... | ... | |
| 54 | 59 | <string name="tutorials">Tutorials</string> | 
| 55 | 60 | <string name="about">About</string> | 
| 56 | 61 | <string name="bandaged">Bandaged</string> | 
| 57 | <string name="updates">Updates</string> | |
| 58 | <string name="no_updates">No update found</string> | |
| 59 | <string name="install">Install</string> | |
| 60 | 62 |  | 
| 61 | 63 | <string name="buy_one">Unlock this cube</string> | 
| 62 | 64 | <string name="buy_all">Unlock all cubes</string> | 
| ... | ... | |
| 84 | 86 | <string name="privacy_policy_text" translatable="false">Please see and accept our <a href="https://distorted.org/redmine/projects/magic-cube/wiki/Privacy_policy">Privacy Policy</a></string> | 
| 85 | 87 | <string name="accept" translatable="false">Accept</string> | 
| 86 | 88 | <string name="decline" translatable="false">Decline</string> | 
| 87 | <string name="abandon_solve">Give up</string> | |
| 88 | 89 |  | 
| 89 | 90 | <string name="config_details">Details</string> | 
| 90 | 91 | <string name="config_name">Name</string> | 
| ... | ... | |
| 115 | 116 | <string name="color_red">red</string> | 
| 116 | 117 | <string name="color_orange">orange</string> | 
| 117 | 118 |  | 
| 119 | <string name="solver_cube3_title" translatable="false">Kociemba 3x3 Solver</string> | |
| 120 | <string name="solver_cube3_description" translatable="false">A near-perfect, instantaneous, two-phase 3x3x3 solver. Author: Herbert Kociemba.</string> | |
| 121 | <string name="solver_pyra3_title" translatable="false">Pyraminx Solver</string> | |
| 122 | <string name="solver_pyra3_description" translatable="false">A perfect, instantaneous, tablebase-based Pyraminx solver. Author: Leszek Koltunski.</string> | |
| 123 | <string name="solver_ivy_title" translatable="false">Ivy Solver</string> | |
| 124 | <string name="solver_ivy_description" translatable="false">A perfect, instantaneous, tablebase-based Ivy Cube solver. Author: Leszek Koltunski.</string> | |
| 125 |  | |
| 118 | 126 | <string name="ns_placeholder" translatable="false">+%1$d</string> | 
| 119 | 127 | <string name="sq_placeholder" translatable="false">%1$2d.</string> | 
| 120 | 128 | <string name="mo_placeholder" translatable="false">%1$d/%2$d</string> | 
Also available in: Unified diff
Introduce RubikDialogSolvers.