Project

General

Profile

« Previous | Next » 

Revision 39061cb2

Added by Leszek Koltunski 2 days ago

Progress remembering ongoing solves.

View differences:

src/main/java/org/distorted/dialogs/DialogAbandon.java
10 10
package org.distorted.dialogs;
11 11

  
12 12
import android.app.Dialog;
13
import android.util.TypedValue;
13 14
import android.view.View;
14 15
import android.widget.TextView;
15 16

  
......
24 25
public class DialogAbandon extends DialogAbstract
25 26
  {
26 27
  public int getResource()      { return R.layout.dialog_message; }
27
  public int getTitleResource() { return -1; }
28
  public int getTitleResource() { return R.string.abandon_solve; }
28 29
  public boolean hasArgument()  { return false; }
29 30
  public int getPositive()      { return R.string.yes; }
31
  public int getNeutral()       { return R.string.cancel; }
30 32
  public int getNegative()      { return R.string.no; }
31
  public void negativeAction()  { }
33
  public void neutralAction()   { }
32 34

  
33 35
///////////////////////////////////////////////////////////////////////////////////////////////////
34 36

  
35
  public void positiveAction()
37
  public void negativeAction()
36 38
    {
37 39
    final PlayActivity act = (PlayActivity)getContext();
38 40
    ScreenList.goBack(act);
39 41
    }
40 42

  
43
///////////////////////////////////////////////////////////////////////////////////////////////////
44

  
45
  public void positiveAction()
46
    {
47
    final PlayActivity act = (PlayActivity)getContext();
48

  
49
    if( act!=null )
50
      {
51
      act.rememberSolve();
52
      ScreenList.goBack(act);
53
      }
54
    }
55

  
41 56
///////////////////////////////////////////////////////////////////////////////////////////////////
42 57

  
43 58
  public void prepareBody(Dialog dialog, View view, FragmentActivity act, float size)
44 59
    {
45 60
    TextView mess = view.findViewById(R.id.dialog_message);
46
    mess.setText(R.string.abandon_solve);
61
    mess.setText(R.string.come_back_later);
62
    mess.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
47 63
    }
48 64
  }
src/main/java/org/distorted/dialogs/DialogAbout.java
68 68
  public int getTitleResource() { return PARAMETRIC_TITLE; }
69 69
  public boolean hasArgument()  { return true; }
70 70
  public int getPositive()      { return R.string.ok; }
71
  public int getNeutral()       { return -1; }
71 72
  public int getNegative()      { return -1; }
72 73
  public void positiveAction()  { }
73 74
  public void negativeAction()  { }
75
  public void neutralAction()   { }
74 76

  
75 77
///////////////////////////////////////////////////////////////////////////////////////////////////
76 78

  
src/main/java/org/distorted/dialogs/DialogAbstract.java
14 14
import android.os.Bundle;
15 15
import android.util.DisplayMetrics;
16 16
import android.util.TypedValue;
17
import android.view.Gravity;
17 18
import android.view.LayoutInflater;
18 19
import android.view.View;
19 20
import android.view.Window;
20 21
import android.widget.Button;
22
import android.widget.LinearLayout;
21 23
import android.widget.TextView;
22 24

  
23 25
import androidx.annotation.NonNull;
24 26
import androidx.appcompat.app.AlertDialog;
25 27
import androidx.appcompat.app.AppCompatDialogFragment;
28
import androidx.core.content.ContextCompat;
26 29
import androidx.fragment.app.FragmentActivity;
27 30

  
28 31
import org.distorted.helpers.BaseActivity;
......
44 47
  abstract int getResource();
45 48
  abstract int getTitleResource();
46 49
  abstract int getPositive();
50
  abstract int getNeutral();
47 51
  abstract int getNegative();
48 52
  abstract boolean hasArgument();
49 53
  abstract void positiveAction();
54
  abstract void neutralAction();
50 55
  abstract void negativeAction();
51 56
  abstract void prepareBody(Dialog dialog, View view, FragmentActivity act, float size);
