From ef230f749ca186bbb5f85aca8ac18ceda4df75ee Mon Sep 17 00:00:00 2001 From: Peter Serwylo Date: Wed, 28 Jun 2017 17:28:32 +1000 Subject: [PATCH] Added "Successfully Installed" status text to updates tab. Also: * Extracted common styles into `@Style/AppListItemStatusText`. * Fixed left margin on older devices (where `layout_marginStart` doesn't exist). --- .../views/apps/AppListItemController.java | 19 +++++++++++----- .../fdroid/views/apps/AppListItemState.java | 22 +++++++++++-------- app/src/main/res/layout/app_list_item.xml | 7 +----- .../res/layout/updateable_app_status_item.xml | 12 +++++----- app/src/main/res/values-v16/styles.xml | 3 +++ app/src/main/res/values/styles.xml | 11 ++++++++++ 6 files changed, 46 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/org/fdroid/fdroid/views/apps/AppListItemController.java b/app/src/main/java/org/fdroid/fdroid/views/apps/AppListItemController.java index 7a2d6dd9f..8c9ce9acb 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/apps/AppListItemController.java +++ b/app/src/main/java/org/fdroid/fdroid/views/apps/AppListItemController.java @@ -66,7 +66,7 @@ public class AppListItemController extends RecyclerView.ViewHolder { private final TextView status; @Nullable - private final TextView downloadReady; + private final TextView appInstallStatus; @Nullable private final TextView installedVersion; @@ -125,7 +125,7 @@ public class AppListItemController extends RecyclerView.ViewHolder { icon = (ImageView) itemView.findViewById(R.id.icon); name = (TextView) itemView.findViewById(R.id.app_name); status = (TextView) itemView.findViewById(R.id.status); - downloadReady = (TextView) itemView.findViewById(R.id.download_ready); + appInstallStatus = (TextView) itemView.findViewById(R.id.app_install_status); installedVersion = (TextView) itemView.findViewById(R.id.installed_version); ignoredStatus = (TextView) itemView.findViewById(R.id.ignored_status); progressBar = (ProgressBar) itemView.findViewById(R.id.progress_bar); @@ -207,8 +207,13 @@ public class AppListItemController extends RecyclerView.ViewHolder { name.setText(viewState.getMainText()); - if (downloadReady != null) { - downloadReady.setVisibility(viewState.shouldShowActionButton() ? View.VISIBLE : View.GONE); + if (appInstallStatus != null) { + if (viewState.shouldShowAppInstallStatusText()) { + appInstallStatus.setVisibility(View.VISIBLE); + appInstallStatus.setText(viewState.getAppInstallStatusText()); + } else { + appInstallStatus.setVisibility(View.GONE); + } } if (actionButton != null) { @@ -290,7 +295,9 @@ public class AppListItemController extends RecyclerView.ViewHolder { CharSequence mainText = activity.getString( R.string.app_list__name__successfully_installed, app.name); - AppListItemState state = new AppListItemState(activity, app).setMainText(mainText); + AppListItemState state = new AppListItemState(activity, app) + .setMainText(mainText) + .setAppInstallStatusText(activity.getString(R.string.notification_content_single_installed)); if (activity.getPackageManager().getLaunchIntentForPackage(app.packageName) != null) { state.showActionButton(activity.getString(R.string.menu_launch)); @@ -317,7 +324,7 @@ public class AppListItemController extends RecyclerView.ViewHolder { return new AppListItemState(activity, app) .setMainText(app.name) .showActionButton(activity.getString(actionButtonLabel)) - .setShowDownloadReady(); + .setAppInstallStatusText(activity.getString(R.string.app_list_download_ready)); } private AppListItemState getViewStateDefault(@NonNull App app) { diff --git a/app/src/main/java/org/fdroid/fdroid/views/apps/AppListItemState.java b/app/src/main/java/org/fdroid/fdroid/views/apps/AppListItemState.java index 4e9e5be0a..89b79a807 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/apps/AppListItemState.java +++ b/app/src/main/java/org/fdroid/fdroid/views/apps/AppListItemState.java @@ -15,7 +15,7 @@ public class AppListItemState { private final Context context; private final App app; private CharSequence mainText = null; - private boolean showDownloadReady = false; + private CharSequence appInstallStatusText = null; private CharSequence actionButtonText = null; private int progressCurrent = -1; private int progressMax = -1; @@ -30,13 +30,13 @@ public class AppListItemState { return this; } - public AppListItemState setShowDownloadReady() { - this.showDownloadReady = true; + public AppListItemState showActionButton(@NonNull CharSequence label) { + actionButtonText = label; return this; } - public AppListItemState showActionButton(@NonNull CharSequence label) { - actionButtonText = label; + public AppListItemState setAppInstallStatusText(@NonNull CharSequence text) { + appInstallStatusText = text; return this; } @@ -60,10 +60,6 @@ public class AppListItemState { return installable && shouldAllow && !shouldShowActionButton() && !showProgress(); } - public boolean shouldShowDownloadReady() { - return showDownloadReady; - } - public boolean shouldShowActionButton() { return actionButtonText != null; } @@ -88,6 +84,14 @@ public class AppListItemState { return progressMax; } + public boolean shouldShowAppInstallStatusText() { + return appInstallStatusText != null; + } + + public CharSequence getAppInstallStatusText() { + return appInstallStatusText; + } + /** * Sets the text/visibility of the {@link R.id#status} {@link TextView} based on whether the app: * * Is compatible with the users device diff --git a/app/src/main/res/layout/app_list_item.xml b/app/src/main/res/layout/app_list_item.xml index a88464c45..76f60c7c2 100644 --- a/app/src/main/res/layout/app_list_item.xml +++ b/app/src/main/res/layout/app_list_item.xml @@ -46,12 +46,7 @@ android:layout_height="wrap_content" android:layout_marginTop="8dp" tools:text="Installed" - android:textStyle="italic" - android:textSize="14sp" - android:textColor="#424242" - android:maxLines="1" - android:ellipsize="end" - android:fontFamily="sans-serif-light" + style="@style/AppListItemStatusText" app:layout_constraintTop_toBottomOf="@+id/app_name" app:layout_constraintStart_toEndOf="@+id/icon" android:layout_marginStart="8dp" diff --git a/app/src/main/res/layout/updateable_app_status_item.xml b/app/src/main/res/layout/updateable_app_status_item.xml index d4136d7de..e67e47bec 100644 --- a/app/src/main/res/layout/updateable_app_status_item.xml +++ b/app/src/main/res/layout/updateable_app_status_item.xml @@ -36,20 +36,18 @@ app:layout_constraintBottom_toBottomOf="parent" android:layout_marginBottom="8dp" android:layout_marginStart="8dp" + android:layout_marginLeft="8dp" android:layout_marginEnd="8dp" + android:layout_marginRight="8dp" android:layout_marginTop="8dp" app:layout_constraintVertical_bias="0.333" /> diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index bb040bf38..56e10ffd1 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -121,6 +121,17 @@ ?attr/lightGrayTextColor + + +