Project

General

Profile

« Previous | Next » 

Revision 71cda061

Added by Leszek Koltunski over 1 year ago

IAP part 5: new 'Purchase' activity (cont'd)

View differences:

src/main/java/org/distorted/config/ConfigScreenPane.java
105 105
      view = layout.findViewById(R.id.configDetailsAuthor2);
106 106
      view.setText(both);
107 107

  
108
      if( difficulty<0       ) difficulty=0;
109
      if( difficulty>NUM_IDS ) difficulty=NUM_IDS;
108
      if( difficulty<0        ) difficulty=0;
109
      if( difficulty>=NUM_IDS ) difficulty=NUM_IDS-1;
110 110

  
111 111
      for(int i=0; i<NUM_IDS; i++)
112 112
        {
src/main/java/org/distorted/purchase/PurchaseActivity.java
15 15
import android.view.View;
16 16
import android.view.ViewGroup;
17 17
import android.view.WindowManager;
18
import android.widget.LinearLayout;
19 18

  
20 19
import androidx.appcompat.app.AppCompatActivity;
21 20

  
......
34 33
public class PurchaseActivity extends AppCompatActivity
35 34
{
36 35
    private static final int ACTIVITY_NUMBER = 5;
37
    private static final float RATIO_BAR  = 0.10f;
36
    private static final float RATIO_UBAR = 0.14f;
37
    private static final float RATIO_LBAR = 0.10f;
38
    private static final float RATIO_VIEW = 0.50f;
38 39

  
39 40
    public static final float DIALOG_BUTTON_SIZE  = 0.06f;
40 41
    public static final float MENU_BIG_TEXT_SIZE  = 0.05f;
......
49 50
    private int mCurrentApiVersion;
50 51
    private PurchaseScreen mScreen;
51 52
    private int mObjectOrdinal;
52
    private int mHeightBar;
53 53

  
54 54
///////////////////////////////////////////////////////////////////////////////////////////////////
55 55

  
......
72 72

  
73 73
      hideNavigationBar();
74 74
      cutoutHack();
75
      computeBarHeights();
75
      setHeights();
76 76
      }
77 77

  
78 78
///////////////////////////////////////////////////////////////////////////////////////////////////
79
// this does not include possible insets
80 79

  
81
    private void computeBarHeights()
80
    private void setViewHeight(int id, int height)
82 81
      {
83
      int barHeight = (int)(mScreenHeight*RATIO_BAR);
84
      mHeightBar = barHeight;
82
      View view = findViewById(id);
83

  
84
      if( view!=null )
85
        {
86
        ViewGroup.LayoutParams params = view.getLayoutParams();
87
        params.height = height;
88
        view.setLayoutParams(params);
89
        }
90
      }
91

  
92
///////////////////////////////////////////////////////////////////////////////////////////////////
93
// this does not include possible insets
85 94

  
86
      LinearLayout layout = findViewById(R.id.lowerBar);
87
      ViewGroup.LayoutParams params = layout.getLayoutParams();
88
      params.height = barHeight;
89
      layout.setLayoutParams(params);
95
    private void setHeights()
96
      {
97
      int ubarHeight= (int)(mScreenHeight*RATIO_UBAR);
98
      int lbarHeight= (int)(mScreenHeight*RATIO_LBAR);
99
      int viewHeight= (int)(mScreenHeight*RATIO_VIEW);
100
      int layHeight = (int)(mScreenHeight*(1-RATIO_UBAR-RATIO_LBAR-RATIO_VIEW)*0.5f);
101

  
102
      setViewHeight(R.id.upperBar           , ubarHeight);
103
      setViewHeight(R.id.lowerBar           , lbarHeight);
104
      setViewHeight(R.id.purchaseSurfaceView, viewHeight);
105
      setViewHeight(R.id.purchaseLayoutOne  , layHeight);
106
      setViewHeight(R.id.purchaseLayoutAll  , layHeight);
90 107
      }
91 108

  
92 109
///////////////////////////////////////////////////////////////////////////////////////////////////
......
216 233
      changeIfDifferent(object,ordinal,control);
217 234
      }
218 235

  
219
///////////////////////////////////////////////////////////////////////////////////////////////////
220

  
221
    public void changeMeshState(RubikObject object, int ordinal)
222
      {
223
      if( object!=null )
224
        {
225
        PurchaseSurfaceView view = findViewById(R.id.purchaseSurfaceView);
226
        ObjectControl control = view.getObjectControl();
227

  
228
        int meshState          = object.getMeshState();
229
        int iconMode           = TwistyObject.MODE_NORM;
230
        InputStream jsonStream = object.getObjectStream(this);
231
        InputStream meshStream = object.getMeshStream(this);
232

  
233
        control.changeObject(ordinal,meshState,iconMode,jsonStream,meshStream);
234
        }
235
      }
236

  
237
///////////////////////////////////////////////////////////////////////////////////////////////////
238

  
239
    public int getHeightBar()
240
      {
241
      return mHeightBar;
242
      }
243

  
244 236
///////////////////////////////////////////////////////////////////////////////////////////////////
245 237

  
246 238
    public int getScreenWidthInPixels()
src/main/java/org/distorted/purchase/PurchaseScreen.java
70 70
    layout.addView(layoutMid);
71 71
    layout.addView(layoutRight);
72 72

  
73
    PurchaseScreenPane pane = new PurchaseScreenPane(act,ordinal);
73
    PurchaseScreenPane pane = new PurchaseScreenPane(act);
74 74
    pane.updatePane(act,ordinal);
75 75
    }
