Skip to content

Commit 08df0b5

Browse files
committed
Add the ability for a leading space before lyrics
1 parent 0a250ed commit 08df0b5

File tree

13 files changed

+92
-14
lines changed

13 files changed

+92
-14
lines changed

app/src/main/java/com/cg/lrceditor/Constants.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ class Constants {
1616
static final String SAVE_LOCATION_PREFERENCE = "saveLocation";
1717
static final String TIMESTAMP_STEP_AMOUNT_PREFERENCE = "timestamp_step_amount";
1818
static final String THREE_DIGIT_MILLISECONDS_PREFERENCE = "three_digit_milliseconds";
19+
static final String LYRIC_LEADING_SPACE_PREFERENCE = "lyric_leading_space";
1920
static final String THEME_PREFERENCE = "current_theme";
2021
static final String PURCHASED_PREFERENCE = "lrceditor_purchased";
2122
}

app/src/main/java/com/cg/lrceditor/FinalizeActivity.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public class FinalizeActivity extends AppCompatActivity {
7171
private boolean overwriteFailed = false;
7272
private boolean threadIsExecuting = false;
7373
private boolean useThreeDigitMilliseconds = false;
74+
private boolean useLyricLeadingSpace = false;
7475

7576
@SuppressLint("ClickableViewAccessibility")
7677
@Override
@@ -111,6 +112,7 @@ protected void onCreate(Bundle savedInstanceState) {
111112
});
112113

113114
useThreeDigitMilliseconds = preferences.getBoolean(Constants.THREE_DIGIT_MILLISECONDS_PREFERENCE, false);
115+
useLyricLeadingSpace = preferences.getBoolean(Constants.LYRIC_LEADING_SPACE_PREFERENCE, false);
114116

