summaryrefslogtreecommitdiffstats
path: root/app/src/main/java/app/fedilab/android/activities/MastodonListActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/app/fedilab/android/activities/MastodonListActivity.java')
-rw-r--r--app/src/main/java/app/fedilab/android/activities/MastodonListActivity.java47
1 files changed, 43 insertions, 4 deletions
diff --git a/app/src/main/java/app/fedilab/android/activities/MastodonListActivity.java b/app/src/main/java/app/fedilab/android/activities/MastodonListActivity.java
index f4cd975b0..4b9d35d76 100644
--- a/app/src/main/java/app/fedilab/android/activities/MastodonListActivity.java
+++ b/app/src/main/java/app/fedilab/android/activities/MastodonListActivity.java
@@ -15,8 +15,6 @@ package app.fedilab.android.activities;
* see <http://www.gnu.org/licenses>. */
-import static app.fedilab.android.helper.PinnedTimelineHelper.sortListPositionAsc;
-
import android.content.Intent;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
@@ -39,6 +37,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import app.fedilab.android.BaseMainActivity;
@@ -78,6 +77,7 @@ public class MastodonListActivity extends BaseActivity implements MastodonListAd
private boolean flagLoading;
private String max_id;
private FragmentMastodonTimeline fragmentMastodonTimeline;
+ private boolean orderASC;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -92,6 +92,7 @@ public class MastodonListActivity extends BaseActivity implements MastodonListAd
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(ContextCompat.getColor(this, R.color.cyanea_primary)));
}
flagLoading = false;
+ orderASC = true;
max_id = null;
accountsVM = new ViewModelProvider(MastodonListActivity.this).get(AccountsVM.class);
timelinesVM = new ViewModelProvider(MastodonListActivity.this).get(TimelinesVM.class);
@@ -114,7 +115,7 @@ public class MastodonListActivity extends BaseActivity implements MastodonListAd
}
}
}
- sortListPositionAsc(mastodonListList);
+ sortAsc(mastodonListList);
mastodonListAdapter = new MastodonListAdapter(mastodonListList);
mastodonListAdapter.actionOnList = this;
binding.notContent.setVisibility(View.GONE);
@@ -127,6 +128,19 @@ public class MastodonListActivity extends BaseActivity implements MastodonListAd
});
}
+
+ private void sortAsc(List<MastodonList> mastodonLists) {
+ Collections.sort(mastodonLists, (obj1, obj2) -> obj1.title.compareToIgnoreCase(obj2.title));
+ orderASC = true;
+ invalidateOptionsMenu();
+ }
+
+ private void sortDesc(List<MastodonList> mastodonLists) {
+ Collections.sort(mastodonLists, (obj1, obj2) -> obj2.title.compareToIgnoreCase(obj1.title));
+ orderASC = false;
+ invalidateOptionsMenu();
+ }
+
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
@@ -279,8 +293,15 @@ public class MastodonListActivity extends BaseActivity implements MastodonListAd
if (mastodonListList == null) {
mastodonListList = new ArrayList<>();
}
- if (newMastodonList != null && mastodonListAdapter != null) {
+ if (newMastodonList != null) {
mastodonListList.add(0, newMastodonList);
+ if (mastodonListAdapter == null) {
+ mastodonListAdapter = new MastodonListAdapter(mastodonListList);
+ mastodonListAdapter.actionOnList = MastodonListActivity.this;
+ binding.notContent.setVisibility(View.GONE);
+ binding.recyclerView.setAdapter(mastodonListAdapter);
+ binding.recyclerView.setLayoutManager(new LinearLayoutManager(MastodonListActivity.this));
+ }
mastodonListAdapter.notifyItemInserted(0);
} else {
Toasty.error(MastodonListActivity.this, getString(R.string.toast_error), Toasty.LENGTH_LONG).show();
@@ -367,6 +388,16 @@ public class MastodonListActivity extends BaseActivity implements MastodonListAd
});
dialogBuilder.setNegativeButton(R.string.cancel, (dialog, id) -> dialog.dismiss());
dialogBuilder.create().show();
+ } else if (item.getItemId() == R.id.action_order) {
+ if (mastodonListList != null && mastodonListList.size() > 0 && mastodonListAdapter != null) {
+ if (orderASC) {
+ sortDesc(mastodonListList);
+ } else {
+ sortAsc(mastodonListList);
+ }
+ invalidateOptionsMenu();
+ mastodonListAdapter.notifyItemRangeChanged(0, mastodonListList.size());
+ }
}
return super.onOptionsItemSelected(item);
}
@@ -396,6 +427,14 @@ public class MastodonListActivity extends BaseActivity implements MastodonListAd
public boolean onCreateOptionsMenu(@NonNull Menu menu) {
if (!canGoBack) {
getMenuInflater().inflate(R.menu.menu_main_list, menu);
+ MenuItem order = menu.findItem(R.id.action_order);
+ if (order != null) {
+ if (orderASC) {
+ order.setIcon(R.drawable.ic_baseline_filter_asc_24);
+ } else {
+ order.setIcon(R.drawable.ic_baseline_filter_desc_24);
+ }
+ }
} else {
getMenuInflater().inflate(R.menu.menu_list, menu);
}