76 76
}
src/main/java/org/distorted/purchase/PurchaseScreenPane.java
9 9

  
10 10
package org.distorted.purchase;
11 11

  
12
import android.graphics.PorterDuff;
13 12
import android.util.TypedValue;
14 13
import android.widget.ImageView;
15 14
import android.widget.LinearLayout;
16
import android.widget.RadioButton;
17
import android.widget.RadioGroup;
15
import android.widget.RelativeLayout;
18 16
import android.widget.TextView;
19 17

  
20 18
import org.distorted.main.R;
......
24 22

  
25 23
import java.io.InputStream;
26 24

  
27
import static org.distorted.objectlib.main.TwistyObject.MESH_FAST;
28
import static org.distorted.objectlib.main.TwistyObject.MESH_NICE;
29

  
30 25
///////////////////////////////////////////////////////////////////////////////////////////////////
31 26

  
32 27
public class PurchaseScreenPane
33 28
{
34
  private static final int[] IDS =
35
    {
36
    R.id.purchaseDifficulty0,
37
    R.id.purchaseDifficulty1,
38
    R.id.purchaseDifficulty2,
39
    R.id.purchaseDifficulty3,
40
    R.id.purchaseDifficulty4
41
    };
42

  
43 29
  private static final int[] IMAGES =
44 30
    {
45 31
    R.drawable.difficulty1,
......
49 35
    R.drawable.difficulty5,
50 36
    };
51 37

  
52
  private static final int NUM_IDS         = IDS.length;
38
  private static final int NUM_IMAGES      = IMAGES.length;
53 39
  public  static final float PADDING_RATIO = 0.025f;
54 40
  private static final float TEXT_RATIO    = 0.042f;
55
  private static final float RADIO_RATIO   = 0.900f;
56

  
57
  private int mObjectOrdinal;
58
  private boolean mProgramatic;
59

  
60
///////////////////////////////////////////////////////////////////////////////////////////////////
61

  
62
  private void switchMeshState(PurchaseActivity act, int meshState)
63
    {
64
    RubikObjectList.setMeshState(mObjectOrdinal,meshState);
65
    RubikObject object = RubikObjectList.getObject(mObjectOrdinal);
66
    act.changeMeshState(object,mObjectOrdinal);
67
    }
68 41

  
69 42
///////////////////////////////////////////////////////////////////////////////////////////////////
70 43

  
......
75 48
    if( object!=null )
76 49
      {
77 50
      InputStream stream = object.getObjectStream(act);
78

  
79
      mObjectOrdinal = objectOrdinal;
80 51
      JsonReader reader = JsonReader.getInstance();
81
      String name,author;
82
      int year, difficulty;
52
      String name;
53
      int difficulty;
83 54

  
84 55
      try
85 56
        {
86 57
        reader.parseJsonFileMetadata(stream);
87 58
        name       = reader.getObjectName();
88
        author     = reader.getInventor();
89
        year       = reader.getYearOfInvention();
90 59
        difficulty = reader.getComplexity();
91 60
        }
92 61
      catch(Exception ex)
93 62
        {
94 63
        name = "?";
95
        author = "?";
96
        year = 0;
97 64
        difficulty = 0;
98 65
        }
99 66

  
100
      String both = year>0 ? author+" "+year : author;
67
      if( difficulty<0           ) difficulty=0;
68
      if( difficulty>=NUM_IMAGES ) difficulty=NUM_IMAGES-1;
101 69

  
102
      LinearLayout layout = act.findViewById(R.id.purchaseLayout);
103
      TextView view = layout.findViewById(R.id.purchaseDetailsName2);
70
      TextView view = act.findViewById(R.id.purchaseDetailsName);
104 71
      view.setText(name);
105
      view = layout.findViewById(R.id.purchaseDetailsAuthor2);
106
      view.setText(both);
107

  
108
      if( difficulty<0       ) difficulty=0;
109
      if( difficulty>NUM_IDS ) difficulty=NUM_IDS;
110

  
111
      for(int i=0; i<NUM_IDS; i++)
112
        {
113
        ImageView image = layout.findViewById(IDS[i]);
114
        image.setImageResource(IMAGES[i]);
115
        image.setColorFilter( difficulty==i ? 0xffff0000 : 0xffffffff, PorterDuff.Mode.MULTIPLY );
116
        }
117

  
118
      int meshState = object.getMeshState();
119
      int id = meshState==MESH_NICE ? R.id.meshNice : R.id.meshSimple;
120
      RadioButton button = act.findViewById(id);
121

  
122
      mProgramatic = true;
123
      button.setChecked(true);
124
      mProgramatic = false;
72
      ImageView image = act.findViewById(R.id.purchaseDifficulty);
73
      image.setImageResource(IMAGES[difficulty]);
125 74
      }
126 75
    }
