Project

General

Profile

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

magiccube / src / main / java / org / distorted / dialogs / RubikDialogWhatsNew.java @ 63cbccf2

1 1c89e2a7 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2022 Leszek Koltunski                                                               //
3
//                                                                                               //
4
// This file is part of Magic Cube.                                                              //
5
//                                                                                               //
6
// Magic Cube is proprietary software licensed under an EULA which you should have received      //
7
// along with the code. If not, check https://distorted.org/magic/License-Magic-Cube.html        //
8
///////////////////////////////////////////////////////////////////////////////////////////////////
9
10
package org.distorted.dialogs;
11
12
import android.app.Dialog;
13 34d6b123 Leszek Koltunski
import android.content.pm.PackageInfo;
14
import android.content.pm.PackageManager;
15 1c89e2a7 Leszek Koltunski
import android.view.View;
16
import android.view.Window;
17
import android.view.WindowManager;
18
import android.widget.LinearLayout;
19
import android.widget.TextView;
20
21
import androidx.fragment.app.FragmentActivity;
22
23
import org.distorted.main.R;
24
import org.distorted.main.RubikActivity;
25
26
///////////////////////////////////////////////////////////////////////////////////////////////////
27
28
public class RubikDialogWhatsNew extends RubikDialogAbstract
29
  {
30
  private static final String[] MESSAGES =
31
      {
32 a22a18dd Leszek Koltunski
      "1.12.1",
33 1c89e2a7 Leszek Koltunski
34
      "1. This dialog :)\n" +
35
      "2. UI ready for NEW SOLVERS\n" +
36
      "3. Important fix for a bug which used to let players solve any scramble with just one move\n" +
37 34d6b123 Leszek Koltunski
      "4. Support for curved walls of cubies (preparation for Penrose Cubes)\n" +
38
      "5. Support for scrambling algorithms (preparation for AI Cube & Camouflage Cubes)",
39 1c89e2a7 Leszek Koltunski
40 45bc9f25 Leszek Koltunski
      "1.12.2",
41
42
      "1. Fixes for two critical crashers that appeared in the previous version.",
43
44 34d6b123 Leszek Koltunski
      "Coming",
45 1c89e2a7 Leszek Koltunski
46 34d6b123 Leszek Koltunski
      "1. Implemented Pyraminx, Ivy, 2x2x3, Skewb Diamond solvers.\n" +
47
      "2. More solvers (2x2x2?)\n" +
48
      "2. Support for adjustable stickers.\n" +
49
      "3. In-game currency (stars)\n" +
50
      "4. More objects (Camouflage Cubes, AI Cube, Burr Cube, Penrose Cubes, the Double-Crazy)"
51
      };
52 1c89e2a7 Leszek Koltunski
53
///////////////////////////////////////////////////////////////////////////////////////////////////
54
55
  @Override
56
  public void onResume()
57
    {
58
    super.onResume();
59
60
    Window window = getDialog().getWindow();
61
62
    if( window!=null )
63
      {
64
      WindowManager.LayoutParams params = window.getAttributes();
65
      params.width  = (int)Math.min( mHeight*0.65f,mWidth*0.98f );
66
      window.setAttributes(params);
67
      }
68
    }
69
70
///////////////////////////////////////////////////////////////////////////////////////////////////
71
72
  public int getResource()      { return R.layout.dialog_scrollable_panes; }
73
  public int getTitleResource() { return R.string.whatsnew; }
74
  public boolean hasArgument()  { return true; }
75
  public int getPositive()      { return R.string.ok; }
76
  public int getNegative()      { return -1; }
77
78
///////////////////////////////////////////////////////////////////////////////////////////////////
79
80
  public void positiveAction()
81
    {
82
83
    }
84
85
///////////////////////////////////////////////////////////////////////////////////////////////////
86
87
  public void negativeAction()
88
    {
89
90
    }
91
92
///////////////////////////////////////////////////////////////////////////////////////////////////
93
94
  public void prepareBody(Dialog dialog, View view, FragmentActivity act, float size)
95
    {
96
    int margin= (int)(mHeight*0.010f);
97
    int titleH= (int)(mHeight*0.035f);
98
    int padd  = (int)(mHeight*0.010f);
99
100
    LinearLayout layout= view.findViewById(R.id.dialog_scrollable_main_layout);
101
    TextView text  = view.findViewById(R.id.dialog_scrollable_message);
102
    text.setVisibility(View.GONE);
103
104
    LinearLayout.LayoutParams pV = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT );
105 34d6b123 Leszek Koltunski
    pV.setMargins(margin, margin, margin, 0);
106 1c89e2a7 Leszek Koltunski
    LinearLayout.LayoutParams pL = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT );
107
    pL.setMargins(margin, margin, margin, margin);
108
    LinearLayout.LayoutParams pT = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, titleH );
109
    LinearLayout.LayoutParams pM = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT );
110 7b191fe5 Leszek Koltunski
    pM.setMargins(0,2*margin,0,0);
111 1c89e2a7 Leszek Koltunski
112
    RubikActivity ract = (RubikActivity) getContext();
113 34d6b123 Leszek Koltunski
    int start      = findVersion(mArgument);
114
    int numMessages= MESSAGES.length/2;
115
    String thisVersion = findCurrentVersion(ract);
116 1c89e2a7 Leszek Koltunski
117 34d6b123 Leszek Koltunski
    for(int i=0; i<numMessages; i++)
118 1c89e2a7 Leszek Koltunski
      {
119 34d6b123 Leszek Koltunski
      String version = MESSAGES[start+2*i];
120
      String message = MESSAGES[start+2*i+1];
121
      boolean isCurrent = version.equals(thisVersion);
122 1c89e2a7 Leszek Koltunski
123 34d6b123 Leszek Koltunski
      RubikDialogWhatsNewView pane = new RubikDialogWhatsNewView(ract,version,message,padd, isCurrent, (i==(numMessages-1) ? pL:pV),pT,pM);
124 1c89e2a7 Leszek Koltunski
      layout.addView(pane.getView());
125
      }
126
    }
127
128
///////////////////////////////////////////////////////////////////////////////////////////////////
129
130 34d6b123 Leszek Koltunski
  private String findCurrentVersion(RubikActivity act)
131 1c89e2a7 Leszek Koltunski
    {
132 34d6b123 Leszek Koltunski
    String version;
133
    try
134 1c89e2a7 Leszek Koltunski
      {
135 34d6b123 Leszek Koltunski
      PackageInfo pInfo = act.getPackageManager().getPackageInfo( act.getPackageName(), 0);
136
      version= pInfo.versionName;
137 1c89e2a7 Leszek Koltunski
      }
138 34d6b123 Leszek Koltunski
    catch (PackageManager.NameNotFoundException e)
139
      {
140
      version= "unknown";
141
      }
142
143
    return version;
144 1c89e2a7 Leszek Koltunski
    }
145
146
///////////////////////////////////////////////////////////////////////////////////////////////////
147
148
  private int findVersion(String version)
149
    {
150
    int len = MESSAGES.length;
151
152
    for(int i=0; i<len; i++)
153
      {
154
      if( MESSAGES[i].equals(version) ) return i;
155
      }
156
157 34d6b123 Leszek Koltunski
    return 0;
158 1c89e2a7 Leszek Koltunski
    }
159
160
///////////////////////////////////////////////////////////////////////////////////////////////////
161
162
  public static String getDialogTag()
163
    {
164
    return "DialogSolvers";
165
    }
166
  }