Java程序  |  104行  |  4.3 KB

package foo.bar.printservice;

import android.app.ListActivity;
import android.os.Bundle;
import android.print.PrintJobId;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;

public class MyDialogActivity extends ListActivity {

    private static final int ITEM_INDEX_PRINT_NOW = 0;
    private static final int ITEM_INDEX_PRINT_DELAYED = 1;
    private static final int ITEM_INDEX_FAIL_NOW = 2;
    private static final int ITEM_INDEX_FAIL_DELAYED = 3;
    private static final int ITEM_INDEX_BLOCK_NOW = 4;
    private static final int ITEM_INDEX_BLOCK_DELAYED = 5;
    private static final int ITEM_INDEX_BLOCK_AND_DELAYED_UNBLOCK = 6;
    private static final int ITEM_INDEX_PRINT_SLOWLY = 7;

    private static final int ITEM_INDEX_CANCEL_YES = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        PrintJobId printJobId = getIntent().getParcelableExtra(
                MyPrintService.INTENT_EXTRA_PRINT_JOB_ID);
        final int actionType = getIntent().getIntExtra(MyPrintService.INTENT_EXTRA_ACTION_TYPE,
                MyPrintService.ACTION_TYPE_ON_PRINT_JOB_PENDING);

        if (actionType == MyPrintService.ACTION_TYPE_ON_PRINT_JOB_PENDING) {
            createActionTypeOnPrintJobPendingUi(printJobId);
        } else {
            createActionTypeOnReqeustCancelPrintJobUi(printJobId);
        }
    }

    private void createActionTypeOnPrintJobPendingUi(final PrintJobId printJobId) {
        setTitle(getString(R.string.on_print_job_pending_activity_title));

        setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
                getResources().getStringArray(R.array.on_print_job_queued_actions)));
        getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                switch (position) {
                    case ITEM_INDEX_PRINT_NOW: {
                        MyPrintService.peekInstance().handleQueuedPrintJob(printJobId);
                    } break;

                    case ITEM_INDEX_PRINT_DELAYED: {
                        MyPrintService.peekInstance().handleQueuedPrintJobDelayed(printJobId);
                    } break;

                    case ITEM_INDEX_FAIL_NOW: {
                        MyPrintService.peekInstance().handleFailPrintJob(printJobId);
                    } break;

                    case ITEM_INDEX_FAIL_DELAYED: {
                        MyPrintService.peekInstance().handleFailPrintJobDelayed(printJobId);
                    } break;

                    case ITEM_INDEX_BLOCK_NOW: {
                        MyPrintService.peekInstance().handleBlockPrintJob(printJobId);
                    } break;

                    case ITEM_INDEX_BLOCK_DELAYED: {
                        MyPrintService.peekInstance().handleBlockPrintJobDelayed(printJobId);
                    } break;

                    case ITEM_INDEX_BLOCK_AND_DELAYED_UNBLOCK: {
                        MyPrintService.peekInstance().handleBlockAndDelayedUnblockPrintJob(
                                printJobId);
                    } break;

                    case ITEM_INDEX_PRINT_SLOWLY: {
                        MyPrintService.peekInstance().handlePrintJobProgress(printJobId, 0);
                    } break;
                }
                finishAndRemoveTask();
            }
        });
    }

    private void createActionTypeOnReqeustCancelPrintJobUi(final PrintJobId printJobId) {
        setTitle(getString(R.string.on_cancle_print_job_requested_activity_title));

        setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,
                getResources().getStringArray(R.array.on_request_cancel_print_job_actions)));
        getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                switch (position) {
                    case ITEM_INDEX_CANCEL_YES: {
                        MyPrintService.peekInstance().handleRequestCancelPrintJob(printJobId);
                    } break;
                }
                finishAndRemoveTask();
            }
        });
    }
}