File indexing completed on 2024-05-12 05:23:47

0001 /*
0002    SPDX-FileCopyrightText: 2013-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "mboxmainwindow.h"
0008 #include "mboximporterinfogui.h"
0009 #include "mboximportkernel.h"
0010 #include "mboximportwidget.h"
0011 
0012 #include <MailImporter/FilterMBox>
0013 #include <MailImporter/ImportMailsWidget>
0014 #include <MailImporterAkonadi/FilterImporterAkonadi>
0015 
0016 #include <MailCommon/MailKernel>
0017 
0018 #include <KLocalizedString>
0019 #include <QDialogButtonBox>
0020 #include <QPushButton>
0021 #include <QVBoxLayout>
0022 
0023 MBoxMainWindow::MBoxMainWindow(const QString &filename, QWidget *parent)
0024     : QDialog(parent)
0025     , mFileName(filename)
0026 {
0027     setWindowTitle(i18nc("@title:window", "Import mbox file"));
0028     auto mainLayout = new QVBoxLayout(this);
0029 
0030     auto kernel = new MBoxImporterKernel(this);
0031     CommonKernel->registerKernelIf(kernel); // register KernelIf early, it is used by the Filter classes
0032     CommonKernel->registerSettingsIf(kernel); // SettingsIf is used in FolderTreeWidget
0033 
0034     mImportWidget = new MBoxImportWidget(this);
0035     mainLayout->addWidget(mImportWidget);
0036 
0037     auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Close, this);
0038     connect(buttonBox, &QDialogButtonBox::rejected, this, &MBoxMainWindow::reject);
0039 
0040     buttonBox->button(QDialogButtonBox::Close)->setDefault(true);
0041     mainLayout->addWidget(buttonBox);
0042 
0043     connect(mImportWidget, &MBoxImportWidget::importMailsClicked, this, &MBoxMainWindow::slotImportMBox);
0044     resize(800, 600);
0045 }
0046 
0047 MBoxMainWindow::~MBoxMainWindow() = default;
0048 
0049 void MBoxMainWindow::slotImportMBox()
0050 {
0051     auto info = new MailImporter::FilterInfo();
0052     auto filterImporterAkonadi = new MailImporter::FilterImporterAkonadi(info);
0053     auto infoGui = new MBoxImporterInfoGui(mImportWidget);
0054     info->setFilterInfoGui(infoGui);
0055     filterImporterAkonadi->setRootCollection(mImportWidget->selectedCollection());
0056     info->clear(); // Clear info from last time
0057 
0058     info->setStatusMessage(i18n("Import in progress"));
0059     MailImporter::FilterMBox mbox;
0060     mbox.setFilterImporter(filterImporterAkonadi);
0061     mbox.setFilterInfo(info);
0062     info->clear();
0063     mbox.importMails({mFileName});
0064     info->setStatusMessage(i18n("Import finished"));
0065 }
0066 
0067 #include "moc_mboxmainwindow.cpp"