Загрузка данных


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);
    }
}