Project

General

Profile

Download (15.3 KB) Statistics
| Branch: | Tag: | Revision:

magiccube / src / main / java / org / distorted / screens / RubikScreenSolver.java @ 70688a23

1 7289fd6c Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2020 Leszek Koltunski                                                               //
3
//                                                                                               //
4
// This file is part of Magic Cube.                                                              //
5
//                                                                                               //
6 3782bd44 Leszek Koltunski
// 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 7289fd6c Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
9
10 fcd5b990 Leszek Koltunski
package org.distorted.screens;
11 7289fd6c Leszek Koltunski
12 8145d8b8 Leszek Koltunski
import static org.distorted.objectlib.main.TwistyObject.*;
13
14 3f7a4363 Leszek Koltunski
import java.lang.ref.WeakReference;
15
16 7289fd6c Leszek Koltunski
import android.content.SharedPreferences;
17
import android.graphics.Bitmap;
18
import android.graphics.Canvas;
19
import android.graphics.Paint;
20 473611ee Leszek Koltunski
import android.graphics.PorterDuff;
21
import android.graphics.drawable.Drawable;
22 ca292407 Leszek Koltunski
import android.os.Bundle;
23 66e777b0 Leszek Koltunski
import androidx.core.content.ContextCompat;
24 7289fd6c Leszek Koltunski
import android.view.View;
25
import android.widget.ImageButton;
26
import android.widget.LinearLayout;
27
28 244cc23f leszek
import org.distorted.dialogs.RubikDialogSolverImpossible;
29 2afc6754 Leszek Koltunski
import org.distorted.objectlib.main.ObjectControl;
30 de697069 leszek
import org.distorted.objectlib.signature.ObjectConstants;
31 3f7a4363 Leszek Koltunski
import org.distorted.objectlib.main.TwistyObject;
32
33 ca292407 Leszek Koltunski
import org.distorted.dialogs.RubikDialogSolverError;
34 55e6be1d Leszek Koltunski
import org.distorted.helpers.TransparentImageButton;
35 1f9772f3 Leszek Koltunski
import org.distorted.main.R;
36
import org.distorted.main.RubikActivity;
37 d8cf6f49 Leszek Koltunski
import org.distorted.objectlib.shape.ShapeDiamond;
38
import org.distorted.objectlib.shape.ShapeDodecahedron;
39
import org.distorted.objectlib.shape.ShapeHexahedron;
40 379b3273 Leszek Koltunski
import org.distorted.objectlib.shape.ShapeIcosahedron;
41 d8cf6f49 Leszek Koltunski
import org.distorted.objectlib.shape.ShapeOctahedron;
42
import org.distorted.objectlib.shape.ShapeTetrahedron;
43 400ff34d Leszek Koltunski
import org.distorted.objects.RubikObjectList;
44 373fa45f Leszek Koltunski
import org.distorted.solvers.ImplementedSolversList;
45 a304ee64 Leszek Koltunski
import org.distorted.solvers.SolverMain;
46 7289fd6c Leszek Koltunski
47
///////////////////////////////////////////////////////////////////////////////////////////////////
48
49 fcd5b990 Leszek Koltunski
public class RubikScreenSolver extends RubikScreenAbstract
50 7289fd6c Leszek Koltunski
  {
51 7a60305a Leszek Koltunski
  private static final int RESET_DURATION = 1000;
52 b3a907f1 Leszek Koltunski
  private static final int MODE_NORMAL = 0;
53
  private static final int MODE_DINO_4 = 1;
54 7a60305a Leszek Koltunski
55 7289fd6c Leszek Koltunski
  private static Bitmap[] mBitmap;
56
  private ImageButton[] mColorButton;
57 7a60305a Leszek Koltunski
  private TransparentImageButton mResetButton,mBackButton, mSolveButton;
58 5660465b Leszek Koltunski
  private boolean mSolving;
59 b3a907f1 Leszek Koltunski
  private int mCurrentColor, mCurrentButton;
60 41748f19 Leszek Koltunski
  private int[] mFaceColors;
61 b3a907f1 Leszek Koltunski
  private int mColorMode;
62 57dea1ac Leszek Koltunski
  private int mNumColors;
63 7ea57482 Leszek Koltunski
  private float mBitmapSize;
64 373fa45f Leszek Koltunski
  private WeakReference<RubikActivity> mWeakAct;
65
66 7289fd6c Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
67
68 f5da732a Leszek Koltunski
  void leaveScreen(RubikActivity act)
69 7289fd6c Leszek Koltunski
    {
70 9523ae28 Leszek Koltunski
    ObjectControl control = act.getControl();
71
    control.unsetLock();
72 7289fd6c Leszek Koltunski
    }
73
74
///////////////////////////////////////////////////////////////////////////////////////////////////
75
76 f5da732a Leszek Koltunski
  void enterScreen(final RubikActivity act)
77 7289fd6c Leszek Koltunski
    {
78 9523ae28 Leszek Koltunski
    ObjectControl control = act.getControl();
79
    control.setLock(false);
80
81 e3c74c0f Leszek Koltunski
    float width = act.getScreenWidthInPixels();
82 6d4d56cb Leszek Koltunski
    float heigh = act.getScreenHeightInPixels();
83 7ea57482 Leszek Koltunski
84 373fa45f Leszek Koltunski
    mWeakAct = new WeakReference<>(act);
85 5660465b Leszek Koltunski
    mSolving = false;
86
87 67d7fb28 Leszek Koltunski
    int solverIndex= act.getSolverIndex();
88
    ImplementedSolversList currentSolver = ImplementedSolversList.getSolver(solverIndex);
89
    int currentObject = currentSolver.getObject();
90 b20e89d2 Leszek Koltunski
    act.changeIfDifferent(currentObject,control);
91 33f6abfd Leszek Koltunski
    control.solveOnly();
92 1088a219 Leszek Koltunski
    RubikObjectList.setCurrObject(currentObject);
93 7289fd6c Leszek Koltunski
94 d8cf6f49 Leszek Koltunski
    generateFaceColors(currentObject);
95 20931cf6 Leszek Koltunski
96 57dea1ac Leszek Koltunski
    final float BUTTON_RATIO = 0.75f;
97
    int sizeV = (int)(heigh*RubikActivity.RATIO_BAR*BUTTON_RATIO);
98
    int sizeH = (int)((width/mNumColors)*BUTTON_RATIO);
99
    mBitmapSize = Math.min(sizeV,sizeH);
100
101 7289fd6c Leszek Koltunski
    // TOP ////////////////////////////
102
    LinearLayout layoutTop = act.findViewById(R.id.upperBar);
103
    layoutTop.removeAllViews();
104
105 57dea1ac Leszek Koltunski
    if( mNumColors>0 )
106 41748f19 Leszek Koltunski
      {
107 7ebd72f7 Leszek Koltunski
      setupBitmaps();
108 ad0c8e0e Leszek Koltunski
      setupColorButtons(act,width);
109 41748f19 Leszek Koltunski
      markButton(act);
110
      }
111 473611ee Leszek Koltunski
112 7289fd6c Leszek Koltunski
    for(ImageButton button: mColorButton) layoutTop.addView(button);
113
114
    // BOT ////////////////////////////
115 57dea1ac Leszek Koltunski
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1);
116
117
    LinearLayout layoutL = new LinearLayout(act);
118
    layoutL.setLayoutParams(params);
119
    LinearLayout layoutM = new LinearLayout(act);
120
    layoutM.setLayoutParams(params);
121
    LinearLayout layoutR = new LinearLayout(act);
122
    layoutR.setLayoutParams(params);
123
124 92843d3b Leszek Koltunski
    LinearLayout layoutBot = act.findViewById(R.id.lowerBar);
125
    layoutBot.removeAllViews();
126 264af0ad Leszek Koltunski
127 7a60305a Leszek Koltunski
    setupResetButton(act);
128 dd874ae8 Leszek Koltunski
    setupSolveButton(act);
129
    setupBackButton(act);
130 7289fd6c Leszek Koltunski
131 7a60305a Leszek Koltunski
    layoutL.addView(mResetButton);
132
    layoutM.addView(mSolveButton);
133 57dea1ac Leszek Koltunski
    layoutR.addView(mBackButton);
134 af133d41 Leszek Koltunski
135 57dea1ac Leszek Koltunski
    layoutBot.addView(layoutL);
136
    layoutBot.addView(layoutM);
137
    layoutBot.addView(layoutR);
138 7289fd6c Leszek Koltunski
    }
