Search in sources :

Example 1 with GBDeviceApp

use of nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceApp in project Gadgetbridge by Freeyourgadget.

the class GBDeviceAppAdapter method onBindViewHolder.

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    super.onBindViewHolder(holder, position);
    GBDeviceApp deviceApp = mItemList.get(position);
    holder.mDeviceAppVersionAuthorLabel.setText(GBApplication.getContext().getString(R.string.appversion_by_creator, deviceApp.getVersion(), deviceApp.getCreator()));
    // FIXME: replace with small icons
    String appNameLabelText = deviceApp.getName();
    holder.mDeviceAppNameLabel.setText(appNameLabelText);
    switch(deviceApp.getType()) {
        case APP_GENERIC:
            holder.mDeviceImageView.setImageResource(R.drawable.ic_watchapp);
            break;
        case APP_ACTIVITYTRACKER:
            holder.mDeviceImageView.setImageResource(R.drawable.ic_activitytracker);
            break;
        case APP_SYSTEM:
            holder.mDeviceImageView.setImageResource(R.drawable.ic_systemapp);
            break;
        case WATCHFACE:
            holder.mDeviceImageView.setImageResource(R.drawable.ic_watchface);
            break;
        default:
            holder.mDeviceImageView.setImageResource(R.drawable.ic_watchapp);
    }
}
Also used : GBDeviceApp(nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceApp)

Example 2 with GBDeviceApp

use of nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceApp in project Gadgetbridge by Freeyourgadget.

the class AppManagerFragmentInstalledApps method getSystemAppsInCategory.

@Override
protected List<GBDeviceApp> getSystemAppsInCategory() {
    List<GBDeviceApp> systemApps = new ArrayList<>();
    if (mGBDevice.getType() != DeviceType.PEBBLE) {
        return systemApps;
    }
    // systemApps.add(new GBDeviceApp(UUID.fromString("4dab81a6-d2fc-458a-992c-7a1f3b96a970"), "Sports (System)", "Pebble Inc.", "", GBDeviceApp.Type.APP_SYSTEM));
    // systemApps.add(new GBDeviceApp(UUID.fromString("cf1e816a-9db0-4511-bbb8-f60c48ca8fac"), "Golf (System)", "Pebble Inc.", "", GBDeviceApp.Type.APP_SYSTEM));
    systemApps.add(new GBDeviceApp(UUID.fromString("1f03293d-47af-4f28-b960-f2b02a6dd757"), "Music (System)", "Pebble Inc.", "", GBDeviceApp.Type.APP_SYSTEM));
    systemApps.add(new GBDeviceApp(PebbleProtocol.UUID_NOTIFICATIONS, "Notifications (System)", "Pebble Inc.", "", GBDeviceApp.Type.APP_SYSTEM));
    systemApps.add(new GBDeviceApp(UUID.fromString("67a32d95-ef69-46d4-a0b9-854cc62f97f9"), "Alarms (System)", "Pebble Inc.", "", GBDeviceApp.Type.APP_SYSTEM));
    systemApps.add(new GBDeviceApp(UUID.fromString("18e443ce-38fd-47c8-84d5-6d0c775fbe55"), "Watchfaces (System)", "Pebble Inc.", "", GBDeviceApp.Type.APP_SYSTEM));
    if (mGBDevice != null) {
        if (PebbleUtils.hasHealth(mGBDevice.getModel())) {
            systemApps.add(new GBDeviceApp(UUID.fromString("0863fc6a-66c5-4f62-ab8a-82ed00a98b5d"), "Send Text (System)", "Pebble Inc.", "", GBDeviceApp.Type.APP_SYSTEM));
            systemApps.add(new GBDeviceApp(PebbleProtocol.UUID_PEBBLE_HEALTH, "Health (System)", "Pebble Inc.", "", GBDeviceApp.Type.APP_SYSTEM));
        }
        if (PebbleUtils.hasHRM(mGBDevice.getModel())) {
            systemApps.add(new GBDeviceApp(PebbleProtocol.UUID_WORKOUT, "Workout (System)", "Pebble Inc.", "", GBDeviceApp.Type.APP_SYSTEM));
        }
        if (PebbleUtils.getFwMajor(mGBDevice.getFirmwareVersion()) >= 4) {
            systemApps.add(new GBDeviceApp(PebbleProtocol.UUID_WEATHER, "Weather (System)", "Pebble Inc.", "", GBDeviceApp.Type.APP_SYSTEM));
        }
    }
    return systemApps;
}
Also used : ArrayList(java.util.ArrayList) GBDeviceApp(nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceApp)