127 76

  
128 77
///////////////////////////////////////////////////////////////////////////////////////////////////
129 78

  
130
  PurchaseScreenPane(final PurchaseActivity act, int objectOrdinal)
79
  PurchaseScreenPane(final PurchaseActivity act)
131 80
    {
132 81
    int width = act.getScreenWidthInPixels();
133 82
    float textSize = width*TEXT_RATIO;
134 83
    int padding = (int)(width*PADDING_RATIO);
135 84

  
136
    LinearLayout configLayout    = act.findViewById(R.id.purchaseLayout);
137
    LinearLayout nameLayout      = configLayout.findViewById(R.id.purchaseLayoutName);
138
    LinearLayout authorLayout    = configLayout.findViewById(R.id.purchaseLayoutAuthor);
139
    LinearLayout difficultyLayout= configLayout.findViewById(R.id.purchaseLayoutDifficulty);
140
    LinearLayout meshLayout      = configLayout.findViewById(R.id.purchaseLayoutMesh);
85
    RelativeLayout upperBar  = act.findViewById(R.id.upperBar);
86
    LinearLayout oneLayout   = act.findViewById(R.id.purchaseLayoutOne);
87
    LinearLayout allLayout   = act.findViewById(R.id.purchaseLayoutAll);
141 88

  
142
    nameLayout.setPadding(padding,padding,padding,padding/2);
143
    authorLayout.setPadding(padding,padding/2,padding,padding/2);
144
    difficultyLayout.setPadding(padding,padding/2,padding,padding/2);
145
    meshLayout.setPadding(padding,padding/2,padding,padding);
89
    upperBar.setPadding(padding,padding,padding,padding/2);
90
    oneLayout.setPadding(padding,padding/2,padding,padding/2);
91
    allLayout.setPadding(padding,padding/2,padding,padding/2);
146 92

  
147 93
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 0, 1.00f);
148 94
    params.bottomMargin = 0;
......
150 96
    params.leftMargin   = padding;
151 97
    params.rightMargin  = padding;
152 98

  
153
    nameLayout.setLayoutParams(params);
154
    authorLayout.setLayoutParams(params);
155
    difficultyLayout.setLayoutParams(params);
156
    meshLayout.setLayoutParams(params);
99
    upperBar.setLayoutParams(params);
100
    oneLayout.setLayoutParams(params);
