package org.witness.informacam.app;
import java.util.Locale;
import net.hockeyapp.android.CrashManager;
import org.witness.informacam.InformaCam;
import org.witness.informacam.app.screens.wizard.WizardCreateDB;
import org.witness.informacam.app.screens.wizard.WizardSelectLanguage;
import org.witness.informacam.app.screens.wizard.WizardTakePhoto;
import org.witness.informacam.app.utils.Constants.App;
import org.witness.informacam.app.utils.Constants.Codes;
import org.witness.informacam.app.utils.Constants.WizardActivityListener;
import org.witness.informacam.crypto.KeyUtility;
import org.witness.informacam.json.JSONException;
import org.witness.informacam.ui.SurfaceGrabberActivity;
import org.witness.informacam.utils.Constants.InformaCamEventListener;
import org.witness.informacam.utils.Constants.Logger;
import org.witness.informacam.utils.Constants.Models.IUser;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.os.Bundle;
import android.os.Message;
import android.preference.PreferenceManager;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTransaction;
import android.view.WindowManager;
import android.widget.Toast;
public class WizardActivity extends FragmentActivity implements WizardActivityListener
{
private InformaCam informaCam;
private final static String LOG = App.Wizard.LOG;
public WizardActivity()
{
super();
}
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
informaCam = InformaCam.getInstance();
if(PreferenceManager.getDefaultSharedPreferences(this).getBoolean("prefBlockScreenshots", false))
{
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
WindowManager.LayoutParams.FLAG_SECURE);
}
setContentView(R.layout.activity_wizard);
Fragment step1 = Fragment.instantiate(this, WizardSelectLanguage.class.getName());
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.add(R.id.wizard_holder, step1);
//ft.addToBackStack(null);
ft.commit();
checkForCrashes();
checkForUpdates();
}
private void checkForCrashes()
{
CrashManager.register(this, InformaActivity.HOCKEY_APP_ID);
}
private void checkForUpdates()
{
// XXX: Remove this for store builds!
//UpdateManager.register(this, InformaActivity.HOCKEY_APP_ID);
}
@Override
public void onBackPressed()
{
if (getSupportFragmentManager().getBackStackEntryCount() == 0)
{
this.setResult(RESULT_CANCELED);
finish();
}
else
{
super.onBackPressed();
}
}
@Override
public void onLanguageSelected(String languageCode)
{
SharedPreferences.Editor sp = PreferenceManager.getDefaultSharedPreferences(this).edit();
sp.putString(Codes.Extras.LOCALE_PREF_KEY, languageCode).commit();
Configuration configuration = new Configuration();
configuration.locale = new Locale(languageCode);
getBaseContext().getResources().updateConfiguration(configuration, getBaseContext().getResources().getDisplayMetrics());
setResult(Activity.RESULT_FIRST_USER, new Intent().putExtra(Codes.Extras.CHANGE_LOCALE, true));
finish();
}
@Override
public void onLanguageConfirmed()
{
Fragment step2 = Fragment.instantiate(this, WizardCreateDB.class.getName());
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_from_right, R.anim.slide_out_to_left, R.anim.slide_in_from_left, R.anim.slide_out_to_right);
ft.replace(R.id.wizard_holder, step2);
ft.addToBackStack(null);
ft.setTransitionStyle(2);
ft.commit();
}
@Override
public void onUsernameCreated(String username, String email, String password)
{
try {
informaCam.user.put(IUser.ALIAS, username);
informaCam.user.put(IUser.EMAIL, email);
informaCam.user.put(IUser.PASSWORD, password);
Fragment step3 = Fragment.instantiate(this, WizardTakePhoto.class.getName());
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_from_right, R.anim.slide_out_to_left, R.anim.slide_in_from_left, R.anim.slide_out_to_right);
ft.replace(R.id.wizard_holder, step3);
ft.addToBackStack(null);
ft.commit();
} catch (JSONException e) {
Logger.e(LOG, e);
}
}
@Override
public void onTakePhotoClicked()
{
Intent surfaceGrabberIntent = new Intent(this, SurfaceGrabberActivity.class);
startActivityForResult(surfaceGrabberIntent, org.witness.informacam.utils.Constants.Codes.Routes.IMAGE_CAPTURE);
}
@Override
public void onAssetEncryptionSelected(boolean encryptAssets) {
/*
SharedPreferences.Editor sp = PreferenceManager.getDefaultSharedPreferences(this).edit();
sp.putString(IUser.ASSET_ENCRYPTION, encryptAssets ? "0" : "1").commit();
*/
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == Activity.RESULT_OK) {
switch(requestCode) {
case org.witness.informacam.utils.Constants.Codes.Routes.IMAGE_CAPTURE:
// init the key...
// Toast.makeText(this, getString(R.string.wizard_key_is_being_made), Toast.LENGTH_LONG).show();
// toImageCapture.setClickable(false);
//((WizardActivity) a).autoAdvance();
/*
new Thread(new Runnable() {
@Override
public void run() {
if(KeyUtility.initDevice()) {
Bundle data = new Bundle();
data.putInt(Codes.Extras.MESSAGE_CODE, Codes.Messages.UI.REPLACE);
Message message = new Message();
message.setData(data);
Toast.makeText(WizardActivity.this, getString(R.string.done), Toast.LENGTH_LONG).show();
((InformaCamEventListener) this).onUpdate(message);
}
}
}).start();*/
setResult(RESULT_OK);
finish();
break;
}
}
}
}