#ifndef QTERMINALAPP_H #define QTERMINALAPP_H #include #ifdef HAVE_QDBUS #include #endif #include "mainwindow.h" class QTerminalApp : public QApplication { Q_OBJECT public: MainWindow *newWindow(bool dropMode, TerminalConfig &cfg); QList getWindowList(); void addWindow(MainWindow *window); void removeWindow(MainWindow *window); static QTerminalApp *Instance(int &argc, char **argv); static QTerminalApp *Instance(); QString &getWorkingDirectory(); void setWorkingDirectory(const QString &wd); #ifdef HAVE_QDBUS void registerOnDbus(); QList getWindows(); QDBusObjectPath newWindow(const QHash &termArgs); QDBusObjectPath getActiveWindow(); bool isDropMode(); bool toggleDropdown(); #endif static void cleanup(); private: QString m_workDir; QList m_windowList; static QTerminalApp *m_instance; QTerminalApp(int &argc, char **argv); ~QTerminalApp(){}; }; template T* findParent(QObject *child) { QObject *maybeT = child; while (true) { if (maybeT == NULL) { return NULL; } T *holder = qobject_cast(maybeT); if (holder) return holder; maybeT = maybeT->parent(); } } #endif