Search in sources :

Example 6 with PrintServiceInfo

use of android.printservice.PrintServiceInfo in project android_frameworks_base by ResurrectionRemix.

the class UserState method getPrintServices.

@Nullable
public List<PrintServiceInfo> getPrintServices(int selectionFlags) {
    synchronized (mLock) {
        List<PrintServiceInfo> selectedServices = null;
        final int installedServiceCount = mInstalledServices.size();
        for (int i = 0; i < installedServiceCount; i++) {
            PrintServiceInfo installedService = mInstalledServices.get(i);
            ComponentName componentName = new ComponentName(installedService.getResolveInfo().serviceInfo.packageName, installedService.getResolveInfo().serviceInfo.name);
            // Update isEnabled under the same lock the final returned list is created
            installedService.setIsEnabled(mActiveServices.containsKey(componentName));
            if (installedService.isEnabled()) {
                if ((selectionFlags & PrintManager.ENABLED_SERVICES) == 0) {
                    continue;
                }
            } else {
                if ((selectionFlags & PrintManager.DISABLED_SERVICES) == 0) {
                    continue;
                }
            }
            if (selectedServices == null) {
                selectedServices = new ArrayList<>();
            }
            selectedServices.add(installedService);
        }
        return selectedServices;
    }
}
Also used : PrintServiceInfo(android.printservice.PrintServiceInfo) ComponentName(android.content.ComponentName) Nullable(android.annotation.Nullable)

Example 7 with PrintServiceInfo

use of android.printservice.PrintServiceInfo in project android_frameworks_base by ResurrectionRemix.

the class SelectPrinterActivity method onLoadFinished.

@Override
public void onLoadFinished(Loader<List<PrintServiceInfo>> loader, List<PrintServiceInfo> services) {
    mEnabledPrintServices.clear();
    if (services != null && !services.isEmpty()) {
        final int numServices = services.size();
        for (int i = 0; i < numServices; i++) {
            PrintServiceInfo service = services.get(i);
            mEnabledPrintServices.put(service.getComponentName(), service);
        }
    }
    onPrintServicesUpdate();
}
Also used : PrintServiceInfo(android.printservice.PrintServiceInfo)

Example 8 with PrintServiceInfo

use of android.printservice.PrintServiceInfo in project android_frameworks_base by ResurrectionRemix.

the class PrintActivity method onLoadFinished.

@Override
public void onLoadFinished(Loader<List<PrintServiceInfo>> loader, List<PrintServiceInfo> services) {
    ComponentName newAdvancedPrintOptionsActivity = null;
    if (mCurrentPrinter != null && services != null) {
        final int numServices = services.size();
        for (int i = 0; i < numServices; i++) {
            PrintServiceInfo service = services.get(i);
            if (service.getComponentName().equals(mCurrentPrinter.getId().getServiceName())) {
                String advancedOptionsActivityName = service.getAdvancedOptionsActivityName();
                if (!TextUtils.isEmpty(advancedOptionsActivityName)) {
                    newAdvancedPrintOptionsActivity = new ComponentName(service.getComponentName().getPackageName(), advancedOptionsActivityName);
                    break;
                }
            }
        }
    }
    if (!Objects.equals(newAdvancedPrintOptionsActivity, mAdvancedPrintOptionsActivity)) {
        mAdvancedPrintOptionsActivity = newAdvancedPrintOptionsActivity;
        updateOptionsUi();
    }
    boolean newArePrintServicesEnabled = services != null && !services.isEmpty();
    if (mArePrintServicesEnabled != newArePrintServicesEnabled) {
        mArePrintServicesEnabled = newArePrintServicesEnabled;
        // reads that in DestinationAdapter#getMoreItemTitle
        if (mDestinationSpinnerAdapter != null) {
            mDestinationSpinnerAdapter.notifyDataSetChanged();
        }
    }
}
Also used : PrintServiceInfo(android.printservice.PrintServiceInfo) ComponentName(android.content.ComponentName)

Example 9 with PrintServiceInfo

use of android.printservice.PrintServiceInfo in project android_frameworks_base by DirtyUnicorns.

the class PrintActivity method onLoadFinished.

