1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
package cgeo.geocaching.utils;
import cgeo.geocaching.activity.Progress;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
/**
* AsyncTask which automatically shows a progress dialog. Use it like the {@code AsyncTask} class, but leave away the
* middle template parameter.
*
* @param <Params>
* @param <Result>
*/
public abstract class AsyncTaskWithProgress<Params, Result> extends AsyncTask<Params, Integer, Result> {
private final Progress progress = new Progress();
private final Activity activity;
private final int maxProgress;
private final String progressTitle;
private final String progressMessage;
/**
* Creates an AsyncTask with progress dialog, where the maximum is set to the given maxProgress.
*
* @param activity
* @param maxProgress
* @param progressTitle
* @param progressMessage
*/
public AsyncTaskWithProgress(final Activity activity, final int maxProgress, final String progressTitle, final String progressMessage) {
this.activity = activity;
this.maxProgress = maxProgress;
this.progressTitle = progressTitle;
this.progressMessage = progressMessage;
}
/**
* Creates an AsyncTask with progress dialog, where the maximum is set to indeterminate.
*
* @param activity
* @param progressTitle
* @param progressMessage
*/
public AsyncTaskWithProgress(final Activity activity, final String progressTitle, final String progressMessage) {
this(activity, 0, progressTitle, progressMessage);
}
@Override
protected void onPreExecute() {
if (null != activity) {
if (maxProgress <= 0) {
progress.show(activity, progressTitle, progressMessage, true, null);
}
else {
progress.show(activity, progressTitle, progressMessage, ProgressDialog.STYLE_HORIZONTAL, null);
}
progress.setMaxProgressAndReset(maxProgress);
}
}
@Override
protected void onPostExecute(Result result) {
if (null != activity) {
progress.dismiss();
}
}
@Override
protected void onProgressUpdate(Integer... status) {
if (null != activity) {
progress.setProgress(status[0]);
}
}
protected void setMessage(final String message) {
progress.setMessage(message);
}
}
|