1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-11-10 12:09:27 +01:00

Pebble: allow to delete apps from pbw cache

Also remove delete entries from all system apps' context menus (not only health)
This commit is contained in:
Andreas Shimokawa 2016-05-22 23:32:25 +02:00
parent 30883ab244
commit 80cf9fa8fe
3 changed files with 36 additions and 5 deletions

View File

@ -58,7 +58,7 @@ public class AppManagerActivity extends GBActivity {
boolean found = false; boolean found = false;
for (final ListIterator<GBDeviceApp> iter = appList.listIterator(); iter.hasNext(); ) { for (final ListIterator<GBDeviceApp> iter = appList.listIterator(); iter.hasNext(); ) {
final GBDeviceApp app = iter.next(); final GBDeviceApp app = iter.next();
if (app.getName().equals(appName) && app.getCreator().equals(appCreator)) { if (app.getUUID().equals(uuid)) {
app.setOnDevice(true); app.setOnDevice(true);
iter.set(app); iter.set(app);
found = true; found = true;
@ -181,11 +181,13 @@ public class AppManagerActivity extends GBActivity {
if (!selectedApp.isInCache()) { if (!selectedApp.isInCache()) {
menu.removeItem(R.id.appmanager_app_reinstall); menu.removeItem(R.id.appmanager_app_reinstall);
menu.removeItem(R.id.appmanager_app_delete_cache);
} }
if (!PebbleProtocol.UUID_PEBBLE_HEALTH.equals(selectedApp.getUUID())) { if (!PebbleProtocol.UUID_PEBBLE_HEALTH.equals(selectedApp.getUUID())) {
menu.removeItem(R.id.appmanager_health_activate); menu.removeItem(R.id.appmanager_health_activate);
menu.removeItem(R.id.appmanager_health_deactivate); menu.removeItem(R.id.appmanager_health_deactivate);
} else if (PebbleProtocol.UUID_PEBBLE_HEALTH.equals(selectedApp.getUUID())) { }
if (selectedApp.getType() == GBDeviceApp.Type.APP_SYSTEM) {
menu.removeItem(R.id.appmanager_app_delete); menu.removeItem(R.id.appmanager_app_delete);
} }
if (!selectedApp.isConfigurable()) { if (!selectedApp.isConfigurable()) {
@ -194,19 +196,45 @@ public class AppManagerActivity extends GBActivity {
menu.setHeaderTitle(selectedApp.getName()); menu.setHeaderTitle(selectedApp.getName());
} }
private void removeAppFromList(UUID uuid) {
for (final ListIterator<GBDeviceApp> iter = appList.listIterator(); iter.hasNext(); ) {
final GBDeviceApp app = iter.next();
if (app.getUUID().equals(uuid)) {
iter.remove();
mGBDeviceAppAdapter.notifyDataSetChanged();
break;
}
}
}
@Override @Override
public boolean onContextItemSelected(MenuItem item) { public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) { switch (item.getItemId()) {
case R.id.appmanager_health_deactivate: case R.id.appmanager_health_deactivate:
case R.id.appmanager_app_delete_cache:
File cachedFile = null;
boolean deleteSuccess = true;
try {
cachedFile = new File(FileUtils.getExternalFilesDir().getPath() + "/pbw-cache/" + selectedApp.getUUID() + ".pbw");
deleteSuccess = cachedFile.delete();
} catch (IOException e) {
LOG.warn("could not get external dir while trying to access pbw cache.");
}
if (!deleteSuccess) {
LOG.warn("could not delete file from pbw cache: " + cachedFile.toString());
}
// fall through
case R.id.appmanager_app_delete: case R.id.appmanager_app_delete:
GBApplication.deviceService().onAppDelete(selectedApp.getUUID()); UUID uuid = selectedApp.getUUID();
GBApplication.deviceService().onAppDelete(uuid);
removeAppFromList(uuid);
return true; return true;
case R.id.appmanager_app_reinstall: case R.id.appmanager_app_reinstall:
File cachePath; File cachePath;
try { try {
cachePath = new File(FileUtils.getExternalFilesDir().getPath() + "/pbw-cache/" + selectedApp.getUUID() + ".pbw"); cachePath = new File(FileUtils.getExternalFilesDir().getPath() + "/pbw-cache/" + selectedApp.getUUID() + ".pbw");
} catch (IOException e) { } catch (IOException e) {
LOG.warn("could not get external dir while reading pbw cache."); LOG.warn("could not get external dir while trying to access pbw cache.");
return true; return true;
} }
GBApplication.deviceService().onInstallApp(Uri.fromFile(cachePath)); GBApplication.deviceService().onInstallApp(Uri.fromFile(cachePath));

View File

@ -6,6 +6,9 @@
<item <item
android:id="@+id/appmanager_app_delete" android:id="@+id/appmanager_app_delete"
android:title="@string/appmananger_app_delete"/> android:title="@string/appmananger_app_delete"/>
<item
android:id="@+id/appmanager_app_delete_cache"
android:title="@string/appmananger_app_delete_cache"/>
<item <item
android:id="@+id/appmanager_health_activate" android:id="@+id/appmanager_health_activate"
android:title="@string/appmanager_health_activate"/> android:title="@string/appmanager_health_activate"/>

View File

@ -17,6 +17,7 @@
<!-- Strings related to AppManager --> <!-- Strings related to AppManager -->
<string name="title_activity_appmanager">App Manager</string> <string name="title_activity_appmanager">App Manager</string>
<string name="appmananger_app_delete">Delete</string> <string name="appmananger_app_delete">Delete</string>
<string name="appmananger_app_delete_cache">Delete and remove from cache</string>
<!-- Strings related to AppBlacklist --> <!-- Strings related to AppBlacklist -->
<string name="title_activity_appblacklist">Notification Blacklist</string> <string name="title_activity_appblacklist">Notification Blacklist</string>
@ -251,5 +252,4 @@
<string name="charts_legend_heartrate">Heart Rate</string> <string name="charts_legend_heartrate">Heart Rate</string>
<string name="live_activity_heart_rate">Heart Rate</string> <string name="live_activity_heart_rate">Heart Rate</string>
<string name="pref_title_general_autocreonnect">Reconnect automatically</string> <string name="pref_title_general_autocreonnect">Reconnect automatically</string>
</resources> </resources>