mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-27 12:53:55 +01:00
Migrated Profile Package from Butterknife to View Binding (#5591)
* Butterknife to ViewBinding * code fix to pass all tests * code cleanup and tests migrated to binding * fix LoD
This commit is contained in:
parent
dbe739e755
commit
6ed5deac65
7 changed files with 78 additions and 100 deletions
|
|
@ -131,7 +131,7 @@ public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment imple
|
|||
|
||||
// If fragment is associated with ProfileActivity, then hide the tabLayout
|
||||
if (getActivity() instanceof ProfileActivity) {
|
||||
((ProfileActivity)getActivity()).tabLayout.setVisibility(View.GONE);
|
||||
((ProfileActivity)getActivity()).setTabLayoutVisibility(false);
|
||||
}
|
||||
|
||||
// Else if fragment is associated with MainActivity then hide that tab layout
|
||||
|
|
|
|||
|
|
@ -13,19 +13,16 @@ import android.view.View;
|
|||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.widget.Toolbar;
|
||||
import androidx.core.content.FileProvider;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import com.google.android.material.tabs.TabLayout;
|
||||
import fr.free.nrw.commons.R;
|
||||
import fr.free.nrw.commons.Utils;
|
||||
import fr.free.nrw.commons.ViewPagerAdapter;
|
||||
import fr.free.nrw.commons.auth.SessionManager;
|
||||
import fr.free.nrw.commons.contributions.ContributionsFragment;
|
||||
import fr.free.nrw.commons.explore.ParentViewPager;
|
||||
import fr.free.nrw.commons.databinding.ActivityProfileBinding;
|
||||
import fr.free.nrw.commons.profile.achievements.AchievementsFragment;
|
||||
import fr.free.nrw.commons.profile.leaderboard.LeaderboardFragment;
|
||||
import fr.free.nrw.commons.theme.BaseActivity;
|
||||
|
|
@ -45,14 +42,7 @@ public class ProfileActivity extends BaseActivity {
|
|||
|
||||
private FragmentManager supportFragmentManager;
|
||||
|
||||
@BindView(R.id.viewPager)
|
||||
ParentViewPager viewPager;
|
||||
|
||||
@BindView(R.id.tab_layout)
|
||||
public TabLayout tabLayout;
|
||||
|
||||
@BindView(R.id.toolbar)
|
||||
Toolbar toolbar;
|
||||
public ActivityProfileBinding binding;
|
||||
|
||||
@Inject
|
||||
SessionManager sessionManager;
|
||||
|
|
@ -70,7 +60,7 @@ public class ProfileActivity extends BaseActivity {
|
|||
ContributionsFragment contributionsFragment;
|
||||
|
||||
public void setScroll(boolean canScroll){
|
||||
viewPager.setCanScroll(canScroll);
|
||||
binding.viewPager.setCanScroll(canScroll);
|
||||
}
|
||||
@Override
|
||||
protected void onRestoreInstanceState(final Bundle savedInstanceState) {
|
||||
|
|
@ -85,11 +75,13 @@ public class ProfileActivity extends BaseActivity {
|
|||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_profile);
|
||||
ButterKnife.bind(this);
|
||||
|
||||
setSupportActionBar(toolbar);
|
||||
toolbar.setNavigationOnClickListener(view -> {
|
||||
binding = ActivityProfileBinding.inflate(getLayoutInflater());
|
||||
setContentView(binding.getRoot());
|
||||
setSupportActionBar(binding.toolbarBinding.toolbar);
|
||||
|
||||
|
||||
binding.toolbarBinding.toolbar.setNavigationOnClickListener(view -> {
|
||||
onSupportNavigateUp();
|
||||
});
|
||||
|
||||
|
|
@ -99,8 +91,8 @@ public class ProfileActivity extends BaseActivity {
|
|||
|
||||
supportFragmentManager = getSupportFragmentManager();
|
||||
viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
|
||||
viewPager.setAdapter(viewPagerAdapter);
|
||||
tabLayout.setupWithViewPager(viewPager);
|
||||
binding.viewPager.setAdapter(viewPagerAdapter);
|
||||
binding.tabLayout.setupWithViewPager(binding.viewPager);
|
||||
setTabs();
|
||||
}
|
||||
|
||||
|
|
@ -257,9 +249,17 @@ public class ProfileActivity extends BaseActivity {
|
|||
// Checking if MediaDetailPagerFragment is visible, If visible then show ContributionListFragment else close the ProfileActivity
|
||||
if(contributionsFragment != null && contributionsFragment.getMediaDetailPagerFragment() != null && contributionsFragment.getMediaDetailPagerFragment().isVisible()) {
|
||||
contributionsFragment.backButtonClicked();
|
||||
tabLayout.setVisibility(View.VISIBLE);
|
||||
binding.tabLayout.setVisibility(View.VISIBLE);
|
||||
}else {
|
||||
super.onBackPressed();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* To set the visibility of tab layout
|
||||
* @param isVisible boolean
|
||||
*/
|
||||
public void setTabLayoutVisibility(boolean isVisible) {
|
||||
binding.tabLayout.setVisibility(isVisible ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,19 +14,14 @@ import android.view.ViewGroup;
|
|||
import android.widget.AdapterView;
|
||||
import android.widget.AdapterView.OnItemSelectedListener;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.Button;
|
||||
import android.widget.ProgressBar;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.Toast;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.MergeAdapter;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import fr.free.nrw.commons.R;
|
||||
import fr.free.nrw.commons.auth.SessionManager;
|
||||
import fr.free.nrw.commons.databinding.FragmentLeaderboardBinding;
|
||||
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
|
||||
import fr.free.nrw.commons.mwapi.OkHttpJsonApiClient;
|
||||
import fr.free.nrw.commons.profile.ProfileActivity;
|
||||
|
|
@ -44,20 +39,6 @@ import timber.log.Timber;
|
|||
*/
|
||||
public class LeaderboardFragment extends CommonsDaggerSupportFragment {
|
||||
|
||||
@BindView(R.id.leaderboard_list)
|
||||
RecyclerView leaderboardListRecyclerView;
|
||||
|
||||
@BindView(R.id.progressBar)
|
||||
ProgressBar progressBar;
|
||||
|
||||
@BindView(R.id.category_spinner)
|
||||
Spinner categorySpinner;
|
||||
|
||||
@BindView(R.id.duration_spinner)
|
||||
Spinner durationSpinner;
|
||||
|
||||
@BindView(R.id.scroll)
|
||||
Button scrollButton;
|
||||
|
||||
@Inject
|
||||
SessionManager sessionManager;
|
||||
|
|
@ -110,6 +91,8 @@ public class LeaderboardFragment extends CommonsDaggerSupportFragment {
|
|||
|
||||
private String userName;
|
||||
|
||||
private FragmentLeaderboardBinding binding;
|
||||
|
||||
@Override
|
||||
public void onCreate(@Nullable final Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
|
@ -120,19 +103,18 @@ public class LeaderboardFragment extends CommonsDaggerSupportFragment {
|
|||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
View rootView = inflater.inflate(R.layout.fragment_leaderboard, container, false);
|
||||
ButterKnife.bind(this, rootView);
|
||||
binding = FragmentLeaderboardBinding.inflate(inflater, container, false);
|
||||
|
||||
hideLayouts();
|
||||
|
||||
// Leaderboard currently unimplemented in Beta flavor. Skip all API calls and disable menu
|
||||
if(ConfigUtils.isBetaFlavour()) {
|
||||
progressBar.setVisibility(View.GONE);
|
||||
scrollButton.setVisibility(View.GONE);
|
||||
return rootView;
|
||||
binding.progressBar.setVisibility(View.GONE);
|
||||
binding.scroll.setVisibility(View.GONE);
|
||||
return binding.getRoot();
|
||||
}
|
||||
|
||||
progressBar.setVisibility(View.VISIBLE);
|
||||
binding.progressBar.setVisibility(View.VISIBLE);
|
||||
setSpinners();
|
||||
|
||||
/**
|
||||
|
|
@ -152,11 +134,11 @@ public class LeaderboardFragment extends CommonsDaggerSupportFragment {
|
|||
|
||||
setLeaderboard(duration, category, limit, offset);
|
||||
|
||||
durationSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
|
||||
binding.durationSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
|
||||
|
||||
duration = durationValues[durationSpinner.getSelectedItemPosition()];
|
||||
duration = durationValues[binding.durationSpinner.getSelectedItemPosition()];
|
||||
refreshLeaderboard();
|
||||
}
|
||||
|
||||
|
|
@ -165,10 +147,10 @@ public class LeaderboardFragment extends CommonsDaggerSupportFragment {
|
|||
}
|
||||
});
|
||||
|
||||
categorySpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
|
||||
binding.categorySpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
|
||||
category = categoryValues[categorySpinner.getSelectedItemPosition()];
|
||||
category = categoryValues[binding.categorySpinner.getSelectedItemPosition()];
|
||||
refreshLeaderboard();
|
||||
}
|
||||
|
||||
|
|
@ -178,10 +160,10 @@ public class LeaderboardFragment extends CommonsDaggerSupportFragment {
|
|||
});
|
||||
|
||||
|
||||
scrollButton.setOnClickListener(view -> scrollToUserRank());
|
||||
binding.scroll.setOnClickListener(view -> scrollToUserRank());
|
||||
|
||||
|
||||
return rootView;
|
||||
return binding.getRoot();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -226,9 +208,12 @@ public class LeaderboardFragment extends CommonsDaggerSupportFragment {
|
|||
if(userRank==0){
|
||||
Toast.makeText(getContext(),R.string.no_achievements_yet,Toast.LENGTH_SHORT).show();
|
||||
}else {
|
||||
if (Objects.requireNonNull(leaderboardListRecyclerView.getAdapter()).getItemCount()
|
||||
if (binding == null) {
|
||||
return;
|
||||
}
|
||||
if (Objects.requireNonNull(binding.leaderboardList.getAdapter()).getItemCount()
|
||||
> userRank + 1) {
|
||||
leaderboardListRecyclerView.smoothScrollToPosition(userRank + 1);
|
||||
binding.leaderboardList.smoothScrollToPosition(userRank + 1);
|
||||
} else {
|
||||
if (viewModel != null) {
|
||||
viewModel.refresh(duration, category, userRank + 1, 0);
|
||||
|
|
@ -247,12 +232,12 @@ public class LeaderboardFragment extends CommonsDaggerSupportFragment {
|
|||
ArrayAdapter<CharSequence> categoryAdapter = ArrayAdapter.createFromResource(getContext(),
|
||||
R.array.leaderboard_categories, android.R.layout.simple_spinner_item);
|
||||
categoryAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
categorySpinner.setAdapter(categoryAdapter);
|
||||
binding.categorySpinner.setAdapter(categoryAdapter);
|
||||
|
||||
ArrayAdapter<CharSequence> durationAdapter = ArrayAdapter.createFromResource(getContext(),
|
||||
R.array.leaderboard_durations, android.R.layout.simple_spinner_item);
|
||||
durationAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||
durationSpinner.setAdapter(durationAdapter);
|
||||
binding.durationSpinner.setAdapter(durationAdapter);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -297,8 +282,8 @@ public class LeaderboardFragment extends CommonsDaggerSupportFragment {
|
|||
UserDetailAdapter userDetailAdapter= new UserDetailAdapter(response);
|
||||
MergeAdapter mergeAdapter = new MergeAdapter(userDetailAdapter, leaderboardListAdapter);
|
||||
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
|
||||
leaderboardListRecyclerView.setLayoutManager(linearLayoutManager);
|
||||
leaderboardListRecyclerView.setAdapter(mergeAdapter);
|
||||
binding.leaderboardList.setLayoutManager(linearLayoutManager);
|
||||
binding.leaderboardList.setAdapter(mergeAdapter);
|
||||
viewModel.getListLiveData().observe(getViewLifecycleOwner(), leaderboardListAdapter::submitList);
|
||||
viewModel.getProgressLoadStatus().observe(getViewLifecycleOwner(), status -> {
|
||||
if (Objects.requireNonNull(status).equalsIgnoreCase(LOADING)) {
|
||||
|
|
@ -306,7 +291,7 @@ public class LeaderboardFragment extends CommonsDaggerSupportFragment {
|
|||
} else if (status.equalsIgnoreCase(LOADED)) {
|
||||
hideProgressBar();
|
||||
if (scrollToRank) {
|
||||
leaderboardListRecyclerView.smoothScrollToPosition(userRank + 1);
|
||||
binding.leaderboardList.smoothScrollToPosition(userRank + 1);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
@ -316,12 +301,12 @@ public class LeaderboardFragment extends CommonsDaggerSupportFragment {
|
|||
* to hide progressbar
|
||||
*/
|
||||
private void hideProgressBar() {
|
||||
if (progressBar != null) {
|
||||
progressBar.setVisibility(View.GONE);
|
||||
categorySpinner.setVisibility(View.VISIBLE);
|
||||
durationSpinner.setVisibility(View.VISIBLE);
|
||||
scrollButton.setVisibility(View.VISIBLE);
|
||||
leaderboardListRecyclerView.setVisibility(View.VISIBLE);
|
||||
if (binding != null) {
|
||||
binding.progressBar.setVisibility(View.GONE);
|
||||
binding.categorySpinner.setVisibility(View.VISIBLE);
|
||||
binding.durationSpinner.setVisibility(View.VISIBLE);
|
||||
binding.scroll.setVisibility(View.VISIBLE);
|
||||
binding.leaderboardList.setVisibility(View.VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -329,19 +314,19 @@ public class LeaderboardFragment extends CommonsDaggerSupportFragment {
|
|||
* to show progressbar
|
||||
*/
|
||||
private void showProgressBar() {
|
||||
if (progressBar != null) {
|
||||
progressBar.setVisibility(View.VISIBLE);
|
||||
if (binding != null) {
|
||||
binding.progressBar.setVisibility(View.VISIBLE);
|
||||
binding.scroll.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
scrollButton.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
|
||||
/**
|
||||
* used to hide the layouts while fetching results from api
|
||||
*/
|
||||
private void hideLayouts(){
|
||||
categorySpinner.setVisibility(View.INVISIBLE);
|
||||
durationSpinner.setVisibility(View.INVISIBLE);
|
||||
leaderboardListRecyclerView.setVisibility(View.INVISIBLE);
|
||||
binding.categorySpinner.setVisibility(View.INVISIBLE);
|
||||
binding.durationSpinner.setVisibility(View.INVISIBLE);
|
||||
binding.leaderboardList.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -364,7 +349,15 @@ public class LeaderboardFragment extends CommonsDaggerSupportFragment {
|
|||
*/
|
||||
private void onError() {
|
||||
ViewUtil.showLongToast(getActivity(), getResources().getString(R.string.error_occurred));
|
||||
progressBar.setVisibility(View.GONE);
|
||||
if (binding!=null) {
|
||||
binding.progressBar.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
super.onDestroy();
|
||||
compositeDisposable.clear();
|
||||
binding = null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
android:orientation="vertical">
|
||||
|
||||
<include
|
||||
android:id="@+id/toolbarBinding"
|
||||
layout="@layout/toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
|
@ -45,4 +46,4 @@
|
|||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.drawerlayout.widget.DrawerLayout>
|
||||
</androidx.drawerlayout.widget.DrawerLayout>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue