File indexing completed on 2024-05-19 05:04:02
0001 /* 0002 SPDX-FileCopyrightText: 2022-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include "channelnamevalidlinewidget.h" 0008 #include "rocketchataccount.h" 0009 0010 #include <KColorScheme> 0011 #include <KLocalizedString> 0012 #include <KStatefulBrush> 0013 #include <QLabel> 0014 #include <QVBoxLayout> 0015 0016 ChannelNameValidLineWidget::ChannelNameValidLineWidget(RocketChatAccount *account, QWidget *parent) 0017 : QWidget{parent} 0018 , mChannelNameValidLineEdit(new ChannelNameValidLineEdit(account, this)) 0019 , mChannelNameLabel(new QLabel(this)) 0020 { 0021 auto mainLayout = new QVBoxLayout(this); 0022 mainLayout->setObjectName(QStringLiteral("mainLayout")); 0023 mainLayout->setContentsMargins(QMargins{}); 0024 0025 mChannelNameValidLineEdit->setObjectName(QStringLiteral("mChannelNameValidLineEdit")); 0026 mainLayout->addWidget(mChannelNameValidLineEdit); 0027 0028 mChannelNameLabel->setObjectName(QStringLiteral("mChannelNameLabel")); 0029 mChannelNameLabel->setTextFormat(Qt::PlainText); 0030 0031 const KStatefulBrush bgBrush(KColorScheme::View, KColorScheme::NegativeText); 0032 const QColor color = bgBrush.brush(palette()).color(); 0033 0034 QPalette pal = mChannelNameLabel->palette(); 0035 pal.setColor(QPalette::WindowText, color); 0036 mChannelNameLabel->setPalette(pal); 0037 mChannelNameLabel->setAutoFillBackground(true); 0038 0039 mChannelNameLabel->hide(); 0040 mainLayout->addWidget(mChannelNameLabel); 0041 connect(mChannelNameValidLineEdit, &ChannelNameValidLineEdit::channelIsValid, this, &ChannelNameValidLineWidget::slotChannelIsValid); 0042 if (account) { 0043 mValidCharacters = account->ruqolaServerConfig()->channelNameValidation(); 0044 } 0045 } 0046 0047 ChannelNameValidLineWidget::~ChannelNameValidLineWidget() = default; 0048 0049 void ChannelNameValidLineWidget::slotChannelIsValid(ChannelNameValidLineEdit::ChannelNameStatus status) 0050 { 0051 bool isValid = false; 0052 switch (status) { 0053 case ChannelNameValidLineEdit::ChannelNameStatus::Unknown: 0054 isValid = false; 0055 mChannelNameLabel->setHidden(true); 0056 break; 0057 case ChannelNameValidLineEdit::ChannelNameStatus::Valid: 0058 isValid = true; 0059 mChannelNameLabel->setHidden(true); 0060 break; 0061 case ChannelNameValidLineEdit::ChannelNameStatus::AlreadyExistingName: 0062 mChannelNameLabel->setText(i18n("%1 name is already used.", mChannelNameValidLineEdit->text())); 0063 mChannelNameLabel->setHidden(false); 0064 isValid = false; 0065 break; 0066 case ChannelNameValidLineEdit::ChannelNameStatus::InvalidCharacters: 0067 isValid = false; 0068 mChannelNameLabel->setText(mValidCharacters.isEmpty() ? i18n("Invalid characters found.") 0069 : i18n("Invalid characters found. (Valid characters: %1)", mValidCharacters)); 0070 mChannelNameLabel->setHidden(false); 0071 break; 0072 } 0073 Q_EMIT channelIsValid(isValid); 0074 } 0075 0076 QString ChannelNameValidLineWidget::text() const 0077 { 0078 return mChannelNameValidLineEdit->text(); 0079 } 0080 0081 #include "moc_channelnamevalidlinewidget.cpp"