Project

General

Profile

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

magiccube / src / main / java / org / distorted / dialog / RubikDialogScoresView.java @ 1c90c64a

1 f2a9be6d 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 211b48f2 Leszek Koltunski
package org.distorted.dialog;
21 f2a9be6d Leszek Koltunski
22
import android.content.Context;
23 7aff6aa7 Leszek Koltunski
import android.content.res.Resources;
24 b8b38548 Leszek Koltunski
import android.support.v4.app.FragmentActivity;
25 f2a9be6d Leszek Koltunski
import android.util.AttributeSet;
26
import android.view.View;
27
import android.widget.FrameLayout;
28 cc5ec229 Leszek Koltunski
import android.widget.ImageView;
29 b8b38548 Leszek Koltunski
import android.widget.LinearLayout;
30
import android.widget.TextView;
31 f2a9be6d Leszek Koltunski
32 211b48f2 Leszek Koltunski
import org.distorted.magic.R;
33 1c90c64a Leszek Koltunski
import org.distorted.object.RubikObjectList;
34
import org.distorted.scores.RubikScores;
35
36 f0e87514 Leszek Koltunski
import static org.distorted.scores.RubikScoresDownloader.MAX_PLACES;
37 211b48f2 Leszek Koltunski
38 f2a9be6d Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
39
40 0fd3ac1f Leszek Koltunski
public class RubikDialogScoresView extends FrameLayout
41 f2a9be6d Leszek Koltunski
  {
42 946d9762 Leszek Koltunski
  LinearLayout mLayout;
43 f2a9be6d Leszek Koltunski
44
///////////////////////////////////////////////////////////////////////////////////////////////////
45
46 0fd3ac1f Leszek Koltunski
  public RubikDialogScoresView(Context context, AttributeSet attrs, int defStyle)
47 f2a9be6d Leszek Koltunski
    {
48
    super(context, attrs, defStyle);
49
    }
50
51
///////////////////////////////////////////////////////////////////////////////////////////////////
52
53 0fd3ac1f Leszek Koltunski
  public RubikDialogScoresView(Context context, AttributeSet attrs)
54 f2a9be6d Leszek Koltunski
    {
55
    super(context, attrs);
56
    }
57
58
///////////////////////////////////////////////////////////////////////////////////////////////////
59
60 0fd3ac1f Leszek Koltunski
  public RubikDialogScoresView(Context context)
61 f2a9be6d Leszek Koltunski
    {
62
    super(context);
63
64 0fd3ac1f Leszek Koltunski
    View view = inflate(context, R.layout.dialog_scores_downloading, null);
65 b8b38548 Leszek Koltunski
    addView(view);
66 f2a9be6d Leszek Koltunski
    }
67
68 a675474f Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
69
70 1c90c64a Leszek Koltunski
  LinearLayout createSection(FragmentActivity act, int tab, int scramble, final String[] country, final String[] name, final float[] time)
71 a675474f Leszek Koltunski
    {
72 7aff6aa7 Leszek Koltunski
    LinearLayout level = (LinearLayout)inflate(act, R.layout.dialog_scores_scramble_title, null);
73
    TextView text = level.findViewById(R.id.scoresScrambleTitle);
74
    text.setText(act.getString(R.string.sc_placeholder,(scramble+1)));
75
76
    Resources res = act.getResources();
77
    String packageName = act.getPackageName();
78
79 1c90c64a Leszek Koltunski
    int object = RubikObjectList.unpackObject(tab);
80
    int size   = RubikObjectList.unpackSize(tab);
81
    RubikScores scores = RubikScores.getInstance();
82 7aff6aa7 Leszek Koltunski
83 1c90c64a Leszek Koltunski
    boolean inserted = false;
84
    long myRecordInSeconds = scores.getRecord(object, size, scramble);
85
    String myName = scores.getName();
86
    int myCountryID = scores.getCountryID();
87
    String myRecord = ( myRecordInSeconds<RubikScores.NO_RECORD ) ? Float.toString((myRecordInSeconds/100)/10.0f) : "??";
88
    String theirTime;
89
    int theirCountryID;
90 7aff6aa7 Leszek Koltunski
91 1c90c64a Leszek Koltunski
    int white = res.getColor(R.color.white);
92
    int red   = res.getColor(R.color.red);
93 7aff6aa7 Leszek Koltunski
94 1c90c64a Leszek Koltunski
    for(int j=0; j<MAX_PLACES-1; j++)
95
      {
96
      if( name[j] != null )
97
        {
98
        if( myRecordInSeconds<time[j] && !inserted )
99
          {
100
          inserted = true;
101
          View row = createRow(act, myCountryID, myName, myRecord, red);
102
          level.addView(row);
103
          }
104
105
        theirCountryID = res.getIdentifier( country[j], "drawable", packageName);
106
        theirTime = Float.toString(time[j]);
107
        View row = createRow(act, theirCountryID, name[j], theirTime, white);
108 7aff6aa7 Leszek Koltunski
        level.addView(row);
109
        }
110
      }
111
112 1c90c64a Leszek Koltunski
    if( !inserted )
113
      {
114
      View row = createRow(act, myCountryID, myName, myRecord, red);
115
      level.addView(row);
116
      }
117
118 7aff6aa7 Leszek Koltunski
    return level;
119 a675474f Leszek Koltunski
    }
120
121 1c90c64a Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
122
123
  private View createRow(FragmentActivity act, int countryID, String name, String time, int color)
124
    {
125
    View row = inflate(act, R.layout.dialog_scores_scramble_row, null);
126
127
    ImageView imgCoun = row.findViewById(R.id.scoresScrambleRowCountry);
128
    TextView textName = row.findViewById(R.id.scoresScrambleRowName);
129
    TextView textTime = row.findViewById(R.id.scoresScrambleRowTime);
130
131
    imgCoun.setImageResource(countryID!=0 ? countryID : R.drawable.unk);
132
    textName.setText(name);
133
    textTime.setText(time);
134
135
    textName.setTextColor(color);
136
    textTime.setTextColor(color);
137
138
    return row;
139
    }
140
141 f2a9be6d Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
142 7aff6aa7 Leszek Koltunski
// needs to run on UI thread
143 f2a9be6d Leszek Koltunski
144 946d9762 Leszek Koltunski
  void prepareView(FragmentActivity act)
145 b8b38548 Leszek Koltunski
    {
146
    removeAllViews();
147
148 0fd3ac1f Leszek Koltunski
    View tab = inflate(act, R.layout.dialog_scores_tab, null);
149 946d9762 Leszek Koltunski
    mLayout = tab.findViewById(R.id.tabLayout);
150 b8b38548 Leszek Koltunski
    addView(tab);
151 946d9762 Leszek Koltunski
    }
152 b8b38548 Leszek Koltunski
153 946d9762 Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
154 7aff6aa7 Leszek Koltunski
// needs to run on UI thread
155 b8b38548 Leszek Koltunski
156 d5fb0e7e Leszek Koltunski
  void addSection(LinearLayout section)
157
    {
158
    mLayout.addView(section);
159
    }
160
161
///////////////////////////////////////////////////////////////////////////////////////////////////
162 7aff6aa7 Leszek Koltunski
// needs to run on UI thread
163 d5fb0e7e Leszek Koltunski
164 7aff6aa7 Leszek Koltunski
  void exception(final String exce)
165 946d9762 Leszek Koltunski
    {
166 7aff6aa7 Leszek Koltunski
    TextView text = findViewById(R.id.downloading_text);
167
    text.setText(exce);
168 f2a9be6d Leszek Koltunski
    }
169
  }