139
140 4ab3d91b Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
141 d8cf6f49 Leszek Koltunski
// This doesn't quite work in many cases, but in case of the solvers that will pop up in foreseeable
142
// future it should be ok.
143 4ab3d91b Leszek Koltunski
144 d8cf6f49 Leszek Koltunski
  public void generateFaceColors(int object)
145 4ab3d91b Leszek Koltunski
    {
146 b3a907f1 Leszek Koltunski
    mColorMode = MODE_NORMAL;
147
148 de697069 leszek
    if( object== ObjectConstants.PYRA_3 ||
149
        object== ObjectConstants.PYRA_4 ||
150
        object== ObjectConstants.PYRA_5 ||
151
        object== ObjectConstants.PDUO_2 ||
152
        object== ObjectConstants.JING_2 ||
153
        object== ObjectConstants.MORP_2 ||
154
        object== ObjectConstants.MORP_3 ||
155
        object== ObjectConstants.MORP_4  )
156 d8cf6f49 Leszek Koltunski
      {
157 57dea1ac Leszek Koltunski
      mNumColors  = ShapeTetrahedron.NUM_FACES;
158 d8cf6f49 Leszek Koltunski
      mFaceColors = ShapeTetrahedron.FACE_COLORS;
159
      }
160 de697069 leszek
    else if( object== ObjectConstants.DIAM_2 ||
161
             object== ObjectConstants.DIAM_3 ||
162
             object== ObjectConstants.DIAM_4 ||
163
             object== ObjectConstants.TRAJ_3 ||
164
             object== ObjectConstants.TRAJ_4 ||
165
             object== ObjectConstants.PDIA_3  )
166 d8cf6f49 Leszek Koltunski
      {
167 57dea1ac Leszek Koltunski
      mNumColors  = ShapeOctahedron.NUM_FACES;
168 d8cf6f49 Leszek Koltunski
      mFaceColors = ShapeOctahedron.FACE_COLORS;
169
      }
170 de697069 leszek
    else if( object== ObjectConstants.CRYS_3 ||
171
             object== ObjectConstants.STAR_3 ||
172
             object== ObjectConstants.PENT_2 ||
173
             object== ObjectConstants.KILO_3 ||
174
             object== ObjectConstants.KILO_5 ||
175
             object== ObjectConstants.MEGA_3 ||
176
             object== ObjectConstants.MEGA_5  )
177 d8cf6f49 Leszek Koltunski
      {
178 57dea1ac Leszek Koltunski
      mNumColors  = ShapeDodecahedron.NUM_FACES;
179 d8cf6f49 Leszek Koltunski
      mFaceColors = ShapeDodecahedron.FACE_COLORS;
180
      }
181 de697069 leszek
    else if( object== ObjectConstants.BALL_4 )
182 d8cf6f49 Leszek Koltunski
      {
183 57dea1ac Leszek Koltunski
      mNumColors  = ShapeDiamond.NUM_FACES;
184 d8cf6f49 Leszek Koltunski
      mFaceColors = ShapeDiamond.FACE_COLORS;
185
      }
186 de697069 leszek
    else if( object== ObjectConstants.ICOS_2 )
187 379b3273 Leszek Koltunski
      {
188
      mNumColors  = ShapeIcosahedron.NUM_FACES;
189
      mFaceColors = ShapeIcosahedron.FACE_COLORS;
190
      }
191 de697069 leszek
    else if( object== ObjectConstants.DIN4_3 )
192 8145d8b8 Leszek Koltunski
      {
193
      mNumColors  = 4;
194
      mFaceColors = new int[] { COLOR_YELLOW, COLOR_RED, COLOR_BLUE, COLOR_WHITE };
195 b3a907f1 Leszek Koltunski
      mColorMode  = MODE_DINO_4;
196 8145d8b8 Leszek Koltunski
      }
197 d8cf6f49 Leszek Koltunski
    else
198
      {
199 57dea1ac Leszek Koltunski
      mNumColors  = ShapeHexahedron.NUM_FACES;
200 d8cf6f49 Leszek Koltunski
      mFaceColors = ShapeHexahedron.FACE_COLORS;
201
      }
202 4ab3d91b Leszek Koltunski
    }
