void MainWindow::on_actionOpenTXT_triggered() {
QString fileName = QFileDialog::getOpenFileName(this, "Открыть текстовый файл", "", "Текстовые файлы (*.txt);;Все файлы (*)");
if (fileName.isEmpty()) return;
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
statusBar()->showMessage("Ошибка: не удалось открыть файл", 3000);
return;
}
QTextStream in(&file);
ui->plainTextEdit->setPlainText(in.readAll());
file.close();
statusBar()->showMessage("Успешно открыт файл: " + fileName, 3000);
}
void MainWindow::on_actionOpenJSON_triggered() {
QString fileName = QFileDialog::getOpenFileName(this, "Открыть JSON файл", "", "JSON файлы (*.json)");
if (fileName.isEmpty()) return;
QFile file(fileName);
if (!file.open(QIODevice::ReadOnly)) {
statusBar()->showMessage("Ошибка: не удалось открыть файл", 3000);
return;
}
QByteArray data = file.readAll();
file.close();
QJsonParseError error;
QJsonDocument doc = QJsonDocument::fromJson(data, &error);
if (error.error != QJsonParseError::NoError) {
statusBar()->showMessage("Ошибка парсинга JSON: " + error.errorString(), 3000);
QMessageBox::critical(this, "Ошибка", "Файл JSON поврежден или имеет неверный формат!");
return;
}
QJsonObject obj = doc.object();
if (!obj.contains("text") || !obj.contains("language")) {
statusBar()->showMessage("Ошибка: отсутствуют обязательные поля в JSON", 3000);
QMessageBox::warning(this, "Внимание", "В JSON файле отсутствуют нужные ключи (text/language)!");
return;
}
QString text = obj["text"].toString();
QString lang = obj["language"].toString();
ui->plainTextEdit->setPlainText(text);
int index = ui->langComboBox->findText(lang);
if (index != -1) {
ui->langComboBox->setCurrentIndex(index);
} else {
statusBar()->showMessage("Предупреждение: язык '" + lang + "' не найден, выбран язык по умолчанию", 3000);
}
}