Merge "Add # of active print jobs back to print setting summary"
This commit is contained in:
committed by
Android (Google) Code Review
commit
f6b63db187
@@ -164,8 +164,7 @@ public class PrintSettingsFragment extends ProfileSettingsPreferenceFragment
|
|||||||
/**
|
/**
|
||||||
* Adds preferences for all print services to the {@value PRINT_SERVICES_CATEGORY} cathegory.
|
* Adds preferences for all print services to the {@value PRINT_SERVICES_CATEGORY} cathegory.
|
||||||
*/
|
*/
|
||||||
private final class PrintServicesController implements
|
private final class PrintServicesController implements LoaderCallbacks<List<PrintServiceInfo>> {
|
||||||
LoaderCallbacks<List<PrintServiceInfo>> {
|
|
||||||
@Override
|
@Override
|
||||||
public Loader<List<PrintServiceInfo>> onCreateLoader(int id, Bundle args) {
|
public Loader<List<PrintServiceInfo>> onCreateLoader(int id, Bundle args) {
|
||||||
PrintManager printManager =
|
PrintManager printManager =
|
||||||
@@ -290,7 +289,7 @@ public class PrintSettingsFragment extends ProfileSettingsPreferenceFragment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private final class PrintJobsController implements LoaderCallbacks<List<PrintJobInfo>> {
|
private final class PrintJobsController implements LoaderCallbacks<List<PrintJobInfo>> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Loader<List<PrintJobInfo>> onCreateLoader(int id, Bundle args) {
|
public Loader<List<PrintJobInfo>> onCreateLoader(int id, Bundle args) {
|
||||||
@@ -326,7 +325,7 @@ public class PrintSettingsFragment extends ProfileSettingsPreferenceFragment
|
|||||||
|
|
||||||
switch (printJob.getState()) {
|
switch (printJob.getState()) {
|
||||||
case PrintJobInfo.STATE_QUEUED:
|
case PrintJobInfo.STATE_QUEUED:
|
||||||
case PrintJobInfo.STATE_STARTED: {
|
case PrintJobInfo.STATE_STARTED:
|
||||||
if (!printJob.isCancelling()) {
|
if (!printJob.isCancelling()) {
|
||||||
preference.setTitle(getString(
|
preference.setTitle(getString(
|
||||||
R.string.print_printing_state_title_template,
|
R.string.print_printing_state_title_template,
|
||||||
@@ -336,15 +335,13 @@ public class PrintSettingsFragment extends ProfileSettingsPreferenceFragment
|
|||||||
R.string.print_cancelling_state_title_template,
|
R.string.print_cancelling_state_title_template,
|
||||||
printJob.getLabel()));
|
printJob.getLabel()));
|
||||||
}
|
}
|
||||||
} break;
|
break;
|
||||||
|
case PrintJobInfo.STATE_FAILED:
|
||||||
case PrintJobInfo.STATE_FAILED: {
|
|
||||||
preference.setTitle(getString(
|
preference.setTitle(getString(
|
||||||
R.string.print_failed_state_title_template,
|
R.string.print_failed_state_title_template,
|
||||||
printJob.getLabel()));
|
printJob.getLabel()));
|
||||||
} break;
|
break;
|
||||||
|
case PrintJobInfo.STATE_BLOCKED:
|
||||||
case PrintJobInfo.STATE_BLOCKED: {
|
|
||||||
if (!printJob.isCancelling()) {
|
if (!printJob.isCancelling()) {
|
||||||
preference.setTitle(getString(
|
preference.setTitle(getString(
|
||||||
R.string.print_blocked_state_title_template,
|
R.string.print_blocked_state_title_template,
|
||||||
@@ -354,7 +351,7 @@ public class PrintSettingsFragment extends ProfileSettingsPreferenceFragment
|
|||||||
R.string.print_cancelling_state_title_template,
|
R.string.print_cancelling_state_title_template,
|
||||||
printJob.getLabel()));
|
printJob.getLabel()));
|
||||||
}
|
}
|
||||||
} break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
preference.setSummary(getString(R.string.print_job_summary,
|
preference.setSummary(getString(R.string.print_job_summary,
|
||||||
@@ -364,14 +361,13 @@ public class PrintSettingsFragment extends ProfileSettingsPreferenceFragment
|
|||||||
|
|
||||||
switch (printJob.getState()) {
|
switch (printJob.getState()) {
|
||||||
case PrintJobInfo.STATE_QUEUED:
|
case PrintJobInfo.STATE_QUEUED:
|
||||||
case PrintJobInfo.STATE_STARTED: {
|
case PrintJobInfo.STATE_STARTED:
|
||||||
preference.setIcon(R.drawable.ic_print);
|
preference.setIcon(R.drawable.ic_print);
|
||||||
} break;
|
break;
|
||||||
|
|
||||||
case PrintJobInfo.STATE_FAILED:
|
case PrintJobInfo.STATE_FAILED:
|
||||||
case PrintJobInfo.STATE_BLOCKED: {
|
case PrintJobInfo.STATE_BLOCKED:
|
||||||
preference.setIcon(R.drawable.ic_print_error);
|
preference.setIcon(R.drawable.ic_print_error);
|
||||||
} break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
Bundle extras = preference.getExtras();
|
Bundle extras = preference.getExtras();
|
||||||
@@ -475,7 +471,7 @@ public class PrintSettingsFragment extends ProfileSettingsPreferenceFragment
|
|||||||
PrintJobInfo printJob = printJobs.get(i).getInfo();
|
PrintJobInfo printJob = printJobs.get(i).getInfo();
|
||||||
if (shouldShowToUser(printJob)) {
|
if (shouldShowToUser(printJob)) {
|
||||||
if (printJobInfos == null) {
|
if (printJobInfos == null) {
|
||||||
printJobInfos = new ArrayList<PrintJobInfo>();
|
printJobInfos = new ArrayList<>();
|
||||||
}
|
}
|
||||||
printJobInfos.add(printJob);
|
printJobInfos.add(printJob);
|
||||||
}
|
}
|
||||||
@@ -505,8 +501,9 @@ public class PrintSettingsFragment extends ProfileSettingsPreferenceFragment
|
|||||||
/**
|
/**
|
||||||
* Provider for the print settings summary
|
* Provider for the print settings summary
|
||||||
*/
|
*/
|
||||||
@VisibleForTesting(otherwise = VisibleForTesting.PRIVATE)
|
@VisibleForTesting
|
||||||
static class PrintSummaryProvider implements SummaryLoader.SummaryProvider {
|
static class PrintSummaryProvider
|
||||||
|
implements SummaryLoader.SummaryProvider, PrintJobStateChangeListener {
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final PrintManagerWrapper mPrintManager;
|
private final PrintManagerWrapper mPrintManager;
|
||||||
private final SummaryLoader mSummaryLoader;
|
private final SummaryLoader mSummaryLoader;
|
||||||
@@ -528,19 +525,43 @@ public class PrintSettingsFragment extends ProfileSettingsPreferenceFragment
|
|||||||
public void setListening(boolean isListening) {
|
public void setListening(boolean isListening) {
|
||||||
if (mPrintManager != null) {
|
if (mPrintManager != null) {
|
||||||
if (isListening) {
|
if (isListening) {
|
||||||
List<PrintServiceInfo> services =
|
mPrintManager.addPrintJobStateChanegListner(this);
|
||||||
mPrintManager.getPrintServices(PrintManager.ENABLED_SERVICES);
|
onPrintJobStateChanged(null);
|
||||||
if (services == null || services.isEmpty()) {
|
} else {
|
||||||
mSummaryLoader.setSummary(this,
|
mPrintManager.removePrintJobStateChangeListener(this);
|
||||||
mContext.getString(R.string.print_settings_summary_no_service));
|
}
|
||||||
} else {
|
}
|
||||||
final int count = services.size();
|
}
|
||||||
mSummaryLoader.setSummary(this,
|
|
||||||
mContext.getResources().getQuantityString(
|
@Override
|
||||||
R.plurals.print_settings_summary, count, count));
|
public void onPrintJobStateChanged(PrintJobId printJobId) {
|
||||||
|
final List<PrintJob> printJobs = mPrintManager.getPrintJobs();
|
||||||
|
|
||||||
|
int numActivePrintJobs = 0;
|
||||||
|
if (printJobs != null) {
|
||||||
|
for (PrintJob job : printJobs) {
|
||||||
|
if (shouldShowToUser(job.getInfo())) {
|
||||||
|
numActivePrintJobs++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (numActivePrintJobs > 0) {
|
||||||
|
mSummaryLoader.setSummary(this, mContext.getResources().getQuantityString(
|
||||||
|
R.plurals.print_jobs_summary, numActivePrintJobs, numActivePrintJobs));
|
||||||
|
} else {
|
||||||
|
List<PrintServiceInfo> services =
|
||||||
|
mPrintManager.getPrintServices(PrintManager.ENABLED_SERVICES);
|
||||||
|
if (services == null || services.isEmpty()) {
|
||||||
|
mSummaryLoader.setSummary(this,
|
||||||
|
mContext.getString(R.string.print_settings_summary_no_service));
|
||||||
|
} else {
|
||||||
|
final int count = services.size();
|
||||||
|
mSummaryLoader.setSummary(this,
|
||||||
|
mContext.getResources().getQuantityString(
|
||||||
|
R.plurals.print_settings_summary, count, count));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static class PrintManagerWrapper {
|
static class PrintManagerWrapper {
|
||||||
@@ -555,6 +576,18 @@ public class PrintSettingsFragment extends ProfileSettingsPreferenceFragment
|
|||||||
public List<PrintServiceInfo> getPrintServices(int selectionFlags) {
|
public List<PrintServiceInfo> getPrintServices(int selectionFlags) {
|
||||||
return mPrintManager.getPrintServices(selectionFlags);
|
return mPrintManager.getPrintServices(selectionFlags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addPrintJobStateChanegListner(PrintJobStateChangeListener listener) {
|
||||||
|
mPrintManager.addPrintJobStateChangeListener(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removePrintJobStateChangeListener(PrintJobStateChangeListener listener) {
|
||||||
|
mPrintManager.removePrintJobStateChangeListener(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<PrintJob> getPrintJobs() {
|
||||||
|
return mPrintManager.getPrintJobs();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -22,6 +22,8 @@ import static org.mockito.Mockito.when;
|
|||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
|
import android.print.PrintJob;
|
||||||
|
import android.print.PrintJobInfo;
|
||||||
import android.print.PrintManager;
|
import android.print.PrintManager;
|
||||||
import android.printservice.PrintServiceInfo;
|
import android.printservice.PrintServiceInfo;
|
||||||
|
|
||||||
@@ -34,9 +36,11 @@ import org.junit.Before;
|
|||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.mockito.Mock;
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.Mockito;
|
||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
@@ -62,6 +66,19 @@ public class PrintSettingsFragmentTest {
|
|||||||
mPrintManager);
|
mPrintManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSummary_hasActiveJob_shouldSetSummaryToNumberOfJobs() {
|
||||||
|
final List<PrintJob> printJobs = new ArrayList<>();
|
||||||
|
final PrintJob job = mock(PrintJob.class, Mockito.RETURNS_DEEP_STUBS);
|
||||||
|
printJobs.add(job);
|
||||||
|
when(job.getInfo().getState()).thenReturn(PrintJobInfo.STATE_STARTED);
|
||||||
|
when(mPrintManager.getPrintJobs()).thenReturn(printJobs);
|
||||||
|
|
||||||
|
mSummaryProvider.setListening(true);
|
||||||
|
|
||||||
|
verify(mRes).getQuantityString(R.plurals.print_jobs_summary, 1, 1);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSummary_shouldSetSummaryToNumberOfPrintServices() {
|
public void testSummary_shouldSetSummaryToNumberOfPrintServices() {
|
||||||
final List<PrintServiceInfo> printServices = mock(List.class);
|
final List<PrintServiceInfo> printServices = mock(List.class);
|
||||||
@@ -69,7 +86,7 @@ public class PrintSettingsFragmentTest {
|
|||||||
when(printServices.size()).thenReturn(2);
|
when(printServices.size()).thenReturn(2);
|
||||||
// 2 services
|
// 2 services
|
||||||
when(mPrintManager.getPrintServices(PrintManager.ENABLED_SERVICES))
|
when(mPrintManager.getPrintServices(PrintManager.ENABLED_SERVICES))
|
||||||
.thenReturn(printServices);
|
.thenReturn(printServices);
|
||||||
|
|
||||||
mSummaryProvider.setListening(true);
|
mSummaryProvider.setListening(true);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user