Revision 46be3ddf
Added by Leszek Koltunski almost 3 years ago
src/main/java/org/distorted/dialogs/RubikDialogScoresPagerAdapter.java | ||
---|---|---|
38 | 38 |
|
39 | 39 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
40 | 40 |
|
41 |
class RubikDialogScoresPagerAdapter extends PagerAdapter implements RubikNetwork.Receiver |
|
41 |
class RubikDialogScoresPagerAdapter extends PagerAdapter implements RubikNetwork.ScoresReceiver
|
|
42 | 42 |
{ |
43 | 43 |
private final FragmentActivity mAct; |
44 | 44 |
private final RubikDialogScores mDialog; |
... | ... | |
157 | 157 |
|
158 | 158 |
switch(errorNumber) |
159 | 159 |
{ |
160 |
case '1': message("Network error");
|
|
160 |
case '1': message(mAct.getString(R.string.networkError));
|
|
161 | 161 |
break; |
162 | 162 |
case '2': RubikScores scores = RubikScores.getInstance(); |
163 | 163 |
Bundle bundle = new Bundle(); |
src/main/java/org/distorted/dialogs/RubikDialogUpdateView.java | ||
---|---|---|
21 | 21 |
|
22 | 22 |
import android.app.Activity; |
23 | 23 |
import android.graphics.Bitmap; |
24 |
import android.graphics.Color; |
|
24 | 25 |
import android.util.TypedValue; |
25 | 26 |
import android.view.View; |
26 | 27 |
import android.widget.Button; |
... | ... | |
30 | 31 |
import android.widget.TextView; |
31 | 32 |
|
32 | 33 |
import org.distorted.main.R; |
34 |
import org.distorted.network.RubikNetwork; |
|
33 | 35 |
import org.distorted.network.RubikUpdates; |
34 | 36 |
|
37 |
import java.io.InputStream; |
|
38 |
|
|
35 | 39 |
import static android.view.View.GONE; |
40 |
import static android.view.View.VISIBLE; |
|
36 | 41 |
|
37 | 42 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
38 | 43 |
|
39 |
public class RubikDialogUpdateView |
|
44 |
public class RubikDialogUpdateView implements RubikNetwork.Downloadee
|
|
40 | 45 |
{ |
41 | 46 |
private ImageView mIcon; |
47 |
private RubikUpdates.UpdateInfo mInfo; |
|
48 |
private ProgressBar mBar; |
|
49 |
private Button mButton; |
|
50 |
private TextView mDescription; |
|
42 | 51 |
|
43 | 52 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
44 | 53 |
|
45 | 54 |
public View createView(Activity act, RubikUpdates.UpdateInfo info, int fontSize, int padding, |
46 | 55 |
LinearLayout.LayoutParams pView, LinearLayout.LayoutParams pText, LinearLayout.LayoutParams pButt ) |
47 | 56 |
{ |
57 |
mInfo = info; |
|
58 |
final RubikNetwork.Downloadee downloadee = this; |
|
48 | 59 |
View view = act.getLayoutInflater().inflate(R.layout.dialog_updates_pane, null); |
49 | 60 |
TextView title = view.findViewById(R.id.updates_pane_title); |
50 | 61 |
title.setText(info.mObjectLongName); |
51 |
TextView description = view.findViewById(R.id.updates_pane_description);
|
|
52 |
description.setText(info.mDescription);
|
|
62 |
mDescription = view.findViewById(R.id.updates_pane_description);
|
|
63 |
mDescription.setText(info.mDescription);
|
|
53 | 64 |
|
54 | 65 |
mIcon = view.findViewById(R.id.updates_pane_image); |
55 | 66 |
mIcon.setImageResource(R.drawable.unknown_icon); |
... | ... | |
57 | 68 |
view.setLayoutParams(pView); |
58 | 69 |
|
59 | 70 |
title.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize); |
60 |
description.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize);
|
|
71 |
mDescription.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize);
|
|
61 | 72 |
|
62 | 73 |
title.setLayoutParams(pText); |
63 |
description.setLayoutParams(pText);
|
|
74 |
mDescription.setLayoutParams(pText);
|
|
64 | 75 |
|
65 | 76 |
view.setPadding(padding,padding,padding,padding); |
66 | 77 |
|
67 |
ProgressBar bar = view.findViewById(R.id.updates_pane_bar);
|
|
68 |
Button button = view.findViewById(R.id.updates_pane_button);
|
|
78 |
mBar = view.findViewById(R.id.updates_pane_bar);
|
|
79 |
mButton = view.findViewById(R.id.updates_pane_button);
|
|
69 | 80 |
|
70 | 81 |
if( info.mPercent>=100 ) |
71 | 82 |
{ |
72 |
bar.setVisibility(GONE);
|
|
73 |
button.setOnClickListener( new View.OnClickListener()
|
|
83 |
mBar.setVisibility(GONE);
|
|
84 |
mButton.setOnClickListener( new View.OnClickListener()
|
|
74 | 85 |
{ |
75 | 86 |
@Override |
76 | 87 |
public void onClick(View v) |
77 | 88 |
{ |
78 |
android.util.Log.e("D", "INSTALL pressed"); |
|
89 |
startDownload(); |
|
90 |
RubikNetwork network = RubikNetwork.getInstance(); |
|
91 |
network.downloadJSON(info,downloadee); |
|
79 | 92 |
} |
80 | 93 |
}); |
81 | 94 |
|
82 |
button.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize); |
|
83 |
button.setLayoutParams(pButt); |
|
95 |
mButton.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize); |
|
96 |
mButton.setLayoutParams(pButt); |
|
97 |
mBar.setLayoutParams(pButt); |
|
84 | 98 |
} |
85 | 99 |
else |
86 | 100 |
{ |
87 |
button.setVisibility(GONE);
|
|
88 |
bar.setLayoutParams(pButt);
|
|
89 |
bar.setProgress(info.mPercent);
|
|
101 |
mButton.setVisibility(GONE);
|
|
102 |
mBar.setLayoutParams(pButt);
|
|
103 |
mBar.setProgress(info.mPercent);
|
|
90 | 104 |
} |
91 | 105 |
|
92 | 106 |
return view; |
... | ... | |
98 | 112 |
{ |
99 | 113 |
mIcon.setImageBitmap(icon); |
100 | 114 |
} |
115 |
|
|
116 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
117 |
|
|
118 |
private void startDownload() |
|
119 |
{ |
|
120 |
mDescription.setText(R.string.downloading); |
|
121 |
mBar.setProgress(20); |
|
122 |
mButton.setVisibility(GONE); |
|
123 |
mBar.setVisibility(VISIBLE); |
|
124 |
} |
|
125 |
|
|
126 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
127 |
|
|
128 |
public void jsonDownloaded() |
|
129 |
{ |
|
130 |
if( mInfo.mUpdateObject && mInfo.mObjectStream==null ) |
|
131 |
{ |
|
132 |
mDescription.setTextColor(Color.parseColor("#ff0000")); |
|
133 |
mDescription.setText(R.string.networkError); |
|
134 |
} |
|
135 |
else |
|
136 |
{ |
|
137 |
mBar.setProgress(50); |
|
138 |
mDescription.setText(R.string.installing); |
|
139 |
} |
|
140 |
} |
|
101 | 141 |
} |
src/main/java/org/distorted/dialogs/RubikDialogUpdates.java | ||
---|---|---|
46 | 46 |
|
47 | 47 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
48 | 48 |
|
49 |
public class RubikDialogUpdates extends AppCompatDialogFragment implements RubikNetwork.Updatee |
|
49 |
public class RubikDialogUpdates extends AppCompatDialogFragment implements RubikNetwork.IconReceiver, RubikNetwork.Updatee
|
|
50 | 50 |
{ |
51 | 51 |
private TextView mText; |
52 | 52 |
private LinearLayout mLayout; |
... | ... | |
218 | 218 |
|
219 | 219 |
public void errorUpdate() |
220 | 220 |
{ |
221 |
mText.setText("Network error"); |
|
221 |
FragmentActivity act = getActivity(); |
|
222 |
if( act!=null ) mText.setText(act.getString(R.string.networkError)); |
|
222 | 223 |
} |
223 | 224 |
|
224 | 225 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/network/RubikNetwork.java | ||
---|---|---|
46 | 46 |
|
47 | 47 |
public class RubikNetwork |
48 | 48 |
{ |
49 |
public interface Receiver |
|
49 |
public interface ScoresReceiver
|
|
50 | 50 |
{ |
51 | 51 |
void receive(String[][][] country, String[][][] name, float[][][] time); |
52 | 52 |
void message(String mess); |
53 | 53 |
void error(String error); |
54 | 54 |
} |
55 | 55 |
|
56 |
public interface Updatee
|
|
56 |
public interface IconReceiver
|
|
57 | 57 |
{ |
58 | 58 |
void iconDownloaded(int ordinal, Bitmap bitmap); |
59 |
} |
|
60 |
|
|
61 |
public interface Updatee |
|
62 |
{ |
|
59 | 63 |
void receiveUpdate(RubikUpdates update); |
60 | 64 |
void errorUpdate(); |
61 | 65 |
} |
62 | 66 |
|
67 |
public interface Downloadee |
|
68 |
{ |
|
69 |
void jsonDownloaded(); |
|
70 |
} |
|
71 |
|
|
63 | 72 |
public static final int MAX_PLACES = 10; |
64 | 73 |
|
65 | 74 |
private static final int REND_ADRENO= 0; |
... | ... | |
114 | 123 |
private static RubikNetwork mThis; |
115 | 124 |
private static String mScores = ""; |
116 | 125 |
private static boolean mRunning = false; |
117 |
private static Receiver mReceiver; |
|
118 | 126 |
private static Updatee mUpdatee; |
119 | 127 |
private static String mVersion; |
120 |
private static String mSuspicious; |
|
121 | 128 |
private static int mNumObjects; |
122 | 129 |
private static RubikUpdates mUpdates; |
123 | 130 |
private static int mDebugState; |
... | ... | |
168 | 175 |
|
169 | 176 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
170 | 177 |
|
171 |
private boolean fillValuesNormal() |
|
178 |
private boolean fillValuesNormal(ScoresReceiver receiver)
|
|
172 | 179 |
{ |
173 | 180 |
int begin=-1 ,end, len = mScores.length(); |
174 | 181 |
String row; |
175 | 182 |
|
176 | 183 |
if( len==0 ) |
177 | 184 |
{ |
178 |
if( mReceiver!=null ) mReceiver.error("1");
|
|
185 |
receiver.error("1");
|
|
179 | 186 |
return false; |
180 | 187 |
} |
181 | 188 |
else if( len<=2 ) |
182 | 189 |
{ |
183 |
if( mReceiver!=null ) mReceiver.error(mScores);
|
|
190 |
receiver.error(mScores);
|
|
184 | 191 |
return false; |
185 | 192 |
} |
186 | 193 |
|
... | ... | |
376 | 383 |
|
377 | 384 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
378 | 385 |
|
379 |
private boolean network(String url) |
|
386 |
private boolean network(String url, ScoresReceiver receiver)
|
|
380 | 387 |
{ |
381 | 388 |
try |
382 | 389 |
{ |
... | ... | |
400 | 407 |
} |
401 | 408 |
|
402 | 409 |
mScores = total.toString(); |
410 |
conn.disconnect(); |
|
403 | 411 |
} |
404 | 412 |
catch( final UnknownHostException e ) |
405 | 413 |
{ |
406 |
if( mReceiver!=null ) mReceiver.message("No access to Internet");
|
|
414 |
receiver.message("No access to Internet");
|
|
407 | 415 |
return false; |
408 | 416 |
} |
409 | 417 |
catch( final SecurityException e ) |
410 | 418 |
{ |
411 |
if( mReceiver!=null ) mReceiver.message("Application not authorized to connect to the Internet");
|
|
419 |
receiver.message("Application not authorized to connect to the Internet");
|
|
412 | 420 |
return false; |
413 | 421 |
} |
414 | 422 |
catch( final Exception e ) |
415 | 423 |
{ |
416 |
if( mReceiver!=null ) mReceiver.message(e.getMessage());
|
|
424 |
receiver.message(e.getMessage());
|
|
417 | 425 |
return false; |
418 | 426 |
} |
419 | 427 |
|
420 | 428 |
if( mScores.length()==0 ) |
421 | 429 |
{ |
422 |
if( mReceiver!=null ) mReceiver.message("Failed to download scores");
|
|
430 |
receiver.message("Failed to download scores");
|
|
423 | 431 |
return false; |
424 | 432 |
} |
425 | 433 |
|
... | ... | |
428 | 436 |
|
429 | 437 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
430 | 438 |
|
431 |
private String constructSuspiciousURL() |
|
439 |
private String constructSuspiciousURL(String suspURL)
|
|
432 | 440 |
{ |
433 | 441 |
RubikScores scores = RubikScores.getInstance(); |
434 | 442 |
int deviceID= scores.getDeviceID(); |
435 |
String suspicious = URLencode(mSuspicious);
|
|
443 |
String suspicious = URLencode(suspURL);
|
|
436 | 444 |
|
437 | 445 |
String url="https://distorted.org/magic/cgi-bin/suspicious.cgi"; |
438 | 446 |
url += "?i="+deviceID+"&d="+suspicious; |
... | ... | |
534 | 542 |
|
535 | 543 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
536 | 544 |
|
537 |
private void downloadThread() |
|
545 |
private void downloadThread(ScoresReceiver receiver)
|
|
538 | 546 |
{ |
539 | 547 |
try |
540 | 548 |
{ |
541 | 549 |
if( gottaDownload() ) |
542 | 550 |
{ |
543 | 551 |
mRunning = true; |
544 |
boolean receiveValues = network(constructDownloadURL()); |
|
552 |
boolean receiveValues = network(constructDownloadURL(),receiver);
|
|
545 | 553 |
|
546 | 554 |
if( mRunning ) |
547 | 555 |
{ |
548 |
receiveValues = fillValuesNormal(); |
|
556 |
receiveValues = fillValuesNormal(receiver);
|
|
549 | 557 |
mRunning = false; |
550 | 558 |
} |
551 | 559 |
|
552 |
if( receiveValues && mReceiver!=null ) mReceiver.receive(mCountry, mName, mTime);
|
|
560 |
if( receiveValues ) receiver.receive(mCountry, mName, mTime);
|
|
553 | 561 |
} |
554 | 562 |
} |
555 | 563 |
catch( Exception e ) |
556 | 564 |
{ |
557 |
if( mReceiver!=null ) mReceiver.message("Exception downloading records: "+e.getMessage() );
|
|
565 |
receiver.message("Exception downloading records: "+e.getMessage() );
|
|
558 | 566 |
} |
559 | 567 |
} |
560 | 568 |
|
561 | 569 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
562 | 570 |
|
563 |
private void submitThread() |
|
571 |
private void submitThread(ScoresReceiver receiver)
|
|
564 | 572 |
{ |
565 | 573 |
try |
566 | 574 |
{ |
... | ... | |
569 | 577 |
|
570 | 578 |
if( scores.thereAreUnsubmittedRecords() ) |
571 | 579 |
{ |
572 |
boolean receiveValues = network(constructSubmitURL()); |
|
580 |
boolean receiveValues = network(constructSubmitURL(),receiver);
|
|
573 | 581 |
|
574 | 582 |
if( mRunning ) |
575 | 583 |
{ |
576 |
receiveValues = fillValuesNormal(); |
|
584 |
receiveValues = fillValuesNormal(receiver);
|
|
577 | 585 |
mRunning = false; |
578 | 586 |
} |
579 | 587 |
|
580 | 588 |
if( receiveValues ) |
581 | 589 |
{ |
582 | 590 |
RubikScores.getInstance().successfulSubmit(); |
583 |
if( mReceiver!=null ) mReceiver.receive(mCountry, mName, mTime);
|
|
591 |
receiver.receive(mCountry, mName, mTime);
|
|
584 | 592 |
} |
585 | 593 |
} |
586 | 594 |
} |
587 | 595 |
catch( Exception e ) |
588 | 596 |
{ |
589 |
if( mReceiver!=null ) mReceiver.message("Exception submitting records: "+e.getMessage() );
|
|
597 |
receiver.message("Exception submitting records: "+e.getMessage() );
|
|
590 | 598 |
} |
591 | 599 |
} |
592 | 600 |
|
... | ... | |
621 | 629 |
} |
622 | 630 |
|
623 | 631 |
String updates = answer.toString(); |
632 |
conn.disconnect(); |
|
624 | 633 |
mUpdates.parse(updates); |
625 | 634 |
|
626 | 635 |
if( mUpdatee!=null ) mUpdatee.receiveUpdate(mUpdates); |
... | ... | |
635 | 644 |
|
636 | 645 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
637 | 646 |
|
638 |
private void suspiciousThread() |
|
647 |
private void suspiciousThread(String suspURL)
|
|
639 | 648 |
{ |
640 |
String url = constructSuspiciousURL(); |
|
649 |
String url = constructSuspiciousURL(suspURL);
|
|
641 | 650 |
|
642 | 651 |
try |
643 | 652 |
{ |
... | ... | |
651 | 660 |
conn.connect(); |
652 | 661 |
conn.getOutputStream().flush(); |
653 | 662 |
conn.getInputStream(); |
663 |
conn.disconnect(); |
|
654 | 664 |
} |
655 | 665 |
catch( final Exception e ) |
656 | 666 |
{ |
... | ... | |
664 | 674 |
{ |
665 | 675 |
try |
666 | 676 |
{ |
667 |
android.util.Log.e("D", "downloading "+url); |
|
668 |
|
|
669 | 677 |
java.net.URL connectURL = new URL(url); |
670 | 678 |
HttpURLConnection conn = (HttpURLConnection) connectURL.openConnection(); |
671 | 679 |
conn.setDoInput(true); |
672 | 680 |
conn.connect(); |
673 | 681 |
InputStream input = conn.getInputStream(); |
674 |
return BitmapFactory.decodeStream(input); |
|
682 |
Bitmap icon = BitmapFactory.decodeStream(input); |
|
683 |
conn.disconnect(); |
|
684 |
return icon; |
|
675 | 685 |
} |
676 | 686 |
catch (IOException e) |
677 | 687 |
{ |
... | ... | |
683 | 693 |
|
684 | 694 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
685 | 695 |
|
686 |
private void iconThread() |
|
696 |
private void iconThread(IconReceiver receiver)
|
|
687 | 697 |
{ |
688 | 698 |
int numC = mUpdates.getCompletedNumber(); |
689 | 699 |
int numS = mUpdates.getStartedNumber(); |
... | ... | |
704 | 714 |
if( icon!=null ) |
705 | 715 |
{ |
706 | 716 |
mUpdates.setCompletedIcon(c,icon); |
707 |
mUpdatee.iconDownloaded(c,icon);
|
|
717 |
receiver.iconDownloaded(c,icon);
|
|
708 | 718 |
} |
709 | 719 |
} |
710 | 720 |
} |
... | ... | |
725 | 735 |
if( icon!=null ) |
726 | 736 |
{ |
727 | 737 |
mUpdates.setStartedIcon(s,icon); |
728 |
mUpdatee.iconDownloaded(numC+s,icon);
|
|
738 |
receiver.iconDownloaded(numC+s,icon);
|
|
729 | 739 |
} |
730 | 740 |
} |
731 | 741 |
} |
732 | 742 |
} |
733 | 743 |
|
744 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
745 |
|
|
746 |
private InputStream downloadJSON(String name) |
|
747 |
{ |
|
748 |
String url = mUpdates.getURL() + name; |
|
749 |
|
|
750 |
try |
|
751 |
{ |
|
752 |
java.net.URL connectURL = new URL(url); |
|
753 |
HttpURLConnection conn = (HttpURLConnection) connectURL.openConnection(); |
|
754 |
conn.setDoInput(true); |
|
755 |
conn.connect(); |
|
756 |
InputStream stream = conn.getInputStream(); |
|
757 |
conn.disconnect(); |
|
758 |
return stream; |
|
759 |
} |
|
760 |
catch (IOException e) |
|
761 |
{ |
|
762 |
android.util.Log.e("D", "Failed to download "+url); |
|
763 |
android.util.Log.e("D", e.getMessage() ); |
|
764 |
return null; |
|
765 |
} |
|
766 |
} |
|
767 |
|
|
768 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
769 |
|
|
770 |
private void jsonThread(final RubikUpdates.UpdateInfo info, Downloadee downloadee) |
|
771 |
{ |
|
772 |
if(info.mUpdateObject) info.mObjectStream = downloadJSON(info.mObjectShortName+"_object.json"); |
|
773 |
if(info.mUpdateExtras) info.mExtrasStream = downloadJSON(info.mObjectShortName+"_extras.json"); |
|
774 |
|
|
775 |
downloadee.jsonDownloaded(); |
|
776 |
} |
|
777 |
|
|
734 | 778 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
735 | 779 |
|
736 | 780 |
private RubikNetwork() |
... | ... | |
761 | 805 |
|
762 | 806 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
763 | 807 |
|
764 |
public void download(Receiver receiver, FragmentActivity act)
|
|
808 |
public void download(final ScoresReceiver receiver, final FragmentActivity act)
|
|
765 | 809 |
{ |
766 | 810 |
initializeStatics(); |
767 |
mReceiver = receiver; |
|
768 | 811 |
figureOutVersion(act); |
769 | 812 |
|
770 | 813 |
Thread thread = new Thread() |
771 | 814 |
{ |
772 | 815 |
public void run() |
773 | 816 |
{ |
774 |
downloadThread(); |
|
817 |
downloadThread(receiver);
|
|
775 | 818 |
} |
776 | 819 |
}; |
777 | 820 |
|
... | ... | |
780 | 823 |
|
781 | 824 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
782 | 825 |
|
783 |
public void submit(Receiver receiver, FragmentActivity act)
|
|
826 |
public void submit(ScoresReceiver receiver, final FragmentActivity act)
|
|
784 | 827 |
{ |
785 | 828 |
initializeStatics(); |
786 |
mReceiver = receiver; |
|
787 | 829 |
figureOutVersion(act); |
788 | 830 |
|
789 | 831 |
Thread thread = new Thread() |
790 | 832 |
{ |
791 | 833 |
public void run() |
792 | 834 |
{ |
793 |
submitThread(); |
|
835 |
submitThread(receiver);
|
|
794 | 836 |
} |
795 | 837 |
}; |
796 | 838 |
|
... | ... | |
817 | 859 |
|
818 | 860 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
819 | 861 |
|
820 |
public void suspicious(String suspicious) |
|
862 |
public void suspicious(final String suspicious)
|
|
821 | 863 |
{ |
822 | 864 |
initializeStatics(); |
823 |
mSuspicious = suspicious; |
|
824 | 865 |
|
825 | 866 |
Thread thread = new Thread() |
826 | 867 |
{ |
827 | 868 |
public void run() |
828 | 869 |
{ |
829 |
suspiciousThread(); |
|
870 |
suspiciousThread(suspicious);
|
|
830 | 871 |
} |
831 | 872 |
}; |
832 | 873 |
|
... | ... | |
852 | 893 |
|
853 | 894 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
854 | 895 |
|
855 |
public void downloadIcons(Updatee updatee) |
|
896 |
public void downloadIcons(final IconReceiver receiver) |
|
897 |
{ |
|
898 |
initializeStatics(); |
|
899 |
|
|
900 |
Thread thread = new Thread() |
|
901 |
{ |
|
902 |
public void run() |
|
903 |
{ |
|
904 |
iconThread(receiver); |
|
905 |
} |
|
906 |
}; |
|
907 |
|
|
908 |
thread.start(); |
|
909 |
} |
|
910 |
|
|
911 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
912 |
|
|
913 |
public void downloadJSON(final RubikUpdates.UpdateInfo info, final Downloadee downloadee) |
|
856 | 914 |
{ |
857 | 915 |
initializeStatics(); |
858 |
mUpdatee = updatee; |
|
859 | 916 |
|
860 | 917 |
Thread thread = new Thread() |
861 | 918 |
{ |
862 | 919 |
public void run() |
863 | 920 |
{ |
864 |
iconThread();
|
|
921 |
jsonThread(info,downloadee);
|
|
865 | 922 |
} |
866 | 923 |
}; |
867 | 924 |
|
src/main/java/org/distorted/network/RubikUpdates.java | ||
---|---|---|
19 | 19 |
|
20 | 20 |
package org.distorted.network; |
21 | 21 |
|
22 |
import java.io.InputStream; |
|
22 | 23 |
import java.util.ArrayList; |
23 | 24 |
import android.graphics.Bitmap; |
24 | 25 |
import org.distorted.objects.RubikObjectList; |
... | ... | |
39 | 40 |
public final boolean mUpdateObject; |
40 | 41 |
public final boolean mUpdateExtras; |
41 | 42 |
public Bitmap mIcon; |
43 |
public InputStream mObjectStream; |
|
44 |
public InputStream mExtrasStream; |
|
42 | 45 |
|
43 | 46 |
public UpdateInfo(String shortName, String longName, String description, int objectMinor, |
44 | 47 |
int extrasMinor, int percent, int iconPresent, boolean updateO, boolean updateE) |
... | ... | |
237 | 240 |
return info!=null ? mUrl + info.mObjectShortName + ".png" : null; |
238 | 241 |
} |
239 | 242 |
|
243 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
244 |
|
|
245 |
public String getURL() |
|
246 |
{ |
|
247 |
return mUrl; |
|
248 |
} |
|
249 |
|
|
240 | 250 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
241 | 251 |
|
242 | 252 |
public void setCompletedIcon(int ordinal, Bitmap icon) |
src/main/java/org/distorted/screens/RubikScreenPlay.java | ||
---|---|---|
25 | 25 |
import android.content.Context; |
26 | 26 |
import android.content.SharedPreferences; |
27 | 27 |
import android.content.res.Resources; |
28 |
import android.graphics.Bitmap; |
|
29 | 28 |
import android.graphics.drawable.BitmapDrawable; |
30 | 29 |
import android.os.Build; |
31 | 30 |
import android.os.Bundle; |
... | ... | |
745 | 744 |
{ |
746 | 745 |
android.util.Log.e("D", "Screen: Error receiving update"); |
747 | 746 |
} |
748 |
|
|
749 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
750 |
|
|
751 |
public void iconDownloaded(int ordinal, Bitmap bitmap) |
|
752 |
{ |
|
753 |
// empty |
|
754 |
} |
|
755 | 747 |
} |
src/main/res/values-de/strings.xml | ||
---|---|---|
30 | 30 |
<string name="new_name_try_again">Der von Ihnen ausgewählte Name %s ist bereits vergeben. Versuchen Sie es noch einmal:</string> |
31 | 31 |
<string name="downloading">Wird heruntergeladen…</string> |
32 | 32 |
<string name="submitting">Einreichen…</string> |
33 |
<string name="installing">Installieren…</string> |
|
34 |
<string name="networkError">Netzwerkfehler</string> |
|
33 | 35 |
<string name="view">Sehen</string> |
34 | 36 |
<string name="level_full">Volles Scramble</string> |
35 | 37 |
|
src/main/res/values-es/strings.xml | ||
---|---|---|
30 | 30 |
<string name="new_name_try_again">El nombre que has elegido, %s, ya está en uso. Inténtalo de nuevo:</string> |
31 | 31 |
<string name="downloading">Descargando…</string> |
32 | 32 |
<string name="submitting">Enviando…</string> |
33 |
<string name="installing">Instalando…</string> |
|
34 |
<string name="networkError">Error de red</string> |
|
33 | 35 |
<string name="view">Ver</string> |
34 | 36 |
<string name="level_full">Revuelto Completo</string> |
35 | 37 |
|
src/main/res/values-fr/strings.xml | ||
---|---|---|
30 | 30 |
<string name="new_name_try_again">Le nom que vous avez choisi, %s, est déjà pris. Réessayez :</string> |
31 | 31 |
<string name="downloading">Téléchargement…</string> |
32 | 32 |
<string name="submitting">Soumission…</string> |
33 |
<string name="installing">Installation…</string> |
|
34 |
<string name="networkError">Erreur réseau</string> |
|
33 | 35 |
<string name="view">Regarder</string> |
34 | 36 |
<string name="level_full">Brouillage Complet</string> |
35 | 37 |
|
src/main/res/values-ja/strings.xml | ||
---|---|---|
30 | 30 |
<string name="new_name_try_again">選択した名前%sは既に使用されています。もう一度トライする:</string> |
31 | 31 |
<string name="downloading">ダウンロードしています…</string> |
32 | 32 |
<string name="submitting">送信しています…</string> |
33 |
<string name="installing">インストール…</string> |
|
34 |
<string name="networkError">ネットワークエラー</string> |
|
33 | 35 |
<string name="view">見る</string> |
34 | 36 |
<string name="level_full">フルスクランブル</string> |
35 | 37 |
|
src/main/res/values-ko/strings.xml | ||
---|---|---|
30 | 30 |
<string name="new_name_try_again">선택한 이름 %s이(가) 이미 사용되었습니다. 다시 시도하십시오:</string> |
31 | 31 |
<string name="downloading">다운로드 중…</string> |
32 | 32 |
<string name="submitting">제출 중…</string> |
33 |
<string name="installing">설치 중…</string> |
|
34 |
<string name="networkError">네트워크 오류</string> |
|
33 | 35 |
<string name="view">보다</string> |
34 | 36 |
<string name="level_full">풀 스크램블</string> |
35 | 37 |
|
src/main/res/values-pl/strings.xml | ||
---|---|---|
30 | 30 |
<string name="new_name_try_again">Imię które wybrałeś, %s, jest zajęte. Spróbuj jeszcze raz:</string> |
31 | 31 |
<string name="downloading">Ściąganie…</string> |
32 | 32 |
<string name="submitting">Przesyłanie…</string> |
33 |
<string name="installing">Instalowanie…</string> |
|
34 |
<string name="networkError">Błąd sieci</string> |
|
33 | 35 |
<string name="view">Zobacz</string> |
34 | 36 |
<string name="level_full">Pełne Pomieszanie</string> |
35 | 37 |
|
src/main/res/values-ru/strings.xml | ||
---|---|---|
30 | 30 |
<string name="new_name_try_again">Выбранное вами имя %s уже занято. Попробуй еще раз:</string> |
31 | 31 |
<string name="downloading">Загрузка…</string> |
32 | 32 |
<string name="submitting">Добавляю…</string> |
33 |
<string name="installing">Установка…</string> |
|
34 |
<string name="networkError">Ошибка сети</string> |
|
33 | 35 |
<string name="view">Смотри</string> |
34 | 36 |
<string name="level_full">Полная Схватка</string> |
35 | 37 |
|
src/main/res/values-zh-rCN/strings.xml | ||
---|---|---|
30 | 30 |
<string name="new_name_try_again">您选择的名称,%s,已被使用。请重试:</string> |
31 | 31 |
<string name="downloading">正在下载……</string> |
32 | 32 |
<string name="submitting">正在提交……</string> |
33 |
<string name="installing">安装…</string> |
|
34 |
<string name="networkError">網絡錯誤</string> |
|
33 | 35 |
<string name="view">看</string> |
34 | 36 |
<string name="level_full">级满</string> |
35 | 37 |
|
src/main/res/values-zh-rTW/strings.xml | ||
---|---|---|
30 | 30 |
<string name="new_name_try_again">您選擇的名稱,%s,已被使用。請重試:</string> |
31 | 31 |
<string name="downloading">正在下載……</string> |
32 | 32 |
<string name="submitting">正在傳送……</string> |
33 |
<string name="installing">安裝…</string> |
|
34 |
<string name="networkError">網絡錯誤</string> |
|
33 | 35 |
<string name="view">看</string> |
34 | 36 |
<string name="level_full">級滿</string> |
35 | 37 |
|
src/main/res/values/strings.xml | ||
---|---|---|
31 | 31 |
<string name="new_name_try_again">The name you have chosen, %s, is already taken. Try again:</string> |
32 | 32 |
<string name="downloading">Downloading…</string> |
33 | 33 |
<string name="submitting">Submitting…</string> |
34 |
<string name="installing">Installing…</string> |
|
35 |
<string name="networkError">Network Error</string> |
|
34 | 36 |
<string name="view">View</string> |
35 | 37 |
<string name="level_full">Full Scramble</string> |
36 | 38 |
|
Also available in: Unified diff
progress with the Updates: download the jsons.