203
204 5660465b Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
205 7289fd6c Leszek Koltunski
206 7ebd72f7 Leszek Koltunski
  private void setupBitmaps()
207 7289fd6c Leszek Koltunski
    {
208 1bd07548 Leszek Koltunski
    final int SIZE = (int)mBitmapSize;
209
    final float R = SIZE*0.15f;
210
    final float M = SIZE*0.08f;
211 7289fd6c Leszek Koltunski
212 57dea1ac Leszek Koltunski
    mBitmap = new Bitmap[mNumColors];
213 7289fd6c Leszek Koltunski
214
    Paint paint = new Paint();
215
    paint.setColor(0xff008800);
216
    paint.setStyle(Paint.Style.FILL);
217
218
    paint.setAntiAlias(true);
219
    paint.setTextAlign(Paint.Align.CENTER);
220
    paint.setStyle(Paint.Style.FILL);
221
222 57dea1ac Leszek Koltunski
    for(int i=0; i<mNumColors; i++)
223 7289fd6c Leszek Koltunski
      {
224
      mBitmap[i] = Bitmap.createBitmap(SIZE, SIZE, Bitmap.Config.ARGB_8888);
225
      Canvas canvas = new Canvas(mBitmap[i]);
226
227
      paint.setColor(0xff000000);
228
      canvas.drawRect(0, 0, SIZE, SIZE, paint);
229
230 41748f19 Leszek Koltunski
      paint.setColor(mFaceColors[i]);
231 7289fd6c Leszek Koltunski
      canvas.drawRoundRect( M, M, SIZE-M, SIZE-M, R, R, paint);
232
      }
233
    }
