Aceradio/src/SongDialog.cpp
unknown 6db87d119d feat: expand vocal language combo box (24-->50+ languages)
- Languages from the full list of "50+" have been added
- Backward compatible with original en/zh/ja
2026-03-17 18:58:34 +01:00

129 lines
No EOL
4.3 KiB
C++

// Copyright Carl Philipp Klemm 2026
// SPDX-License-Identifier: GPL-3.0-or-later
#include "SongDialog.h"
#include "ui_SongDialog.h"
#include <QMessageBox>
SongDialog::SongDialog(QWidget *parent, const QString &caption, const QString &lyrics, const QString &vocalLanguage)
: QDialog(parent),
ui(new Ui::SongDialog)
{
ui->setupUi(this);
// Set initial values if provided
if (!caption.isEmpty())
{
ui->captionEdit->setPlainText(caption);
}
if (!lyrics.isEmpty())
{
ui->lyricsEdit->setPlainText(lyrics);
}
// Setup vocal language combo box
ui->vocalLanguageCombo->addItem("--", ""); // Unset
ui->vocalLanguageCombo->addItem("English (en)", "en");
ui->vocalLanguageCombo->addItem("Chinese (zh)", "zh");
ui->vocalLanguageCombo->addItem("Japanese (ja)", "ja");
ui->vocalLanguageCombo->addItem("Korean (ko)", "ko");
ui->vocalLanguageCombo->addItem("Spanish (es)", "es");
ui->vocalLanguageCombo->addItem("French (fr)", "fr");
ui->vocalLanguageCombo->addItem("German (de)", "de");
ui->vocalLanguageCombo->addItem("Portuguese (pt)", "pt");
ui->vocalLanguageCombo->addItem("Russian (ru)", "ru");
ui->vocalLanguageCombo->addItem("Italian (it)", "it");
ui->vocalLanguageCombo->addItem("Arabic (ar)", "ar");
ui->vocalLanguageCombo->addItem("Azerbaijani (az)", "az");
ui->vocalLanguageCombo->addItem("Bulgarian (bg)", "bg");
ui->vocalLanguageCombo->addItem("Bengali (bn)", "bn");
ui->vocalLanguageCombo->addItem("Catalan (ca)", "ca");
ui->vocalLanguageCombo->addItem("Czech (cs)", "cs");
ui->vocalLanguageCombo->addItem("Danish (da)", "da");
ui->vocalLanguageCombo->addItem("Greek (el)", "el");
ui->vocalLanguageCombo->addItem("Persian (fa)", "fa");
ui->vocalLanguageCombo->addItem("Finnish (fi)", "fi");
ui->vocalLanguageCombo->addItem("Hebrew (he)", "he");
ui->vocalLanguageCombo->addItem("Hindi (hi)", "hi");
ui->vocalLanguageCombo->addItem("Croatian (hr)", "hr");
ui->vocalLanguageCombo->addItem("Haitian Creole (ht)", "ht");
ui->vocalLanguageCombo->addItem("Hungarian (hu)", "hu");
ui->vocalLanguageCombo->addItem("Indonesian (id)", "id");
ui->vocalLanguageCombo->addItem("Icelandic (is)", "is");
ui->vocalLanguageCombo->addItem("Latin (la)", "la");
ui->vocalLanguageCombo->addItem("Lithuanian (lt)", "lt");
ui->vocalLanguageCombo->addItem("Malay (ms)", "ms");
ui->vocalLanguageCombo->addItem("Nepali (ne)", "ne");
ui->vocalLanguageCombo->addItem("Dutch (nl)", "nl");
ui->vocalLanguageCombo->addItem("Norwegian (no)", "no");
ui->vocalLanguageCombo->addItem("Punjabi (pa)", "pa");
ui->vocalLanguageCombo->addItem("Polish (pl)", "pl");
ui->vocalLanguageCombo->addItem("Romanian (ro)", "ro");
ui->vocalLanguageCombo->addItem("Sanskrit (sa)", "sa");
ui->vocalLanguageCombo->addItem("Slovak (sk)", "sk");
ui->vocalLanguageCombo->addItem("Serbian (sr)", "sr");
ui->vocalLanguageCombo->addItem("Swedish (sv)", "sv");
ui->vocalLanguageCombo->addItem("Swahili (sw)", "sw");
ui->vocalLanguageCombo->addItem("Tamil (ta)", "ta");
ui->vocalLanguageCombo->addItem("Telugu (te)", "te");
ui->vocalLanguageCombo->addItem("Thai (th)", "th");
ui->vocalLanguageCombo->addItem("Tagalog (tl)", "tl");
ui->vocalLanguageCombo->addItem("Turkish (tr)", "tr");
ui->vocalLanguageCombo->addItem("Ukrainian (uk)", "uk");
ui->vocalLanguageCombo->addItem("Urdu (ur)", "ur");
ui->vocalLanguageCombo->addItem("Vietnamese (vi)", "vi");
ui->vocalLanguageCombo->addItem("Cantonese (yue)", "yue");
ui->vocalLanguageCombo->addItem("Unknown", "unknown");
// Set current language if provided
if (!vocalLanguage.isEmpty())
{
int index = ui->vocalLanguageCombo->findData(vocalLanguage);
if (index >= 0)
{
ui->vocalLanguageCombo->setCurrentIndex(index);
}
}
else
{
ui->vocalLanguageCombo->setCurrentIndex(0); // Default to unset
}
}
SongDialog::~SongDialog()
{
delete ui;
}
QString SongDialog::getCaption() const
{
return ui->captionEdit->toPlainText();
}
QString SongDialog::getLyrics() const
{
return ui->lyricsEdit->toPlainText();
}
QString SongDialog::getVocalLanguage() const
{
return ui->vocalLanguageCombo->currentData().toString();
}
void SongDialog::on_okButton_clicked()
{
// Validate that caption is not empty
QString caption = getCaption();
if (caption.trimmed().isEmpty())
{
QMessageBox::warning(this, "Invalid Input", "Caption cannot be empty.");
return;
}
accept();
}
void SongDialog::on_cancelButton_clicked()
{
reject();
}