Revision 2c9ab085
Added by Leszek Koltunski almost 4 years ago
| src/main/java/org/distorted/dialogs/RubikDialogUpdateView.java | ||
|---|---|---|
| 25 | 25 |
import android.widget.Button; |
| 26 | 26 |
import android.widget.ImageView; |
| 27 | 27 |
import android.widget.LinearLayout; |
| 28 |
import android.widget.ProgressBar; |
|
| 28 | 29 |
import android.widget.TextView; |
| 29 | 30 |
|
| 30 | 31 |
import org.distorted.main.R; |
| 31 | 32 |
import org.distorted.network.RubikUpdates; |
| 32 |
import org.distorted.objectlib.json.JsonWriter; |
|
| 33 | 33 |
|
| 34 | 34 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 35 | 35 |
|
| 36 | 36 |
public class RubikDialogUpdateView |
| 37 | 37 |
{
|
| 38 |
private View mView; |
|
| 39 |
|
|
| 40 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 41 |
|
|
| 42 | 38 |
public RubikDialogUpdateView() |
| 43 | 39 |
{
|
| 44 | 40 |
|
| ... | ... | |
| 46 | 42 |
|
| 47 | 43 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 48 | 44 |
|
| 49 |
public View createView(Activity act, RubikUpdates.UpdateInfo info, int fontSize, int padding, boolean isNew,
|
|
| 45 |
public View createView(Activity act, RubikUpdates.UpdateInfo info, int fontSize, int padding, |
|
| 50 | 46 |
LinearLayout.LayoutParams pImage, LinearLayout.LayoutParams pView, |
| 51 | 47 |
LinearLayout.LayoutParams pText, LinearLayout.LayoutParams pButt ) |
| 52 | 48 |
{
|
| 53 |
int layoutID = R.layout.dialog_updates_pane; |
|
| 54 |
mView = act.getLayoutInflater().inflate(layoutID, null); |
|
| 49 |
boolean isCompleted = info.mPercent>=100; |
|
| 50 |
int layoutID = isCompleted |
|
| 51 |
? R.layout.dialog_updates_completed |
|
| 52 |
: R.layout.dialog_updates_started; |
|
| 55 | 53 |
|
| 56 |
Button button = mView.findViewById(R.id.updates_pane_button); |
|
| 57 |
|
|
| 58 |
button.setOnClickListener( new View.OnClickListener() |
|
| 59 |
{
|
|
| 60 |
@Override |
|
| 61 |
public void onClick(View v) |
|
| 62 |
{
|
|
| 63 |
android.util.Log.e("D", "INSTALL pressed");
|
|
| 64 |
} |
|
| 65 |
}); |
|
| 54 |
View view = act.getLayoutInflater().inflate(layoutID, null); |
|
| 66 | 55 |
|
| 67 |
TextView title = mView.findViewById(R.id.updates_pane_title);
|
|
| 56 |
TextView title = view.findViewById(R.id.updates_pane_title);
|
|
| 68 | 57 |
title.setText(info.mObjectLongName); |
| 69 |
TextView description = mView.findViewById(R.id.updates_pane_description);
|
|
| 58 |
TextView description = view.findViewById(R.id.updates_pane_description);
|
|
| 70 | 59 |
description.setText(info.mDescription); |
| 71 | 60 |
|
| 72 |
ImageView image = mView.findViewById(R.id.updates_pane_image);
|
|
| 61 |
ImageView image = view.findViewById(R.id.updates_pane_image);
|
|
| 73 | 62 |
image.setBackgroundResource(R.drawable.unknown_icon); |
| 74 | 63 |
|
| 75 | 64 |
image.setLayoutParams(pImage); |
| 76 |
mView.setLayoutParams(pView);
|
|
| 65 |
view.setLayoutParams(pView);
|
|
| 77 | 66 |
|
| 78 | 67 |
title.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize); |
| 79 | 68 |
description.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize); |
| 80 |
button.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize); |
|
| 81 | 69 |
|
| 82 | 70 |
title.setLayoutParams(pText); |
| 83 | 71 |
description.setLayoutParams(pText); |
| 84 |
button.setLayoutParams(pButt); |
|
| 85 | 72 |
|
| 86 |
mView.setPadding(padding,padding,padding,padding); |
|
| 73 |
view.setPadding(padding,padding,padding,padding); |
|
| 74 |
|
|
| 75 |
if( isCompleted ) |
|
| 76 |
{
|
|
| 77 |
Button button = view.findViewById(R.id.updates_pane_button); |
|
| 78 |
|
|
| 79 |
button.setOnClickListener( new View.OnClickListener() |
|
| 80 |
{
|
|
| 81 |
@Override |
|
| 82 |
public void onClick(View v) |
|
| 83 |
{
|
|
| 84 |
android.util.Log.e("D", "INSTALL pressed");
|
|
| 85 |
} |
|
| 86 |
}); |
|
| 87 |
|
|
| 88 |
button.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize); |
|
| 89 |
button.setLayoutParams(pButt); |
|
| 90 |
} |
|
| 91 |
else |
|
| 92 |
{
|
|
| 93 |
ProgressBar bar = view.findViewById(R.id.updates_pane_bar); |
|
| 94 |
bar.setLayoutParams(pButt); |
|
| 95 |
bar.setProgress(info.mPercent); |
|
| 96 |
} |
|
| 87 | 97 |
|
| 88 |
return mView;
|
|
| 98 |
return view;
|
|
| 89 | 99 |
} |
| 90 | 100 |
} |
| src/main/java/org/distorted/dialogs/RubikDialogUpdates.java | ||
|---|---|---|
| 136 | 136 |
|
| 137 | 137 |
private void receiveUpdate(RubikUpdates updates, FragmentActivity act) |
| 138 | 138 |
{
|
| 139 |
int numN = updates.getNewNumber(); |
|
| 140 |
int numU = updates.getUpdNumber(); |
|
| 141 |
int num = numN+numU; |
|
| 139 |
int numC = updates.getCompletedNumber(); |
|
| 142 | 140 |
|
| 143 |
if( num<=0 ) |
|
| 141 |
if( numC<=0 )
|
|
| 144 | 142 |
{
|
| 145 |
|
|
| 146 | 143 |
mText.setText(act.getString(R.string.no_updates)); |
| 147 | 144 |
} |
| 148 | 145 |
else |
| ... | ... | |
| 150 | 147 |
//mText.setText("Downloading...");
|
| 151 | 148 |
|
| 152 | 149 |
int imagH = (int)(mSize*1.00f); |
| 153 |
int textH = (int)(mSize*0.23f);
|
|
| 154 |
int buttH = (int)(mSize*0.49f);
|
|
| 150 |
int textH = (int)(mSize*0.27f);
|
|
| 151 |
int buttH = (int)(mSize*0.35f);
|
|
| 155 | 152 |
|
| 156 | 153 |
LinearLayout.LayoutParams pI = new LinearLayout.LayoutParams( imagH,imagH ); |
| 157 | 154 |
LinearLayout.LayoutParams pV = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, mSize ); |
| ... | ... | |
| 163 | 160 |
|
| 164 | 161 |
if( mLayout!=null ) |
| 165 | 162 |
{
|
| 166 |
for(int i=0; i<numN; i++)
|
|
| 163 |
for(int i=0; i<numC; i++)
|
|
| 167 | 164 |
{
|
| 168 |
RubikUpdates.UpdateInfo info = updates.getNewUpdate(i);
|
|
| 165 |
RubikUpdates.UpdateInfo info = updates.getCompletedUpdate(i);
|
|
| 169 | 166 |
RubikDialogUpdateView rubikView = new RubikDialogUpdateView(); |
| 170 |
View pane = rubikView.createView(act,info,mFontSize,mPadding,true,pI,pV,pT,pB);
|
|
| 167 |
View pane = rubikView.createView(act,info,mFontSize,mPadding,pI,pV,pT,pB); |
|
| 171 | 168 |
mLayout.addView(pane); |
| 172 | 169 |
} |
| 173 |
for(int i=0; i<numU; i++) |
|
| 170 |
|
|
| 171 |
int numS = updates.getStartedNumber(); |
|
| 172 |
|
|
| 173 |
for(int i=0; i<numS; i++) |
|
| 174 | 174 |
{
|
| 175 |
RubikUpdates.UpdateInfo info = updates.getUpdUpdate(i);
|
|
| 175 |
RubikUpdates.UpdateInfo info = updates.getStartedUpdate(i);
|
|
| 176 | 176 |
RubikDialogUpdateView rubikView = new RubikDialogUpdateView(); |
| 177 |
View pane = rubikView.createView(act,info,mFontSize,mPadding,false,pI,pV,pT,pB);
|
|
| 177 |
View pane = rubikView.createView(act,info,mFontSize,mPadding,pI,pV,pT,pB); |
|
| 178 | 178 |
mLayout.addView(pane); |
| 179 | 179 |
} |
| 180 | 180 |
} |
| src/main/java/org/distorted/network/RubikUpdates.java | ||
|---|---|---|
| 34 | 34 |
public final String mDescription; |
| 35 | 35 |
public final int mObjectMinorVersion; |
| 36 | 36 |
public final int mExtrasMinorVersion; |
| 37 |
public final int mPercent; |
|
| 37 | 38 |
public final boolean mUpdateObject; |
| 38 | 39 |
public final boolean mUpdateExtras; |
| 39 | 40 |
|
| 40 |
public UpdateInfo(String shortName, String longName, String description, int objectMinor, int extrasMinor, boolean updateO, boolean updateE) |
|
| 41 |
public UpdateInfo(String shortName, String longName, String description, int objectMinor, |
|
| 42 |
int extrasMinor, int percent, boolean updateO, boolean updateE) |
|
| 41 | 43 |
{
|
| 42 | 44 |
mObjectShortName = shortName; |
| 43 | 45 |
mObjectLongName = longName; |
| 44 | 46 |
mDescription = description; |
| 45 | 47 |
mObjectMinorVersion = objectMinor; |
| 46 | 48 |
mExtrasMinorVersion = extrasMinor; |
| 49 |
mPercent = percent; |
|
| 47 | 50 |
mUpdateObject = updateO; |
| 48 | 51 |
mUpdateExtras = updateE; |
| 49 | 52 |
} |
| 50 | 53 |
} |
| 51 | 54 |
|
| 52 | 55 |
private String mUrl; |
| 53 |
private final ArrayList<UpdateInfo> mNew, mUpd;
|
|
| 56 |
private final ArrayList<UpdateInfo> mCompleted, mStarted;
|
|
| 54 | 57 |
|
| 55 | 58 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 56 | 59 |
|
| 57 | 60 |
public RubikUpdates() |
| 58 | 61 |
{
|
| 59 |
mNew = new ArrayList<>();
|
|
| 60 |
mUpd = new ArrayList<>();
|
|
| 62 |
mCompleted = new ArrayList<>();
|
|
| 63 |
mStarted = new ArrayList<>();
|
|
| 61 | 64 |
} |
| 62 | 65 |
|
| 63 | 66 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 79 | 82 |
|
| 80 | 83 |
private void parseLine(String[] elements) |
| 81 | 84 |
{
|
| 82 |
String shortName = elements[0]; |
|
| 83 |
String objMinor = elements[1]; |
|
| 84 |
String extMinor = elements[2]; |
|
| 85 |
String longName = elements[3]; |
|
| 86 |
String description = elements[4]; |
|
| 87 |
int oMinor, eMinor; |
|
| 85 |
String shortName = elements[0].trim(); |
|
| 86 |
String objMinor = elements[1].trim(); |
|
| 87 |
String extMinor = elements[2].trim(); |
|
| 88 |
String percent = elements[3].trim(); |
|
| 89 |
String longName = elements[4]; |
|
| 90 |
String description = elements[5]; |
|
| 91 |
int oMinor, eMinor, oPercent; |
|
| 88 | 92 |
|
| 89 | 93 |
try { oMinor = Integer.parseInt(objMinor); }
|
| 90 | 94 |
catch (NumberFormatException ex) { oMinor = -1; }
|
| 91 | 95 |
try { eMinor = Integer.parseInt(extMinor); }
|
| 92 | 96 |
catch (NumberFormatException ex) { eMinor = -1; }
|
| 97 |
try { oPercent = Integer.parseInt(percent); }
|
|
| 98 |
catch (NumberFormatException ex) { oPercent = -1; }
|
|
| 93 | 99 |
|
| 94 |
if( oMinor>=0 && eMinor>=0 ) |
|
| 100 |
if( oMinor>=0 && eMinor>=0 && oPercent>=0 )
|
|
| 95 | 101 |
{
|
| 96 | 102 |
int objOrdinal = RubikObjectList.getOrdinal(shortName.toUpperCase()); |
| 103 |
boolean updateO=true, updateE=true; |
|
| 97 | 104 |
|
| 98 | 105 |
if( objOrdinal>=0 ) |
| 99 | 106 |
{
|
| 100 | 107 |
int localObjectMinor = RubikObjectList.getLocalObjectMinor(objOrdinal); |
| 101 | 108 |
int localExtrasMinor = RubikObjectList.getLocalExtrasMinor(objOrdinal); |
| 102 |
boolean updateO = localObjectMinor<oMinor; |
|
| 103 |
boolean updateE = localExtrasMinor<eMinor; |
|
| 104 |
|
|
| 105 |
if( updateO || updateE ) |
|
| 106 |
{
|
|
| 107 |
UpdateInfo info = new UpdateInfo(shortName,longName,description,oMinor,eMinor,updateO,updateE); |
|
| 108 |
mUpd.add(info); |
|
| 109 |
} |
|
| 109 |
updateO = localObjectMinor<oMinor; |
|
| 110 |
updateE = localExtrasMinor<eMinor; |
|
| 110 | 111 |
} |
| 111 |
else
|
|
| 112 |
if( updateO || updateE )
|
|
| 112 | 113 |
{
|
| 113 |
UpdateInfo info = new UpdateInfo(shortName,longName,description,oMinor,eMinor,true,true); |
|
| 114 |
mNew.add(info); |
|
| 114 |
UpdateInfo info = new UpdateInfo(shortName,longName,description,oMinor,eMinor,oPercent,updateO,updateE); |
|
| 115 |
if(oPercent>=100) mCompleted.add(info); |
|
| 116 |
else mStarted.add(info); |
|
| 115 | 117 |
} |
| 116 | 118 |
} |
| 117 | 119 |
} |
| ... | ... | |
| 122 | 124 |
{
|
| 123 | 125 |
android.util.Log.e("D", updates);
|
| 124 | 126 |
|
| 125 |
mNew.clear();
|
|
| 126 |
mUpd.clear();
|
|
| 127 |
mCompleted.clear();
|
|
| 128 |
mStarted.clear();
|
|
| 127 | 129 |
|
| 128 | 130 |
String[] lines = updates.split("\n");
|
| 129 | 131 |
int numLines = lines.length; |
| ... | ... | |
| 134 | 136 |
for(int line=1; line<numLines; line++) |
| 135 | 137 |
{
|
| 136 | 138 |
String[] elements = lines[line].split(",");
|
| 137 |
if( elements.length>=3 ) parseLine(elements);
|
|
| 139 |
if( elements.length>=6 ) parseLine(elements);
|
|
| 138 | 140 |
} |
| 139 | 141 |
} |
| 140 | 142 |
} |
| ... | ... | |
| 143 | 145 |
|
| 144 | 146 |
public void updateDone(String shortName) |
| 145 | 147 |
{
|
| 146 |
for( UpdateInfo info : mNew)
|
|
| 148 |
for( UpdateInfo info : mCompleted)
|
|
| 147 | 149 |
{
|
| 148 | 150 |
if( info.mObjectShortName.equals(shortName) ) |
| 149 | 151 |
{
|
| 150 |
mNew.remove(info); |
|
| 151 |
return; |
|
| 152 |
} |
|
| 153 |
} |
|
| 154 |
|
|
| 155 |
for( UpdateInfo info : mUpd) |
|
| 156 |
{
|
|
| 157 |
if( info.mObjectShortName.equals(shortName) ) |
|
| 158 |
{
|
|
| 159 |
mUpd.remove(info); |
|
| 152 |
mCompleted.remove(info); |
|
| 160 | 153 |
return; |
| 161 | 154 |
} |
| 162 | 155 |
} |
| ... | ... | |
| 164 | 157 |
|
| 165 | 158 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 166 | 159 |
|
| 167 |
public UpdateInfo getNewUpdate(int ordinal)
|
|
| 160 |
public UpdateInfo getCompletedUpdate(int ordinal)
|
|
| 168 | 161 |
{
|
| 169 |
return mNew.get(ordinal);
|
|
| 162 |
return mCompleted.get(ordinal);
|
|
| 170 | 163 |
} |
| 171 | 164 |
|
| 172 | 165 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 173 | 166 |
|
| 174 |
public UpdateInfo getUpdUpdate(int ordinal)
|
|
| 167 |
public UpdateInfo getStartedUpdate(int ordinal)
|
|
| 175 | 168 |
{
|
| 176 |
return mUpd.get(ordinal);
|
|
| 169 |
return mStarted.get(ordinal);
|
|
| 177 | 170 |
} |
| 178 | 171 |
|
| 179 | 172 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 180 | 173 |
|
| 181 |
public int getNewNumber()
|
|
| 174 |
public int getCompletedNumber()
|
|
| 182 | 175 |
{
|
| 183 |
return mNew.size();
|
|
| 176 |
return mCompleted.size();
|
|
| 184 | 177 |
} |
| 185 | 178 |
|
| 186 | 179 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 187 | 180 |
|
| 188 |
public int getUpdNumber()
|
|
| 181 |
public int getStartedNumber()
|
|
| 189 | 182 |
{
|
| 190 |
return mUpd.size();
|
|
| 183 |
return mStarted.size();
|
|
| 191 | 184 |
} |
| 192 | 185 |
|
| 193 | 186 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 195 | 188 |
public void showDebug() |
| 196 | 189 |
{
|
| 197 | 190 |
android.util.Log.e("D", "url: "+mUrl);
|
| 198 |
android.util.Log.e("D", "new objects: "+debug(mNew));
|
|
| 199 |
android.util.Log.e("D", "upd objects: "+debug(mUpd));
|
|
| 191 |
android.util.Log.e("D", "ready objects: "+debug(mCompleted));
|
|
| 192 |
android.util.Log.e("D", "next objects: "+debug(mStarted));
|
|
| 200 | 193 |
} |
| 201 | 194 |
} |
| src/main/java/org/distorted/screens/RubikScreenPlay.java | ||
|---|---|---|
| 721 | 721 |
@Override |
| 722 | 722 |
public void run() |
| 723 | 723 |
{
|
| 724 |
int numN = updates.getNewNumber(); |
|
| 725 |
int numU = updates.getUpdNumber(); |
|
| 726 |
int num = numN+numU; |
|
| 724 |
int num = updates.getCompletedNumber(); |
|
| 727 | 725 |
|
| 728 | 726 |
if( num>0 ) |
| 729 | 727 |
{
|
| src/main/res/drawable/black_progress.xml | ||
|---|---|---|
| 1 |
<?xml version="1.0" encoding="utf-8"?> |
|
| 2 |
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> |
|
| 3 |
<item android:id="@android:id/background"> |
|
| 4 |
<shape> |
|
| 5 |
<solid android:color="@android:color/white" /> |
|
| 6 |
</shape> |
|
| 7 |
</item> |
|
| 8 |
|
|
| 9 |
<item android:id="@android:id/progress"> |
|
| 10 |
<clip> |
|
| 11 |
<shape> |
|
| 12 |
<solid android:color="@android:color/black" /> |
|
| 13 |
</shape> |
|
| 14 |
</clip> |
|
| 15 |
</item> |
|
| 16 |
|
|
| 17 |
</layer-list> |
|
| 18 |
|
|
| src/main/res/layout/dialog_updates_completed.xml | ||
|---|---|---|
| 1 |
<?xml version="1.0" encoding="utf-8"?> |
|
| 2 |
<LinearLayout |
|
| 3 |
xmlns:android="http://schemas.android.com/apk/res/android" |
|
| 4 |
android:layout_width="match_parent" |
|
| 5 |
android:layout_height="wrap_content" |
|
| 6 |
android:background="@color/medium_grey" |
|
| 7 |
android:padding="8dp" |
|
| 8 |
android:orientation="horizontal"> |
|
| 9 |
|
|
| 10 |
<ImageView |
|
| 11 |
android:id="@+id/updates_pane_image" |
|
| 12 |
android:scaleType="fitCenter" |
|
| 13 |
android:layout_width="wrap_content" |
|
| 14 |
android:layout_height="wrap_content"/> |
|
| 15 |
|
|
| 16 |
<LinearLayout |
|
| 17 |
android:layout_width="match_parent" |
|
| 18 |
android:layout_height="match_parent" |
|
| 19 |
android:orientation="vertical" |
|
| 20 |
android:layout_marginStart="8dp"> |
|
| 21 |
|
|
| 22 |
<TextView |
|
| 23 |
android:id="@+id/updates_pane_title" |
|
| 24 |
android:gravity="top|start" |
|
| 25 |
android:layout_width="match_parent" |
|
| 26 |
android:layout_height="wrap_content" |
|
| 27 |
android:singleLine="true" |
|
| 28 |
android:textStyle="bold"/> |
|
| 29 |
|
|
| 30 |
<TextView |
|
| 31 |
android:id="@+id/updates_pane_description" |
|
| 32 |
android:gravity="top|start" |
|
| 33 |
android:layout_width="match_parent" |
|
| 34 |
android:layout_height="wrap_content" |
|
| 35 |
android:singleLine="true"/> |
|
| 36 |
|
|
| 37 |
<Button |
|
| 38 |
android:id="@+id/updates_pane_button" |
|
| 39 |
android:layout_width="match_parent" |
|
| 40 |
android:layout_height="wrap_content" |
|
| 41 |
android:backgroundTint="@color/black" |
|
| 42 |
android:minHeight="0dp" |
|
| 43 |
android:minWidth="0dp" |
|
| 44 |
android:insetTop="0dp" |
|
| 45 |
android:insetBottom="0dp" |
|
| 46 |
android:text="@string/install"/> |
|
| 47 |
|
|
| 48 |
</LinearLayout> |
|
| 49 |
</LinearLayout> |
|
| src/main/res/layout/dialog_updates_pane.xml | ||
|---|---|---|
| 1 |
<?xml version="1.0" encoding="utf-8"?> |
|
| 2 |
<LinearLayout |
|
| 3 |
xmlns:android="http://schemas.android.com/apk/res/android" |
|
| 4 |
android:layout_width="match_parent" |
|
| 5 |
android:layout_height="wrap_content" |
|
| 6 |
android:background="@color/grey" |
|
| 7 |
android:padding="8dp" |
|
| 8 |
android:orientation="horizontal"> |
|
| 9 |
|
|
| 10 |
<ImageView |
|
| 11 |
android:id="@+id/updates_pane_image" |
|
| 12 |
android:scaleType="fitCenter" |
|
| 13 |
android:layout_width="wrap_content" |
|
| 14 |
android:layout_height="wrap_content"/> |
|
| 15 |
|
|
| 16 |
<LinearLayout |
|
| 17 |
android:layout_width="match_parent" |
|
| 18 |
android:layout_height="match_parent" |
|
| 19 |
android:orientation="vertical" |
|
| 20 |
android:layout_marginStart="8dp" |
|
| 21 |
|
|
| 22 |
android:layout_gravity="center_vertical"> |
|
| 23 |
|
|
| 24 |
<TextView |
|
| 25 |
android:id="@+id/updates_pane_title" |
|
| 26 |
android:gravity="center_vertical" |
|
| 27 |
android:layout_width="match_parent" |
|
| 28 |
android:layout_height="wrap_content" |
|
| 29 |
android:singleLine="true" |
|
| 30 |
android:textStyle="bold"/> |
|
| 31 |
|
|
| 32 |
<TextView |
|
| 33 |
android:id="@+id/updates_pane_description" |
|
| 34 |
android:gravity="center_vertical" |
|
| 35 |
android:layout_width="wrap_content" |
|
| 36 |
android:layout_height="wrap_content" |
|
| 37 |
android:singleLine="true"/> |
|
| 38 |
|
|
| 39 |
<Button |
|
| 40 |
android:id="@+id/updates_pane_button" |
|
| 41 |
android:layout_width="match_parent" |
|
| 42 |
android:layout_height="wrap_content" |
|
| 43 |
android:backgroundTint="@color/black" |
|
| 44 |
android:text="@string/install" |
|
| 45 |
android:gravity="center"/> |
|
| 46 |
|
|
| 47 |
</LinearLayout> |
|
| 48 |
</LinearLayout> |
|
| src/main/res/layout/dialog_updates_started.xml | ||
|---|---|---|
| 1 |
<?xml version="1.0" encoding="utf-8"?> |
|
| 2 |
<LinearLayout |
|
| 3 |
xmlns:android="http://schemas.android.com/apk/res/android" |
|
| 4 |
android:layout_width="match_parent" |
|
| 5 |
android:layout_height="wrap_content" |
|
| 6 |
android:background="@color/medium_grey" |
|
| 7 |
android:padding="8dp" |
|
| 8 |
android:orientation="horizontal"> |
|
| 9 |
|
|
| 10 |
<ImageView |
|
| 11 |
android:id="@+id/updates_pane_image" |
|
| 12 |
android:scaleType="fitCenter" |
|
| 13 |
android:layout_width="wrap_content" |
|
| 14 |
android:layout_height="wrap_content"/> |
|
| 15 |
|
|
| 16 |
<LinearLayout |
|
| 17 |
android:layout_width="match_parent" |
|
| 18 |
android:layout_height="match_parent" |
|
| 19 |
android:orientation="vertical" |
|
| 20 |
android:layout_marginStart="8dp"> |
|
| 21 |
|
|
| 22 |
<TextView |
|
| 23 |
android:id="@+id/updates_pane_title" |
|
| 24 |
android:gravity="top|start" |
|
| 25 |
android:layout_width="match_parent" |
|
| 26 |
android:layout_height="wrap_content" |
|
| 27 |
android:singleLine="true" |
|
| 28 |
android:textStyle="bold"/> |
|
| 29 |
|
|
| 30 |
<TextView |
|
| 31 |
android:id="@+id/updates_pane_description" |
|
| 32 |
android:gravity="top|start" |
|
| 33 |
android:layout_width="wrap_content" |
|
| 34 |
android:layout_height="wrap_content" |
|
| 35 |
android:singleLine="true"/> |
|
| 36 |
|
|
| 37 |
<ProgressBar |
|
| 38 |
android:id="@+id/updates_pane_bar" |
|
| 39 |
android:layout_width="match_parent" |
|
| 40 |
android:layout_height="wrap_content" |
|
| 41 |
style="@android:style/Widget.ProgressBar.Horizontal" |
|
| 42 |
android:progressDrawable="@drawable/black_progress" |
|
| 43 |
android:max="100"/> |
|
| 44 |
|
|
| 45 |
</LinearLayout> |
|
| 46 |
</LinearLayout> |
|
| src/main/res/values/colors.xml | ||
|---|---|---|
| 7 | 7 |
<color name="dark_grey">#ff222222</color> |
| 8 | 8 |
<color name="grey">#ff333333</color> |
| 9 | 9 |
<color name="light_grey">#ff555555</color> |
| 10 |
<color name="medium_grey">#ff444444</color> |
|
| 10 | 11 |
<color name="black">#ff010101</color> |
| 11 | 12 |
<color name="white">#ffffffff</color> |
| 12 | 13 |
</resources> |
Also available in: Unified diff
Downloading updates: dialog progress.