234
235 b3a907f1 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
236
237
  private int translateColor(int color)
238
    {
239
    if( mColorMode==MODE_DINO_4 )
240
      {
241
      int realColor = mFaceColors[color];
242
      int[] hexColors = ShapeHexahedron.FACE_COLORS;
243
244
      for(int i=0; i<6; i++)
245
        if( hexColors[i]==realColor ) return i;
246
      }
247
248
    return color;
249
    }
250
251 7289fd6c Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
252
253 ad0c8e0e Leszek Koltunski
  private void setupColorButtons(final RubikActivity act, final float width)
254 7289fd6c Leszek Koltunski
    {
255 57dea1ac Leszek Koltunski
    mColorButton = new ImageButton[mNumColors];
256 ad0c8e0e Leszek Koltunski
    int padding = (int)(width*RubikActivity.PADDING);
257 c651024f Leszek Koltunski
    int margin  = (int)(width*RubikActivity.SMALL_MARGIN);
258 7289fd6c Leszek Koltunski
259 57dea1ac Leszek Koltunski
    for(int i=0; i<mNumColors; i++)
260 7289fd6c Leszek Koltunski
      {
261
      final int ii = i;
262 ad0c8e0e Leszek Koltunski
      LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.MATCH_PARENT, 1.0f);
263
      params.topMargin    = margin;
264
      params.bottomMargin = margin;
265
      params.leftMargin   = margin;
266
      params.rightMargin  = margin;
267
268 7289fd6c Leszek Koltunski
      mColorButton[i] = new ImageButton(act);
269 ad0c8e0e Leszek Koltunski
      mColorButton[i].setLayoutParams(params);
270 7289fd6c Leszek Koltunski
      mColorButton[i].setPadding(padding,0,padding,0);
271
      mColorButton[i].setImageBitmap(mBitmap[i]);
272
273
      mColorButton[i].setOnClickListener( new View.OnClickListener()
274
        {
275
        @Override
276
        public void onClick(View view)
277
          {
278 b3a907f1 Leszek Koltunski
          mCurrentColor = translateColor(ii);
279
          mCurrentButton= ii;
280 473611ee Leszek Koltunski
          markButton(act);
281 7289fd6c Leszek Koltunski
          }
282
        });
283
      }
