diff --git a/app/src/main/java/android/support/design/widget/VerticalTabLayout.java b/app/src/main/java/android/support/design/widget/VerticalTabLayout.java index c65cc49b5..5efc11f26 100644 --- a/app/src/main/java/android/support/design/widget/VerticalTabLayout.java +++ b/app/src/main/java/android/support/design/widget/VerticalTabLayout.java @@ -75,6 +75,8 @@ import java.lang.annotation.RetentionPolicy; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Iterator; +import java.util.*; +import android.support.v4.app.*; /** * VerticalTabLayout provides a vertical layout to display tabs. @@ -276,7 +278,7 @@ public class VerticalTabLayout extends ScrollView { private ValueAnimator mScrollAnimator; ViewPager mViewPager; - private PagerAdapter mPagerAdapter; + private ViewPagerAdapter mPagerAdapter; private DataSetObserver mPagerAdapterObserver; private VerticalTabLayoutOnPageChangeListener mPageChangeListener; private AdapterChangeListener mAdapterChangeListener; @@ -808,7 +810,7 @@ public class VerticalTabLayout extends ScrollView { mCurrentVpSelectedListener = new ViewPagerOnTabSelectedListener(viewPager); addOnTabSelectedListener(mCurrentVpSelectedListener); - final PagerAdapter adapter = viewPager.getAdapter(); + final ViewPagerAdapter adapter = (VerticalTabLayout.ViewPagerAdapter) viewPager.getAdapter(); if (adapter != null) { // Now we'll populate ourselves from the pager adapter, adding an observer if // autoRefresh is enabled @@ -840,7 +842,7 @@ public class VerticalTabLayout extends ScrollView { * when the {@link PagerAdapter} is changed. */ @Deprecated - public void setTabsFromPagerAdapter(@Nullable final PagerAdapter adapter) { + public void setTabsFromPagerAdapter(@Nullable final ViewPagerAdapter adapter) { setPagerAdapter(adapter, false); } @@ -882,7 +884,7 @@ public class VerticalTabLayout extends ScrollView { - getPaddingRight()); } - void setPagerAdapter(@Nullable final PagerAdapter adapter, final boolean addObserver) { + void setPagerAdapter(@Nullable final ViewPagerAdapter adapter, final boolean addObserver) { if (mPagerAdapter != null && mPagerAdapterObserver != null) { // If we already have a PagerAdapter, unregister our observer mPagerAdapter.unregisterDataSetObserver(mPagerAdapterObserver); @@ -909,6 +911,9 @@ public class VerticalTabLayout extends ScrollView { final int adapterCount = mPagerAdapter.getCount(); for (int i = 0; i < adapterCount; i++) { addTab(newTab().setText(mPagerAdapter.getPageTitle(i)), false); + if (mPagerAdapter.getIcon(i) != 0) { + getTabAt(i).setIcon(mPagerAdapter.getIcon(i)); + } } // Make sure we reflect the currently set ViewPager item @@ -2217,7 +2222,7 @@ public class VerticalTabLayout extends ScrollView { public void onAdapterChanged(@NonNull ViewPager viewPager, @Nullable PagerAdapter oldAdapter, @Nullable PagerAdapter newAdapter) { if (mViewPager == viewPager) { - setPagerAdapter(newAdapter, mAutoRefresh); + setPagerAdapter((ViewPagerAdapter) newAdapter, mAutoRefresh); } } @@ -2225,4 +2230,57 @@ public class VerticalTabLayout extends ScrollView { mAutoRefresh = autoRefresh; } } + + public static class ViewPagerAdapter extends FragmentPagerAdapter { + List viewPagerList = new ArrayList<>(); + + public ViewPagerAdapter(FragmentManager fragmentManager) { + super(fragmentManager); + } + + @Override + public Fragment getItem(int position) { + return viewPagerList.get(position).fragment; + } + + @Override + public int getCount() { + return viewPagerList.size(); + } + + public int getIcon(int position) { + return viewPagerList.get(position).icon; + } + + @Override + public CharSequence getPageTitle(int position) { + return viewPagerList.get(position).title; + } + + public void addFragment(Fragment fragment, int icon, String name) { + ViewPagerItem item = new ViewPagerItem(); + item.fragment = fragment; + item.icon = icon; + item.title = name; + viewPagerList.add(item); + } + + public void setFragment(int index, Fragment fragment, int icon, String name) { + ViewPagerItem item = new ViewPagerItem(); + item.fragment = fragment; + item.icon = icon; + item.title = name; + viewPagerList.set(index, item); + } + + public void removeFragment(int index) { + viewPagerList.remove(index); + } + } + + public static class ViewPagerItem { + public Fragment fragment; + public String title; + public int icon; + } } diff --git a/app/src/main/java/net/kdt/pojavlaunch/PojavLauncherActivity.java b/app/src/main/java/net/kdt/pojavlaunch/PojavLauncherActivity.java index 036e98c5e..4c84647d7 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/PojavLauncherActivity.java +++ b/app/src/main/java/net/kdt/pojavlaunch/PojavLauncherActivity.java @@ -5,6 +5,7 @@ import android.content.*; import android.graphics.*; import android.os.*; import android.support.design.widget.*; +import android.support.design.widget.VerticalTabLayout.ViewPagerAdapter; import android.support.v4.app.*; import android.support.v4.view.*; import android.support.v7.app.*; @@ -109,9 +110,10 @@ public class PojavLauncherActivity extends AppCompatActivity crashView = new CrashFragment(); viewPageAdapter = new ViewPagerAdapter(getSupportFragmentManager()); - viewPageAdapter.addFragment(new LauncherFragment(), getString(R.string.mcl_tab_news)); - viewPageAdapter.addFragment(consoleView, getString(R.string.mcl_tab_console)); - viewPageAdapter.addFragment(crashView, getString(R.string.mcl_tab_crash)); + viewPageAdapter.addFragment(new LauncherFragment(), R.drawable.ic_menu_news, getString(R.string.mcl_tab_news)); + viewPageAdapter.addFragment(consoleView, R.drawable.ic_menu_java, getString(R.string.mcl_tab_console)); + viewPageAdapter.addFragment(crashView, 0, getString(R.string.mcl_tab_crash)); + viewPageAdapter.addFragment(new LauncherPreferenceFragment(), R.drawable.ic_menu_settings, getString(R.string.mcl_option_settings)); viewPager.setAdapter(viewPageAdapter); tabLayout.setupWithViewPager(viewPager); @@ -854,44 +856,4 @@ public class PojavLauncherActivity extends AppCompatActivity } dialog.show(); } - - private class ViewPagerAdapter extends FragmentPagerAdapter { - - List fragmentList = new ArrayList<>(); - List fragmentTitles = new ArrayList<>(); - - public ViewPagerAdapter(FragmentManager fragmentManager) { - super(fragmentManager); - } - - @Override - public Fragment getItem(int position) { - return fragmentList.get(position); - } - - @Override - public int getCount() { - return fragmentList.size(); - } - - @Override - public CharSequence getPageTitle(int position) { - return fragmentTitles.get(position); - } - - public void addFragment(Fragment fragment, String name) { - fragmentList.add(fragment); - fragmentTitles.add(name); - } - - public void setFragment(int index, Fragment fragment, String name) { - fragmentList.set(index, fragment); - fragmentTitles.set(index, name); - } - - public void removeFragment(int index) { - fragmentList.remove(index); - fragmentTitles.remove(index); - } - } } diff --git a/app/src/main/res/drawable/ic_menu_dungeons.png b/app/src/main/res/drawable/ic_menu_dungeons.png new file mode 100644 index 000000000..ac57624d1 Binary files /dev/null and b/app/src/main/res/drawable/ic_menu_dungeons.png differ diff --git a/app/src/main/res/drawable/ic_menu_java.png b/app/src/main/res/drawable/ic_menu_java.png new file mode 100644 index 000000000..dea5ffa4c Binary files /dev/null and b/app/src/main/res/drawable/ic_menu_java.png differ diff --git a/app/src/main/res/drawable/ic_menu_news.png b/app/src/main/res/drawable/ic_menu_news.png new file mode 100644 index 000000000..836049e6a Binary files /dev/null and b/app/src/main/res/drawable/ic_menu_news.png differ diff --git a/app/src/main/res/drawable/ic_menu_settings.png b/app/src/main/res/drawable/ic_menu_settings.png new file mode 100644 index 000000000..95562a75b Binary files /dev/null and b/app/src/main/res/drawable/ic_menu_settings.png differ