Project

General

Profile

« Previous | Next » 

Revision 017f24b3

Added by Leszek Koltunski about 1 year ago

new Pattern Activity!

View differences:

src/main/java/org/distorted/dialogs/RubikDialogPatternListAdapter.java
26 26
class RubikDialogPatternListAdapter extends BaseExpandableListAdapter
27 27
  {
28 28
  private final Context mContext;
29
  private final int mTab, mWidth;
29
  private final int mTab, mHeight;
30 30

  
31 31
///////////////////////////////////////////////////////////////////////////////////////////////////
32 32

  
33
  public RubikDialogPatternListAdapter(Context context, int tab, int width)
33
  public RubikDialogPatternListAdapter(Context context, int tab, int height)
34 34
    {
35 35
    mContext = context;
36 36
    mTab     = tab;
37
    mWidth   = width;
37
    mHeight  = height;
38 38
    }
39 39

  
40 40
///////////////////////////////////////////////////////////////////////////////////////////////////
......
67 67
      view = infalInflater.inflate(R.layout.dialog_pattern_child_item, null);
68 68
      }
69 69

  
70
    int size = (int)(mWidth* RubikActivity.PATTERN_CHILD_TEXT);
70
    int size = (int)(mHeight* RubikActivity.PATTERN_CHILD_TEXT);
71 71

  
72 72
    TextView childItem = view.findViewById(R.id.child);
73 73
    childItem.setText(childName);
......
124 124
      view = inf.inflate(R.layout.dialog_pattern_group_item, null);
125 125
      }
126 126

  
127
    int size = (int)(mWidth* RubikActivity.PATTERN_GROUP_TEXT);
127
    int size = (int)(mHeight* RubikActivity.PATTERN_GROUP_TEXT);
128 128

  
129 129
    TextView heading = view.findViewById(R.id.heading);
130 130
    heading.setText(groupName);
src/main/java/org/distorted/dialogs/RubikDialogPatternSingle.java
47 47
      {
48 48
      WindowManager.LayoutParams params = window.getAttributes();
49 49
      params.width  = (int)Math.min( mHeight*0.65f,mWidth*0.98f );
50
      params.height = (int)Math.min( mHeight*0.80f,mWidth*1.30f );
50
      //params.height = (int)Math.min( mHeight*0.80f,mWidth*1.30f );
51 51
      window.setAttributes(params);
52 52
      }
53 53
    }
54 54

  
55 55
///////////////////////////////////////////////////////////////////////////////////////////////////
56 56

  
57
  public int getResource()      { return R.layout.dialog_pattern_tab; }
57
  public int getResource()      { return R.layout.dialog_pattern_single; }
58 58
  public int getTitleResource() { return R.string.choose_pattern; }
59 59
  public boolean hasArgument()  { return true; }
60 60
  public int getPositive()      { return -1; }
......
82 82
      return;
83 83
      }
84 84

  
85
    android.util.Log.e("D", "prepareBody: object "+mArgument);
86

  
85 87
    final PatternActivity pact = (PatternActivity)getContext();
86 88
    int height = pact!=null ? pact.getScreenHeightInPixels() : 100;
87 89
    final ObjectControl control = pact!=null ? pact.getControl() : null;
......
93 95
    RubikDialogPatternListAdapter listAdapter = new RubikDialogPatternListAdapter(act,mPatternOrdinal,height);
94 96
    mListView.setAdapter(listAdapter);
95 97

  
96
    if( mExpandedGroup>=0 )
97
      {
98
      mListView.expandGroup(mExpandedGroup);
99
      }
98
    if( mExpandedGroup>=0 ) mListView.expandGroup(mExpandedGroup);
100 99

  
101 100
    int visible = pattern.recallVisiblePos(mPatternOrdinal);
102 101
    mListView.setSelectionFromTop(visible,0);
103 102

  
104

  
105 103
    mListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener()
