package io.evercam.connect; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.bugsense.trace.BugSenseHandler; import java.util.ArrayList; import java.util.List; import io.evercam.connect.helper.Constants; import io.evercam.connect.helper.PropertyReader; import io.evercam.connect.signin.LoginActivity; import io.evercam.connect.signin.SignUpActivity; public class SlideActivity extends Activity implements OnPageChangeListener { private SharedPreferences sharedPrefs; private PropertyReader propertyReader; private ViewPager viewPager; private ViewPagerAdapter viewPagerAdapter; private List<View> views; private ImageView[] dots; private static final int[] pics = {R.drawable.discover_intro, R.drawable.discover_feature, R .drawable.discover_add_camera, R.drawable.discover_next}; private int currentIndex; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.indexslide); sharedPrefs = PreferenceManager.getDefaultSharedPreferences(SlideActivity.this); propertyReader = new PropertyReader(getApplicationContext()); // Bug Sense if(propertyReader.isPropertyExist(PropertyReader.KEY_BUG_SENSE)) { String bugSenseCode = propertyReader.getPropertyStr(PropertyReader.KEY_BUG_SENSE); BugSenseHandler.initAndStartSession(SlideActivity.this, bugSenseCode); } if(LoginActivity.isUserLogged(sharedPrefs)) { Intent intentMain = new Intent(SlideActivity.this, DiscoverMainActivity.class); startActivity(intentMain); finish(); } else { EvercamDiscover.sendScreenAnalytics(this, getString(R.string.screen_welcome_slides)); initSlideView(); initDots(); initLinks(); } } @Override protected void onStart() { super.onStart(); if(propertyReader.isPropertyExist(PropertyReader.KEY_BUG_SENSE)) { BugSenseHandler.startSession(this); } } @Override protected void onStop() { super.onStop(); if(propertyReader.isPropertyExist(PropertyReader.KEY_BUG_SENSE)) { BugSenseHandler.closeSession(this); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == Constants.REQUEST_CODE_SIGN_IN || requestCode == Constants .REQUEST_CODE_SIGN_UP) { if(resultCode == Constants.RESULT_TRUE) { Intent intentMain = new Intent(SlideActivity.this, DiscoverMainActivity.class); startActivity(intentMain); finish(); } } } private void initSlideView() { views = new ArrayList<View>(); LinearLayout.LayoutParams mParams = new LinearLayout.LayoutParams(LayoutParams .WRAP_CONTENT, LayoutParams.WRAP_CONTENT); for(int index = 0; index < pics.length; index++) { ImageView imageView = new ImageView(this); imageView.setLayoutParams(mParams); imageView.setImageResource(pics[index]); views.add(imageView); } viewPager = (ViewPager) findViewById(R.id.page); viewPagerAdapter = new ViewPagerAdapter(views); viewPager.setAdapter(viewPagerAdapter); viewPager.setOnPageChangeListener(this); } private void initLinks() { TextView loginTextView = (TextView) findViewById(R.id.text_login); TextView signUpTextView = (TextView) findViewById(R.id.text_signup); Button skipButton = (Button) findViewById(R.id.skipButton); loginTextView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { EvercamDiscover.sendEventAnalytics(SlideActivity.this, R.string .category_welcome_slides, R.string.action_welcome_sign_in_out, R.string .label_welcome_login); Intent login = new Intent(SlideActivity.this, LoginActivity.class); startActivityForResult(login, Constants.REQUEST_CODE_SIGN_IN); } }); signUpTextView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { EvercamDiscover.sendEventAnalytics(SlideActivity.this, R.string .category_welcome_slides, R.string.action_welcome_sign_in_out, R.string .label_welcome_sign_up); Intent signup = new Intent(SlideActivity.this, SignUpActivity.class); startActivityForResult(signup, Constants.REQUEST_CODE_SIGN_UP); } }); skipButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { EvercamDiscover.sendEventAnalytics(SlideActivity.this, R.string .category_welcome_slides, R.string.action_welcome_enter_app, R.string .label_welcome_enter_app); Intent skip = new Intent(SlideActivity.this, DiscoverMainActivity.class); startActivity(skip); finish(); } }); } private void initDots() { LinearLayout dotLayout = (LinearLayout) findViewById(R.id.dot_layout); dots = new ImageView[pics.length]; for(int index = 0; index < pics.length; index++) { dots[index] = (ImageView) dotLayout.getChildAt(index); dots[index].setEnabled(true); dots[index].setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { int position = (Integer) view.getTag(); setCurrentView(position); setCurrentDot(position); } }); dots[index].setTag(index); } currentIndex = 0; dots[currentIndex].setEnabled(false); } private void setCurrentView(int position) { if(position < 0 || position >= pics.length) { return; } viewPager.setCurrentItem(position); } private void setCurrentDot(int positon) { if(positon < 0 || positon > pics.length - 1 || currentIndex == positon) { return; } dots[positon].setEnabled(false); dots[currentIndex].setEnabled(true); currentIndex = positon; } @Override public void onPageScrollStateChanged(int arg0) { } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageSelected(int position) { setCurrentDot(position); } private class ViewPagerAdapter extends PagerAdapter { private List<View> views; public ViewPagerAdapter(List<View> views) { this.views = views; } @Override public void destroyItem(View view, int position, Object arg2) { ((ViewPager) view).removeView(views.get(position)); } @Override public int getCount() { if(views != null) { return views.size(); } return 0; } @Override public Object instantiateItem(View view, int position) { ((ViewPager) view).addView(views.get(position), 0); return views.get(position); } @Override public boolean isViewFromObject(View view, Object object) { return (view == object); } } }