/***************************************************************************************
* Copyright (c) 2012 Norbert Nagold <norbert.nagold@gmail.com> *
* *
* This program is free software; you can redistribute it and/or modify it under *
* the terms of the GNU General Public License as published by the Free Software *
* Foundation; either version 3 of the License, or (at your option) any later *
* version. *
* *
* This program is distributed in the hope that it will be useful, but WITHOUT ANY *
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A *
* PARTICULAR PURPOSE. See the GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License along with *
* this program. If not, see <http://www.gnu.org/licenses/>. *
****************************************************************************************/
package com.ichi2.anki;
import android.content.Intent;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import com.ichi2.anim.ActivityTransitionAnimation;
import com.ichi2.anki.StudyOptionsFragment.StudyOptionsListener;
import com.ichi2.anki.dialogs.CustomStudyDialog;
import com.ichi2.widget.WidgetStatus;
import timber.log.Timber;
public class StudyOptionsActivity extends NavigationDrawerActivity implements StudyOptionsListener,
CustomStudyDialog.CustomStudyListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// The empty frame layout is a workaround for fragments not showing when they are added
// to android.R.id.content when an action bar is used in Android 2.1 (and potentially
// higher) with the appcompat package.
View mainView = getLayoutInflater().inflate(R.layout.studyoptions, null);
setContentView(mainView);
// create inherited navigation drawer layout here so that it can be used by parent class
initNavigationDrawer(mainView);
if (savedInstanceState == null) {
loadStudyOptionsFragment();
}
}
private void loadStudyOptionsFragment() {
boolean withDeckOptions = false;
if (getIntent().getExtras() != null) {
withDeckOptions = getIntent().getExtras().getBoolean("withDeckOptions");
}
StudyOptionsFragment currentFragment = StudyOptionsFragment.newInstance(withDeckOptions);
getSupportFragmentManager().beginTransaction().replace(R.id.studyoptions_frame, currentFragment).commit();
}
private StudyOptionsFragment getCurrentFragment() {
return (StudyOptionsFragment) getSupportFragmentManager().findFragmentById(R.id.studyoptions_frame);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (getDrawerToggle().onOptionsItemSelected(item)) {
return true;
}
switch (item.getItemId()) {
case android.R.id.home:
closeStudyOptions();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
Timber.d("onActivityResult (requestCode = %d, resultCode = %d)", requestCode, resultCode);
getCurrentFragment().restorePreferences();
}
private void closeStudyOptions() {
closeStudyOptions(RESULT_OK);
}
private void closeStudyOptions(int result) {
// mCompat.invalidateOptionsMenu(this);
setResult(result);
finishWithAnimation(ActivityTransitionAnimation.RIGHT);
}
@Override
public void onBackPressed() {
if (isDrawerOpen()) {
super.onBackPressed();
} else {
Timber.i("Back key pressed");
closeStudyOptions();
}
}
@Override
public void onStop() {
super.onStop();
if (colIsOpen()) {
WidgetStatus.update(this);
UIUtils.saveCollectionInBackground(this);
}
}
@Override
public void onResume() {
super.onResume();
selectNavigationItem(-1);
}
@Override
public void onRequireDeckListUpdate() {
getCurrentFragment().refreshInterface();
}
/**
* Callback methods from CustomStudyDialog
*/
@Override
public void onCreateCustomStudySession() {
// Sched already reset by DeckTask in CustomStudyDialog
getCurrentFragment().refreshInterface();
}
@Override
public void onExtendStudyLimits() {
// Sched needs to be reset so provide true argument
getCurrentFragment().refreshInterface(true);
}
}