bug fix, code cleanup
This commit is contained in:
parent
55b5648623
commit
b728208f03
|
@ -27,10 +27,10 @@ import org.nuclearfog.twidda.model.UserList;
|
||||||
import org.nuclearfog.twidda.model.WebPush;
|
import org.nuclearfog.twidda.model.WebPush;
|
||||||
import org.nuclearfog.twidda.model.lists.Domains;
|
import org.nuclearfog.twidda.model.lists.Domains;
|
||||||
import org.nuclearfog.twidda.model.lists.Filters;
|
import org.nuclearfog.twidda.model.lists.Filters;
|
||||||
|
import org.nuclearfog.twidda.model.lists.Hashtags;
|
||||||
import org.nuclearfog.twidda.model.lists.Notifications;
|
import org.nuclearfog.twidda.model.lists.Notifications;
|
||||||
import org.nuclearfog.twidda.model.lists.ScheduledStatuses;
|
import org.nuclearfog.twidda.model.lists.ScheduledStatuses;
|
||||||
import org.nuclearfog.twidda.model.lists.Statuses;
|
import org.nuclearfog.twidda.model.lists.Statuses;
|
||||||
import org.nuclearfog.twidda.model.lists.Hashtags;
|
|
||||||
import org.nuclearfog.twidda.model.lists.UserLists;
|
import org.nuclearfog.twidda.model.lists.UserLists;
|
||||||
import org.nuclearfog.twidda.model.lists.Users;
|
import org.nuclearfog.twidda.model.lists.Users;
|
||||||
|
|
||||||
|
|
|
@ -57,10 +57,10 @@ import org.nuclearfog.twidda.model.UserList;
|
||||||
import org.nuclearfog.twidda.model.WebPush;
|
import org.nuclearfog.twidda.model.WebPush;
|
||||||
import org.nuclearfog.twidda.model.lists.Domains;
|
import org.nuclearfog.twidda.model.lists.Domains;
|
||||||
import org.nuclearfog.twidda.model.lists.Filters;
|
import org.nuclearfog.twidda.model.lists.Filters;
|
||||||
|
import org.nuclearfog.twidda.model.lists.Hashtags;
|
||||||
import org.nuclearfog.twidda.model.lists.Notifications;
|
import org.nuclearfog.twidda.model.lists.Notifications;
|
||||||
import org.nuclearfog.twidda.model.lists.ScheduledStatuses;
|
import org.nuclearfog.twidda.model.lists.ScheduledStatuses;
|
||||||
import org.nuclearfog.twidda.model.lists.Statuses;
|
import org.nuclearfog.twidda.model.lists.Statuses;
|
||||||
import org.nuclearfog.twidda.model.lists.Hashtags;
|
|
||||||
import org.nuclearfog.twidda.model.lists.UserLists;
|
import org.nuclearfog.twidda.model.lists.UserLists;
|
||||||
import org.nuclearfog.twidda.model.lists.Users;
|
import org.nuclearfog.twidda.model.lists.Users;
|
||||||
|
|
||||||
|
@ -467,6 +467,9 @@ public class Mastodon implements Connection {
|
||||||
@Override
|
@Override
|
||||||
public Hashtags searchHashtags(String search) throws MastodonException {
|
public Hashtags searchHashtags(String search) throws MastodonException {
|
||||||
List<String> params = new ArrayList<>();
|
List<String> params = new ArrayList<>();
|
||||||
|
if (search.startsWith("#"))
|
||||||
|
params.add("q=" + StringUtils.encode(search.substring(1)));
|
||||||
|
else
|
||||||
params.add("q=" + StringUtils.encode(search));
|
params.add("q=" + StringUtils.encode(search));
|
||||||
params.add("type=hashtags");
|
params.add("type=hashtags");
|
||||||
Hashtags result = getTrends(ENDPOINT_SEARCH_TIMELINE, params);
|
Hashtags result = getTrends(ENDPOINT_SEARCH_TIMELINE, params);
|
||||||
|
|
|
@ -43,9 +43,9 @@ import org.nuclearfog.twidda.model.Poll;
|
||||||
import org.nuclearfog.twidda.model.Status;
|
import org.nuclearfog.twidda.model.Status;
|
||||||
import org.nuclearfog.twidda.model.User;
|
import org.nuclearfog.twidda.model.User;
|
||||||
import org.nuclearfog.twidda.model.lists.Accounts;
|
import org.nuclearfog.twidda.model.lists.Accounts;
|
||||||
|
import org.nuclearfog.twidda.model.lists.Hashtags;
|
||||||
import org.nuclearfog.twidda.model.lists.Notifications;
|
import org.nuclearfog.twidda.model.lists.Notifications;
|
||||||
import org.nuclearfog.twidda.model.lists.Statuses;
|
import org.nuclearfog.twidda.model.lists.Statuses;
|
||||||
import org.nuclearfog.twidda.model.lists.Hashtags;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|
|
@ -175,6 +175,7 @@ public class ProfileActivity extends AppCompatActivity implements OnClickListene
|
||||||
confirmDialog = new ConfirmDialog(this, this);
|
confirmDialog = new ConfirmDialog(this, this);
|
||||||
picasso = PicassoBuilder.get(this);
|
picasso = PicassoBuilder.get(this);
|
||||||
settings = GlobalSettings.get(this);
|
settings = GlobalSettings.get(this);
|
||||||
|
adapter = new ProfileAdapter(this);
|
||||||
|
|
||||||
if (!settings.toolbarOverlapEnabled()) {
|
if (!settings.toolbarOverlapEnabled()) {
|
||||||
ConstraintSet constraints = new ConstraintSet();
|
ConstraintSet constraints = new ConstraintSet();
|
||||||
|
@ -225,7 +226,7 @@ public class ProfileActivity extends AppCompatActivity implements OnClickListene
|
||||||
userId = user.getId();
|
userId = user.getId();
|
||||||
}
|
}
|
||||||
// setup pager fragments
|
// setup pager fragments
|
||||||
adapter = new ProfileAdapter(this, userId, settings.getLogin().getId() == userId);
|
adapter.setId(userId);
|
||||||
viewPager.setAdapter(adapter);
|
viewPager.setAdapter(adapter);
|
||||||
// set user/relation data and initialize loaders
|
// set user/relation data and initialize loaders
|
||||||
if (user != null) {
|
if (user != null) {
|
||||||
|
|
|
@ -7,6 +7,7 @@ import androidx.annotation.Nullable;
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.appcompat.widget.Toolbar;
|
import androidx.appcompat.widget.Toolbar;
|
||||||
import androidx.fragment.app.FragmentTransaction;
|
import androidx.fragment.app.FragmentTransaction;
|
||||||
|
|
||||||
import org.nuclearfog.twidda.R;
|
import org.nuclearfog.twidda.R;
|
||||||
import org.nuclearfog.twidda.backend.utils.AppStyles;
|
import org.nuclearfog.twidda.backend.utils.AppStyles;
|
||||||
import org.nuclearfog.twidda.ui.fragments.ScheduleFragment;
|
import org.nuclearfog.twidda.ui.fragments.ScheduleFragment;
|
||||||
|
|
|
@ -87,6 +87,7 @@ public class SearchActivity extends AppCompatActivity implements OnClickListener
|
||||||
|
|
||||||
settings = GlobalSettings.get(this);
|
settings = GlobalSettings.get(this);
|
||||||
hashtagAction = new HashtagAction(this);
|
hashtagAction = new HashtagAction(this);
|
||||||
|
adapter = new SearchAdapter(this);
|
||||||
|
|
||||||
String query = getIntent().getStringExtra(KEY_QUERY);
|
String query = getIntent().getStringExtra(KEY_QUERY);
|
||||||
Serializable data = getIntent().getSerializableExtra(KEY_DATA);
|
Serializable data = getIntent().getSerializableExtra(KEY_DATA);
|
||||||
|
@ -100,18 +101,16 @@ public class SearchActivity extends AppCompatActivity implements OnClickListener
|
||||||
hashtagAction.execute(param, this);
|
hashtagAction.execute(param, this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
adapter.setSearch(search);
|
||||||
|
|
||||||
if (!settings.floatingButtonEnabled()) {
|
if (!settings.floatingButtonEnabled()) {
|
||||||
floatingButton.setVisibility(View.INVISIBLE);
|
floatingButton.setVisibility(View.INVISIBLE);
|
||||||
}
|
}
|
||||||
toolbar.setTitle("");
|
toolbar.setTitle("");
|
||||||
setSupportActionBar(toolbar);
|
setSupportActionBar(toolbar);
|
||||||
viewPager.setOffscreenPageLimit(3);
|
viewPager.setOffscreenPageLimit(3);
|
||||||
adapter = new SearchAdapter(this, search);
|
|
||||||
viewPager.setAdapter(adapter);
|
viewPager.setAdapter(adapter);
|
||||||
if (adapter.getItemCount() == 3)
|
|
||||||
tabSelector.addTabIcons(R.array.search_hashtag_tab_icons);
|
tabSelector.addTabIcons(R.array.search_hashtag_tab_icons);
|
||||||
else
|
|
||||||
tabSelector.addTabIcons(R.array.search_tab_icons);
|
|
||||||
AppStyles.setTheme(root);
|
AppStyles.setTheme(root);
|
||||||
|
|
||||||
tabSelector.addOnTabSelectedListener(this);
|
tabSelector.addOnTabSelectedListener(this);
|
||||||
|
|
|
@ -112,25 +112,26 @@ public class UserlistActivity extends AppCompatActivity implements OnTabSelected
|
||||||
userlistDialog = new UserlistDialog(this, this);
|
userlistDialog = new UserlistDialog(this, this);
|
||||||
listLoaderAsync = new UserlistAction(this);
|
listLoaderAsync = new UserlistAction(this);
|
||||||
listManagerAsync = new UserlistManager(this);
|
listManagerAsync = new UserlistManager(this);
|
||||||
|
adapter = new UserlistAdapter(this);
|
||||||
|
|
||||||
Object data = getIntent().getSerializableExtra(KEY_DATA);
|
Object data = getIntent().getSerializableExtra(KEY_DATA);
|
||||||
if (data instanceof UserList) {
|
if (data instanceof UserList) {
|
||||||
userList = (UserList) data;
|
userList = (UserList) data;
|
||||||
toolbar.setTitle(userList.getTitle());
|
toolbar.setTitle(userList.getTitle());
|
||||||
adapter = new UserlistAdapter(this, userList.getId(), settings.getLogin().getConfiguration().isUserlistSubscriberSupported());
|
adapter.setId(userList.getId());
|
||||||
viewPager.setAdapter(adapter);
|
viewPager.setAdapter(adapter);
|
||||||
if (adapter.getItemCount() == 2) {
|
if (adapter.getItemCount() == 2) {
|
||||||
tabSelector.addTabIcons(R.array.list_tab_icons);
|
tabSelector.addTabIcons(R.array.list_tab_icons);
|
||||||
} else if (adapter.getItemCount() == 3) {
|
} else if (adapter.getItemCount() == 3) {
|
||||||
tabSelector.addTabIcons(R.array.list_subscriber_tab_icons);
|
tabSelector.addTabIcons(R.array.list_subscriber_tab_icons);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
viewPager.setOffscreenPageLimit(3);
|
viewPager.setOffscreenPageLimit(3);
|
||||||
setSupportActionBar(toolbar);
|
setSupportActionBar(toolbar);
|
||||||
AppStyles.setTheme(root);
|
AppStyles.setTheme(root);
|
||||||
|
|
||||||
tabSelector.addOnTabSelectedListener(this);
|
tabSelector.addOnTabSelectedListener(this);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -58,18 +58,24 @@ public class UserlistsActivity extends AppCompatActivity implements UserlistUpda
|
||||||
TabSelector tabSelector = findViewById(R.id.page_tab_view_tabs);
|
TabSelector tabSelector = findViewById(R.id.page_tab_view_tabs);
|
||||||
viewPager = findViewById(R.id.page_tab_view_pager);
|
viewPager = findViewById(R.id.page_tab_view_pager);
|
||||||
|
|
||||||
|
adapter = new UserListsAdapter(this);
|
||||||
userlistDialog = new UserlistDialog(this, this);
|
userlistDialog = new UserlistDialog(this, this);
|
||||||
settings = GlobalSettings.get(this);
|
settings = GlobalSettings.get(this);
|
||||||
|
|
||||||
toolbar.setTitle(R.string.list_appbar);
|
|
||||||
setSupportActionBar(toolbar);
|
|
||||||
|
|
||||||
long ownerId = getIntent().getLongExtra(KEY_ID, 0L);
|
long ownerId = getIntent().getLongExtra(KEY_ID, 0L);
|
||||||
|
adapter.setId(ownerId);
|
||||||
|
if (settings.getLogin().getConfiguration().isUserlistMembershipSupported()) {
|
||||||
|
tabSelector.addTabIcons(R.array.userlist_tab_ownership_membership_icons);
|
||||||
|
adapter.setPageCount(2);
|
||||||
|
} else {
|
||||||
|
tabSelector.addTabIcons(R.array.userlist_tab_ownership_icons);
|
||||||
|
adapter.setPageCount(1);
|
||||||
|
}
|
||||||
|
|
||||||
adapter = new UserListsAdapter(this, ownerId, settings.getLogin().getConfiguration().isUserlistMembershipSupported());
|
|
||||||
viewPager.setAdapter(adapter);
|
viewPager.setAdapter(adapter);
|
||||||
viewPager.setOffscreenPageLimit(2);
|
viewPager.setOffscreenPageLimit(2);
|
||||||
tabSelector.addTabIcons(R.array.userlist_tab_icons);
|
toolbar.setTitle(R.string.list_appbar);
|
||||||
|
setSupportActionBar(toolbar);
|
||||||
AppStyles.setOverflowIcon(toolbar, settings.getIconColor());
|
AppStyles.setOverflowIcon(toolbar, settings.getIconColor());
|
||||||
AppStyles.setTheme(root);
|
AppStyles.setTheme(root);
|
||||||
|
|
||||||
|
|
|
@ -116,18 +116,21 @@ public class UsersActivity extends AppCompatActivity implements OnTabSelectedLis
|
||||||
|
|
||||||
filterLoader = new UserFilterAction(this);
|
filterLoader = new UserFilterAction(this);
|
||||||
settings = GlobalSettings.get(this);
|
settings = GlobalSettings.get(this);
|
||||||
|
adapter = new UserAdapter(this);
|
||||||
viewPager.setOffscreenPageLimit(3);
|
viewPager.setOffscreenPageLimit(3);
|
||||||
|
|
||||||
mode = getIntent().getIntExtra(KEY_MODE, 0);
|
mode = getIntent().getIntExtra(KEY_MODE, 0);
|
||||||
long id = getIntent().getLongExtra(KEY_ID, 0L);
|
long id = getIntent().getLongExtra(KEY_ID, 0L);
|
||||||
|
adapter.setId(id);
|
||||||
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case USERS_FOLLOWING:
|
case USERS_FOLLOWING:
|
||||||
toolbar.setTitle(R.string.userlist_following);
|
toolbar.setTitle(R.string.userlist_following);
|
||||||
|
adapter.setType(UserAdapter.FOLLOWING);
|
||||||
if (settings.getLogin().getId() == id)
|
if (settings.getLogin().getId() == id)
|
||||||
adapter = new UserAdapter(this, id, UserAdapter.FOLLOWING, 2);
|
adapter.setPageCount(2);
|
||||||
else
|
else
|
||||||
adapter = new UserAdapter(this, id, UserAdapter.FOLLOWING, 1);
|
adapter.setPageCount(1);
|
||||||
viewPager.setAdapter(adapter);
|
viewPager.setAdapter(adapter);
|
||||||
if (adapter.getItemCount() > 1) {
|
if (adapter.getItemCount() > 1) {
|
||||||
tabSelector.addTabIcons(R.array.user_following);
|
tabSelector.addTabIcons(R.array.user_following);
|
||||||
|
@ -139,10 +142,11 @@ public class UsersActivity extends AppCompatActivity implements OnTabSelectedLis
|
||||||
|
|
||||||
case USERS_FOLLOWER:
|
case USERS_FOLLOWER:
|
||||||
toolbar.setTitle(R.string.userlist_follower);
|
toolbar.setTitle(R.string.userlist_follower);
|
||||||
|
adapter.setType(UserAdapter.FOLLOWER);
|
||||||
if (settings.getLogin().getId() == id && settings.getLogin().getConfiguration().isOutgoingFollowRequestSupported())
|
if (settings.getLogin().getId() == id && settings.getLogin().getConfiguration().isOutgoingFollowRequestSupported())
|
||||||
adapter = new UserAdapter(this, id, UserAdapter.FOLLOWER, 2);
|
adapter.setPageCount(2);
|
||||||
else
|
else
|
||||||
adapter = new UserAdapter(this, id, UserAdapter.FOLLOWER, 1);
|
adapter.setPageCount(1);
|
||||||
viewPager.setAdapter(adapter);
|
viewPager.setAdapter(adapter);
|
||||||
tabSelector.setVisibility(View.GONE);
|
tabSelector.setVisibility(View.GONE);
|
||||||
if (adapter.getItemCount() > 1) {
|
if (adapter.getItemCount() > 1) {
|
||||||
|
@ -155,7 +159,8 @@ public class UsersActivity extends AppCompatActivity implements OnTabSelectedLis
|
||||||
|
|
||||||
case USERS_REPOST:
|
case USERS_REPOST:
|
||||||
toolbar.setTitle(R.string.toolbar_userlist_repost);
|
toolbar.setTitle(R.string.toolbar_userlist_repost);
|
||||||
adapter = new UserAdapter(this, id, UserAdapter.REPOSTER, 1);
|
adapter.setType(UserAdapter.REPOSTER);
|
||||||
|
adapter.setPageCount(1);
|
||||||
viewPager.setAdapter(adapter);
|
viewPager.setAdapter(adapter);
|
||||||
tabSelector.setVisibility(View.GONE);
|
tabSelector.setVisibility(View.GONE);
|
||||||
break;
|
break;
|
||||||
|
@ -163,14 +168,16 @@ public class UsersActivity extends AppCompatActivity implements OnTabSelectedLis
|
||||||
case USERS_FAVORIT:
|
case USERS_FAVORIT:
|
||||||
int title = settings.likeEnabled() ? R.string.toolbar_status_liker : R.string.toolbar_status_favoriter;
|
int title = settings.likeEnabled() ? R.string.toolbar_status_liker : R.string.toolbar_status_favoriter;
|
||||||
toolbar.setTitle(title);
|
toolbar.setTitle(title);
|
||||||
adapter = new UserAdapter(this, id, UserAdapter.FAVORITER, 1);
|
adapter.setType(UserAdapter.FAVORITER);
|
||||||
|
adapter.setPageCount(1);
|
||||||
viewPager.setAdapter(adapter);
|
viewPager.setAdapter(adapter);
|
||||||
tabSelector.setVisibility(View.GONE);
|
tabSelector.setVisibility(View.GONE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USERS_EXCLUDED:
|
case USERS_EXCLUDED:
|
||||||
toolbar.setTitle(R.string.menu_toolbar_excluded_users);
|
toolbar.setTitle(R.string.menu_toolbar_excluded_users);
|
||||||
adapter = new UserAdapter(this, id, UserAdapter.BLOCKS, 3);
|
adapter.setType(UserAdapter.BLOCKS);
|
||||||
|
adapter.setPageCount(3);
|
||||||
viewPager.setAdapter(adapter);
|
viewPager.setAdapter(adapter);
|
||||||
tabSelector.addTabIcons(R.array.user_domain_exclude);
|
tabSelector.addTabIcons(R.array.user_domain_exclude);
|
||||||
tabSelector.addOnTabSelectedListener(this);
|
tabSelector.addOnTabSelectedListener(this);
|
||||||
|
|
|
@ -16,13 +16,12 @@ import org.nuclearfog.twidda.ui.fragments.HashtagFragment;
|
||||||
*/
|
*/
|
||||||
public class HashtagAdapter extends ViewPagerAdapter {
|
public class HashtagAdapter extends ViewPagerAdapter {
|
||||||
|
|
||||||
private static final int COUNT = 3;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public HashtagAdapter(FragmentActivity fragmentActivity) {
|
public HashtagAdapter(FragmentActivity fragmentActivity) {
|
||||||
super(fragmentActivity, COUNT);
|
super(fragmentActivity);
|
||||||
|
setPageCount(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -18,13 +18,12 @@ import org.nuclearfog.twidda.ui.fragments.StatusFragment;
|
||||||
*/
|
*/
|
||||||
public class HomeAdapter extends ViewPagerAdapter {
|
public class HomeAdapter extends ViewPagerAdapter {
|
||||||
|
|
||||||
private static final int SIZE = 4;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public HomeAdapter(FragmentActivity fragmentActivity) {
|
public HomeAdapter(FragmentActivity fragmentActivity) {
|
||||||
super(fragmentActivity, SIZE);
|
super(fragmentActivity);
|
||||||
|
setPageCount(4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6,6 +6,7 @@ import androidx.annotation.NonNull;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.fragment.app.FragmentActivity;
|
import androidx.fragment.app.FragmentActivity;
|
||||||
|
|
||||||
|
import org.nuclearfog.twidda.config.GlobalSettings;
|
||||||
import org.nuclearfog.twidda.ui.fragments.FieldFragment;
|
import org.nuclearfog.twidda.ui.fragments.FieldFragment;
|
||||||
import org.nuclearfog.twidda.ui.fragments.ListFragment;
|
import org.nuclearfog.twidda.ui.fragments.ListFragment;
|
||||||
import org.nuclearfog.twidda.ui.fragments.StatusFragment;
|
import org.nuclearfog.twidda.ui.fragments.StatusFragment;
|
||||||
|
@ -17,16 +18,16 @@ import org.nuclearfog.twidda.ui.fragments.StatusFragment;
|
||||||
*/
|
*/
|
||||||
public class ProfileAdapter extends ViewPagerAdapter {
|
public class ProfileAdapter extends ViewPagerAdapter {
|
||||||
|
|
||||||
private long userId;
|
private GlobalSettings settings;
|
||||||
private boolean isCurrentUser;
|
|
||||||
|
private long userId = 0L;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param userId ID of the user (profile ID)
|
*
|
||||||
*/
|
*/
|
||||||
public ProfileAdapter(FragmentActivity fragmentActivity, long userId, boolean isCurrentUser) {
|
public ProfileAdapter(FragmentActivity fragmentActivity) {
|
||||||
super(fragmentActivity, isCurrentUser ? 4 : 2);
|
super(fragmentActivity);
|
||||||
this.isCurrentUser = isCurrentUser;
|
settings = GlobalSettings.get(fragmentActivity);
|
||||||
this.userId = userId;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -45,17 +46,17 @@ public class ProfileAdapter extends ViewPagerAdapter {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
if (isCurrentUser) {
|
if (getItemCount() == 2) {
|
||||||
|
param = new Bundle();
|
||||||
|
param.putLong(FieldFragment.KEY_ID, userId);
|
||||||
|
fragment = new FieldFragment();
|
||||||
|
fragment.setArguments(param);
|
||||||
|
} else {
|
||||||
param = new Bundle();
|
param = new Bundle();
|
||||||
param.putLong(StatusFragment.KEY_ID, userId);
|
param.putLong(StatusFragment.KEY_ID, userId);
|
||||||
param.putInt(StatusFragment.KEY_MODE, StatusFragment.MODE_FAVORIT);
|
param.putInt(StatusFragment.KEY_MODE, StatusFragment.MODE_FAVORIT);
|
||||||
fragment = new StatusFragment();
|
fragment = new StatusFragment();
|
||||||
fragment.setArguments(param);
|
fragment.setArguments(param);
|
||||||
} else {
|
|
||||||
param = new Bundle();
|
|
||||||
param.putLong(FieldFragment.KEY_ID, userId);
|
|
||||||
fragment = new FieldFragment();
|
|
||||||
fragment.setArguments(param);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -76,4 +77,18 @@ public class ProfileAdapter extends ViewPagerAdapter {
|
||||||
}
|
}
|
||||||
return fragment;
|
return fragment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set user ID of the profile
|
||||||
|
*
|
||||||
|
* @param userId user ID
|
||||||
|
*/
|
||||||
|
public void setId(long userId) {
|
||||||
|
this.userId = userId;
|
||||||
|
if (settings.getLogin().getId() == userId) {
|
||||||
|
setPageCount(4);
|
||||||
|
} else {
|
||||||
|
setPageCount(2);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -18,14 +18,14 @@ import org.nuclearfog.twidda.ui.fragments.UserFragment;
|
||||||
*/
|
*/
|
||||||
public class SearchAdapter extends ViewPagerAdapter {
|
public class SearchAdapter extends ViewPagerAdapter {
|
||||||
|
|
||||||
private String search;
|
private String search = "";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param search search string
|
*
|
||||||
*/
|
*/
|
||||||
public SearchAdapter(FragmentActivity fragmentActivity, String search) {
|
public SearchAdapter(FragmentActivity fragmentActivity) {
|
||||||
super(fragmentActivity, search.startsWith("#") ? 2 : 3);
|
super(fragmentActivity);
|
||||||
this.search = search;
|
setPageCount(3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -61,4 +61,11 @@ public class SearchAdapter extends ViewPagerAdapter {
|
||||||
}
|
}
|
||||||
return fragment;
|
return fragment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set search text used by fragments
|
||||||
|
*/
|
||||||
|
public void setSearch(String search) {
|
||||||
|
this.search = search;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -43,16 +43,13 @@ public class UserAdapter extends ViewPagerAdapter {
|
||||||
public static final int BLOCKS = 14;
|
public static final int BLOCKS = 14;
|
||||||
|
|
||||||
private long id;
|
private long id;
|
||||||
private int mode;
|
private int type;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param id Status ID, List ID or User ID, depending on mode
|
*
|
||||||
* @param mode what type of fragments should be loaded {@link #FOLLOWER,#FOLLOWING,#REQUESTS,#REPOSTER,#FAVORITER,#BLOCKS}
|
|
||||||
*/
|
*/
|
||||||
public UserAdapter(FragmentActivity fragmentActivity, long id, int mode, int pages) {
|
public UserAdapter(FragmentActivity fragmentActivity) {
|
||||||
super(fragmentActivity, pages);
|
super(fragmentActivity);
|
||||||
this.mode = mode;
|
|
||||||
this.id = id;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -65,15 +62,15 @@ public class UserAdapter extends ViewPagerAdapter {
|
||||||
case 0:
|
case 0:
|
||||||
Bundle param = new Bundle();
|
Bundle param = new Bundle();
|
||||||
param.putLong(UserFragment.KEY_ID, id);
|
param.putLong(UserFragment.KEY_ID, id);
|
||||||
if (mode == FOLLOWING) {
|
if (type == FOLLOWING) {
|
||||||
param.putInt(UserFragment.KEY_MODE, UserFragment.MODE_FOLLOWING);
|
param.putInt(UserFragment.KEY_MODE, UserFragment.MODE_FOLLOWING);
|
||||||
} else if (mode == FOLLOWER) {
|
} else if (type == FOLLOWER) {
|
||||||
param.putInt(UserFragment.KEY_MODE, UserFragment.MODE_FOLLOWER);
|
param.putInt(UserFragment.KEY_MODE, UserFragment.MODE_FOLLOWER);
|
||||||
} else if (mode == REPOSTER) {
|
} else if (type == REPOSTER) {
|
||||||
param.putInt(UserFragment.KEY_MODE, UserFragment.MODE_REPOSTER);
|
param.putInt(UserFragment.KEY_MODE, UserFragment.MODE_REPOSTER);
|
||||||
} else if (mode == FAVORITER) {
|
} else if (type == FAVORITER) {
|
||||||
param.putInt(UserFragment.KEY_MODE, UserFragment.MODE_FAVORITER);
|
param.putInt(UserFragment.KEY_MODE, UserFragment.MODE_FAVORITER);
|
||||||
} else if (mode == BLOCKS) {
|
} else if (type == BLOCKS) {
|
||||||
param.putInt(UserFragment.KEY_MODE, UserFragment.MODE_MUTES);
|
param.putInt(UserFragment.KEY_MODE, UserFragment.MODE_MUTES);
|
||||||
}
|
}
|
||||||
fragment = new UserFragment();
|
fragment = new UserFragment();
|
||||||
|
@ -82,11 +79,11 @@ public class UserAdapter extends ViewPagerAdapter {
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
param = new Bundle();
|
param = new Bundle();
|
||||||
if (mode == FOLLOWING) {
|
if (type == FOLLOWING) {
|
||||||
param.putInt(UserFragment.KEY_MODE, UserFragment.MODE_FOLLOW_INCOMING);
|
param.putInt(UserFragment.KEY_MODE, UserFragment.MODE_FOLLOW_INCOMING);
|
||||||
} else if (mode == FOLLOWER) {
|
} else if (type == FOLLOWER) {
|
||||||
param.putInt(UserFragment.KEY_MODE, UserFragment.MODE_FOLLOW_OUTGOING);
|
param.putInt(UserFragment.KEY_MODE, UserFragment.MODE_FOLLOW_OUTGOING);
|
||||||
} else if (mode == BLOCKS) {
|
} else if (type == BLOCKS) {
|
||||||
param.putInt(UserFragment.KEY_MODE, UserFragment.MODE_BLOCKS);
|
param.putInt(UserFragment.KEY_MODE, UserFragment.MODE_BLOCKS);
|
||||||
}
|
}
|
||||||
fragment = new UserFragment();
|
fragment = new UserFragment();
|
||||||
|
@ -99,4 +96,20 @@ public class UserAdapter extends ViewPagerAdapter {
|
||||||
}
|
}
|
||||||
return fragment;
|
return fragment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set content type to view
|
||||||
|
*
|
||||||
|
* @param type what type of fragments should be loaded {@link #FOLLOWER,#FOLLOWING,#REQUESTS,#REPOSTER,#FAVORITER,#BLOCKS}
|
||||||
|
*/
|
||||||
|
public void setType(int type) {
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public void setId(long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -19,11 +19,10 @@ public class UserListsAdapter extends ViewPagerAdapter {
|
||||||
private long userId;
|
private long userId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param userId ID of the user related to the userlists
|
*
|
||||||
*/
|
*/
|
||||||
public UserListsAdapter(FragmentActivity fragmentActivity, long userId, boolean enableMember) {
|
public UserListsAdapter(FragmentActivity fragmentActivity) {
|
||||||
super(fragmentActivity, enableMember ? 2 : 1);
|
super(fragmentActivity);
|
||||||
this.userId = userId;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -51,4 +50,11 @@ public class UserListsAdapter extends ViewPagerAdapter {
|
||||||
}
|
}
|
||||||
return fragment;
|
return fragment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public void setId(long userId) {
|
||||||
|
this.userId = userId;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -6,6 +6,7 @@ import androidx.annotation.NonNull;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.fragment.app.FragmentActivity;
|
import androidx.fragment.app.FragmentActivity;
|
||||||
|
|
||||||
|
import org.nuclearfog.twidda.config.GlobalSettings;
|
||||||
import org.nuclearfog.twidda.ui.fragments.ListFragment;
|
import org.nuclearfog.twidda.ui.fragments.ListFragment;
|
||||||
import org.nuclearfog.twidda.ui.fragments.StatusFragment;
|
import org.nuclearfog.twidda.ui.fragments.StatusFragment;
|
||||||
import org.nuclearfog.twidda.ui.fragments.UserFragment;
|
import org.nuclearfog.twidda.ui.fragments.UserFragment;
|
||||||
|
@ -23,9 +24,14 @@ public class UserlistAdapter extends ViewPagerAdapter {
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public UserlistAdapter(FragmentActivity fragmentActivity, long id, boolean enableSubscriber) {
|
public UserlistAdapter(FragmentActivity fragmentActivity) {
|
||||||
super(fragmentActivity, enableSubscriber ? 3 : 2);
|
super(fragmentActivity);
|
||||||
this.id = id;
|
GlobalSettings settings = GlobalSettings.get(fragmentActivity);
|
||||||
|
if (settings.getLogin().getConfiguration().isUserlistSubscriberSupported()) {
|
||||||
|
setPageCount(3);
|
||||||
|
} else {
|
||||||
|
setPageCount(2);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -62,4 +68,11 @@ public class UserlistAdapter extends ViewPagerAdapter {
|
||||||
}
|
}
|
||||||
return fragment;
|
return fragment;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public void setId(long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -1,5 +1,6 @@
|
||||||
package org.nuclearfog.twidda.ui.adapter.viewpager;
|
package org.nuclearfog.twidda.ui.adapter.viewpager;
|
||||||
|
|
||||||
|
import androidx.annotation.IntRange;
|
||||||
import androidx.fragment.app.FragmentActivity;
|
import androidx.fragment.app.FragmentActivity;
|
||||||
import androidx.lifecycle.ViewModelProvider;
|
import androidx.lifecycle.ViewModelProvider;
|
||||||
import androidx.viewpager2.adapter.FragmentStateAdapter;
|
import androidx.viewpager2.adapter.FragmentStateAdapter;
|
||||||
|
@ -13,25 +14,19 @@ import java.util.Random;
|
||||||
*/
|
*/
|
||||||
public abstract class ViewPagerAdapter extends FragmentStateAdapter {
|
public abstract class ViewPagerAdapter extends FragmentStateAdapter {
|
||||||
|
|
||||||
private static final Random RND = new Random();
|
private static final Random RAND = new Random();
|
||||||
|
|
||||||
private ListFragment.ItemViewModel viewModel;
|
private ListFragment.ItemViewModel viewModel;
|
||||||
|
|
||||||
private int count;
|
private int count = 0;
|
||||||
private long[] ids;
|
private long[] ids = {};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
protected ViewPagerAdapter(FragmentActivity fragmentActivity, int count) {
|
protected ViewPagerAdapter(FragmentActivity fragmentActivity) {
|
||||||
super(fragmentActivity);
|
super(fragmentActivity);
|
||||||
viewModel = new ViewModelProvider(fragmentActivity).get(ListFragment.ItemViewModel.class);
|
viewModel = new ViewModelProvider(fragmentActivity).get(ListFragment.ItemViewModel.class);
|
||||||
this.count = count;
|
|
||||||
// create fragment session IDs
|
|
||||||
ids = new long[count];
|
|
||||||
for (int i = 0 ; i < ids.length ; i++) {
|
|
||||||
ids[i] = RND.nextLong();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -57,6 +52,20 @@ public abstract class ViewPagerAdapter extends FragmentStateAdapter {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set page count
|
||||||
|
*
|
||||||
|
* @param count number of pages
|
||||||
|
*/
|
||||||
|
public void setPageCount(@IntRange(from = 1) int count) {
|
||||||
|
this.count = count;
|
||||||
|
// create fragment session IDs
|
||||||
|
ids = new long[count];
|
||||||
|
for (int i = 0; i < ids.length; i++) {
|
||||||
|
ids[i] = RAND.nextLong();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* called when app settings change
|
* called when app settings change
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -47,8 +47,7 @@ public class FieldFragment extends ListFragment implements OnLinkClickListener,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setAdapter(adapter);
|
setAdapter(adapter);
|
||||||
UserLoader.Param userParam = new UserLoader.Param(UserLoader.Param.ONLINE, id);
|
load();
|
||||||
userLoader.execute(userParam, this);
|
|
||||||
setRefresh(true);
|
setRefresh(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,6 +60,13 @@ public class FieldFragment extends ListFragment implements OnLinkClickListener,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroy() {
|
||||||
|
userLoader.cancel();
|
||||||
|
super.onDestroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLinkClick(String url) {
|
public void onLinkClick(String url) {
|
||||||
LinkUtils.openLink(requireActivity(), url);
|
LinkUtils.openLink(requireActivity(), url);
|
||||||
|
@ -69,8 +75,7 @@ public class FieldFragment extends ListFragment implements OnLinkClickListener,
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onReload() {
|
protected void onReload() {
|
||||||
UserLoader.Param userParam = new UserLoader.Param(UserLoader.Param.ONLINE, id);
|
load();
|
||||||
userLoader.execute(userParam, this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -78,8 +83,8 @@ public class FieldFragment extends ListFragment implements OnLinkClickListener,
|
||||||
protected void onReset() {
|
protected void onReset() {
|
||||||
// reload adapter items
|
// reload adapter items
|
||||||
adapter.clear();
|
adapter.clear();
|
||||||
UserLoader.Param userParam = new UserLoader.Param(UserLoader.Param.ONLINE, id);
|
userLoader = new UserLoader(requireContext());
|
||||||
userLoader.execute(userParam, this);
|
load();
|
||||||
setRefresh(true);
|
setRefresh(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -98,4 +103,12 @@ public class FieldFragment extends ListFragment implements OnLinkClickListener,
|
||||||
}
|
}
|
||||||
setRefresh(false);
|
setRefresh(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private void load() {
|
||||||
|
UserLoader.Param userParam = new UserLoader.Param(UserLoader.Param.ONLINE, id);
|
||||||
|
userLoader.execute(userParam, this);
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -58,6 +58,7 @@ public class FilterFragment extends ListFragment implements OnFilterClickListene
|
||||||
@Override
|
@Override
|
||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
filterLoader.cancel();
|
filterLoader.cancel();
|
||||||
|
filterAction.cancel();
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -131,6 +131,7 @@ public class HashtagFragment extends ListFragment implements OnHashtagClickListe
|
||||||
@Override
|
@Override
|
||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
hashtagLoader.cancel();
|
hashtagLoader.cancel();
|
||||||
|
hashtagAction.cancel();
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,6 +140,7 @@ public class HashtagFragment extends ListFragment implements OnHashtagClickListe
|
||||||
protected void onReset() {
|
protected void onReset() {
|
||||||
adapter.clear();
|
adapter.clear();
|
||||||
hashtagLoader = new HashtagLoader(requireContext());
|
hashtagLoader = new HashtagLoader(requireContext());
|
||||||
|
hashtagAction = new HashtagAction(requireContext());
|
||||||
load(HashtagLoader.Param.NO_CURSOR, HashtagAdapter.CLEAR_LIST);
|
load(HashtagLoader.Param.NO_CURSOR, HashtagAdapter.CLEAR_LIST);
|
||||||
setRefresh(true);
|
setRefresh(true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,14 @@ import org.nuclearfog.twidda.config.GlobalSettings;
|
||||||
*/
|
*/
|
||||||
public abstract class ListFragment extends Fragment implements OnRefreshListener, RefreshCallback, Observer<String> {
|
public abstract class ListFragment extends Fragment implements OnRefreshListener, RefreshCallback, Observer<String> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* used by {@link ItemViewModel} to notify {@link ListFragment} subclasses to scroll the lists to the first position
|
||||||
|
*/
|
||||||
public static final String NOTIFY_SCROLL_TOP = "refresh";
|
public static final String NOTIFY_SCROLL_TOP = "refresh";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* used by {@link ItemViewModel} to notify {@link ListFragment} subclassed that settings may have changed
|
||||||
|
*/
|
||||||
public static final String NOTIFY_CHANGED = "settings_changed";
|
public static final String NOTIFY_CHANGED = "settings_changed";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -145,15 +152,25 @@ public abstract class ListFragment extends Fragment implements OnRefreshListener
|
||||||
*/
|
*/
|
||||||
protected abstract void onReset();
|
protected abstract void onReset();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* View model used by Activities to communicate with {@link ListFragment} subclasses
|
||||||
|
*/
|
||||||
public static class ItemViewModel extends ViewModel {
|
public static class ItemViewModel extends ViewModel {
|
||||||
|
|
||||||
private final MutableLiveData<String> selectedItem = new MutableLiveData<>();
|
private final MutableLiveData<String> selectedItem = new MutableLiveData<>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* send notification to {@link ListFragment} subclasses
|
||||||
|
*
|
||||||
|
* @param s notification type {@link ListFragment#NOTIFY_CHANGED,#ListFragment#NOTIFY_SCROLL_TOP}
|
||||||
|
*/
|
||||||
public void notify(String s) {
|
public void notify(String s) {
|
||||||
selectedItem.setValue(s);
|
selectedItem.setValue(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
public LiveData<String> getSelectedItem() {
|
public LiveData<String> getSelectedItem() {
|
||||||
return selectedItem;
|
return selectedItem;
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,14 +46,13 @@ public class ScheduleFragment extends ListFragment implements OnScheduleClickLis
|
||||||
@Override
|
@Override
|
||||||
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
|
||||||
super.onViewCreated(view, savedInstanceState);
|
super.onViewCreated(view, savedInstanceState);
|
||||||
|
|
||||||
scheduleLoader = new ScheduleLoader(requireContext());
|
scheduleLoader = new ScheduleLoader(requireContext());
|
||||||
scheduleAction = new ScheduleAction(requireContext());
|
scheduleAction = new ScheduleAction(requireContext());
|
||||||
adapter = new ScheduleAdapter(this);
|
adapter = new ScheduleAdapter(this);
|
||||||
confirm = new ConfirmDialog(requireActivity(), this);
|
confirm = new ConfirmDialog(requireActivity(), this);
|
||||||
timepicker = new TimePickerDialog(requireActivity(), this);
|
timepicker = new TimePickerDialog(requireActivity(), this);
|
||||||
setAdapter(adapter);
|
|
||||||
|
|
||||||
|
setAdapter(adapter);
|
||||||
if (savedInstanceState != null) {
|
if (savedInstanceState != null) {
|
||||||
Object data = savedInstanceState.getSerializable(KEY_SAVE);
|
Object data = savedInstanceState.getSerializable(KEY_SAVE);
|
||||||
if (data instanceof ScheduledStatuses) {
|
if (data instanceof ScheduledStatuses) {
|
||||||
|
@ -72,6 +71,14 @@ public class ScheduleFragment extends ListFragment implements OnScheduleClickLis
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroy() {
|
||||||
|
scheduleLoader.cancel();
|
||||||
|
scheduleAction.cancel();
|
||||||
|
super.onDestroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onReload() {
|
protected void onReload() {
|
||||||
load(adapter.getTopItemId(), 0L, 0);
|
load(adapter.getTopItemId(), 0L, 0);
|
||||||
|
@ -81,6 +88,8 @@ public class ScheduleFragment extends ListFragment implements OnScheduleClickLis
|
||||||
@Override
|
@Override
|
||||||
protected void onReset() {
|
protected void onReset() {
|
||||||
adapter.clear();
|
adapter.clear();
|
||||||
|
scheduleLoader = new ScheduleLoader(requireContext());
|
||||||
|
scheduleAction = new ScheduleAction(requireContext());
|
||||||
load(0L, 0L, CLEAR_LIST);
|
load(0L, 0L, CLEAR_LIST);
|
||||||
setRefresh(true);
|
setRefresh(true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,6 +37,7 @@ public class LockableConstraintLayout extends ConstraintLayout {
|
||||||
@Override
|
@Override
|
||||||
public boolean onInterceptTouchEvent(MotionEvent ev) {
|
public boolean onInterceptTouchEvent(MotionEvent ev) {
|
||||||
switch (ev.getActionMasked()) {
|
switch (ev.getActionMasked()) {
|
||||||
|
case MotionEvent.ACTION_SCROLL:
|
||||||
case MotionEvent.ACTION_MOVE:
|
case MotionEvent.ACTION_MOVE:
|
||||||
float deltaY = ev.getAxisValue(MotionEvent.AXIS_Y) - yPos;
|
float deltaY = ev.getAxisValue(MotionEvent.AXIS_Y) - yPos;
|
||||||
// detect scroll down, then aquire scroll lock
|
// detect scroll down, then aquire scroll lock
|
||||||
|
@ -45,11 +46,13 @@ public class LockableConstraintLayout extends ConstraintLayout {
|
||||||
}
|
}
|
||||||
// fall through
|
// fall through
|
||||||
|
|
||||||
|
case MotionEvent.ACTION_POINTER_DOWN:
|
||||||
case MotionEvent.ACTION_DOWN:
|
case MotionEvent.ACTION_DOWN:
|
||||||
// note the current coordinates touch event
|
// note the current coordinates touch event
|
||||||
yPos = ev.getAxisValue(MotionEvent.AXIS_Y);
|
yPos = ev.getAxisValue(MotionEvent.AXIS_Y);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MotionEvent.ACTION_POINTER_UP:
|
||||||
case MotionEvent.ACTION_CANCEL:
|
case MotionEvent.ACTION_CANCEL:
|
||||||
case MotionEvent.ACTION_UP:
|
case MotionEvent.ACTION_UP:
|
||||||
yLock = false;
|
yLock = false;
|
||||||
|
|
|
@ -239,6 +239,7 @@
|
||||||
<string name="settings_enable_indicators">zeige zusätzliche Status Informationen an</string>
|
<string name="settings_enable_indicators">zeige zusätzliche Status Informationen an</string>
|
||||||
<string name="login_key_enable">Token einfügen</string>
|
<string name="login_key_enable">Token einfügen</string>
|
||||||
<string name="login_key_enable_v2">API v2 nutzen</string>
|
<string name="login_key_enable_v2">API v2 nutzen</string>
|
||||||
|
<string name="info_hashtag_following">folge Hashtag..</string>
|
||||||
<string name="info_open_mastodon_login">öffne Mastodon Loginseite</string>
|
<string name="info_open_mastodon_login">öffne Mastodon Loginseite</string>
|
||||||
<string name="info_login_to_mastodon">in Mastodon einloggen</string>
|
<string name="info_login_to_mastodon">in Mastodon einloggen</string>
|
||||||
<string name="error_service_unavailable">Service zur Zeit nicht verfügbar!</string>
|
<string name="error_service_unavailable">Service zur Zeit nicht verfügbar!</string>
|
||||||
|
|
|
@ -8,11 +8,6 @@
|
||||||
<item>@drawable/bell</item>
|
<item>@drawable/bell</item>
|
||||||
</integer-array>
|
</integer-array>
|
||||||
|
|
||||||
<integer-array name="search_tab_icons">
|
|
||||||
<item>@drawable/search</item>
|
|
||||||
<item>@drawable/user</item>
|
|
||||||
</integer-array>
|
|
||||||
|
|
||||||
<integer-array name="search_hashtag_tab_icons">
|
<integer-array name="search_hashtag_tab_icons">
|
||||||
<item>@drawable/search</item>
|
<item>@drawable/search</item>
|
||||||
<item>@drawable/user</item>
|
<item>@drawable/user</item>
|
||||||
|
@ -64,7 +59,11 @@
|
||||||
<item>@drawable/info</item>
|
<item>@drawable/info</item>
|
||||||
</integer-array>
|
</integer-array>
|
||||||
|
|
||||||
<integer-array name="userlist_tab_icons">
|
<integer-array name="userlist_tab_ownership_icons">
|
||||||
|
<item>@drawable/following</item>
|
||||||
|
</integer-array>
|
||||||
|
|
||||||
|
<integer-array name="userlist_tab_ownership_membership_icons">
|
||||||
<item>@drawable/following</item>
|
<item>@drawable/following</item>
|
||||||
</integer-array>
|
</integer-array>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue