File indexing completed on 2024-05-12 16:27:12

0001 /*
0002    SPDX-FileCopyrightText: 2021-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "libruqolawidgets_private_export.h"
0010 #include "misc/searchwithdelaylineedit.h"
0011 
0012 #include <QJsonDocument>
0013 #include <QRegularExpression>
0014 #include <QRegularExpressionValidator>
0015 class RocketChatAccount;
0016 
0017 class LIBRUQOLAWIDGETS_TESTS_EXPORT ChannelNameValidLineEditValidator : public QRegularExpressionValidator
0018 {
0019     Q_OBJECT
0020 public:
0021     explicit ChannelNameValidLineEditValidator(const QRegularExpression &re, QObject *parent = nullptr);
0022     ~ChannelNameValidLineEditValidator() override;
0023     [[nodiscard]] QValidator::State validate(QString &input, int &pos) const override;
0024 Q_SIGNALS:
0025     void textIsValid(bool isValid) const;
0026 };
0027 
0028 class LIBRUQOLAWIDGETS_TESTS_EXPORT ChannelNameValidLineEdit : public SearchWithDelayLineEdit
0029 {
0030     Q_OBJECT
0031 public:
0032     enum ChannelNameStatus {
0033         Unknown = 0,
0034         Valid = 1,
0035         AlreadyExistingName = 2,
0036         InvalidCharacters = 3,
0037     };
0038     explicit ChannelNameValidLineEdit(RocketChatAccount *account, QWidget *parent = nullptr);
0039     ~ChannelNameValidLineEdit() override;
0040 Q_SIGNALS:
0041     void channelIsValid(ChannelNameValidLineEdit::ChannelNameStatus status);
0042 
0043 private:
0044     LIBRUQOLAWIDGETS_NO_EXPORT void updateStyleSheet(bool state);
0045     LIBRUQOLAWIDGETS_NO_EXPORT void slotSearchDone(quint64 id, const QJsonDocument &result);
0046     LIBRUQOLAWIDGETS_NO_EXPORT void slotSearchChannelRequested(const QString &str);
0047     LIBRUQOLAWIDGETS_NO_EXPORT void clearLineEdit();
0048     LIBRUQOLAWIDGETS_NO_EXPORT void emitIsValid(bool state);
0049     LIBRUQOLAWIDGETS_NO_EXPORT void slotTextIsValid(bool state);
0050     QString mNegativeBackground;
0051     quint64 mDdpIdentifier = 0;
0052     QRegularExpression mRegularExpression;
0053     RocketChatAccount *const mRocketChatAccount;
0054 };