turn inline Install button into Cancel button during download

This commit is contained in:
Hans-Christoph Steiner 2019-05-15 23:04:39 +02:00
parent bc14e62e46
commit 89f5127f6d
2 changed files with 34 additions and 17 deletions

View File

@ -41,6 +41,7 @@ import org.fdroid.fdroid.data.App;
import org.fdroid.fdroid.data.AppProvider; import org.fdroid.fdroid.data.AppProvider;
import org.fdroid.fdroid.data.Repo; import org.fdroid.fdroid.data.Repo;
import org.fdroid.fdroid.data.Schema.AppMetadataTable; import org.fdroid.fdroid.data.Schema.AppMetadataTable;
import org.fdroid.fdroid.installer.InstallManagerService;
import org.fdroid.fdroid.localrepo.SwapView; import org.fdroid.fdroid.localrepo.SwapView;
import org.fdroid.fdroid.net.Downloader; import org.fdroid.fdroid.net.Downloader;
import org.fdroid.fdroid.net.DownloaderService; import org.fdroid.fdroid.net.DownloaderService;
@ -210,7 +211,6 @@ public class SwapSuccessView extends SwapView implements LoaderManager.LoaderCal
default: default:
throw new RuntimeException("intent action not handled!"); throw new RuntimeException("intent action not handled!");
} }
} }
}; };
@ -261,6 +261,25 @@ public class SwapSuccessView extends SwapView implements LoaderManager.LoaderCal
resetView(); resetView();
} }
private final OnClickListener cancelListener = new OnClickListener() {
@Override
public void onClick(View v) {
if (apk != null) {
InstallManagerService.cancel(getContext(), apk.getCanonicalUrl());
}
}
};
private final OnClickListener installListener = new OnClickListener() {
@Override
public void onClick(View v) {
if (apk != null && (app.hasUpdates() || app.compatible)) {
getActivity().install(app, apk);
showProgress();
}
}
};
private void resetView() { private void resetView() {
if (app == null) { if (app == null) {
@ -279,6 +298,7 @@ public class SwapSuccessView extends SwapView implements LoaderManager.LoaderCal
if (app.hasUpdates()) { if (app.hasUpdates()) {
btnInstall.setText(R.string.menu_upgrade); btnInstall.setText(R.string.menu_upgrade);
btnInstall.setVisibility(View.VISIBLE); btnInstall.setVisibility(View.VISIBLE);
btnInstall.setOnClickListener(installListener);
statusIncompatible.setVisibility(View.GONE); statusIncompatible.setVisibility(View.GONE);
statusInstalled.setVisibility(View.GONE); statusInstalled.setVisibility(View.GONE);
} else if (app.isInstalled(getContext())) { } else if (app.isInstalled(getContext())) {
@ -289,29 +309,26 @@ public class SwapSuccessView extends SwapView implements LoaderManager.LoaderCal
btnInstall.setVisibility(View.GONE); btnInstall.setVisibility(View.GONE);
statusIncompatible.setVisibility(View.VISIBLE); statusIncompatible.setVisibility(View.VISIBLE);
statusInstalled.setVisibility(View.GONE); statusInstalled.setVisibility(View.GONE);
} else if (progressView.getVisibility() == View.VISIBLE) {
btnInstall.setText(R.string.cancel);
btnInstall.setVisibility(View.VISIBLE);
btnInstall.setOnClickListener(cancelListener);
statusIncompatible.setVisibility(View.GONE);
statusInstalled.setVisibility(View.GONE);
} else { } else {
btnInstall.setText(R.string.menu_install); btnInstall.setText(R.string.menu_install);
btnInstall.setVisibility(View.VISIBLE); btnInstall.setVisibility(View.VISIBLE);
btnInstall.setOnClickListener(installListener);
statusIncompatible.setVisibility(View.GONE); statusIncompatible.setVisibility(View.GONE);
statusInstalled.setVisibility(View.GONE); statusInstalled.setVisibility(View.GONE);
} }
OnClickListener installListener = new OnClickListener() {
@Override
public void onClick(View v) {
if (apk != null && (app.hasUpdates() || app.compatible)) {
getActivity().install(app, apk);
showProgress();
}
}
};
btnInstall.setOnClickListener(installListener);
} }
private void showProgress() { private void showProgress() {
btnInstall.setText(R.string.cancel);
btnInstall.setVisibility(View.VISIBLE);
btnInstall.setOnClickListener(cancelListener);
progressView.setVisibility(View.VISIBLE); progressView.setVisibility(View.VISIBLE);
btnInstall.setVisibility(View.GONE);
statusInstalled.setVisibility(View.GONE); statusInstalled.setVisibility(View.GONE);
statusIncompatible.setVisibility(View.GONE); statusIncompatible.setVisibility(View.GONE);
} }

View File

@ -82,14 +82,14 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:indeterminate="true" android:indeterminate="true"
style="?android:attr/progressBarStyleHorizontal" style="?android:attr/progressBarStyleHorizontal"
android:layout_toEndOf="@android:id/icon"
android:paddingStart="5dp" android:paddingStart="5dp"
android:paddingLeft="5dp" android:paddingLeft="5dp"
android:paddingEnd="5dp" android:paddingEnd="5dp"
android:paddingRight="5dp" android:paddingRight="5dp"
android:layout_toEndOf="@android:id/icon"
android:layout_toRightOf="@android:id/icon" android:layout_toRightOf="@android:id/icon"
android:layout_alignParentRight="true" android:layout_toStartOf="@+id/button_or_text"
android:layout_alignParentEnd="true" android:layout_toLeftOf="@+id/button_or_text"
android:layout_below="@+id/name" android:layout_below="@+id/name"
/> />