add import/export list items under Edit menu.
[abby.git] / src / mainwnd.h
blobd5d6d0b4e5ba6ac4da197ad5952c50d09c33e7f5
1 /*
2 * abby Copyright (C) 2009 Toni Gundogdu.
3 * This file is part of abby.
5 * abby 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.
10 * abby 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.
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/>.
18 #ifndef mainwnd_h
19 #define mainwnd_h
21 #include <QProcess>
22 #include <QSystemTrayIcon>
24 #include "ui_mainwnd.h"
26 class QMainWindow;
27 class PreferencesDialog;
28 class RSSDialog;
29 class ScanDialog;
30 class FormatDialog;
32 typedef QMap<QString,QString> QStringMap;
34 class MainWindow : public QMainWindow, private Ui::MainWindow {
35 Q_OBJECT
36 public:
37 MainWindow();
38 private slots:
39 void onPreferences();
40 void onStart();
41 void onCancel();
42 void onAbout();
43 void onStreamStateChanged(int state);
44 void onRSS();
45 void onScan();
46 void onPasteURL();
47 void onAdd();
48 void onRemove();
49 void onClear();
50 void onFormats();
51 void onProcStarted();
52 void onProcError(QProcess::ProcessError);
53 void onProcStdoutReady();
54 void onProcFinished(int exitCode, QProcess::ExitStatus exitStatus);
55 void onItemDoubleClicked(QListWidgetItem *item);
56 void iconActivated(QSystemTrayIcon::ActivationReason);
57 void onImport();
58 void onExport();
59 private:
60 QStringMap hosts;
61 PreferencesDialog *prefs;
62 RSSDialog *rss;
63 ScanDialog *scan;
64 FormatDialog *format;
65 QProcess process;
66 bool cancelledFlag;
67 bool isCcliveFlag;
68 QString ccliveVersion;
69 QString libVersion;
70 QString libName;
71 QSystemTrayIcon *trayIcon;
72 QMenu *trayIconMenu;
73 QAction *restoreAction;
74 private:
75 void addPageLink(QString lnk);
76 void writeSettings();
77 void readSettings();
78 void updateWidgets(const bool updateCcliveDepends);
79 void setProxy();
80 bool ccliveSupportsHost(const QString &lnk);
81 bool parseCcliveHostsOutput();
82 bool parseCcliveVersionOutput();
83 void createTrayIcon();
84 protected:
85 void closeEvent(QCloseEvent *event);
86 void dragEnterEvent(QDragEnterEvent *event);
87 void dropEvent(QDropEvent *event);
88 void showEvent(QShowEvent *event);
89 void hideEvent(QHideEvent *event);
91 #endif