package com.garethevans.church.opensongtablet;
import android.app.Activity;
import android.util.Log;
import java.util.ArrayList;
public class LyricsDisplay extends Activity {
static String tempPresentationOrder;
// This bit parses the lyrics
public static void parseLyrics() {
Log.d("LyricsDisplay","LyricsDisplay activity running");
// Keep myLyrics and mLyrics variables the same
FullscreenActivity.myLyrics = FullscreenActivity.mLyrics;
FullscreenActivity.myLyrics = ProcessSong.removeUnderScores(FullscreenActivity.mLyrics);
// Does the user want to use the custom presentation order?
// If so, parse the song into an appropriate format first
// Only do this if this isn't a scripture - as it starts with numbers!
if (!FullscreenActivity.whichSongFolder.contains(FullscreenActivity.scripture)) {
parseToPresentationOrder();
}
// If the user doesn't want to use a custom presentation order, or it is blank,
// replace it back with the original
if (!FullscreenActivity.usePresentationOrder || FullscreenActivity.mPresentation.isEmpty() || FullscreenActivity.mPresentation.equals("")) {
FullscreenActivity.myLyrics = ProcessSong.removeUnderScores(FullscreenActivity.mLyrics);
}
FullscreenActivity.myLyrics = FullscreenActivity.myLyrics.replace("\n \n","\n\n");
// Now create an array from the myLyrics variable, using the new line as
// a break point."
//This gets rid of the tabs and stuff to make the display look better
FullscreenActivity.myParsedLyrics = FullscreenActivity.myLyrics.split("\n");
// Get the number of rows to write!
FullscreenActivity.numrowstowrite = FullscreenActivity.myParsedLyrics.length;
// Go through the lines and remove underscores if the line isn't an image location
for (int l=0;l<FullscreenActivity.numrowstowrite;l++) {
if (FullscreenActivity.myParsedLyrics[l].contains("_")) {
if (l>0 && !FullscreenActivity.myParsedLyrics[l].contains("["+FullscreenActivity.image+"_") && !FullscreenActivity.myParsedLyrics[l-1].contains("["+FullscreenActivity.image+"_")) {
if (!FullscreenActivity.showChords) {
FullscreenActivity.myParsedLyrics[l] = FullscreenActivity.myParsedLyrics[l].replace("_","");
} else {
FullscreenActivity.myParsedLyrics[l] = FullscreenActivity.myParsedLyrics[l].replace("_"," ");
}
} else if (l==0 && !FullscreenActivity.myParsedLyrics[l].contains("["+FullscreenActivity.image+"_")) {
if (!FullscreenActivity.showChords) {
FullscreenActivity.myParsedLyrics[l] = FullscreenActivity.myParsedLyrics[l].replace("_","");
} else {
FullscreenActivity.myParsedLyrics[l] = FullscreenActivity.myParsedLyrics[l].replace("_"," ");
}
}
}
}
}
public static void replaceLyricsCode() {
// Set the size of the whatisthisline and whatisthisblock arrays
FullscreenActivity.whatisthisblock = new String[FullscreenActivity.numrowstowrite];
FullscreenActivity.whatisthisline = new String[FullscreenActivity.numrowstowrite];
// THIS BIT MAKES EACH LINE THE SAME LENGTH
// FIRST COUNT THE CHARS IN EACH LINE AND IF IT IS BIGGER THAN PREVIOUS, CHANGE IT
// SET TO 0 to start
FullscreenActivity.maxcharsinline = 0;
// Set holders for the whatisthisblock as it should only change if it is
// declared
String holder_whatisthisblock = "lyrics";
for (int x = 0; x < FullscreenActivity.numrowstowrite; x++) {
// If this isn't a chord line, replace lyric codings. This means chord lines can have bar lines in them
if (FullscreenActivity.myParsedLyrics[x].indexOf(".")!=0) {
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x]
.replace("||", " ");
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x]
.replace("|", " ");
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x]
.replace("---", "");
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x]
.replace("-!!", "");
}
// Set the defaults
FullscreenActivity.whatisthisline[x] = "lyrics";
FullscreenActivity.whatisthisblock[x] = holder_whatisthisblock;
if (FullscreenActivity.myParsedLyrics[x].indexOf(".") == 0) {
FullscreenActivity.whatisthisline[x] = "chords";
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x]
.replaceFirst(".", ""); // Just the first occurence allowing ...... to be used on chord lines
} else if (FullscreenActivity.myParsedLyrics[x].indexOf(" ") == 0 && FullscreenActivity.myParsedLyrics[x].length()>0) {
FullscreenActivity.whatisthisline[x] = "lyrics";
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x]
.substring(1);
} else if (((FullscreenActivity.myParsedLyrics[x].indexOf("[V") == 0 || FullscreenActivity.myParsedLyrics[x].indexOf("[v") == 0) && FullscreenActivity.myParsedLyrics[x].indexOf("]") > 1 && FullscreenActivity.myParsedLyrics[x].indexOf("]") < 5) ||
(FullscreenActivity.myParsedLyrics[x].toLowerCase(FullscreenActivity.locale).contains("["+FullscreenActivity.tag_verse.toLowerCase(FullscreenActivity.locale)))) {
FullscreenActivity.whatisthisline[x] = "versetitle";
FullscreenActivity.whatisthisblock[x] = "verse";
holder_whatisthisblock = "verse";
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x]
.replace("[", "");
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x]
.replace("]", "");
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x].trim();
if (FullscreenActivity.myParsedLyrics[x].equals("V")
|| FullscreenActivity.myParsedLyrics[x].equals("V1")
|| FullscreenActivity.myParsedLyrics[x].equals("V2")
|| FullscreenActivity.myParsedLyrics[x].equals("V3")
|| FullscreenActivity.myParsedLyrics[x].equals("V4")
|| FullscreenActivity.myParsedLyrics[x].equals("V5")
|| FullscreenActivity.myParsedLyrics[x].equals("V6")
|| FullscreenActivity.myParsedLyrics[x].equals("V7")
|| FullscreenActivity.myParsedLyrics[x].equals("V8")
|| FullscreenActivity.myParsedLyrics[x].equals("V9")
|| FullscreenActivity.myParsedLyrics[x].equals("V10")) {
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x].replace("V", FullscreenActivity.tag_verse+" ");
}
} else if (((FullscreenActivity.myParsedLyrics[x].indexOf("[T") == 0 || FullscreenActivity.myParsedLyrics[x].indexOf("[t") == 0) && FullscreenActivity.myParsedLyrics[x].indexOf("]") > 1 && FullscreenActivity.myParsedLyrics[x].indexOf("]") < 5) ||
(FullscreenActivity.myParsedLyrics[x].toLowerCase(FullscreenActivity.locale).contains("["+FullscreenActivity.tag_tag.toLowerCase(FullscreenActivity.locale)))) {
FullscreenActivity.whatisthisline[x] = "tagtitle";
FullscreenActivity.whatisthisblock[x] = "tag";
holder_whatisthisblock = "tag";
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x]
.replace("[", "");
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x]
.replace("]", "");
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x].trim();
if (FullscreenActivity.myParsedLyrics[x].equals("T")
|| FullscreenActivity.myParsedLyrics[x].equals("T1")
|| FullscreenActivity.myParsedLyrics[x].equals("T2")
|| FullscreenActivity.myParsedLyrics[x].equals("T3")
|| FullscreenActivity.myParsedLyrics[x].equals("T4")
|| FullscreenActivity.myParsedLyrics[x].equals("T5")
|| FullscreenActivity.myParsedLyrics[x].equals("T6")
|| FullscreenActivity.myParsedLyrics[x].equals("T7")
|| FullscreenActivity.myParsedLyrics[x].equals("T8")
|| FullscreenActivity.myParsedLyrics[x].equals("T9")
|| FullscreenActivity.myParsedLyrics[x].equals("T10")) {
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x].replace("T", FullscreenActivity.tag_tag+" ");
}
} else if (FullscreenActivity.myParsedLyrics[x].indexOf("["+FullscreenActivity.image+"_") == 0) {
FullscreenActivity.whatisthisline[x] = "imagetitle";
FullscreenActivity.whatisthisblock[x] = "image";
holder_whatisthisblock = "image";
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x]
.replace("[", "");
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x]
.replace("]", "");
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x].trim();
} else if (((FullscreenActivity.myParsedLyrics[x].indexOf("[C") == 0 || FullscreenActivity.myParsedLyrics[x].indexOf("[c") == 0) && FullscreenActivity.myParsedLyrics[x].indexOf("]") > 1 && FullscreenActivity.myParsedLyrics[x].indexOf("]") < 5) ||
(FullscreenActivity.myParsedLyrics[x].toLowerCase(FullscreenActivity.locale).contains("["+FullscreenActivity.tag_chorus.toLowerCase(FullscreenActivity.locale)))) {
FullscreenActivity.whatisthisline[x] = "chorustitle";
FullscreenActivity.whatisthisblock[x] = "chorus";
holder_whatisthisblock = "chorus";
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x]
.replace("[", "");
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x]
.replace("]", "");
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x].trim();
if (FullscreenActivity.myParsedLyrics[x].equals("C")
|| FullscreenActivity.myParsedLyrics[x].equals("C1")
|| FullscreenActivity.myParsedLyrics[x].equals("C2")
|| FullscreenActivity.myParsedLyrics[x].equals("C3")
|| FullscreenActivity.myParsedLyrics[x].equals("C4")
|| FullscreenActivity.myParsedLyrics[x].equals("C5")
|| FullscreenActivity.myParsedLyrics[x].equals("C6")
|| FullscreenActivity.myParsedLyrics[x].equals("C7")
|| FullscreenActivity.myParsedLyrics[x].equals("C8")
|| FullscreenActivity.myParsedLyrics[x].equals("C9")
|| FullscreenActivity.myParsedLyrics[x].equals("C10")) {
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x].replace("C", FullscreenActivity.tag_chorus+" ");
}
} else if (((FullscreenActivity.myParsedLyrics[x].indexOf("[B") == 0 || FullscreenActivity.myParsedLyrics[x].indexOf("[b") == 0) && FullscreenActivity.myParsedLyrics[x].indexOf("]") > 1 && FullscreenActivity.myParsedLyrics[x].indexOf("]") < 5) ||
(FullscreenActivity.myParsedLyrics[x].toLowerCase(FullscreenActivity.locale).contains("["+FullscreenActivity.tag_bridge.toLowerCase(FullscreenActivity.locale)))) {
FullscreenActivity.whatisthisline[x] = "bridgetitle";
FullscreenActivity.whatisthisblock[x] = "bridge";
holder_whatisthisblock = "bridge";
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x]
.replace("[", "");
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x]
.replace("]", "");
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x].trim();
if (FullscreenActivity.myParsedLyrics[x].equals("B")
|| FullscreenActivity.myParsedLyrics[x].equals("B1")
|| FullscreenActivity.myParsedLyrics[x].equals("B2")
|| FullscreenActivity.myParsedLyrics[x].equals("B3")
|| FullscreenActivity.myParsedLyrics[x].equals("B4")
|| FullscreenActivity.myParsedLyrics[x].equals("B5")
|| FullscreenActivity.myParsedLyrics[x].equals("B6")
|| FullscreenActivity.myParsedLyrics[x].equals("B7")
|| FullscreenActivity.myParsedLyrics[x].equals("B8")
|| FullscreenActivity.myParsedLyrics[x].equals("B9")
|| FullscreenActivity.myParsedLyrics[x].equals("B10")) {
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x].replace("B", FullscreenActivity.tag_bridge+" ");
}
} else if (((FullscreenActivity.myParsedLyrics[x].indexOf("[P") == 0 || FullscreenActivity.myParsedLyrics[x].indexOf("[p") == 0) && FullscreenActivity.myParsedLyrics[x].indexOf("]") > 1 && FullscreenActivity.myParsedLyrics[x].indexOf("]") < 5) ||
(FullscreenActivity.myParsedLyrics[x].toLowerCase(FullscreenActivity.locale).contains("["+FullscreenActivity.tag_prechorus.toLowerCase(FullscreenActivity.locale)))) {
FullscreenActivity.whatisthisline[x] = "prechorustitle";
FullscreenActivity.whatisthisblock[x] = "prechorus";
holder_whatisthisblock = "prechorus";
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x]
.replace("[", "");
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x]
.replace("]", "");
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x].trim();
if (FullscreenActivity.myParsedLyrics[x].equals("P")
|| FullscreenActivity.myParsedLyrics[x].equals("P1")
|| FullscreenActivity.myParsedLyrics[x].equals("P2")
|| FullscreenActivity.myParsedLyrics[x].equals("P3")
|| FullscreenActivity.myParsedLyrics[x].equals("P4")
|| FullscreenActivity.myParsedLyrics[x].equals("P5")
|| FullscreenActivity.myParsedLyrics[x].equals("P6")
|| FullscreenActivity.myParsedLyrics[x].equals("P7")
|| FullscreenActivity.myParsedLyrics[x].equals("P8")
|| FullscreenActivity.myParsedLyrics[x].equals("P9")
|| FullscreenActivity.myParsedLyrics[x].equals("P10")) {
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x].replace("P", FullscreenActivity.tag_prechorus+" ");
}
} else if (FullscreenActivity.myParsedLyrics[x].indexOf("[") == 0) { // This is added for custom user defined tags
FullscreenActivity.whatisthisline[x] = "customtitle";
FullscreenActivity.whatisthisblock[x] = "custom";
holder_whatisthisblock = "custom";
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x]
.replace("[", "");
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x]
.replace("]", "");
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x].trim();
} else if (FullscreenActivity.myParsedLyrics[x].indexOf(";") == 0) {
FullscreenActivity.whatisthisline[x] = "comment";
FullscreenActivity.whatisthisblock[x] = "comment";
FullscreenActivity.myParsedLyrics[x] = FullscreenActivity.myParsedLyrics[x]
.replace(";", "");
} else if (FullscreenActivity.myParsedLyrics[x].indexOf("1") == 0) {
FullscreenActivity.myParsedLyrics[x] = "1. " + FullscreenActivity.myParsedLyrics[x].substring(1);
if (x>0) {
if (FullscreenActivity.whatisthisline[x-1].equals("chords")) {
FullscreenActivity.myParsedLyrics[x-1] = " " + FullscreenActivity.myParsedLyrics[x-1];
}
}
} else if (FullscreenActivity.myParsedLyrics[x].indexOf("2") == 0) {
FullscreenActivity.myParsedLyrics[x] = "2. " + FullscreenActivity.myParsedLyrics[x].substring(1);
if (x>0) {
if (FullscreenActivity.whatisthisline[x-1].equals("chords")) {
FullscreenActivity.myParsedLyrics[x-1] = " " + FullscreenActivity.myParsedLyrics[x-1];
}
}
} else if (FullscreenActivity.myParsedLyrics[x].indexOf("3") == 0) {
FullscreenActivity.myParsedLyrics[x] = "3. " + FullscreenActivity.myParsedLyrics[x].substring(1);
if (x>0) {
if (FullscreenActivity.whatisthisline[x-1].equals("chords")) {
FullscreenActivity.myParsedLyrics[x-1] = " " + FullscreenActivity.myParsedLyrics[x-1];
}
}
} else if (FullscreenActivity.myParsedLyrics[x].indexOf("4") == 0) {
FullscreenActivity.myParsedLyrics[x] = "4. " + FullscreenActivity.myParsedLyrics[x].substring(1);
if (x>0) {
if (FullscreenActivity.whatisthisline[x-1].equals("chords")) {
FullscreenActivity.myParsedLyrics[x-1] = " " + FullscreenActivity.myParsedLyrics[x-1];
}
}
} else if (FullscreenActivity.myParsedLyrics[x].indexOf("5") == 0) {
FullscreenActivity.myParsedLyrics[x] = "5. " + FullscreenActivity.myParsedLyrics[x].substring(1);
if (x>0) {
if (FullscreenActivity.whatisthisline[x-1].equals("chords")) {
FullscreenActivity.myParsedLyrics[x-1] = " " + FullscreenActivity.myParsedLyrics[x-1];
}
}
} else if (FullscreenActivity.myParsedLyrics[x].indexOf("6") == 0) {
FullscreenActivity.myParsedLyrics[x] = "6. " + FullscreenActivity.myParsedLyrics[x].substring(1);
if (x>0) {
if (FullscreenActivity.whatisthisline[x-1].equals("chords")) {
FullscreenActivity.myParsedLyrics[x-1] = " " + FullscreenActivity.myParsedLyrics[x-1];
}
}
} else if (FullscreenActivity.myParsedLyrics[x].indexOf("7") == 0) {
FullscreenActivity.myParsedLyrics[x] = "7. " + FullscreenActivity.myParsedLyrics[x].substring(1);
if (x>0) {
if (FullscreenActivity.whatisthisline[x-1].equals("chords")) {
FullscreenActivity.myParsedLyrics[x-1] = " " + FullscreenActivity.myParsedLyrics[x-1];
}
}
} else if (FullscreenActivity.myParsedLyrics[x].indexOf("8") == 0) {
FullscreenActivity.myParsedLyrics[x] = "8. " + FullscreenActivity.myParsedLyrics[x].substring(1);
if (x>0) {
if (FullscreenActivity.whatisthisline[x-1].equals("chords")) {
FullscreenActivity.myParsedLyrics[x-1] = " " + FullscreenActivity.myParsedLyrics[x-1];
}
}
} else if (FullscreenActivity.myParsedLyrics[x].indexOf("9") == 0) {
FullscreenActivity.myParsedLyrics[x] = "9. " + FullscreenActivity.myParsedLyrics[x].substring(1);
if (x>0) {
if (FullscreenActivity.whatisthisline[x-1].equals("chords")) {
FullscreenActivity.myParsedLyrics[x-1] = " " + FullscreenActivity.myParsedLyrics[x-1];
}
}
}
// Get the length of the line
int charsinthisline = FullscreenActivity.myParsedLyrics[x].length();
if (charsinthisline > FullscreenActivity.maxcharsinline) {
// Set the new biggest line size
FullscreenActivity.maxcharsinline = charsinthisline;
}
}
// NOW WE HAVE THE LONGEST LINE, GO THROUGH EACH ONE AND MAKE IT THIS LONG
if (!FullscreenActivity.whichSongFolder.contains("../Images/")) {
for (int x = 0; x < FullscreenActivity.numrowstowrite; x++) {
// Get the length of the line
int charsinthisline = FullscreenActivity.myParsedLyrics[x].length();
if (charsinthisline < FullscreenActivity.maxcharsinline) {
// Ok, it isn't as long as the others. Add spaces
int numspacesneeded = (FullscreenActivity.maxcharsinline - charsinthisline);
for (int i = 0; i < numspacesneeded; i++) {
FullscreenActivity.myParsedLyrics[x] += " ";
}
}
}
}
}
public static void lookForSplitPoints() {
// Script to determine 2 columns split details
int halfwaypoint = Math.round(FullscreenActivity.numrowstowrite / 2);
// Look for nearest split point before halfway
int splitpoint_1sthalf = 0;
boolean gotityet = false;
for (int scan = halfwaypoint; scan > 0; scan--) {
if (!gotityet) {
if (FullscreenActivity.myParsedLyrics[scan].indexOf("[") == 0) {
gotityet = true;
splitpoint_1sthalf = scan;
} else if (FullscreenActivity.myParsedLyrics[scan].length() == 0) {
gotityet = true;
splitpoint_1sthalf = scan + 1;
}
}
}
// Look for nearest split point past halfway
int splitpoint_2ndhalf = FullscreenActivity.numrowstowrite;
boolean gotityet2 = false;
for (int scan = halfwaypoint; scan < FullscreenActivity.numrowstowrite; scan++) {
if (!gotityet2) {
if (FullscreenActivity.myParsedLyrics[scan].indexOf("[") == 0) {
gotityet2 = true;
splitpoint_2ndhalf = scan;
} else if (FullscreenActivity.myParsedLyrics[scan].length() == 0) {
gotityet2 = true;
splitpoint_2ndhalf = scan + 1;
}
}
}
// Script to determine 3 columns split details
int thirdwaypoint = Math.round(FullscreenActivity.numrowstowrite / 3);
int twothirdwaypoint = thirdwaypoint * 2;
// Look for nearest split point before thirdway
int splitpoint_beforethirdway = 0;
boolean gotityet_beforethirdway = false;
for (int scan = thirdwaypoint; scan > 0; scan--) {
if (!gotityet_beforethirdway) {
if (FullscreenActivity.myParsedLyrics[scan].indexOf("[") == 0) {
gotityet_beforethirdway = true;
splitpoint_beforethirdway = scan;
} else if (FullscreenActivity.myParsedLyrics[scan].length() == 0) {
gotityet_beforethirdway = true;
splitpoint_beforethirdway = scan + 1;
}
}
}
// Look for nearest split point past thirdway
int splitpoint_pastthirdway = thirdwaypoint;
boolean gotityet_pastthirdway = false;
for (int scan = thirdwaypoint; scan < FullscreenActivity.numrowstowrite; scan++) {
if (!gotityet_pastthirdway) {
if (FullscreenActivity.myParsedLyrics[scan].indexOf("[") == 0) {
gotityet_pastthirdway = true;
splitpoint_pastthirdway = scan;
} else if (FullscreenActivity.myParsedLyrics[scan].length() == 0) {
gotityet_pastthirdway = true;
splitpoint_pastthirdway = scan + 1;
}
}
}
// Look for nearest split point before twothirdway
int splitpoint_beforetwothirdway = thirdwaypoint;
boolean gotityet_beforetwothirdway = false;
for (int scan = twothirdwaypoint; scan > 0; scan--) {
if (!gotityet_beforetwothirdway) {
if (FullscreenActivity.myParsedLyrics[scan].indexOf("[") == 0) {
gotityet_beforetwothirdway = true;
splitpoint_beforetwothirdway = scan;
} else if (FullscreenActivity.myParsedLyrics[scan].length() == 0) {
gotityet_beforetwothirdway = true;
splitpoint_beforetwothirdway = scan + 1;
}
}
}
// Look for nearest split point past twothirdway
int splitpoint_pasttwothirdway = twothirdwaypoint;
boolean gotityet_pasttwothirdway = false;
for (int scan = twothirdwaypoint; scan < FullscreenActivity.numrowstowrite; scan++) {
if (!gotityet_pasttwothirdway) {
if (FullscreenActivity.myParsedLyrics[scan].indexOf("[") == 0) {
gotityet_pasttwothirdway = true;
splitpoint_pasttwothirdway = scan;
} else if (FullscreenActivity.myParsedLyrics[scan].length() == 0) {
gotityet_pasttwothirdway = true;
splitpoint_pasttwothirdway = scan + 1;
}
}
}
if (!gotityet_beforethirdway) {
splitpoint_beforethirdway = 0;
}
if (!gotityet_pastthirdway) {
splitpoint_pastthirdway = 0;
}
if (!gotityet_beforetwothirdway) {
splitpoint_beforetwothirdway = splitpoint_beforethirdway;
}
if (!gotityet_pasttwothirdway) {
splitpoint_pasttwothirdway = FullscreenActivity.numrowstowrite;
}
// Which is the best split point to use (closest to halfway) for 2
// columns
int split1stdiff = Math.abs(halfwaypoint - splitpoint_1sthalf);
int split2nddiff = Math.abs(halfwaypoint - splitpoint_2ndhalf);
if (split1stdiff <= split2nddiff) {
FullscreenActivity.splitpoint = splitpoint_1sthalf;
} else {
FullscreenActivity.splitpoint = splitpoint_2ndhalf;
}
FullscreenActivity.botherwithcolumns = true;
// Which is the best split point to use (closest to thirdway) for 3 columns
int splitprethirddiff = Math.abs(thirdwaypoint - splitpoint_beforethirdway);
int splitpastthirddiff = Math.abs(thirdwaypoint - splitpoint_pastthirdway);
int splitpretwothirddiff = Math.abs(twothirdwaypoint - splitpoint_beforetwothirdway);
int splitpasttwothirddiff = Math.abs(twothirdwaypoint - splitpoint_pasttwothirdway);
if (splitprethirddiff <= splitpastthirddiff) {
FullscreenActivity.thirdsplitpoint = splitpoint_beforethirdway;
} else {
FullscreenActivity.thirdsplitpoint = splitpoint_pastthirdway;
}
if (splitpretwothirddiff <= splitpasttwothirddiff) {
FullscreenActivity.twothirdsplitpoint = splitpoint_beforetwothirdway;
} else {
FullscreenActivity.twothirdsplitpoint = splitpoint_pasttwothirdway;
}
}
public static void parseToPresentationOrder() {
Log.d("d","parseToPresentationOrder() is called");
// The presentation order is separated by spaces. One issue is that custom tags might have spaces in them
// Go through the song and look for all tag. Make a temp lyrics string
//FullscreenActivity.mLyrics = FullscreenActivity.myLyrics;
String[] lookfortagslyrics = FullscreenActivity.myLyrics.split("\n");
ArrayList<String> temp_title = new ArrayList<> ();
ArrayList<String> temp_content = new ArrayList<> ();
String gathercontent = "";
int tagnum = -1;
int numtemplines = lookfortagslyrics.length;
// Have to deal with multiple line verses, choruses, bridges, tags 1,2,3,4,5,6,7,8,9 and matching chords, etc. seperately
boolean multilpleverselines = false;
boolean multiplechoruslines = false;
boolean currentlyworkingthroughmultilineverse = false;
String verse1contents = "";
String verse2contents = "";
String verse3contents = "";
String verse4contents = "";
String verse5contents = "";
String verse6contents = "";
String verse7contents = "";
String verse8contents = "";
String verse9contents = "";
for (int z=0;z<numtemplines;z++) {
if (lookfortagslyrics[z].length()>1 && lookfortagslyrics[z].indexOf("1")==0) {
multilpleverselines = true;
currentlyworkingthroughmultilineverse = true;
lookfortagslyrics[z] = lookfortagslyrics[z].replaceFirst("1"," ");
// If line above has chords, add them
if (z>0) {
if (lookfortagslyrics[(z-1)].indexOf(".")==0) {
verse1contents = verse1contents + lookfortagslyrics[(z-1)] + "\n";
}
}
verse1contents = verse1contents + lookfortagslyrics[z] + "\n";
// Now empty this line
lookfortagslyrics[z] = "__REMOVED__";
} else if (lookfortagslyrics[z].length()>1 && lookfortagslyrics[z].indexOf("2")==0) {
multilpleverselines = true;
currentlyworkingthroughmultilineverse = true;
lookfortagslyrics[z] = lookfortagslyrics[z].replaceFirst("2"," ");
// If line above has chords, add them
if (z>1) {
if (lookfortagslyrics[(z-2)].indexOf(".")==0) {
verse2contents = verse2contents + lookfortagslyrics[(z-2)] + "\n";
}
}
verse2contents = verse2contents + lookfortagslyrics[z] + "\n";
// Now empty this line
lookfortagslyrics[z] = "__REMOVED__";
} else if (lookfortagslyrics[z].length()>1 && lookfortagslyrics[z].indexOf("3")==0) {
multilpleverselines = true;
currentlyworkingthroughmultilineverse = true;
lookfortagslyrics[z] = lookfortagslyrics[z].replaceFirst("3"," ");
// If line above has chords, add them
if (z>2) {
if (lookfortagslyrics[(z-3)].indexOf(".")==0) {
verse3contents = verse3contents + lookfortagslyrics[(z-3)] + "\n";
}
}
verse3contents = verse3contents + lookfortagslyrics[z] + "\n";
// Now empty this line
lookfortagslyrics[z] = "__REMOVED__";
} else if (lookfortagslyrics[z].length()>1 && lookfortagslyrics[z].indexOf("4")==0) {
multilpleverselines = true;
currentlyworkingthroughmultilineverse = true;
lookfortagslyrics[z] = lookfortagslyrics[z].replaceFirst("4"," ");
// If line above has chords, add them
if (z>3) {
if (lookfortagslyrics[(z-4)].indexOf(".")==0) {
verse4contents = verse4contents + lookfortagslyrics[(z-4)] + "\n";
}
}
verse4contents = verse4contents + lookfortagslyrics[z] + "\n";
// Now empty this line
lookfortagslyrics[z] = "__REMOVED__";
} else if (lookfortagslyrics[z].length()>1 && lookfortagslyrics[z].indexOf("5")==0) {
multilpleverselines = true;
currentlyworkingthroughmultilineverse = true;
lookfortagslyrics[z] = lookfortagslyrics[z].replaceFirst("5"," ");
// If line above has chords, add them
if (z>4) {
if (lookfortagslyrics[(z-5)].indexOf(".")==0) {
verse5contents = verse5contents + lookfortagslyrics[(z-5)] + "\n";
}
}
verse5contents = verse5contents + lookfortagslyrics[z] + "\n";
// Now empty this line
lookfortagslyrics[z] = "__REMOVED__";
} else if (lookfortagslyrics[z].length()>1 && lookfortagslyrics[z].indexOf("6")==0) {
multilpleverselines = true;
currentlyworkingthroughmultilineverse = true;
lookfortagslyrics[z] = lookfortagslyrics[z].replaceFirst("6"," ");
// If line above has chords, add them
if (z>5) {
if (lookfortagslyrics[(z-6)].indexOf(".")==0) {
verse6contents = verse6contents + lookfortagslyrics[(z-6)] + "\n";
}
}
verse6contents = verse6contents + lookfortagslyrics[z] + "\n";
// Now empty this line
lookfortagslyrics[z] = "__REMOVED__";
} else if (lookfortagslyrics[z].length()>1 && lookfortagslyrics[z].indexOf("7")==0) {
multilpleverselines = true;
currentlyworkingthroughmultilineverse = true;
lookfortagslyrics[z] = lookfortagslyrics[z].replaceFirst("7"," ");
// If line above has chords, add them
if (z>6) {
if (lookfortagslyrics[(z-7)].indexOf(".")==0) {
verse7contents = verse7contents + lookfortagslyrics[(z-7)] + "\n";
}
}
verse7contents = verse7contents + lookfortagslyrics[z] + "\n";
// Now empty this line
lookfortagslyrics[z] = "__REMOVED__";
} else if (lookfortagslyrics[z].length()>1 && lookfortagslyrics[z].indexOf("8")==0) {
multilpleverselines = true;
currentlyworkingthroughmultilineverse = true;
lookfortagslyrics[z] = lookfortagslyrics[z].replaceFirst("8"," ");
// If line above has chords, add them
if (z>7) {
if (lookfortagslyrics[(z-8)].indexOf(".")==0) {
verse8contents = verse8contents + lookfortagslyrics[(z-8)] + "\n";
}
}
verse8contents = verse8contents + lookfortagslyrics[z] + "\n";
// Now empty this line
lookfortagslyrics[z] = "__REMOVED__";
} else if (lookfortagslyrics[z].length()>1 && lookfortagslyrics[z].indexOf("9")==0) {
multilpleverselines = true;
currentlyworkingthroughmultilineverse = true;
lookfortagslyrics[z] = lookfortagslyrics[z].replaceFirst("9"," ");
// If line above has chords, add them
if (z>8) {
if (lookfortagslyrics[(z-9)].indexOf(".")==0) {
verse9contents = verse9contents + lookfortagslyrics[(z-9)] + "\n";
}
}
verse9contents = verse9contents + lookfortagslyrics[z] + "\n";
// Now empty this line
lookfortagslyrics[z] = "__REMOVED__";
} else if (lookfortagslyrics[z].length()>1 &&
((lookfortagslyrics[z].contains("[V]") || lookfortagslyrics[z].contains("[v]") || lookfortagslyrics[z].contains("[Verse]")))) {
// Remove the starting [V] tag and replace it with __MULTIPLEVERSES__
// Only if the next (or next again line starts with 1
if ((z+1)<numtemplines) {
try {
if (lookfortagslyrics[(z + 1)].indexOf("1") == 0) {
lookfortagslyrics[z] = "__MULTIPLEVERSES__";
}
} catch (Exception e) {
// There was a problem!
}
}
if ((z+2)<numtemplines) {
// Allows for z+1 being a chord line
try {
if (lookfortagslyrics[(z + 2)].indexOf("1") == 0) {
lookfortagslyrics[z] = "__MULTIPLEVERSES__";
}
} catch (Exception e) {
// There was a problem!
}
}
} else if (lookfortagslyrics[z].length()>1 &&
((lookfortagslyrics[z].contains("[C]") || lookfortagslyrics[z].contains("[c]") || lookfortagslyrics[z].contains("[Chorus]")))) {
// Remove the starting [V] tag and replace it with __MULTIPLECHORUSES__
// Only if the next (or next again line starts with 1
if ((z+1)<numtemplines) {
try {
if (lookfortagslyrics[(z + 1)].indexOf("1") == 0) {
lookfortagslyrics[z] = "__MULTIPLECHORUSES__";
multiplechoruslines = true;
}
} catch (Exception e) {
// There was a problem!
}
}
if ((z+2)<numtemplines) {
// Allows for z+1 being a chord line
try {
if (lookfortagslyrics[(z + 2)].indexOf("1") == 0) {
lookfortagslyrics[z] = "__MULTIPLECHORUSES__";
multiplechoruslines = true;
}
} catch (Exception e) {
// There was a problem!
}
}
}
}
String newText = "";
String improvedText = "";
// OK, add the lines back together, but removing the lines that equal __REMOVED__
// Then add the verses to where the line is __MULTIPLEVERSES__ or __MULTIPLECHORUSES__
for (int s = 0; s < numtemplines;s++) {
if (lookfortagslyrics[s].equals("__MULTIPLEVERSES__") || lookfortagslyrics[s].equals("__MULTIPLECHORUSES__")) {
if (!verse1contents.isEmpty() && !verse1contents.equals("")) {
newText = newText + verse1contents + "\n";
}
if (!verse2contents.isEmpty() && !verse2contents.equals("")) {
newText = newText + verse2contents + "\n";
}
if (!verse3contents.isEmpty() && !verse3contents.equals("")) {
newText = newText + verse3contents + "\n";
}
if (!verse4contents.isEmpty() && !verse4contents.equals("")) {
newText = newText + verse4contents + "\n";
}
if (!verse5contents.isEmpty() && !verse5contents.equals("")) {
newText = newText + verse5contents + "\n";
}
if (!verse6contents.isEmpty() && !verse6contents.equals("")) {
newText = newText + verse6contents + "\n";
}
if (!verse7contents.isEmpty() && !verse7contents.equals("")) {
newText = newText + verse7contents + "\n";
}
if (!verse8contents.isEmpty() && !verse8contents.equals("")) {
newText = newText + verse8contents + "\n";
}
if (!verse9contents.isEmpty() && !verse9contents.equals("")) {
newText = newText + verse9contents + "\n";
}
lookfortagslyrics[s] = newText;
}
if (!lookfortagslyrics[s].equals("__REMOVED__")) {
improvedText = improvedText + lookfortagslyrics[s] + "\n";
}
}
// Ok, now reprocess the improved version with multiple verse lines sorted
lookfortagslyrics = improvedText.split("\n");
numtemplines = lookfortagslyrics.length;
// Go through lines and look for tags
for (int z=0;z<numtemplines;z++) {
if (lookfortagslyrics[z].indexOf("[")==0) {
// Add the content to the arraylist before getting ready for the next one
if (tagnum>-1 && !currentlyworkingthroughmultilineverse) {
temp_content.add(tagnum, gathercontent);
}
gathercontent = "";
tagnum ++;
lookfortagslyrics[z] = lookfortagslyrics[z].replace("[","");
lookfortagslyrics[z] = lookfortagslyrics[z].replace("]","");
temp_title.add(tagnum,lookfortagslyrics[z]);
} else {
gathercontent = gathercontent + lookfortagslyrics[z] + "\n";
currentlyworkingthroughmultilineverse = false;
}
}
// Add the last content to the arraylist
if (tagnum>-1 && !currentlyworkingthroughmultilineverse) {
temp_content.add(tagnum, gathercontent);
}
// Add on the multilineverses
if (multilpleverselines) {
if (!verse1contents.isEmpty() && !verse1contents.equals("")) {
tagnum ++;
if (multiplechoruslines) {
temp_title.add(tagnum, "C1");
} else {
temp_title.add(tagnum, "V1");
}
temp_content.add(tagnum, verse1contents);
}
if (!verse2contents.isEmpty() && !verse2contents.equals("")) {
tagnum ++;
if (multiplechoruslines) {
temp_title.add(tagnum, "C2");
} else {
temp_title.add(tagnum, "V2");
}
temp_content.add(tagnum, verse2contents);
}
if (!verse3contents.isEmpty() && !verse3contents.equals("")) {
tagnum ++;
if (multiplechoruslines) {
temp_title.add(tagnum, "C3");
} else {
temp_title.add(tagnum, "V3");
}
temp_content.add(tagnum, verse3contents);
}
if (!verse4contents.isEmpty() && !verse4contents.equals("")) {
tagnum ++;
if (multiplechoruslines) {
temp_title.add(tagnum, "C4");
} else {
temp_title.add(tagnum, "V4");
}
temp_content.add(tagnum, verse4contents);
}
if (!verse5contents.isEmpty() && !verse5contents.equals("")) {
tagnum ++;
if (multiplechoruslines) {
temp_title.add(tagnum, "C5");
} else {
temp_title.add(tagnum, "V5");
}
temp_content.add(tagnum, verse5contents);
}
if (!verse6contents.isEmpty() && !verse6contents.equals("")) {
tagnum ++;
if (multiplechoruslines) {
temp_title.add(tagnum, "C6");
} else {
temp_title.add(tagnum, "V6");
}
temp_content.add(tagnum, verse6contents);
}
if (!verse7contents.isEmpty() && !verse7contents.equals("")) {
tagnum ++;
if (multiplechoruslines) {
temp_title.add(tagnum, "C7");
} else {
temp_title.add(tagnum, "V7");
}
temp_content.add(tagnum, verse7contents);
}
if (!verse8contents.isEmpty() && !verse8contents.equals("")) {
tagnum ++;
if (multiplechoruslines) {
temp_title.add(tagnum, "C8");
} else {
temp_title.add(tagnum, "V8");
}
temp_content.add(tagnum, verse8contents);
}
if (!verse9contents.isEmpty() && !verse9contents.equals("")) {
tagnum ++;
if (multiplechoruslines) {
temp_title.add(tagnum, "C9");
} else {
temp_title.add(tagnum, "V9");
}
temp_content.add(tagnum, verse9contents);
}
}
// Now look for the tags in the presentation order. To fix the space stuff, split the orders with ___ rather than spaces
tempPresentationOrder = FullscreenActivity.mPresentation+ " ";
for (int w=0;w<temp_title.size();w++) {
if (tempPresentationOrder.contains((temp_title.get(w))+ " ")) {
// Replace this if the next character isn't a space
tempPresentationOrder = tempPresentationOrder.replace(temp_title.get(w)+" ", (temp_title.get(w)+"___"));
}
}
// Now split the tempPresentationOrder by the ___ delimiter
String[] parsedTempPresentationOrder = tempPresentationOrder.split("___");
// Now go through the parsedTempPresentationOrder and add the gathered text to the parsed lyrics
String newimprovedlyrics = "";
for (int y=0;y<parsedTempPresentationOrder.length;y++) {
// Look for a matching temp_title
// Iterate through the temp_title arraylist
// Trim out extra whitespace
parsedTempPresentationOrder[y] = parsedTempPresentationOrder[y].trim();
for (int u=0;u<temp_title.size();u++) {
if (temp_title.get(u).equals(parsedTempPresentationOrder[y])) {
// Add the title
newimprovedlyrics = newimprovedlyrics + "[" + temp_title.get(u) + "]\n";
// Add the contents
newimprovedlyrics = newimprovedlyrics + temp_content.get(u) + "\n";
}
}
}
String missingSectionInPresentationOrder = "";
String missingPresentationOrderItemInSong = "";
// Go through newImprovedLyrics and check that each section is there
for (int r=0;r<temp_title.size();r++) {
if (!tempPresentationOrder.contains(temp_title.get(r)+"___")) {
missingSectionInPresentationOrder = missingSectionInPresentationOrder + "'" + temp_title.get(r) + "'" + " not listed in presentation order\n";
}
}
for (String aParsedTempPresentationOrder : parsedTempPresentationOrder) {
if (!newimprovedlyrics.contains("[" + aParsedTempPresentationOrder + "]")) {
missingPresentationOrderItemInSong = missingPresentationOrderItemInSong + "'" + aParsedTempPresentationOrder + "'" + " not found in song\n";
}
}
// Replace the lyrics for processing
while (newimprovedlyrics.contains("\n\n\n")) {
newimprovedlyrics = newimprovedlyrics.replace("\n\n\n","\n\n");
}
FullscreenActivity.myLyrics = newimprovedlyrics;
FullscreenActivity.foundSongSections_heading = temp_title;
FullscreenActivity.foundSongSections_content = temp_content;
}
}