Merge "Modified the char limit"
diff --git a/src/com/android/settings/print/PrintServiceSettingsFragment.java b/src/com/android/settings/print/PrintServiceSettingsFragment.java
index 1311be0..345b4ae 100644
--- a/src/com/android/settings/print/PrintServiceSettingsFragment.java
+++ b/src/com/android/settings/print/PrintServiceSettingsFragment.java
@@ -286,7 +286,7 @@
@Override
public Loader<List<PrintServiceInfo>> onCreateLoader(int id, Bundle args) {
- return new PrintServicesLoader(
+ return new SettingsPrintServicesLoader(
(PrintManager) getContext().getSystemService(Context.PRINT_SERVICE), getContext(),
PrintManager.ALL_SERVICES);
}
diff --git a/src/com/android/settings/print/PrintServicesLoader.java b/src/com/android/settings/print/PrintServicesLoader.java
deleted file mode 100644
index 57cddb9..0000000
--- a/src/com/android/settings/print/PrintServicesLoader.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings.print;
-
-import android.annotation.NonNull;
-import android.content.Context;
-import android.os.Handler;
-import android.os.Message;
-import android.print.PrintManager;
-import android.printservice.PrintServiceInfo;
-
-import com.android.internal.util.Preconditions;
-
-import java.util.List;
-
-import androidx.loader.content.Loader;
-
-/**
- * Loader for the list of print services. Can be parametrized to select a subset.
- *
- */
-public class PrintServicesLoader extends Loader<List<PrintServiceInfo>> {
- /** What type of services to load. */
- private final int mSelectionFlags;
-
- /** The print manager to be used by this object */
- private final @NonNull PrintManager mPrintManager;
-
- /** Handler to sequentialize the delivery of the results to the main thread */
- private final @NonNull Handler mHandler;
-
- /** Listens for updates to the data from the platform */
- private PrintManager.PrintServicesChangeListener mListener;
-
- /**
- * Create a new PrintServicesLoader.
- *
- * @param printManager The print manager supplying the data
- * @param context Context of the using object
- * @param selectionFlags What type of services to load.
- */
- public PrintServicesLoader(@NonNull PrintManager printManager, @NonNull Context context,
- int selectionFlags) {
- super(Preconditions.checkNotNull(context));
- mHandler = new MyHandler();
- mPrintManager = Preconditions.checkNotNull(printManager);
- mSelectionFlags = Preconditions.checkFlagsArgument(selectionFlags,
- PrintManager.ALL_SERVICES);
- }
-
- @Override
- protected void onForceLoad() {
- queueNewResult();
- }
-
- /**
- * Read the print services and queue it to be delivered on the main thread.
- */
- private void queueNewResult() {
- Message m = mHandler.obtainMessage(0);
- m.obj = mPrintManager.getPrintServices(mSelectionFlags);
- mHandler.sendMessage(m);
- }
-
- @Override
- protected void onStartLoading() {
- mListener = new PrintManager.PrintServicesChangeListener() {
- @Override public void onPrintServicesChanged() {
- queueNewResult();
- }
- };
-
- mPrintManager.addPrintServicesChangeListener(mListener, null);
-
- // Immediately deliver a result
- deliverResult(mPrintManager.getPrintServices(mSelectionFlags));
- }
-
- @Override
- protected void onStopLoading() {
- if (mListener != null) {
- mPrintManager.removePrintServicesChangeListener(mListener);
- mListener = null;
- }
-
- mHandler.removeMessages(0);
- }
-
- @Override
- protected void onReset() {
- onStopLoading();
- }
-
- /**
- * Handler to sequentialize all the updates to the main thread.
- */
- private class MyHandler extends Handler {
- /**
- * Create a new handler on the main thread.
- */
- public MyHandler() {
- super(getContext().getMainLooper());
- }
-
- @Override
- public void handleMessage(Message msg) {
- if (isStarted()) {
- deliverResult((List<PrintServiceInfo>) msg.obj);
- }
- }
- }
-}
diff --git a/src/com/android/settings/print/PrintSettingsFragment.java b/src/com/android/settings/print/PrintSettingsFragment.java
index a6b3d7e..899acc7 100644
--- a/src/com/android/settings/print/PrintSettingsFragment.java
+++ b/src/com/android/settings/print/PrintSettingsFragment.java
@@ -168,7 +168,7 @@
PrintManager printManager =
(PrintManager) getContext().getSystemService(Context.PRINT_SERVICE);
if (printManager != null) {
- return new PrintServicesLoader(printManager, getContext(),
+ return new SettingsPrintServicesLoader(printManager, getContext(),
PrintManager.ALL_SERVICES);
} else {
return null;
diff --git a/src/com/android/settings/print/SettingsPrintServicesLoader.java b/src/com/android/settings/print/SettingsPrintServicesLoader.java
new file mode 100644
index 0000000..758f4d3
--- /dev/null
+++ b/src/com/android/settings/print/SettingsPrintServicesLoader.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.print;
+
+import android.annotation.NonNull;
+import android.content.Context;
+import android.print.PrintManager;
+import android.print.PrintServicesLoader;
+import android.printservice.PrintServiceInfo;
+
+import com.android.internal.util.Preconditions;
+
+import java.util.List;
+
+import androidx.loader.content.Loader;
+
+/**
+ * Loader for the list of print services. Can be parametrized to select a subset.
+ */
+public class SettingsPrintServicesLoader extends Loader<List<PrintServiceInfo>> {
+
+ private PrintServicesLoader mLoader;
+
+ public SettingsPrintServicesLoader(@NonNull PrintManager printManager, @NonNull Context context,
+ int selectionFlags) {
+ super(Preconditions.checkNotNull(context));
+
+ mLoader = new PrintServicesLoader(printManager, context, selectionFlags) {
+ @Override
+ public void deliverResult(List<PrintServiceInfo> data) {
+ super.deliverResult(data);
+
+ // deliver the result to outer Loader class
+ SettingsPrintServicesLoader.this.deliverResult(data);
+ }
+ };
+ }
+
+ @Override
+ protected void onForceLoad() {
+ mLoader.forceLoad();
+ }
+
+ @Override
+ protected void onStartLoading() {
+ mLoader.startLoading();
+ }
+
+ @Override
+ protected void onStopLoading() {
+ mLoader.stopLoading();
+ }
+
+ @Override
+ protected boolean onCancelLoad() {
+ return mLoader.cancelLoad();
+ }
+
+ @Override
+ protected void onAbandon() {
+ mLoader.abandon();
+ }
+
+ @Override
+ protected void onReset() {
+ mLoader.reset();
+ }
+}