Project

General

Profile

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

magiccube / src / main / java / org / distorted / screens / RubikScreenSolver.java @ c9f72ca3

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