106 104
      {
107 105
      @Override
......
109 107
        {
110 108
        RubikPattern pattern = RubikPattern.getInstance();
111 109
        int[][] moves = pattern.reInitialize(mPatternOrdinal, groupPosition, childPosition);
112
        control.initializeObject(moves);
110
        if( control!=null ) control.initializeObject(moves);
113 111

  
114 112
        ScreenPattern state = (ScreenPattern) ScreenList.PATT.getScreenClass();
115 113
        state.setPattern(pact, mPatternOrdinal, groupPosition, childPosition);
src/main/java/org/distorted/patternui/PatternActivity.java
46 46
    public static final float PADDING         = 0.010f;
47 47
    public static final float SMALL_MARGIN    = 0.004f;
48 48
    public static final float BUTTON_TEXT_SIZE= 0.050f;
49
    public static final float TITLE_TEXT_SIZE = 0.060f;
49
    public static final float TITLE_TEXT_SIZE = 0.045f;
50 50

  
51 51
    private static final int ACTIVITY_NUMBER = 1;
52 52
    private static final float RATIO_INSET= 0.09f;
......
194 194

  
195 195
      createObject();
196 196
      RubikObjectList.setCurrObject(mObjectOrdinal);
197

  
198 197
      SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
199
      restorePreferences(preferences,mJustStarted);
198
      restorePreferences(preferences);
200 199
      ScreenList.setScreen(this);
201 200

  
202 201
      if( mJustStarted )
......
222 221
      SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
223 222
      SharedPreferences.Editor editor = preferences.edit();
224 223

  
225
      for(int i = 0; i< ScreenList.LENGTH; i++ )
226
        {
224
      for(int i=0; i< ScreenList.LENGTH; i++ )
227 225
        ScreenList.getScreen(i).getScreenClass().savePreferences(editor);
228
        }
229 226

  
230
      RubikObjectList.savePreferences(editor);
231
      RubikObjectList.saveMeshState(editor);
232 227
      ScreenList.savePreferences(editor);
233
      PatternSurfaceView view = findViewById(R.id.patternSurfaceView);
234
      OSInterface os = view.getInterface();
235
      os.setEditor(editor);
236
      view.getObjectControl().savePreferences();
237 228

  
238 229
      boolean success = editor.commit();
239 230
      if( !success ) android.util.Log.e("D", "Failed to save preferences");
......
241 232

  
242 233
///////////////////////////////////////////////////////////////////////////////////////////////////
243 234

  
244
    private void restorePreferences(SharedPreferences preferences, boolean justStarted)
235
    private void restorePreferences(SharedPreferences preferences)
245 236
      {
246
      RubikObjectList.restorePreferences(this,preferences,justStarted);
247

  
248
      for (int i = 0; i<ScreenList.LENGTH; i++)
249
        {
237
      for (int i=0; i<ScreenList.LENGTH; i++)
250 238
        ScreenList.getScreen(i).getScreenClass().restorePreferences(preferences);
251
        }
252 239

  
253 240
      ScreenList.restorePreferences(preferences);
254

  
255
      PatternSurfaceView view = findViewById(R.id.patternSurfaceView);
256
      OSInterface os = view.getInterface();
257
      os.setPreferences(preferences);
258
      view.getObjectControl().restorePreferences();
259 241
      }
260 242

  
261 243
///////////////////////////////////////////////////////////////////////////////////////////////////
src/main/java/org/distorted/patternui/ScreenPattern.java
13 13
import android.os.Bundle;
14 14
import android.util.TypedValue;
15 15
import android.view.Gravity;
16
import android.view.LayoutInflater;
17 16
import android.view.View;
18 17
import android.widget.LinearLayout;
19 18
import android.widget.TextView;
20 19

  
21
import org.distorted.dialogs.RubikDialogError;
22 20
import org.distorted.dialogs.RubikDialogPatternSingle;
21
import org.distorted.helpers.TransparentButton;
23 22
import org.distorted.helpers.TransparentImageButton;
24 23
import org.distorted.main.R;
25 24
import org.distorted.objectlib.main.ObjectControl;
......
30 29

  
31 30
public class ScreenPattern extends ScreenAbstract
32 31
  {
33
  private TextView mText;
34 32
  private TransparentImageButton mPrevButton, mNextButton, mBackButton;
33
  private TransparentImageButton mPrevPatt, mNextPatt;
34
  private TransparentButton mTextButton;
35 35
  private TextView mMovesText;
36 36
  private int mNumMoves;
37 37
  private int mPatternOrdinal, mCategory, mPattern;
......
57 57
    {
58 58
    float width = act.getScreenWidthInPixels();
59 59
    mButtonSize = width*PatternActivity.BUTTON_TEXT_SIZE;
60
    float titleSize  = width*PatternActivity.TITLE_TEXT_SIZE;
61
    LayoutInflater inflater = act.getLayoutInflater();
62 60

  
63 61
    mPatternOrdinal = -1;
64 62
    mCategory       = -1;
......
67 65
    // TOP ////////////////////////////
68 66
    LinearLayout layoutTop = act.findViewById(R.id.upperBar);
69 67
    layoutTop.removeAllViews();
70
    mText = (TextView)inflater.inflate(R.layout.upper_pattern_text, null);
71
    mText.setTextSize(TypedValue.COMPLEX_UNIT_PX, titleSize);
72
    mText.setText(R.string.patterns);
73
    layoutTop.addView(mText);
68

  
69
    setupPrevPatt(act);
70
    setupNextPatt(act);
71
    setupTextButton(act,width);
72

  
73
    LinearLayout.LayoutParams pTL = new LinearLayout.LayoutParams((int)(  width/6),LinearLayout.LayoutParams.MATCH_PARENT);
74
    LinearLayout.LayoutParams pTM = new LinearLayout.LayoutParams((int)(2*width/3),LinearLayout.LayoutParams.MATCH_PARENT);
75
    LinearLayout.LayoutParams pTR = new LinearLayout.LayoutParams((int)(  width/6),LinearLayout.LayoutParams.MATCH_PARENT);
76

  
77
    LinearLayout layoutTL = new LinearLayout(act);
78
    layoutTL.setLayoutParams(pTL);
79
    LinearLayout layoutTM = new LinearLayout(act);
80
    layoutTM.setLayoutParams(pTM);
81
    LinearLayout layoutTR = new LinearLayout(act);
82
    layoutTR.setLayoutParams(pTR);
83

  
84
    layoutTL.addView(mPrevPatt);
85
    layoutTM.addView(mTextButton);
86
    layoutTR.addView(mNextPatt);
87

  
88
    layoutTop.addView(layoutTL);
89
    layoutTop.addView(layoutTM);
90
    layoutTop.addView(layoutTR);
74 91

  
75 92
    // BOT ////////////////////////////
76 93
    LinearLayout layoutBot = act.findViewById(R.id.lowerBar);
......
80 97
    setupNextButton(act);
81 98
    setupTextView(act,width);
82 99

  
83
    LinearLayout.LayoutParams paramsL = new LinearLayout.LayoutParams((int)(width/2),LinearLayout.LayoutParams.MATCH_PARENT);
84
    LinearLayout.LayoutParams paramsM = new LinearLayout.LayoutParams((int)(width/6),LinearLayout.LayoutParams.MATCH_PARENT);
85
    LinearLayout.LayoutParams paramsR = new LinearLayout.LayoutParams((int)(width/3),LinearLayout.LayoutParams.MATCH_PARENT);
100
    LinearLayout.LayoutParams pBL = new LinearLayout.LayoutParams((int)(width/2),LinearLayout.LayoutParams.MATCH_PARENT);
101
    LinearLayout.LayoutParams pBM = new LinearLayout.LayoutParams((int)(width/6),LinearLayout.LayoutParams.MATCH_PARENT);
102
    LinearLayout.LayoutParams pBR = new LinearLayout.LayoutParams((int)(width/3),LinearLayout.LayoutParams.MATCH_PARENT);
86 103

  
87
    LinearLayout layoutLeft = new LinearLayout(act);
88
    layoutLeft.setLayoutParams(paramsL);
89
    LinearLayout layoutMid = new LinearLayout(act);
90
    layoutMid.setLayoutParams(paramsM);
91
    LinearLayout layoutRight = new LinearLayout(act);
92
    layoutRight.setLayoutParams(paramsR);
104
    LinearLayout layoutBL = new LinearLayout(act);
105
    layoutBL.setLayoutParams(pBL);
106
    LinearLayout layoutBM = new LinearLayout(act);
107
    layoutBM.setLayoutParams(pBM);
108
    LinearLayout layoutBR = new LinearLayout(act);
109
    layoutBR.setLayoutParams(pBR);
93 110

  
94
    layoutLeft.addView(mPrevButton);
95
    layoutLeft.addView(mMovesText);
96
    layoutLeft.addView(mNextButton);
111
    layoutBL.addView(mPrevButton);
112
    layoutBL.addView(mMovesText);
113
    layoutBL.addView(mNextButton);
97 114

  
98 115
    setupBackButton(act);
99 116

  
100
    layoutRight.addView(mBackButton);
117
    layoutBR.addView(mBackButton);
101 118

  
102
    layoutBot.addView(layoutLeft);
103
    layoutBot.addView(layoutMid);
104
    layoutBot.addView(layoutRight);
119
    layoutBot.addView(layoutBL);
120
    layoutBot.addView(layoutBM);
121
    layoutBot.addView(layoutBR);
122
    }
123

  
124
///////////////////////////////////////////////////////////////////////////////////////////////////
105 125

  
126
  private void showDialog(final PatternActivity act)
127
    {
106 128
    Bundle bundle = new Bundle();
107 129
    bundle.putString("argument",RubikObjectList.getCurrentName());
108 130
    RubikDialogPatternSingle diag = new RubikDialogPatternSingle();
......
110 132
    diag.show( act.getSupportFragmentManager(), RubikDialogPatternSingle.getDialogTag() );
111 133
    }
112 134

  
135
///////////////////////////////////////////////////////////////////////////////////////////////////
136

  
137
  private void setupPrevPatt(final PatternActivity act)
138
    {
139
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT,1.0f);
140
    mPrevPatt = new TransparentImageButton(act,R.drawable.ui_left,params);
141

  
142
    mPrevPatt.setOnClickListener( new View.OnClickListener()
143
      {
144
      @Override
145
      public void onClick(View v)
146
        {
147
        if( mPatternOrdinal<0 ) showDialog(act);
148
        else prevPattern(act);
149
        }
150
      });
151
    }
152

  
153
///////////////////////////////////////////////////////////////////////////////////////////////////
154

  
155
  private void setupNextPatt(final PatternActivity act)
156
    {
157
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT,1.0f);
158
    mNextPatt = new TransparentImageButton(act,R.drawable.ui_right,params);
159

  
160
    mNextPatt.setOnClickListener( new View.OnClickListener()
161
      {
162
      @Override
163
      public void onClick(View v)
164
        {
165
        if( mPatternOrdinal<0 ) showDialog(act);
166
        else nextPattern(act);
167
        }
168
      });
169
    }
170

  
171
///////////////////////////////////////////////////////////////////////////////////////////////////
172

  
173
  private void setupTextButton(final PatternActivity act, float width)
174
    {
175
    float textSize = width*PatternActivity.TITLE_TEXT_SIZE;
176
    mTextButton = new TransparentButton(act,R.string.choose_pattern,textSize);
177

  
178
    mTextButton.setOnClickListener( new View.OnClickListener()
179
      {
180
      @Override
181
      public void onClick(View v)
182
        {
183
        showDialog(act);
184
        }
185
      });
186
    }
187

  
113 188
///////////////////////////////////////////////////////////////////////////////////////////////////
114 189

  
115 190
  private void setupBackButton(final PatternActivity act)
......
139 214
      @Override
140 215
      public void onClick(View v)
141 216
        {
142
        RubikPattern pattern = RubikPattern.getInstance();
143
        ObjectControl control = act.getControl();
144
        pattern.backMove( control, mPatternOrdinal, mCategory, mPattern);
145
        int currMove = pattern.getCurMove(mPatternOrdinal, mCategory, mPattern);
146
        mMovesText.setText(act.getString(R.string.mo_placeholder,currMove,mNumMoves));
217
        if( mPatternOrdinal>=0 )
218
          {
219
          RubikPattern pattern = RubikPattern.getInstance();
220
          ObjectControl control = act.getControl();
221
          pattern.backMove(control, mPatternOrdinal, mCategory, mPattern);
222
          int currMove = pattern.getCurMove(mPatternOrdinal, mCategory, mPattern);
223
          mMovesText.setText(act.getString(R.string.mo_placeholder, currMove, mNumMoves));
224
          }
147 225
        }
148 226
      });