101
    allLayout.setLayoutParams(params);
157 102

  
158 103
    TextView text;
159
    text = nameLayout.findViewById(R.id.purchaseDetailsName1);
160
    text.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
161
    text = nameLayout.findViewById(R.id.purchaseDetailsName2);
104
    text = upperBar.findViewById(R.id.purchaseDetailsName);
162 105
    text.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
163
    text = authorLayout.findViewById(R.id.purchaseDetailsAuthor1);
106
    text = oneLayout.findViewById(R.id.purchaseTextOne);
164 107
    text.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
165
    text = authorLayout.findViewById(R.id.purchaseDetailsAuthor2);
108
    text = allLayout.findViewById(R.id.purchaseTextAll);
166 109
    text.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
167
    text = difficultyLayout.findViewById(R.id.purchaseDifficultyTitle);
168
    text.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
169
    text = meshLayout.findViewById(R.id.purchaseMeshTitle);
170
    text.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
171

  
172
    RadioButton butt1 = meshLayout.findViewById(R.id.meshNice);
173
    butt1.setTextSize(TypedValue.COMPLEX_UNIT_PX, RADIO_RATIO*textSize);
174
    RadioButton butt2 = meshLayout.findViewById(R.id.meshSimple);
175
    butt2.setTextSize(TypedValue.COMPLEX_UNIT_PX, RADIO_RATIO*textSize);
176

  
177
    LinearLayout layoutDiff = difficultyLayout.findViewById(R.id.purchaseDifficultyLayout);
178
    layoutDiff.setPadding(padding,padding,padding,padding);
179

  
180
    RadioGroup radioGroup = meshLayout.findViewById(R.id.meshRadioGroup);
181

  
182
    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
183
      {
184
      @Override
185
      public void onCheckedChanged(RadioGroup group, int checkedId)
186
        {
187
        if( !mProgramatic )
188
          {
189
          int meshState = checkedId == R.id.meshNice ? MESH_NICE : MESH_FAST;
190
          switchMeshState( act, meshState );
191
          }
192
        }
193
      });
194

  
195
    updatePane(act,objectOrdinal);
196 110
    }
197 111
}
src/main/java/org/distorted/screens/RubikScreenPlay.java
338 338
    mMenuPopup.setFocusable(true);
339 339
    int padding = (int)(width*RubikActivity.MEDIUM_MARGIN);
340 340

  
341
    mMenuLayoutWidth = (int)(width*0.6f);
341
    mMenuLayoutWidth = (int)(width*0.65f);
342 342
    mMenuLayoutHeight= padding + NUM_BUTTONS*(mMenuButtonHeight+padding) + 4*mMenuButtonHeight+6*padding;
343 343

  
344 344
    layout.setPadding(padding,0,padding,0);
src/main/res/layout/purchase.xml
3 3
    android:id="@+id/mainLayout"
4 4
    android:layout_width="match_parent"
5 5
    android:layout_height="match_parent"
6
    android:background="@color/light_grey"
6 7
    android:orientation="vertical">
7 8

  
9
    <RelativeLayout
10
         android:id="@+id/upperBar"
11
         android:layout_width="fill_parent"
12
         android:layout_height="100dp"
13
         android:paddingLeft="5dp"
14
         android:paddingRight="5dp"
15
         android:background="@color/grey"
16
         android:orientation="horizontal">
17

  
18
         <TextView
19
             android:id="@+id/purchaseDetailsName"
20
             android:layout_width="wrap_content"
21
             android:layout_height="match_parent"
22
             android:layout_alignParentStart="true"
23
             android:paddingStart="5dp"
24
             android:textSize="26sp"
25
             android:singleLine="true"
26
             android:maxLines="1"/>
27

  
28
         <ImageView
29
             android:id="@+id/purchaseDifficulty"
30
             android:layout_width="wrap_content"
31
             android:layout_height="match_parent"
32
             android:layout_alignParentEnd="true"/>
33
    </RelativeLayout>
34

  
8 35
    <org.distorted.purchase.PurchaseSurfaceView
9 36
        android:id="@+id/purchaseSurfaceView"
10 37
        android:layout_width="match_parent"
11
        android:layout_height="0dp"
12
        android:layout_weight="1.3"/>
