mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 12:23:58 +01:00
Convert BookmarksPagerAdapter to kotlin
This commit is contained in:
parent
fb4076a714
commit
8f8b122758
4 changed files with 98 additions and 94 deletions
|
|
@ -1,94 +0,0 @@
|
|||
package fr.free.nrw.commons.bookmarks;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.widget.ListAdapter;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentManager;
|
||||
import androidx.fragment.app.FragmentPagerAdapter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import fr.free.nrw.commons.R;
|
||||
import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesFragment;
|
||||
|
||||
public class BookmarksPagerAdapter extends FragmentPagerAdapter {
|
||||
|
||||
private ArrayList<BookmarkPages> pages;
|
||||
|
||||
/**
|
||||
* Default Constructor
|
||||
* @param fm
|
||||
* @param context
|
||||
* @param onlyPictures is true if the fragment requires only BookmarkPictureFragment
|
||||
* (i.e. when no user is logged in).
|
||||
*/
|
||||
BookmarksPagerAdapter(FragmentManager fm, Context context,boolean onlyPictures) {
|
||||
super(fm);
|
||||
pages = new ArrayList<>();
|
||||
Bundle picturesBundle = new Bundle();
|
||||
picturesBundle.putString("categoryName", context.getString(R.string.title_page_bookmarks_pictures));
|
||||
picturesBundle.putInt("order", 0);
|
||||
pages.add(new BookmarkPages(
|
||||
new BookmarkListRootFragment(picturesBundle, this),
|
||||
context.getString(R.string.title_page_bookmarks_pictures)));
|
||||
if (!onlyPictures) {
|
||||
// if onlyPictures is false we also add the location fragment.
|
||||
Bundle locationBundle = new Bundle();
|
||||
locationBundle.putString("categoryName",
|
||||
context.getString(R.string.title_page_bookmarks_locations));
|
||||
locationBundle.putInt("order", 1);
|
||||
pages.add(new BookmarkPages(
|
||||
new BookmarkListRootFragment(locationBundle, this),
|
||||
context.getString(R.string.title_page_bookmarks_locations)));
|
||||
|
||||
locationBundle.putInt("orderItem", 2);
|
||||
pages.add(new BookmarkPages(
|
||||
new BookmarkListRootFragment(locationBundle, this),
|
||||
context.getString(R.string.title_page_bookmarks_items)));
|
||||
}
|
||||
final Bundle categoriesBundle = new Bundle();
|
||||
categoriesBundle.putString("categoryName",
|
||||
context.getString(R.string.title_page_bookmarks_categories));
|
||||
categoriesBundle.putInt("order", 3);
|
||||
pages.add(new BookmarkPages(
|
||||
new BookmarkListRootFragment(categoriesBundle, this),
|
||||
context.getString(R.string.title_page_bookmarks_categories)));
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Fragment getItem(int position) {
|
||||
return pages.get(position).getPage();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return pages.size();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public CharSequence getPageTitle(int position) {
|
||||
return pages.get(position).getTitle();
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the Adapter used to display the picture gridview
|
||||
* @return adapter
|
||||
*/
|
||||
public ListAdapter getMediaAdapter() {
|
||||
BookmarkPicturesFragment fragment = (BookmarkPicturesFragment)(((BookmarkListRootFragment)pages.get(0).getPage()).listFragment);
|
||||
return fragment.getAdapter();
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the pictures list for the bookmark fragment
|
||||
*/
|
||||
public void requestPictureListUpdate() {
|
||||
BookmarkPicturesFragment fragment = (BookmarkPicturesFragment)(((BookmarkListRootFragment)pages.get(0).getPage()).listFragment);
|
||||
fragment.onResume();
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
package fr.free.nrw.commons.bookmarks
|
||||
|
||||
import android.content.Context
|
||||
import android.widget.ListAdapter
|
||||
import androidx.core.os.bundleOf
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import androidx.fragment.app.FragmentPagerAdapter
|
||||
import fr.free.nrw.commons.R
|
||||
import fr.free.nrw.commons.bookmarks.pictures.BookmarkPicturesFragment
|
||||
|
||||
class BookmarksPagerAdapter internal constructor(
|
||||
fm: FragmentManager, context: Context, onlyPictures: Boolean
|
||||
) : FragmentPagerAdapter(fm) {
|
||||
private val pages = mutableListOf<BookmarkPages>()
|
||||
|
||||
/**
|
||||
* Default Constructor
|
||||
* @param fm
|
||||
* @param context
|
||||
* @param onlyPictures is true if the fragment requires only BookmarkPictureFragment
|
||||
* (i.e. when no user is logged in).
|
||||
*/
|
||||
init {
|
||||
pages.add(
|
||||
BookmarkPages(
|
||||
BookmarkListRootFragment(
|
||||
bundleOf(
|
||||
"categoryName" to context.getString(R.string.title_page_bookmarks_pictures),
|
||||
"order" to 0
|
||||
), this
|
||||
), context.getString(R.string.title_page_bookmarks_pictures)
|
||||
)
|
||||
)
|
||||
if (!onlyPictures) {
|
||||
// if onlyPictures is false we also add the location fragment.
|
||||
val locationBundle = bundleOf(
|
||||
"categoryName" to context.getString(R.string.title_page_bookmarks_locations),
|
||||
"order" to 1
|
||||
)
|
||||
|
||||
pages.add(
|
||||
BookmarkPages(
|
||||
BookmarkListRootFragment(locationBundle, this),
|
||||
context.getString(R.string.title_page_bookmarks_locations)
|
||||
)
|
||||
)
|
||||
|
||||
locationBundle.putInt("orderItem", 2)
|
||||
pages.add(
|
||||
BookmarkPages(
|
||||
BookmarkListRootFragment(locationBundle, this),
|
||||
context.getString(R.string.title_page_bookmarks_items)
|
||||
)
|
||||
)
|
||||
}
|
||||
pages.add(
|
||||
BookmarkPages(
|
||||
BookmarkListRootFragment(
|
||||
bundleOf(
|
||||
"categoryName" to context.getString(R.string.title_page_bookmarks_categories),
|
||||
"order" to 3
|
||||
), this),
|
||||
context.getString(R.string.title_page_bookmarks_categories)
|
||||
)
|
||||
)
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
|
||||
override fun getItem(position: Int): Fragment = pages[position].page!!
|
||||
|
||||
override fun getCount(): Int = pages.size
|
||||
|
||||
override fun getPageTitle(position: Int): CharSequence? = pages[position].title
|
||||
|
||||
/**
|
||||
* Return the Adapter used to display the picture gridview
|
||||
* @return adapter
|
||||
*/
|
||||
val mediaAdapter: ListAdapter?
|
||||
get() = (((pages[0].page as BookmarkListRootFragment).listFragment) as BookmarkPicturesFragment).getAdapter()
|
||||
}
|
||||
|
|
@ -2,12 +2,20 @@ package fr.free.nrw.commons.bookmarks
|
|||
|
||||
import android.content.Context
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import fr.free.nrw.commons.TestCommonsApplication
|
||||
import org.junit.Assert
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mockito.Mock
|
||||
import org.mockito.MockitoAnnotations
|
||||
import org.robolectric.RobolectricTestRunner
|
||||
import org.robolectric.annotation.Config
|
||||
import org.robolectric.annotation.LooperMode
|
||||
|
||||
@RunWith(RobolectricTestRunner::class)
|
||||
@Config(sdk = [21], application = TestCommonsApplication::class)
|
||||
@LooperMode(LooperMode.Mode.PAUSED)
|
||||
class BookmarksPagerAdapterTests {
|
||||
@Mock
|
||||
private lateinit var bookmarksPagerAdapter: BookmarksPagerAdapter
|
||||
|
|
|
|||
|
|
@ -2,15 +2,23 @@ package fr.free.nrw.commons.bookmarks
|
|||
|
||||
import android.content.Context
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import fr.free.nrw.commons.TestCommonsApplication
|
||||
import org.junit.Assert
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mockito.Mock
|
||||
import org.mockito.MockitoAnnotations
|
||||
import org.robolectric.RobolectricTestRunner
|
||||
import org.robolectric.annotation.Config
|
||||
import org.robolectric.annotation.LooperMode
|
||||
|
||||
/**
|
||||
* BookmarksPagerAdapter when user is not loggedIn.
|
||||
*/
|
||||
@RunWith(RobolectricTestRunner::class)
|
||||
@Config(sdk = [21], application = TestCommonsApplication::class)
|
||||
@LooperMode(LooperMode.Mode.PAUSED)
|
||||
class LoggedOutBookmarksPagerAdapterTests {
|
||||
@Mock
|
||||
private lateinit var bookmarksPagerAdapter: BookmarksPagerAdapter
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue