diff --git a/app/build.gradle b/app/build.gradle
index 61e7482a1..46dd72ca6 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -76,6 +76,7 @@ dependencies {
implementation 'androidx.preference:preference:1.1.0'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0'
implementation 'com.google.android.material:material:1.1.0-alpha10'
+ implementation 'androidx.palette:palette:1.0.0'
//Utils
implementation 'androidx.annotation:annotation:1.1.0'
implementation 'org.apache.commons:commons-text:1.4'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ea20b0d1b..efa5a9b53 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -170,6 +170,9 @@
+
\ No newline at end of file
diff --git a/app/src/main/java/com/aurora/store/activity/AuroraActivity.java b/app/src/main/java/com/aurora/store/activity/AuroraActivity.java
index 7b4542e70..fc4a85508 100644
--- a/app/src/main/java/com/aurora/store/activity/AuroraActivity.java
+++ b/app/src/main/java/com/aurora/store/activity/AuroraActivity.java
@@ -21,6 +21,7 @@
package com.aurora.store.activity;
import android.Manifest;
+import android.app.StatusBarManager;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
@@ -85,7 +86,6 @@ public class AuroraActivity extends AppCompatActivity {
ButterKnife.bind(this);
fragmentCur = Util.getDefaultTab(this);
onNewIntent(getIntent());
-
if (!PrefUtil.getBoolean(this, Constants.PREFERENCE_DO_NOT_SHOW_INTRO)) {
PrefUtil.putBoolean(this, Constants.PREFERENCE_DO_NOT_SHOW_INTRO, true);
startActivity(new Intent(this, IntroActivity.class));
diff --git a/app/src/main/java/com/aurora/store/adapter/FavouriteAppsAdapter.java b/app/src/main/java/com/aurora/store/adapter/FavouriteAppsAdapter.java
index 5544d3838..24620980c 100644
--- a/app/src/main/java/com/aurora/store/adapter/FavouriteAppsAdapter.java
+++ b/app/src/main/java/com/aurora/store/adapter/FavouriteAppsAdapter.java
@@ -34,6 +34,8 @@ import com.aurora.store.model.App;
import com.aurora.store.utility.PackageUtil;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
+import com.bumptech.glide.load.resource.bitmap.CenterCrop;
+import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
import com.bumptech.glide.request.RequestOptions;
@@ -104,6 +106,7 @@ public class FavouriteAppsAdapter extends RecyclerView.Adapter {
.load(app.getIconInfo().getUrl())
.apply(new RequestOptions().diskCacheStrategy(DiskCacheStrategy.ALL))
.transition(new DrawableTransitionOptions().crossFade())
+ .transforms(new CenterCrop(), new RoundedCorners(25))
.into(holder.AppIcon);
holder.setChecked(isSelected(appList.get(position)));
diff --git a/app/src/main/java/com/aurora/store/adapter/FeaturedAppsAdapter.java b/app/src/main/java/com/aurora/store/adapter/FeaturedAppsAdapter.java
index 7fcd89bbd..a1e43a9e7 100644
--- a/app/src/main/java/com/aurora/store/adapter/FeaturedAppsAdapter.java
+++ b/app/src/main/java/com/aurora/store/adapter/FeaturedAppsAdapter.java
@@ -110,8 +110,8 @@ public class FeaturedAppsAdapter extends RecyclerView.Adapter() {
@Override
public void onResourceReady(@NonNull Drawable drawable, @Nullable Transition super Drawable> transition) {
holder.imageView.getLayoutParams().width = drawable.getIntrinsicWidth();
- holder.imageView.getLayoutParams().height = ViewUtil.dpToPx(context, 180);
+ holder.imageView.getLayoutParams().height = drawable.getIntrinsicHeight();
holder.imageView.setImageDrawable(drawable);
}
});
diff --git a/app/src/main/java/com/aurora/store/adapter/TopCategoriesAdapter.java b/app/src/main/java/com/aurora/store/adapter/TopCategoriesAdapter.java
index 22fc9ff3e..c037d8fd5 100644
--- a/app/src/main/java/com/aurora/store/adapter/TopCategoriesAdapter.java
+++ b/app/src/main/java/com/aurora/store/adapter/TopCategoriesAdapter.java
@@ -34,7 +34,6 @@ import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
import androidx.core.graphics.ColorUtils;
import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.recyclerview.widget.RecyclerView;
@@ -43,6 +42,7 @@ import com.aurora.store.SharedPreferencesTranslator;
import com.aurora.store.fragment.CategoriesFragment;
import com.aurora.store.fragment.CategoryAppsFragment;
import com.aurora.store.fragment.HomeFragment;
+import com.aurora.store.utility.ColorUtil;
import com.aurora.store.utility.Util;
import com.aurora.store.utility.ViewUtil;
@@ -90,9 +90,9 @@ public class TopCategoriesAdapter extends RecyclerView.Adapter getSubCategoryFragment(CategoriesFragment.FAMILY));
@@ -120,7 +120,6 @@ public class TopCategoriesAdapter extends RecyclerView.Adapter {
diff --git a/app/src/main/java/com/aurora/store/fragment/details/AbstractHelper.java b/app/src/main/java/com/aurora/store/fragment/details/AbstractHelper.java
index 4248e5ef7..eb15a4bd4 100644
--- a/app/src/main/java/com/aurora/store/fragment/details/AbstractHelper.java
+++ b/app/src/main/java/com/aurora/store/fragment/details/AbstractHelper.java
@@ -22,11 +22,17 @@ package com.aurora.store.fragment.details;
import android.content.Context;
import android.content.Intent;
+import android.content.res.ColorStateList;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
+import android.view.ViewGroup;
import android.widget.TextView;
+import androidx.annotation.ColorInt;
+import androidx.annotation.IdRes;
+import androidx.core.graphics.ColorUtils;
+import androidx.core.view.ViewCompat;
import androidx.fragment.app.FragmentTransaction;
import com.aurora.store.Constants;
@@ -154,4 +160,35 @@ public abstract class AbstractHelper {
Log.e("No WebView found !");
}
}
+
+ protected void paintButton(@IdRes int buttonId, @ColorInt int color) {
+ android.widget.Button button = view.findViewById(buttonId);
+ if (button != null)
+ ViewCompat.setBackgroundTintList(button, ColorStateList.valueOf(color));
+ }
+
+ protected void paintTextView(@IdRes int textViewId, @ColorInt int color) {
+ TextView textView = view.findViewById(textViewId);
+ if (textView != null)
+ textView.setTextColor(color);
+ }
+
+ protected void paintTextViewBg(@IdRes int textViewId, @ColorInt int color, int alpha) {
+ TextView textView = view.findViewById(textViewId);
+ if (textView != null)
+ textView.setBackgroundColor(ColorUtils.setAlphaComponent(color, alpha));
+ }
+
+ protected void paintLayout(@IdRes int viewId, @ColorInt int color) {
+ ViewGroup viewGroup = view.findViewById(viewId);
+ if (viewGroup != null)
+ viewGroup.setBackgroundColor(color);
+ }
+
+ protected void paintLayout(@IdRes int viewId, @ColorInt int color, int alpha) {
+ ViewGroup viewGroup = view.findViewById(viewId);
+ if (viewGroup != null)
+ viewGroup.setBackgroundColor(ColorUtils.setAlphaComponent(color, alpha));
+ }
+
}
diff --git a/app/src/main/java/com/aurora/store/fragment/details/ActionButton.java b/app/src/main/java/com/aurora/store/fragment/details/ActionButton.java
index 7bb27ec13..4cd6f1106 100644
--- a/app/src/main/java/com/aurora/store/fragment/details/ActionButton.java
+++ b/app/src/main/java/com/aurora/store/fragment/details/ActionButton.java
@@ -121,7 +121,7 @@ public class ActionButton extends AbstractHelper {
@Override
public void draw() {
- boolean isInstalled = PackageUtil.isInstalled(context, app);
+ boolean isInstalled = app.isInstalled();
hashCode = app.getPackageName().hashCode();
ViewUtil.setVisibility(btnNegative, isInstalled);
btnNegative.setOnClickListener(uninstallAppListener());
diff --git a/app/src/main/java/com/aurora/store/fragment/details/GeneralDetails.java b/app/src/main/java/com/aurora/store/fragment/details/GeneralDetails.java
index 64c3e2ac4..6c16d802a 100644
--- a/app/src/main/java/com/aurora/store/fragment/details/GeneralDetails.java
+++ b/app/src/main/java/com/aurora/store/fragment/details/GeneralDetails.java
@@ -22,26 +22,43 @@ package com.aurora.store.fragment.details;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
+import android.content.res.ColorStateList;
+import android.graphics.Bitmap;
+import android.graphics.Color;
import android.text.Html;
import android.text.TextUtils;
import android.text.format.Formatter;
import android.text.util.Linkify;
import android.view.View;
+import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
+import androidx.annotation.Nullable;
+import androidx.core.graphics.ColorUtils;
+import androidx.palette.graphics.Palette;
+
import com.aurora.store.GlideApp;
import com.aurora.store.R;
import com.aurora.store.fragment.DetailsFragment;
import com.aurora.store.manager.CategoryManager;
import com.aurora.store.model.App;
import com.aurora.store.sheet.MoreInfoSheet;
+import com.aurora.store.utility.ColorUtil;
import com.aurora.store.utility.Log;
import com.aurora.store.utility.TextUtil;
+import com.aurora.store.utility.ThemeUtil;
import com.aurora.store.utility.Util;
import com.aurora.store.utility.ViewUtil;
-import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions;
+import com.bumptech.glide.load.DataSource;
+import com.bumptech.glide.load.engine.GlideException;
+import com.bumptech.glide.load.resource.bitmap.BitmapTransitionOptions;
+import com.bumptech.glide.load.resource.bitmap.CenterCrop;
+import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
+import com.bumptech.glide.request.RequestListener;
+import com.bumptech.glide.request.target.Target;
+import com.google.android.material.button.MaterialButton;
import com.google.android.material.chip.Chip;
import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
@@ -58,10 +75,14 @@ public class GeneralDetails extends AbstractHelper {
ImageView appIcon;
@BindView(R.id.devName)
TextView txtDevName;
- @BindView(R.id.showLessMoreTxt)
- TextView showLessMoreTxt;
+ @BindView(R.id.app_desc_short)
+ TextView txtDescShort;
+ @BindView(R.id.img_more)
+ ImageButton imgMore;
@BindView(R.id.versionString)
TextView app_version;
+ @BindView(R.id.txt_new)
+ TextView txtNew;
@BindView(R.id.txt_updated)
Chip txtUpdated;
@BindView(R.id.txt_google_dependencies)
@@ -76,6 +97,10 @@ public class GeneralDetails extends AbstractHelper {
Chip category;
@BindView(R.id.developer_layout)
LinearLayout developerLayout;
+ @BindView(R.id.btn_positive)
+ MaterialButton btnPositive;
+ @BindView(R.id.btn_negative)
+ MaterialButton btnNegative;
public GeneralDetails(DetailsFragment fragment, App app) {
super(fragment, app);
@@ -95,8 +120,22 @@ public class GeneralDetails extends AbstractHelper {
private void drawAppBadge() {
if (view != null) {
GlideApp.with(context)
+ .asBitmap()
.load(app.getIconInfo().getUrl())
- .transition(new DrawableTransitionOptions().crossFade())
+ .transition(new BitmapTransitionOptions().crossFade())
+ .transforms(new CenterCrop(), new RoundedCorners(50))
+ .listener(new RequestListener() {
+ @Override
+ public boolean onLoadFailed(@Nullable GlideException e, Object model, Target target, boolean isFirstResource) {
+ return false;
+ }
+
+ @Override
+ public boolean onResourceReady(Bitmap resource, Object model, Target target, DataSource dataSource, boolean isFirstResource) {
+ getPalette(resource);
+ return false;
+ }
+ })
.into(appIcon);
setText(view, R.id.displayName, app.getDisplayName());
setText(view, R.id.packageName, app.getPackageName());
@@ -106,6 +145,47 @@ public class GeneralDetails extends AbstractHelper {
}
}
+ private void getPalette(Bitmap bitmap) {
+ Palette.from(bitmap).generate(palette -> {
+ if (palette != null)
+ paintEmAll(palette);
+ });
+ }
+
+ private void paintEmAll(Palette palette) {
+ Palette.Swatch swatch = palette.getDarkVibrantSwatch();
+ int colorPrimary = Color.GRAY;
+ int colorPrimaryText = Color.BLACK;
+
+ //Make sure we get a fallback swatch if DarkVibrantSwatch is not available
+ if (swatch == null)
+ swatch = palette.getVibrantSwatch();
+
+ //Make sure we get another fallback swatch if VibrantSwatch is not available
+ if (swatch == null)
+ swatch = palette.getDominantSwatch();
+
+ if (swatch != null) {
+ colorPrimary = swatch.getRgb();
+ colorPrimaryText = ColorUtil.manipulateColor(colorPrimary, 0.3f);
+ }
+
+ if (ColorUtil.isColorLight(colorPrimary))
+ btnPositive.setTextColor(Color.BLACK);
+ else
+ btnPositive.setTextColor(Color.WHITE);
+
+ btnPositive.setBackgroundColor(colorPrimary);
+ btnPositive.setStrokeColor(ColorStateList.valueOf(colorPrimary));
+
+ if (ThemeUtil.isLightTheme(context)) {
+ txtDevName.setTextColor(colorPrimaryText);
+ txtNew.setTextColor(colorPrimaryText);
+ txtDescShort.setTextColor(colorPrimaryText);
+ txtDescShort.setBackgroundTintList(ColorStateList.valueOf(ColorUtils.setAlphaComponent(colorPrimary, 60)));
+ }
+ }
+
private void drawGeneralDetails() {
if (context != null) {
if (app.isEarlyAccess()) {
@@ -146,9 +226,9 @@ public class GeneralDetails extends AbstractHelper {
private void drawChanges() {
String changes = app.getChanges();
if (TextUtil.isEmpty(changes))
- setText(view, R.id.changes_upper, context.getString(R.string.details_no_changes));
+ setText(view, R.id.txt_changelog, context.getString(R.string.details_no_changes));
else
- setText(view, R.id.changes_upper, Html.fromHtml(changes).toString());
+ setText(view, R.id.txt_changelog, Html.fromHtml(changes).toString());
show(view, R.id.changes_container);
}
@@ -228,15 +308,15 @@ public class GeneralDetails extends AbstractHelper {
private void drawDescription() {
if (context != null) {
if (TextUtils.isEmpty(app.getDescription())) {
- hide(view, R.id.more_card);
+ hide(view, R.id.more_layout);
} else {
- show(view, R.id.more_card);
+ show(view, R.id.more_layout);
}
}
}
private void setupReadMore() {
- showLessMoreTxt.setOnClickListener(v -> {
+ imgMore.setOnClickListener(v -> {
MoreInfoSheet mDetailsFragmentMore = new MoreInfoSheet();
mDetailsFragmentMore.setApp(app);
mDetailsFragmentMore.show(fragment.getChildFragmentManager(), "MORE");
diff --git a/app/src/main/java/com/aurora/store/fragment/details/Reviews.java b/app/src/main/java/com/aurora/store/fragment/details/Reviews.java
index fe13cc23b..e70067f54 100644
--- a/app/src/main/java/com/aurora/store/fragment/details/Reviews.java
+++ b/app/src/main/java/com/aurora/store/fragment/details/Reviews.java
@@ -24,6 +24,7 @@ import android.content.Context;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RatingBar;
@@ -61,8 +62,8 @@ import io.reactivex.schedulers.Schedulers;
public class Reviews extends AbstractHelper {
- @BindView(R.id.txt_readAll)
- TextView txtReadAll;
+ @BindView(R.id.img_review)
+ ImageButton imgReview;
@BindView(R.id.average_rating)
TextView txtAverageRating;
@BindView(R.id.count_stars)
@@ -250,7 +251,7 @@ public class Reviews extends AbstractHelper {
}
private void setupLoadMore() {
- txtReadAll.setOnClickListener(v -> {
+ imgReview.setOnClickListener(v -> {
ReviewsBottomSheet mDetailsFragmentMore = new ReviewsBottomSheet(app);
mDetailsFragmentMore.show(fragment.getChildFragmentManager(), "REVIEWS");
});
diff --git a/app/src/main/java/com/aurora/store/fragment/details/Video.java b/app/src/main/java/com/aurora/store/fragment/details/Video.java
index 27dae2ce9..39a857e63 100644
--- a/app/src/main/java/com/aurora/store/fragment/details/Video.java
+++ b/app/src/main/java/com/aurora/store/fragment/details/Video.java
@@ -91,7 +91,7 @@ public class Video extends AbstractHelper {
GlideApp
.with(context)
.load(jsonObject.getString("thumbnail_url"))
- .transforms(new CenterCrop(), new RoundedCorners(15))
+ .transforms(new CenterCrop(), new RoundedCorners(25))
.transition(new DrawableTransitionOptions().crossFade())
.into(video_thumbnail);
}, throwable -> {
diff --git a/app/src/main/java/com/aurora/store/provider/AuroraSuggestionProvider.java b/app/src/main/java/com/aurora/store/provider/AuroraSuggestionProvider.java
index 36982d847..668ad9969 100644
--- a/app/src/main/java/com/aurora/store/provider/AuroraSuggestionProvider.java
+++ b/app/src/main/java/com/aurora/store/provider/AuroraSuggestionProvider.java
@@ -131,6 +131,6 @@ public class AuroraSuggestionProvider extends ContentProvider {
}
private Object[] constructSuggestionRow(SearchSuggestEntry entry, int id) {
- return new Object[]{id, entry.getSuggestedQuery(), entry.getSuggestedQuery(), R.drawable.ic_search};
+ return new Object[]{id, entry.getSuggestedQuery(), entry.getSuggestedQuery(), R.drawable.ic_round_search};
}
}
diff --git a/app/src/main/java/com/aurora/store/sheet/AppMenuSheet.java b/app/src/main/java/com/aurora/store/sheet/AppMenuSheet.java
index ff80c4d4f..ec6ac165b 100644
--- a/app/src/main/java/com/aurora/store/sheet/AppMenuSheet.java
+++ b/app/src/main/java/com/aurora/store/sheet/AppMenuSheet.java
@@ -47,7 +47,7 @@ import com.aurora.store.model.App;
import com.aurora.store.utility.ApkCopier;
import com.aurora.store.utility.Log;
import com.aurora.store.utility.PackageUtil;
-import com.aurora.store.view.CustomBottomSheetDialogFragment;
+import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import com.google.android.material.button.MaterialButton;
import butterknife.BindView;
@@ -57,7 +57,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
-public class AppMenuSheet extends CustomBottomSheetDialogFragment {
+public class AppMenuSheet extends BottomSheetDialogFragment {
@BindView(R.id.menu_title)
TextView txtTitle;
@@ -148,7 +148,7 @@ public class AppMenuSheet extends CustomBottomSheetDialogFragment {
});
btnLocal.setOnClickListener(v -> {
- disposable.add(Observable.fromCallable(() -> new ApkCopier(context,app)
+ disposable.add(Observable.fromCallable(() -> new ApkCopier(context, app)
.copy())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
diff --git a/app/src/main/java/com/aurora/store/sheet/DownloadMenuSheet.java b/app/src/main/java/com/aurora/store/sheet/DownloadMenuSheet.java
index f68afb906..b9e1a5c58 100644
--- a/app/src/main/java/com/aurora/store/sheet/DownloadMenuSheet.java
+++ b/app/src/main/java/com/aurora/store/sheet/DownloadMenuSheet.java
@@ -34,7 +34,7 @@ import androidx.annotation.Nullable;
import com.aurora.store.R;
import com.aurora.store.download.DownloadManager;
import com.aurora.store.utility.Util;
-import com.aurora.store.view.CustomBottomSheetDialogFragment;
+import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import com.google.android.material.button.MaterialButton;
import com.tonyodev.fetch2.Download;
import com.tonyodev.fetch2.Fetch;
@@ -43,7 +43,7 @@ import com.tonyodev.fetch2.Status;
import butterknife.BindView;
import butterknife.ButterKnife;
-public class DownloadMenuSheet extends CustomBottomSheetDialogFragment {
+public class DownloadMenuSheet extends BottomSheetDialogFragment {
@BindView(R.id.menu_title)
TextView downloadTitle;
diff --git a/app/src/main/java/com/aurora/store/sheet/ExodusBottomSheet.java b/app/src/main/java/com/aurora/store/sheet/ExodusBottomSheet.java
index 77750d9ba..f0e48541f 100644
--- a/app/src/main/java/com/aurora/store/sheet/ExodusBottomSheet.java
+++ b/app/src/main/java/com/aurora/store/sheet/ExodusBottomSheet.java
@@ -40,7 +40,8 @@ import com.aurora.store.adapter.ExodusAdapter;
import com.aurora.store.model.ExodusTracker;
import com.aurora.store.model.Report;
import com.aurora.store.utility.Log;
-import com.aurora.store.view.CustomBottomSheetDialogFragment;
+import com.google.android.material.bottomsheet.BottomSheetBehavior;
+import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import org.json.JSONArray;
import org.json.JSONException;
@@ -55,7 +56,7 @@ import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
-public class ExodusBottomSheet extends CustomBottomSheetDialogFragment {
+public class ExodusBottomSheet extends BottomSheetDialogFragment {
@BindView(R.id.exodus_recycler)
RecyclerView recyclerView;
@@ -79,6 +80,12 @@ public class ExodusBottomSheet extends CustomBottomSheetDialogFragment {
this.context = context;
}
+ @Override
+ public void onStart() {
+ super.onStart();
+ getDialog().getBehavior().setState(BottomSheetBehavior.STATE_EXPANDED);
+ }
+
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
diff --git a/app/src/main/java/com/aurora/store/sheet/FilterBottomSheet.java b/app/src/main/java/com/aurora/store/sheet/FilterBottomSheet.java
index 5a4047b5c..432ce23d8 100644
--- a/app/src/main/java/com/aurora/store/sheet/FilterBottomSheet.java
+++ b/app/src/main/java/com/aurora/store/sheet/FilterBottomSheet.java
@@ -35,14 +35,15 @@ import androidx.core.graphics.ColorUtils;
import com.aurora.store.Constants;
import com.aurora.store.R;
import com.aurora.store.utility.PrefUtil;
-import com.aurora.store.view.CustomBottomSheetDialogFragment;
+import com.google.android.material.bottomsheet.BottomSheetBehavior;
+import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import com.google.android.material.chip.Chip;
import com.google.android.material.chip.ChipGroup;
import butterknife.BindView;
import butterknife.ButterKnife;
-public class FilterBottomSheet extends CustomBottomSheetDialogFragment {
+public class FilterBottomSheet extends BottomSheetDialogFragment {
@BindView(R.id.rating_chips)
ChipGroup rating_chips;
@@ -66,6 +67,12 @@ public class FilterBottomSheet extends CustomBottomSheetDialogFragment {
this.context = context;
}
+ @Override
+ public void onStart() {
+ super.onStart();
+ getDialog().getBehavior().setState(BottomSheetBehavior.STATE_EXPANDED);
+ }
+
@NonNull
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
diff --git a/app/src/main/java/com/aurora/store/sheet/MoreInfoSheet.java b/app/src/main/java/com/aurora/store/sheet/MoreInfoSheet.java
index 667cc576f..e2110ddc4 100644
--- a/app/src/main/java/com/aurora/store/sheet/MoreInfoSheet.java
+++ b/app/src/main/java/com/aurora/store/sheet/MoreInfoSheet.java
@@ -33,12 +33,13 @@ import androidx.annotation.Nullable;
import com.aurora.store.R;
import com.aurora.store.model.App;
-import com.aurora.store.view.CustomBottomSheetDialogFragment;
+import com.google.android.material.bottomsheet.BottomSheetBehavior;
+import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import butterknife.BindView;
import butterknife.ButterKnife;
-public class MoreInfoSheet extends CustomBottomSheetDialogFragment {
+public class MoreInfoSheet extends BottomSheetDialogFragment {
@BindView(R.id.content_readMore)
TextView contentReadMore;
@@ -52,10 +53,17 @@ public class MoreInfoSheet extends CustomBottomSheetDialogFragment {
this.app = app;
}
+ @Override
+ public void onStart() {
+ super.onStart();
+ getDialog().getBehavior().setState(BottomSheetBehavior.STATE_EXPANDED);
+ }
+
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.sheet_read_more, container, false);
ButterKnife.bind(this, view);
+ view.setFitsSystemWindows(true);
return view;
}
diff --git a/app/src/main/java/com/aurora/store/sheet/PermissionBottomSheet.java b/app/src/main/java/com/aurora/store/sheet/PermissionBottomSheet.java
index 7bd7b9d53..cb3f22b9c 100644
--- a/app/src/main/java/com/aurora/store/sheet/PermissionBottomSheet.java
+++ b/app/src/main/java/com/aurora/store/sheet/PermissionBottomSheet.java
@@ -37,7 +37,8 @@ import androidx.annotation.Nullable;
import com.aurora.store.PermissionGroup;
import com.aurora.store.R;
import com.aurora.store.model.App;
-import com.aurora.store.view.CustomBottomSheetDialogFragment;
+import com.google.android.material.bottomsheet.BottomSheetBehavior;
+import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import java.util.ArrayList;
import java.util.Collections;
@@ -48,7 +49,7 @@ import java.util.Map;
import butterknife.BindView;
import butterknife.ButterKnife;
-public class PermissionBottomSheet extends CustomBottomSheetDialogFragment {
+public class PermissionBottomSheet extends BottomSheetDialogFragment {
@BindView(R.id.permissions_header)
TextView viewHeader;
@@ -73,6 +74,12 @@ public class PermissionBottomSheet extends CustomBottomSheetDialogFragment {
this.context = context;
}
+ @Override
+ public void onStart() {
+ super.onStart();
+ getDialog().getBehavior().setState(BottomSheetBehavior.STATE_EXPANDED);
+ }
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
diff --git a/app/src/main/java/com/aurora/store/sheet/ReviewsBottomSheet.java b/app/src/main/java/com/aurora/store/sheet/ReviewsBottomSheet.java
index 810f281c6..b4c567980 100644
--- a/app/src/main/java/com/aurora/store/sheet/ReviewsBottomSheet.java
+++ b/app/src/main/java/com/aurora/store/sheet/ReviewsBottomSheet.java
@@ -38,7 +38,8 @@ import com.aurora.store.model.App;
import com.aurora.store.model.Review;
import com.aurora.store.task.ReviewsHelper;
import com.aurora.store.utility.Log;
-import com.aurora.store.view.CustomBottomSheetDialogFragment;
+import com.google.android.material.bottomsheet.BottomSheetBehavior;
+import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import java.util.List;
@@ -49,7 +50,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
-public class ReviewsBottomSheet extends CustomBottomSheetDialogFragment {
+public class ReviewsBottomSheet extends BottomSheetDialogFragment {
@BindView(R.id.reviews_recycler)
RecyclerView mRecyclerView;
@@ -63,6 +64,12 @@ public class ReviewsBottomSheet extends CustomBottomSheetDialogFragment {
this.app = app;
}
+ @Override
+ public void onStart() {
+ super.onStart();
+ getDialog().getBehavior().setState(BottomSheetBehavior.STATE_EXPANDED);
+ }
+
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.sheet_reviews, container, false);
diff --git a/app/src/main/java/com/aurora/store/sheet/UserReviewBottomSheet.java b/app/src/main/java/com/aurora/store/sheet/UserReviewBottomSheet.java
index 2f9e3f678..e71cd9bc1 100644
--- a/app/src/main/java/com/aurora/store/sheet/UserReviewBottomSheet.java
+++ b/app/src/main/java/com/aurora/store/sheet/UserReviewBottomSheet.java
@@ -36,9 +36,9 @@ import com.aurora.store.model.Review;
import com.aurora.store.model.ReviewBuilder;
import com.aurora.store.task.BaseTask;
import com.aurora.store.utility.Log;
-import com.aurora.store.view.CustomBottomSheetDialogFragment;
import com.dragons.aurora.playstoreapiv2.GooglePlayAPI;
import com.dragons.aurora.playstoreapiv2.ReviewResponse;
+import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import com.google.android.material.textfield.TextInputEditText;
import java.io.IOException;
@@ -50,7 +50,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
-public class UserReviewBottomSheet extends CustomBottomSheetDialogFragment {
+public class UserReviewBottomSheet extends BottomSheetDialogFragment {
@BindView(R.id.review_title)
TextInputEditText txtTitle;
diff --git a/app/src/main/java/com/aurora/store/task/DetailsApp.java b/app/src/main/java/com/aurora/store/task/DetailsApp.java
index 883fefc9f..87770183c 100644
--- a/app/src/main/java/com/aurora/store/task/DetailsApp.java
+++ b/app/src/main/java/com/aurora/store/task/DetailsApp.java
@@ -27,6 +27,7 @@ import com.aurora.store.model.AppBuilder;
import com.aurora.store.model.Review;
import com.aurora.store.model.ReviewBuilder;
import com.aurora.store.utility.Accountant;
+import com.aurora.store.utility.PackageUtil;
import com.dragons.aurora.playstoreapiv2.DetailsResponse;
import com.dragons.aurora.playstoreapiv2.ReviewResponse;
@@ -51,6 +52,8 @@ public class DetailsApp extends BaseTask {
app.setUserReview(review);
}
}
+ if (PackageUtil.isInstalled(context, app))
+ app.setInstalled(true);
return app;
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/aurora/store/utility/ColorUtil.java b/app/src/main/java/com/aurora/store/utility/ColorUtil.java
index 171c650b1..ed0958578 100644
--- a/app/src/main/java/com/aurora/store/utility/ColorUtil.java
+++ b/app/src/main/java/com/aurora/store/utility/ColorUtil.java
@@ -45,5 +45,4 @@ public class ColorUtil {
final double darkness = 1 - (0.299 * Color.red(color) + 0.587 * Color.green(color) + 0.114 * Color.blue(color)) / 255;
return darkness < 0.4;
}
-
}
diff --git a/app/src/main/java/com/aurora/store/utility/ThemeUtil.java b/app/src/main/java/com/aurora/store/utility/ThemeUtil.java
index 1678d1cb9..547ea4c91 100644
--- a/app/src/main/java/com/aurora/store/utility/ThemeUtil.java
+++ b/app/src/main/java/com/aurora/store/utility/ThemeUtil.java
@@ -20,6 +20,7 @@
package com.aurora.store.utility;
+import android.content.Context;
import android.content.Intent;
import androidx.appcompat.app.AppCompatActivity;
@@ -61,6 +62,17 @@ public class ThemeUtil {
}
}
+ public static boolean isLightTheme(Context context) {
+ String theme = Util.getTheme(context);
+ switch (theme) {
+ case "dark":
+ case "black":
+ return false;
+ default:
+ return true;
+ }
+ }
+
private static final class OverridePendingTransition {
static void invoke(AppCompatActivity activity) {
activity.overridePendingTransition(0, 0);
diff --git a/app/src/main/java/com/aurora/store/utility/ViewUtil.java b/app/src/main/java/com/aurora/store/utility/ViewUtil.java
index 151442169..8f2df7ee0 100644
--- a/app/src/main/java/com/aurora/store/utility/ViewUtil.java
+++ b/app/src/main/java/com/aurora/store/utility/ViewUtil.java
@@ -32,24 +32,16 @@ import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.util.DisplayMetrics;
import android.util.TypedValue;
-import android.view.Menu;
-import android.view.MenuInflater;
-import android.view.MenuItem;
import android.view.View;
import android.view.animation.DecelerateInterpolator;
import android.view.animation.RotateAnimation;
import android.widget.TextView;
import androidx.annotation.ColorInt;
-import androidx.annotation.MenuRes;
import androidx.annotation.NonNull;
-import androidx.appcompat.widget.PopupMenu;
-import androidx.core.view.ViewCompat;
-import androidx.interpolator.view.animation.LinearOutSlowInInterpolator;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.aurora.store.R;
-import com.aurora.store.model.MenuEntry;
import java.util.ArrayList;
import java.util.List;
@@ -137,22 +129,6 @@ public class ViewUtil {
setText(v, viewId, v.getResources().getString(stringId, text));
}
- public static void hideBottomNav(View view, boolean withAnimation) {
- ViewCompat.animate(view)
- .translationY(view.getHeight())
- .setInterpolator(new LinearOutSlowInInterpolator())
- .setDuration(withAnimation ? ANIMATION_DURATION_SHORT : 0)
- .start();
- }
-
- public static void showBottomNav(View view, boolean withAnimation) {
- ViewCompat.animate(view)
- .translationY(0)
- .setInterpolator(new LinearOutSlowInInterpolator())
- .setDuration(withAnimation ? ANIMATION_DURATION_SHORT : 0)
- .start();
- }
-
public static void showWithAnimation(View view) {
final int mShortAnimationDuration = view.getResources().getInteger(
android.R.integer.config_shortAnimTime);
@@ -229,16 +205,4 @@ public class ViewUtil {
else
setVisibility(view, visibility);
}
-
- public static List parseMenu(Context context, @MenuRes int menuRes) {
- List menuEntryList = new ArrayList<>();
- PopupMenu p = new PopupMenu(context, null);
- Menu menu = p.getMenu();
- new MenuInflater(context).inflate(menuRes, menu);
- for (int i = 0; i < menu.size(); i++) {
- MenuItem item = menu.getItem(i);
- menuEntryList.add(new MenuEntry(item.getTitle().toString(), item.getIcon(), item.getItemId()));
- }
- return menuEntryList;
- }
}
diff --git a/app/src/main/java/com/aurora/store/view/CustomBottomSheetDialogFragment.java b/app/src/main/java/com/aurora/store/view/CustomBottomSheetDialogFragment.java
deleted file mode 100644
index 1397d4ce8..000000000
--- a/app/src/main/java/com/aurora/store/view/CustomBottomSheetDialogFragment.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Aurora Store
- * Copyright (C) 2019, Rahul Kumar Patel
- *
- * Aurora Store is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * Aurora Store is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Aurora Store. If not, see .
- *
- *
- */
-
-package com.aurora.store.view;
-
-import android.app.Dialog;
-import android.content.Context;
-import android.os.Bundle;
-
-import androidx.annotation.NonNull;
-
-import com.aurora.store.R;
-import com.aurora.store.utility.Util;
-import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
-
-public class CustomBottomSheetDialogFragment extends BottomSheetDialogFragment {
-
- @Override
- public int getTheme() {
- return getSelectedTheme(getContext());
- }
-
- @NonNull
- @Override
- public Dialog onCreateDialog(Bundle savedInstanceState) {
- return super.onCreateDialog(savedInstanceState);
- }
-
- private int getSelectedTheme(Context context) {
- String theme = Util.getTheme(context);
- switch (theme) {
- case "light":
- return R.style.BottomSheetDialogTheme;
- case "dark":
- return R.style.BottomSheetDialogTheme_Dark;
- case "black":
- return R.style.BottomSheetDialogTheme_Black;
- default:
- return R.style.BottomSheetDialogTheme;
- }
- }
-}
diff --git a/app/src/main/res/color/color_selector.xml b/app/src/main/res/color/color_selector.xml
index 0ac494583..a24b2d729 100755
--- a/app/src/main/res/color/color_selector.xml
+++ b/app/src/main/res/color/color_selector.xml
@@ -21,5 +21,5 @@
-
+
diff --git a/app/src/main/res/drawable/category_bg.xml b/app/src/main/res/drawable/category_bg.xml
index 9259f9020..8071481ab 100644
--- a/app/src/main/res/drawable/category_bg.xml
+++ b/app/src/main/res/drawable/category_bg.xml
@@ -22,7 +22,7 @@
android:shape="rectangle">
-
+ android:height="20dp" />
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_apps.xml b/app/src/main/res/drawable/ic_apps.xml
index 02a0e6a0c..231bfd9e4 100644
--- a/app/src/main/res/drawable/ic_apps.xml
+++ b/app/src/main/res/drawable/ic_apps.xml
@@ -3,7 +3,7 @@
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
-
+
diff --git a/app/src/main/res/drawable/ic_arrow.xml b/app/src/main/res/drawable/ic_arrow.xml
new file mode 100644
index 000000000..47b9b34ef
--- /dev/null
+++ b/app/src/main/res/drawable/ic_arrow.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_download_manager.xml b/app/src/main/res/drawable/ic_download_manager.xml
index 69306233a..1c1baee87 100644
--- a/app/src/main/res/drawable/ic_download_manager.xml
+++ b/app/src/main/res/drawable/ic_download_manager.xml
@@ -24,10 +24,6 @@
android:viewportWidth="24"
android:viewportHeight="24">
-
diff --git a/app/src/main/res/drawable/ic_home.xml b/app/src/main/res/drawable/ic_home.xml
index 04ff2d0de..543603f18 100644
--- a/app/src/main/res/drawable/ic_home.xml
+++ b/app/src/main/res/drawable/ic_home.xml
@@ -3,7 +3,7 @@
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
-
+
diff --git a/app/src/main/res/drawable/ic_search.xml b/app/src/main/res/drawable/ic_search.xml
index 63068c02b..3fccd6e92 100644
--- a/app/src/main/res/drawable/ic_search.xml
+++ b/app/src/main/res/drawable/ic_search.xml
@@ -1,29 +1,9 @@
-
-
-
-
\ No newline at end of file
+ android:viewportWidth="24"
+ android:viewportHeight="24">
+
+
diff --git a/app/src/main/res/drawable/ic_settings.xml b/app/src/main/res/drawable/ic_settings.xml
index 8ad89d7d2..6073977d8 100644
--- a/app/src/main/res/drawable/ic_settings.xml
+++ b/app/src/main/res/drawable/ic_settings.xml
@@ -24,10 +24,6 @@
android:viewportWidth="24"
android:viewportHeight="24">
-
diff --git a/app/src/main/res/font/open_sans_semibold.xml b/app/src/main/res/font/open_sans_semibold.xml
new file mode 100644
index 000000000..13a062dea
--- /dev/null
+++ b/app/src/main/res/font/open_sans_semibold.xml
@@ -0,0 +1,7 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 59ea7094a..398779244 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -41,6 +41,7 @@
android:layout_gravity="bottom"
app:backgroundTint="?android:colorBackground"
app:elevation="6dp"
+ app:itemTextAppearanceActive="@style/TextAppearance.Aurora.BottomNav.Active"
+ app:itemTextAppearanceInactive="@style/TextAppearance.Aurora.BottomNav.Inactive"
app:menu="@menu/navigation" />
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index 8d628bb46..e097f3bab 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -36,7 +36,6 @@
android:layout_height="wrap_content"
android:clipToPadding="false"
android:overScrollMode="never"
- android:paddingTop="@dimen/margin_small"
android:paddingBottom="@dimen/bottom_nav_padding"
android:scrollbars="none">
@@ -47,7 +46,8 @@
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="@dimen/margin_small">
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="@dimen/margin_small">
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="@dimen/margin_small">
+ android:layout_height="wrap_content"
+ android:layout_marginBottom="@dimen/margin_small">
@@ -33,7 +33,8 @@
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width="0dp"
android:layout_height="52dp"
- android:layout_margin="@dimen/margin_xxsmall"
+ android:layout_marginStart="@dimen/margin_xxsmall"
+ android:layout_marginEnd="@dimen/margin_xxsmall"
android:layout_weight="1"
android:maxLines="1"
android:paddingStart="@dimen/margin_large"
@@ -49,7 +50,8 @@
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width="0dp"
android:layout_height="52dp"
- android:layout_margin="@dimen/margin_xxsmall"
+ android:layout_marginStart="@dimen/margin_xxsmall"
+ android:layout_marginEnd="@dimen/margin_xxsmall"
android:layout_weight="1"
android:maxLines="1"
android:paddingStart="@dimen/margin_large"
diff --git a/app/src/main/res/layout/include_details_all.xml b/app/src/main/res/layout/include_details_all.xml
index 7867f1289..b2ec1b1bd 100644
--- a/app/src/main/res/layout/include_details_all.xml
+++ b/app/src/main/res/layout/include_details_all.xml
@@ -54,14 +54,14 @@
android:id="@+id/app_desc_short"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginTop="@dimen/margin_normal"
- android:layout_marginBottom="@dimen/margin_normal"
- android:background="@color/colorScrim"
+ android:layout_margin="@dimen/margin_medium"
+ android:background="@drawable/generic_bg"
android:gravity="center"
android:minHeight="56dp"
android:padding="@dimen/margin_small"
android:textAlignment="center"
android:textColor="?android:attr/textColorPrimary"
+ android:textIsSelectable="true"
android:textSize="16sp"
android:visibility="gone"
app:autoSizeMaxTextSize="16sp"
@@ -101,17 +101,17 @@
android:id="@+id/app_video"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_margin="8dp"
+ android:layout_margin="@dimen/margin_medium"
android:visibility="gone">
-
-
-
-
diff --git a/app/src/main/res/layout/include_details_beta.xml b/app/src/main/res/layout/include_details_beta.xml
index a0573ee26..473470017 100644
--- a/app/src/main/res/layout/include_details_beta.xml
+++ b/app/src/main/res/layout/include_details_beta.xml
@@ -23,7 +23,7 @@
android:id="@+id/beta_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_margin="@dimen/margin_small"
+ android:layout_margin="@dimen/margin_medium"
android:background="@drawable/generic_padded_bg"
android:orientation="vertical"
android:visibility="gone">
diff --git a/app/src/main/res/layout/include_details_changelog.xml b/app/src/main/res/layout/include_details_changelog.xml
index 379f478e4..f1ed5bdda 100644
--- a/app/src/main/res/layout/include_details_changelog.xml
+++ b/app/src/main/res/layout/include_details_changelog.xml
@@ -24,7 +24,7 @@
android:id="@+id/changes_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_margin="8dp"
+ android:layout_margin="@dimen/margin_medium"
android:animateLayoutChanges="true"
android:background="@drawable/generic_padded_bg"
android:minHeight="32dp"
@@ -32,16 +32,15 @@
android:visibility="invisible">
+ android:textAppearance="@style/TextAppearance.Aurora.SubTitle" />
-
+ android:orientation="horizontal">
+ android:layout_width="@dimen/icon_size_normal"
+ android:layout_height="@dimen/icon_size_normal"
+ android:layout_margin="@dimen/margin_normal" />
+ android:layout_marginStart="@dimen/margin_small"
+ android:layout_marginEnd="@dimen/margin_small"
+ android:layout_toEndOf="@id/icon">
-
-
+ android:textAppearance="@style/TextAppearance.Aurora.Title"
+ android:textSize="22sp" />
+ android:textSize="14sp" />
+
+
diff --git a/app/src/main/res/layout/include_details_readmore.xml b/app/src/main/res/layout/include_details_readmore.xml
index 47f3b21d3..4579a06ab 100644
--- a/app/src/main/res/layout/include_details_readmore.xml
+++ b/app/src/main/res/layout/include_details_readmore.xml
@@ -1,5 +1,4 @@
-
-
-
-
+
+
-
\ No newline at end of file
+ android:layout_alignParentEnd="true"
+ android:layout_centerVertical="true"
+ android:background="?selectableItemBackgroundBorderless"
+ android:padding="@dimen/margin_small"
+ android:src="@drawable/ic_arrow" />
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/include_details_reviews.xml b/app/src/main/res/layout/include_details_reviews.xml
index e85472c02..85f20b1b5 100644
--- a/app/src/main/res/layout/include_details_reviews.xml
+++ b/app/src/main/res/layout/include_details_reviews.xml
@@ -1,5 +1,4 @@
-
-