Search in sources :

Example 6 with PrintJobInfo

use of android.print.PrintJobInfo in project platform_frameworks_base by android.

the class PrintSpoolerService method updatePrintJobUserConfigurableOptionsNoPersistence.

public void updatePrintJobUserConfigurableOptionsNoPersistence(PrintJobInfo printJob) {
    synchronized (mLock) {
        final int printJobCount = mPrintJobs.size();
        for (int i = 0; i < printJobCount; i++) {
            PrintJobInfo cachedPrintJob = mPrintJobs.get(i);
            if (cachedPrintJob.getId().equals(printJob.getId())) {
                cachedPrintJob.setPrinterId(printJob.getPrinterId());
                cachedPrintJob.setPrinterName(printJob.getPrinterName());
                cachedPrintJob.setCopies(printJob.getCopies());
                cachedPrintJob.setDocumentInfo(printJob.getDocumentInfo());
                cachedPrintJob.setPages(printJob.getPages());
                cachedPrintJob.setAttributes(printJob.getAttributes());
                cachedPrintJob.setAdvancedOptions(printJob.getAdvancedOptions());
                return;
            }
        }
        throw new IllegalArgumentException("No print job with id:" + printJob.getId());
    }
}
Also used : PrintJobInfo(android.print.PrintJobInfo)

Example 7 with PrintJobInfo

use of android.print.PrintJobInfo in project platform_frameworks_base by android.

the class PrintSpoolerService method setPrintJobState.

public boolean setPrintJobState(PrintJobId printJobId, int state, String error) {
    boolean success = false;
    synchronized (mLock) {
        PrintJobInfo printJob = getPrintJobInfo(printJobId, PrintManager.APP_ID_ANY);
        if (printJob != null) {
            final int oldState = printJob.getState();
            if (oldState == state) {
                return false;
            }
            success = true;
            printJob.setState(state);
            printJob.setStatus(error);
            printJob.setCancelling(false);
            if (DEBUG_PRINT_JOB_LIFECYCLE) {
                Slog.i(LOG_TAG, "[STATE CHANGED] " + printJob);
            }
            MetricsLogger.histogram(this, "print_job_state", state);
            switch(state) {
                case PrintJobInfo.STATE_COMPLETED:
                case PrintJobInfo.STATE_CANCELED:
                    mPrintJobs.remove(printJob);
                    removePrintJobFileLocked(printJob.getId());
                case PrintJobInfo.STATE_FAILED:
                    {
                        PrinterId printerId = printJob.getPrinterId();
                        if (printerId != null) {
                            ComponentName service = printerId.getServiceName();
                            if (!hasActivePrintJobsForServiceLocked(service)) {
                                sendOnAllPrintJobsForServiceHandled(service);
                            }
                        }
                    }
                    break;
                case PrintJobInfo.STATE_QUEUED:
                    {
                        sendOnPrintJobQueued(new PrintJobInfo(printJob));
                    }
                    break;
            }
            if (shouldPersistPrintJob(printJob)) {
                mPersistanceManager.writeStateLocked();
            }
            if (!hasActivePrintJobsLocked()) {
                notifyOnAllPrintJobsHandled();
            }
            notifyPrintJobUpdated(printJob);
        }
    }
    return success;
}
Also used : PrintJobInfo(android.print.PrintJobInfo) ComponentName(android.content.ComponentName) PrinterId(android.print.PrinterId)

Example 8 with PrintJobInfo

use of android.print.PrintJobInfo in project platform_frameworks_base by android.

the class PrintSpoolerService method setStatus.

/**
     * Set the status for a print job.
     *
     * @param printJobId ID of the print job to update
     * @param status the new status as a string resource
     * @param appPackageName app package the resource belongs to
     */
public void setStatus(@NonNull PrintJobId printJobId, @StringRes int status, @Nullable CharSequence appPackageName) {
    synchronized (mLock) {
        PrintJobInfo printJob = getPrintJobInfo(printJobId, PrintManager.APP_ID_ANY);
        if (printJob != null) {
            printJob.setStatus(status, appPackageName);
            notifyPrintJobUpdated(printJob);
        }
    }
}
Also used : PrintJobInfo(android.print.PrintJobInfo)

Example 9 with PrintJobInfo

use of android.print.PrintJobInfo in project platform_frameworks_base by android.

the class PrintSpoolerService method setStatus.

/**
     * Set the status for a print job.
     *
     * @param printJobId ID of the print job to update
     * @param status the new status
     */
public void setStatus(@NonNull PrintJobId printJobId, @Nullable CharSequence status) {
    synchronized (mLock) {
        PrintJobInfo printJob = getPrintJobInfo(printJobId, PrintManager.APP_ID_ANY);
        if (printJob != null) {
            printJob.setStatus(status);
            notifyPrintJobUpdated(printJob);
        }
    }
}
Also used : PrintJobInfo(android.print.PrintJobInfo)

Example 10 with PrintJobInfo

use of android.print.PrintJobInfo in project platform_frameworks_base by android.

the class PrintSpoolerService method setPrintJobCancelling.

public void setPrintJobCancelling(PrintJobId printJobId, boolean cancelling) {
    synchronized (mLock) {
        PrintJobInfo printJob = getPrintJobInfo(printJobId, PrintManager.APP_ID_ANY);
        if (printJob != null) {
            printJob.setCancelling(cancelling);
            if (shouldPersistPrintJob(printJob)) {
                mPersistanceManager.writeStateLocked();
            }
            mNotificationController.onUpdateNotifications(mPrintJobs);
            Message message = mHandlerCaller.obtainMessageO(HandlerCallerCallback.MSG_ON_PRINT_JOB_STATE_CHANGED, printJob);
            mHandlerCaller.executeOrSendMessage(message);
        }
    }
}
Also used : Message(android.os.Message) PrintJobInfo(android.print.PrintJobInfo)

Aggregations

PrintJobInfo (android.print.PrintJobInfo)110 PrintJobId (android.print.PrintJobId)18 AtomicFile (android.util.AtomicFile)15 File (java.io.File)15 PrinterId (android.print.PrinterId)14 ArrayList (java.util.ArrayList)14 MainThread (android.annotation.MainThread)10 ComponentName (android.content.ComponentName)9 NonNull (android.annotation.NonNull)5 Notification (android.app.Notification)5 InboxStyle (android.app.Notification.InboxStyle)5 Message (android.os.Message)5 RemoteException (android.os.RemoteException)5 PageRange (android.print.PageRange)5 PrintAttributes (android.print.PrintAttributes)5 MediaSize (android.print.PrintAttributes.MediaSize)5 Resolution (android.print.PrintAttributes.Resolution)5 PrintDocumentInfo (android.print.PrintDocumentInfo)5 PrinterCapabilitiesInfo (android.print.PrinterCapabilitiesInfo)5 ArraySet (android.util.ArraySet)5