summaryrefslogtreecommitdiffstats
path: root/konqueror/konq_viewmgr.h
diff options
context:
space:
mode:
Diffstat (limited to 'konqueror/konq_viewmgr.h')
-rw-r--r--konqueror/konq_viewmgr.h367
1 files changed, 367 insertions, 0 deletions
diff --git a/konqueror/konq_viewmgr.h b/konqueror/konq_viewmgr.h
new file mode 100644
index 000000000..dff2a033c
--- /dev/null
+++ b/konqueror/konq_viewmgr.h
@@ -0,0 +1,367 @@
+/* This file is part of the KDE project
+ Copyright (C) 1999 Simon Hausmann <[email protected]>
+
+ 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 __konq_viewmgr_h__
+#define __konq_viewmgr_h__
+
+#include "konq_factory.h"
+
+#include <qnamespace.h>
+#include <qobject.h>
+#include <qmap.h>
+#include <qguardedptr.h>
+
+#include <ktrader.h>
+
+#include <kparts/partmanager.h>
+#include "konq_openurlrequest.h"
+
+class QString;
+class QStringList;
+class QTimer;
+class KConfig;
+class KonqMainWindow;
+class KonqFrameBase;
+class KonqFrameContainer;
+class KonqFrameContainerBase;
+class KonqFrameTabs;
+class KonqView;
+class BrowserView;
+class KActionMenu;
+
+namespace KParts
+{
+ class ReadOnlyPart;
+}
+
+class KonqViewManager : public KParts::PartManager
+{
+ Q_OBJECT
+public:
+ KonqViewManager( KonqMainWindow *mainWindow );
+ ~KonqViewManager();
+
+ KonqView* Initialize( const QString &serviceType, const QString &serviceName );
+
+ /**
+ * Splits the view, depending on orientation, either horizontally or
+ * vertically. The first of the resulting views will contain the initial
+ * view, the other will be a new one, constructed from the given
+ * Service Type.
+ * If no Service Type was provided it takes the one from the current view.
+ * Returns the newly created view or 0L if the view couldn't be created.
+ *
+ * @param newOneFirst if true, move the new view as the first one (left or top)
+ */
+ KonqView* splitView( Qt::Orientation orientation,
+ const QString & serviceType = QString::null,
+ const QString & serviceName = QString::null,
+ bool newOneFirst = false, bool forceAutoEmbed = false );
+
+ /**
+ * Does basically the same as splitView() but inserts the new view at the top
+ * of the view tree.
+ * Returns the newly created view or 0L if the view couldn't be created.
+ *
+ * @param newOneFirst if true, move the new view as the first one (left or top)
+ */
+ KonqView* splitWindow( Qt::Orientation orientation,
+ const QString & serviceType = QString::null,
+ const QString & serviceName = QString::null,
+ bool newOneFirst = false);
+
+ /**
+ * Converts a Container or View docContainer into a Tabs
+ */
+ void convertDocContainer();
+
+
+ /**
+ * Adds a tab to m_pMainContainer
+ */
+ KonqView* addTab(const QString &serviceType = QString::null,
+ const QString &serviceName = QString::null,
+ bool passiveMode = false, bool openAfterCurrentPage = false );
+
+
+
+ /**
+ * Duplicates the specified tab, or else the current one if none is specified
+ */
+ void duplicateTab( KonqFrameBase* tab = 0L, bool openAfterCurrentPage = false );
+
+ /**
+ * creates a new tab from a history entry
+ * used for MMB on back/forward
+ */
+ KonqView* addTabFromHistory( int steps, bool openAfterCurrentPage );
+
+ /**
+ * Break the current tab off into a new window,
+ * if none is specified, the current one is used
+ */
+ void breakOffTab( KonqFrameBase* tab = 0L );
+
+ /**
+ * Guess!:-)
+ * Also takes care of setting another view as active if @p view was the active view
+ */
+ void removeView( KonqView *view );
+
+ /**
+ * Removes specified tab, if none is specified it remvoe the current tab
+ * Also takes care of setting another view as active if the active view was in this tab
+ */
+ void removeTab( KonqFrameBase* tab = 0L );
+
+ /**
+ * Removes all, but the specified tab. If no tab is specified every tab, but the current will be removed
+ * Also takes care of setting the specified tab as active if the active view was not in this tab
+ */
+ void removeOtherTabs( KonqFrameBase* tab = 0L );
+
+ /**
+ * Locates and activates the next tab
+ *
+ */
+ void activateNextTab();
+
+ /**
+ * Locates and activates the previous tab
+ *
+ */
+ void activatePrevTab();
+
+ /**
+ * Activate given tab
+ *
+ */
+ void activateTab(int position);
+
+ void moveTabBackward();
+ void moveTabForward();
+
+ void reloadAllTabs();
+
+ /**
+ * Brings the tab specified by @p view to the front of the stack
+ *
+ */
+ void showTab( KonqView *view );
+
+ /**
+ * Updates favicon pixmaps used in tabs
+ *
+ */
+ void updatePixmaps();
+
+ /**
+ * Saves the current view layout to a config file.
+ * Remove config file before saving, especially if saveURLs is false.
+ * @param cfg the config file
+ * @param saveURLs whether to save the URLs in the profile
+ * @param saveWindowSize whether to save the size of the window in the profile
+ */
+ void saveViewProfile( KConfig & cfg, bool saveURLs, bool saveWindowSize );
+
+ /**
+ * Saves the current view layout to a config file.
+ * Remove config file before saving, especially if saveURLs is false.
+ * @param fileName the name of the config file
+ * @param profileName the name of the profile
+ * @param saveURLs whether to save the URLs in the profile
+ * @param saveWindowSize whether to save the size of the window in the profile
+ */
+ void saveViewProfile( const QString & fileName, const QString & profileName,
+ bool saveURLs, bool saveWindowSize );
+
+ /**
+ * Loads a view layout from a config file. Removes all views before loading.
+ * @param cfg the config file
+ * @param filename if set, remember the file name of the profile (for save settings)
+ * It has to be under the profiles dir. Otherwise, set to QString::null
+ * @param forcedURL if set, the URL to open, whatever the profile says
+ * @param req attributes related to @p forcedURL
+ * @param resetWindow if the profile doesn't have attributes like size or toolbar
+ * settings, they will be reset to the defaults
+ */
+ void loadViewProfile( KConfig &cfg, const QString & filename,
+ const KURL & forcedURL = KURL(),
+ const KonqOpenURLRequest &req = KonqOpenURLRequest(),
+ bool resetWindow = false, bool openURL = true );
+
+ /**
+ * Loads a view layout from a config file. Removes all views before loading.
+ * @param path the full path to the config file
+ * @param filename if set, remember the file name of the profile (for save settings)
+ * It has to be under the profiles dir. Otherwise, set to QString::null
+ * @param forcedURL if set, the URL to open, whatever the profile says
+ * @param req attributes related to @p forcedURL
+ * @param resetWindow if the profile doesn't have attributes like size or toolbar
+ * settings, they will be reset to the defaults
+ */
+ void loadViewProfile( const QString & path, const QString & filename,
+ const KURL & forcedURL = KURL(),
+ const KonqOpenURLRequest &req = KonqOpenURLRequest(),
+ bool resetWindow = false, bool openURL = true );
+ /**
+ * Return the filename of the last profile that was loaded
+ * by the view manager. For "save settings".
+ */
+ QString currentProfile() const { return m_currentProfile; }
+ /**
+ * Return the name (i18n'ed) of the last profile that was loaded
+ * by the view manager. For "save settings".
+ */
+ QString currentProfileText() const { return m_currentProfileText; }
+
+ /**
+ * Whether we are currently loading a profile
+ */
+ bool isLoadingProfile() const { return m_bLoadingProfile; }
+
+ void clear();
+
+ KonqView *chooseNextView( KonqView *view );
+
+ /**
+ * Called whenever
+ * - the total number of views changed
+ * - the number of views in passive mode changed
+ * The implementation takes care of showing or hiding the statusbar indicators
+ */
+ void viewCountChanged();
+
+ void setProfiles( KActionMenu *profiles );
+
+ void profileListDirty( bool broadcast = true );
+
+ KonqFrameBase *docContainer() const { return m_pDocContainer; }
+ void setDocContainer( KonqFrameBase* docContainer ) { m_pDocContainer = docContainer; }
+
+ KonqMainWindow *mainWindow() const { return m_pMainWindow; }
+
+ /**
+ * Reimplemented from PartManager
+ */
+ virtual void removePart( KParts::Part * part );
+
+ /**
+ * Reimplemented from PartManager
+ */
+ virtual void setActivePart( KParts::Part *part, QWidget *widget = 0L );
+
+ void setActivePart( KParts::Part *part, bool immediate );
+
+ void showProfileDlg( const QString & preselectProfile );
+
+ /**
+ * The widget is the one which you are referring to.
+ */
+ static QSize readConfigSize( KConfig &cfg, QWidget *widget = NULL);
+
+#ifndef NDEBUG
+ void printFullHierarchy( KonqFrameContainerBase * container );
+#endif
+
+ void setLoading( KonqView *view, bool loading );
+
+ void showHTML(bool b);
+
+ QString profileHomeURL() const { return m_profileHomeURL; }
+
+protected slots:
+ void emitActivePartChanged();
+
+ void slotProfileDlg();
+
+ void slotProfileActivated( int id );
+
+ void slotProfileListAboutToShow();
+
+ void slotPassiveModePartDeleted();
+
+ void slotActivePartChanged ( KParts::Part *newPart );
+
+protected:
+
+ /**
+ * Load the config entries for a view.
+ * @param cfg the config file
+ * ...
+ * @param defaultURL the URL to use if the profile doesn't contain urls
+ * @param openURL whether to open urls at all (from the profile or using @p defaultURL).
+ * (this is set to false when we have a forcedURL to open)
+ */
+ void loadItem( KConfig &cfg, KonqFrameContainerBase *parent,
+ const QString &name, const KURL & defaultURL, bool openURL, bool openAfterCurrentPage = false );
+
+ // Disabled - we do it ourselves
+ virtual void setActiveInstance( KInstance * ) {}
+
+private:
+
+ /**
+ * Creates a new View based on the given ServiceType. If serviceType is empty
+ * it clones the current view.
+ * Returns the newly created view.
+ */
+ KonqViewFactory createView( const QString &serviceType,
+ const QString &serviceName,
+ KService::Ptr &service,
+ KTrader::OfferList &partServiceOffers,
+ KTrader::OfferList &appServiceOffers,
+ bool forceAutoEmbed = false );
+
+ /**
+ * Mainly creates the backend structure(KonqView) for a view and
+ * connects it
+ */
+ KonqView *setupView( KonqFrameContainerBase *parentContainer,
+ KonqViewFactory &viewFactory,
+ const KService::Ptr &service,
+ const KTrader::OfferList &partServiceOffers,
+ const KTrader::OfferList &appServiceOffers,
+ const QString &serviceType,
+ bool passiveMode, bool openAfterCurrentPage = false);
+
+#ifndef NDEBUG
+ //just for debugging
+ void printSizeInfo( KonqFrameBase* frame,
+ KonqFrameContainerBase* parent,
+ const char* msg );
+#endif
+
+ KonqMainWindow *m_pMainWindow;
+
+ KonqFrameBase *m_pDocContainer;
+
+ QGuardedPtr<KActionMenu> m_pamProfiles;
+ bool m_bProfileListDirty;
+ bool m_bLoadingProfile;
+ QString m_currentProfile;
+ QString m_currentProfileText;
+ QString m_profileHomeURL;
+
+ QMap<QString, QString> m_mapProfileNames;
+
+ QTimer *m_activePartChangedTimer;
+};
+
+#endif