Project

General

Profile

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

magiccube / src / main / java / org / distorted / screens / RubikScreenPattern.java @ 1c04d054

1
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2020 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.screens;
11

    
12
import android.content.SharedPreferences;
13
import androidx.fragment.app.FragmentManager;
14
import android.util.TypedValue;
15
import android.view.Gravity;
16
import android.view.LayoutInflater;
17
import android.view.View;
18
import android.widget.LinearLayout;
19
import android.widget.TextView;
20

    
21
import org.distorted.objectlib.main.ObjectControl;
22

    
23
import org.distorted.main.R;
24
import org.distorted.dialogs.RubikDialogPattern;
25
import org.distorted.helpers.TransparentImageButton;
26
import org.distorted.main_old.RubikActivity;
27
import org.distorted.objects.RubikObjectList;
28
import org.distorted.objectlib.patterns.RubikPattern;
29
import org.distorted.objectlib.patterns.RubikPatternList;
30

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

    
33
public class RubikScreenPattern extends RubikScreenAbstract
34
  {
35
  private TextView mText;
36
  private TransparentImageButton mPrevButton, mNextButton, mBackButton;
37
  private TextView mMovesText;
38
  private int mNumMoves;
39
  private int mPatternOrdinal, mCategory, mPattern;
40
  private float mButtonSize;
41

    
42
///////////////////////////////////////////////////////////////////////////////////////////////////
43

    
44
  RubikScreenPattern()
45
    {
46

    
47
    }
48

    
49
///////////////////////////////////////////////////////////////////////////////////////////////////
50

    
51
  void leaveScreen(RubikActivity act)
52
    {
53
    int object = RubikPatternList.getObject(mPatternOrdinal);
54

    
55
    if( !RubikObjectList.setCurrObject(object) )
56
      {
57
      act.changeObject(object,false);
58
      }
59
    }
60

    
61
///////////////////////////////////////////////////////////////////////////////////////////////////
62

    
63
  void enterScreen(final RubikActivity act)
64
    {
65
    float width = act.getScreenWidthInPixels();
66
    mButtonSize = width*RubikActivity.BUTTON_TEXT_SIZE;
67
    float titleSize  = width*RubikActivity.TITLE_TEXT_SIZE;
68
    LayoutInflater inflater = act.getLayoutInflater();
69

    
70
    // TOP ////////////////////////////
71
    LinearLayout layoutTop = act.findViewById(R.id.upperBar);
72
    layoutTop.removeAllViews();
73
    mText = (TextView)inflater.inflate(R.layout.upper_pattern_text, null);
74
    mText.setTextSize(TypedValue.COMPLEX_UNIT_PX, titleSize);
75
    mText.setText(R.string.patterns);
76
    layoutTop.addView(mText);
77

    
78
    // BOT ////////////////////////////
79
    LinearLayout layoutBot = act.findViewById(R.id.lowerBar);
80
    layoutBot.removeAllViews();
81

    
82
    setupPrevButton(act);
83
    setupNextButton(act);
84
    setupTextView(act,width);
85

    
86
    setTrioState(false);
87

    
88
    LinearLayout.LayoutParams paramsL = new LinearLayout.LayoutParams((int)(width/2),LinearLayout.LayoutParams.MATCH_PARENT);
89
    LinearLayout.LayoutParams paramsM = new LinearLayout.LayoutParams((int)(width/6),LinearLayout.LayoutParams.MATCH_PARENT);
90
    LinearLayout.LayoutParams paramsR = new LinearLayout.LayoutParams((int)(width/3),LinearLayout.LayoutParams.MATCH_PARENT);
91

    
92
    LinearLayout layoutLeft = new LinearLayout(act);
93
    layoutLeft.setLayoutParams(paramsL);
94
    LinearLayout layoutMid = new LinearLayout(act);
95
    layoutMid.setLayoutParams(paramsM);
96
    LinearLayout layoutRight = new LinearLayout(act);
97
    layoutRight.setLayoutParams(paramsR);
98

    
99
    layoutLeft.addView(mPrevButton);
100
    layoutLeft.addView(mMovesText);
101
    layoutLeft.addView(mNextButton);
102

    
103
    setupBackButton(act);
104

    
105
    layoutRight.addView(mBackButton);
106

    
107
    layoutBot.addView(layoutLeft);
108
    layoutBot.addView(layoutMid);
109
    layoutBot.addView(layoutRight);
110
    }
111

    
112
///////////////////////////////////////////////////////////////////////////////////////////////////
113

    
114
  private void showDialog(FragmentManager manager)
115
    {
116
    RubikDialogPattern diag = new RubikDialogPattern();
117
    diag.show( manager, RubikDialogPattern.getDialogTag() );
118
    }
119

    
120
///////////////////////////////////////////////////////////////////////////////////////////////////
121

    
122
  private void setTrioState(boolean enable)
123
    {
124
    int state = enable ? View.VISIBLE : View.INVISIBLE;
125

    
126
    if( mPrevButton!=null ) mPrevButton.setVisibility(state);
127
    if( mNextButton!=null ) mNextButton.setVisibility(state);
128
    if( mMovesText !=null ) mMovesText.setVisibility(state);
129
    }
130

    
131
///////////////////////////////////////////////////////////////////////////////////////////////////
132

    
133
  private void setupBackButton(final RubikActivity act)
134
    {
135
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT,1.0f);
136
    mBackButton = new TransparentImageButton(act,R.drawable.ui_back,params);
137

    
138
    mBackButton.setOnClickListener( new View.OnClickListener()
139
      {
140
      @Override
141
      public void onClick(View v)
142
        {
143
        FragmentManager mana = act.getSupportFragmentManager();
144
        ScreenList.goBack(act);
145
        showDialog(mana);
146
        }
147
      });
148
    }
