Project

General

Profile

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

magiccube / src / main / java / org / distorted / dialogs / RubikDialogTutorialView.java @ 8ab435b9

1 234a7582 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2020 Leszek Koltunski                                                               //
3
//                                                                                               //
4
// This file is part of Magic Cube.                                                              //
5
//                                                                                               //
6
// Magic Cube is free software: you can redistribute it and/or modify                            //
7
// it under the terms of the GNU General Public License as published by                          //
8
// the Free Software Foundation, either version 2 of the License, or                             //
9
// (at your option) any later version.                                                           //
10
//                                                                                               //
11
// Magic Cube is distributed in the hope that it will be useful,                                 //
12
// but WITHOUT ANY WARRANTY; without even the implied warranty of                                //
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                                 //
14
// GNU General Public License for more details.                                                  //
15
//                                                                                               //
16
// You should have received a copy of the GNU General Public License                             //
17
// along with Magic Cube.  If not, see <http://www.gnu.org/licenses/>.                           //
18
///////////////////////////////////////////////////////////////////////////////////////////////////
19
20
package org.distorted.dialogs;
21
22
import android.content.Context;
23 b91d4033 Leszek Koltunski
import android.content.res.Resources;
24 992748ab Leszek Koltunski
import android.os.Bundle;
25 234a7582 Leszek Koltunski
import android.util.AttributeSet;
26 b91d4033 Leszek Koltunski
import android.util.TypedValue;
27 234a7582 Leszek Koltunski
import android.view.View;
28 b91d4033 Leszek Koltunski
import android.widget.Button;
29 234a7582 Leszek Koltunski
import android.widget.FrameLayout;
30 ef1f3e34 Leszek Koltunski
import android.widget.ImageView;
31 b91d4033 Leszek Koltunski
import android.widget.LinearLayout;
32 ef1f3e34 Leszek Koltunski
import android.widget.TextView;
33 234a7582 Leszek Koltunski
34
import androidx.fragment.app.FragmentActivity;
35
36 992748ab Leszek Koltunski
import com.google.firebase.analytics.FirebaseAnalytics;
37
38 318c0a7d Leszek Koltunski
import org.distorted.objectlib.main.ObjectType;
39 3f7a4363 Leszek Koltunski
40 992748ab Leszek Koltunski
import org.distorted.main.BuildConfig;
41 234a7582 Leszek Koltunski
import org.distorted.main.R;
42
import org.distorted.main.RubikActivity;
43 eaf87d1d Leszek Koltunski
import org.distorted.tutorials.TutorialList;
44 234a7582 Leszek Koltunski
45
///////////////////////////////////////////////////////////////////////////////////////////////////
46
47
public class RubikDialogTutorialView extends FrameLayout
48
  {
49 a84c3a25 Leszek Koltunski
  private boolean mCanClick;
50
51
///////////////////////////////////////////////////////////////////////////////////////////////////
52
53 234a7582 Leszek Koltunski
  public RubikDialogTutorialView(Context context, AttributeSet attrs, int defStyle)
54
    {
55
    super(context, attrs, defStyle);
56
    }
57
58
///////////////////////////////////////////////////////////////////////////////////////////////////
59
60
  public RubikDialogTutorialView(Context context, AttributeSet attrs)
61
    {
62
    super(context, attrs);
63
    }
64
65
///////////////////////////////////////////////////////////////////////////////////////////////////
66
67 ef1f3e34 Leszek Koltunski
  public RubikDialogTutorialView(FragmentActivity act, int width, int position)
68 234a7582 Leszek Koltunski
    {
69
    super(act);
70
71 a84c3a25 Leszek Koltunski
    clickPossible(true);
72 ef1f3e34 Leszek Koltunski
    int widthT = (int)(width* RubikActivity.TUTORIAL_ITEM_TEXT);
73 234a7582 Leszek Koltunski
74 b91d4033 Leszek Koltunski
    RubikActivity ract = (RubikActivity)getContext();
75
    Resources res = act.getResources();
76
    String packageName = act.getPackageName();
77
78 992748ab Leszek Koltunski
    TutorialList list  = TutorialList.getObject(position);
79 8ab435b9 Leszek Koltunski
    ObjectType objType = list.getObject();
80 234a7582 Leszek Koltunski
81
    View tab = inflate( act, R.layout.dialog_tutorial_tab, null);
82 b91d4033 Leszek Koltunski
    LinearLayout layout = tab.findViewById(R.id.tabLayout);
83 234a7582 Leszek Koltunski
84 992748ab Leszek Koltunski
    int numTutorials = list.getNumTutorials();
85 234a7582 Leszek Koltunski
86 b91d4033 Leszek Koltunski
    for(int i=0; i<numTutorials; i++)
87
      {
88 992748ab Leszek Koltunski
      String coun = list.getTutorialLanguage(i);
89
      String desc = list.getTutorialDescription(i);
90
      String url  = list.getTutorialURL(i);
91
      String auth = list.getTutorialAuthor(i);
92 b91d4033 Leszek Koltunski
93
      int countryID = res.getIdentifier( coun, "drawable", packageName);
94
95 8ab435b9 Leszek Koltunski
      View row = createRow(ract,countryID,desc,url,auth,widthT,objType);
96 b91d4033 Leszek Koltunski
      layout.addView(row);
97
      }
98 234a7582 Leszek Koltunski
99
    addView(tab);
100
    }
101 b91d4033 Leszek Koltunski
102 a84c3a25 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
103
104
  void clickPossible(boolean click)
105
    {
106
    mCanClick = click;
107
    }
108
109 b91d4033 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
110
111 992748ab Leszek Koltunski
  private View createRow(final RubikActivity act, int countryID, final String desc, final String url,
112 318c0a7d Leszek Koltunski
                         final String auth, int width, final ObjectType obj)
113 b91d4033 Leszek Koltunski
    {
114
    View row = inflate( act, R.layout.dialog_tutorial_row, null);
115 ef1f3e34 Leszek Koltunski
    Button butt = row.findViewById(R.id.tutorialButton);
116 b91d4033 Leszek Koltunski
117 ef1f3e34 Leszek Koltunski
    butt.setText(R.string.view);
118
    butt.setTextSize(TypedValue.COMPLEX_UNIT_PX, 0.5f*width);
119
    butt.setHeight(width);
120 b91d4033 Leszek Koltunski
121
    butt.setOnClickListener( new View.OnClickListener()
122
      {
123
      @Override
124
      public void onClick(View v)
125
        {
126 a84c3a25 Leszek Koltunski
        if( mCanClick )
127
          {
128 7ac0ee88 Leszek Koltunski
          act.switchTutorial(url,obj);
129
          analyticsReport(act,desc,auth,obj);
130 a84c3a25 Leszek Koltunski
          clickPossible(false);
131
          }
132 b91d4033 Leszek Koltunski
        }
133
      });
134
135 ef1f3e34 Leszek Koltunski
    ImageView image = row.findViewById(R.id.tutorialCountry);
136
    int id = countryID!=0 ? countryID : R.drawable.un;
137
    image.setImageResource(id);
138
139
    TextView author = row.findViewById(R.id.tutorialAuthor);
140
    author.setTextSize(TypedValue.COMPLEX_UNIT_PX, 0.5f*width);
141
    author.setText(auth);
142
143
    TextView title  = row.findViewById(R.id.tutorialTitle);
144
    title.setTextSize(TypedValue.COMPLEX_UNIT_PX, 0.5f*width);
145
    title.setText(desc);
146
147 b91d4033 Leszek Koltunski
    return row;
148
    }
149 992748ab Leszek Koltunski
150
///////////////////////////////////////////////////////////////////////////////////////////////////
151
152 318c0a7d Leszek Koltunski
  private void analyticsReport(RubikActivity act, String desc, String author, ObjectType obj)
153 992748ab Leszek Koltunski
    {
154
    String message = desc+" ("+author+")";
155
156
    if( BuildConfig.DEBUG )
157
       {
158
       android.util.Log.d("tutorial", message);
159
       }
160
    else
161
      {
162
      FirebaseAnalytics analytics = act.getAnalytics();
163
164
      if( analytics!=null )
165
        {
166
        Bundle bundle = new Bundle();
167
        bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, message);
168 7ac0ee88 Leszek Koltunski
        bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, obj.name());
169 992748ab Leszek Koltunski
        analytics.logEvent(FirebaseAnalytics.Event.TUTORIAL_BEGIN, bundle);
170
        }
171
      }
172
    }
173 234a7582 Leszek Koltunski
  }