com.google.android.apps.dashclock.api.host.ExtensionListing

Here are the examples of the java api class com.google.android.apps.dashclock.api.host.ExtensionListing taken from open source projects.

1. ExampleHostActivity#onItemClick()

Project: dashclock
File: ExampleHostActivity.java
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    ExtensionListing info = mAdapter.getItem(position);
    if (info.worldReadable()) {
        List<ComponentName> updatableExtensions = new ArrayList<>();
        updatableExtensions.add(info.componentName());
        mHost.requestExtensionUpdate(updatableExtensions);
    }
}

2. ExtensionManager#setActiveExtensions()

Project: dashclock
File: ExtensionManager.java
/**
     * Replaces the set of active extensions with the given list.
     */
public void setActiveExtensions(Set<ComponentName> extensions) {
    // Join external and internal extensions
    Set<ComponentName> allExtensions = new HashSet<>(getInternalActiveExtensionNames());
    for (ComponentName cn : extensions) {
        if (!allExtensions.contains(cn)) {
            allExtensions.add(cn);
        }
    }
    Map<ComponentName, ExtensionListing> infos = new HashMap<>();
    for (ExtensionListing info : getAvailableExtensions()) {
        infos.put(info.componentName(), info);
    }
    Set<ComponentName> activeExtensionNames = getActiveExtensionNames();
    if (activeExtensionNames.equals(allExtensions)) {
        LOGD(TAG, "No change to list of active extensions.");
        return;
    }
    // Clear cached data for any no-longer-active extensions.
    for (ComponentName cn : activeExtensionNames) {
        if (!allExtensions.contains(cn)) {
            destroyExtensionData(cn);
        }
    }
    // Set the new list of active extensions, loading cached data if necessary.
    List<ExtensionWithData> newActiveExtensions = new ArrayList<>();
    for (ComponentName cn : allExtensions) {
        if (mExtensionInfoMap.containsKey(cn)) {
            newActiveExtensions.add(mExtensionInfoMap.get(cn));
        } else {
            ExtensionWithData ewd = new ExtensionWithData();
            ewd.listing = infos.get(cn);
            if (ewd.listing == null) {
                ewd.listing = new ExtensionListing();
                ewd.listing.componentName(cn);
            }
            ewd.latestData = deserializeExtensionData(ewd.listing.componentName());
            newActiveExtensions.add(ewd);
        }
    }
    mExtensionInfoMap.clear();
    for (ExtensionWithData ewd : newActiveExtensions) {
        mExtensionInfoMap.put(ewd.listing.componentName(), ewd);
    }
    synchronized (mActiveExtensions) {
        mActiveExtensions.clear();
        mActiveExtensions.addAll(newActiveExtensions);
    }
    LOGD(TAG, "List of active extensions has changed.");
    notifyOnChangeListeners(null);
}

3. ExtensionManager#cleanupExtensions()

Project: dashclock
File: ExtensionManager.java
/**
     * De-activates active extensions that are unsupported or are no longer installed.
     */
public boolean cleanupExtensions() {
    Set<ComponentName> availableExtensions = new HashSet<>();
    for (ExtensionListing info : getAvailableExtensions()) {
        // Ensure the extension protocol version is supported. If it isn't, don't allow its use.
        if (!info.compatible()) {
            LOGW(TAG, "Extension '" + info.title() + "' using unsupported protocol version " + info.protocolVersion() + ".");
            continue;
        }
        availableExtensions.add(info.componentName());
    }
    boolean cleanupRequired = false;
    Set<ComponentName> newActiveExtensions = new HashSet<>();
    synchronized (mActiveExtensions) {
        for (ExtensionWithData ewd : mActiveExtensions) {
            if (availableExtensions.contains(ewd.listing.componentName())) {
                newActiveExtensions.add(ewd.listing.componentName());
            } else {
                cleanupRequired = true;
            }
        }
    }
    if (cleanupRequired) {
        setActiveExtensions(newActiveExtensions);
        return true;
    }
    return false;
}

4. DashClockService#findExtensionInfo()

Project: dashclock
File: DashClockService.java
private ExtensionListing findExtensionInfo(ComponentName extension) {
    for (ExtensionListing info : mExtensionManager.getAvailableExtensions()) {
        if (extension.equals(info.componentName())) {
            return info;
        }
    }
    return null;
}

5. ConfigureExtensionsFragment#repopulateAvailableExtensions()

Project: dashclock
File: ConfigureExtensionsFragment.java
private void repopulateAvailableExtensions() {
    Set<ComponentName> selectedExtensions = new HashSet<>();
    selectedExtensions.addAll(mSelectedExtensions);
    boolean selectedExtensionsDirty = false;
    mExtensionListings.clear();
    mAvailableExtensions.clear();
    Resources res = getResources();
    for (ExtensionListing listing : mExtensionManager.getAvailableExtensions()) {
        ComponentName extension = listing.componentName();
        mExtensionListings.put(listing.componentName(), listing);
        ExtensionListing previousListing = mExtensionListings.put(extension, listing);
        if (listing.icon() != 0) {
            Bitmap icon = Utils.loadExtensionIcon(getActivity(), extension, listing.icon(), null, res.getColor(R.color.extension_item_color));
            mExtensionIcons.put(extension, new BitmapDrawable(res, icon));
        }
        if (selectedExtensions.contains(listing.componentName())) {
            if (previousListing == null) {
                // Extension was newly detected
                selectedExtensionsDirty = true;
            }
            if (!listing.compatible()) {
                // If the extension is selected and its protocol isn't supported,
                // then make it available but remove it from the selection.
                mSelectedExtensions.remove(listing.componentName());
                selectedExtensionsDirty = true;
            } else {
                // extensions.
                continue;
            }
        }
        mAvailableExtensions.add(listing.componentName());
    }
    Collections.sort(mAvailableExtensions, new Comparator<ComponentName>() {

        @Override
        public int compare(ComponentName cn1, ComponentName cn2) {
            ExtensionListing listing1 = mExtensionListings.get(cn1);
            ExtensionListing listing2 = mExtensionListings.get(cn2);
            return listing1.title().compareToIgnoreCase(listing2.title());
        }
    });
    showHideAddFabView(true);
    if (selectedExtensionsDirty && mSelectedExtensionsAdapter != null) {
        mSelectedExtensionsAdapter.notifyDataSetChanged();
        mExtensionManager.setInternalActiveExtensions(mSelectedExtensions);
    }
    if (mAddExtensionPopupMenu != null) {
        mAddExtensionPopupMenu.dismiss();
        mAddExtensionPopupMenu = null;
    }
}