From e9ae80694875f869892f13f4fcaf1170a00dea41 Mon Sep 17 00:00:00 2001 From: toma Date: Wed, 25 Nov 2009 17:56:58 +0000 Subject: Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features. BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdewebdev@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- quanta/src/viewmanager.h | 144 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 quanta/src/viewmanager.h (limited to 'quanta/src/viewmanager.h') diff --git a/quanta/src/viewmanager.h b/quanta/src/viewmanager.h new file mode 100644 index 00000000..e7a4fb31 --- /dev/null +++ b/quanta/src/viewmanager.h @@ -0,0 +1,144 @@ +/*************************************************************************** + viewmanager - description + begin : Fri Mar 26 2004 + copyright : (C) 2004 by Andras Mantia + ***************************************************************************/ + +/*************************************************************************** + * + * 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; version 2 of the License. + * + ***************************************************************************/ + +#ifndef VIEWMANAGER_H +#define VIEWMANAGER_H + +#include + +//forward declarations +class Document; +class QuantaView; +class QuantaBookmarks; +class KafkaDocument; +class KPopupMenu; + +class KMdiChildView; + +/** This singleton class takes care of creating new views for documents, help, plugins, preview and so. +* As the name says, it also manages the views. */ + +class ViewManager : public QObject +{ + Q_OBJECT +public: + /** Returns a reference to the viewmanager object */ + static ViewManager* const ref(QObject *parent = 0L, const char *name = 0L) + { + static ViewManager *m_ref; + if (!m_ref) m_ref = new ViewManager(parent, name); + return m_ref; + } + /** The destructor. */ + virtual ~ViewManager(){}; + + /** Creates a QuantaView object */ + QuantaView *createView(const QString &caption = QString::null); + /** Removes a QuantaView object. Returns false on failure (eg. the view was not saved and it refused + the delete itself.) If force is true, the view is removed without asking for save. + */ + bool removeView(QuantaView *view, bool force = false, bool createNew = true); + /** Returns the active view */ + QuantaView *activeView(); + /** Returns the active document or 0L */ + Document *activeDocument(); + /** Returns the view holding the document loaded from url. */ + QuantaView *isOpened(const KURL &url); + + bool saveAll(); + + /** Returns true if at least one view has the modified flag set. */ + bool isOneModified(); + + void createNewDocument(); +/** Returns a list with the URLs of the opened documents */ + KURL::List openedFiles(bool noUntitled=true); + /** Returns a list with the Document* object of the opened documents */ + QValueList openedDocuments(); + + /** Returns the view holding the documentation widget. If create is true and there is no such view yet, + it creates one. */ + QuantaView *documentationView(bool create = true); + + /** Returns the last active view which had an editor inside or 0 if there was no such view */ + QuantaView *lastActiveEditorView() {return m_lastActiveEditorView;} + + /** Return the URL of the currently active document */ + QString currentURL(); + +public slots: + /**called when a new view was activated */ + void slotViewActivated(KMdiChildView *view); + + /** Removes the active view Returns false on failure (eg. the view was not saved and it refused the delete itself.) */ + bool removeActiveView(bool createNew = true) { return removeView(activeView(), false, createNew); } + /** closes all the other but active tabs */ + void slotCloseOtherTabs(); + /** closes all views. If createNew is true, it creates a new view after closing the others. Return true if all documents were closed.*/ + bool closeAll(bool createNew = true); + /** called when the last view is closed */ + void slotLastViewClosed(); + + /** called when the context menu was invoked on a tab */ + void slotTabContextMenu(QWidget *widget, const QPoint & point); + /** called when the user requests to close a tab with the close button */ + void slotCloseRequest(KMdiChildView *widget); + /** called from the views and just emits the signal @ref documentClosed */ + void slotDocumentClosed(const KURL&); + +signals: + /** emitted when a file from the template view is dropped on a view */ + void dragInsert(QDropEvent *); + /** emitted when a view was activated */ + void viewActivated(const KURL &); + /** emitted when a view was closed */ + void documentClosed(const KURL&); + void eventHappened(const QString&, const QString&, const QString& ); + /** emitted when all files were closed. The argument is true if the closes + was successful, false if the unser canceled the closing */ + void filesClosed(bool); + +private slots: + /** called before the file list menu shows up, so it can be updated */ + void slotFileListPopupAboutToShow(); + /** called when an item is selected in the file list menu */ + void slotFileListPopupItemActivated(int id); + + /** Handle tab context menus for editor views */ + void slotReloadFile(); + void slotUploadFile(); + void slotDeleteFile(); + void slotCloseView(); + +private: + /** Private constructor for the singleton object. */ + ViewManager(QObject * parent = 0, const char * name = 0); + /** Returns true if there isn't any opened view holding an editor */ + bool allEditorsClosed(); + + QuantaView *m_lastActiveView; ///< Holds the last active view. Used to deactivate it when a new view is selected + QuantaView *m_lastActiveEditorView; ///< Contains the last active view which has an editor inside + QuantaView *m_documentationView; ///< Contains the view which holds the documentation browser + KPopupMenu *m_tabPopup; ///< the menu which pops up when the user clicks on a view tab + KPopupMenu *m_fileListPopup; ///< a menu containing the opened views as menu items + KPopupMenu *m_bookmarksMenu; + QuantaBookmarks *m_bookmarks; + + QuantaView *m_contextView; ///