149 227
    }
......
160 238
      @Override
161 239
      public void onClick(View v)
162 240
        {
163
        RubikPattern pattern = RubikPattern.getInstance();
164
        ObjectControl control = act.getControl();
165
        pattern.makeMove( control, mPatternOrdinal, mCategory, mPattern);
166
        int currMove = pattern.getCurMove(mPatternOrdinal, mCategory, mPattern);
167
        mMovesText.setText(act.getString(R.string.mo_placeholder,currMove,mNumMoves));
241
        if( mPatternOrdinal>=0 )
242
          {
243
          RubikPattern pattern = RubikPattern.getInstance();
244
          ObjectControl control = act.getControl();
245
          pattern.makeMove(control, mPatternOrdinal, mCategory, mPattern);
246
          int currMove = pattern.getCurMove(mPatternOrdinal, mCategory, mPattern);
247
          mMovesText.setText(act.getString(R.string.mo_placeholder, currMove, mNumMoves));
248
          }
168 249
        }
169 250
      });
170 251
    }
......
201 282

  
202 283
    RubikPattern patt = RubikPattern.getInstance();
203 284
    String patternName = patt.getPatternName(ordinal,category,pattern);
204
    mText.setText(patternName);
285
    mTextButton.setText(patternName);
205 286

  
206 287
    mNumMoves   = patt.getNumMoves(ordinal,category,pattern);