@Override
public void onLoadFinished(Loader<List<PrintServiceInfo>> loader, List<PrintServiceInfo> services) {
    ComponentName newAdvancedPrintOptionsActivity = null;
    if (mCurrentPrinter != null && services != null) {
        final int numServices = services.size();
        for (int i = 0; i < numServices; i++) {
            PrintServiceInfo service = services.get(i);
            if (service.getComponentName().equals(mCurrentPrinter.getId().getServiceName())) {
                String advancedOptionsActivityName = service.getAdvancedOptionsActivityName();
                if (!TextUtils.isEmpty(advancedOptionsActivityName)) {
                    newAdvancedPrintOptionsActivity = new ComponentName(service.getComponentName().getPackageName(), advancedOptionsActivityName);
                    break;
                }
            }
        }
    }
    if (!Objects.equals(newAdvancedPrintOptionsActivity, mAdvancedPrintOptionsActivity)) {
        mAdvancedPrintOptionsActivity = newAdvancedPrintOptionsActivity;
        updateOptionsUi();
    }
    boolean newArePrintServicesEnabled = services != null && !services.isEmpty();
    if (mArePrintServicesEnabled != newArePrintServicesEnabled) {
        mArePrintServicesEnabled = newArePrintServicesEnabled;
        // reads that in DestinationAdapter#getMoreItemTitle
        if (mDestinationSpinnerAdapter != null) {
            mDestinationSpinnerAdapter.notifyDataSetChanged();
        }
    }
}
Also used : PrintServiceInfo(android.printservice.PrintServiceInfo) ComponentName(android.content.ComponentName)

Example 10 with PrintServiceInfo

use of android.printservice.PrintServiceInfo in project android_frameworks_base by DirtyUnicorns.

the class SelectPrinterActivity method onCreate.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getActionBar().setIcon(R.drawable.ic_print);
    setContentView(R.layout.select_printer_activity);
    mEnabledPrintServices = new ArrayMap<>();
    mPrinterRegistry = new PrinterRegistry(this, null, LOADER_ID_PRINT_REGISTRY, LOADER_ID_PRINT_REGISTRY_INT);
    // Hook up the list view.
    mListView = (ListView) findViewById(android.R.id.list);
    final DestinationAdapter adapter = new DestinationAdapter();
    adapter.registerDataSetObserver(new DataSetObserver() {

        @Override
        public void onChanged() {
            if (!isFinishing() && adapter.getCount() <= 0) {
                updateEmptyView(adapter);
            }
        }

        @Override
        public void onInvalidated() {
            if (!isFinishing()) {
                updateEmptyView(adapter);
            }
        }
    });
    mListView.setAdapter(adapter);
    mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            if (!((DestinationAdapter) mListView.getAdapter()).isActionable(position)) {
                return;
            }
            PrinterInfo printer = (PrinterInfo) mListView.getAdapter().getItem(position);
            if (printer == null) {
                startAddPrinterActivity();
            } else {
                onPrinterSelected(printer);
            }
        }
    });
    findViewById(R.id.button).setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            startAddPrinterActivity();
        }
    });
    registerForContextMenu(mListView);
    getLoaderManager().initLoader(LOADER_ID_ENABLED_PRINT_SERVICES, null, this);
    // If some are disabled and some are enabled show a toast to notify the user
    if (savedInstanceState == null || !savedInstanceState.getBoolean(KEY_NOT_FIRST_CREATE)) {
        List<PrintServiceInfo> allServices = ((PrintManager) getSystemService(Context.PRINT_SERVICE)).getPrintServices(PrintManager.ALL_SERVICES);
        boolean hasEnabledServices = false;
        boolean hasDisabledServices = false;
        if (allServices != null) {
            final int numServices = allServices.size();
            for (int i = 0; i < numServices; i++) {
                if (allServices.get(i).isEnabled()) {
                    hasEnabledServices = true;
                } else {
                    hasDisabledServices = true;
                }
            }
        }
        if (!hasEnabledServices) {
            startAddPrinterActivity();
        } else if (hasDisabledServices) {
            String disabledServicesSetting = Settings.Secure.getString(getContentResolver(), Settings.Secure.DISABLED_PRINT_SERVICES);
            if (!TextUtils.isEmpty(disabledServicesSetting)) {
                Toast.makeText(this, getString(R.string.print_services_disabled_toast), Toast.LENGTH_LONG).show();
            }
        }
    }
}
Also used : PrintManager(android.print.PrintManager) DataSetObserver(android.database.DataSetObserver) ImageView(android.widget.ImageView) View(android.view.View) AdapterView(android.widget.AdapterView) SearchView(android.widget.SearchView) TextView(android.widget.TextView) ListView(android.widget.ListView) PrintServiceInfo(android.printservice.PrintServiceInfo) OnClickListener(android.view.View.OnClickListener) AdapterView(android.widget.AdapterView) PrinterInfo(android.print.PrinterInfo)

Aggregations

PrintServiceInfo (android.printservice.PrintServiceInfo)32 ComponentName (android.content.ComponentName)18 ResolveInfo (android.content.pm.ResolveInfo)9 DataSetObserver (android.database.DataSetObserver)5 PrintManager (android.print.PrintManager)5 PrinterInfo (android.print.PrinterInfo)5 View (android.view.View)5 OnClickListener (android.view.View.OnClickListener)5 AdapterView (android.widget.AdapterView)5 ImageView (android.widget.ImageView)5 ListView (android.widget.ListView)5 SearchView (android.widget.SearchView)5 TextView (android.widget.TextView)5 Nullable (android.annotation.Nullable)4 HashSet (java.util.HashSet)4 Intent (android.content.Intent)1