File indexing completed on 2024-05-19 12:41:52
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"