13

  
14
    <LinearLayout
15
        android:id="@+id/purchaseLayout"
16
        android:layout_width="match_parent"
17
        android:layout_height="0dp"
18
        android:layout_weight="1.0"
19
        android:background="@color/light_grey"
20
        android:orientation="vertical" >
38
        android:layout_height="wrap_content"/>
21 39

  
22 40
        <LinearLayout
23
            android:id="@+id/purchaseLayoutName"
41
            android:id="@+id/purchaseLayoutOne"
24 42
            android:layout_width="fill_parent"
25
            android:layout_height="0dp"
26
            android:layout_weight="1"
43
            android:layout_height="10dp"
27 44
            android:paddingLeft="5dp"
28 45
            android:paddingRight="5dp"
29 46
            android:background="@color/grey"
30 47
            android:orientation="horizontal">
31 48

  
32 49
            <TextView
33
                android:id="@+id/purchaseDetailsName1"
50
                android:id="@+id/purchaseTextOne"
34 51
                android:layout_width="0dp"
35 52
                android:layout_height="match_parent"
36
                android:layout_weight="1.0"
53
                android:layout_weight="2.0"
37 54
                android:gravity="center_vertical|start"
38 55
                android:paddingStart="5dp"
39 56
                android:textSize="26sp"
40 57
                android:singleLine="true"
41 58
                android:maxLines="1"
42
                android:text="@string/config_name"/>
59
                android:text="@string/buy_one"/>
43 60

  
44
            <TextView
45
                android:id="@+id/purchaseDetailsName2"
46
                android:layout_width="0dp"
47
                android:layout_height="match_parent"
48
                android:layout_weight="2.1"
49
                android:gravity="center_vertical|start"
50
                android:paddingStart="5dp"
51
                android:textSize="26sp"
52
                android:singleLine="true"
53
                android:maxLines="1"/>
54

  
55
        </LinearLayout>
56

  
57
        <LinearLayout
58
            android:id="@+id/purchaseLayoutAuthor"
59
            android:layout_width="fill_parent"
60
            android:layout_height="0dp"
61
            android:layout_weight="1"
62
            android:paddingLeft="5dp"
63
            android:paddingRight="5dp"
64
            android:background="@color/grey"
65
            android:orientation="horizontal">
66

  
67
            <TextView
68
                android:id="@+id/purchaseDetailsAuthor1"
61
            <Button
62
                android:id="@+id/purchaseButtonOne"
69 63
                android:layout_width="0dp"
70 64
                android:layout_height="match_parent"
71 65
                android:layout_weight="1.0"
72
                android:gravity="center_vertical|start"
73
                android:paddingStart="5dp"
74
                android:textSize="26sp"
75
                android:singleLine="true"
76
                android:maxLines="1"
77
                android:text="@string/config_author"/>
78

  
79
            <TextView
80
                android:id="@+id/purchaseDetailsAuthor2"
81
                android:layout_width="0dp"
82
                android:layout_height="match_parent"
83
                android:layout_weight="2.1"
84
                android:gravity="center_vertical|start"
66
                android:gravity="center_vertical|end"
85 67
                android:paddingStart="5dp"
86 68
                android:textSize="26sp"
87 69
                android:singleLine="true"
......
90 72
        </LinearLayout>
91 73

  
92 74
        <LinearLayout
93
            android:id="@+id/purchaseLayoutDifficulty"
75
            android:id="@+id/purchaseLayoutAll"
94 76
            android:layout_width="fill_parent"
95
            android:layout_height="0dp"
96
            android:layout_weight="1"
77
            android:layout_height="10dp"
97 78
            android:paddingLeft="5dp"
98 79
            android:paddingRight="5dp"
99 80
            android:background="@color/grey"
100 81
            android:orientation="horizontal">
101 82

  
102 83
            <TextView
103
                android:id="@+id/purchaseDifficultyTitle"
84
                android:id="@+id/purchaseTextAll"
104 85
                android:layout_width="0dp"
105 86
                android:layout_height="match_parent"
106
                android:layout_weight="1.0"
87
                android:layout_weight="2.0"
107 88
                android:gravity="center_vertical|start"
108 89
                android:paddingStart="5dp"
109 90
                android:textSize="26sp"
