1package foo.bar.printservice;
2
3import android.app.ListActivity;
4import android.os.Bundle;
5import android.print.PrintJobId;
6import android.view.View;
7import android.widget.AdapterView;
8import android.widget.ArrayAdapter;
9
10public class MyDialogActivity extends ListActivity {
11
12    private static final int ITEM_INDEX_PRINT_NOW = 0;
13    private static final int ITEM_INDEX_PRINT_DELAYED = 1;
14    private static final int ITEM_INDEX_FAIL_NOW = 2;
15    private static final int ITEM_INDEX_FAIL_DELAYED = 3;
16    private static final int ITEM_INDEX_BLOCK_NOW = 4;
17    private static final int ITEM_INDEX_BLOCK_DELAYED = 5;
18    private static final int ITEM_INDEX_BLOCK_AND_DELAYED_UNBLOCK = 6;
19    private static final int ITEM_INDEX_PRINT_SLOWLY = 7;
20
21    private static final int ITEM_INDEX_CANCEL_YES = 0;
22
23    @Override
24    protected void onCreate(Bundle savedInstanceState) {
25        super.onCreate(savedInstanceState);
26
27        PrintJobId printJobId = getIntent().getParcelableExtra(
28                MyPrintService.INTENT_EXTRA_PRINT_JOB_ID);
29        final int actionType = getIntent().getIntExtra(MyPrintService.INTENT_EXTRA_ACTION_TYPE,
30                MyPrintService.ACTION_TYPE_ON_PRINT_JOB_PENDING);
31
32        if (actionType == MyPrintService.ACTION_TYPE_ON_PRINT_JOB_PENDING) {
33            createActionTypeOnPrintJobPendingUi(printJobId);
34        } else {
35            createActionTypeOnReqeustCancelPrintJobUi(printJobId);
36        }
37    }
38
39    private void createActionTypeOnPrintJobPendingUi(final PrintJobId printJobId) {
40        setTitle(getString(R.string.on_print_job_pending_activity_title));
41
42        setListAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1,
43                getResources().getStringArray(R.array.on_print_job_queued_actions)));
44        getListView().setOnItemClickListener((parent, view, position, id) -> {
45            switch (position) {
46                case ITEM_INDEX_PRINT_NOW: {
47                    MyPrintService.peekInstance().handleQueuedPrintJob(printJobId);
48                } break;
49
50                case ITEM_INDEX_PRINT_DELAYED: {
51                    MyPrintService.peekInstance().handleQueuedPrintJobDelayed(printJobId);
52                } break;
53
54                case ITEM_INDEX_FAIL_NOW: {
55                    MyPrintService.peekInstance().handleFailPrintJob(printJobId);
56                } break;
57
58                case ITEM_INDEX_FAIL_DELAYED: {
59                    MyPrintService.peekInstance().handleFailPrintJobDelayed(printJobId);
60                } break;
61
62                case ITEM_INDEX_BLOCK_NOW: {
63                    MyPrintService.peekInstance().handleBlockPrintJob(printJobId);
64                } break;
65
66                case ITEM_INDEX_BLOCK_DELAYED: {
67                    MyPrintService.peekInstance().handleBlockPrintJobDelayed(printJobId);
68                } break;
69
70                case ITEM_INDEX_BLOCK_AND_DELAYED_UNBLOCK: {
71                    MyPrintService.peekInstance().handleBlockAndDelayedUnblockPrintJob(
72                            printJobId);
73                } break;
74
75                case ITEM_INDEX_PRINT_SLOWLY: {
76                    MyPrintService.peekInstance().handlePrintJobProgress(printJobId, 0);
77                } break;
78            }
79            finishAndRemoveTask();
80        });
81    }
82
83    private void createActionTypeOnReqeustCancelPrintJobUi(final PrintJobId printJobId) {
84        setTitle(getString(R.string.on_cancle_print_job_requested_activity_title));
85
86        setListAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1,
87                getResources().getStringArray(R.array.on_request_cancel_print_job_actions)));
88        getListView().setOnItemClickListener((parent, view, position, id) -> {
89            switch (position) {
90                case ITEM_INDEX_CANCEL_YES: {
91                    MyPrintService.peekInstance().handleRequestCancelPrintJob(printJobId);
92                } break;
93            }
94            finishAndRemoveTask();
95        });
96    }
97}
98