1 /**************************************************************************
2 * Otter Browser: Web browser controlled by the user, not vice-versa.
3 * Copyright (C) 2013 - 2017 Michal Dutkiewicz aka Emdek <michal@emdek.pl>
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 *
18 **************************************************************************/
19 
20 #ifndef OTTER_IMPORTER_H
21 #define OTTER_IMPORTER_H
22 
23 #include "AddonsManager.h"
24 
25 namespace Otter
26 {
27 
28 class Importer : public QObject, public Addon
29 {
30 	Q_OBJECT
31 
32 public:
33 	enum ImportType
34 	{
35 		OtherImport = 0,
36 		FullImport = 1,
37 		BookmarksImport = 2,
38 		SettingsImport = 4,
39 		PasswordsImport = 8,
40 		SearchEnginesImport = 16,
41 		SessionsImport = 32,
42 		CookiesImport = 64,
43 		HistoryImport = 128,
44 		FeedsImport = 256,
45 		MailImport = 512,
46 		NotesImport = 1024
47 	};
48 
49 	enum ImportResult
50 	{
51 		SuccessfullImport = 0,
52 		FailedImport,
53 		CancelledImport
54 	};
55 
56 	explicit Importer(QObject *parent = nullptr);
57 
58 	virtual QWidget* createOptionsWidget(QWidget *parent) = 0;
59 	virtual QString getSuggestedPath(const QString &path = {}) const = 0;
60 	virtual QString getBrowser() const = 0;
61 	virtual QStringList getFileFilters() const = 0;
62 	AddonType getType() const override;
63 	virtual ImportType getImportType() const = 0;
64 	virtual bool canCancel();
65 
66 public slots:
67 	virtual void cancel();
68 	virtual bool import(const QString &path) = 0;
69 
70 protected slots:
71 	void notifyImportStarted(int type, int total);
72 	void notifyImportProgress(int type, int total, int amount);
73 	void notifyImportFinished(int type, int result, int total);
74 
75 signals:
76 	void importStarted(ImportType type, int total);
77 	void importProgress(ImportType type, int total, int amount);
78 	void importFinished(ImportType type, ImportResult result, int total);
79 };
80 
81 }
82 
83 #endif
84