207 288
    int currMove= patt.getCurMove(ordinal,category,pattern);
......
209 290
    mMovesText.setText(act.getString(R.string.mo_placeholder,currMove,mNumMoves));
210 291
    }
211 292

  
293
///////////////////////////////////////////////////////////////////////////////////////////////////
294

  
295
  private void prevPattern(final PatternActivity act)
296
    {
297
    RubikPattern patt = RubikPattern.getInstance();
298

  
299
    if( mPattern>0 )
300
      {
301
      setPattern(act,mPatternOrdinal,mCategory,mPattern-1);
302
      }
303
    else
304
      {
305
      if( mCategory>0 )
306
        {
307
        int numPat = patt.getNumPatterns(mPatternOrdinal,mCategory-1);
308
        setPattern(act,mPatternOrdinal,mCategory-1,numPat-1);
309
        }
310
      else
311
        {
312
        int numCat = patt.getNumCategories(mPatternOrdinal);
313
        int numPat = patt.getNumPatterns(mPatternOrdinal,numCat-1);
314
        setPattern(act,mPatternOrdinal,numCat-1,numPat-1);
315
        }
316
      }
317

  
318
    int[][] moves = patt.reInitialize(mPatternOrdinal, mCategory, mPattern);
319
    ObjectControl control = act.getControl();
320
    if( control!=null ) control.initializeObject(moves);
321
    }
