File indexing completed on 2024-05-12 05:11:07

0001 /*
0002    SPDX-FileCopyrightText: 2012-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 #pragma once
0007 
0008 #include "abstractimporter.h"
0009 
0010 #include <KAssistantDialog>
0011 namespace LibImportWizard
0012 {
0013 class AbstractImporter;
0014 class AbstractDisplayInfo;
0015 }
0016 class KPageWidgetItem;
0017 class SelectProgramPage;
0018 class SelectComponentPage;
0019 class ImportMailPage;
0020 class ImportFilterPage;
0021 class ImportSettingPage;
0022 class ImportAddressbookPage;
0023 class ImportFinishPage;
0024 class ImportCalendarPage;
0025 class ManualSelectFilterPage;
0026 class ManualImportMailPage;
0027 
0028 namespace Akonadi
0029 {
0030 class Collection;
0031 }
0032 class ImportWizard : public KAssistantDialog
0033 {
0034     Q_OBJECT
0035 public:
0036     enum class WizardMode { AutoDetect = 0, Manual = 1 };
0037 
0038     explicit ImportWizard(WizardMode mode, QWidget *parent = nullptr);
0039     ~ImportWizard() override;
0040 
0041     void next() override;
0042     void reject() override;
0043     void back() override;
0044 
0045     ImportMailPage *importMailPage() const;
0046     ImportFilterPage *importFilterPage() const;
0047     ImportAddressbookPage *importAddressBookPage() const;
0048     ImportSettingPage *importSettingPage() const;
0049     ImportFinishPage *importFinishPage() const;
0050     ImportCalendarPage *importCalendarPage() const;
0051 
0052 private Q_SLOTS:
0053     void slotProgramSelected(const QString &program);
0054     void slotImportMailsClicked();
0055     void slotImportFiltersClicked();
0056     void slotProgramDoubleClicked();
0057     void slotAtLeastOneComponentSelected(bool b);
0058     void slotImportSettingsClicked();
0059     void slotImportAddressbookClicked();
0060     void slotImportCalendarClicked();
0061     void slotSelectManualSelectionChanged(bool b);
0062     void slotCollectionChanged(const Akonadi::Collection &selectedCollection);
0063 
0064 private:
0065     void addFinishInfo(const QString &log);
0066     void addFinishError(const QString &log);
0067 
0068     void readConfig();
0069     void writeConfig();
0070     void initializeImportModule();
0071     void createAutomaticModePage();
0072     void addImportModule(LibImportWizard::AbstractImporter *);
0073     void checkModules();
0074     void setAppropriatePage(LibImportWizard::AbstractImporter::TypeSupportedOptions options);
0075     void enableAllImportButton();
0076     void createManualModePage();
0077     void updatePagesFromMode();
0078 
0079     QMap<QString, LibImportWizard::AbstractImporter *> mlistImport;
0080 
0081     WizardMode mMode;
0082     LibImportWizard::AbstractImporter *mSelectedPim = nullptr;
0083 
0084     KPageWidgetItem *mSelectProgramPageItem = nullptr;
0085     KPageWidgetItem *mSelectComponentPageItem = nullptr;
0086     KPageWidgetItem *mImportMailPageItem = nullptr;
0087     KPageWidgetItem *mImportFilterPageItem = nullptr;
0088     KPageWidgetItem *mImportSettingPageItem = nullptr;
0089     KPageWidgetItem *mImportAddressbookPageItem = nullptr;
0090     KPageWidgetItem *mImportCalendarPageItem = nullptr;
0091     KPageWidgetItem *mImportFinishPageItem = nullptr;
0092 
0093     SelectProgramPage *mSelectProgramPage = nullptr;
0094     SelectComponentPage *mSelectComponentPage = nullptr;
0095     ImportMailPage *mImportMailPage = nullptr;
0096     ImportFilterPage *mImportFilterPage = nullptr;
0097     ImportSettingPage *mImportSettingPage = nullptr;
0098     ImportAddressbookPage *mImportAddressbookPage = nullptr;
0099     ImportFinishPage *mImportFinishPage = nullptr;
0100     ImportCalendarPage *mImportCalendarPage = nullptr;
0101 
0102     ManualSelectFilterPage *mSelfilterpage = nullptr;
0103     ManualImportMailPage *mImportpage = nullptr;
0104     KPageWidgetItem *mSelfilterpageItem = nullptr;
0105     KPageWidgetItem *mImportpageItem = nullptr;
0106 
0107     LibImportWizard::AbstractDisplayInfo *mAbstractDisplayInfo = nullptr;
0108 };