52 57

  
......
69 74
      {
70 75
      Button pos = dialog.getButton(Dialog.BUTTON_POSITIVE);
71 76
      if( pos!=null ) pos.setTextSize(TypedValue.COMPLEX_UNIT_PX, mButSize);
77

  
72 78
      Button neg = dialog.getButton(Dialog.BUTTON_NEGATIVE);
73 79
      if( neg!=null ) neg.setTextSize(TypedValue.COMPLEX_UNIT_PX, mButSize);
80

  
81
      Button neu = dialog.getButton(Dialog.BUTTON_NEUTRAL);
82
      if( neu!=null && getNeutral()>=0 )
83
        {
84
        neu.setTextSize(TypedValue.COMPLEX_UNIT_PX, mButSize);
85
        neu.setTextColor(ContextCompat.getColor(requireContext(), android.R.color.white));
86
        }
74 87
      }
75 88
    }
76 89

  
......
89 102
    mWidth    = displaymetrics.widthPixels;
90 103
    mHeight   = displaymetrics.heightPixels;
91 104
    mTitleSize= mHeight*0.032f;
92
    mButSize  = mHeight*0.040f;
105
    mButSize  = mHeight*0.035f;
93 106
    mTextSize = mHeight*0.025f;
94 107

  
95 108
    if( hasArgument() )
......
143 156
        });
144 157
      }
145 158

  
159
    int neutral = getNeutral();
160
    if( neutral>=0 )
161
      {
162
      builder.setNeutralButton( neutral, new DialogInterface.OnClickListener()
163
        {
164
        @Override
165
        public void onClick(DialogInterface dialog, int which)
166
          {
167
          neutralAction();
168
          }
169
        });
170
      }
171

  
146 172
    int negative = getNegative();
147 173
    if( negative>=0 )
148 174
      {
src/main/java/org/distorted/dialogs/DialogBandagedDelete.java
27 27
  public int getTitleResource() { return R.string.delete_object; }
28 28
  public boolean hasArgument()  { return true; }
29 29
  public int getPositive()      { return R.string.yes; }
30
  public int getNeutral()       { return -1; }
30 31
  public int getNegative()      { return R.string.no; }
31 32
  public void negativeAction()  { }
33
  public void neutralAction()   { }
32 34

  
33 35
///////////////////////////////////////////////////////////////////////////////////////////////////
34 36

  
src/main/java/org/distorted/dialogs/DialogBandagedSave.java
28 28
  public int getTitleResource() { return R.string.save_object; }
29 29
  public boolean hasArgument()  { return false; }
30 30
  public int getPositive()      { return R.string.yes; }
31
  public int getNeutral()       { return -1; }
31 32
  public int getNegative()      { return R.string.no; }
33
  public void neutralAction()   { }
32 34

  
33 35
///////////////////////////////////////////////////////////////////////////////////////////////////
34 36

  
src/main/java/org/distorted/dialogs/DialogCreators.java
99 99
  public int getTitleResource()       { return R.string.creators; }
100 100
  public boolean hasArgument()        { return false; }
101 101
  public int getPositive()            { return R.string.ok; }
102
  public int getNeutral()             { return -1; }
102 103
  public int getNegative()            { return -1; }
103 104
  public void positiveAction()        { }
104 105
  public void negativeAction()        { }
106
  public void neutralAction()         { }
105 107
  public static String getDialogTag() { return "DialogCreators"; }
106 108

  
107 109
///////////////////////////////////////////////////////////////////////////////////////////////////
src/main/java/org/distorted/dialogs/DialogError.java
26 26
  public int getTitleResource() { return R.string.opengl_error; }
27 27
  public boolean hasArgument()  { return false; }
28 28
  public int getPositive()      { return R.string.ok; }
29
  public int getNeutral()       { return -1; }
29 30
  public int getNegative()      { return -1; }
31
  public void neutralAction()   { }
32
  public void negativeAction()  { }
30 33

  
31 34
///////////////////////////////////////////////////////////////////////////////////////////////////
32 35

  
......
36 39
    if( act!=null ) act.finish();
37 40
    }
38 41

  
39
///////////////////////////////////////////////////////////////////////////////////////////////////
40

  
41
  public void negativeAction()
42
    {
43

  
44
    }
45

  
46 42
///////////////////////////////////////////////////////////////////////////////////////////////////
47 43

  
48 44
  public void prepareBody(Dialog dialog, View view, FragmentActivity act, float size)
src/main/java/org/distorted/dialogs/DialogExit.java
25 25
  public int getTitleResource() { return -1; }
26 26
  public boolean hasArgument()  { return false; }
27 27
  public int getPositive()      { return R.string.yes; }
28
  public int getNeutral()       { return -1; }
28 29
  public int getNegative()      { return R.string.no; }
30
  public void neutralAction()   { }
