Project

General

Profile

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

magiccube / src / main / java / org / distorted / dialogs / RubikDialogPattern.java @ c02fa107

1 e108b57e Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
2 3a9d19ed Leszek Koltunski
// Copyright 2020 Leszek Koltunski                                                               //
3 e108b57e Leszek Koltunski
//                                                                                               //
4
// This file is part of Magic Cube.                                                              //
5
//                                                                                               //
6 68191e7d 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 e108b57e Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
9
10 1f9772f3 Leszek Koltunski
package org.distorted.dialogs;
11 e108b57e Leszek Koltunski
12
import android.app.Dialog;
13
import android.content.Context;
14 52d0a923 Leszek Koltunski
import android.content.DialogInterface;
15 e108b57e Leszek Koltunski
import android.os.Bundle;
16 66e777b0 Leszek Koltunski
import androidx.annotation.NonNull;
17
import androidx.fragment.app.FragmentActivity;
18
import androidx.viewpager.widget.ViewPager;
19
import androidx.appcompat.app.AlertDialog;
20
import androidx.appcompat.app.AppCompatDialogFragment;
21
import com.google.android.material.tabs.TabLayout;
22 e108b57e Leszek Koltunski
import android.util.DisplayMetrics;
23 52d0a923 Leszek Koltunski
import android.util.TypedValue;
24 e108b57e Leszek Koltunski
import android.view.LayoutInflater;
25
import android.view.View;
26 6e3fcb91 Leszek Koltunski
import android.view.ViewGroup;
27 e108b57e Leszek Koltunski
import android.view.Window;
28
import android.view.WindowManager;
29 52d0a923 Leszek Koltunski
import android.widget.Button;
30 e108b57e Leszek Koltunski
import android.widget.ImageView;
31
import android.widget.TextView;
32
33 1f9772f3 Leszek Koltunski
import org.distorted.main.R;
34 52d0a923 Leszek Koltunski
import org.distorted.main.RubikActivity;
35 d433b50e Leszek Koltunski
import org.distorted.objects.RubikObject;
36
import org.distorted.objects.RubikObjectList;
37 b498f3f6 Leszek Koltunski
import org.distorted.patterns.RubikPatternList;
38 e108b57e Leszek Koltunski
39
///////////////////////////////////////////////////////////////////////////////////////////////////
40
41
public class RubikDialogPattern extends AppCompatDialogFragment
42
  {
43 b88be423 Leszek Koltunski
  private RubikDialogPatternPagerAdapter mPagerAdapter;
44 e108b57e Leszek Koltunski
45
///////////////////////////////////////////////////////////////////////////////////////////////////
46
47
  @NonNull
48
  @Override
49
  public Dialog onCreateDialog(Bundle savedInstanceState)
50
    {
51 a8576d91 Leszek Koltunski
    final FragmentActivity act = getActivity();
52 e108b57e Leszek Koltunski
    AlertDialog.Builder builder = new AlertDialog.Builder(act);
53
54 52d0a923 Leszek Koltunski
    DisplayMetrics displaymetrics = new DisplayMetrics();
55
    act.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
56 6e3fcb91 Leszek Koltunski
57 1db2a539 Leszek Koltunski
    int h = displaymetrics.heightPixels;
58
    final float titleSize= h*RubikActivity.TAB_TEXT_SIZE;
59
    final float okSize   = h*RubikActivity.TAB_BUTTON_SIZE;
60
    final int   tabHeight= (int)(h*RubikActivity.TAB_HEIGHT);
61
    final int   tabWidth = (int)(h*RubikActivity.TAB_WIDTH);
62 52d0a923 Leszek Koltunski
63 e108b57e Leszek Koltunski
    LayoutInflater layoutInflater = act.getLayoutInflater();
64
    TextView tv = (TextView) layoutInflater.inflate(R.layout.dialog_title, null);
65 52d0a923 Leszek Koltunski
    tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, titleSize);
66 6f2a942e Leszek Koltunski
    tv.setText(R.string.choose_pattern);
67 e108b57e Leszek Koltunski
    builder.setCustomTitle(tv);
68
69 a8576d91 Leszek Koltunski
    builder.setPositiveButton( R.string.ok, new DialogInterface.OnClickListener()
70
      {
71
      @Override
72
      public void onClick(DialogInterface dialog, int which)
73
        {
74
75
        }
76
      });
77
78 e108b57e Leszek Koltunski
    LayoutInflater inflater = act.getLayoutInflater();
79
    final View view = inflater.inflate(R.layout.dialog_tabbed, null);
80
    builder.setView(view);
81
82
    ViewPager viewPager = view.findViewById(R.id.viewpager);
83
    TabLayout tabLayout = view.findViewById(R.id.sliding_tabs);
84
    mPagerAdapter = new RubikDialogPatternPagerAdapter(act, viewPager, this);
85
    tabLayout.setupWithViewPager(viewPager);
86 52547ba7 Leszek Koltunski
    viewPager.setCurrentItem(getPatternOrdinal());
87 e108b57e Leszek Koltunski
88 6e3fcb91 Leszek Koltunski
    ViewGroup.LayoutParams paramsView = new ViewGroup.LayoutParams( tabWidth,tabHeight );
89
90 b498f3f6 Leszek Koltunski
    for(int i=0; i< RubikPatternList.NUM_OBJECTS; i++)
91 e108b57e Leszek Koltunski
      {
92 6e3fcb91 Leszek Koltunski
      int ordinal = RubikPatternList.getObject(i);
93 d433b50e Leszek Koltunski
      RubikObject object = RubikObjectList.getObject(ordinal);
94 e108b57e Leszek Koltunski
      ImageView imageView = new ImageView(act);
95 eb985085 Leszek Koltunski
      if( object!=null ) object.setIconTo(act,imageView);
96 6e3fcb91 Leszek Koltunski
      imageView.setLayoutParams(paramsView);
97 e108b57e Leszek Koltunski
      TabLayout.Tab tab = tabLayout.getTabAt(i);
98
      if(tab!=null) tab.setCustomView(imageView);
99
      }
100
101 85248b04 Leszek Koltunski
    Dialog dialog = builder.create();
102
    dialog.setCanceledOnTouchOutside(false);
103
    Window window = dialog.getWindow();
104
105
    if( window!=null )
106
      {
107 ffd68f35 Leszek Koltunski
      window.getDecorView().setSystemUiVisibility(RubikActivity.FLAGS);
108 85248b04 Leszek Koltunski
      }
109
110 52d0a923 Leszek Koltunski
    dialog.setOnShowListener(new DialogInterface.OnShowListener()
111
      {
112
      @Override
113
      public void onShow(DialogInterface dialog)
114
        {
115
        Button btnPositive = ((AlertDialog)dialog).getButton(Dialog.BUTTON_POSITIVE);
116
        btnPositive.setTextSize(TypedValue.COMPLEX_UNIT_PX, okSize);
117
        }
118
      });
119
120 85248b04 Leszek Koltunski
    return dialog;
121 e108b57e Leszek Koltunski
    }
