From 6ff497c003efce4c7c4e431ddfc3fafe38c7f815 Mon Sep 17 00:00:00 2001 From: "Mr. Dragon" Date: Fri, 23 Feb 2018 17:45:32 +0530 Subject: [PATCH] Fix some layout & coding issues - Split GalaxyActivity - Removed redundant codes - ReImplemented NavDrawer - Formated XMLs - Fix download images over wifi - Add NestedScrolling on AppList - Remove stray progressbar --- app/src/main/AndroidManifest.xml | 2 +- .../java/in/dragons/galaxy/AboutActivity.java | 9 +- .../in/dragons/galaxy/AccountsActivity.java | 34 +- .../in/dragons/galaxy/AppListActivity.java | 20 +- .../java/in/dragons/galaxy/BaseActivity.java | 150 +++++ .../dragons/galaxy/CategoryAppsActivity.java | 4 - .../dragons/galaxy/CategoryListActivity.java | 9 +- .../galaxy/CredentialsDialogBuilder.java | 1 - .../in/dragons/galaxy/DetailsActivity.java | 9 +- .../dragons/galaxy/EndlessScrollActivity.java | 2 +- .../in/dragons/galaxy/GalaxyActivity.java | 132 +--- .../dragons/galaxy/InstalledAppsActivity.java | 6 - .../galaxy/ManualDownloadActivity.java | 2 - .../in/dragons/galaxy/SearchActivity.java | 4 - .../dragons/galaxy/TopCategoriesAdapter.java | 8 +- .../dragons/galaxy/UpdatableAppsActivity.java | 1 - .../fragment/details/ButtonDownload.java | 26 +- .../fragment/details/GeneralDetails.java | 3 +- .../dragons/galaxy/selfupdate/Signature.java | 40 -- .../in/dragons/galaxy/selfupdate/Updater.java | 81 --- .../galaxy/selfupdate/UpdaterFactory.java | 10 - .../galaxy/selfupdate/UpdaterFdroid.java | 15 - .../galaxy/selfupdate/UpdaterGithub.java | 15 - .../galaxy/task/playstore/DetailsTask.java | 19 +- .../ForegroundUpdatableAppsTask.java | 12 - .../java/in/dragons/galaxy/view/AppBadge.java | 10 +- .../main/res/layout/about_activity_layout.xml | 36 -- app/src/main/res/layout/accounts_layout.xml | 36 -- app/src/main/res/layout/activity_main.xml | 37 +- app/src/main/res/layout/app_abt_inc.xml | 511 ++++++++------- app/src/main/res/layout/app_acc_inc.xml | 60 +- app/src/main/res/layout/app_bar_main.xml | 32 - app/src/main/res/layout/app_beta_inc.xml | 59 +- app/src/main/res/layout/app_changelog_inc.xml | 18 +- app/src/main/res/layout/app_details_inc.xml | 196 +++--- app/src/main/res/layout/app_gen_inc.xml | 24 +- app/src/main/res/layout/app_reviews_inc.xml | 232 ++++--- .../res/layout/applist_activity_layout.xml | 23 +- .../res/layout/categories_activity_layout.xml | 165 ++--- .../res/layout/credentials_dialog_layout.xml | 79 ++- .../res/layout/details_activity_layout.xml | 589 ++++++++---------- .../res/layout/deviceinfo_activity_layout.xml | 2 +- .../fullscreen_image_activity_layout.xml | 15 +- .../manual_download_activity_layout.xml | 11 +- app/src/main/res/layout/nav_header_main.xml | 4 +- .../main/res/layout/review_dialog_layout.xml | 40 +- app/src/main/res/layout/review_list_item.xml | 38 +- .../layout/two_line_list_item_with_icon.xml | 24 +- app/src/main/res/menu/menu_main.xml | 32 +- app/src/main/res/menu/nav_menu.xml | 2 - app/src/main/res/values/array.xml | 14 +- app/src/main/res/values/attrs.xml | 1 - app/src/main/res/values/color.xml | 4 +- app/src/main/res/values/dimens.xml | 5 +- app/src/main/res/values/strings.xml | 5 + app/src/main/res/values/style.xml | 1 + app/src/main/res/xml/paths.xml | 8 +- app/src/main/res/xml/searchable.xml | 4 +- app/src/main/res/xml/settings.xml | 38 +- 59 files changed, 1284 insertions(+), 1685 deletions(-) create mode 100644 app/src/main/java/in/dragons/galaxy/BaseActivity.java delete mode 100644 app/src/main/java/in/dragons/galaxy/selfupdate/Signature.java delete mode 100644 app/src/main/java/in/dragons/galaxy/selfupdate/Updater.java delete mode 100644 app/src/main/java/in/dragons/galaxy/selfupdate/UpdaterFactory.java delete mode 100644 app/src/main/java/in/dragons/galaxy/selfupdate/UpdaterFdroid.java delete mode 100644 app/src/main/java/in/dragons/galaxy/selfupdate/UpdaterGithub.java delete mode 100644 app/src/main/res/layout/about_activity_layout.xml delete mode 100644 app/src/main/res/layout/accounts_layout.xml delete mode 100644 app/src/main/res/layout/app_bar_main.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1137b908b..14370d50b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -19,7 +19,7 @@ android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:banner="@mipmap/ic_launcher" - android:theme="@style/AppTheme.Dark" + android:theme="@style/AppTheme" android:supportsRtl="true"> ") + 6, rawData.indexOf(""))); + public void loadAvatar(String Url) { Picasso.with(this) - .load(rawData.substring(rawData.indexOf("") + 18, rawData.lastIndexOf(""))) + .load(Url) .placeholder(R.drawable.ic_user_placeholder) .transform(new CircleTransform()) .into(((ImageView) findViewById(R.id.google_avatar))); diff --git a/app/src/main/java/in/dragons/galaxy/AppListActivity.java b/app/src/main/java/in/dragons/galaxy/AppListActivity.java index d97cefaad..ade3165e0 100644 --- a/app/src/main/java/in/dragons/galaxy/AppListActivity.java +++ b/app/src/main/java/in/dragons/galaxy/AppListActivity.java @@ -2,14 +2,16 @@ package in.dragons.galaxy; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; -import android.support.design.widget.NavigationView; import android.util.Log; import android.view.ContextMenu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; +import android.widget.FrameLayout; import android.widget.ListView; +import com.percolate.caffeine.ViewUtils; + import java.util.HashMap; import java.util.List; import java.util.Map; @@ -22,7 +24,7 @@ import in.dragons.galaxy.model.App; import in.dragons.galaxy.view.AppBadge; import in.dragons.galaxy.view.ListItem; -abstract public class AppListActivity extends GalaxyActivity implements NavigationView.OnNavigationItemSelectedListener { +abstract public class AppListActivity extends GalaxyActivity { protected ListView listView; protected Map listItems = new HashMap<>(); @@ -35,8 +37,8 @@ abstract public class AppListActivity extends GalaxyActivity implements Navigati @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - super.onCreateDrawer(savedInstanceState); + FrameLayout contentFrameLayout = (FrameLayout) findViewById(R.id.content_frame); //Remember this is the FrameLayout area within your activity_main.xml + getLayoutInflater().inflate(R.layout.applist_activity_layout, contentFrameLayout); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @@ -47,6 +49,8 @@ abstract public class AppListActivity extends GalaxyActivity implements Navigati } }); + onContentChange(); + getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { @@ -98,11 +102,11 @@ abstract public class AppListActivity extends GalaxyActivity implements Navigati } } - @Override - public void onContentChanged() { - super.onContentChanged(); + + public void onContentChange() { View emptyView = findViewById(android.R.id.empty); - listView = (ListView) findViewById(android.R.id.list); + listView = ViewUtils.findViewById(this, android.R.id.list); + listView.setNestedScrollingEnabled(true); if (emptyView != null) { listView.setEmptyView(emptyView); } diff --git a/app/src/main/java/in/dragons/galaxy/BaseActivity.java b/app/src/main/java/in/dragons/galaxy/BaseActivity.java new file mode 100644 index 000000000..bd50b8fc6 --- /dev/null +++ b/app/src/main/java/in/dragons/galaxy/BaseActivity.java @@ -0,0 +1,150 @@ +package in.dragons.galaxy; + +import android.annotation.TargetApi; +import android.app.AlertDialog; +import android.app.SearchManager; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.SharedPreferences; +import android.os.Build; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.support.design.widget.NavigationView; +import android.support.v7.app.AppCompatActivity; +import android.view.MenuItem; +import android.widget.EditText; +import android.widget.ImageView; +import android.widget.SearchView; + +import com.percolate.caffeine.PhoneUtils; +import com.percolate.caffeine.ToastUtils; +import com.percolate.caffeine.ViewUtils; +import com.squareup.picasso.Picasso; + +public abstract class BaseActivity extends AppCompatActivity { + + static protected boolean logout = false; + + protected String Email, Name, Url; + protected SharedPreferences sharedPreferences; + + public static void cascadeFinish() { + BaseActivity.logout = true; + } + + @Override + protected void onCreate(Bundle savedInstanceState) { + sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); + setTheme(sharedPreferences.getBoolean("THEME", true) ? R.style.AppTheme : R.style.AppTheme_Dark); + + super.onCreate(savedInstanceState); + + logout = false; + Email = sharedPreferences.getString(PlayStoreApiAuthenticator.PREFERENCE_EMAIL, ""); + } + + protected boolean isConnected() { + return PhoneUtils.isNetworkAvailable(this); + } + + protected boolean isValidEmail(String Email) { + return !(Email.isEmpty() || isDummyEmail()); + } + + protected boolean isDummyEmail() { + return (Email.contains("yalp.store.user")); + } + + protected void notifyConnected(final Context context) { + if (!isConnected()) + ToastUtils.quickToast(this, "No network").show(); + } + + protected void parseRAW(String rawData) { + Name = rawData.substring(rawData.indexOf("") + 6, rawData.indexOf("")); + Url = rawData.substring(rawData.indexOf("") + 18, rawData.lastIndexOf("")); + + PreferenceManager.getDefaultSharedPreferences(this).edit().putString("GOOGLE_NAME", Name).apply(); + PreferenceManager.getDefaultSharedPreferences(this).edit().putString("GOOGLE_URL", Url).apply(); + + setNavHeaderInfo((NavigationView) findViewById(R.id.nav_view), Name, Url); + } + + protected void setNavHeaderInfo(NavigationView navigationView, String Name, String URL) { + ViewUtils.setText(this, R.id.usr_name, Name); + ViewUtils.setText(this, R.id.usr_email, Email); + + Picasso.with(this) + .load(URL) + .placeholder(R.drawable.ic_user_placeholder) + .transform(new CircleTransform()) + .into((ImageView) ViewUtils.findViewById(this, R.id.usr_img)); + } + + @TargetApi(Build.VERSION_CODES.HONEYCOMB) + protected void addQueryTextListener(MenuItem searchItem) { + SearchView searchView = (SearchView) searchItem.getActionView(); + SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); + if (null != searchManager) { + searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); + searchView.setQueryHint(getString(R.string.search_title)); + } + searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { + + @Override + public boolean onQueryTextChange(String query) { + return true; + } + + @Override + public boolean onQueryTextSubmit(String query) { + Intent i = new Intent(BaseActivity.this, SearchActivity.class); + i.setAction(Intent.ACTION_SEARCH); + i.putExtra(SearchManager.QUERY, query); + startActivity(i); + return false; + } + }); + } + + AlertDialog showLogOutDialog() { + return new AlertDialog.Builder(this) + .setMessage(R.string.dialog_message_logout) + .setTitle(R.string.dialog_title_logout) + .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + new PlayStoreApiAuthenticator(getApplicationContext()).logout(); + dialogInterface.dismiss(); + finish(); + } + }) + .setNegativeButton(android.R.string.cancel, null) + .show(); + } + + + AlertDialog showFallbackSearchDialog() { + final EditText textView = new EditText(this); + return new AlertDialog.Builder(this) + .setView(textView) + .setPositiveButton(android.R.string.search_go, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + Intent i = new Intent(getApplicationContext(), SearchActivity.class); + i.setAction(Intent.ACTION_SEARCH); + i.putExtra(SearchManager.QUERY, textView.getText().toString()); + startActivity(i); + } + }) + .setNegativeButton(android.R.string.cancel, null) + .show(); + } + + protected void finishAll() { + logout = true; + finish(); + } + +} diff --git a/app/src/main/java/in/dragons/galaxy/CategoryAppsActivity.java b/app/src/main/java/in/dragons/galaxy/CategoryAppsActivity.java index 6a25c66ff..98fdefb6f 100644 --- a/app/src/main/java/in/dragons/galaxy/CategoryAppsActivity.java +++ b/app/src/main/java/in/dragons/galaxy/CategoryAppsActivity.java @@ -2,9 +2,7 @@ package in.dragons.galaxy; import android.content.Context; import android.content.Intent; -import android.content.SharedPreferences; import android.os.Bundle; -import android.preference.PreferenceManager; import android.util.Log; import in.dragons.galaxy.fragment.FilterMenu; @@ -26,8 +24,6 @@ public class CategoryAppsActivity extends EndlessScrollActivity { @Override protected void onCreate(Bundle savedInstanceState) { - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); - setTheme(sharedPreferences.getBoolean("THEME", true) ? R.style.AppTheme : R.style.AppTheme_Dark); super.onCreate(savedInstanceState); } diff --git a/app/src/main/java/in/dragons/galaxy/CategoryListActivity.java b/app/src/main/java/in/dragons/galaxy/CategoryListActivity.java index 360f8de6c..e82a423a0 100644 --- a/app/src/main/java/in/dragons/galaxy/CategoryListActivity.java +++ b/app/src/main/java/in/dragons/galaxy/CategoryListActivity.java @@ -1,12 +1,11 @@ package in.dragons.galaxy; import android.content.Context; -import android.content.SharedPreferences; import android.os.Bundle; -import android.preference.PreferenceManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; +import android.widget.FrameLayout; import android.widget.TextView; import in.dragons.galaxy.task.playstore.CategoryListTask; @@ -18,11 +17,9 @@ public class CategoryListActivity extends GalaxyActivity { @Override protected void onCreate(Bundle savedInstanceState) { - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); - setTheme(sharedPreferences.getBoolean("THEME", true) ? R.style.AppTheme : R.style.AppTheme_Dark); super.onCreate(savedInstanceState); - setContentView(R.layout.categories_activity_layout); - super.onCreateDrawer(savedInstanceState); + FrameLayout contentFrameLayout = (FrameLayout) findViewById(R.id.content_frame); + getLayoutInflater().inflate(R.layout.categories_activity_layout, contentFrameLayout); setTitle(getString(R.string.action_categories)); CategoryManager manager = new CategoryManager(this); diff --git a/app/src/main/java/in/dragons/galaxy/CredentialsDialogBuilder.java b/app/src/main/java/in/dragons/galaxy/CredentialsDialogBuilder.java index 38a3b8564..938b294e9 100644 --- a/app/src/main/java/in/dragons/galaxy/CredentialsDialogBuilder.java +++ b/app/src/main/java/in/dragons/galaxy/CredentialsDialogBuilder.java @@ -51,7 +51,6 @@ abstract public class CredentialsDialogBuilder { super.onPostExecute(result); if (success()) { new FirstLaunchChecker(context).setLoggedIn(); - android.os.Process.killProcess(android.os.Process.myPid()); if (caller instanceof CloneableTask) { Log.i(getClass().getSimpleName(), caller.getClass().getSimpleName() + " is cloneable. Retrying."); ((PlayStoreTask) ((CloneableTask) caller).clone()).execute(new String[]{}); diff --git a/app/src/main/java/in/dragons/galaxy/DetailsActivity.java b/app/src/main/java/in/dragons/galaxy/DetailsActivity.java index ac3626a52..937624f92 100644 --- a/app/src/main/java/in/dragons/galaxy/DetailsActivity.java +++ b/app/src/main/java/in/dragons/galaxy/DetailsActivity.java @@ -2,14 +2,13 @@ package in.dragons.galaxy; import android.content.Context; import android.content.Intent; -import android.content.SharedPreferences; import android.os.Bundle; -import android.preference.PreferenceManager; import android.text.TextUtils; import android.util.Log; import android.view.ContextMenu; import android.view.MenuItem; import android.view.View; +import android.widget.FrameLayout; import in.dragons.galaxy.fragment.details.AppLists; import in.dragons.galaxy.fragment.details.BackToPlayStore; @@ -89,12 +88,10 @@ public class DetailsActivity extends GalaxyActivity { @Override protected void onCreate(Bundle savedInstanceState) { - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); - setTheme(sharedPreferences.getBoolean("THEME", true) ? R.style.AppTheme : R.style.AppTheme_Dark); super.onCreate(savedInstanceState); - setContentView(R.layout.details_activity_layout); + FrameLayout contentFrameLayout = (FrameLayout) findViewById(R.id.content_frame); + getLayoutInflater().inflate(R.layout.details_activity_layout, contentFrameLayout); onNewIntent(getIntent()); - onCreateDrawer(savedInstanceState); } @Override diff --git a/app/src/main/java/in/dragons/galaxy/EndlessScrollActivity.java b/app/src/main/java/in/dragons/galaxy/EndlessScrollActivity.java index c19bfe628..9f006230d 100644 --- a/app/src/main/java/in/dragons/galaxy/EndlessScrollActivity.java +++ b/app/src/main/java/in/dragons/galaxy/EndlessScrollActivity.java @@ -68,7 +68,7 @@ abstract public class EndlessScrollActivity extends AppListActivity { protected EndlessScrollTask prepareTask(EndlessScrollTask task) { task.setContext(this); task.setErrorView((TextView) getListView().getEmptyView()); - if(listItems.isEmpty()) + if (listItems.isEmpty()) task.setProgressIndicator(findViewById(R.id.progress)); return task; } diff --git a/app/src/main/java/in/dragons/galaxy/GalaxyActivity.java b/app/src/main/java/in/dragons/galaxy/GalaxyActivity.java index 312ca3c12..d37a11f0f 100644 --- a/app/src/main/java/in/dragons/galaxy/GalaxyActivity.java +++ b/app/src/main/java/in/dragons/galaxy/GalaxyActivity.java @@ -1,57 +1,41 @@ package in.dragons.galaxy; import android.Manifest; -import android.annotation.TargetApi; -import android.app.AlertDialog; -import android.app.SearchManager; import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.DialogInterface; import android.content.Intent; -import android.content.SharedPreferences; import android.os.Build; import android.os.Bundle; -import android.preference.PreferenceManager; import android.support.design.widget.NavigationView; import android.support.v4.app.ActivityCompat; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBarDrawerToggle; -import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; -import android.widget.EditText; -import android.widget.ImageView; -import android.widget.SearchView; -import com.percolate.caffeine.PhoneUtils; -import com.percolate.caffeine.ToastUtils; import com.percolate.caffeine.ViewUtils; -import com.squareup.picasso.Picasso; import in.dragons.galaxy.fragment.FilterMenu; -public abstract class GalaxyActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { +public abstract class GalaxyActivity extends BaseActivity implements NavigationView.OnNavigationItemSelectedListener { - static protected boolean logout = false; - protected String Email; private NavigationView navigationView; + Toolbar toolbar; + DrawerLayout drawer; + ActionBarDrawerToggle toggle; - public static void cascadeFinish() { - GalaxyActivity.logout = true; - } + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); - protected void onCreateDrawer(Bundle savedInstanceState) { - logout = false; - - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); + toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); - DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); - ActionBarDrawerToggle toggle = new ActionBarDrawerToggle( + drawer = (DrawerLayout) findViewById(R.id.drawer_layout); + toggle = new ActionBarDrawerToggle( this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); drawer.addDrawerListener(toggle); toggle.syncState(); @@ -59,9 +43,6 @@ public abstract class GalaxyActivity extends AppCompatActivity implements Naviga navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); - Email = sharedPreferences.getString(PlayStoreApiAuthenticator.PREFERENCE_EMAIL, ""); - getUser(); ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); @@ -80,40 +61,6 @@ public abstract class GalaxyActivity extends AppCompatActivity implements Naviga ViewUtils.setText(header, R.id.usr_email, getResources().getString(R.string.header_usr_email)); } - public boolean isConnected() { - return PhoneUtils.isNetworkAvailable(this); - } - - public boolean isValidEmail(String Email) { - return !(Email.isEmpty() || isDummyEmail()); - } - - public boolean isDummyEmail() { - return (Email.contains("yalp.store.user")); - } - - public void notifyConnected() { - if (!isConnected()) - ToastUtils.quickToast(this, getResources().getString(R.string.error_no_network), true); - } - - public void parseRAW(String rawData) { - setNavHeaderInfo((NavigationView) findViewById(R.id.nav_view), - rawData.substring(rawData.indexOf("") + 6, rawData.indexOf("")), - rawData.substring(rawData.indexOf("") + 18, rawData.lastIndexOf(""))); - } - - public void setNavHeaderInfo(NavigationView navigationView, String Name, String URL) { - ViewUtils.setText(this, R.id.usr_name, Name); - ViewUtils.setText(this, R.id.usr_email, Email); - - Picasso.with(this) - .load(URL) - .placeholder(R.drawable.ic_user_placeholder) - .transform(new CircleTransform()) - .into((ImageView) ViewUtils.findViewById(this, R.id.usr_img)); - } - @Override protected void onResume() { Log.v(getClass().getSimpleName(), "Resuming activity"); @@ -183,65 +130,6 @@ public abstract class GalaxyActivity extends AppCompatActivity implements Naviga } } - @TargetApi(Build.VERSION_CODES.HONEYCOMB) - private void addQueryTextListener(MenuItem searchItem) { - SearchView searchView = (SearchView) searchItem.getActionView(); - SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); - if (null != searchManager) { - searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); - searchView.setQueryHint(getString(R.string.search_title)); - } - searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { - - @Override - public boolean onQueryTextChange(String query) { - return true; - } - - @Override - public boolean onQueryTextSubmit(String query) { - Intent i = new Intent(GalaxyActivity.this, SearchActivity.class); - i.setAction(Intent.ACTION_SEARCH); - i.putExtra(SearchManager.QUERY, query); - startActivity(i); - return false; - } - }); - } - - AlertDialog showLogOutDialog() { - return new AlertDialog.Builder(this) - .setMessage(R.string.dialog_message_logout) - .setTitle(R.string.dialog_title_logout) - .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - new PlayStoreApiAuthenticator(getApplicationContext()).logout(); - dialogInterface.dismiss(); - finishAll(); - } - }) - .setNegativeButton(android.R.string.cancel, null) - .show(); - } - - AlertDialog showFallbackSearchDialog() { - final EditText textView = new EditText(this); - return new AlertDialog.Builder(this) - .setView(textView) - .setPositiveButton(android.R.string.search_go, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - Intent i = new Intent(getApplicationContext(), SearchActivity.class); - i.setAction(Intent.ACTION_SEARCH); - i.putExtra(SearchManager.QUERY, textView.getText().toString()); - startActivity(i); - } - }) - .setNegativeButton(android.R.string.cancel, null) - .show(); - } - protected void finishAll() { logout = true; finish(); diff --git a/app/src/main/java/in/dragons/galaxy/InstalledAppsActivity.java b/app/src/main/java/in/dragons/galaxy/InstalledAppsActivity.java index 742d74b8c..6edae01b3 100644 --- a/app/src/main/java/in/dragons/galaxy/InstalledAppsActivity.java +++ b/app/src/main/java/in/dragons/galaxy/InstalledAppsActivity.java @@ -1,9 +1,6 @@ package in.dragons.galaxy; -import android.app.ActivityOptions; -import android.content.SharedPreferences; import android.os.Bundle; -import android.preference.PreferenceManager; import android.view.ContextMenu; import android.view.Menu; import android.view.View; @@ -19,10 +16,7 @@ public class InstalledAppsActivity extends AppListActivity { @Override protected void onCreate(Bundle savedInstanceState) { - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); - setTheme(sharedPreferences.getBoolean("THEME", true) ? R.style.AppTheme : R.style.AppTheme_Dark); super.onCreate(savedInstanceState); - ActivityOptions.makeSceneTransitionAnimation(this).toBundle(); setTitle(R.string.activity_title_updates_and_other_apps); } diff --git a/app/src/main/java/in/dragons/galaxy/ManualDownloadActivity.java b/app/src/main/java/in/dragons/galaxy/ManualDownloadActivity.java index 550bb6dde..b0d25fb9c 100644 --- a/app/src/main/java/in/dragons/galaxy/ManualDownloadActivity.java +++ b/app/src/main/java/in/dragons/galaxy/ManualDownloadActivity.java @@ -26,9 +26,7 @@ public class ManualDownloadActivity extends DetailsActivity { @Override protected void onCreate(Bundle savedInstanceState) { SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); - setTheme(sharedPreferences.getBoolean("THEME", true) ? R.style.AppTheme : R.style.AppTheme_Dark); super.onCreate(savedInstanceState); - onCreateDrawer(savedInstanceState); } @Override diff --git a/app/src/main/java/in/dragons/galaxy/SearchActivity.java b/app/src/main/java/in/dragons/galaxy/SearchActivity.java index c8ade3bad..6da5e346e 100644 --- a/app/src/main/java/in/dragons/galaxy/SearchActivity.java +++ b/app/src/main/java/in/dragons/galaxy/SearchActivity.java @@ -4,9 +4,7 @@ import android.app.AlertDialog; import android.app.SearchManager; import android.content.DialogInterface; import android.content.Intent; -import android.content.SharedPreferences; import android.os.Bundle; -import android.preference.PreferenceManager; import android.text.TextUtils; import android.util.Log; import android.view.Menu; @@ -30,8 +28,6 @@ public class SearchActivity extends EndlessScrollActivity { @Override protected void onCreate(Bundle savedInstanceState) { - SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); - setTheme(sharedPreferences.getBoolean("THEME", true) ? R.style.AppTheme : R.style.AppTheme_Dark); super.onCreate(savedInstanceState); } diff --git a/app/src/main/java/in/dragons/galaxy/TopCategoriesAdapter.java b/app/src/main/java/in/dragons/galaxy/TopCategoriesAdapter.java index e4d47e1f8..e2d8fa885 100644 --- a/app/src/main/java/in/dragons/galaxy/TopCategoriesAdapter.java +++ b/app/src/main/java/in/dragons/galaxy/TopCategoriesAdapter.java @@ -24,14 +24,12 @@ public class TopCategoriesAdapter extends RecyclerView.Adapter currentSignatures; - - static public boolean isFdroid(Context context) { - return getSignatureSet(context).size() == 1 && getSignatureSet(context).contains(SIGNATURE_FDROID); - } - - static public boolean isGithub(Context context) { - return getSignatureSet(context).size() == 1 && getSignatureSet(context).contains(SIGNATURE_GITHUB); - } - - static private Set getSignatureSet(Context context) { - if (null != currentSignatures) { - return currentSignatures; - } - currentSignatures = new HashSet<>(); - try { - for (android.content.pm.Signature signature : context.getPackageManager().getPackageInfo(BuildConfig.APPLICATION_ID, PackageManager.GET_SIGNATURES).signatures) { - currentSignatures.add(signature.toCharsString()); - } - } catch (PackageManager.NameNotFoundException e) { - // Unlikely - } - return currentSignatures; - } -} diff --git a/app/src/main/java/in/dragons/galaxy/selfupdate/Updater.java b/app/src/main/java/in/dragons/galaxy/selfupdate/Updater.java deleted file mode 100644 index 512b26160..000000000 --- a/app/src/main/java/in/dragons/galaxy/selfupdate/Updater.java +++ /dev/null @@ -1,81 +0,0 @@ -package in.dragons.galaxy.selfupdate; - -import android.content.Context; -import android.content.SharedPreferences; -import android.preference.PreferenceManager; - -import java.io.IOException; -import java.io.InputStream; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLConnection; - -import in.dragons.galaxy.BuildConfig; - -abstract public class Updater { - - static private final String CACHED_VERSION_CODE = "CACHED_VERSION_CODE"; - static private final String CACHED_VERSION_CODE_CHECKED_AT = "CACHED_VERSION_CODE_CHECKED_AT"; - static private final long CACHED_VERSION_CODE_VALID_FOR = 60 * 60; - - protected Context context; - - public Updater(Context context) { - this.context = context; - } - - abstract public String getUrlString(int versionCode); - - public int getLatestVersionCode() { - int latestVersionCode = getCachedVersionCode(); - if (latestVersionCode == 0) { - latestVersionCode = BuildConfig.VERSION_CODE; - while (isAvailable(latestVersionCode + 1)) { - latestVersionCode++; - } - cacheVersionCode(latestVersionCode); - } - return latestVersionCode; - } - - private int getCachedVersionCode() { - SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); - return (System.currentTimeMillis() - preferences.getLong(CACHED_VERSION_CODE_CHECKED_AT, 0)) > CACHED_VERSION_CODE_VALID_FOR - ? 0 - : preferences.getInt(CACHED_VERSION_CODE, 0) - ; - } - - private void cacheVersionCode(int versionCode) { - SharedPreferences.Editor preferences = PreferenceManager.getDefaultSharedPreferences(context).edit(); - preferences.putInt(CACHED_VERSION_CODE, versionCode); - preferences.putLong(CACHED_VERSION_CODE_CHECKED_AT, System.currentTimeMillis()); - preferences.commit(); - } - - private URL getUrl(int versionCode) { - try { - return new URL(getUrlString(versionCode)); - } catch (MalformedURLException e) { - // Unlikely - } - return null; - } - - private boolean isAvailable(int versionCode) { - try { - URLConnection connection = getUrl(versionCode).openConnection(); - if (connection instanceof HttpURLConnection) { - ((HttpURLConnection) connection).setInstanceFollowRedirects(false); - ((HttpURLConnection) connection).setRequestMethod("HEAD"); - return ((HttpURLConnection) connection).getResponseCode() < HttpURLConnection.HTTP_BAD_REQUEST; - } - InputStream in = connection.getInputStream(); - in.close(); - return true; - } catch (IOException x) { - return false; - } - } -} diff --git a/app/src/main/java/in/dragons/galaxy/selfupdate/UpdaterFactory.java b/app/src/main/java/in/dragons/galaxy/selfupdate/UpdaterFactory.java deleted file mode 100644 index 78041947c..000000000 --- a/app/src/main/java/in/dragons/galaxy/selfupdate/UpdaterFactory.java +++ /dev/null @@ -1,10 +0,0 @@ -package in.dragons.galaxy.selfupdate; - -import android.content.Context; - -public class UpdaterFactory { - - static public Updater get(Context context) { - return Signature.isFdroid(context) ? new UpdaterFdroid(context) : new UpdaterGithub(context); - } -} diff --git a/app/src/main/java/in/dragons/galaxy/selfupdate/UpdaterFdroid.java b/app/src/main/java/in/dragons/galaxy/selfupdate/UpdaterFdroid.java deleted file mode 100644 index c0a64bcd5..000000000 --- a/app/src/main/java/in/dragons/galaxy/selfupdate/UpdaterFdroid.java +++ /dev/null @@ -1,15 +0,0 @@ -package in.dragons.galaxy.selfupdate; - -import android.content.Context; - -class UpdaterFdroid extends Updater { - - public UpdaterFdroid(Context context) { - super(context); - } - - @Override - public String getUrlString(int versionCode) { - return "https://f-droid.org/repo/in.dragons.galaxy_" + versionCode + ".apk"; - } -} diff --git a/app/src/main/java/in/dragons/galaxy/selfupdate/UpdaterGithub.java b/app/src/main/java/in/dragons/galaxy/selfupdate/UpdaterGithub.java deleted file mode 100644 index f01534c6e..000000000 --- a/app/src/main/java/in/dragons/galaxy/selfupdate/UpdaterGithub.java +++ /dev/null @@ -1,15 +0,0 @@ -package in.dragons.galaxy.selfupdate; - -import android.content.Context; - -class UpdaterGithub extends Updater { - - public UpdaterGithub(Context context) { - super(context); - } - - @Override - public String getUrlString(int versionCode) { - return "https://github.com/whyorean/Galaxy/releases/download/0." + versionCode + "/in.dragons.galaxy_" + versionCode + ".apk"; - } -} diff --git a/app/src/main/java/in/dragons/galaxy/task/playstore/DetailsTask.java b/app/src/main/java/in/dragons/galaxy/task/playstore/DetailsTask.java index 3824d2a13..4dabedbcc 100644 --- a/app/src/main/java/in/dragons/galaxy/task/playstore/DetailsTask.java +++ b/app/src/main/java/in/dragons/galaxy/task/playstore/DetailsTask.java @@ -8,13 +8,11 @@ import com.github.yeriomin.playstoreapi.GooglePlayException; import java.io.IOException; -import in.dragons.galaxy.BuildConfig; import in.dragons.galaxy.ContextUtil; import in.dragons.galaxy.R; import in.dragons.galaxy.model.App; import in.dragons.galaxy.model.AppBuilder; import in.dragons.galaxy.model.ReviewBuilder; -import in.dragons.galaxy.selfupdate.UpdaterFactory; public class DetailsTask extends PlayStorePayloadTask { @@ -51,21 +49,6 @@ public class DetailsTask extends PlayStorePayloadTask { @Override protected App doInBackground(String... arguments) { - return packageName.equals(BuildConfig.APPLICATION_ID) ? getSelf() : super.doInBackground(arguments); - } - - private App getSelf() { - App app = new App(); - PackageManager pm = context.getPackageManager(); - try { - app = new App(pm.getPackageInfo(packageName, PackageManager.GET_META_DATA | PackageManager.GET_PERMISSIONS)); - app.setDisplayName(pm.getApplicationLabel(app.getPackageInfo().applicationInfo).toString()); - } catch (PackageManager.NameNotFoundException e) { - // App is not installed - } - int latestVersionCode = UpdaterFactory.get(context).getLatestVersionCode(); - app.setVersionCode(latestVersionCode); - app.setVersionName("0." + latestVersionCode); - return app; + return super.doInBackground(arguments); } } diff --git a/app/src/main/java/in/dragons/galaxy/task/playstore/ForegroundUpdatableAppsTask.java b/app/src/main/java/in/dragons/galaxy/task/playstore/ForegroundUpdatableAppsTask.java index 1b00ce0f2..ea953bf7a 100644 --- a/app/src/main/java/in/dragons/galaxy/task/playstore/ForegroundUpdatableAppsTask.java +++ b/app/src/main/java/in/dragons/galaxy/task/playstore/ForegroundUpdatableAppsTask.java @@ -17,8 +17,6 @@ import in.dragons.galaxy.GalaxyPermissionManager; import in.dragons.galaxy.R; import in.dragons.galaxy.UpdatableAppsActivity; import in.dragons.galaxy.model.App; -import in.dragons.galaxy.selfupdate.UpdaterFactory; -import in.dragons.galaxy.task.InstalledAppsTask; import static android.content.Context.DOWNLOAD_SERVICE; @@ -49,16 +47,6 @@ public class ForegroundUpdatableAppsTask extends UpdatableAppsTask implements Cl if (!new BlackWhiteListManager(context).isUpdatable(BuildConfig.APPLICATION_ID)) { return updatableApps; } - int latestVersionCode = UpdaterFactory.get(context).getLatestVersionCode(); - if (latestVersionCode > BuildConfig.VERSION_CODE) { - App Galaxy = InstalledAppsTask.getInstalledApp(context.getPackageManager(), BuildConfig.APPLICATION_ID); - if (null == Galaxy) { - return updatableApps; - } - Galaxy.setVersionCode(latestVersionCode); - Galaxy.setVersionName("0." + latestVersionCode); - updatableApps.add(Galaxy); - } return updatableApps; } diff --git a/app/src/main/java/in/dragons/galaxy/view/AppBadge.java b/app/src/main/java/in/dragons/galaxy/view/AppBadge.java index 40dde33ab..96453da9c 100644 --- a/app/src/main/java/in/dragons/galaxy/view/AppBadge.java +++ b/app/src/main/java/in/dragons/galaxy/view/AppBadge.java @@ -11,6 +11,8 @@ import java.util.ArrayList; import java.util.List; import java.util.WeakHashMap; +import in.dragons.galaxy.NetworkState; +import in.dragons.galaxy.PreferenceActivity; import in.dragons.galaxy.R; import in.dragons.galaxy.model.App; import in.dragons.galaxy.model.ImageSource; @@ -53,9 +55,9 @@ public abstract class AppBadge extends ListItem { private void drawIcon(ImageView imageView) { ImageSource imageSource = app.getIconInfo(); - if (null != imageSource.getApplicationInfo()) { + if (null != imageSource.getApplicationInfo() && !noImages()) { imageView.setImageDrawable(imageView.getContext().getPackageManager().getApplicationIcon(imageSource.getApplicationInfo())); - } else { + } else if(!noImages()) { Picasso .with(view.getContext()) .load(imageSource.getUrl()) @@ -73,4 +75,8 @@ public abstract class AppBadge extends ListItem { textView.setVisibility(View.GONE); } } + + private boolean noImages() { + return NetworkState.isMetered(view.getContext()) && PreferenceActivity.getBoolean(view.getContext(), PreferenceActivity.PREFERENCE_NO_IMAGES); + } } diff --git a/app/src/main/res/layout/about_activity_layout.xml b/app/src/main/res/layout/about_activity_layout.xml deleted file mode 100644 index c46f8f4b1..000000000 --- a/app/src/main/res/layout/about_activity_layout.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/accounts_layout.xml b/app/src/main/res/layout/accounts_layout.xml deleted file mode 100644 index 99eaebdfe..000000000 --- a/app/src/main/res/layout/accounts_layout.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 1c9afb804..a9a8e1be7 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,19 +1,40 @@ - - + android:layout_height="match_parent" + android:fitsSystemWindows="true"> + + + + + + + + - + app:menu="@menu/nav_menu" /> + \ No newline at end of file diff --git a/app/src/main/res/layout/app_abt_inc.xml b/app/src/main/res/layout/app_abt_inc.xml index b0b41447e..20c6c6bd9 100644 --- a/app/src/main/res/layout/app_abt_inc.xml +++ b/app/src/main/res/layout/app_abt_inc.xml @@ -1,303 +1,284 @@ - + android:layout_height="match_parent" + android:fadeScrollbars="true" + app:layout_behavior="@string/appbar_scrolling_view_behavior"> - + android:layout_height="match_parent" + android:layout_marginStart="2dp" + android:layout_marginEnd="2dp" + android:orientation="vertical"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + app:cardUseCompatPadding="true"> + android:orientation="vertical"> + + + android:gravity="center" + android:text="@string/app_name" + android:textSize="20sp" /> - + android:layout_height="wrap_content" + android:layout_marginBottom="15dp" + android:gravity="center" + android:textSize="18sp" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_height="match_parent" + android:gravity="center" + android:padding="10dp" + android:text="@string/about_app" + android:textSize="14sp" /> - + - + android:layout_gravity="bottom" + app:cardUseCompatPadding="true"> - - - + android:layout_height="30dp" + android:layout_gravity="center" + android:padding="5dp" + android:weightSum="6"> - - - - - - - - + android:id="@+id/github" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="2" + android:clickable="true" + android:drawablePadding="5dp" + android:drawableStart="@drawable/ic_github" + android:drawableTint="?android:textColor" + android:focusable="true" + android:text="@string/about_github" /> - - + android:id="@+id/xda" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="2" + android:clickable="true" + android:drawablePadding="5dp" + android:drawableStart="@drawable/ic_xda" + android:drawableTint="@color/colorOrange" + android:focusable="true" + android:text="@string/about_xda" /> + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/app_acc_inc.xml b/app/src/main/res/layout/app_acc_inc.xml index ab2ea7f95..731fd4249 100644 --- a/app/src/main/res/layout/app_acc_inc.xml +++ b/app/src/main/res/layout/app_acc_inc.xml @@ -1,26 +1,23 @@ - + android:layout_height="match_parent" + android:fadeScrollbars="true" + app:layout_behavior="@string/appbar_scrolling_view_behavior"> + android:layout_height="wrap_content" + android:layout_marginEnd="2dp" + android:layout_marginStart="2dp" + android:orientation="vertical"> + android:layout_height="@dimen/card_height" + app:cardUseCompatPadding="true"> @@ -63,12 +60,14 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="14sp" /> + + @@ -119,12 +118,8 @@ + android:layout_height="@dimen/card_height" + app:cardUseCompatPadding="true"> + android:text="@string/acc_dummy" /> @@ -247,11 +242,8 @@ + android:layout_height="@dimen/card_height" + app:cardUseCompatPadding="true"> + android:text="@string/acc_google" /> @@ -357,8 +349,6 @@ android:theme="@style/Widget.AppCompat.Button.Borderless.Colored" /> + - - - - + \ No newline at end of file diff --git a/app/src/main/res/layout/app_bar_main.xml b/app/src/main/res/layout/app_bar_main.xml deleted file mode 100644 index 79b1d6893..000000000 --- a/app/src/main/res/layout/app_bar_main.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/app_beta_inc.xml b/app/src/main/res/layout/app_beta_inc.xml index 61fe94144..b95715c43 100644 --- a/app/src/main/res/layout/app_beta_inc.xml +++ b/app/src/main/res/layout/app_beta_inc.xml @@ -15,30 +15,31 @@ app:cardElevation="2dp" app:contentPadding="5dp"> - + - + + + android:textColor="@color/white" + android:theme="@style/Widget.AppCompat.Button.Borderless.Colored" /> + android:layout_gravity="end" + android:orientation="horizontal">