Revision 7fe62d1f
Added by Leszek Koltunski almost 3 years ago
src/main/java/org/distorted/dialogs/RubikDialogUpdateView.java | ||
---|---|---|
19 | 19 |
|
20 | 20 |
package org.distorted.dialogs; |
21 | 21 |
|
22 |
import java.lang.ref.WeakReference; |
|
23 |
|
|
22 | 24 |
import android.app.Activity; |
23 | 25 |
import android.graphics.Bitmap; |
24 | 26 |
import android.graphics.Color; |
... | ... | |
36 | 38 |
import org.distorted.external.RubikUpdates; |
37 | 39 |
import org.distorted.objects.RubikObjectList; |
38 | 40 |
|
39 |
import java.io.IOException; |
|
40 |
import java.lang.ref.WeakReference; |
|
41 |
|
|
42 | 41 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
43 | 42 |
|
44 | 43 |
public class RubikDialogUpdateView implements RubikNetwork.Downloadee |
... | ... | |
48 | 47 |
private ProgressBar mBar; |
49 | 48 |
private Button mButton; |
50 | 49 |
private TextView mDescription; |
51 |
|
|
52 | 50 |
private WeakReference<Activity> mAct; |
51 |
private boolean mIconSaved; |
|
53 | 52 |
|
54 | 53 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
55 | 54 |
|
56 | 55 |
public View createView(Activity act, RubikUpdates.UpdateInfo info, int fontSize, int padding, |
57 | 56 |
LinearLayout.LayoutParams pView, LinearLayout.LayoutParams pText, LinearLayout.LayoutParams pButt ) |
58 | 57 |
{ |
58 |
mIconSaved=false; |
|
59 | 59 |
mAct = new WeakReference<>(act); |
60 | 60 |
mInfo = info; |
61 | 61 |
final RubikNetwork.Downloadee downloadee = this; |
... | ... | |
111 | 111 |
|
112 | 112 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
113 | 113 |
|
114 |
void setIcon(Bitmap icon) |
|
114 |
void setIcon(Bitmap icon, boolean downloaded)
|
|
115 | 115 |
{ |
116 | 116 |
mIcon.setImageBitmap(icon); |
117 |
|
|
118 |
if( downloaded ) |
|
119 |
{ |
|
120 |
String name = mInfo.mObjectShortName + ".png"; |
|
121 |
Activity act = mAct.get(); |
|
122 |
RubikFiles files = RubikFiles.getInstance(); |
|
123 |
mIconSaved = files.saveIcon(act,mInfo.mIcon, name); |
|
124 |
} |
|
117 | 125 |
} |
118 | 126 |
|
119 | 127 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
141 | 149 |
mDescription.setText(R.string.installing); |
142 | 150 |
|
143 | 151 |
RubikFiles files = RubikFiles.getInstance(); |
144 |
boolean iSuccess=true,oSuccess=true, eSuccess=true; |
|
145 |
|
|
146 |
if( mInfo.mIcon!=null ) |
|
147 |
{ |
|
148 |
String name = mInfo.mObjectShortName + ".png"; |
|
149 |
Activity act = mAct.get(); |
|
150 |
iSuccess = files.saveFile(act,mInfo.mIcon, name); |
|
151 |
} |
|
152 |
boolean oSuccess=true, eSuccess=true; |
|
152 | 153 |
|
153 | 154 |
if( mInfo.mObjectStream!=null ) |
154 | 155 |
{ |
... | ... | |
164 | 165 |
eSuccess = files.saveFile(act,mInfo.mExtrasStream, name); |
165 | 166 |
} |
166 | 167 |
|
167 |
if( iSuccess && oSuccess )
|
|
168 |
if( mIconSaved || oSuccess || eSuccess )
|
|
168 | 169 |
{ |
169 | 170 |
mBar.setProgress(75); |
170 | 171 |
mDescription.setText(R.string.configuring); |
171 |
RubikObjectList.addDownloadedObject(mInfo.mObjectShortName,iSuccess,oSuccess,eSuccess);
|
|
172 |
RubikObjectList.addDownloadedObject(mInfo.mObjectShortName,mIconSaved,oSuccess,eSuccess);
|
|
172 | 173 |
mBar.setProgress(100); |
173 | 174 |
mDescription.setText(R.string.success); |
174 | 175 |
|
src/main/java/org/distorted/dialogs/RubikDialogUpdates.java | ||
---|---|---|
186 | 186 |
} |
187 | 187 |
|
188 | 188 |
RubikNetwork network = RubikNetwork.getInstance(); |
189 |
network.downloadIcons(this); |
|
189 |
network.downloadIcons(act,this);
|
|
190 | 190 |
} |
191 | 191 |
else |
192 | 192 |
{ |
... | ... | |
224 | 224 |
|
225 | 225 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
226 | 226 |
|
227 |
public void iconDownloaded(int ordinal, Bitmap icon) |
|
227 |
public void iconDownloaded(int ordinal, Bitmap icon, boolean downloaded)
|
|
228 | 228 |
{ |
229 | 229 |
FragmentActivity act = getActivity(); |
230 | 230 |
|
... | ... | |
236 | 236 |
public void run() |
237 | 237 |
{ |
238 | 238 |
RubikDialogUpdateView view = mPanes.get(ordinal); |
239 |
if( view!=null ) view.setIcon(icon); |
|
239 |
if( view!=null ) view.setIcon(icon,downloaded);
|
|
240 | 240 |
} |
241 | 241 |
}); |
242 | 242 |
} |
src/main/java/org/distorted/external/RubikFiles.java | ||
---|---|---|
27 | 27 |
|
28 | 28 |
import android.content.Context; |
29 | 29 |
import android.graphics.Bitmap; |
30 |
import android.graphics.BitmapFactory; |
|
30 | 31 |
|
31 | 32 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
32 | 33 |
|
... | ... | |
51 | 52 |
return mThis; |
52 | 53 |
} |
53 | 54 |
|
55 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
56 |
|
|
57 |
public Bitmap getIcon(Context context, String name) |
|
58 |
{ |
|
59 |
File file = new File(context.getFilesDir(), name); |
|
60 |
|
|
61 |
if( file.exists() ) |
|
62 |
{ |
|
63 |
String fname = context.getFilesDir().getAbsolutePath()+"/"+name; |
|
64 |
return BitmapFactory.decodeFile(fname); |
|
65 |
} |
|
66 |
|
|
67 |
return null; |
|
68 |
} |
|
69 |
|
|
54 | 70 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
55 | 71 |
|
56 | 72 |
public boolean saveFile(Context context, InputStream stream, String name) |
... | ... | |
79 | 95 |
|
80 | 96 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
81 | 97 |
|
82 |
public boolean saveFile(Context context, Bitmap bmp, String name)
|
|
98 |
public boolean saveIcon(Context context, Bitmap bmp, String name)
|
|
83 | 99 |
{ |
84 | 100 |
try |
85 | 101 |
{ |
src/main/java/org/distorted/external/RubikNetwork.java | ||
---|---|---|
29 | 29 |
import java.security.MessageDigest; |
30 | 30 |
import java.security.NoSuchAlgorithmException; |
31 | 31 |
|
32 |
import android.content.Context; |
|
32 | 33 |
import android.content.pm.PackageInfo; |
33 | 34 |
import android.content.pm.PackageManager; |
34 | 35 |
import android.graphics.Bitmap; |
... | ... | |
55 | 56 |
|
56 | 57 |
public interface IconReceiver |
57 | 58 |
{ |
58 |
void iconDownloaded(int ordinal, Bitmap bitmap); |
|
59 |
void iconDownloaded(int ordinal, Bitmap bitmap, boolean downloaded);
|
|
59 | 60 |
} |
60 | 61 |
|
61 | 62 |
public interface Updatee |
... | ... | |
693 | 694 |
|
694 | 695 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
695 | 696 |
|
696 |
private void iconThread(IconReceiver receiver) |
|
697 |
private void iconThread(Context context, IconReceiver receiver)
|
|
697 | 698 |
{ |
698 | 699 |
int numC = mUpdates.getCompletedNumber(); |
699 | 700 |
int numS = mUpdates.getStartedNumber(); |
... | ... | |
704 | 705 |
|
705 | 706 |
if( iconPresent!=0 ) |
706 | 707 |
{ |
707 |
Bitmap icon = mUpdates.getCompletedIcon(c); |
|
708 |
boolean downloaded = false; |
|
709 |
Bitmap icon = mUpdates.getCompletedIcon(context,c); |
|
708 | 710 |
|
709 | 711 |
if( icon==null ) |
710 | 712 |
{ |
711 | 713 |
String url = mUpdates.getCompletedURL(c); |
712 | 714 |
icon = downloadIcon(url); |
715 |
downloaded = true; |
|
713 | 716 |
} |
714 | 717 |
if( icon!=null ) |
715 | 718 |
{ |
716 | 719 |
mUpdates.setCompletedIcon(c,icon); |
717 |
receiver.iconDownloaded(c,icon); |
|
720 |
receiver.iconDownloaded(c,icon,downloaded);
|
|
718 | 721 |
} |
719 | 722 |
} |
720 | 723 |
} |
... | ... | |
725 | 728 |
|
726 | 729 |
if( iconPresent!=0 ) |
727 | 730 |
{ |
728 |
Bitmap icon = mUpdates.getStartedIcon(s); |
|
731 |
boolean downloaded = false; |
|
732 |
Bitmap icon = mUpdates.getStartedIcon(context,s); |
|
729 | 733 |
|
730 | 734 |
if( icon==null ) |
731 | 735 |
{ |
732 | 736 |
String url = mUpdates.getStartedURL(s); |
733 | 737 |
icon = downloadIcon(url); |
738 |
downloaded = true; |
|
734 | 739 |
} |
735 | 740 |
if( icon!=null ) |
736 | 741 |
{ |
737 | 742 |
mUpdates.setStartedIcon(s,icon); |
738 |
receiver.iconDownloaded(numC+s,icon); |
|
743 |
receiver.iconDownloaded(numC+s,icon,downloaded);
|
|
739 | 744 |
} |
740 | 745 |
} |
741 | 746 |
} |
... | ... | |
905 | 910 |
|
906 | 911 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
907 | 912 |
|
908 |
public void downloadIcons(final IconReceiver receiver) |
|
913 |
public void downloadIcons(final Context context, final IconReceiver receiver)
|
|
909 | 914 |
{ |
910 | 915 |
initializeStatics(); |
911 | 916 |
|
... | ... | |
913 | 918 |
{ |
914 | 919 |
public void run() |
915 | 920 |
{ |
916 |
iconThread(receiver); |
|
921 |
iconThread(context,receiver);
|
|
917 | 922 |
} |
918 | 923 |
}; |
919 | 924 |
|
src/main/java/org/distorted/external/RubikUpdates.java | ||
---|---|---|
21 | 21 |
|
22 | 22 |
import java.io.InputStream; |
23 | 23 |
import java.util.ArrayList; |
24 |
|
|
25 |
import android.content.Context; |
|
24 | 26 |
import android.graphics.Bitmap; |
25 | 27 |
import org.distorted.objects.RubikObjectList; |
26 | 28 |
|
... | ... | |
158 | 160 |
|
159 | 161 |
public void updateDone(String shortName) |
160 | 162 |
{ |
161 |
for( UpdateInfo info : mCompleted) |
|
163 |
for( UpdateInfo info : mCompleted )
|
|
162 | 164 |
{ |
163 | 165 |
if( info.mObjectShortName.equals(shortName) ) |
164 | 166 |
{ |
... | ... | |
198 | 200 |
|
199 | 201 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
200 | 202 |
|
201 |
public Bitmap getCompletedIcon(int ordinal) |
|
203 |
public Bitmap getCompletedIcon(Context context, int ordinal)
|
|
202 | 204 |
{ |
203 |
return mCompleted.get(ordinal).mIcon; |
|
205 |
UpdateInfo info = mCompleted.get(ordinal); |
|
206 |
Bitmap bmp = info.mIcon; |
|
207 |
if( bmp!=null ) return bmp; |
|
208 |
|
|
209 |
RubikFiles files = RubikFiles.getInstance(); |
|
210 |
bmp = files.getIcon(context,info.mObjectShortName+".png"); |
|
211 |
info.mIcon = bmp; |
|
212 |
return bmp; |
|
204 | 213 |
} |
205 | 214 |
|
206 | 215 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
207 | 216 |
|
208 |
public Bitmap getStartedIcon(int ordinal) |
|
217 |
public Bitmap getStartedIcon(Context context, int ordinal)
|
|
209 | 218 |
{ |
210 |
return mStarted.get(ordinal).mIcon; |
|
219 |
UpdateInfo info = mStarted.get(ordinal); |
|
220 |
Bitmap bmp = info.mIcon; |
|
221 |
if( bmp!=null ) return bmp; |
|
222 |
|
|
223 |
RubikFiles files = RubikFiles.getInstance(); |
|
224 |
bmp = files.getIcon(context,info.mObjectShortName+".png"); |
|
225 |
info.mIcon = bmp; |
|
226 |
return bmp; |
|
211 | 227 |
} |
212 | 228 |
|
213 | 229 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/solvers/SolverMain.java | ||
---|---|---|
125 | 125 |
} |
126 | 126 |
} |
127 | 127 |
|
128 |
if( cubit>19) return 4; |
|
128 |
if( cubit>19 ) return 4;
|
|
129 | 129 |
|
130 | 130 |
switch(face) |
131 | 131 |
{ |
Also available in: Unified diff
Download the icons only once and save to local storage.