summaryrefslogtreecommitdiffstats
path: root/src/kchmmainwindow.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/kchmmainwindow.h')
-rw-r--r--src/kchmmainwindow.h191
1 files changed, 191 insertions, 0 deletions
diff --git a/src/kchmmainwindow.h b/src/kchmmainwindow.h
new file mode 100644
index 0000000..7381567
--- /dev/null
+++ b/src/kchmmainwindow.h
@@ -0,0 +1,191 @@
+/***************************************************************************
+ * Copyright (C) 2004-2007 by Georgy Yunaev, gyunaev@ulduzsoft.com *
+ * Please do not use email address above for bug reports; see *
+ * the README file *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+#ifndef KCHMMAINWINDOW_H
+#define KCHMMAINWINDOW_H
+
+#include "kde-qt.h"
+
+#include "libchmfile.h"
+
+#include "forwarddeclarations.h"
+#include "kchmviewwindow.h"
+
+
+#define ENABLE_AUTOTEST_SUPPORT
+
+//! OpenPage extra flags, specifying extra behavior
+
+//! Locate this page in the content tree, and move the cursor there
+static const unsigned int OPF_CONTENT_TREE = 1 << 0;
+//! Add the previous page into the history
+static const unsigned int OPF_ADD2HISTORY = 1 << 1;
+//! Open the page in a new tab
+static const unsigned int OPF_NEW_TAB = 1 << 2;
+//! Open the page in a new tab in background
+static const unsigned int OPF_BACKGROUND = 1 << 3;
+
+//! Those events could be sent to main window to do useful things. See handleUserEvents()
+class KCHMUserEvent : public QEvent
+{
+ public:
+ KCHMUserEvent( const QString& action, const QStringList& args = QStringList())
+ : QEvent( QEvent::User ), m_action(action), m_args(args) {};
+
+ QString m_action;
+ QStringList m_args;
+};
+
+
+class KCHMMainWindow : public KQMainWindow
+{
+ Q_OBJECT
+
+ public:
+ KCHMMainWindow();
+ ~KCHMMainWindow();
+
+ bool openPage ( const QString &url, unsigned int flags = OPF_CONTENT_TREE );
+
+ LCHMFile * chmFile() const { return m_chmFile; }
+ const QString& getOpenedFileName () { return m_chmFilename; }
+
+ KCHMViewWindow * currentBrowser() const;
+ KCHMContentsWindow * contentsWindow() const { return m_contentsWindow; }
+ KCHMSettings * currentSettings() const { return m_currentSettings; }
+ KCHMViewWindowMgr* viewWindowMgr() const { return m_viewWindowMgr; }
+ KCHMNavToolbar * navigationToolbar() const { return m_navToolbar; }
+ KCHMSearchWindow * searchWindow() const { return m_searchWindow; }
+
+ void showInStatusBar (const QString& text) { statusBar()->message( text, 2000 ); }
+ void setTextEncoding (const LCHMTextEncoding * enc);
+
+ public slots:
+ void slotOnTreeClicked( QListViewItem *item );
+ void slotOnTreeDoubleClicked( QListViewItem *item, const QPoint &, int );
+
+ void slotAddBookmark ( );
+ void slotOpenPageInNewTab( );
+ void slotOpenPageInNewBackgroundTab( );
+ void slotEnableFullScreenMode( bool enable );
+ void slotShowContentsWindow( bool show );
+ void slotLocateInContentWindow( );
+ void slotBrowserChanged( KCHMViewWindow * newbrowser );
+
+ private slots:
+ void slotLinkClicked ( const QString & link, bool& follow_link );
+
+ void slotOpenMenuItemActivated();
+ void slotPrintMenuItemActivated();
+
+ void slotAboutMenuItemActivated();
+ void slotAboutQtMenuItemActivated();
+
+ void slotActivateContentTab();
+ void slotActivateIndexTab();
+ void slotActivateSearchTab();
+ void slotActivateBookmarkTab();
+
+ void slotBrowserSelectAll();
+ void slotBrowserCopy();
+ void slotExtractCHM();
+
+ void slotChangeSettingsMenuItemActivated();
+ void slotHistoryMenuItemActivated ( int );
+
+ void slotToggleFullScreenMode( );
+
+ void slotNavigateBack() { currentBrowser()->navigateBack(); }
+ void slotNavigateHome() { currentBrowser()->navigateHome(); }
+ void slotNavigateForward(){ currentBrowser()->navigateForward(); }
+
+ private:
+ bool parseCmdLineArgs();
+ void showEvent( QShowEvent * );
+ void closeEvent ( QCloseEvent * e );
+ void setupSignals ();
+
+ void setupToolbarsAndMenu ( );
+ bool loadChmFile ( const QString &fileName, bool call_open_page = true );
+ void closeChmFile();
+ void refreshCurrentBrowser();
+ void updateHistoryMenu();
+
+ void showOrHideContextWindow( int tabindex );
+ void showOrHideIndexWindow( int tabindex );
+ void showOrHideSearchWindow( int tabindex );
+
+ // User events
+ bool event ( QEvent * e );
+ bool handleUserEvent( const KCHMUserEvent * event );
+
+ void locateInContentTree( const QString& url );
+
+ QString m_chmFilename;
+ QString m_aboutDlgMenuText; // to show in KDE or Qt about dialogs
+
+ KCHMViewWindowMgr * m_viewWindowMgr;
+ KCHMIndexWindow * m_indexWindow;
+ KCHMSearchWindow * m_searchWindow;
+ KCHMBookmarkWindow * m_bookmarkWindow;
+ KCHMContentsWindow * m_contentsWindow;
+
+ KQTabWidget * m_tabWidget;
+ QSplitter * m_windowSplitter;
+
+ KCHMSearchAndViewToolbar * m_searchToolbar;
+ KCHMNavToolbar * m_navToolbar;
+
+ KCHMSettings * m_currentSettings;
+
+ LCHMFile * m_chmFile;
+ bool m_FirstTimeShow;
+
+ KQPopupMenu * m_menuHistory;
+
+ int m_tabContextPage;
+ int m_tabIndexPage;
+ int m_tabSearchPage;
+ int m_tabBookmarkPage;
+
+#if defined (ENABLE_AUTOTEST_SUPPORT)
+ enum auto_test_state_t
+ {
+ STATE_OFF,
+ STATE_INITIAL,
+ STATE_CONTENTS_OPENNEXTPAGE,
+ STATE_OPEN_INDEX,
+ STATE_SHUTDOWN
+ };
+
+ bool m_useShortAutotest;
+ auto_test_state_t m_autoteststate;
+ QListViewItemIterator m_autotestlistiterator;
+
+ private slots:
+ void runAutoTest();
+#endif /* defined (ENABLE_AUTOTEST_SUPPORT) */
+
+};
+
+extern KCHMMainWindow * mainWindow;
+
+#endif // KCHMMAINWINDOW_H