149

    
150
///////////////////////////////////////////////////////////////////////////////////////////////////
151

    
152
  private void setupPrevButton(final RubikActivity act)
153
    {
154
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT,1.0f);
155
    mPrevButton = new TransparentImageButton(act,R.drawable.ui_left,params);
156

    
157
    mPrevButton.setOnClickListener( new View.OnClickListener()
158
      {
159
      @Override
160
      public void onClick(View v)
161
        {
162
        RubikPattern pattern = RubikPattern.getInstance();
163
        ObjectControl control = act.getControl();
164
        pattern.backMove( control, mPatternOrdinal, mCategory, mPattern);
165
        int currMove = pattern.getCurMove(mPatternOrdinal, mCategory, mPattern);
166
        mMovesText.setText(act.getString(R.string.mo_placeholder,currMove,mNumMoves));
167
        }
168
      });
169
    }
170

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

    
173
  private void setupNextButton(final RubikActivity act)
174
    {
175
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT,1.0f);
176
    mNextButton = new TransparentImageButton(act,R.drawable.ui_right,params);
177

    
178
    mNextButton.setOnClickListener( new View.OnClickListener()
179
      {
180
      @Override
181
      public void onClick(View v)
182
        {
183
        RubikPattern pattern = RubikPattern.getInstance();
184
        ObjectControl control = act.getControl();
185
        pattern.makeMove( control, mPatternOrdinal, mCategory, mPattern);
186
        int currMove = pattern.getCurMove(mPatternOrdinal, mCategory, mPattern);
187
        mMovesText.setText(act.getString(R.string.mo_placeholder,currMove,mNumMoves));
188
        }
189
      });
190
    }
191

    
192
///////////////////////////////////////////////////////////////////////////////////////////////////
193

    
194
  private void setupTextView(final RubikActivity act, final float width)
195
    {
196
    int padding = (int)(width*RubikActivity.PADDING);
197
    int margin  = (int)(width*RubikActivity.SMALL_MARGIN);
198

    
199
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT,2.0f);
200
    params.topMargin    = margin;
201
    params.bottomMargin = margin;
202
    params.leftMargin   = margin;
203
    params.rightMargin  = margin;
204

    
205
    mMovesText = new TextView(act);
206
    mMovesText.setTextSize(20);
207
    mMovesText.setLayoutParams(params);
208
    mMovesText.setPadding(padding,0,padding,0);
209
    mMovesText.setGravity(Gravity.CENTER);
210
    mMovesText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mButtonSize);
211
    mMovesText.setText(act.getString(R.string.mo_placeholder,0,0));
212
    }
213

    
214
///////////////////////////////////////////////////////////////////////////////////////////////////
215

    
216
  public void setPattern(final RubikActivity act, int ordinal, int category, int pattern)
217
    {
218
    mPatternOrdinal = ordinal;
219
    mCategory       = category;
220
    mPattern        = pattern;
221

    
222
    setTrioState(true);
223

    
224
    RubikPattern patt = RubikPattern.getInstance();
225
    String patternName = patt.getPatternName(ordinal,category,pattern);
226
    mText.setText(patternName);
227

    
228
    mNumMoves   = patt.getNumMoves(ordinal,category,pattern);
229
    int currMove= patt.getCurMove(ordinal,category,pattern);
230

    
231
    mMovesText.setText(act.getString(R.string.mo_placeholder,currMove,mNumMoves));
232
    }
233

    
234
///////////////////////////////////////////////////////////////////////////////////////////////////
235

    
236
  public void savePreferences(SharedPreferences.Editor editor)
237
    {
238

    
239
    }
240

    
241
///////////////////////////////////////////////////////////////////////////////////////////////////
242

    
243
  public void restorePreferences(SharedPreferences preferences)
244
    {
245

    
246
    }
247
  }
(4-4/10)