File indexing completed on 2024-05-19 05:04:01

0001 /*
0002    SPDX-FileCopyrightText: 2020-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "autotranslateconfigurewidget.h"
0008 #include "model/autotranslatelanguagesmodel.h"
0009 #include "rocketchataccount.h"
0010 #include "room.h"
0011 #include <KLocalizedString>
0012 #include <QCheckBox>
0013 #include <QComboBox>
0014 #include <QHBoxLayout>
0015 #include <QLabel>
0016 #include <QVBoxLayout>
0017 
0018 AutoTranslateConfigureWidget::AutoTranslateConfigureWidget(RocketChatAccount *account, QWidget *parent)
0019     : QWidget(parent)
0020     , mAutoTranslate(new QCheckBox(i18n("Auto-Translate"), this))
0021     , mLanguageComboBox(new QComboBox(this))
0022     , mRocketChatAccount(account)
0023 {
0024     auto mainLayout = new QVBoxLayout(this);
0025     mainLayout->setObjectName(QStringLiteral("mainLayout"));
0026     mainLayout->setContentsMargins({});
0027 
0028     mAutoTranslate->setObjectName(QStringLiteral("mAutoTranslate"));
0029     mainLayout->addWidget(mAutoTranslate);
0030     connect(mAutoTranslate, &QCheckBox::clicked, this, &AutoTranslateConfigureWidget::slotChangeAutoTranslate);
0031 
0032     auto horizontalLayout = new QHBoxLayout;
0033     horizontalLayout->setObjectName(QStringLiteral("horizontalLayout"));
0034     horizontalLayout->setContentsMargins({});
0035     mainLayout->addLayout(horizontalLayout);
0036 
0037     auto label = new QLabel(i18n("Language:"), this);
0038     label->setObjectName(QStringLiteral("label"));
0039     label->setTextFormat(Qt::PlainText);
0040     horizontalLayout->addWidget(label);
0041 
0042     mLanguageComboBox->setObjectName(QStringLiteral("mLanguage"));
0043     if (mRocketChatAccount) {
0044         mLanguageComboBox->setModel(mRocketChatAccount->autoTranslateLanguagesModel());
0045     }
0046     connect(mLanguageComboBox, &QComboBox::activated, this, &AutoTranslateConfigureWidget::slotLanguageChanged);
0047 
0048     horizontalLayout->addWidget(mLanguageComboBox);
0049 
0050     mainLayout->addStretch(1);
0051 }
0052 
0053 AutoTranslateConfigureWidget::~AutoTranslateConfigureWidget() = default;
0054 
0055 Room *AutoTranslateConfigureWidget::room() const
0056 {
0057     return mRoom;
0058 }
0059 
0060 void AutoTranslateConfigureWidget::slotLanguageChanged(int index)
0061 {
0062     mRocketChatAccount->autoTranslateSaveLanguageSettings(mRoom->roomId(), mRocketChatAccount->autoTranslateLanguagesModel()->selectedLanguage(index));
0063 }
0064 
0065 void AutoTranslateConfigureWidget::slotChangeAutoTranslate(bool status)
0066 {
0067     mRocketChatAccount->autoTranslateSaveAutoTranslateSettings(mRoom->roomId(), status);
0068 }
0069 
0070 void AutoTranslateConfigureWidget::slotAutoTranslateChanged()
0071 {
0072     mAutoTranslate->setChecked(mRoom->autoTranslate());
0073 }
0074 
0075 void AutoTranslateConfigureWidget::slotAutoTranslateLanguageChanged()
0076 {
0077     mLanguageComboBox->setCurrentIndex(mRocketChatAccount->autoTranslateLanguagesModel()->currentLanguage(mRoom->autoTranslateLanguage()));
0078 }
0079 
0080 void AutoTranslateConfigureWidget::setRoom(Room *room)
0081 {
0082     mRoom = room;
0083     connect(mRoom, &Room::autoTranslateChanged, this, &AutoTranslateConfigureWidget::slotAutoTranslateChanged);
0084     connect(mRoom, &Room::autoTranslateLanguageChanged, this, &AutoTranslateConfigureWidget::slotAutoTranslateLanguageChanged);
0085     slotAutoTranslateChanged();
0086     slotAutoTranslateLanguageChanged();
0087 }
0088 
0089 #include "moc_autotranslateconfigurewidget.cpp"