29 31
  public void negativeAction()  { }
30 32
  public void prepareBody(Dialog dialog, View view, FragmentActivity act, float size) { }
31 33

  
src/main/java/org/distorted/dialogs/DialogInterrupt.java
26 26
  public int getTitleResource()       { return -1; }
27 27
  public boolean hasArgument()        { return false; }
28 28
  public int getPositive()            { return R.string.interrupt; }
29
  public int getNeutral()             { return -1; }
29 30
  public int getNegative()            { return -1; }
31
  public void neutralAction()         { }
30 32
  public void negativeAction()        { }
31 33
  public static String getDialogTag() { return "DialogInterrupt"; }
32 34

  
src/main/java/org/distorted/dialogs/DialogMessage.java
25 25
  public int getTitleResource()       { return -1; }
26 26
  public boolean hasArgument()        { return true; }
27 27
  public int getPositive()            { return R.string.ok; }
28
  public int getNeutral()             { return -1; }
28 29
  public int getNegative()            { return -1; }
29 30
  public void negativeAction()        { }
31
  public void neutralAction()         { }
30 32
  public void positiveAction()        { }
31 33
  public static String getDialogTag() { return "DialogBandageMessage"; }
32 34

  
......
37 39
    TextView mess = view.findViewById(R.id.dialog_message);
38 40
    mess.setText(mArgument);
39 41
    }
40

  
41 42
  }
src/main/java/org/distorted/dialogs/DialogNewRecord.java
29 29
  public int getTitleResource() { return R.string.new_record; }
30 30
  public boolean hasArgument()  { return true; }
31 31
  public int getPositive()      { return R.string.yes; }
32
  public int getNeutral()       { return -1; }
32 33
  public int getNegative()      { return R.string.no; }
34
  public void neutralAction()   { }
33 35

  
34 36
///////////////////////////////////////////////////////////////////////////////////////////////////
35 37

  
src/main/java/org/distorted/dialogs/DialogPattern.java
60 60
  public int getTitleResource() { return R.string.choose_pattern; }
61 61
  public boolean hasArgument()  { return true; }
62 62
  public int getPositive()      { return -1; }
63
  public int getNeutral()       { return -1; }
63 64
  public int getNegative()      { return -1; }
64 65
  public void positiveAction()  { }
65 66
  public void negativeAction()  { }
67
  public void neutralAction()   { }
66 68

  
67 69
///////////////////////////////////////////////////////////////////////////////////////////////////
68 70

  
src/main/java/org/distorted/dialogs/DialogScores.java
62 62
  public int getTitleResource() { return R.string.scores; }
63 63
  public boolean hasArgument()  { return true; }
64 64
  public int getPositive()      { return R.string.ok; }
65
  public int getNeutral()       { return -1; }
65 66
  public int getNegative()      { return -1; }
66 67
  public void positiveAction()  { DialogScoresThread.getInstance().exit(); }
68
  public void neutralAction()   { }
67 69
  public void negativeAction()  { }
68 70

  
69 71
///////////////////////////////////////////////////////////////////////////////////////////////////
src/main/java/org/distorted/dialogs/DialogSetName.java
60 60
  public int getTitleResource() { return mArgument.isEmpty() ? R.string.choose_name : R.string.name_taken; }
61 61
  public boolean hasArgument()  { return true; }
62 62
  public int getPositive()      { return R.string.ok; }
63
  public int getNeutral()       { return -1; }
63 64
  public int getNegative()      { return -1; }
65
  public void neutralAction()   { }
64 66

  
65 67
///////////////////////////////////////////////////////////////////////////////////////////////////
66 68

  
src/main/java/org/distorted/dialogs/DialogSolved.java
27 27
  public int getTitleResource() { return R.string.solved; }
28 28
  public boolean hasArgument()  { return true; }
29 29
  public int getPositive()      { return R.string.ok; }
30
  public int getNeutral()       { return -1; }
30 31
  public int getNegative()      { return -1; }
32
  public void neutralAction()   { }
31 33

  
32 34
///////////////////////////////////////////////////////////////////////////////////////////////////
33 35

  
src/main/java/org/distorted/dialogs/DialogSolverError.java
26 26
  public int getTitleResource() { return R.string.error; }
27 27
  public boolean hasArgument()  { return true; }
28 28
  public int getPositive()      { return R.string.ok; }
29
  public int getNeutral()       { return -1; }
29 30
  public int getNegative()      { return -1; }
