Project

General

Profile

« Previous | Next » 

Revision 7aff6aa7

Added by Leszek Koltunski almost 5 years ago

Improvement for Downloader. Remove as much knowledge from it as possible.

View differences:

src/main/java/org/distorted/dialog/RubikDialogScoresPagerAdapter.java
41 41

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

  
44
  public void receive(final int[][][] country, final String[][][] name, final String[][][] time)
44
  public void receive(final String[][][] country, final String[][][] name, final String[][][] time)
45 45
    {
46 46
    prepareView();
47 47

  
......
74 74
      });
75 75
    try
76 76
      {
77
      Thread.sleep(200);
77
      Thread.sleep(150);
78 78
      }
79 79
    catch( InterruptedException ie)
80 80
      {
......
84 84

  
85 85
///////////////////////////////////////////////////////////////////////////////////////////////////
86 86

  
87
  private void addPage(final RubikDialogScoresView view, final int[][] country, final String[][] name, final String[][] time)
87
  private void addPage(final RubikDialogScoresView view, final String[][] country, final String[][] name, final String[][] time)
88 88
    {
89 89
    for(int i=0; i<RubikStatePlay.MAX_SCRAMBLE; i++)
90 90
      {
......
101 101

  
102 102
      try
103 103
        {
104
        Thread.sleep(60);
104
        Thread.sleep(50);
105 105
        }
106 106
      catch( InterruptedException ie)
107 107
        {
......
162 162
    if( allCreated )
163 163
      {
164 164
      RubikScoresDownloader downloader = new RubikScoresDownloader();
165
      downloader.download(this, mAct.getResources(), mAct.getPackageName());
165
      downloader.download(this);
166 166
      }
167 167

  
168 168
    return mViews[position];
src/main/java/org/distorted/dialog/RubikDialogScoresView.java
20 20
package org.distorted.dialog;
21 21

  
22 22
import android.content.Context;
23
import android.content.res.Resources;
23 24
import android.support.v4.app.FragmentActivity;
24 25
import android.util.AttributeSet;
25 26
import android.view.View;
......
63 64

  
64 65
///////////////////////////////////////////////////////////////////////////////////////////////////
65 66

  
66
  void exception(final String exce)
67
  LinearLayout createSection(FragmentActivity act, int scramble, final String[] country, final String[] name, final String[] time)
67 68
    {
68
    TextView text = findViewById(R.id.downloading_text);
69
    text.setText(exce);
69
    LinearLayout level = (LinearLayout)inflate(act, R.layout.dialog_scores_scramble_title, null);
70
    TextView text = level.findViewById(R.id.scoresScrambleTitle);
71
    text.setText(act.getString(R.string.sc_placeholder,(scramble+1)));
72

  
73
    Resources res = act.getResources();
74
    String packageName = act.getPackageName();
75

  
76
    for(int j = 0; j< RubikScoresDownloader.MAX_PLACES; j++)
77
      {
78
      if( name[j] != null )
79
        {
80
        View row = inflate(act, R.layout.dialog_scores_scramble_row, null);
81

  
82
        ImageView imgCoun = row.findViewById(R.id.scoresScrambleRowCountry);
83
        TextView textName = row.findViewById(R.id.scoresScrambleRowName);
84
        TextView textTime = row.findViewById(R.id.scoresScrambleRowTime);
85

  
86
        int resID = res.getIdentifier( country[j], "drawable", packageName);
87

  
88
        imgCoun.setImageResource(resID!=0 ? resID : R.drawable.unk);
89
        textName.setText(name[j]);
90
        textTime.setText(time[j]);
91

  
92
        level.addView(row);
93
        }
94
      }
95

  
96
    return level;
70 97
    }
71 98

  
72 99
///////////////////////////////////////////////////////////////////////////////////////////////////
100
// needs to run on UI thread
73 101

  
74 102
  void prepareView(FragmentActivity act)
75 103
    {
......
81 109
    }
82 110

  
83 111
///////////////////////////////////////////////////////////////////////////////////////////////////
112
// needs to run on UI thread
84 113

  
85 114
  void addSection(LinearLayout section)
86 115
    {
......
88 117
    }
89 118

  
90 119
///////////////////////////////////////////////////////////////////////////////////////////////////
120
// needs to run on UI thread
91 121

  
92
  LinearLayout createSection(FragmentActivity act, int scramble, final int[] country, final String[] name, final String[] time)
122
  void exception(final String exce)
93 123
    {
94
    LinearLayout level = (LinearLayout)inflate(act, R.layout.dialog_scores_scramble_title, null);
95
    TextView text = level.findViewById(R.id.scoresScrambleTitle);
96
    text.setText(act.getString(R.string.sc_placeholder,(scramble+1)));
97

  
98
    for(int j = 0; j< RubikScoresDownloader.MAX_PLACES; j++)
99
      {
100
      if( name[j] != null )
101
        {
102
        View row = inflate(act, R.layout.dialog_scores_scramble_row, null);
103

  
104
        ImageView imgCoun = row.findViewById(R.id.scoresScrambleRowCountry);
105
        TextView textName = row.findViewById(R.id.scoresScrambleRowName);
106
        TextView textTime = row.findViewById(R.id.scoresScrambleRowTime);
107

  
108
        imgCoun.setImageResource(country[j]);
109
        textName.setText(name[j]);
110
        textTime.setText(time[j]);
111

  
112
        level.addView(row);
113
        }
114
      }
115

  
116
    return level;
124
    TextView text = findViewById(R.id.downloading_text);
125
    text.setText(exce);
117 126
    }
118 127
  }
src/main/java/org/distorted/network/RubikScoresDownloader.java
19 19

  
20 20
package org.distorted.network;
21 21

  
22
import android.content.res.Resources;
23

  
24 22
import java.io.InputStream;
25 23
import java.net.HttpURLConnection;
26 24
import java.net.URL;
27 25
import java.net.UnknownHostException;
28 26

  
29 27
import org.distorted.magic.R;
30
import org.distorted.object.RubikObject;
31
import org.distorted.uistate.RubikStatePlay;
28

  
29
import static org.distorted.object.RubikObject.LENGTH;
30
import static org.distorted.uistate.RubikStatePlay.MAX_SCRAMBLE;
32 31

  
33 32
///////////////////////////////////////////////////////////////////////////////////////////////////
34 33

  
......
36 35
  {
37 36
  public interface Receiver
38 37
    {
39
    void receive(int[][][] country, String[][][] name, String[][][] time);
38
    void receive(String[][][] country, String[][][] name, String[][][] time);
40 39
    void exception(String exception);
41 40
    }
42 41

  
......
86 85
  private static boolean mRunning = false;
87 86
  private static int mMode = IDLE;
88 87
  private static Receiver mReceiver;
89
  private static Resources mResources;
90
  private static String mPackageName;
91 88

  
92 89
  private static String mScores = "";
93
  private static int[][][] mCountry = new int   [RubikObject.LENGTH][RubikStatePlay.MAX_SCRAMBLE][MAX_PLACES];
94
  private static String[][][] mName = new String[RubikObject.LENGTH][RubikStatePlay.MAX_SCRAMBLE][MAX_PLACES];
95
  private static String[][][] mTime = new String[RubikObject.LENGTH][RubikStatePlay.MAX_SCRAMBLE][MAX_PLACES];
90
  private static String[][][] mCountry = new String[LENGTH][MAX_SCRAMBLE][MAX_PLACES];
91
  private static String[][][] mName    = new String[LENGTH][MAX_SCRAMBLE][MAX_PLACES];
92
  private static String[][][] mTime    = new String[LENGTH][MAX_SCRAMBLE][MAX_PLACES];
96 93

  
97 94
///////////////////////////////////////////////////////////////////////////////////////////////////
98 95

  
......
124 121
      {
125 122
      int size = Integer.valueOf( row.substring(0,s1) );
126 123

  
127
      if( size>=0 && size< RubikObject.LENGTH )
124
      if( size>=0 && size<LENGTH )
128 125
        {
129 126
        int level      = Integer.valueOf( row.substring(s1+1,s2) );
130 127
        int place      = Integer.valueOf( row.substring(s2+1,s3) );
......
133 130
        String country = row.substring(s5+1, s6);
134 131
        String realTime= String.valueOf(time/10.0f);
135 132

  
136
        if(level>=0 && level<RubikStatePlay.MAX_SCRAMBLE && place>=0 && place<MAX_PLACES)
133
        if(level>=0 && level<MAX_SCRAMBLE && place>=0 && place<MAX_PLACES)
137 134
          {
138
          int resID = mResources.getIdentifier( country, "drawable", mPackageName);
139
          mCountry[size][level][place] = resID!=0 ? resID: R.drawable.unk;
140
          mName[size][level][place]    = name;
141
          mTime[size][level][place]    = realTime;
135
          mCountry[size][level][place] = country;
136
          mName   [size][level][place] = name;
137
          mTime   [size][level][place] = realTime;
142 138
          }
143 139
        }
144 140
      }
......
185 181

  
186 182
  private boolean doDownload()
187 183
    {
188
    String veri = "distored";
189
    String name = URLencode(veri);
184
    // TODO
190 185
    int numRuns = 1;
186
    String veri = "distored";
187
    // END
191 188
    String version = R.string.app_version+"d";
192
    String message=URL+"/download.cgi?n="+name+"&r="+numRuns+"&e="+version;
189

  
190
    String message=URL+"/download.cgi?n="+URLencode(veri)+"&r="+numRuns+"&e="+version;
193 191

  
194 192
    try
195 193
      {
......
285 283

  
286 284
///////////////////////////////////////////////////////////////////////////////////////////////////
287 285

  
288
  public void download(Receiver receiver, Resources resources, String packageName)
286
  public void download(Receiver receiver)
289 287
    {
290 288
    mReceiver = receiver;
291
    mResources= resources;
292
    mPackageName = packageName;
293 289
    mMode = DOWNLOAD;
294

  
295 290
    Thread networkThrd = new Thread(this);
296 291
    networkThrd.start();
297 292
    }

Also available in: Unified diff