mirror of
https://codeberg.org/Bazsalanszky/Infinity-For-Lemmy.git
synced 2024-11-07 19:27:26 +01:00
Use volume keys to navigate posts
This commit is contained in:
parent
f7eaa7ca06
commit
027cbdb7a3
@ -5,6 +5,7 @@ import android.content.res.Configuration;
|
|||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.view.KeyEvent;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@ -159,6 +160,11 @@ public class AccountPostsActivity extends BaseActivity implements SortTypeSelect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||||
|
return ((FragmentCommunicator) mFragment).handleKeyDown(keyCode) || super.onKeyDown(keyCode, event);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SharedPreferences getSharedPreferences() {
|
public SharedPreferences getSharedPreferences() {
|
||||||
return mSharedPreferences;
|
return mSharedPreferences;
|
||||||
|
@ -5,6 +5,7 @@ import android.content.res.Configuration;
|
|||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.view.KeyEvent;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@ -151,6 +152,11 @@ public class AccountSavedThingActivity extends BaseActivity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||||
|
return sectionsPagerAdapter.handleKeyDown(keyCode) || super.onKeyDown(keyCode, event);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SharedPreferences getSharedPreferences() {
|
public SharedPreferences getSharedPreferences() {
|
||||||
return mSharedPreferences;
|
return mSharedPreferences;
|
||||||
@ -339,6 +345,10 @@ public class AccountSavedThingActivity extends BaseActivity {
|
|||||||
return fragment;
|
return fragment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean handleKeyDown(int keyCode) {
|
||||||
|
return viewPager.getCurrentItem() == 0 && postFragment.handleKeyDown(keyCode);
|
||||||
|
}
|
||||||
|
|
||||||
public void refresh() {
|
public void refresh() {
|
||||||
if (viewPager.getCurrentItem() == 0) {
|
if (viewPager.getCurrentItem() == 0) {
|
||||||
if (postFragment != null) {
|
if (postFragment != null) {
|
||||||
|
@ -5,6 +5,7 @@ import android.content.res.Configuration;
|
|||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.view.KeyEvent;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@ -176,6 +177,11 @@ public class FilteredThingActivity extends BaseActivity implements SortTypeSelec
|
|||||||
postLayoutBottomSheetFragment = new PostLayoutBottomSheetFragment();
|
postLayoutBottomSheetFragment = new PostLayoutBottomSheetFragment();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||||
|
return ((FragmentCommunicator) mFragment).handleKeyDown(keyCode) || super.onKeyDown(keyCode, event);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SharedPreferences getSharedPreferences() {
|
public SharedPreferences getSharedPreferences() {
|
||||||
return mSharedPreferences;
|
return mSharedPreferences;
|
||||||
|
@ -8,6 +8,7 @@ import android.content.res.Resources;
|
|||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.TypedValue;
|
import android.util.TypedValue;
|
||||||
|
import android.view.KeyEvent;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@ -863,6 +864,11 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||||
|
return sectionsPagerAdapter.handleKeyDown(keyCode) || super.onKeyDown(keyCode, event);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onSaveInstanceState(@NonNull Bundle outState) {
|
protected void onSaveInstanceState(@NonNull Bundle outState) {
|
||||||
super.onSaveInstanceState(outState);
|
super.onSaveInstanceState(outState);
|
||||||
@ -1071,6 +1077,27 @@ public class MainActivity extends BaseActivity implements SortTypeSelectionCallb
|
|||||||
return fragment;
|
return fragment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean handleKeyDown(int keyCode) {
|
||||||
|
if (mAccessToken == null) {
|
||||||
|
switch (viewPager.getCurrentItem()) {
|
||||||
|
case 0:
|
||||||
|
return popularPostFragment.handleKeyDown(keyCode);
|
||||||
|
case 1:
|
||||||
|
return allPostFragment.handleKeyDown(keyCode);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
switch (viewPager.getCurrentItem()) {
|
||||||
|
case 0:
|
||||||
|
return frontPagePostFragment.handleKeyDown(keyCode);
|
||||||
|
case 1:
|
||||||
|
return popularPostFragment.handleKeyDown(keyCode);
|
||||||
|
case 2:
|
||||||
|
return allPostFragment.handleKeyDown(keyCode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
boolean startLazyMode() {
|
boolean startLazyMode() {
|
||||||
if (mAccessToken == null) {
|
if (mAccessToken == null) {
|
||||||
switch (viewPager.getCurrentItem()) {
|
switch (viewPager.getCurrentItem()) {
|
||||||
|
@ -6,6 +6,7 @@ import android.content.res.Configuration;
|
|||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.view.KeyEvent;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@ -170,6 +171,11 @@ public class SearchResultActivity extends BaseActivity implements SortTypeSelect
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||||
|
return sectionsPagerAdapter.handleKeyDown(keyCode) || super.onKeyDown(keyCode, event);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SharedPreferences getSharedPreferences() {
|
public SharedPreferences getSharedPreferences() {
|
||||||
return mSharedPreferences;
|
return mSharedPreferences;
|
||||||
@ -368,6 +374,10 @@ public class SearchResultActivity extends BaseActivity implements SortTypeSelect
|
|||||||
return fragment;
|
return fragment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean handleKeyDown(int keyCode) {
|
||||||
|
return viewPager.getCurrentItem() == 0 && postFragment.handleKeyDown(keyCode);
|
||||||
|
}
|
||||||
|
|
||||||
void changeSortType(SortType sortType) {
|
void changeSortType(SortType sortType) {
|
||||||
mSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TYPE_SEARCH_POST, sortType.getType().name()).apply();
|
mSharedPreferences.edit().putString(SharedPreferencesUtils.SORT_TYPE_SEARCH_POST, sortType.getType().name()).apply();
|
||||||
if(sortType.getTime() != null) {
|
if(sortType.getTime() != null) {
|
||||||
|
@ -7,6 +7,7 @@ import android.content.res.Resources;
|
|||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.view.KeyEvent;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@ -322,6 +323,11 @@ public class ViewSubredditDetailActivity extends BaseActivity implements SortTyp
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||||
|
return ((FragmentCommunicator)(mFragment)).handleKeyDown(keyCode) || super.onKeyDown(keyCode, event);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SharedPreferences getSharedPreferences() {
|
public SharedPreferences getSharedPreferences() {
|
||||||
return mSharedPreferences;
|
return mSharedPreferences;
|
||||||
|
@ -8,6 +8,7 @@ import android.os.AsyncTask;
|
|||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.TypedValue;
|
import android.util.TypedValue;
|
||||||
|
import android.view.KeyEvent;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@ -396,6 +397,11 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele
|
|||||||
postLayoutBottomSheetFragment = new PostLayoutBottomSheetFragment();
|
postLayoutBottomSheetFragment = new PostLayoutBottomSheetFragment();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onKeyDown(int keyCode, KeyEvent event) {
|
||||||
|
return sectionsPagerAdapter.handleKeyDown(keyCode) || super.onKeyDown(keyCode, event);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SharedPreferences getSharedPreferences() {
|
public SharedPreferences getSharedPreferences() {
|
||||||
return mSharedPreferences;
|
return mSharedPreferences;
|
||||||
@ -741,6 +747,10 @@ public class ViewUserDetailActivity extends BaseActivity implements SortTypeSele
|
|||||||
return fragment;
|
return fragment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean handleKeyDown(int keyCode) {
|
||||||
|
return viewPager.getCurrentItem() == 0 && postFragment.handleKeyDown(keyCode);
|
||||||
|
}
|
||||||
|
|
||||||
public void refresh() {
|
public void refresh() {
|
||||||
if (viewPager.getCurrentItem() == 0) {
|
if (viewPager.getCurrentItem() == 0) {
|
||||||
if (postFragment != null) {
|
if (postFragment != null) {
|
||||||
|
@ -13,6 +13,7 @@ import android.os.Bundle;
|
|||||||
import android.os.CountDownTimer;
|
import android.os.CountDownTimer;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.util.TypedValue;
|
import android.util.TypedValue;
|
||||||
|
import android.view.KeyEvent;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
@ -121,6 +122,7 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
private CountDownTimer resumeLazyModeCountDownTimer;
|
private CountDownTimer resumeLazyModeCountDownTimer;
|
||||||
private float lazyModeInterval;
|
private float lazyModeInterval;
|
||||||
private int postLayout;
|
private int postLayout;
|
||||||
|
private boolean mIsSmoothScrolling = false;
|
||||||
|
|
||||||
public PostFragment() {
|
public PostFragment() {
|
||||||
// Required empty public constructor
|
// Required empty public constructor
|
||||||
@ -137,6 +139,32 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean scrollPostsByCount(int count) {
|
||||||
|
mIsSmoothScrolling = true;
|
||||||
|
if (mLinearLayoutManager != null) {
|
||||||
|
int pos = mLinearLayoutManager.findFirstVisibleItemPosition();
|
||||||
|
int targetPosition = pos + count;
|
||||||
|
mLinearLayoutManager.scrollToPositionWithOffset(targetPosition, 0);
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean handleKeyDown(int keyCode) {
|
||||||
|
boolean volumeKeysNavigatePosts = mSharedPreferences.getBoolean(SharedPreferencesUtils.VOLUME_KEYS_NAVIGATE_POSTS, false);
|
||||||
|
if (volumeKeysNavigatePosts) {
|
||||||
|
switch (keyCode) {
|
||||||
|
case KeyEvent.KEYCODE_VOLUME_UP:
|
||||||
|
return scrollPostsByCount(-1);
|
||||||
|
case KeyEvent.KEYCODE_VOLUME_DOWN:
|
||||||
|
return scrollPostsByCount(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
|
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
|
||||||
Bundle savedInstanceState) {
|
Bundle savedInstanceState) {
|
||||||
@ -160,6 +188,16 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
mPostRecyclerView.clearOnScrollListeners();
|
||||||
|
mPostRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
||||||
|
@Override
|
||||||
|
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
|
||||||
|
if (newState == RecyclerView.SCROLL_STATE_IDLE) {
|
||||||
|
mIsSmoothScrolling = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
window = activity.getWindow();
|
window = activity.getWindow();
|
||||||
|
|
||||||
Resources resources = getResources();
|
Resources resources = getResources();
|
||||||
@ -260,10 +298,12 @@ public class PostFragment extends Fragment implements FragmentCommunicator {
|
|||||||
mPostRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
mPostRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
|
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
|
||||||
if (dy > 0) {
|
if (!mIsSmoothScrolling) {
|
||||||
((MainActivity) activity).postScrollDown();
|
if (dy > 0) {
|
||||||
} else if (dy < 0) {
|
((MainActivity) activity).postScrollDown();
|
||||||
((MainActivity) activity).postScrollUp();
|
} else if (dy < 0) {
|
||||||
|
((MainActivity) activity).postScrollUp();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,8 @@ package ml.docilealligator.infinityforreddit;
|
|||||||
public interface FragmentCommunicator {
|
public interface FragmentCommunicator {
|
||||||
void refresh();
|
void refresh();
|
||||||
|
|
||||||
|
default boolean handleKeyDown(int keyCode) { return false; }
|
||||||
|
|
||||||
default void changeNSFW(boolean nsfw) {
|
default void changeNSFW(boolean nsfw) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,4 +59,5 @@ public class SharedPreferencesUtils {
|
|||||||
public static final String SHOW_ELAPSED_TIME_KEY = "show_elapsed_time";
|
public static final String SHOW_ELAPSED_TIME_KEY = "show_elapsed_time";
|
||||||
public static final String SWIPE_RIGHT_TO_GO_BACK_FROM_POST_DETAIL = "swipe_to_go_back_from_post_detail";
|
public static final String SWIPE_RIGHT_TO_GO_BACK_FROM_POST_DETAIL = "swipe_to_go_back_from_post_detail";
|
||||||
public static final String VOLUME_KEYS_NAVIGATE_COMMENTS = "volume_keys_navigate_comments";
|
public static final String VOLUME_KEYS_NAVIGATE_COMMENTS = "volume_keys_navigate_comments";
|
||||||
|
public static final String VOLUME_KEYS_NAVIGATE_POSTS = "volume_keys_navigate_posts";
|
||||||
}
|
}
|
||||||
|
@ -291,6 +291,7 @@
|
|||||||
<string name="settings_immersive_interface_title">Immersive Interface</string>
|
<string name="settings_immersive_interface_title">Immersive Interface</string>
|
||||||
<string name="settings_vote_buttons_on_the_right_title">Vote Buttons on the Right</string>
|
<string name="settings_vote_buttons_on_the_right_title">Vote Buttons on the Right</string>
|
||||||
<string name="settings_volume_keys_navigate_comments_title">Use Volume Keys to Navigate Comments in Posts</string>
|
<string name="settings_volume_keys_navigate_comments_title">Use Volume Keys to Navigate Comments in Posts</string>
|
||||||
|
<string name="settings_volume_keys_navigate_posts_title">Use Volume Keys to Navigate Posts</string>
|
||||||
<string name="settings_show_elapsed_time">Show Elpased Time in Posts and Comments</string>
|
<string name="settings_show_elapsed_time">Show Elpased Time in Posts and Comments</string>
|
||||||
<string name="swipe_to_go_back_from_post_detail">Swipe Right to Go Back From Comments</string>
|
<string name="swipe_to_go_back_from_post_detail">Swipe Right to Go Back From Comments</string>
|
||||||
<string name="settings_lazy_mode_interval_title">Lazy Mode Interval</string>
|
<string name="settings_lazy_mode_interval_title">Lazy Mode Interval</string>
|
||||||
|
@ -46,6 +46,11 @@
|
|||||||
app:key="volume_keys_navigate_comments"
|
app:key="volume_keys_navigate_comments"
|
||||||
app:title="@string/settings_volume_keys_navigate_comments_title" />
|
app:title="@string/settings_volume_keys_navigate_comments_title" />
|
||||||
|
|
||||||
|
<SwitchPreference
|
||||||
|
app:defaultValue="false"
|
||||||
|
app:key="volume_keys_navigate_posts"
|
||||||
|
app:title="@string/settings_volume_keys_navigate_posts_title" />
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
app:title="@string/settings_font_size_title"
|
app:title="@string/settings_font_size_title"
|
||||||
app:icon="@drawable/ic_font_size_24dp"
|
app:icon="@drawable/ic_font_size_24dp"
|
||||||
|
Loading…
Reference in New Issue
Block a user