From c8c2ce114cf72c7a493a1bcf290e724069bb29c9 Mon Sep 17 00:00:00 2001 From: PhilippTheCat Date: Mon, 9 Sep 2019 17:50:05 +0200 Subject: [PATCH 1/2] Multireddit dropdown list in drawer --- .../redditslide/Activities/MainActivity.java | 82 ++++++++++++++++--- app/src/main/res/layout/drawer_loggedin.xml | 41 +++++++++- .../res/layout/multireddit_textview_white.xml | 22 +++++ 3 files changed, 130 insertions(+), 15 deletions(-) create mode 100644 app/src/main/res/layout/multireddit_textview_white.xml diff --git a/app/src/main/java/me/ccrama/redditslide/Activities/MainActivity.java b/app/src/main/java/me/ccrama/redditslide/Activities/MainActivity.java index 34c6951977..1fa5a91c35 100644 --- a/app/src/main/java/me/ccrama/redditslide/Activities/MainActivity.java +++ b/app/src/main/java/me/ccrama/redditslide/Activities/MainActivity.java @@ -967,6 +967,7 @@ public void run() { if (Authentication.isLoggedIn) { new AsyncNotificationBadge().executeOnExecutor( AsyncTask.THREAD_POOL_EXECUTOR); + new SyncMultiReddits().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } if (!Reddit.appRestart.getString(CheckForMail.SUBS_TO_GET, "").isEmpty()) { new CheckForMail.AsyncGetSubs(MainActivity.this).executeOnExecutor( @@ -1482,21 +1483,14 @@ public void doDrawer() { if (Authentication.isLoggedIn && Authentication.didOnline) { header = inflater.inflate(R.layout.drawer_loggedin, drawerSubList, false); + LinearLayout multiReddits = header.findViewById(R.id.multi); headerMain = header; hea = header.findViewById(R.id.back); drawerSubList.addHeaderView(header, null, false); ((TextView) header.findViewById(R.id.name)).setText(Authentication.name); - header.findViewById(R.id.multi).setOnClickListener(new OnSingleClickListener() { - @Override - public void onSingleClick(View view) { - if (runAfterLoad == null) { - Intent inte = new Intent(MainActivity.this, MultiredditOverview.class); - MainActivity.this.startActivity(inte); - } - } - }); - header.findViewById(R.id.multi).setOnLongClickListener(new View.OnLongClickListener() { + + multiReddits.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { new MaterialDialog.Builder(MainActivity.this).inputRange(3, 20) @@ -1529,6 +1523,24 @@ public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) return true; } }); + LinearLayout multireddits_area = header.findViewById(R.id.multireddits_area); + + multireddits_area.setVisibility(View.GONE); + findViewById(R.id.multireddits_flip).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (multireddits_area.getVisibility() == View.GONE) { + expand(multireddits_area); + flipAnimator(false, header.findViewById(R.id.multireddits_flip)).start(); + header.findViewById(R.id.multireddits_flip).setContentDescription(getResources().getString(R.string.btn_collapse)); + } else { + collapse(multireddits_area); + flipAnimator(true, header.findViewById(R.id.multireddits_flip)).start(); + header.findViewById(R.id.multireddits_flip).setContentDescription(getResources().getString(R.string.btn_expand)); + } + + } + }); header.findViewById(R.id.discover).setOnClickListener(new OnSingleClickListener() { @Override @@ -1820,6 +1832,7 @@ public void onSingleClick(View view) { } else if (Authentication.didOnline) { header = inflater.inflate(R.layout.drawer_loggedout, drawerSubList, false); + LinearLayout multiReddits = header.findViewById(R.id.multi); drawerSubList.addHeaderView(header, null, false); headerMain = header; hea = header.findViewById(R.id.back); @@ -1973,7 +1986,7 @@ public void onSingleClick(View view) { }); headerMain = header; - header.findViewById(R.id.multi).setOnClickListener(new View.OnClickListener() { + multiReddits.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { new MaterialDialog.Builder(MainActivity.this).inputRange(3, 20) @@ -4832,6 +4845,53 @@ protected Subreddit doInBackground(String... params) { } } + public class SyncMultiReddits extends AsyncTask { + @Override + protected Void doInBackground(Void... params) { + try { + UserSubscriptions.syncMultiReddits(MainActivity.this); + } catch (final Exception e) { + runOnUiThread(new Runnable() { + @Override + public void run() { + new AlertDialogWrapper.Builder(MainActivity.this) + .setTitle(R.string.err_title) + .setMessage(e instanceof ApiException ? getString(R.string.misc_err) + ": " + ((ApiException) e).getExplanation() + "\n" + getString(R.string.misc_retry) : getString(R.string.misc_err)) + .setNeutralButton(R.string.btn_ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + finish(); + } + }).create().show(); + } + }); + e.printStackTrace(); + } + return null; + } + + @Override + protected void onPostExecute(Void aVoid) { + LinearLayout multireddits_area = headerMain.findViewById(R.id.multireddits_area); + + for (MultiReddit multiReddit : UserSubscriptions.multireddits) { + final View t = + getLayoutInflater().inflate(R.layout.multireddit_textview_white, multireddits_area, + false); + ((TextView) t.findViewById(R.id.name)).setText(multiReddit.getDisplayName()); + + t.setOnClickListener(v -> { + Intent intent = new Intent(MainActivity.this, MultiredditOverview.class); + + intent.putExtra(MultiredditOverview.EXTRA_MULTI, multiReddit.getFullName()); + startActivity(intent); + }); + + multireddits_area.addView(t); + } + } + } + public class AsyncNotificationBadge extends AsyncTask { int count; diff --git a/app/src/main/res/layout/drawer_loggedin.xml b/app/src/main/res/layout/drawer_loggedin.xml index 32b3592568..67a00c9833 100644 --- a/app/src/main/res/layout/drawer_loggedin.xml +++ b/app/src/main/res/layout/drawer_loggedin.xml @@ -407,7 +407,14 @@ - + - - - + + + + + + + + + + + + + + \ No newline at end of file From b99f08a5cd5d6a9f075e2299c82e2ee51d3f1dc7 Mon Sep 17 00:00:00 2001 From: PhilippTheCat Date: Wed, 18 Sep 2019 13:08:34 +0200 Subject: [PATCH 2/2] Multireddit dropdown code review changes --- .../redditslide/Activities/MainActivity.java | 41 +++++-------------- app/src/main/res/layout/drawer_loggedin.xml | 10 ++--- .../res/layout/multireddit_textview_white.xml | 14 +++---- 3 files changed, 21 insertions(+), 44 deletions(-) diff --git a/app/src/main/java/me/ccrama/redditslide/Activities/MainActivity.java b/app/src/main/java/me/ccrama/redditslide/Activities/MainActivity.java index 1fa5a91c35..e55028b456 100644 --- a/app/src/main/java/me/ccrama/redditslide/Activities/MainActivity.java +++ b/app/src/main/java/me/ccrama/redditslide/Activities/MainActivity.java @@ -1483,7 +1483,7 @@ public void doDrawer() { if (Authentication.isLoggedIn && Authentication.didOnline) { header = inflater.inflate(R.layout.drawer_loggedin, drawerSubList, false); - LinearLayout multiReddits = header.findViewById(R.id.multi); + RelativeLayout multiReddits = header.findViewById(R.id.multi); headerMain = header; hea = header.findViewById(R.id.back); @@ -1523,20 +1523,19 @@ public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) return true; } }); - LinearLayout multireddits_area = header.findViewById(R.id.multireddits_area); + LinearLayout multireddits_area = header.findViewById(R.id.expand_multireddits); - multireddits_area.setVisibility(View.GONE); - findViewById(R.id.multireddits_flip).setOnClickListener(new View.OnClickListener() { + findViewById(R.id.godown_multireddits).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (multireddits_area.getVisibility() == View.GONE) { expand(multireddits_area); - flipAnimator(false, header.findViewById(R.id.multireddits_flip)).start(); - header.findViewById(R.id.multireddits_flip).setContentDescription(getResources().getString(R.string.btn_collapse)); + flipAnimator(false, header.findViewById(R.id.godown_multireddits)).start(); + header.findViewById(R.id.godown_multireddits).setContentDescription(getResources().getString(R.string.btn_collapse)); } else { collapse(multireddits_area); - flipAnimator(true, header.findViewById(R.id.multireddits_flip)).start(); - header.findViewById(R.id.multireddits_flip).setContentDescription(getResources().getString(R.string.btn_expand)); + flipAnimator(true, header.findViewById(R.id.godown_multireddits)).start(); + header.findViewById(R.id.godown_multireddits).setContentDescription(getResources().getString(R.string.btn_expand)); } } @@ -4848,35 +4847,17 @@ protected Subreddit doInBackground(String... params) { public class SyncMultiReddits extends AsyncTask { @Override protected Void doInBackground(Void... params) { - try { - UserSubscriptions.syncMultiReddits(MainActivity.this); - } catch (final Exception e) { - runOnUiThread(new Runnable() { - @Override - public void run() { - new AlertDialogWrapper.Builder(MainActivity.this) - .setTitle(R.string.err_title) - .setMessage(e instanceof ApiException ? getString(R.string.misc_err) + ": " + ((ApiException) e).getExplanation() + "\n" + getString(R.string.misc_retry) : getString(R.string.misc_err)) - .setNeutralButton(R.string.btn_ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - finish(); - } - }).create().show(); - } - }); - e.printStackTrace(); - } + UserSubscriptions.syncMultiReddits(MainActivity.this); return null; } @Override protected void onPostExecute(Void aVoid) { - LinearLayout multireddits_area = headerMain.findViewById(R.id.multireddits_area); + LinearLayout multiredditsArea = headerMain.findViewById(R.id.expand_multireddits); for (MultiReddit multiReddit : UserSubscriptions.multireddits) { final View t = - getLayoutInflater().inflate(R.layout.multireddit_textview_white, multireddits_area, + getLayoutInflater().inflate(R.layout.multireddit_textview_white, multiredditsArea, false); ((TextView) t.findViewById(R.id.name)).setText(multiReddit.getDisplayName()); @@ -4887,7 +4868,7 @@ protected void onPostExecute(Void aVoid) { startActivity(intent); }); - multireddits_area.addView(t); + multiredditsArea.addView(t); } } } diff --git a/app/src/main/res/layout/drawer_loggedin.xml b/app/src/main/res/layout/drawer_loggedin.xml index 67a00c9833..f591d6e9fa 100644 --- a/app/src/main/res/layout/drawer_loggedin.xml +++ b/app/src/main/res/layout/drawer_loggedin.xml @@ -408,14 +408,13 @@ + android:orientation="vertical" + android:visibility="gone"> + android:paddingEnd="18dp"> - - - + android:textColor="#fff" + android:textSize="14sp" /> \ No newline at end of file