110 91
                android:singleLine="true"
111 92
                android:maxLines="1"
112
                android:text="@string/config_difficulty"/>
113

  
114
            <LinearLayout
115
                android:id="@+id/purchaseDifficultyLayout"
116
                android:layout_width="0dp"
117
                android:layout_height="match_parent"
118
                android:layout_weight="2.5"
119
                android:gravity="start"
120
                android:paddingTop="20dp"
121
                android:paddingBottom="20dp"
122
                android:orientation="horizontal">
123

  
124
                <ImageView
125
                    android:id="@+id/purchaseDifficulty0"
126
                    android:layout_width="0dp"
127
                    android:layout_height="match_parent"
128
                    android:layout_weight="1"/>
129

  
130
                <ImageView
131
                    android:id="@+id/purchaseDifficulty1"
132
                    android:layout_width="0dp"
133
                    android:layout_height="match_parent"
134
                    android:layout_weight="1"/>
135

  
136
                <ImageView
137
                    android:id="@+id/purchaseDifficulty2"
138
                    android:layout_width="0dp"
139
                    android:layout_height="match_parent"
140
                    android:layout_weight="1"/>
141

  
142
                <ImageView
143
                    android:id="@+id/purchaseDifficulty3"
144
                    android:layout_width="0dp"
145
                    android:layout_height="match_parent"
146
                    android:layout_weight="1"/>
147

  
148
                <ImageView
149
                    android:id="@+id/purchaseDifficulty4"
150
                    android:layout_width="0dp"
151
                    android:layout_height="match_parent"
152
                    android:layout_weight="1"/>
153

  
154
            </LinearLayout>
155

  
156
        </LinearLayout>
157

  
158
         <LinearLayout
159
            android:id="@+id/purchaseLayoutMesh"
160
            android:layout_width="fill_parent"
161
            android:layout_height="0dp"
162
            android:layout_weight="1"
163
            android:paddingLeft="5dp"
164
            android:paddingRight="5dp"
165
            android:background="@color/grey"
166
            android:orientation="horizontal">
93
                android:text="@string/buy_all"/>
167 94

  
168
            <TextView
169
                android:id="@+id/purchaseMeshTitle"
95
            <Button
96
                android:id="@+id/purchaseButtonAll"
170 97
                android:layout_width="0dp"
171 98
                android:layout_height="match_parent"
172 99
                android:layout_weight="1.0"
173
                android:gravity="center_vertical|start"
100
                android:gravity="center_vertical|end"
174 101
                android:paddingStart="5dp"
175 102
                android:textSize="26sp"
176 103
                android:singleLine="true"
177
                android:maxLines="1"
178
                android:text="@string/config_mesh"/>
179

  
180
            <RadioGroup
181
                android:id="@+id/meshRadioGroup"
182
                android:layout_width="0dp"
183
                android:layout_height="match_parent"
184
                android:layout_weight="2.1"
185
                android:orientation="horizontal"
186
                android:checkedButton="@+id/meshNice"
187
                android:background="@color/grey">
188

  
189
                <RadioButton
190
                    android:id="@+id/meshSimple"
191
                    android:layout_width="0dp"
192
                    android:layout_height="match_parent"
193
                    android:layout_weight="1"
194
                    android:buttonTint="@color/white"
195
                    android:text="@string/config_mesh_fast"/>
196

  
197
                <RadioButton
198
                    android:id="@+id/meshNice"
199
                    android:layout_width="0dp"
200
                    android:layout_height="match_parent"
201
                    android:layout_weight="1"
202
                    android:buttonTint="@color/white"
203
                    android:text="@string/config_mesh_nice"/>
204

  
205
            </RadioGroup>
206

  
104
                android:maxLines="1"/>
207 105
        </LinearLayout>
208 106

  
209
    </LinearLayout>
210

  
211 107
    <LinearLayout
212 108
        android:id="@+id/lowerBar"
213 109
        android:layout_width="match_parent"
src/main/res/values-de/strings.xml
56 56
    <string name="install">Installieren</string>
57 57
    <string name="abandon_solve">Gib auf</string>
58 58

  
59
    <string name="buy_one">Kaufen Sie dieses Cube</string>
60
    <string name="buy_all">Kaufen Sie alle Cubes</string>
