File indexing completed on 2024-05-05 17:01:23

0001 /*
0002    SPDX-FileCopyrightText: 2023-2024 Laurent Montel <montel.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "loaddatabasegui.h"
0008 #include "messages/message.h"
0009 #include "model/messagesmodel.h"
0010 #include "rocketchataccount.h"
0011 #include "room/messagelistview.h"
0012 #include <QApplication>
0013 #include <QDebug>
0014 #include <QHBoxLayout>
0015 #include <QLabel>
0016 #include <QLineEdit>
0017 #include <QPushButton>
0018 #include <QSpinBox>
0019 #include <QStandardPaths>
0020 #include <QVBoxLayout>
0021 
0022 // Same as in localmessagedatabase.cpp
0023 enum class Fields {
0024     MessageId,
0025     TimeStamp,
0026     Json,
0027 }; // in the same order as the table
0028 LoadDataBaseGui::LoadDataBaseGui(QWidget *parent)
0029     : QWidget{parent}
0030     , mMessageListView(new MessageListView(new RocketChatAccount(QStringLiteral("test"), this), MessageListView::Mode::Viewing, this))
0031     , mLocalMessageDatabase(new LocalMessageDatabase())
0032     , mAccountName(new QLineEdit(this))
0033     , mRoomName(new QLineEdit(this))
0034     , mNumberElement(new QSpinBox(this))
0035     , mMessageModel(new MessagesModel()) // TODO allow to delete it
0036 {
0037     auto mainLayout = new QVBoxLayout(this);
0038     auto hboxLayout = new QHBoxLayout;
0039     hboxLayout->setContentsMargins({});
0040     mainLayout->addLayout(hboxLayout);
0041 
0042     auto label = new QLabel(QStringLiteral("Account name:"), this);
0043     hboxLayout->addWidget(label);
0044     hboxLayout->addWidget(mAccountName);
0045     mAccountName->setPlaceholderText(QStringLiteral("<account name>"));
0046     label = new QLabel(QStringLiteral("Room name:"), this);
0047     hboxLayout->addWidget(label);
0048     mRoomName->setPlaceholderText(QStringLiteral("all"));
0049     hboxLayout->addWidget(mRoomName);
0050 
0051     hboxLayout->addWidget(mNumberElement);
0052     mNumberElement->setRange(-1, 9999);
0053     mNumberElement->setValue(-1);
0054 
0055     auto pushButton = new QPushButton(QStringLiteral("Load"), this);
0056     hboxLayout->addWidget(pushButton);
0057     connect(pushButton, &QPushButton::clicked, this, &LoadDataBaseGui::slotLoad);
0058 
0059     mMessageListView->setModel(mMessageModel);
0060     mainLayout->addWidget(mMessageListView);
0061 }
0062 
0063 LoadDataBaseGui::~LoadDataBaseGui()
0064 {
0065     delete mMessageModel;
0066 }
0067 
0068 void LoadDataBaseGui::slotLoad()
0069 {
0070     if (!mRoomName->text().trimmed().isEmpty() && !mAccountName->text().trimmed().isEmpty()) {
0071         const auto listMessages = mLocalMessageDatabase->loadMessages(mAccountName->text(), mRoomName->text(), -1, -1, mNumberElement->value());
0072         // qDebug() << " listMessages " << listMessages.count();
0073         mMessageModel->clear();
0074         mMessageModel->addMessages(listMessages);
0075     }
0076 }
0077 
0078 int main(int argc, char *argv[])
0079 {
0080     QApplication app(argc, argv);
0081     // Use specific ruqola name for database path
0082     app.setApplicationName(QStringLiteral("ruqola"));
0083     // QStandardPaths::setTestModeEnabled(true);
0084 
0085     LoadDataBaseGui w;
0086     w.show();
0087     return app.exec();
0088 }
0089 
0090 #include "moc_loaddatabasegui.cpp"