Example 3 with GBDeviceApp

use of nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceApp in project Gadgetbridge by Freeyourgadget.

the class AbstractAppManagerFragment method getCachedApps.

protected List<GBDeviceApp> getCachedApps(List<UUID> uuids) {
    List<GBDeviceApp> cachedAppList = new ArrayList<>();
    File cachePath;
    try {
        cachePath = mCoordinator.getAppCacheDir();
    } catch (IOException e) {
        LOG.warn("could not get external dir while reading app cache.");
        return cachedAppList;
    }
    File[] files;
    if (uuids == null) {
        files = cachePath.listFiles();
    } else {
        files = new File[uuids.size()];
        int index = 0;
        for (UUID uuid : uuids) {
            files[index++] = new File(uuid.toString() + mCoordinator.getAppFileExtension());
        }
    }
    if (files != null) {
        for (File file : files) {
            if (file.getName().endsWith(mCoordinator.getAppFileExtension())) {
                String baseName = file.getName().substring(0, file.getName().length() - mCoordinator.getAppFileExtension().length());
                // metadata
                File jsonFile = new File(cachePath, baseName + ".json");
                // configuration
                File configFile = new File(cachePath, baseName + "_config.js");
                try {
                    String jsonstring = FileUtils.getStringFromFile(jsonFile);
                    JSONObject json = new JSONObject(jsonstring);
                    cachedAppList.add(new GBDeviceApp(json, configFile.exists()));
                } catch (Exception e) {
                    LOG.info("could not read json file for " + baseName);
                    if (mGBDevice.getType() == DeviceType.PEBBLE) {
                        // FIXME: this is really ugly, if we do not find system uuids in pbw cache add them manually. Also duplicated code
                        switch(baseName) {
                            case "8f3c8686-31a1-4f5f-91f5-01600c9bdc59":
                                cachedAppList.add(new GBDeviceApp(UUID.fromString(baseName), "Tic Toc (System)", "Pebble Inc.", "", GBDeviceApp.Type.WATCHFACE_SYSTEM));
                                break;
                            case "1f03293d-47af-4f28-b960-f2b02a6dd757":
                                cachedAppList.add(new GBDeviceApp(UUID.fromString(baseName), "Music (System)", "Pebble Inc.", "", GBDeviceApp.Type.APP_SYSTEM));
                                break;
                            case "b2cae818-10f8-46df-ad2b-98ad2254a3c1":
                                cachedAppList.add(new GBDeviceApp(UUID.fromString(baseName), "Notifications (System)", "Pebble Inc.", "", GBDeviceApp.Type.APP_SYSTEM));
                                break;
                            case "67a32d95-ef69-46d4-a0b9-854cc62f97f9":
                                cachedAppList.add(new GBDeviceApp(UUID.fromString(baseName), "Alarms (System)", "Pebble Inc.", "", GBDeviceApp.Type.APP_SYSTEM));
                                break;
                            case "18e443ce-38fd-47c8-84d5-6d0c775fbe55":
                                cachedAppList.add(new GBDeviceApp(UUID.fromString(baseName), "Watchfaces (System)", "Pebble Inc.", "", GBDeviceApp.Type.APP_SYSTEM));
                                break;
                            case "0863fc6a-66c5-4f62-ab8a-82ed00a98b5d":
                                cachedAppList.add(new GBDeviceApp(UUID.fromString(baseName), "Send Text (System)", "Pebble Inc.", "", GBDeviceApp.Type.APP_SYSTEM));
                                break;
                        }
                        /*
                            else if (baseName.equals("4dab81a6-d2fc-458a-992c-7a1f3b96a970")) {
                                cachedAppList.add(new GBDeviceApp(UUID.fromString("4dab81a6-d2fc-458a-992c-7a1f3b96a970"), "Sports (System)", "Pebble Inc.", "", GBDeviceApp.Type.APP_SYSTEM));
                            } else if (baseName.equals("cf1e816a-9db0-4511-bbb8-f60c48ca8fac")) {
                                cachedAppList.add(new GBDeviceApp(UUID.fromString("cf1e816a-9db0-4511-bbb8-f60c48ca8fac"), "Golf (System)", "Pebble Inc.", "", GBDeviceApp.Type.APP_SYSTEM));
                            }
                            */
                        if (mGBDevice != null) {
                            if (PebbleUtils.hasHealth(mGBDevice.getModel())) {
                                if (baseName.equals(PebbleProtocol.UUID_PEBBLE_HEALTH.toString())) {
                                    cachedAppList.add(new GBDeviceApp(PebbleProtocol.UUID_PEBBLE_HEALTH, "Health (System)", "Pebble Inc.", "", GBDeviceApp.Type.APP_SYSTEM));
                                    continue;
                                }
                            }
                            if (PebbleUtils.hasHRM(mGBDevice.getModel())) {
                                if (baseName.equals(PebbleProtocol.UUID_WORKOUT.toString())) {
                                    cachedAppList.add(new GBDeviceApp(PebbleProtocol.UUID_WORKOUT, "Workout (System)", "Pebble Inc.", "", GBDeviceApp.Type.APP_SYSTEM));
                                    continue;
                                }
                            }
                            if (PebbleUtils.getFwMajor(mGBDevice.getFirmwareVersion()) >= 4) {
                                if (baseName.equals("3af858c3-16cb-4561-91e7-f1ad2df8725f")) {
                                    cachedAppList.add(new GBDeviceApp(UUID.fromString(baseName), "Kickstart (System)", "Pebble Inc.", "", GBDeviceApp.Type.WATCHFACE_SYSTEM));
                                }
                                if (baseName.equals(PebbleProtocol.UUID_WEATHER.toString())) {
                                    cachedAppList.add(new GBDeviceApp(PebbleProtocol.UUID_WEATHER, "Weather (System)", "Pebble Inc.", "", GBDeviceApp.Type.APP_SYSTEM));
                                }
                            }
                        }
                        if (uuids == null) {
                            cachedAppList.add(new GBDeviceApp(UUID.fromString(baseName), baseName, "N/A", "", GBDeviceApp.Type.UNKNOWN));
                        }
                    }
                }
            }
        }
    }
    return cachedAppList;
}
Also used : JSONObject(org.json.JSONObject) ArrayList(java.util.ArrayList) IOException(java.io.IOException) UUID(java.util.UUID) File(java.io.File) IOException(java.io.IOException) GBDeviceApp(nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceApp)