122
123 52547ba7 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
124
125
  private int getPatternOrdinal()
126
    {
127 400ff34d Leszek Koltunski
    int obj = RubikObjectList.getCurrObject();
128 52547ba7 Leszek Koltunski
    int ret = RubikPatternList.getOrdinal(obj);
129
130
    if( ret<0 )
131
      {
132 400ff34d Leszek Koltunski
      ret = RubikPatternList.getOrdinal(RubikObjectList.DEF_OBJECT);
133 52547ba7 Leszek Koltunski
      }
134
135
    return ret;
136
    }
137
138 e108b57e Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
139
140
  @Override
141
  public void onResume()
142
    {
143
    super.onResume();
144
145
    Window window = getDialog().getWindow();
146
    Context context = getContext();
147
148
    if( window!=null && context!=null )
149
      {
150
      DisplayMetrics metrics = context.getResources().getDisplayMetrics();
151
      WindowManager.LayoutParams params = window.getAttributes();
152 b6cce523 Leszek Koltunski
      params.width  = (int)Math.min( 0.65f*metrics.heightPixels,0.98f*metrics.widthPixels );
153
      params.height = (int)Math.min( 0.85f*metrics.heightPixels,1.30f*metrics.widthPixels );
154 e108b57e Leszek Koltunski
      window.setAttributes(params);
155
      }
156
    }
157
158 044529c1 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
159
160 c715128d Leszek Koltunski
  public void rememberState()
161 044529c1 Leszek Koltunski
    {
162 c715128d Leszek Koltunski
    mPagerAdapter.rememberState();
163 044529c1 Leszek Koltunski
    }
164
165 e108b57e Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
166
167
  public static String getDialogTag()
168
    {
169
    return "DialogPattern";
170
    }
171
  }