Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fb83af78 authored by Svetoslav Ganov's avatar Svetoslav Ganov Committed by Android Git Automerger
Browse files

am c783f673: Merge "Adding a timeout for waiting to get the selected...

am c783f673: Merge "Adding a timeout for waiting to get the selected printer\'s capabilities." into klp-dev

* commit 'c783f673':
  Adding a timeout for waiting to get the selected printer's capabilities.
parents a2c42861 c783f673
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -109,6 +109,9 @@
    <!-- Label for an unknown reason for failed or blocked print job. [CHAR LIMIT=25] -->
    <string name="reason_unknown">unknown</string>

    <!-- Label for a printer that is not available. [CHAR LIMIT=25] -->
    <string name="printer_unavailable"><xliff:g id="print_job_name" example="Canon-123GHT">%1$s</xliff:g> &#8211; unavailable</string>

    <!-- Arrays -->

    <!-- Color mode labels. -->
+46 −9
Original line number Diff line number Diff line
@@ -819,8 +819,6 @@ public class PrintJobConfigActivity extends Activity {

        private PrinterInfo mCurrentPrinter;

        private boolean mRequestedCurrentPrinterRefresh;

        private final OnItemSelectedListener mOnItemSelectedListener =
                new AdapterView.OnItemSelectedListener() {
            @Override
@@ -840,7 +838,7 @@ public class PrintJobConfigActivity extends Activity {
                        return;
                    }

                    mRequestedCurrentPrinterRefresh = false;
                    mCapabilitiesTimeout.remove();

                    mCurrentPrinter = (PrinterInfo) mDestinationSpinnerAdapter
                            .getItem(position);
@@ -855,8 +853,7 @@ public class PrintJobConfigActivity extends Activity {

                    PrinterCapabilitiesInfo capabilities = mCurrentPrinter.getCapabilities();
                    if (capabilities == null) {
                        // TODO: We need a timeout for the update.
                        mRequestedCurrentPrinterRefresh = true;
                        mCapabilitiesTimeout.post();
                        updateUi();
                        refreshCurrentPrinter();
                    } else {
@@ -1129,6 +1126,9 @@ public class PrintJobConfigActivity extends Activity {
            }
        };

        private final WaitForPrinterCapabilitiesTimeout mCapabilitiesTimeout =
                new WaitForPrinterCapabilitiesTimeout();

        private int mEditorState;

        private boolean mIgnoreNextDestinationChange;
@@ -1174,16 +1174,16 @@ public class PrintJobConfigActivity extends Activity {
                                if (mCurrentPrinter.getStatus() == PrinterInfo.STATUS_UNAVAILABLE
                                        && printer.getStatus() != PrinterInfo.STATUS_UNAVAILABLE
                                        && printer.getCapabilities() == null
                                        && !mRequestedCurrentPrinterRefresh) {
                                    mRequestedCurrentPrinterRefresh = true;
                                        && !mCapabilitiesTimeout.isPosted()) {
                                    mCapabilitiesTimeout.post();
                                    refreshCurrentPrinter();
                                    return;
                                }

                                // We just refreshed the current printer.
                                if (printer.getCapabilities() != null
                                        && mRequestedCurrentPrinterRefresh) {
                                    mRequestedCurrentPrinterRefresh = false;
                                        && mCapabilitiesTimeout.isPosted()) {
                                    mCapabilitiesTimeout.remove();
                                    updatePrintAttributes(printer.getCapabilities());
                                    updateUi();
                                    mController.update();
@@ -1972,6 +1972,43 @@ public class PrintJobConfigActivity extends Activity {
            }
        }

        private final class WaitForPrinterCapabilitiesTimeout implements Runnable {
            private static final long GET_CAPABILITIES_TIMEOUT_MILLIS = 10000; // 10sec

            private boolean mIsPosted;

            public void post() {
                if (!mIsPosted) {
                    mDestinationSpinner.postDelayed(this,
                            GET_CAPABILITIES_TIMEOUT_MILLIS);
                    mIsPosted = true;
                }
            }

            public void remove() {
                if (mIsPosted) {
                    mIsPosted = false;
                    mDestinationSpinner.removeCallbacks(this);
                }
            }

            public boolean isPosted() {
                return mIsPosted;
            }

            @Override
            public void run() {
                mIsPosted = false;
                if (mDestinationSpinner.getSelectedItemPosition() >= 0) {
                    View itemView = mDestinationSpinner.getSelectedView();
                    TextView titleView = (TextView) itemView.findViewById(R.id.title);
                    String title = getString(R.string.printer_unavailable,
                            mCurrentPrinter.getName());
                    titleView.setText(title);
                }
            }
        }

        private final class DestinationAdapter extends BaseAdapter
                implements LoaderManager.LoaderCallbacks<List<PrinterInfo>>{
            private final List<PrinterInfo> mPrinters = new ArrayList<PrinterInfo>();