Project

General

Profile

« Previous | Next » 

Revision 93a1c364

Added by Leszek Koltunski almost 2 years ago

Introduce RubikDialogSolvers.

View differences:

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