PrintJobSettingsFragment.java revision dc00bf648338386e11ece255a8e7ce29ea3a70ab
1bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov/* 2bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov * Copyright (C) 2013 The Android Open Source Project 3bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov * 4bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov * Licensed under the Apache License, Version 2.0 (the "License"); 5bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov * you may not use this file except in compliance with the License. 6bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov * You may obtain a copy of the License at 7bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov * 8bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov * http://www.apache.org/licenses/LICENSE-2.0 9bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov * 10bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov * Unless required by applicable law or agreed to in writing, software 11bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov * distributed under the License is distributed on an "AS IS" BASIS, 12bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov * See the License for the specific language governing permissions and 14bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov * limitations under the License. 15bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov */ 16bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 17bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganovpackage com.android.settings.print; 18bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 19bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganovimport android.app.ActivityManager; 20bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganovimport android.content.Context; 21bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganovimport android.graphics.drawable.Drawable; 22bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganovimport android.os.Bundle; 23bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganovimport android.preference.Preference; 24bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganovimport android.print.PrintJob; 25bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganovimport android.print.PrintJobId; 26bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganovimport android.print.PrintJobInfo; 27bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganovimport android.print.PrintManager; 28bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganovimport android.print.PrintManager.PrintJobStateChangeListener; 29bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganovimport android.text.TextUtils; 30bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganovimport android.text.format.DateUtils; 31bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganovimport android.view.Menu; 32bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganovimport android.view.MenuInflater; 33bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganovimport android.view.MenuItem; 34bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganovimport android.view.View; 35bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 36bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganovimport com.android.settings.R; 37bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganovimport com.android.settings.SettingsPreferenceFragment; 38bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 39bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganovimport java.text.DateFormat; 40bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 41bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov/** 42bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov * Fragment for management of a print job. 43bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov */ 44bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganovpublic class PrintJobSettingsFragment extends SettingsPreferenceFragment { 45bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov private static final int MENU_ITEM_ID_CANCEL = 1; 46bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov private static final int MENU_ITEM_ID_RESTART = 2; 47bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 48bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov private static final String PRINT_JOB_PREFERENCE = "print_job_preference"; 49bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov private static final String PRINT_JOB_MESSAGE_PREFERENCE = "print_job_message_preference"; 50bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 51bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov private Drawable mListDivider; 52bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 53bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov private final PrintJobStateChangeListener mPrintJobStateChangeListener = 54bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov new PrintJobStateChangeListener() { 55bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov @Override 56bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov public void onPrintJobsStateChanged(PrintJobId printJobId) { 57bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov updateUi(); 58bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } 59bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov }; 60bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 61bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov private PrintManager mPrintManager; 62bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 63bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov private Preference mPrintJobPreference; 64bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov private Preference mMessagePreference; 65bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 66bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov private PrintJobId mPrintJobId; 67bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov private PrintJob mPrintJob; 68bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 69bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov @Override 70bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov public void onCreate(Bundle icicle) { 71bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov super.onCreate(icicle); 72bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 73bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov addPreferencesFromResource(R.xml.print_job_settings); 74bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov mPrintJobPreference = findPreference(PRINT_JOB_PREFERENCE); 75bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov mMessagePreference = findPreference(PRINT_JOB_MESSAGE_PREFERENCE); 76bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 77bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov mPrintManager = ((PrintManager) getActivity().getSystemService( 78bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov Context.PRINT_SERVICE)).getGlobalPrintManagerForUser( 79bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov ActivityManager.getCurrentUser()); 80bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 81bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov getActivity().getActionBar().setTitle(R.string.print_print_job); 82bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 83bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov processArguments(); 84bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 85bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov setHasOptionsMenu(true); 86bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } 87bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 88bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov @Override 89bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov public void onViewCreated(View view, Bundle savedInstanceState) { 90bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov super.onViewCreated(view, savedInstanceState); 91bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov getListView().setEnabled(false); 92bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } 93bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 94bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov @Override 95bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov public void onResume() { 96bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov super.onResume(); 97bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov mPrintManager.addPrintJobStateChangeListener( 98bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov mPrintJobStateChangeListener); 99bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov updateUi(); 100bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } 101bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 102bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov @Override 103bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov public void onPause() { 104bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov super.onPause(); 105bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov mPrintManager.removePrintJobStateChangeListener( 106bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov mPrintJobStateChangeListener); 107bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } 108bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 109bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov @Override 110bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 111bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov super.onCreateOptionsMenu(menu, inflater); 112bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 113bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov MenuItem cancel = menu.add(0, MENU_ITEM_ID_CANCEL, Menu.NONE, 114bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov getString(R.string.print_cancel)); 115bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov cancel.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 116bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 117bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov if (mPrintJob.isFailed()) { 118bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov MenuItem restart = menu.add(0, MENU_ITEM_ID_RESTART, Menu.NONE, 119bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov getString(R.string.print_restart)); 120bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov restart.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 121bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } 122bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } 123bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 124bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov @Override 125bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov public boolean onOptionsItemSelected(MenuItem item) { 126bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov switch (item.getItemId()) { 127bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov case MENU_ITEM_ID_CANCEL: { 128bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov mPrintJob.cancel(); 129bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov finish(); 130bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov return true; 131bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } 132bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 133bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov case MENU_ITEM_ID_RESTART: { 134bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov mPrintJob.restart(); 135bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov finish(); 136bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov return true; 137bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } 138bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } 139bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 140bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov return super.onOptionsItemSelected(item); 141bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } 142bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 143bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov private void processArguments() { 144bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov mPrintJobId = (PrintJobId) getArguments().getParcelable( 145bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov PrintSettingsFragment.EXTRA_PRINT_JOB_ID); 146bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov if (mPrintJobId == null) { 147bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov finish(); 148bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } 149bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } 150bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 151bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov private void updateUi() { 152bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov mPrintJob = mPrintManager.getPrintJob(mPrintJobId); 153bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 154bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov if (mPrintJob == null) { 155bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov finish(); 156dc00bf648338386e11ece255a8e7ce29ea3a70abSvetoslav Ganov return; 157bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } 158bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 159bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov if (mPrintJob.isCancelled() || mPrintJob.isCompleted()) { 160bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov finish(); 161dc00bf648338386e11ece255a8e7ce29ea3a70abSvetoslav Ganov return; 162bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } 163bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 164bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov PrintJobInfo info = mPrintJob.getInfo(); 165bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 166bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov switch (info.getState()) { 167bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov case PrintJobInfo.STATE_QUEUED: 168bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov case PrintJobInfo.STATE_STARTED: { 169bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov mPrintJobPreference.setTitle(getString( 170bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov R.string.print_printing_state_title_template, info.getLabel())); 171bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } break; 172bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 173bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov case PrintJobInfo.STATE_FAILED: { 174bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov mPrintJobPreference.setTitle(getString( 175bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov R.string.print_failed_state_title_template, info.getLabel())); 176bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } break; 177bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 178bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov case PrintJobInfo.STATE_BLOCKED: { 179bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov mPrintJobPreference.setTitle(getString( 180bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov R.string.print_blocked_state_title_template, info.getLabel())); 181bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } break; 182bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } 183bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 184bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov mPrintJobPreference.setSummary(getString(R.string.print_job_summary, 185bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov info.getPrinterName(), DateUtils.formatSameDayTime( 186bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov info.getCreationTime(), info.getCreationTime(), DateFormat.SHORT, 187bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov DateFormat.SHORT))); 188bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 189bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov switch (info.getState()) { 190bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov case PrintJobInfo.STATE_QUEUED: 191bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov case PrintJobInfo.STATE_STARTED: { 192bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov mPrintJobPreference.setIcon(com.android.internal.R.drawable.ic_print); 193bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } break; 194bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 195bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov case PrintJobInfo.STATE_FAILED: 196bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov case PrintJobInfo.STATE_BLOCKED: { 197bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov mPrintJobPreference.setIcon(com.android.internal.R.drawable.ic_print_error); 198bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } break; 199bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } 200bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 201bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov String stateReason = info.getStateReason(); 202bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov if (!TextUtils.isEmpty(stateReason)) { 203bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov if (getPreferenceScreen().findPreference(PRINT_JOB_MESSAGE_PREFERENCE) == null) { 204bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov getPreferenceScreen().addPreference(mMessagePreference); 205bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } 206bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov mMessagePreference.setSummary(stateReason); 207bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov getListView().setDivider(null); 208bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } else { 209bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov getPreferenceScreen().removePreference(mMessagePreference); 210bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov getListView().setDivider(mListDivider); 211bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } 212bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov 213bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov getActivity().invalidateOptionsMenu(); 214bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov } 215bc2c3db8f923b9ee25345f5ebbad9f6c762a1e23Svetoslav Ganov} 216