30 31
  public void positiveAction()  { }
31 32
  public void negativeAction()  { }
33
  public void neutralAction()   { }
32 34

  
33 35
///////////////////////////////////////////////////////////////////////////////////////////////////
34 36

  
src/main/java/org/distorted/dialogs/DialogSolverImpossible.java
26 26
  public int getTitleResource() { return R.string.impossible_position; }
27 27
  public boolean hasArgument()  { return true; }
28 28
  public int getPositive()      { return R.string.ok; }
29
  public int getNeutral()       { return -1; }
29 30
  public int getNegative()      { return -1; }
30 31
  public void positiveAction()  { }
31 32
  public void negativeAction()  { }
33
  public void neutralAction()   { }
32 34

  
33 35
///////////////////////////////////////////////////////////////////////////////////////////////////
34 36

  
src/main/java/org/distorted/dialogs/DialogSolvers.java
50 50
  public int getTitleResource()       { return R.string.solvers; }
51 51
  public boolean hasArgument()        { return true; }
52 52
  public int getPositive()            { return -1; }
53
  public int getNeutral()             { return -1; }
53 54
  public int getNegative()            { return -1; }
54 55
  public static String getDialogTag() { return "DialogSolvers"; }
55 56
  public void positiveAction()        { }
56 57
  public void negativeAction()        { }
58
  public void neutralAction()         { }
57 59

  
58 60
///////////////////////////////////////////////////////////////////////////////////////////////////
59 61

  
src/main/java/org/distorted/dialogs/DialogTutorial.java
67 67
  public int getTitleResource() { return R.string.tutorials; }
68 68
  public boolean hasArgument()  { return true; }
69 69
  public int getPositive()      { return -1; }
70
  public int getNeutral()       { return -1; }
70 71
  public int getNegative()      { return -1; }
71 72
  public void positiveAction()  { }
72 73
  public void negativeAction()  { }
74
  public void neutralAction()   { }
73 75

  
74 76
///////////////////////////////////////////////////////////////////////////////////////////////////
75 77

  
src/main/java/org/distorted/dialogs/DialogUpdates.java
80 80
  public int getTitleResource()       { return R.string.updates; }
81 81
  public boolean hasArgument()        { return false; }
82 82
  public int getPositive()            { return R.string.ok; }
83
  public int getNeutral()             { return -1; }
83 84
  public int getNegative()            { return -1; }
84 85
  public void positiveAction()        { }
85 86
  public void negativeAction()        { }
87
  public void neutralAction()         { }
86 88
  public static String getDialogTag() { return "DialogUpdates"; }
87 89

  
88 90
///////////////////////////////////////////////////////////////////////////////////////////////////
src/main/java/org/distorted/play/PlayActivity.java
296 296
      return mObjectOrdinal;
297 297
      }
298 298

  
299
///////////////////////////////////////////////////////////////////////////////////////////////////
300

  
301
    public void rememberSolve()
302
      {
303
      android.util.Log.e("D", "REMEMBER!");
304
      }
305

  
299 306
///////////////////////////////////////////////////////////////////////////////////////////////////
300 307

  
301 308
    public ObjectControl getControl()
src/main/res/values-de/strings.xml
14 14
    <string name="ok">OK</string>
15 15
    <string name="yes">JA</string>
16 16
    <string name="no">NEIN</string>
17
    <string name="cancel">Abbrechen</string>
17 18
    <string name="you">SIE</string>
18 19
    <string name="solution">Lösung</string>
19 20
    <string name="ready">Bereit?</string>
......
48 49
    <string name="updates">Aktualisierungen</string>
49 50
    <string name="no_updates">Nicht gefunden</string>
50 51
    <string name="install">Installieren</string>
51
    <string name="abandon_solve">Give up</string>
52
    <string name="abandon_solve">Merke diese Lösung</string>
53
    <string name="come_back_later">Wenn ja, können Sie später fortfahren.</string>
52 54
    <string name="use_solver">Verwenden</string>
53 55
    <string name="whatsnew">Was gibt\'s Neues</string>
54 56
    <string name="share">Teilen Sie diese App</string>
src/main/res/values-es/strings.xml
14 14
    <string name="ok">Aceptar</string>
15 15
    <string name="yes">SÍ</string>
16 16
    <string name="no">NO</string>
17
    <string name="cancel">Cancelar</string>
17 18
    <string name="you">TÚ</string>
