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 };