/*
    SPDX-FileCopyrightText: 2026 ahouts

    SPDX-License-Identifier: GPL-2.0-or-later
*/

#include "slugrewriteruledialog.h"

#include <KLocalizedString>

#include <QDialogButtonBox>
#include <QFormLayout>
#include <QLineEdit>
#include <QPushButton>
#include <QVBoxLayout>

SlugRewriteRuleDialog::SlugRewriteRuleDialog(QWidget *parent)
    : QDialog(parent)
{
    setWindowTitle(i18nc("@title:window", "Slug Rewrite Rule"));

    auto *mainLayout = new QVBoxLayout(this);

    auto *formLayout = new QFormLayout;
    mMatchPrefixEdit = new QLineEdit(this);
    mMatchPrefixEdit->setPlaceholderText(i18nc("@info:placeholder", "https://reddit.com"));
    formLayout->addRow(i18nc("@label:textbox", "Match Prefix:"), mMatchPrefixEdit);

    mReplacePrefixEdit = new QLineEdit(this);
    mReplacePrefixEdit->setPlaceholderText(i18nc("@info:placeholder", "https://old.reddit.com"));
    formLayout->addRow(i18nc("@label:textbox", "Replace With:"), mReplacePrefixEdit);

    mainLayout->addLayout(formLayout);

    mButtonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
    mainLayout->addWidget(mButtonBox);

    connect(mButtonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
    connect(mButtonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
    connect(mMatchPrefixEdit, &QLineEdit::textChanged, this, &SlugRewriteRuleDialog::updateOkButton);
    connect(mReplacePrefixEdit, &QLineEdit::textChanged, this, &SlugRewriteRuleDialog::updateOkButton);

    updateOkButton();
}

SlugRewriteRuleDialog::~SlugRewriteRuleDialog() = default;

void SlugRewriteRuleDialog::setMatchPrefix(const QString &prefix)
{
    mMatchPrefixEdit->setText(prefix);
}

void SlugRewriteRuleDialog::setReplacePrefix(const QString &prefix)
{
    mReplacePrefixEdit->setText(prefix);
}

QString SlugRewriteRuleDialog::matchPrefix() const
{
    return mMatchPrefixEdit->text().trimmed();
}

QString SlugRewriteRuleDialog::replacePrefix() const
{
    return mReplacePrefixEdit->text().trimmed();
}

void SlugRewriteRuleDialog::updateOkButton()
{
    mButtonBox->button(QDialogButtonBox::Ok)->setEnabled(!matchPrefix().isEmpty() && !replacePrefix().isEmpty());
}

#include "moc_slugrewriteruledialog.cpp"