322

  
323
///////////////////////////////////////////////////////////////////////////////////////////////////
324

  
325
  private void nextPattern(final PatternActivity act)
326
    {
327
    RubikPattern patt = RubikPattern.getInstance();
328
    int numPat = patt.getNumPatterns(mPatternOrdinal,mCategory);
329

  
330
    if( mPattern<numPat-1 )
331
      {
332
      setPattern(act,mPatternOrdinal,mCategory,mPattern+1);
333
      }
334
    else
335
      {
336
      int numCat = patt.getNumCategories(mPatternOrdinal);
337

  
338
      if( mCategory<numCat-1 )
339
        {
340
        setPattern(act,mPatternOrdinal,mCategory+1,0);
341
        }
342
      else
343
        {
344
        setPattern(act,mPatternOrdinal,0,0);
345
        }
346
      }
347

  
348
    int[][] moves = patt.reInitialize(mPatternOrdinal, mCategory, mPattern);
349
    ObjectControl control = act.getControl();
350
    if( control!=null ) control.initializeObject(moves);
351
    }
352

  
212 353
///////////////////////////////////////////////////////////////////////////////////////////////////
213 354

  
214 355
  public void savePreferences(SharedPreferences.Editor editor)
src/main/res/layout/dialog_pattern_single.xml
1
<?xml version="1.0" encoding="utf-8"?>
2

  
3
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
4
    android:layout_width="fill_parent"
5
    android:layout_height="fill_parent"
6
    android:gravity="center"
7
    android:orientation="horizontal"
8
    android:background="@android:color/transparent">
9

  
10
    <ExpandableListView
11
        android:id="@+id/patternListView"
12
        android:background="@color/grey"
13
        android:layout_marginLeft="10dp"
14
        android:layout_marginRight="10dp"
15
        android:layout_marginBottom="10dp"
16
        android:paddingLeft="5dp"
17
        android:paddingRight="5dp"
18
        android:paddingTop="10dp"
19
        android:paddingBottom="10dp"
20
        android:layout_width="fill_parent"
21
        android:layout_height="fill_parent"/>
22
</LinearLayout>

Also available in: Unified diff