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

0001 /*
0002    SPDX-FileCopyrightText: 2021-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "channelsearchwidget.h"
0008 #include "channelsearchnamelineresultwidget.h"
0009 #include <KLocalizedString>
0010 #include <QStackedWidget>
0011 #include <QVBoxLayout>
0012 ChannelSearchWidget::ChannelSearchWidget(RocketChatAccount *account, QWidget *parent)
0013     : QWidget(parent)
0014     , mStackedWidget(new QStackedWidget(this))
0015     , mChannelSearchNameLineEdit(new ChannelSearchNameLineEdit(account, this))
0016     , mChannelSearchLineResult(new ChannelSearchNameLineResultWidget(this))
0017 {
0018     auto mainLayout = new QVBoxLayout(this);
0019     mainLayout->setObjectName(QStringLiteral("mainLayout"));
0020     mainLayout->setContentsMargins({});
0021 
0022     mainLayout->addWidget(mStackedWidget);
0023     mStackedWidget->setObjectName(QStringLiteral("mStackedWidget"));
0024     mChannelSearchNameLineEdit->setObjectName(QStringLiteral("mChannelSearchNameLineEdit"));
0025     mChannelSearchNameLineEdit->setPlaceholderText(i18n("Select a channel"));
0026     mStackedWidget->addWidget(mChannelSearchNameLineEdit);
0027 
0028     mChannelSearchLineResult->setObjectName(QStringLiteral("mChannelSearchLineResult"));
0029     mStackedWidget->addWidget(mChannelSearchLineResult);
0030 
0031     connect(mChannelSearchNameLineEdit, &ChannelSearchNameLineEdit::newRoomName, this, &ChannelSearchWidget::slotSelectedRoom);
0032     connect(mChannelSearchLineResult, &ChannelSearchNameLineResultWidget::clearRoomName, this, &ChannelSearchWidget::slotClearRoom);
0033 }
0034 
0035 ChannelSearchWidget::~ChannelSearchWidget() = default;
0036 
0037 void ChannelSearchWidget::setChannelInfo(const QString &name, const QString &channelId)
0038 {
0039     mUserInfo.channelName = name;
0040     mUserInfo.channelId = channelId;
0041     slotSelectedRoom(mUserInfo);
0042     mChannelSearchLineResult->setReadOnly(true);
0043 }
0044 
0045 QString ChannelSearchWidget::channelName() const
0046 {
0047     return mUserInfo.channelName;
0048 }
0049 
0050 QString ChannelSearchWidget::channelId() const
0051 {
0052     return mUserInfo.channelId;
0053 }
0054 
0055 void ChannelSearchWidget::slotSelectedRoom(const ChannelSearchNameLineEdit::ChannelCompletionInfo &userInfo)
0056 {
0057     mUserInfo = userInfo;
0058     mStackedWidget->setCurrentWidget(mChannelSearchLineResult);
0059     mChannelSearchLineResult->setRoomName(userInfo.channelName);
0060     Q_EMIT updateRoomName(true);
0061 }
0062 
0063 void ChannelSearchWidget::slotClearRoom()
0064 {
0065     mUserInfo = ChannelSearchNameLineEdit::ChannelCompletionInfo();
0066     mStackedWidget->setCurrentWidget(mChannelSearchNameLineEdit);
0067     Q_EMIT updateRoomName(false);
0068 }
0069 
0070 #include "moc_channelsearchwidget.cpp"