61

  
59 62
    <string name="config_details">Einzelheiten</string>
60 63
    <string name="config_name">Name</string>
61 64
    <string name="config_author">Autor</string>
src/main/res/values-es/strings.xml
56 56
    <string name="install">Instalar</string>
57 57
    <string name="abandon_solve">Abandonar</string>
58 58

  
59
    <string name="buy_one">Compra este cubo</string>
60
    <string name="buy_all">Compra todos cubos</string>
61

  
59 62
    <string name="config_details">Detalles</string>
60 63
    <string name="config_name">Nombre</string>
61 64
    <string name="config_author">Autor</string>
src/main/res/values-fr/strings.xml
56 56
    <string name="install">Installer</string>
57 57
    <string name="abandon_solve">Abandonner</string>
58 58

  
59
    <string name="buy_one">Acheter ce cube</string>
60
    <string name="buy_all">Acheter tous cubes</string>
61

  
59 62
    <string name="config_details">Détails</string>
60 63
    <string name="config_name">Nom</string>
61 64
    <string name="config_author">Auteur</string>
src/main/res/values-ja/strings.xml
56 56
    <string name="install">インストール</string>
57 57
    <string name="abandon_solve">あきらめる</string>
58 58

  
59
    <string name="buy_one">このパズル</string>
60
    <string name="buy_all">すべてのパズル</string>
61

  
59 62
    <string name="config_details">詳細</string>
60 63
    <string name="config_name">名前</string>
61 64
    <string name="config_author">著者</string>
src/main/res/values-ko/strings.xml
56 56
    <string name="install">설치</string>
57 57
    <string name="abandon_solve">포기</string>
58 58

  
59
    <string name="buy_one">이 퍼즐을 구입</string>
60
    <string name="buy_all">모든 퍼즐 구매</string>
61

  
59 62
    <string name="config_details">세부</string>
60 63
    <string name="config_name">이름</string>
61 64
    <string name="config_author">작가</string>
src/main/res/values-pl/strings.xml
56 56
    <string name="install">Zainstaluj</string>
57 57
    <string name="abandon_solve">Zrezygnuj</string>
58 58

  
59
    <string name="buy_one">Kup tą kostkę</string>
60
    <string name="buy_all">Kup wszystkie kostki</string>
61

  
59 62
    <string name="config_details">O kostce</string>
60 63
    <string name="config_name">Nazwa</string>
61 64
    <string name="config_author">Autor</string>
src/main/res/values-ru/strings.xml
56 56
    <string name="install">Установите</string>
57 57
    <string name="abandon_solve">Сдаться</string>
58 58

  
59
    <string name="buy_one">Куп эту головоломку</string>
60
    <string name="buy_all">Куп все головоломки</string>
61

  
59 62
    <string name="config_details">Детали</string>
60 63
    <string name="config_name">Имя</string>
61 64
    <string name="config_author">Автор</string>
src/main/res/values-zh-rCN/strings.xml
56 56
    <string name="install">安装</string>
57 57
    <string name="abandon_solve">放弃</string>
58 58

  
59
    <string name="buy_one">买这个拼图</string>
60
    <string name="buy_all">购买所有拼图</string>
61

  
59 62
    <string name="config_details">细节</string>
60 63
    <string name="config_name">姓名</string>
61 64
    <string name="config_author">作者</string>
src/main/res/values-zh-rTW/strings.xml
56 56
    <string name="install">安裝</string>
57 57
    <string name="abandon_solve">放棄</string>
58 58

  
59
    <string name="buy_one">買這個拼圖</string>
60
    <string name="buy_all">購買所有拼圖</string>
61

  
59 62
    <string name="config_details">細節</string>
60 63
    <string name="config_name">姓名</string>
61 64
    <string name="config_author">作者</string>
src/main/res/values/strings.xml
57 57
    <string name="no_updates">No update found</string>
58 58
    <string name="install">Install</string>
59 59

  
60
    <string name="buy_one">Unlock this cube</string>
61
    <string name="buy_all">Unlock all cubes</string>
62

  
60 63
    <string name="level1" translatable="false">1</string>
61 64
    <string name="level2" translatable="false">2</string>
62 65
    <string name="level3" translatable="false">3</string>

Also available in: Unified diff