package com.garethevans.church.opensongtablet;
import android.app.Activity;
import android.app.DialogFragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.Spinner;
import android.widget.TableLayout;
import android.widget.TextView;
import java.util.ArrayList;
public class PopUpFontsFragment extends DialogFragment {
static PopUpFontsFragment newInstance() {
PopUpFontsFragment frag;
frag = new PopUpFontsFragment();
return frag;
}
public interface MyInterface {
void refreshAll();
}
private MyInterface mListener;
@Override
@SuppressWarnings("deprecation")
public void onAttach(Activity activity) {
mListener = (MyInterface) activity;
super.onAttach(activity);
}
@Override
public void onDetach() {
mListener = null;
super.onDetach();
}
int temp_mylyricsfontnum = FullscreenActivity.mylyricsfontnum;
int temp_mychordsfontnum = FullscreenActivity.mychordsfontnum;
int temp_linespacing = FullscreenActivity.linespacing;
Spinner lyricsFontSpinner;
Spinner chordsFontSpinner;
TextView headingPreview;
TextView commentPreview;
TextView lyricsPreview1;
TextView lyricsPreview2;
TextView chordPreview1;
TextView chordPreview2;
TextView scaleHeading_TextView;
SeekBar scaleHeading_SeekBar;
TextView scaleComment_TextView;
SeekBar scaleComment_SeekBar;
SeekBar lineSpacingSeekBar;
TextView lineSpacingText;
Button savePopupFont;
TableLayout songPreview;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
getDialog().setTitle(getActivity().getResources().getString(R.string.options_options_fonts));
View V = inflater.inflate(R.layout.popup_font, container, false);
// Initialise the views
lyricsFontSpinner = (Spinner) V.findViewById(R.id.lyricsFontSpinner);
chordsFontSpinner = (Spinner) V.findViewById(R.id.chordsFontSpinner);
headingPreview = (TextView) V.findViewById(R.id.headingPreview);
commentPreview = (TextView) V.findViewById(R.id.commentPreview);
lyricsPreview1 = (TextView) V.findViewById(R.id.lyricsPreview1);
lyricsPreview2 = (TextView) V.findViewById(R.id.lyricsPreview2);
chordPreview1 = (TextView) V.findViewById(R.id.chordPreview1);
chordPreview2 = (TextView) V.findViewById(R.id.chordPreview2);
scaleComment_TextView = (TextView) V.findViewById(R.id.scaleComment_TextView);
scaleComment_SeekBar = (SeekBar) V.findViewById(R.id.scaleComment_SeekBar);
scaleHeading_TextView = (TextView) V.findViewById(R.id.scaleHeading_TextView);
scaleHeading_SeekBar = (SeekBar) V.findViewById(R.id.scaleHeading_SeekBar);
lineSpacingSeekBar = (SeekBar) V.findViewById(R.id.lineSpacingSeekBar);
lineSpacingText = (TextView) V.findViewById(R.id.lineSpacingText);
savePopupFont = (Button) V.findViewById(R.id.savePopupFont);
songPreview = (TableLayout) V.findViewById(R.id.songPreview);
// Set up the typefaces
SetTypeFace.setTypeface();
// Set up the close button
savePopupFont.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FullscreenActivity.mylyricsfontnum = lyricsFontSpinner.getSelectedItemPosition();
FullscreenActivity.mychordsfontnum = chordsFontSpinner.getSelectedItemPosition();
FullscreenActivity.linespacing = lineSpacingSeekBar.getProgress();
float num = (float) scaleHeading_SeekBar.getProgress()/100.0f;
FullscreenActivity.headingfontscalesize = num;
num = (float) scaleComment_SeekBar.getProgress()/100.0f;
FullscreenActivity.commentfontscalesize = num;
Preferences.savePreferences();
mListener.refreshAll();
dismiss();
}
});
// Set the lyrics and chord font preview to what they should look like
headingPreview.setTextSize(12*FullscreenActivity.headingfontscalesize);
commentPreview.setTextSize(12*FullscreenActivity.commentfontscalesize);
lyricsPreview1.setTextSize(12);
lyricsPreview2.setTextSize(12);
chordPreview1.setTextSize(12);
chordPreview2.setTextSize(12);
lyricsPreview1.setPadding(0, -(int) ((float) temp_linespacing / 3.0f), 0, 0);
lyricsPreview2.setPadding(0, -(int) ((float) temp_linespacing / 3.0f), 0, 0);
chordPreview1.setPadding(0, -(int) ((float) temp_linespacing / 3.0f), 0, 0);
chordPreview2.setPadding(0, -(int) ((float) temp_linespacing / 3.0f), 0, 0);
ArrayList<String> font_choices = new ArrayList<>();
font_choices.add(getResources().getString(R.string.font_default));
font_choices.add(getResources().getString(R.string.font_monospace));
font_choices.add(getResources().getString(R.string.font_sans));
font_choices.add(getResources().getString(R.string.font_serif));
font_choices.add(getResources().getString(R.string.font_firasanslight));
font_choices.add(getResources().getString(R.string.font_firasansregular));
font_choices.add(getResources().getString(R.string.font_kaushanscript));
font_choices.add(getResources().getString(R.string.font_latolight));
font_choices.add(getResources().getString(R.string.font_latoregular));
font_choices.add(getResources().getString(R.string.font_leaguegothic));
font_choices.add(getResources().getString(R.string.font_roboto_light));
font_choices.add(getResources().getString(R.string.font_roboto_thin));
font_choices.add(getResources().getString(R.string.font_roboto_medium));
ArrayAdapter<String> choose_fonts = new ArrayAdapter<>(getActivity(), R.layout.my_spinner, font_choices);
choose_fonts.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
lyricsFontSpinner.setAdapter(choose_fonts);
chordsFontSpinner.setAdapter(choose_fonts);
lyricsFontSpinner.setSelection(temp_mylyricsfontnum);
chordsFontSpinner.setSelection(temp_mychordsfontnum);
lyricnchordsPreviewUpdate();
// Listen for font changes
lyricsFontSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
temp_mylyricsfontnum = position;
lyricnchordsPreviewUpdate();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
lyricnchordsPreviewUpdate();
}
});
chordsFontSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
temp_mychordsfontnum = position;
lyricnchordsPreviewUpdate();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
lyricnchordsPreviewUpdate();
}
});
// Listen for seekbar changes
scaleHeading_SeekBar.setMax(200);
int progress = (int) (FullscreenActivity.headingfontscalesize * 100);
scaleHeading_SeekBar.setProgress(progress);
String text = progress + "%";
scaleHeading_TextView.setText(text);
scaleHeading_SeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
String text = progress + "%";
scaleHeading_TextView.setText(text);
float newsize = 12 * ((float) progress/100.0f);
headingPreview.setTextSize(newsize);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
scaleComment_SeekBar.setMax(200);
progress = (int) (FullscreenActivity.commentfontscalesize * 100);
scaleComment_SeekBar.setProgress(progress);
text = progress + "%";
scaleComment_TextView.setText(text);
scaleComment_SeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
String text = progress + "%";
scaleComment_TextView.setText(text);
float newsize = 12 * ((float) progress/100.0f);
commentPreview.setTextSize(newsize);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {}
});
lineSpacingSeekBar.setMax(30);
lineSpacingSeekBar.setProgress(temp_linespacing);
String spacing_text = temp_linespacing + " %";
lineSpacingText.setText(spacing_text);
lineSpacingSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
String newtext = progress + " %";
lineSpacingText.setText(newtext);
lyricsPreview1.setPadding(0, -(int) ((float) progress / 3.0f), 0, 0);
lyricsPreview2.setPadding(0, -(int) ((float) progress / 3.0f), 0, 0);
chordPreview1.setPadding(0, -(int) ((float) progress / 3.0f), 0, 0);
chordPreview2.setPadding(0, -(int) ((float) progress / 3.0f), 0, 0);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {}
});
return V;
}
public void lyricnchordsPreviewUpdate() {
lyricsPreview1.setTextColor(FullscreenActivity.light_lyricsTextColor);
lyricsPreview2.setTextColor(FullscreenActivity.light_lyricsTextColor);
chordPreview1.setTextColor(FullscreenActivity.light_lyricsChordsColor);
chordPreview2.setTextColor(FullscreenActivity.light_lyricsChordsColor);
songPreview.setBackgroundColor(FullscreenActivity.light_lyricsBackgroundColor);
// Decide on the font being used for the lyrics
switch (temp_mylyricsfontnum) {
case 1:
lyricsPreview1.setTypeface(FullscreenActivity.typeface1);
lyricsPreview2.setTypeface(FullscreenActivity.typeface1);
headingPreview.setTypeface(FullscreenActivity.typeface1);
commentPreview.setTypeface(FullscreenActivity.typeface1);
break;
case 2:
lyricsPreview1.setTypeface(FullscreenActivity.typeface2);
lyricsPreview2.setTypeface(FullscreenActivity.typeface2);
headingPreview.setTypeface(FullscreenActivity.typeface2);
commentPreview.setTypeface(FullscreenActivity.typeface2);
break;
case 3:
lyricsPreview1.setTypeface(FullscreenActivity.typeface3);
lyricsPreview2.setTypeface(FullscreenActivity.typeface3);
headingPreview.setTypeface(FullscreenActivity.typeface3);
commentPreview.setTypeface(FullscreenActivity.typeface3);
break;
case 4:
lyricsPreview1.setTypeface(FullscreenActivity.typeface4);
lyricsPreview2.setTypeface(FullscreenActivity.typeface4);
headingPreview.setTypeface(FullscreenActivity.typeface4);
commentPreview.setTypeface(FullscreenActivity.typeface4);
break;
case 5:
lyricsPreview1.setTypeface(FullscreenActivity.typeface5);
lyricsPreview2.setTypeface(FullscreenActivity.typeface5);
headingPreview.setTypeface(FullscreenActivity.typeface5);
commentPreview.setTypeface(FullscreenActivity.typeface5);
break;
case 6:
lyricsPreview1.setTypeface(FullscreenActivity.typeface6);
lyricsPreview2.setTypeface(FullscreenActivity.typeface6);
headingPreview.setTypeface(FullscreenActivity.typeface6);
commentPreview.setTypeface(FullscreenActivity.typeface6);
break;
case 7:
lyricsPreview1.setTypeface(FullscreenActivity.typeface7);
lyricsPreview2.setTypeface(FullscreenActivity.typeface7);
headingPreview.setTypeface(FullscreenActivity.typeface7);
commentPreview.setTypeface(FullscreenActivity.typeface7);
break;
case 8:
lyricsPreview1.setTypeface(FullscreenActivity.typeface8);
lyricsPreview2.setTypeface(FullscreenActivity.typeface8);
headingPreview.setTypeface(FullscreenActivity.typeface8);
commentPreview.setTypeface(FullscreenActivity.typeface8);
break;
case 9:
lyricsPreview1.setTypeface(FullscreenActivity.typeface9);
lyricsPreview2.setTypeface(FullscreenActivity.typeface9);
headingPreview.setTypeface(FullscreenActivity.typeface9);
commentPreview.setTypeface(FullscreenActivity.typeface9);
break;
case 10:
lyricsPreview1.setTypeface(FullscreenActivity.typeface10);
lyricsPreview2.setTypeface(FullscreenActivity.typeface10);
headingPreview.setTypeface(FullscreenActivity.typeface10);
commentPreview.setTypeface(FullscreenActivity.typeface10);
break;
case 11:
lyricsPreview1.setTypeface(FullscreenActivity.typeface11);
lyricsPreview2.setTypeface(FullscreenActivity.typeface11);
headingPreview.setTypeface(FullscreenActivity.typeface11);
commentPreview.setTypeface(FullscreenActivity.typeface11);
break;
case 12:
lyricsPreview1.setTypeface(FullscreenActivity.typeface12);
lyricsPreview2.setTypeface(FullscreenActivity.typeface12);
headingPreview.setTypeface(FullscreenActivity.typeface12);
commentPreview.setTypeface(FullscreenActivity.typeface12);
break;
default:
lyricsPreview1.setTypeface(FullscreenActivity.typeface0);
lyricsPreview2.setTypeface(FullscreenActivity.typeface0);
headingPreview.setTypeface(FullscreenActivity.typeface0);
commentPreview.setTypeface(FullscreenActivity.typeface0);
break;
}
// Decide on the font being used for chords
switch (temp_mychordsfontnum) {
case 1:
chordPreview1.setTypeface(FullscreenActivity.typeface1);
chordPreview2.setTypeface(FullscreenActivity.typeface1);
break;
case 2:
chordPreview1.setTypeface(FullscreenActivity.typeface2);
chordPreview2.setTypeface(FullscreenActivity.typeface2);
break;
case 3:
chordPreview1.setTypeface(FullscreenActivity.typeface3);
chordPreview2.setTypeface(FullscreenActivity.typeface3);
break;
case 4:
chordPreview1.setTypeface(FullscreenActivity.typeface4);
chordPreview2.setTypeface(FullscreenActivity.typeface4);
break;
case 5:
chordPreview1.setTypeface(FullscreenActivity.typeface5);
chordPreview2.setTypeface(FullscreenActivity.typeface5);
break;
case 6:
chordPreview1.setTypeface(FullscreenActivity.typeface6);
chordPreview2.setTypeface(FullscreenActivity.typeface6);
break;
case 7:
chordPreview1.setTypeface(FullscreenActivity.typeface7);
chordPreview2.setTypeface(FullscreenActivity.typeface7);
break;
case 8:
chordPreview1.setTypeface(FullscreenActivity.typeface8);
chordPreview2.setTypeface(FullscreenActivity.typeface8);
break;
case 9:
chordPreview1.setTypeface(FullscreenActivity.typeface9);
chordPreview2.setTypeface(FullscreenActivity.typeface9);
break;
case 10:
chordPreview1.setTypeface(FullscreenActivity.typeface10);
chordPreview2.setTypeface(FullscreenActivity.typeface10);
break;
case 11:
chordPreview1.setTypeface(FullscreenActivity.typeface11);
chordPreview2.setTypeface(FullscreenActivity.typeface11);
break;
case 12:
chordPreview1.setTypeface(FullscreenActivity.typeface12);
chordPreview2.setTypeface(FullscreenActivity.typeface12);
break;
default:
chordPreview1.setTypeface(FullscreenActivity.typeface0);
chordPreview2.setTypeface(FullscreenActivity.typeface0);
break;
}
}
}