115117
Toolbar toolbar = findViewById(R.id.toolbar);
116118
if (isDarkTheme) {
@@ -296,7 +298,7 @@ private void writeLyrics(final String filePath, final String fileName) {
296298
file = file.createFile("application/*", fileName);
297299

298300
OutputStream out = getContentResolver().openOutputStream(file.getUri());
299-
InputStream in = new ByteArrayInputStream(lyricsToString(useThreeDigitMilliseconds).getBytes(StandardCharsets.UTF_8));
301+
InputStream in = new ByteArrayInputStream(lyricsToString(useThreeDigitMilliseconds, useLyricLeadingSpace).getBytes(StandardCharsets.UTF_8));
300302

301303
byte[] buffer = new byte[1024];
302304
int read;
@@ -327,7 +329,7 @@ public void setAsLRCFileName(View view) {
327329
((EditText) dialogView.findViewById(R.id.dialog_edittext)).setText(lrcFileName);
328330
}
329331

330-
private String lyricsToString(boolean useThreeDigitMilliseconds) {
332+
private String lyricsToString(boolean useThreeDigitMilliseconds, boolean useLyricLeadingSpace) {
331333
StringBuilder sb = new StringBuilder();
332334

333335
String str;
@@ -360,7 +362,10 @@ private String lyricsToString(boolean useThreeDigitMilliseconds) {
360362
// Some players might skip empty lyric lines (I'm looking at you Huawei music player)
361363
// Hence we replace empty lyric lines with a space
362364
lyric = " ";
365+
} else if (useLyricLeadingSpace) {
366+
lyric = " " + lyric
363367
}
368+
364369
if (useThreeDigitMilliseconds) {
365370
sb.append("[").append(timestamp.toStringWithThreeDigitMilliseconds(Locale.ENGLISH)).append("]").append(lyric).append("\n");
366371
} else {
@@ -468,7 +473,7 @@ public boolean isExternalStorageWritable() {
468473

469474
public void copyLrc(View view) {
470475
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
471-
ClipData clip = ClipData.newPlainText("Generated LRC data", lyricsToString(useThreeDigitMilliseconds));
476+
ClipData clip = ClipData.newPlainText("Generated LRC data", lyricsToString(useThreeDigitMilliseconds, useLyricLeadingSpace));
472477
if (clipboard != null) {
473478
clipboard.setPrimaryClip(clip);
474479
} else {

app/src/main/java/com/cg/lrceditor/SettingsActivity.java

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public class SettingsActivity extends AppCompatActivity {
2929
private TextView readLocation;
3030
private TextView timestampStep;
3131
private Switch threeDigitMillisecondsSwitch;
32+
private Switch lyricLeadingSpaceSwitch;
3233

3334
private RadioButton light, dark, darker;
3435

@@ -78,6 +79,14 @@ protected void onCreate(Bundle savedInstanceState) {
7879
editor.apply();
7980
});
8081

82+
lyricLeadingSpaceSwitch = findViewById(R.id.lyric_leading_space_switch);
83+
lyricLeadingSpaceSwitch.setChecked(preferences.getBoolean(Constants.LYRIC_LEADING_SPACE_PREFERENCE, false));
84+
lyricLeadingSpaceSwitch.setOnCheckedChangeListener((compoundButton, checked) -> {
85+
SharedPreferences.Editor editor = preferences.edit();
86+
editor.putBoolean(Constants.LYRIC_LEADING_SPACE_PREFERENCE, checked);
87+
editor.apply();
88+
});
89+
8190
RadioGroup themeGroup = findViewById(R.id.theme_group);
8291
light = findViewById(R.id.radioButtonLight);
8392
dark = findViewById(R.id.radioButtonDark);
@@ -212,7 +221,7 @@ public void adjustTimestampStep(View v) {
212221
public void showTimestampStepHelp(View view) {
213222
new AlertDialog.Builder(this)
214223
.setMessage(R.string.timestamp_step_help)
215-
.setNeutralButton(getString(R.string.ok), null)
224+
.setNegativeButton(getString(R.string.ok), null)
216225
.create()
217226
.show();
218227
}
@@ -224,7 +233,19 @@ public void toggleThreeDigitMillisecondSwitch(View view) {
224233
public void showThreeDigitMillisecondsHelp(View view) {
225234
new AlertDialog.Builder(this)
226235
.setMessage(R.string.three_digit_milliseconds_help)
227-
.setNeutralButton(getString(R.string.ok), null)
236+
.setNegativeButton(getString(R.string.ok), null)
237+
.create()
238+
.show();
239+
}
240+
241+
public void toggleLyricLeadingSpaceSwitch(View view) {
242+
lyricLeadingSpaceSwitch.toggle();
243+
}
244+
245+
public void showLyricLeadingSpaceHelp(View view) {
246+
new AlertDialog.Builder(this)
247+
.setMessage(R.string.lyric_leading_space_help)
248+
.setNegativeButton(getString(R.string.ok), null)
228249
.create()
229250
.show();
230251
}

app/src/main/res/layout/activity_settings.xml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,39 @@
178178

179179
</LinearLayout>
180180

181+
<View
182+
android:layout_width="match_parent"
183+
android:layout_height="1dp"
184+
android:background="@android:color/darker_gray" />
185+
186+
<LinearLayout
187+
android:layout_width="match_parent"
188+
android:layout_height="wrap_content"
189+
android:background="?attr/selectableItemBackground"
190+
android:clickable="true"
191+
android:focusable="true"
192+
android:gravity="center_vertical"
193+
android:onClick="toggleLyricLeadingSpaceSwitch"
194+
android:orientation="horizontal"
195+
android:padding="@dimen/dp16">
196+
197+
<Switch
198+
android:id="@+id/lyric_leading_space_switch"
199+
android:layout_width="0dp"
200+
android:layout_height="wrap_content"
201+
android:layout_weight=".8"
202+
android:text="@string/lyric_leading_space_prompt" />
203+
204+
<Button
205+
style="@style/Widget.AppCompat.Button.Borderless.Colored"
206+
android:layout_width="0dp"
207+
android:layout_height="wrap_content"
208+
android:layout_weight=".1"
209+
android:onClick="showLyricLeadingSpaceHelp"
210+
android:text="\?" />
211+
212+
</LinearLayout>
213+
181214
<View
182215
android:layout_width="match_parent"
183216
android:layout_height="1dp"

app/src/main/res/values-de/strings.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,10 @@
145145
<string name="storage_unavailable_message">Fehler: Speicher nicht verfügbar/überlastet</string>
146146
<string name="tap_to_select_song_prompt">Musiktitel auswählen</string>
147147
<string name="thats_a_miss">Fehlgeschlagen\nKeine LRC-Dateien gefunden</string>
148-
<string name="three_digit_milliseconds_help">Das Speichern mit dreistelligen Millisekunden kann für Anwendungen nützlich sein, die LRC-Dateien mit dreistelligen Millisekunden-Zeitstempeln anstelle von zweistelligen Millisekunden-Zeitstempeln erwarten</string>
148+
<string name="three_digit_milliseconds_help">Dies ist nützlich für Anwendungen, die LRC-Dateien mit dreistelligen Millisekunden-Zeitstempeln anstelle von zweistelligen erwarten. Im Zweifelsfall sollten Sie diese Option deaktiviert lassen.</string>
149149
<string name="three_digit_milliseconds_prompt">Zeitstempel mit dreistelligen Millisekunden speichern</string>
150+
<string name="lyric_leading_space_help">Dies ist nützlich für Anwendungen, die ein Leerzeichen zwischen dem Zeitstempel und dem Liedtext erwarten. Im Zweifelsfall sollten Sie diese Option deaktiviert lassen.</string>
151+
<string name="lyric_leading_space_prompt">Songtexte mit einem vorangestellten Leerzeichen speichern</string>
150152
<string name="timestamp_step_amount_prompt">Schrittlänge des Zeitstempels</string>
151153
<string name="timestamp_step_help">Zeitstempel werden im Editor um diese Millisekunden angepasst. Beachten Sie, dass im Editor nur die beiden wichtigsten Stellen der Millisekunden angezeigt werden</string>
152154
<string name="title_error_text">Ein unerwarteter Fehler trat beim Versuch, den Titel zu verwenden, auf</string>

app/src/main/res/values-es/strings.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,10 @@
145145
<string name="storage_unavailable_message">Eror: Almancimiento indisponible/ocupado</string>
146146
<string name="tap_to_select_song_prompt">Toca para seleccionar una canción</string>
147147
<string name="thats_a_miss">Fallo\nNo se encontraron letras</string>
148-
<string name="three_digit_milliseconds_help">Guardar el archivo con precision de tres decimales (milisegundos). Puede sér útil en aplicaciones con expectativa de tiempo en milisegundos (3 decimales) en vez de centisegundos (2 decimales).</string>
148+
<string name="three_digit_milliseconds_help">Esto es útil para aplicaciones que esperan archivos LRC con marcas de tiempo en milisegundos de tres dígitos en lugar de dos. Si no está seguro, manténgalo desactivado.</string>
149149
<string name="three_digit_milliseconds_prompt">Guardar con milisegundos (3 decimales)</string>
150+
<string name="lyric_leading_space_help">Esto es útil para aplicaciones que esperan un espacio entre la marca de tiempo y la letra. Si no está seguro, manténgalo desactivado.</string>
151+
<string name="lyric_leading_space_prompt">Guardar la letra con un espacio al principio</string>
150152
<string name="timestamp_step_amount_prompt">Tamaño del paso de tiempo</string>
151153
<string name="timestamp_step_help">Ajuste del tamaño del paso de tiempo del editor, en milisegundos. Notar que el editor solo indica en centisegundos aunque el ajuste esté en milisegundos.</string>
152154
<string name="title_error_text">Eror configurando el título</string>

app/src/main/res/values-fr/strings.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,10 @@
145145
<string name="storage_unavailable_message">Erreur : Stockage indisponible/occupé</string>
146146
<string name="tap_to_select_song_prompt">Tap pour sélectionner une musique</string>
147147
<string name="thats_a_miss">Echec\nPas de fichier de parole trouvé</string>
148-
<string name="three_digit_milliseconds_help">Enregistrer le fichier avec une précision à 3 chiffres des millisecondes sera utile pour les application qui s\'attendent des fichiers LRC avec des millisecondes en 3 caractères plutôt que 2.</string>
148+
<string name="three_digit_milliseconds_help">Cette option est utile pour les applications qui attendent des fichiers LRC avec des horodatages en millisecondes à trois chiffres plutôt qu'à deux. En cas de doute, laissez cette option désactivée.</string>
149149
<string name="three_digit_milliseconds_prompt">Enregistrer avec des millisecondes en 3 caractères</string>
150+
<string name="lyric_leading_space_help">Cette option est utile pour les applications qui nécessitent un espace entre l'horodatage et les paroles. En cas de doute, laissez-la désactivée.</string>
151+
<string name="lyric_leading_space_prompt">Enregistrer les paroles avec un espace au début</string>
150152
<string name="timestamp_step_amount_prompt">Pas des marqueurs temporels</string>
151153
<string name="timestamp_step_help">Précision des millisecondes du marqueur temporel. Les millisecondes auront autant de chiffres significatifs que le nombre précisé ici. A noter que le volet éditeur n\'affiche que les deux premiers chiffres des millisecondes.</string>
152154
<string name="title_error_text">Une erreur s\'est produite pendant le changement de titre</string>

app/src/main/res/values-in/strings.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,10 @@
145145
<string name="storage_unavailable_message">Kesalahan: Penyimpanan tidak tersedia/sibuk</string>
146146
<string name="tap_to_select_song_prompt">Ketuk di sini untuk memilih lagu</string>
147147
<string name="thats_a_miss">Meleset\nTak ditemukan berkas lirik</string>
148-
<string name="three_digit_milliseconds_help">Meyimpan dengan milidetik tiga angka mungkin akan berguna bagi aplikasi yang menganggap berkas LRC dengan cap waktu milidetik tiga angka daripada cap waktu dengan milidetik dua angka saja</string>
148+
<string name="three_digit_milliseconds_help">Ini berguna untuk aplikasi yang mengharapkan file LRC dengan stempel waktu milidetik tiga digit, bukan dua digit. Jika tidak yakin, biarkan pengaturan ini tetap nonaktif.</string>
149149
<string name="three_digit_milliseconds_prompt">Simpan dengan milidetik tiga angka</string>
150+
<string name="lyric_leading_space_help">Ini berguna untuk aplikasi yang mengharapkan adanya spasi antara stempel waktu dan lirik. Jika tidak yakin, biarkan pengaturan ini tetap nonaktif.</string>
151+
<string name="lyric_leading_space_prompt">Simpan lirik dengan spasi di awal</string>
150152
<string name="timestamp_step_amount_prompt">Jumlah langkah cap waktu</string>
151153
<string name="timestamp_step_help">Stempel waktu akan disesuaikan dengan jumlah milidetik ini di editor. Perhatikan bahwa hanya dua digit paling signifikan dari milidetik yang ditampilkan di editor</string>
152154
<string name="title_error_text">Terjadi kesalahan yang ketika mencoba menyetel judul!</string>

app/src/main/res/values-pl/strings.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,10 @@
146146
<string name="storage_unavailable_message">Błąd: pamięć niedostępna/zajęta</string>
147147
<string name="tap_to_select_song_prompt">Stuknij tutaj, aby wybrać utwór</string>
148148
<string name="thats_a_miss">"Tego brakuje\nNie znaleziono plików Lyric"</string>
149-
<string name="three_digit_milliseconds_help">Zapisywanie znaczników czasowych z trzycyfrowymi milisekundami może być przydatne w aplikacjach które oczekują pliku LRC z trzycyfrowymi znacznikami milisekund, a nie dwucyfrowymi znacznikami milisekund</string>
149+
<string name="three_digit_milliseconds_help">Ta opcja jest przydatna w aplikacjach, które oczekują plików LRC z trzycyfrowymi znacznikami czasu w milisekundach, a nie dwucyfrowymi. W razie wątpliwości, lepiej pozostawić ją wyłączoną.</string>
150150
<string name="three_digit_milliseconds_prompt">Zapisz znaczniki z trzycyfrowymi milisekundami</string>
151+
<string name="lyric_leading_space_help">Ta opcja jest przydatna w aplikacjach, które wymagają spacji między znacznikiem czasu a tekstem piosenki. W razie wątpliwości, lepiej pozostawić ją wyłączoną.</string>
152+
<string name="lyric_leading_space_prompt">Zapisz tekst piosenki z wiodącą spacją</string>
151153
<string name="timestamp_step_amount_prompt">Kwota kroku znacznika czasu</string>
152154
<string name="timestamp_step_help">Znaczniki czasu zostaną skorygowane o tę liczbę milisekund w edytorze. Zwróć uwagę, że w edytorze wyświetlane są tylko dwie najbardziej znaczące cyfry milisekund</string>
153155
<string name="title_error_text">Wystąpił nieoczekiwany błąd podczas próby ustawienia tytułu</string>

app/src/main/res/values-pt-rBR/strings.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,10 @@
145145
<string name="storage_unavailable_message">Erro: Armazenamento indisponível ou cheio</string>
146146
<string name="tap_to_select_song_prompt">Toque aqui para selecionar uma música</string>
147147
<string name="thats_a_miss">Falta algo aqui...\nNenhum arquivo de letra encontrado</string>
148-
<string name="three_digit_milliseconds_help">Salvar com milissegundos de três dígitos pode ser útil para aplicativos que esperam arquivos LRC com timestamps de três dígitos em milissegundos em vez de timestamps de dois dígitos em milissegundos</string>
148+
<string name="three_digit_milliseconds_help">Esta opção é útil para aplicativos que esperam arquivos LRC com carimbos de data/hora em milissegundos com três dígitos, em vez de dois. Em caso de dúvida, mantenha-a desativada.</string>
149149
<string name="three_digit_milliseconds_prompt">Salvar com três dígitos em milissegundos</string>
150+
<string name="lyric_leading_space_help">Isso é útil para aplicativos que esperam um espaço entre o carimbo de data/hora e a letra da música. Em caso de dúvida, mantenha esta opção desativada.</string>
151+
<string name="lyric_leading_space_prompt">Salvar letras com um espaço inicial</string>
150152
<string name="timestamp_step_amount_prompt">Valor da etapa do registro de data e hora</string>
151153
<string name="timestamp_step_help">Os carimbos de data e hora serão ajustados por essa quantidade de milissegundos no editor. Observe que apenas os dois dígitos mais significativos dos milissegundos são mostrados no editor</string>
152154
<string name="title_error_text">Ocorreu um erro inesperado ao tentar definir o título</string>

0 commit comments

Comments
 (0)