Revision 2c9ab085
Added by Leszek Koltunski almost 3 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.