/**
* Copyright (c) 2015 unfoldingWord
* http://creativecommons.org/licenses/MIT/
* See LICENSE file for details.
* Contributors:
* PJ Fechner <pj@actsmedia.com>
*/
package activity.reading;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import java.util.List;
import eventbusmodels.StoriesPagingEvent;
import fragments.Reading.StoryReadingFragment;
import model.DaoDBHelper;
import model.daoModels.Book;
import model.daoModels.Project;
import model.daoModels.StoryPage;
import model.daoModels.Version;
import singletons.UWAudioPlayer;
import utils.UWPreferenceManager;
import view.ReadingToolbarViewData;
import view.ReadingToolbarViewStoriesModel;
/**
* Created by PJ Fechner
* Activity to handle reading Open Bible Story text
*/
public class StoryReadingActivity extends BaseReadingActivity {
static private final String TAG = "StoryReadingActivity";
static private final int HIGH_TEXT_SIZE_LIMIT = 25;
static private final int LOW_TEXT_SIZE_LIMIT = 15;
private StoryReadingFragment readingFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
protected Version getSharingVersion() {
StoryPage page = getMainPage();
if(page != null){
return page.getStoriesChapter().getBook().getVersion();
}
else{
return null;
}
}
@Override
protected void update() {
super.update();
updateReadingView();
StoryPage page = getMainPage();
if(page != null){
UWAudioPlayer.getInstance(getApplicationContext()).prepareAudio(page);
}
}
@Override
protected ReadingToolbarViewData getToolbarViewData() {
return new ReadingToolbarViewStoriesModel(getApplicationContext());
}
@Override
protected Book getBook() {
StoryPage page = getMainPage();
return(page != null)? page.getStoriesChapter().getBook() : null;
}
private StoryPage getMainPage(){
return StoriesPagingEvent.getStickyEvent(getApplicationContext()).mainStoryPage;
}
@Override
protected Project getProject() {
List<Project> projects = Project.getAllModels(DaoDBHelper.getDaoSession(getApplicationContext()));
for(Project project : projects){
if(project.getUniqueSlug().equalsIgnoreCase("obs")){
return project;
}
}
return null;
}
@Override
protected int getCurrentTextSizeIndex() {
return UWPreferenceManager.getStoriesTextSizeIndex(getApplicationContext());
}
@Override
protected List<String> getTextSizeOptions() {
return UWPreferenceManager.STORIES_TEXT_SIZES;
}
@Override
protected void setNewTextSize(int index) {
updateTextSize(index);
}
// @Override
// protected void makeTextLarger() {
//
// updateTextSize(UWPreferenceManager.getStoriesTextSize(getApplicationContext()) + 1);
// }
//
// @Override
// protected void makeTextSmaller() {
//
// updateTextSize(UWPreferenceManager.getStoriesTextSize(getApplicationContext()) - 1);
// }
private void updateTextSize(int index){
UWPreferenceManager.setStoriesTextSize(getApplicationContext(), index);
int textSize = Integer.parseInt(UWPreferenceManager.getStoriesTextSize(getApplicationContext()));
if(readingFragment != null){
readingFragment.setTextSize(textSize);
}
// setTextLargerDisabled((textSize >= HIGH_TEXT_SIZE_LIMIT));
// setTextSmallerDisabled(textSize <= LOW_TEXT_SIZE_LIMIT);
}
protected void updateReadingView() {
if (this.readingFragment == null) {
Fragment cachedFragment = getSupportFragmentManager().findFragmentByTag("StoryReadingFragment");
if(cachedFragment != null){
this.readingFragment = (StoryReadingFragment) cachedFragment;
readingFragment.update();
}
else {
this.readingFragment = StoryReadingFragment.newInstance(Integer.parseInt(UWPreferenceManager.getStoriesTextSize(getApplicationContext())));
getSupportFragmentManager().beginTransaction().add(readingLayout.getId(), readingFragment, "StoryReadingFragment").commit();
}
}
else {
readingFragment.update();
}
}
@Override
protected boolean toggleDiglot() {
boolean isDiglot = super.toggleDiglot();
readingFragment.setDiglotShowing(isDiglot);
return isDiglot;
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
readingFragment.setOrientationAsLandscape((newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE));
}
}