Example 4 with GBDeviceApp

use of nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceApp in project Gadgetbridge by Freeyourgadget.

the class AbstractAppManagerFragment method onChangedAppOrder.

protected void onChangedAppOrder() {
    List<UUID> uuidList = new ArrayList<>();
    for (GBDeviceApp gbDeviceApp : mGBDeviceAppAdapter.getAppList()) {
        uuidList.add(gbDeviceApp.getUUID());
    }
    AppManagerActivity.rewriteAppOrderFile(getSortFilename(), uuidList);
}
Also used : ArrayList(java.util.ArrayList) UUID(java.util.UUID) GBDeviceApp(nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceApp)

Example 5 with GBDeviceApp

use of nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceApp in project Gadgetbridge by Freeyourgadget.

the class AbstractAppManagerFragment method sendOrderToDevice.

protected void sendOrderToDevice(String concatFilename) {
    ArrayList<UUID> uuids = new ArrayList<>();
    for (GBDeviceApp gbDeviceApp : mGBDeviceAppAdapter.getAppList()) {
        uuids.add(gbDeviceApp.getUUID());
    }
    if (concatFilename != null) {
        ArrayList<UUID> concatUuids = AppManagerActivity.getUuidsFromFile(concatFilename);
        uuids.addAll(concatUuids);
    }
    GBApplication.deviceService().onAppReorder(uuids.toArray(new UUID[uuids.size()]));
}
Also used : ArrayList(java.util.ArrayList) UUID(java.util.UUID) GBDeviceApp(nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceApp)

Aggregations

GBDeviceApp (nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceApp)19 UUID (java.util.UUID)8 IOException (java.io.IOException)5 ArrayList (java.util.ArrayList)5 File (java.io.File)4 JSONObject (org.json.JSONObject)4 JSONException (org.json.JSONException)3 PackageManager (android.content.pm.PackageManager)2 Menu (android.view.Menu)2 MenuItem (android.view.MenuItem)2 PopupMenu (android.widget.PopupMenu)2 BufferedWriter (java.io.BufferedWriter)2 FileOutputStream (java.io.FileOutputStream)2 FileWriter (java.io.FileWriter)2 InputStream (java.io.InputStream)2 Writer (java.io.Writer)2 ByteBuffer (java.nio.ByteBuffer)2 GBDeviceEventAppInfo (nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventAppInfo)2 DialogInterface (android.content.DialogInterface)1 Paint (android.graphics.Paint)1