18 19
    <string name="solution">Solución</string>
19 20
    <string name="ready">¿Listo?</string>
......
48 49
    <string name="updates">Actualizaciones</string>
49 50
    <string name="no_updates">Extraviado</string>
50 51
    <string name="install">Instalar</string>
51
    <string name="abandon_solve">Abandonar</string>
52
    <string name="abandon_solve">Recuerda esta solución</string>
53
    <string name="come_back_later">Si es así, podrás reanudarlo más tarde.</string>
52 54
    <string name="use_solver">Usar</string>
53 55
    <string name="whatsnew">Qué hay de nuevo</string>
54 56
    <string name="share">Comparte esta app</string>
src/main/res/values-fr/strings.xml
14 14
    <string name="ok">D\'accord</string>
15 15
    <string name="yes">OUI</string>
16 16
    <string name="no">NON</string>
17
    <string name="cancel">Annuler</string>
17 18
    <string name="you">VOUS</string>
18 19
    <string name="solution">Solution</string>
19 20
    <string name="ready">Prêt ?</string>
......
48 49
    <string name="updates">Mises à jour</string>
49 50
    <string name="no_updates">Pas trouvé</string>
50 51
    <string name="install">Installer</string>
51
    <string name="abandon_solve">Abandonner</string>
52
    <string name="come_back_later">Si oui, vous pourrez le reprendre plus tard.</string>
52 53
    <string name="use_solver">Utiliser</string>
53 54
    <string name="whatsnew">Quoi de neuf</string>
54 55
    <string name="share">Partager cette app</string>
......
260 261
    <string name="lv_placeholder">Niveau %1$d</string>
261 262
    <string name="ti_placeholder">%1$s secondes</string>
262 263
    <string name="ab_placeholder">À propos de %1$s</string>
264
    <string name="abandon_solve">Souvenez-vous de cette solution</string>
263 265

  
264 266
</resources>
src/main/res/values-ja/strings.xml
14 14
    <string name="ok">OK</string>
15 15
    <string name="yes">はい</string>
16 16
    <string name="no">いいえ</string>
17
    <string name="cancel">キャンセル</string>
17 18
    <string name="you">あなた</string>
18 19
    <string name="solution">解答</string>
19 20
    <string name="ready">準備はいいですか?</string>
......
48 49
    <string name="updates">更新</string>
49 50
    <string name="no_updates">見つかりません</string>
50 51
    <string name="install">インストール</string>
51
    <string name="abandon_solve">あきらめる</string>
52
    <string name="abandon_solve">この解決策を覚えておいて</string>
53
    <string name="come_back_later">はい、後で再開できます。</string>
52 54
    <string name="use_solver">使用</string>
53 55
    <string name="whatsnew">新着情報</string>
54 56
    <string name="share">このアプリを共有する</string>
src/main/res/values-ko/strings.xml
14 14
    <string name="ok">확인</string>
15 15
    <string name="yes">예</string>
16 16
    <string name="no">아니요</string>
17
    <string name="cancel">취소</string>
17 18
    <string name="you">나</string>
18 19
    <string name="solution">해결</string>
19 20
    <string name="ready">준비되셨나요?</string>
......
48 49
    <string name="updates">업데이트</string>
49 50
    <string name="no_updates">업데이트가 없습니다</string>
50 51
    <string name="install">설치</string>
51
    <string name="abandon_solve">포기</string>
52
    <string name="abandon_solve">이 해결책을 기억하세요</string>
53
    <string name="come_back_later">그렇다면, 나중에 다시 시작할 수 있습니다.</string>
52 54
    <string name="use_solver">사용</string>
53 55
    <string name="whatsnew">새로운 기능</string>
54 56
    <string name="share">이 애플리케이션 공유</string>
src/main/res/values-pl/strings.xml
14 14
    <string name="ok">OK</string>
15 15
    <string name="yes">TAK</string>
16 16
    <string name="no">NIE</string>
17
    <string name="cancel">Anuluj</string>
17 18
    <string name="you">TY</string>
18 19
    <string name="solution">Rozwiązanie</string>
19 20
    <string name="ready">Gotowy?</string>
......
48 49
    <string name="updates">Aktualizacje</string>
49 50
    <string name="no_updates">Nie znaleziono</string>
50 51
    <string name="install">Zainstaluj</string>
51
    <string name="abandon_solve">Zrezygnuj</string>