284
    }
285
286 7a60305a Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
287
288
  private void setupResetButton(final RubikActivity act)
289
    {
290
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);
291 70688a23 leszek
    mResetButton = new TransparentImageButton(act, R.drawable.ui_reset, params);
292 7a60305a Leszek Koltunski
293
    mResetButton.setOnClickListener( new View.OnClickListener()
294
      {
295
      @Override
296
      public void onClick(View v)
297
        {
298
        ObjectControl control = act.getControl();
299
        control.resetTextureMapsEffect(RESET_DURATION);
300
        }
301
      });
302
    }
303
304 264af0ad Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
305
306 dd874ae8 Leszek Koltunski
  private void setupSolveButton(final RubikActivity act)
307 264af0ad Leszek Koltunski
    {
308 b600ccd9 Leszek Koltunski
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1.0f);
309 70688a23 leszek
    mSolveButton = new TransparentImageButton(act,R.drawable.ui_solve,params);
310 264af0ad Leszek Koltunski
311
    mSolveButton.setOnClickListener( new View.OnClickListener()
312
      {
313
      @Override
314
      public void onClick(View v)
315
        {
316 5660465b Leszek Koltunski
        if( !mSolving )
317
          {
318
          mSolving = true;
319 9c2f0c91 Leszek Koltunski
          TwistyObject object = act.getObject();
320 da57afae Leszek Koltunski
          SolverMain solver = new SolverMain( act.getInterface(), act.getResources(), object );
321 f0336037 Leszek Koltunski
          solver.start();
322 5660465b Leszek Koltunski
          }
323 264af0ad Leszek Koltunski
        }
324
      });
325
    }
326
327 7289fd6c Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
328
329 dd874ae8 Leszek Koltunski
  private void setupBackButton(final RubikActivity act)
330 7289fd6c Leszek Koltunski
    {
331 b600ccd9 Leszek Koltunski
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1.0f);
332 70688a23 leszek
    mBackButton = new TransparentImageButton(act,R.drawable.ui_back,params);
333 7289fd6c Leszek Koltunski
334
    mBackButton.setOnClickListener( new View.OnClickListener()
335
      {
336
      @Override
337
      public void onClick(View v)
338
        {
339 2afc6754 Leszek Koltunski
        ObjectControl control = act.getControl();
340
        control.resetAllTextureMaps();
341 fcd5b990 Leszek Koltunski
        ScreenList.goBack(act);
342 7289fd6c Leszek Koltunski
        }
343
      });
344
    }
345
346 473611ee Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
347
348
  private void markButton(RubikActivity act)
349
    {
350 757420b3 leszek
    if( mCurrentButton>=mNumColors )
351
      {
352
      mCurrentButton = 0;
353
      mCurrentColor = translateColor(0);
354
      }
355
356 57dea1ac Leszek Koltunski
    for(int b=0; b<mNumColors; b++)
357 473611ee Leszek Koltunski
      {
358
      Drawable d = mColorButton[b].getBackground();
359
360 b3a907f1 Leszek Koltunski
      if( b==mCurrentButton )
361 473611ee Leszek Koltunski
        {
362
        d.setColorFilter(ContextCompat.getColor(act,R.color.red), PorterDuff.Mode.MULTIPLY);
363
        }
364
      else
365
        {
366
        d.clearColorFilter();
367
        }
368
      }
369
    }
370
371 7289fd6c Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
372
373
  public void savePreferences(SharedPreferences.Editor editor)
