package com.doplgangr.secrecy.activities;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.view.WindowManager;
import com.doplgangr.secrecy.Config;
import com.doplgangr.secrecy.R;
import com.doplgangr.secrecy.fragments.FilesListFragment;
import com.doplgangr.secrecy.adapters.VaultsListFragment;
import de.greenrobot.event.EventBus;
//import android.support.v4.app.Fragment;
//import android.support.v4.app.FragmentManager;
//import android.support.v4.app.FragmentTransaction;
public class FilesActivity extends ActionBarActivity
implements
VaultsListFragment.OnFragmentFinishListener {
private FragmentManager fragmentManager;
private Boolean isConfigChange;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_files);
// Don't keep a screenshot of this window for recent apps
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
Bundle extras = getIntent().getExtras();
String vault = extras.getString(Config.vault_extra);
String password = extras.getString(Config.password_extra);
fragmentManager = getFragmentManager();
if (fragmentManager.findFragmentByTag(FilesListFragment.class.getName()) == null) {
FilesListFragment fragment = new FilesListFragment();
Bundle bundle = new Bundle();
bundle.putString(Config.vault_extra, vault);
bundle.putString(Config.password_extra, password);
fragment.setArguments(bundle);
fragmentManager.beginTransaction()
.replace(R.id.content, fragment, FilesListFragment.class.getName())
.commit();
}
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
isConfigChange = true;
}
@Override
public boolean isChangingConfigurations() {
if (android.os.Build.VERSION.SDK_INT >= 11)
return super.isChangingConfigurations();
else
return isConfigChange;
}
@Override
public void onFinish(Fragment fragment) {
fragmentManager.beginTransaction()
.remove(fragment)
.commit();
}
@Override
public void onNew(Bundle bundle, Fragment fragment) {
fragment.setArguments(bundle);
switchFragment(fragment);
}
void switchFragment(final Fragment fragment) {
String tag = fragment.getClass().getName();
fragmentManager.beginTransaction()
.replace(android.R.id.content, fragment, tag)
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
.commit();
}
@Override
public void onPause() {
super.onPause();
if (isChangingConfigurations())
onPauseDecision.startActivity();
if (onPauseDecision.shouldFinish())
finish();
}
@Override
public void onResume() {
super.onResume();
onPauseDecision.finishActivity();
}
@Override
public void onDestroy() {
EventBus.getDefault().post(new shouldRefresh());
super.onDestroy();
}
public static class onPauseDecision {
static Boolean pause = true;
// An activity is started, should not pause and kill this fragment.
public static void startActivity() {
pause = false;
}
// Fragment returns to top, allow it to be paused and killed.
public static void finishActivity() {
pause = true;
}
public static Boolean shouldFinish() {
return pause;
}
}
public class shouldRefresh {
}
}