/* == This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
*
* Copyright 2015, Enno Gottschalk <mrmaffen@googlemail.com>
*
* Tomahawk is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Tomahawk is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Tomahawk. If not, see <http://www.gnu.org/licenses/>.
*/
package org.tomahawk.tomahawk_android.fragments;
import org.tomahawk.libtomahawk.authentication.AuthenticatorManager;
import org.tomahawk.libtomahawk.authentication.HatchetAuthenticatorUtils;
import org.tomahawk.tomahawk_android.R;
import org.tomahawk.tomahawk_android.TomahawkApp;
import org.tomahawk.tomahawk_android.activities.TomahawkMainActivity;
import org.tomahawk.tomahawk_android.utils.PreferenceUtils;
import org.tomahawk.tomahawk_android.views.HatchetLoginRegisterView;
import org.tomahawk.tomahawk_android.views.SimplePagerIndicator;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;
import android.widget.TextView;
import de.greenrobot.event.EventBus;
/**
* A {@link android.support.v4.app.Fragment} which is being shown to the user when he first opens
* the app
*/
public class WelcomeFragment extends Fragment {
public final static String TAG = WelcomeFragment.class.getSimpleName();
private ViewPager mViewPager;
private TextView mPositiveButton;
private HatchetLoginRegisterView mHatchetLoginRegisterView;
private class LoginRegisterPagerAdapter extends PagerAdapter {
@Override
public int getCount() {
return 4;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
TomahawkMainActivity activity = (TomahawkMainActivity) getActivity();
LayoutInflater inflater = activity.getLayoutInflater();
View v = null;
switch (position) {
case 0:
v = inflater.inflate(R.layout.welcome_fragment_page_explanation, container,
false);
break;
case 1:
v = inflater.inflate(R.layout.welcome_fragment_page_setup, container,
false);
Bundle args = new Bundle();
args.putString(TomahawkFragment.CONTAINER_FRAGMENT_CLASSNAME,
WelcomeFragment.class.getName());
args.putInt(TomahawkFragment.CONTAINER_FRAGMENT_PAGE, position);
args.putInt(TomahawkFragment.CONTENT_HEADER_MODE,
TomahawkFragment.MODE_HEADER_NONE);
Fragment fragment = Fragment.instantiate(
activity, PreferenceConnectFragment.class.getName(), args);
FragmentTransaction ft = getChildFragmentManager().beginTransaction();
ft.add(R.id.welcome_fragment_page_setup_container, fragment);
ft.commitAllowingStateLoss();
break;
case 2:
v = inflater.inflate(R.layout.welcome_fragment_page_hatchet, container,
false);
ProgressBar progressBar = (ProgressBar) v.findViewById(R.id.smoothprogressbar);
HatchetAuthenticatorUtils authenticatorUtils = (HatchetAuthenticatorUtils)
AuthenticatorManager.get().getAuthenticatorUtils(
TomahawkApp.PLUGINNAME_HATCHET);
mHatchetLoginRegisterView =
(HatchetLoginRegisterView) v.findViewById(R.id.hatchetloginregister);
mHatchetLoginRegisterView.setup(authenticatorUtils, progressBar);
break;
case 3:
v = inflater.inflate(R.layout.welcome_fragment_page_done, container,
false);
break;
}
if (v != null) {
container.addView(v);
}
return v;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
}
private ViewPager.OnPageChangeListener mOnPageChangeListener
= new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
int lastPage = mViewPager.getAdapter().getCount() - 1;
if (position == lastPage) {
mPositiveButton.setText(R.string.ok);
} else {
mPositiveButton.setText(R.string.next_page);
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
};
@SuppressWarnings("unused")
public void onEventMainThread(AuthenticatorManager.ConfigTestResultEvent event) {
if (mHatchetLoginRegisterView != null) {
mHatchetLoginRegisterView
.onConfigTestResult(event.mComponent, event.mType, event.mMessage);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.welcome_fragment, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
mPositiveButton = (TextView) view.findViewById(R.id.config_dialog_positive_button);
mPositiveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int lastPage = mViewPager.getAdapter().getCount() - 1;
if (mViewPager.getCurrentItem() == lastPage) {
PreferenceUtils.edit().putBoolean(
PreferenceUtils.COACHMARK_WELCOMEFRAGMENT_DISABLED, true).apply();
getActivity().getSupportFragmentManager().popBackStack();
} else {
mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1);
}
}
});
mViewPager = (ViewPager) view.findViewById(R.id.viewpager);
mViewPager.setAdapter(new LoginRegisterPagerAdapter());
SimplePagerIndicator indicator =
(SimplePagerIndicator) view.findViewById(R.id.simplepagerindicator);
indicator.setViewPager(mViewPager);
indicator.setOnPageChangeListener(mOnPageChangeListener);
}
@Override
public void onStart() {
super.onStart();
EventBus.getDefault().register(this);
}
@Override
public void onStop() {
EventBus.getDefault().unregister(this);
super.onStop();
}
}