summaryrefslogtreecommitdiff
path: root/src/plugins/coreplugin/editormanager/editormanager.cpp
diff options
context:
space:
mode:
authorhjk <hjk121@nokiamail.com>2014-05-07 16:25:04 +0200
committerhjk <hjk121@nokiamail.com>2014-05-13 11:48:30 +0200
commit6e584b5b4953b996ef07c4625adf178c59de24f7 (patch)
tree2af702c76bf5323c331154b553aacbe5523592f5 /src/plugins/coreplugin/editormanager/editormanager.cpp
parent226c1abc89888fa2f272d92c466725fd6dad65db (diff)
downloadqt-creator-6e584b5b4953b996ef07c4625adf178c59de24f7.tar.gz
DocumentModel: Make interface static
Move item model implementation to private, adjust user code. Change-Id: Ifbe94e7c7b9b1e8be1b4c531958dbd7a9413af13 Reviewed-by: Eike Ziller <eike.ziller@digia.com>
Diffstat (limited to 'src/plugins/coreplugin/editormanager/editormanager.cpp')
-rw-r--r--src/plugins/coreplugin/editormanager/editormanager.cpp85
1 files changed, 39 insertions, 46 deletions
diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp
index d1b872ae53..129054b342 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.cpp
+++ b/src/plugins/coreplugin/editormanager/editormanager.cpp
@@ -203,8 +203,6 @@ public:
QMap<QString, QVariant> m_editorStates;
Internal::OpenEditorsViewFactory *m_openEditorsFactory;
- DocumentModel *m_documentModel;
-
IDocument::ReloadSetting m_reloadSetting;
QString m_titleAddition;
@@ -244,12 +242,13 @@ EditorManagerPrivate::EditorManagerPrivate(QWidget *parent) :
m_autoSaveEnabled(true),
m_autoSaveInterval(5)
{
- m_documentModel = new DocumentModel(parent);
+ DocumentModel::init();
}
EditorManagerPrivate::~EditorManagerPrivate()
{
// clearNavigationHistory();
+ DocumentModel::destroy();
}
static EditorManager *m_instance = 0;
@@ -503,7 +502,7 @@ EditorToolBar *EditorManager::createToolBar(QWidget *parent)
void EditorManager::removeEditor(IEditor *editor)
{
bool lastOneForDocument = false;
- d->m_documentModel->removeEditor(editor, &lastOneForDocument);
+ DocumentModel::removeEditor(editor, &lastOneForDocument);
if (lastOneForDocument)
DocumentManager::removeDocument(editor->document());
ICore::removeContextObject(editor);
@@ -639,7 +638,7 @@ void EditorManager::emptyView(Core::Internal::EditorView *view)
QList<IEditor *> editors = view->editors();
foreach (IEditor *editor, editors) {
- if (d->m_documentModel->editorsForDocument(editor->document()).size() == 1) {
+ if (DocumentModel::editorsForDocument(editor->document()).size() == 1) {
// it's the only editor for that file
// so we need to keep it around (--> in the editor model)
if (currentEditor() == editor) {
@@ -720,16 +719,16 @@ void EditorManager::closeView(Core::Internal::EditorView *view)
bool EditorManager::closeAllEditors(bool askAboutModifiedEditors)
{
- d->m_documentModel->removeAllRestoredDocuments();
- if (closeDocuments(d->m_documentModel->openedDocuments(), askAboutModifiedEditors))
+ DocumentModel::removeAllRestoredDocuments();
+ if (closeDocuments(DocumentModel::openedDocuments(), askAboutModifiedEditors))
return true;
return false;
}
void EditorManager::closeAllEditorsExceptVisible()
{
- d->m_documentModel->removeAllRestoredDocuments();
- QList<IDocument *> documentsToClose = d->m_documentModel->openedDocuments();
+ DocumentModel::removeAllRestoredDocuments();
+ QList<IDocument *> documentsToClose = DocumentModel::openedDocuments();
foreach (IEditor *editor, visibleEditors())
documentsToClose.removeAll(editor->document());
closeDocuments(documentsToClose, true);
@@ -737,8 +736,8 @@ void EditorManager::closeAllEditorsExceptVisible()
void EditorManager::closeOtherEditors(IDocument *document)
{
- d->m_documentModel->removeAllRestoredDocuments();
- QList<IDocument *> documentsToClose = d->m_documentModel->openedDocuments();
+ DocumentModel::removeAllRestoredDocuments();
+ QList<IDocument *> documentsToClose = DocumentModel::openedDocuments();
documentsToClose.removeAll(document);
closeDocuments(documentsToClose, true);
}
@@ -799,8 +798,8 @@ void EditorManager::addSaveAndCloseEditorActions(QMenu *contextMenu, DocumentMod
: tr("Close Other Editors"));
d->m_closeCurrentEditorContextAction->setEnabled(entry != 0);
d->m_closeOtherEditorsContextAction->setEnabled(entry != 0);
- d->m_closeAllEditorsContextAction->setEnabled(!d->m_documentModel->documents().isEmpty());
- d->m_closeAllEditorsExceptVisibleContextAction->setEnabled(visibleDocumentsCount() < d->m_documentModel->documents().count());
+ d->m_closeAllEditorsContextAction->setEnabled(!DocumentModel::documents().isEmpty());
+ d->m_closeAllEditorsExceptVisibleContextAction->setEnabled(visibleDocumentsCount() < DocumentModel::documents().count());
contextMenu->addAction(d->m_closeCurrentEditorContextAction);
contextMenu->addAction(d->m_closeAllEditorsContextAction);
contextMenu->addAction(d->m_closeOtherEditorsContextAction);
@@ -944,7 +943,7 @@ void EditorManager::closeEditorFromContextMenu()
{
IDocument *document = d->m_contextMenuEntry ? d->m_contextMenuEntry->document : 0;
if (document)
- closeEditors(d->m_documentModel->editorsForDocument(document));
+ closeEditors(DocumentModel::editorsForDocument(document));
}
void EditorManager::closeOtherEditorsFromContextMenu()
@@ -1042,9 +1041,9 @@ void EditorManager::closeEditor(DocumentModel::Entry *entry)
if (!entry)
return;
if (entry->document)
- closeEditors(d->m_documentModel->editorsForDocument(entry->document));
+ closeEditors(DocumentModel::editorsForDocument(entry->document));
else
- d->m_documentModel->removeEntry(entry);
+ DocumentModel::removeEntry(entry);
}
bool EditorManager::closeEditors(const QList<IEditor*> &editorsToClose, bool askAboutModifiedEditors)
@@ -1070,7 +1069,7 @@ bool EditorManager::closeEditors(const QList<IEditor*> &editorsToClose, bool ask
}
}
if (editorAccepted) {
- acceptedEditors += d->m_documentModel->editorsForDocument(editor->document()).toSet();
+ acceptedEditors += DocumentModel::editorsForDocument(editor->document()).toSet();
acceptedDocuments.insert(editor->document());
}
}
@@ -1087,7 +1086,7 @@ bool EditorManager::closeEditors(const QList<IEditor*> &editorsToClose, bool ask
if (!list.isEmpty()) {
closingFailed = true;
acceptedDocuments.subtract(list.toSet());
- QSet<IEditor*> skipSet = d->m_documentModel->editorsForDocuments(list).toSet();
+ QSet<IEditor*> skipSet = DocumentModel::editorsForDocuments(list).toSet();
acceptedEditors = acceptedEditors.subtract(skipSet);
}
}
@@ -1135,12 +1134,12 @@ bool EditorManager::closeEditors(const QList<IEditor*> &editorsToClose, bool ask
if (newCurrent) {
activateEditor(view, newCurrent, flags);
} else {
- DocumentModel::Entry *entry = d->m_documentModel->firstRestoredDocument();
+ DocumentModel::Entry *entry = DocumentModel::firstRestoredDocument();
if (entry) {
activateEditorForEntry(view, entry, flags);
} else {
// no "restored" ones, so any entry left should have a document
- const QList<DocumentModel::Entry *> documents = d->m_documentModel->documents();
+ const QList<DocumentModel::Entry *> documents = DocumentModel::documents();
if (!documents.isEmpty()) {
IDocument *document = documents.last()->document;
if (document)
@@ -1173,8 +1172,7 @@ bool EditorManager::closeEditors(const QList<IEditor*> &editorsToClose, bool ask
Core::IEditor *EditorManager::pickUnusedEditor(EditorView **foundView)
{
- foreach (IEditor *editor,
- d->m_documentModel->editorsForDocuments(d->m_documentModel->openedDocuments())) {
+ foreach (IEditor *editor, DocumentModel::editorsForOpenedDocuments()) {
EditorView *view = viewForEditor(editor);
if (!view || view->currentEditor() != editor) {
if (foundView)
@@ -1206,7 +1204,7 @@ void EditorManager::activateEditorForEntry(Internal::EditorView *view, DocumentM
}
if (!openEditor(view, entry->fileName(), entry->id(), flags))
- d->m_documentModel->removeEntry(entry);
+ DocumentModel::removeEntry(entry);
}
void EditorManager::activateView(EditorView *view)
@@ -1312,7 +1310,7 @@ Core::IEditor *EditorManager::activateEditorForDocument(Core::Internal::EditorVi
Q_ASSERT(view);
IEditor *editor = view->editorForDocument(document);
if (!editor) {
- const QList<IEditor*> editors = d->m_documentModel->editorsForDocument(document);
+ const QList<IEditor*> editors = DocumentModel::editorsForDocument(document);
if (editors.isEmpty())
return 0;
editor = editors.first();
@@ -1433,7 +1431,7 @@ void EditorManager::addEditor(IEditor *editor)
ICore::addContextObject(editor);
bool isNewDocument = false;
- d->m_documentModel->addEditor(editor, &isNewDocument);
+ DocumentModel::addEditor(editor, &isNewDocument);
if (isNewDocument) {
const bool isTemporary = editor->document()->isTemporary();
const bool addWatcher = !isTemporary;
@@ -1591,7 +1589,7 @@ IEditor *EditorManager::openEditor(Core::Internal::EditorView *view, const QStri
if (newEditor)
*newEditor = false;
- const QList<IEditor *> editors = d->m_documentModel->editorsForFilePath(fn);
+ const QList<IEditor *> editors = DocumentModel::editorsForFilePath(fn);
if (!editors.isEmpty()) {
IEditor *editor = editors.first();
editor = activateEditor(view, editor, flags);
@@ -1688,7 +1686,7 @@ IEditor *EditorManager::openEditorWithContents(const Id &editorId,
if (base.contains(dollar)) {
int i = 1;
QSet<QString> docnames;
- foreach (DocumentModel::Entry *entry, d->m_documentModel->documents()) {
+ foreach (DocumentModel::Entry *entry, DocumentModel::documents()) {
QString name = entry->fileName();
if (name.isEmpty())
name = entry->displayName();
@@ -1786,7 +1784,7 @@ void EditorManager::autoSave()
{
QStringList errors;
// FIXME: the saving should be staggered
- foreach (IDocument *document, d->m_documentModel->openedDocuments()) {
+ foreach (IDocument *document, DocumentModel::openedDocuments()) {
if (!document->isModified() || !document->shouldAutoSave())
continue;
if (document->filePath().isEmpty()) // FIXME: save them to a dedicated directory
@@ -1836,7 +1834,7 @@ bool EditorManager::saveDocumentAs(IDocument *documentParam)
if (absoluteFilePath != document->filePath()) {
// close existing editors for the new file name
- IDocument *otherDocument = d->m_documentModel->documentForFilePath(absoluteFilePath);
+ IDocument *otherDocument = DocumentModel::documentForFilePath(absoluteFilePath);
if (otherDocument)
closeDocuments(QList<IDocument *>() << otherDocument, false);
}
@@ -1862,7 +1860,7 @@ void EditorManager::addDocumentToRecentFiles(IDocument *document)
{
if (document->isTemporary())
return;
- DocumentModel::Entry *entry = d->m_documentModel->entryForDocument(document);
+ DocumentModel::Entry *entry = DocumentModel::entryForDocument(document);
if (!entry)
return;
DocumentManager::addToRecentFiles(document->filePath(), entry->id());
@@ -1875,7 +1873,7 @@ void EditorManager::gotoNextDocHistory()
dialog->selectNextEditor();
} else {
EditorView *view = currentEditorView();
- dialog->setEditors(d->m_globalHistory, view, d->m_documentModel);
+ dialog->setEditors(d->m_globalHistory, view);
dialog->selectNextEditor();
showPopupOrSelectDocument();
}
@@ -1888,7 +1886,7 @@ void EditorManager::gotoPreviousDocHistory()
dialog->selectPreviousEditor();
} else {
EditorView *view = currentEditorView();
- dialog->setEditors(d->m_globalHistory, view, d->m_documentModel);
+ dialog->setEditors(d->m_globalHistory, view);
dialog->selectPreviousEditor();
showPopupOrSelectDocument();
}
@@ -2021,7 +2019,7 @@ void EditorManager::setupSaveActions(IDocument *document, QAction *saveAction, Q
void EditorManager::updateActions()
{
IDocument *curDocument = currentDocument();
- int openedCount = d->m_documentModel->documentCount();
+ const int openedCount = DocumentModel::documentCount();
if (curDocument) {
if (HostOsInfo::isMacHost())
@@ -2045,10 +2043,10 @@ void EditorManager::updateActions()
d->m_closeOtherEditorsAction->setEnabled(openedCount > 1);
d->m_closeOtherEditorsAction->setText((openedCount > 1 ? tr("Close All Except %1").arg(quotedName) : tr("Close Others")));
- d->m_closeAllEditorsExceptVisibleAction->setEnabled(visibleDocumentsCount() < d->m_documentModel->documents().count());
+ d->m_closeAllEditorsExceptVisibleAction->setEnabled(visibleDocumentsCount() < openedCount);
- d->m_gotoNextDocHistoryAction->setEnabled(d->m_documentModel->rowCount() != 0);
- d->m_gotoPreviousDocHistoryAction->setEnabled(d->m_documentModel->rowCount() != 0);
+ d->m_gotoNextDocHistoryAction->setEnabled(openedCount != 0);
+ d->m_gotoPreviousDocHistoryAction->setEnabled(openedCount != 0);
EditorView *view = currentEditorView();
d->m_goBackAction->setEnabled(view ? view->canGoBack() : false);
d->m_goForwardAction->setEnabled(view ? view->canGoForward() : false);
@@ -2121,14 +2119,9 @@ int EditorManager::visibleDocumentsCount()
return visibleDocuments.count();
}
-DocumentModel *EditorManager::documentModel()
-{
- return d->m_documentModel;
-}
-
bool EditorManager::closeDocuments(const QList<IDocument *> &document, bool askAboutModifiedEditors)
{
- return m_instance->closeEditors(d->m_documentModel->editorsForDocuments(document), askAboutModifiedEditors);
+ return m_instance->closeEditors(DocumentModel::editorsForDocuments(document), askAboutModifiedEditors);
}
void EditorManager::addCurrentPositionToNavigationHistory(IEditor *editor, const QByteArray &saveState)
@@ -2200,10 +2193,10 @@ QByteArray EditorManager::saveState()
stream << QByteArray("EditorManagerV4");
// TODO: In case of split views it's not possible to restore these for all correctly with this
- QList<IDocument *> documents = d->m_documentModel->openedDocuments();
+ QList<IDocument *> documents = DocumentModel::openedDocuments();
foreach (IDocument *document, documents) {
if (!document->filePath().isEmpty() && !document->isTemporary()) {
- IEditor *editor = d->m_documentModel->editorsForDocument(document).first();
+ IEditor *editor = DocumentModel::editorsForDocument(document).first();
QByteArray state = editor->saveState();
if (!state.isEmpty())
d->m_editorStates.insert(document->filePath(), QVariant(state));
@@ -2212,7 +2205,7 @@ QByteArray EditorManager::saveState()
stream << d->m_editorStates;
- QList<DocumentModel::Entry *> entries = d->m_documentModel->documents();
+ QList<DocumentModel::Entry *> entries = DocumentModel::documents();
int entriesCount = 0;
foreach (DocumentModel::Entry *entry, entries) {
// The editor may be 0 if it was not loaded yet: In that case it is not temporary
@@ -2270,7 +2263,7 @@ bool EditorManager::restoreState(const QByteArray &state)
if (rfi.exists() && fi.lastModified() < rfi.lastModified())
openEditor(fileName, id, DoNotMakeVisible);
else
- d->m_documentModel->addRestoredDocument(fileName, displayName, id);
+ DocumentModel::addRestoredDocument(fileName, displayName, id);
}
}