374
    {
375 b3a907f1 Leszek Koltunski
    editor.putInt("stateSolver_color" , mCurrentColor );
376
    editor.putInt("stateSolver_button", mCurrentButton);
377 7289fd6c Leszek Koltunski
    }
378
379
///////////////////////////////////////////////////////////////////////////////////////////////////
380
381
  public void restorePreferences(SharedPreferences preferences)
382
    {
383 b3a907f1 Leszek Koltunski
    mCurrentColor = preferences.getInt("stateSolver_color" , 0);
384
    mCurrentButton= preferences.getInt("stateSolver_button", 0);
385 7289fd6c Leszek Koltunski
    }
386 473611ee Leszek Koltunski
387
///////////////////////////////////////////////////////////////////////////////////////////////////
388
389
  public int getCurrentColor()
390
    {
391
    return mCurrentColor;
392
    }
393 f0336037 Leszek Koltunski
394
///////////////////////////////////////////////////////////////////////////////////////////////////
395
396 373fa45f Leszek Koltunski
  public void setSolved(final String moves)
397 f0336037 Leszek Koltunski
    {
398
    mSolving = false;
399 373fa45f Leszek Koltunski
    final RubikActivity act = mWeakAct.get();
400 f0336037 Leszek Koltunski
401 373fa45f Leszek Koltunski
    if( act!=null )
402 f0336037 Leszek Koltunski
      {
403 373fa45f Leszek Koltunski
      act.runOnUiThread(new Runnable()
404 f0336037 Leszek Koltunski
        {
405 373fa45f Leszek Koltunski
        @Override
406
        public void run()
407
          {
408 f5da732a Leszek Koltunski
          ScreenList.switchScreen(act, ScreenList.SOLU);
409
          RubikScreenSolution solution = (RubikScreenSolution) ScreenList.SOLU.getScreenClass();
410 373fa45f Leszek Koltunski
          solution.setupMoves(act, moves);
411
          }
412
        });
413
      }
414 f0336037 Leszek Koltunski
    }
415
416 277401c0 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
417
418
  public void setSolved(final int[][] moves)
419
    {
420
    mSolving = false;
421
    final RubikActivity act = mWeakAct.get();
422
423
    if( act!=null )
424
      {
425
      act.runOnUiThread(new Runnable()
426
        {
427
        @Override
428
        public void run()
429
          {
430
          ScreenList.switchScreen(act, ScreenList.SOLU);
431
          RubikScreenSolution solution = (RubikScreenSolution) ScreenList.SOLU.getScreenClass();
432
          solution.setupMoves(act, moves);
433
          }
434
        });
435
      }
436
    }
437
438 f0336037 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
439
440 c02fa107 Leszek Koltunski
  public void displayErrorDialog(String message)
441 f0336037 Leszek Koltunski
    {
442
    mSolving = false;
443 373fa45f Leszek Koltunski
    RubikActivity act = mWeakAct.get();
444 f0336037 Leszek Koltunski
445 373fa45f Leszek Koltunski
    if( act!=null )
446
      {
447
      RubikDialogSolverError dialog = new RubikDialogSolverError();
448
      Bundle bundle = new Bundle();
449 c02fa107 Leszek Koltunski
      bundle.putString("argument", message );
450 373fa45f Leszek Koltunski
      dialog.setArguments(bundle);
451
      dialog.show( act.getSupportFragmentManager(), null);
452
      }
453 f0336037 Leszek Koltunski
    }
454 244cc23f leszek
455
///////////////////////////////////////////////////////////////////////////////////////////////////
456
457
  public void displayImpossibleDialog(String message)
458
    {
459
    mSolving = false;
460
    RubikActivity act = mWeakAct.get();
461
462
    if( act!=null )
463
      {
464
      RubikDialogSolverImpossible dialog = new RubikDialogSolverImpossible();
465
      Bundle bundle = new Bundle();
466
      bundle.putString("argument", message );
467
      dialog.setArguments(bundle);
468
      dialog.show( act.getSupportFragmentManager(), null);
469
      }
470
    }
471 7289fd6c Leszek Koltunski
  }