/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.welcome.tutorial;
import android.accounts.Account;
import android.content.Context;
import android.os.Parcelable;
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.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
import com.google.api.client.googleapis.extensions.android2.auth.GoogleAccountManager;
import com.timsu.astrid.R;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.astrid.actfm.sync.ActFmPreferenceService;
import com.todoroo.astrid.utility.Constants;
import com.viewpagerindicator.TitleProvider;
public class WelcomePagerAdapter extends PagerAdapter implements TitleProvider
{
private int[] images = new int[] {
R.drawable.welcome_walkthrough_1,
R.drawable.welcome_walkthrough_2,
R.drawable.welcome_walkthrough_3,
R.drawable.welcome_walkthrough_4,
R.drawable.welcome_walkthrough_5,
R.drawable.welcome_walkthrough_6,
0
};
private int[] title = new int[] {
R.string.welcome_title_1,
R.string.welcome_title_2,
R.string.welcome_title_3,
R.string.welcome_title_4,
R.string.welcome_title_5,
R.string.welcome_title_6,
R.string.welcome_title_7,
};
private int[] body = new int[] {
R.string.welcome_body_1,
R.string.welcome_body_2,
R.string.welcome_body_3,
R.string.welcome_body_4,
R.string.welcome_body_5,
R.string.welcome_body_6,
R.string.welcome_body_7,
};
public int[] layouts = new int[] {
R.layout.welcome_walkthrough_page,
R.layout.welcome_walkthrough_page,
R.layout.welcome_walkthrough_page,
R.layout.welcome_walkthrough_page,
R.layout.welcome_walkthrough_page,
R.layout.welcome_walkthrough_page,
R.layout.actfm_login_activity,
};
public int fallbackLoginPage;
private final Context context;
public Account[] accounts;
public WelcomeWalkthrough parent;
@Autowired ActFmPreferenceService actFmPreferenceService;
public WelcomePagerAdapter(Context context, boolean manual) {
this.context = context;
DependencyInjectionService.getInstance().inject(this);
accounts = null;
try {
GoogleAccountManager am = new GoogleAccountManager(context);
accounts = am.getAccounts();
} catch (Exception e) {
//
}
if (manual) {
layouts[layouts.length - 1] = R.layout.welcome_walkthrough_page;
title[title.length - 1] = R.string.welcome_title_7_return;
images[images.length - 1] = R.drawable.welcome_walkthrough_1;
body[body.length - 1] = R.string.welcome_body_7_return;
fallbackLoginPage = R.layout.actfm_login_activity;
} else {
if (Constants.ASTRID_LITE) {
adjustResourcesForLite();
}
// Setup login page from AB tests
fallbackLoginPage = layouts[layouts.length - 1];
if (accounts != null && accounts.length > 0) { // If has google account
layouts[layouts.length - 1] = R.layout.welcome_walkthrough_simple_login;
fallbackLoginPage = R.layout.actfm_login_activity;
} else { // If no google account
fallbackLoginPage = layouts[layouts.length - 1] = R.layout.actfm_login_activity;
}
}
}
private void adjustResourcesForLite() {
images = new int[] { 0 };
title = new int[] { R.string.welcome_title_7 };
body = new int[] { R.string.welcome_body_7 };
layouts = new int[] { R.layout.actfm_login_activity };
}
@Override
public void setPrimaryItem(ViewGroup container, int position, Object object) {
super.setPrimaryItem(container, position, object);
parent.onPageChanged(container, position);
}
@Override
public int getCount() {
return layouts.length;
}
public void changeLoginPage(int newLayout) {
layouts[layouts.length - 1] = newLayout;
notifyDataSetChanged();
}
@Override
public Object instantiateItem(final View pager, final int position) {
LayoutInflater inflater = LayoutInflater.from(context);
View pageView = inflater.inflate(layouts[position], null, true);
pageView.setLayoutParams(new ViewGroup.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT));
if (pageView.findViewById(R.id.welcome_walkthrough_image) != null) {
ImageView imageView = (ImageView) pageView.findViewById(R.id.welcome_walkthrough_image);
imageView.setImageResource(images[position]);
TextView titleView = (TextView) pageView.findViewById(R.id.welcome_walkthrough_title);
titleView.setText(title[position]);
TextView bodyView = (TextView) pageView.findViewById(R.id.welcome_walkthrough_body);
bodyView.setText(body[position]);
}
((ViewPager) pager).addView(pageView, 0);
parent.instantiatePage(position);
return pageView;
}
@Override
public void destroyItem(View pager, int position, Object view) {
((ViewPager) pager).removeView((View) view);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view.equals(object);
}
@Override
public void finishUpdate(View view) {
//
}
@Override
public void restoreState(Parcelable p, ClassLoader c) {
//
}
@Override
public Parcelable saveState() {
return null;
}
@Override
public void startUpdate(View view) {
//
}
@Override
public String getTitle(int position) {
return context.getString(title[position]);
}
}