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

Commit 269403b0 authored by Svetoslav's avatar Svetoslav Committed by Svetoslav Ganov
Browse files

Implemented advanced printer selection and API refactoring.

1. Added past printer history tracking and merging favorite printers
   with discovered printers.

2. Added save as PDF support.

3. Added all printers activity with search capability and optional
   add printers chooser (if any print service provides add printers
   activity)

4. Refactored the printer discovery session APIs. Now one session
   can have multiple window discovery windows and the session stores
   the printers found during past discovery periods.

5. Merged the print spooler and the print spooler service - much
   simpler and easier to maintain.

Change-Id: I4830b0eb6367e1c748b768a5ea9ea11baf36cfad
parent b9348927
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
@@ -162,8 +162,6 @@ LOCAL_SRC_FILES += \
	core/java/android/os/IVibratorService.aidl \
	core/java/android/service/notification/INotificationListener.aidl \
	core/java/android/print/ILayoutResultCallback.aidl \
	core/java/android/print/IPrinterDiscoverySessionController.aidl \
	core/java/android/print/IPrinterDiscoverySessionObserver.aidl \
	core/java/android/print/IPrintDocumentAdapter.aidl \
	core/java/android/print/IPrintClient.aidl \
	core/java/android/print/IPrintManager.aidl \
+9 −5
Original line number Diff line number Diff line
@@ -19031,7 +19031,7 @@ package android.print {
    method public android.print.PrintAttributes getAttributes();
    method public int getCopies();
    method public int getId();
    method public java.lang.CharSequence getLabel();
    method public java.lang.String getLabel();
    method public android.print.PageRange[] getPages();
    method public android.print.PrinterId getPrinterId();
    method public int getState();
@@ -19155,7 +19155,7 @@ package android.printservice {
  public final class PrintJob {
    method public boolean cancel();
    method public boolean complete();
    method public boolean fail(java.lang.CharSequence);
    method public boolean fail(java.lang.String);
    method public android.printservice.PrintDocument getDocument();
    method public int getId();
    method public android.print.PrintJobInfo getInfo();
@@ -19184,11 +19184,15 @@ package android.printservice {
  }
  public abstract class PrinterDiscoverySession {
    ctor public PrinterDiscoverySession(android.content.Context);
    ctor public PrinterDiscoverySession();
    method public final void addPrinters(java.util.List<android.print.PrinterInfo>);
    method public abstract void onClose();
    method public abstract void onOpen(java.util.List<android.print.PrinterId>);
    method public final java.util.List<android.print.PrinterInfo> getPrinters();
    method public final boolean isDestroyed();
    method public final boolean isPrinterDiscoveryStarted();
    method public abstract void onDestroy();
    method public abstract void onRequestPrinterUpdate(android.print.PrinterId);
    method public abstract void onStartPrinterDiscovery(java.util.List<android.print.PrinterId>);
    method public abstract void onStopPrinterDiscovery();
    method public final void removePrinters(java.util.List<android.print.PrinterId>);
    method public final void updatePrinters(java.util.List<android.print.PrinterInfo>);
  }
+7 −1
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.print;

import android.content.ComponentName;
import android.os.ParcelFileDescriptor;
import android.print.PrinterId;
import android.print.IPrintDocumentAdapter;
import android.print.IPrintClient;
import android.print.IPrintSpoolerClient;
@@ -40,10 +41,15 @@ oneway interface IPrintSpooler {
    void createPrintJob(String printJobName, in IPrintClient client,
            in IPrintDocumentAdapter printAdapter, in PrintAttributes attributes,
            IPrintSpoolerCallbacks callback, int appId, int sequence);
    void setPrintJobState(int printJobId, int status, CharSequence error,
    void setPrintJobState(int printJobId, int status, String error,
            IPrintSpoolerCallbacks callback, int sequence);
    void setPrintJobTag(int printJobId, String tag, IPrintSpoolerCallbacks callback,
            int sequence);
    void writePrintJobData(in ParcelFileDescriptor fd, int printJobId);
    void setClient(IPrintSpoolerClient client);

    // Printer discovery APIs
    void onPrintersAdded(in List<PrinterInfo> printers);
    void onPrintersRemoved(in List<PrinterId> printerIds);
    void onPrintersUpdated(in List<PrinterInfo> printerIds);
}
+7 −2
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package android.print;

import android.content.ComponentName;
import android.print.IPrinterDiscoverySessionObserver;
import android.print.PrinterId;
import android.print.PrintJobInfo;

@@ -28,8 +27,14 @@ import android.print.PrintJobInfo;
 * @hide
 */
oneway interface IPrintSpoolerClient {
    void createPrinterDiscoverySession(IPrinterDiscoverySessionObserver observer);
    void onPrintJobQueued(in PrintJobInfo printJob);
    void onAllPrintJobsForServiceHandled(in ComponentName printService);
    void onAllPrintJobsHandled();

    // Printer discovery APIs
    void createPrinterDiscoverySession();
    void startPrinterDiscovery(in List<PrinterId> priorityList);
    void stopPrinterDiscovery();
    void requestPrinterUpdate(in PrinterId printerId);
    void destroyPrinterDiscoverySession();
}
+0 −30
Original line number Diff line number Diff line
/*
 * Copyright (C) 2013 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 android.print;

import android.print.PrinterId;

/**
* Interface for the controlling part of a printer discovery session.
 *
 * @hide
 */
oneway interface IPrinterDiscoverySessionController {
    void open(in List<PrinterId> priorityList);
    void requestPrinterUpdate(in PrinterId printerId);
    void close();
}
Loading