52
    <string name="abandon_solve">Zapamiętaj to rozwiązanie</string>
53
    <string name="come_back_later">Jeśli zapamiętasz, będziesz mógł wrócić do niego później.</string>
52 54
    <string name="use_solver">Użyj</string>
53 55
    <string name="whatsnew">Nowości</string>
54 56
    <string name="share">Udostępnij tę apkę</string>
src/main/res/values-ru/strings.xml
14 14
    <string name="ok">ОК</string>
15 15
    <string name="yes">ДА</string>
16 16
    <string name="no">НЕТ</string>
17
    <string name="cancel">Отмена</string>
17 18
    <string name="you">ВЫ</string>
18 19
    <string name="solution">Решение</string>
19 20
    <string name="ready">Готовы?</string>
......
48 49
    <string name="updates">Обновления</string>
49 50
    <string name="no_updates">Не найдено</string>
50 51
    <string name="install">Установите</string>
51
    <string name="abandon_solve">Сдаться</string>
52
    <string name="abandon_solve">Запомните это решение</string>
53
    <string name="come_back_later">Если да, вы сможете возобновить его позже.</string>
52 54
    <string name="use_solver">Использовай</string>
53 55
    <string name="whatsnew">Новинки</string>
54 56
    <string name="share">Поделись этим</string>
src/main/res/values-zh-rCN/strings.xml
14 14
    <string name="ok">确定</string>
15 15
    <string name="yes">是</string>
16 16
    <string name="no">否</string>
17
    <string name="cancel">取消</string>
17 18
    <string name="you">你</string>
18 19
    <string name="solution">解决方案</string>
19 20
    <string name="ready">准备就绪?</string>
......
48 49
    <string name="updates">更新</string>
49 50
    <string name="no_updates">未找到更新</string>
50 51
    <string name="install">安装</string>
51
    <string name="abandon_solve">放弃</string>
52
    <string name="come_back_later">如果可以,您稍后就能继续。</string>
52 53
    <string name="use_solver">使用</string>
53 54
    <string name="whatsnew">新奇事物</string>
54 55
    <string name="share">分享这个应用程序</string>
......
266 267
    <string name="lv_placeholder">%1$d级</string>
267 268
    <string name="ti_placeholder">%1$s 秒</string>
268 269
    <string name="ab_placeholder">关于版本 %1$s</string>
270
    <string name="abandon_solve">记住这个解法</string>
269 271
</resources>
src/main/res/values-zh-rTW/strings.xml
14 14
    <string name="ok">確認</string>
15 15
    <string name="yes">是</string>
16 16
    <string name="no">否</string>
17
    <string name="cancel">取消</string>
17 18
    <string name="you">你</string>
18 19
    <string name="solution">解决方案</string>
19 20
    <string name="ready">準備好了?</string>
......
48 49
    <string name="updates">更新</string>
49 50
    <string name="no_updates">未找到更新</string>
50 51
    <string name="install">安裝</string>
51
    <string name="abandon_solve">放棄</string>
52
    <string name="come_back_later">若答案為是,您稍後將可繼續進行。</string>
52 53
    <string name="use_solver">使用</string>
53 54
    <string name="whatsnew">新奇事物</string>
54 55
    <string name="share">分享這個應用程序</string>
......
260 261
    <string name="lv_placeholder">%1$d級</string>
261 262
    <string name="ti_placeholder">%1$s 秒</string>
262 263
    <string name="ab_placeholder">關於版本 %1$s</string>
264
    <string name="abandon_solve">記住這個解法</string>
263 265

  
264 266
</resources>
src/main/res/values/strings.xml
16 16
    <string name="ok">OK</string>
17 17
    <string name="yes">YES</string>
18 18
    <string name="no">NO</string>
19
    <string name="cancel">Cancel</string>
19 20
    <string name="you">YOU</string>
20 21
    <string name="solution">Solution</string>
21 22
    <string name="ready">Ready?</string>
......
50 51
    <string name="updates">Updates</string>
51 52
    <string name="no_updates">No update found</string>
52 53
    <string name="install">Install</string>
53
    <string name="abandon_solve">Give up</string>
54
    <string name="abandon_solve">Remember this solve</string>
55
    <string name="come_back_later">If yes, you will be able to resume it later.</string>
54 56
    <string name="use_solver">Use</string>
55 57
    <string name="whatsnew">What\'s new</string>
56 58
    <string name="share">Share this app</string>

Also available in: Unified diff