/*
* Copyright (C) 2013 Chris Lacy Licensed under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law
* or agreed to in writing, software distributed under the License is
* distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/
package com.tweetlanes.android.core.view;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.text.method.LinkMovementMethod;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.WindowManager;
import android.widget.CheckBox;
import android.widget.TextView;
import com.crittercism.app.Crittercism;
import com.tweetlanes.android.core.App;
import com.tweetlanes.android.core.Constant;
import com.tweetlanes.android.core.ConsumerKeyConstants;
import com.tweetlanes.android.core.R;
import com.tweetlanes.android.core.widget.viewpagerindicator.UnderlinePageIndicator;
public class TutorialActivity extends FragmentActivity {
private ViewPager mViewPager;
private TutorialLaneAdapter mLaneAdapter;
private boolean mDoFollow = true;
private static final int PAGE_WELCOME = 0;
private static final int PAGE_COMPOSE_TWEET = 1;
private static final int PAGE_MULTIPLE_SELECTION = 2;
private static final int PAGE_VOLSCROLL = 3;
private static final int PAGE_SPAM_CONTROL = 4;
private static final int PAGE_THANKS = 5;
private static final int PAGE_MAX = 6;
/*
*
*/
App getApp() {
return (App) getApplication();
}
/*
* (non-Javadoc)
*
* @see android.support.v4.app.FragmentActivity#onCreate(android.os.Bundle)
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Constant.ENABLE_CRASH_TRACKING) {
Crittercism.initialize(getApplicationContext(),
ConsumerKeyConstants.CRITTERCISM_APP_ID);
}
// Key the screen from dimming -
// http://stackoverflow.com/a/4197370/328679
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
if (mLaneAdapter == null) {
mLaneAdapter = new TutorialLaneAdapter(getSupportFragmentManager());
}
if (mLaneAdapter != null) {
setContentView(R.layout.tutorial);
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mLaneAdapter);
UnderlinePageIndicator indicator = (UnderlinePageIndicator) findViewById(R.id.indicator);
indicator.setViewPager(mViewPager);
indicator.setFades(false);
indicator.setOnPageChangeListener(mOnPageChangeListener);
}
}
/*
*
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
int currentItem = mViewPager.getCurrentItem();
if (currentItem != PAGE_WELCOME) {
menu.add(getString(R.string.action_previous))
.setOnMenuItemClickListener(
new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
mViewPager.setCurrentItem(mViewPager
.getCurrentItem() - 1);
return true;
}
})
.setShowAsAction(
MenuItem.SHOW_AS_ACTION_ALWAYS
| MenuItem.SHOW_AS_ACTION_WITH_TEXT);
}
if (currentItem != PAGE_THANKS) {
menu.add(getString(R.string.action_next))
.setOnMenuItemClickListener(
new MenuItem.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
mViewPager.setCurrentItem(mViewPager
.getCurrentItem() + 1);
return true;
}
})
.setShowAsAction(
MenuItem.SHOW_AS_ACTION_ALWAYS
| MenuItem.SHOW_AS_ACTION_WITH_TEXT);
}
return true;
}
/*
*
*/
private final OnPageChangeListener mOnPageChangeListener = new OnPageChangeListener() {
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageSelected(int laneIndex) {
Resources res = getResources();
String[] titles = res.getStringArray(R.array.tutorial_titles);
String title = titles[laneIndex];
if (laneIndex == PAGE_THANKS) {
String screenName = getApp().getCurrentAccountScreenName();
if (screenName != null) {
title = "@" + screenName + " "
+ getString(R.string.tutorial_thanks_title);
}
}
getActionBar().setTitle(title);
invalidateOptionsMenu();
}
};
/*
*
*/
public void onFinishTutorialClicked(View view) {
// We don't want to come back here, so remove from the activity stack
finish();
Intent intent = new Intent(getApplicationContext(), HomeActivity.class);
startActivity(intent);
if (mDoFollow) {
getApp().triggerFollowPromoAccounts(null);
}
getApp().setTutorialCompleted();
}
/*
*
*/
public void onFollowCheckboxClicked(View view) {
mDoFollow = ((CheckBox) (view)).isChecked();
}
/*
*
*/
class TutorialLaneAdapter extends FragmentPagerAdapter {
public TutorialLaneAdapter(FragmentManager supportFragmentManager) {
super(supportFragmentManager);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case PAGE_WELCOME:
return InflatedLayoutFragment
.newInstance(R.layout.tutorial_welcome);
// case PAGE_IMAGE_PREVIEW:
// return
// InflatedLayoutFragment.newInstance(R.layout.tutorial_images);
case PAGE_VOLSCROLL:
return InflatedLayoutFragment
.newInstance(R.layout.tutorial_volscroll);
case PAGE_COMPOSE_TWEET:
return InflatedLayoutFragment
.newInstance(R.layout.tutorial_compose_tweet);
case PAGE_MULTIPLE_SELECTION:
return InflatedLayoutFragment
.newInstance(R.layout.tutorial_multiple_selection);
case PAGE_SPAM_CONTROL:
return InflatedLayoutFragment
.newInstance(R.layout.tutorial_spam_control);
case PAGE_THANKS:
return InflatedLayoutFragment.newInstance(
R.layout.tutorial_thanks,
new InflatedLayoutFragment.Callback() {
@Override
public void onCreateView(View view) {
TextView textView = (TextView) view
.findViewById(R.id.acceptTermsTextView);
if (textView != null) {
textView.setMovementMethod(LinkMovementMethod
.getInstance());
}
}
});
default:
return InflatedLayoutFragment
.newInstance(R.layout.tutorial_welcome);
}
}
@Override
public int getCount() {
return PAGE_MAX;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
}