summaryrefslogtreecommitdiffstats
path: root/kviewshell/kviewpart.h
diff options
context:
space:
mode:
Diffstat (limited to 'kviewshell/kviewpart.h')
-rw-r--r--kviewshell/kviewpart.h252
1 files changed, 252 insertions, 0 deletions
diff --git a/kviewshell/kviewpart.h b/kviewshell/kviewpart.h
new file mode 100644
index 00000000..f30b1109
--- /dev/null
+++ b/kviewshell/kviewpart.h
@@ -0,0 +1,252 @@
+// -*- C++ -*-
+#ifndef KVIEWPART_H
+#define KVIEWPART_H
+
+#include "kviewpart_iface.h"
+#include "pageSize.h"
+#include "zoom.h"
+
+#include <kparts/browserextension.h>
+#include <qtimer.h>
+
+class KAboutData;
+class KAboutDialog;
+class KAccel;
+class KAction;
+class KConfig;
+class KDirWatch;
+class KInstance;
+class KMultiPage;
+class KRadioAction;
+class KSelectAction;
+class KTempFile;
+class KToggleAction;
+class KURL;
+class KViewPartExtension;
+class QHBoxLayout;
+class pageSizeDialog;
+class QSize;
+
+
+class KViewPart : public KViewPart_Iface
+{
+ Q_OBJECT
+
+public:
+ KViewPart(QWidget *parentWidget, const char *widgetName, QObject *parent,
+ const char *name, const QStringList& args);
+ virtual ~KViewPart();
+
+ static KAboutData* createAboutData();
+
+ bool isValid() { return multiPage; }
+
+ /* This method calls closeURL(), but asks first ("The document was
+ modified. Do you really want to close?") if the document has been
+ modified after it has been loaded. */
+ virtual bool closeURL_ask();
+
+ /* Returns a description of the current page size, for use in the
+ statusbar of the kviewshell that embeds this KViewPart. */
+ QString pageSizeDescription();
+
+ /** Returns a list of mimetypes supported by the installed KViewShell plugins. */
+ virtual QStringList supportedMimeTypes();
+
+signals:
+ void zoomChanged(const QString &);
+ void pageChanged(const QString &);
+ void sizeChanged(const QString &);
+ void scrollbarStatusChanged(bool);
+ void fileOpened();
+
+ void pluginChanged(KParts::Part*);
+
+public slots:
+ void slotSetFullPage(bool fullpage);
+
+ virtual void slotFileOpen();
+ virtual bool closeURL();
+ virtual QStringList fileFormats() const;
+ void setStatusBarTextFromMultiPage(const QString &);
+
+ /** Calling this slot will cause the kmultipage to reload the file */
+ void reload();
+
+ void restoreDocument(const KURL &url, int page);
+ void saveDocumentRestoreInfo(KConfig* config);
+
+protected slots:
+ void slotShowSidebar();
+ void slotMedia (int);
+
+ void goToPage();
+
+ void zoomIn();
+ void zoomOut();
+
+ void disableZoomFit();
+ void updateZoomLevel();
+
+ void enableFitToPage(bool);
+ void enableFitToHeight(bool);
+ void enableFitToWidth(bool);
+
+ void fitToPage();
+ void fitToHeight();
+ void fitToWidth();
+
+ void slotPrint();
+
+ void fileChanged(const QString&);
+
+ // Connected to the QLineEdit in the toolbar.
+ void setZoomValue(const QString &);
+
+
+protected:
+ KToggleAction *showSidebar, *scrollbarHandling;
+ KSelectAction *orientation, *media, *zoom_action;
+
+ virtual bool openFile();
+
+ void connectNotify ( const char * );
+
+ void partActivateEvent( KParts::PartActivateEvent *ev );
+ void guiActivateEvent( KParts::GUIActivateEvent *ev );
+
+private slots:
+ void pageInfo(int numpages, int currentpage);
+ void checkActions();
+
+ void slotStartFitTimer();
+
+ void doSettings();
+ void preferencesChanged();
+
+ void aboutKViewShell();
+
+ void slotEnableMoveTool(bool enable);
+
+ // Relay signals to the multipage. We cannot connect to the
+ // slots of the multipage directly because than we would have
+ // to recreate the whole interface whenever a new multipage is loaded.
+ void mp_prevPage();
+ void mp_nextPage();
+ void mp_firstPage();
+ void mp_lastPage();
+
+ void mp_readUp();
+ void mp_readDown();
+
+ void mp_scrollUp();
+ void mp_scrollDown();
+ void mp_scrollLeft();
+ void mp_scrollRight();
+ void mp_scrollUpPage();
+ void mp_scrollDownPage();
+ void mp_scrollLeftPage();
+ void mp_scrollRightPage();
+
+ void mp_slotSave();
+ void mp_slotSave_defaultFilename();
+
+ void mp_doGoBack();
+ void mp_doGoForward();
+
+ void mp_showFindTextDialog();
+ void mp_findNextText();
+ void mp_findPrevText();
+
+ void mp_doSelectAll();
+ void mp_clearSelection();
+
+ void mp_copyText();
+
+ void mp_exportText();
+
+private:
+ void initializeMultiPage();
+
+ // This method reads the configuration file. It should only be
+ // called when no document is loaded.
+ void readSettings();
+ void writeSettings();
+
+ // The method openFile of this kviewpart can be called even if
+ // m_file points to a compressed file. In that case, the temporary
+ // file tmpUnzipped will be created and a decompressed copy of the
+ // file stored there.
+ KTempFile *tmpUnzipped;
+
+ KDirWatch *watch;
+ KAccel *accel;
+ KAction *zoomInAct, *zoomOutAct, *backAct, *forwardAct,
+ *startAct, *endAct, *gotoAct,
+ *saveAction, *saveAsAction, *printAction, *readUpAct, *readDownAct;
+ KAction *backAction;
+ KAction *forwardAction;
+ KAction *settingsAction;
+ KAction* aboutAction;
+ KToggleAction *watchAct,*useDocumentSpecifiedSize,
+ *fitPageAct, *fitHeightAct, *fitWidthAct;
+ KSelectAction* viewModeAction;
+
+ KRadioAction* moveModeAction;
+ KRadioAction* selectionModeAction;
+
+ KAction* exportTextAction;
+
+ KAction* copyTextAction;
+ KAction* selectAllAction;
+ KAction* deselectAction;
+ KAction* findTextAction;
+ KAction* findNextTextAction;
+ KAction* findPrevAction;
+ KAction* findNextAction;
+
+ KParts::PartManager* partManager;
+
+ QGuardedPtr<KMultiPage> multiPage;
+ // Name of the library of the currently loaded multiPage.
+ // Is used to check if it is really necessary to load a new MultiPage.
+ QString multiPageLibrary;
+
+ KViewPartExtension *m_extension;
+
+ bool pageChangeIsConnected;
+
+ QWidget *mainWidget;
+ QHBoxLayout* mainLayout;
+
+ /** This entry stores the paper size that the user has requested in
+ the preferences dialog. If that paper size is actually used or
+ not, depends on if the document specifies a paper size of its
+ own and if the user has chosen the option "use document
+ specified paper size if available" */
+ pageSize userRequestedPaperSize;
+
+ /** stores the current zoom value */
+ Zoom _zoomVal;
+ pageSizeDialog *_pageSizeDialog;
+
+ QTimer fitTimer;
+
+ KAboutDialog* aboutDialog;
+};
+
+
+class KViewPartExtension : public KParts::BrowserExtension
+{
+ Q_OBJECT
+ friend class KViewPart;
+
+public:
+
+ KViewPartExtension(KViewPart *parent);
+ virtual ~KViewPartExtension() {}
+
+};
+
+
+#endif