Project

General

Profile

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

magiccube / src / main / java / org / distorted / dialogs / RubikDialogTutorialView.java @ cb6d9c37

1
///////////////////////////////////////////////////////////////////////////////////////////////////
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
import android.content.res.Resources;
24
import android.os.Bundle;
25
import android.util.AttributeSet;
26
import android.util.TypedValue;
27
import android.view.View;
28
import android.widget.Button;
29
import android.widget.FrameLayout;
30
import android.widget.ImageView;
31
import android.widget.LinearLayout;
32
import android.widget.TextView;
33

    
34
import androidx.fragment.app.FragmentActivity;
35

    
36
import com.google.firebase.analytics.FirebaseAnalytics;
37

    
38
import org.distorted.objectlib.main.ObjectType;
39

    
40
import org.distorted.main.BuildConfig;
41
import org.distorted.main.R;
42
import org.distorted.main.RubikActivity;
43
import org.distorted.tutorials.TutorialList;
44

    
45
///////////////////////////////////////////////////////////////////////////////////////////////////
46

    
47
public class RubikDialogTutorialView extends FrameLayout
48
  {
49
  private boolean mCanClick;
50

    
51
///////////////////////////////////////////////////////////////////////////////////////////////////
52

    
53
  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
  public RubikDialogTutorialView(FragmentActivity act, int width, int position)
68
    {
69
    super(act);
70

    
71
    clickPossible(true);
72
    int widthT = (int)(width* RubikActivity.TUTORIAL_ITEM_TEXT);
73

    
74
    RubikActivity ract = (RubikActivity)getContext();
75
    Resources res = act.getResources();
76
    String packageName = act.getPackageName();
77

    
78
    TutorialList list  = TutorialList.getObject(position);
79
    ObjectType objType = list.getObject();
80

    
81
    View tab = inflate( act, R.layout.dialog_tutorial_tab, null);
82
    LinearLayout layout = tab.findViewById(R.id.tabLayout);
83

    
84
    int numTutorials = list.getNumTutorials();
85

    
86
    int colorB = getResources().getColor(R.color.light_grey);
87
    int colorT = getResources().getColor(R.color.white);
88

    
89
    for(int i=0; i<numTutorials; i++)
90
      {
91
      String coun = list.getTutorialLanguage(i);
92
      String desc = list.getTutorialDescription(i);
93
      String url  = list.getTutorialURL(i);
94
      String auth = list.getTutorialAuthor(i);
95

    
96
      int countryID = res.getIdentifier( coun, "drawable", packageName);
97

    
98
      View row = createRow(ract,countryID,desc,url,auth,widthT,objType,colorB,colorT);
99
      layout.addView(row);
100
      }
101

    
102
    addView(tab);
103
    }
104

    
105
///////////////////////////////////////////////////////////////////////////////////////////////////
106

    
107
  void clickPossible(boolean click)
108
    {
109
    mCanClick = click;
110
    }
111

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

    
114
  private View createRow(final RubikActivity act, int countryID, final String desc, final String url,
115
                         final String auth, int size, final ObjectType obj, int colorB, int colorT)
116
    {
117
    float textSize = 0.5f*size;
118
    View row = inflate( act, R.layout.dialog_tutorial_row, null);
119

    
120
    LinearLayout layout = row.findViewById(R.id.tutorialLayout);
121
    layout.setMinimumHeight(size);
122

    
123
    Button butt = row.findViewById(R.id.tutorialButton);
124
    butt.setText(R.string.view);
125
    butt.setTextColor(colorT);
126
    butt.setBackgroundColor(colorB);
127
    butt.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
128
    butt.setHeight(size);
129

    
130
    butt.setOnClickListener( new View.OnClickListener()
131
      {
132
      @Override
133
      public void onClick(View v)
134
        {
135
        if( mCanClick )
136
          {
137
          act.switchTutorial(url,obj);
138
          analyticsReport(act,desc,auth,obj);
139
          clickPossible(false);
140
          }
141
        }
142
      });
143

    
144
    ImageView image = row.findViewById(R.id.tutorialCountry);
145
    int id = countryID!=0 ? countryID : R.drawable.un;
146
    image.setImageResource(id);
147

    
148
    TextView author = row.findViewById(R.id.tutorialAuthor);
149
    author.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
150
    author.setText(auth);
151

    
152
    TextView title  = row.findViewById(R.id.tutorialTitle);
153
    title.setTextSize(TypedValue.COMPLEX_UNIT_PX, textSize);
154
    title.setText(desc);
155

    
156
    return row;
157
    }
158

    
159
///////////////////////////////////////////////////////////////////////////////////////////////////
160

    
161
  private void analyticsReport(RubikActivity act, String desc, String author, ObjectType obj)
162
    {
163
    String message = desc+" ("+author+")";
164

    
165
    if( BuildConfig.DEBUG )
166
       {
167
       android.util.Log.d("tutorial", message);
168
       }
169
    else
170
      {
171
      FirebaseAnalytics analytics = act.getAnalytics();
172

    
173
      if( analytics!=null )
174
        {
175
        Bundle bundle = new Bundle();
176
        bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, message);
177
        bundle.putString(FirebaseAnalytics.Param.ITEM_NAME, obj.name());
178
        analytics.logEvent(FirebaseAnalytics.Event.TUTORIAL_BEGIN, bundle);
179
        }
180
      }
181
    }
182
  }
(19-19/19)