mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-12-24 01:48:23 +01:00
Implemented ItemClickListener for the nav drawer.
This commit is contained in:
parent
248aca0fb9
commit
61cc6089fa
@ -22,6 +22,7 @@ import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.ActionBarDrawerToggle;
|
||||
import androidx.appcompat.app.AppCompatDelegate;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.coordinatorlayout.widget.CoordinatorLayout;
|
||||
import androidx.core.view.GravityCompat;
|
||||
@ -93,6 +94,9 @@ import ml.docilealligator.infinityforreddit.SubscribedUserDatabase.SubscribedUse
|
||||
import ml.docilealligator.infinityforreddit.Utils.SharedPreferencesUtils;
|
||||
import retrofit2.Retrofit;
|
||||
|
||||
import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_NO;
|
||||
import static androidx.appcompat.app.AppCompatDelegate.MODE_NIGHT_YES;
|
||||
|
||||
public class MainActivity extends BaseActivity implements SortTypeSelectionCallback,
|
||||
PostTypeBottomSheetFragment.PostTypeSelectionCallback, PostLayoutBottomSheetFragment.PostLayoutSelectionCallback {
|
||||
|
||||
@ -497,7 +501,75 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
||||
fab.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
adapter = new NavigationDrawerRecyclerViewAdapter(this, mAccountName, mProfileImageUrl, mBannerImageUrl, mKarma);
|
||||
adapter = new NavigationDrawerRecyclerViewAdapter(this, mAccountName, mProfileImageUrl,
|
||||
mBannerImageUrl, mKarma, new NavigationDrawerRecyclerViewAdapter.ItemClickListener() {
|
||||
@Override
|
||||
public void onMenuClick(int stringId) {
|
||||
Intent intent = null;
|
||||
switch (stringId) {
|
||||
case R.string.profile:
|
||||
intent = new Intent(MainActivity.this, ViewUserDetailActivity.class);
|
||||
intent.putExtra(ViewUserDetailActivity.EXTRA_USER_NAME_KEY, mAccountName);
|
||||
break;
|
||||
case R.string.subscriptions:
|
||||
intent = new Intent(MainActivity.this, SubscribedThingListingActivity.class);
|
||||
break;
|
||||
case R.string.multi_reddit:
|
||||
intent = new Intent(MainActivity.this, MultiRedditListingActivity.class);
|
||||
break;
|
||||
case R.string.inbox:
|
||||
intent = new Intent(MainActivity.this, ViewMessageActivity.class);
|
||||
break;
|
||||
case R.string.upvoted:
|
||||
intent = new Intent(MainActivity.this, AccountPostsActivity.class);
|
||||
intent.putExtra(AccountPostsActivity.EXTRA_USER_WHERE, PostDataSource.USER_WHERE_UPVOTED);
|
||||
break;
|
||||
case R.string.downvoted:
|
||||
intent = new Intent(MainActivity.this, AccountPostsActivity.class);
|
||||
intent.putExtra(AccountPostsActivity.EXTRA_USER_WHERE, PostDataSource.USER_WHERE_DOWNVOTED);
|
||||
break;
|
||||
case R.string.hidden:
|
||||
intent = new Intent(MainActivity.this, AccountPostsActivity.class);
|
||||
intent.putExtra(AccountPostsActivity.EXTRA_USER_WHERE, PostDataSource.USER_WHERE_HIDDEN);
|
||||
break;
|
||||
case R.string.saved:
|
||||
intent = new Intent(MainActivity.this, AccountSavedThingActivity.class);
|
||||
break;
|
||||
case R.string.gilded:
|
||||
intent = new Intent(MainActivity.this, AccountPostsActivity.class);
|
||||
intent.putExtra(AccountPostsActivity.EXTRA_USER_WHERE, PostDataSource.USER_WHERE_GILDED);
|
||||
break;
|
||||
case R.string.light_theme:
|
||||
mSharedPreferences.edit().putString(SharedPreferencesUtils.THEME_KEY, "1").apply();
|
||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES);
|
||||
if(mSharedPreferences.getBoolean(SharedPreferencesUtils.AMOLED_DARK_KEY, false)) {
|
||||
getTheme().applyStyle(R.style.Theme_Default_AmoledDark, true);
|
||||
} else {
|
||||
getTheme().applyStyle(R.style.Theme_Default_NormalDark, true);
|
||||
}
|
||||
break;
|
||||
case R.string.dark_theme:
|
||||
mSharedPreferences.edit().putString(SharedPreferencesUtils.THEME_KEY, "0").apply();
|
||||
AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_NO);
|
||||
getTheme().applyStyle(R.style.Theme_Default, true);
|
||||
break;
|
||||
case R.string.settings:
|
||||
intent = new Intent(MainActivity.this, SettingsActivity.class);
|
||||
|
||||
}
|
||||
if (intent != null) {
|
||||
startActivity(intent);
|
||||
}
|
||||
drawer.closeDrawers();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSubscribedSubredditClick(String subredditName) {
|
||||
Intent intent = new Intent(MainActivity.this, ViewSubredditDetailActivity.class);
|
||||
intent.putExtra(ViewSubredditDetailActivity.EXTRA_SUBREDDIT_NAME_KEY, subredditName);
|
||||
startActivity(intent);
|
||||
}
|
||||
});
|
||||
navDrawerRecyclerView.setLayoutManager(new LinearLayoutManager(this));
|
||||
navDrawerRecyclerView.setAdapter(adapter);
|
||||
|
||||
|
@ -28,6 +28,11 @@ import ml.docilealligator.infinityforreddit.SubscribedSubredditDatabase.Subscrib
|
||||
import pl.droidsonroids.gif.GifImageView;
|
||||
|
||||
public class NavigationDrawerRecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||
public interface ItemClickListener {
|
||||
void onMenuClick(int stringId);
|
||||
void onSubscribedSubredditClick(String subredditName);
|
||||
}
|
||||
|
||||
private static final int VIEW_TYPE_NAV_HEADER = 0;
|
||||
private static final int VIEW_TYPE_MENU_GROUP_TITLE = 1;
|
||||
private static final int VIEW_TYPE_MENU_ITEM = 2;
|
||||
@ -42,12 +47,14 @@ public class NavigationDrawerRecyclerViewAdapter extends RecyclerView.Adapter<Re
|
||||
private String userIconUrl;
|
||||
private String userBannerUrl;
|
||||
private int karma;
|
||||
private ItemClickListener itemClickListener;
|
||||
private boolean isLoggedIn;
|
||||
private boolean isInMainPage = true;
|
||||
private ArrayList<SubscribedSubredditData> subscribedSubreddits;
|
||||
private ArrayList<Account> accounts;
|
||||
|
||||
public NavigationDrawerRecyclerViewAdapter(Context context, String accountName, String userIconUrl,
|
||||
String userBannerUrl, int karma) {
|
||||
String userBannerUrl, int karma, ItemClickListener itemClickListener) {
|
||||
this.context = context;
|
||||
resources = context.getResources();
|
||||
glide = Glide.with(context);
|
||||
@ -56,6 +63,7 @@ public class NavigationDrawerRecyclerViewAdapter extends RecyclerView.Adapter<Re
|
||||
this.userBannerUrl = userBannerUrl;
|
||||
this.karma = karma;
|
||||
isLoggedIn = accountName != null;
|
||||
this.itemClickListener = itemClickListener;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -209,10 +217,13 @@ public class NavigationDrawerRecyclerViewAdapter extends RecyclerView.Adapter<Re
|
||||
((MenuItemViewHolder) holder).menuTextView.setText(stringId);
|
||||
((MenuItemViewHolder) holder).menuTextView.setCompoundDrawablesWithIntrinsicBounds(
|
||||
drawableId, 0, 0, 0);
|
||||
int finalStringId = stringId;
|
||||
((MenuItemViewHolder) holder).itemView.setOnClickListener(view -> itemClickListener.onMenuClick(finalStringId));
|
||||
} else if (holder instanceof SubscribedThingViewHolder) {
|
||||
SubscribedSubredditData subreddit = subscribedSubreddits.get(position - CURRENT_MENU_ITEMS);
|
||||
((SubscribedThingViewHolder) holder).subredditNameTextView.setText(subreddit.getName());
|
||||
String subredditName = subreddit.getName();
|
||||
String iconUrl = subreddit.getIconUrl();
|
||||
((SubscribedThingViewHolder) holder).subredditNameTextView.setText(subredditName);
|
||||
if (iconUrl != null && !iconUrl.equals("")) {
|
||||
glide.load(iconUrl)
|
||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
||||
@ -224,6 +235,10 @@ public class NavigationDrawerRecyclerViewAdapter extends RecyclerView.Adapter<Re
|
||||
.apply(RequestOptions.bitmapTransform(new RoundedCornersTransformation(72, 0)))
|
||||
.into(((SubscribedThingViewHolder) holder).iconGifImageView);
|
||||
}
|
||||
|
||||
((SubscribedThingViewHolder) holder).itemView.setOnClickListener(view -> {
|
||||
itemClickListener.onSubscribedSubredditClick(subredditName);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -242,7 +257,8 @@ public class NavigationDrawerRecyclerViewAdapter extends RecyclerView.Adapter<Re
|
||||
}
|
||||
|
||||
public void changeAccountsDataset(List<Account> accounts) {
|
||||
|
||||
this.accounts = (ArrayList<Account>) accounts;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
class NavHeaderViewHolder extends RecyclerView.ViewHolder {
|
||||
@ -257,7 +273,7 @@ public class NavigationDrawerRecyclerViewAdapter extends RecyclerView.Adapter<Re
|
||||
@BindView(R.id.account_switcher_image_view_nav_header_main)
|
||||
ImageView dropIconImageView;
|
||||
|
||||
public NavHeaderViewHolder(@NonNull View itemView) {
|
||||
NavHeaderViewHolder(@NonNull View itemView) {
|
||||
super(itemView);
|
||||
ButterKnife.bind(this, itemView);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user