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

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 "searchmessagedialog.h"
0008 #include "rocketchataccount.h"
0009 #include "room.h"
0010 #include "searchmessagewidget.h"
0011 
0012 #include <KConfigGroup>
0013 #include <KLocalizedString>
0014 #include <KSharedConfig>
0015 #include <KWindowConfig>
0016 #include <QDialogButtonBox>
0017 #include <QVBoxLayout>
0018 #include <QWindow>
0019 
0020 namespace
0021 {
0022 static const char mySearchMessageDialogGroupName[] = "SearchMessageDialog";
0023 }
0024 SearchMessageDialog::SearchMessageDialog(RocketChatAccount *account, QWidget *parent)
0025     : QDialog(parent)
0026     , mSearchMessageWidget(new SearchMessageWidget(account, this))
0027 {
0028     setWindowTitle(i18nc("@title:window", "Search Messages"));
0029     auto mainLayout = new QVBoxLayout(this);
0030     mainLayout->setObjectName(QStringLiteral("mainLayout"));
0031 
0032     mSearchMessageWidget->setObjectName(QStringLiteral("mSearchMessageWidget"));
0033     mainLayout->addWidget(mSearchMessageWidget);
0034     connect(mSearchMessageWidget, &SearchMessageWidget::goToMessageRequested, this, &SearchMessageDialog::goToMessageRequested);
0035 
0036     auto button = new QDialogButtonBox(QDialogButtonBox::Close, this);
0037     button->setObjectName(QStringLiteral("button"));
0038     mainLayout->addWidget(button);
0039     connect(button, &QDialogButtonBox::rejected, this, &SearchMessageDialog::reject);
0040     readConfig();
0041 }
0042 
0043 SearchMessageDialog::~SearchMessageDialog()
0044 {
0045     writeConfig();
0046 }
0047 
0048 void SearchMessageDialog::setRoomId(const QString &roomId)
0049 {
0050     mSearchMessageWidget->setRoomId(roomId);
0051 }
0052 
0053 void SearchMessageDialog::readConfig()
0054 {
0055     create(); // ensure a window is created
0056     windowHandle()->resize(QSize(800, 600));
0057     KConfigGroup group(KSharedConfig::openStateConfig(), QLatin1String(mySearchMessageDialogGroupName));
0058     KWindowConfig::restoreWindowSize(windowHandle(), group);
0059     resize(windowHandle()->size()); // workaround for QTBUG-40584
0060 }
0061 
0062 void SearchMessageDialog::writeConfig()
0063 {
0064     KConfigGroup group(KSharedConfig::openStateConfig(), QLatin1String(mySearchMessageDialogGroupName));
0065     KWindowConfig::saveWindowSize(windowHandle(), group);
0066 }
0067 
0068 void SearchMessageDialog::setModel(CommonMessageFilterProxyModel *model)
0069 {
0070     mSearchMessageWidget->setModel(model);
0071 }
0072 
0073 void SearchMessageDialog::setRoom(Room *room)
0074 {
0075     mSearchMessageWidget->setRoom(room);
0076     setWindowTitle(
0077         i18nc("@title:window",
0078               "Search Messages in '%1' (%2)",
0079               room->displayRoomName(),
0080               mSearchMessageWidget->currentRocketChatAccount() ? mSearchMessageWidget->currentRocketChatAccount()->accountName() : QStringLiteral("account")));
0081 }
0082 
0083 #include "moc_searchmessagedialog.cpp"