Commit 00885ca9 authored by Eike Ziller's avatar Eike Ziller Committed by David Schulz
Browse files

Remove code duplication in open editors window



Change-Id: I9007e1171fa6d519df8cf62978bbd2936d901876
Reviewed-by: default avatarDavid Schulz <david.schulz@digia.com>
parent 111392f6
......@@ -196,63 +196,12 @@ void OpenEditorsWindow::centerOnItem(int selectedIndex)
void OpenEditorsWindow::setEditors(EditorView *mainView, EditorView *view, OpenEditorsModel *model)
{
m_editorList->clear();
bool first = true;
QSet<IDocument*> documentsDone;
foreach (const EditLocation &hi, view->editorHistory()) {
if (hi.document.isNull() || documentsDone.contains(hi.document))
continue;
QString title = model->displayNameForDocument(hi.document);
QTC_ASSERT(!title.isEmpty(), continue);
documentsDone.insert(hi.document.data());
QTreeWidgetItem *item = new QTreeWidgetItem();
if (hi.document->isModified())
title += tr("*");
item->setIcon(0, !hi.document->fileName().isEmpty() && hi.document->isFileReadOnly()
? model->lockedIcon() : m_emptyIcon);
item->setText(0, title);
item->setToolTip(0, hi.document->fileName());
item->setData(0, Qt::UserRole, QVariant::fromValue(hi.document.data()));
item->setData(0, Qt::UserRole+1, QVariant::fromValue(view));
item->setTextAlignment(0, Qt::AlignLeft);
m_editorList->addTopLevelItem(item);
if (first){
m_editorList->setCurrentItem(item);
first = false;
}
}
addHistoryItems(view->editorHistory(), view, model, documentsDone);
// add missing editors from the main view
if (mainView != view) {
foreach (const EditLocation &hi, mainView->editorHistory()) {
if (hi.document.isNull() || documentsDone.contains(hi.document))
continue;
documentsDone.insert(hi.document.data());
QTreeWidgetItem *item = new QTreeWidgetItem();
QString title = model->displayNameForDocument(hi.document);
if (hi.document->isModified())
title += tr("*");
item->setIcon(0, !hi.document->fileName().isEmpty() && hi.document->isFileReadOnly()
? model->lockedIcon() : m_emptyIcon);
item->setText(0, title);
item->setToolTip(0, hi.document->fileName());
item->setData(0, Qt::UserRole, QVariant::fromValue(hi.document.data()));
item->setData(0, Qt::UserRole+1, QVariant::fromValue(view));
item->setData(0, Qt::UserRole+2, QVariant::fromValue(hi.id));
item->setTextAlignment(0, Qt::AlignLeft);
m_editorList->addTopLevelItem(item);
if (first){
m_editorList->setCurrentItem(item);
first = false;
}
}
}
if (mainView != view)
addHistoryItems(mainView->editorHistory(), view, model, documentsDone);
// add purely restored editors which are not initialised yet
foreach (const OpenEditorsModel::Entry &entry, model->entries()) {
......@@ -300,3 +249,31 @@ void OpenEditorsWindow::ensureCurrentVisible()
m_editorList->scrollTo(m_editorList->currentIndex(), QAbstractItemView::PositionAtCenter);
}
void OpenEditorsWindow::addHistoryItems(const QList<EditLocation> &history, EditorView *view,
OpenEditorsModel *model, QSet<IDocument *> &documentsDone)
{
foreach (const EditLocation &hi, history) {
if (hi.document.isNull() || documentsDone.contains(hi.document))
continue;
documentsDone.insert(hi.document.data());
QString title = model->displayNameForDocument(hi.document);
QTC_ASSERT(!title.isEmpty(), continue);
QTreeWidgetItem *item = new QTreeWidgetItem();
if (hi.document->isModified())
title += tr("*");
item->setIcon(0, !hi.document->fileName().isEmpty() && hi.document->isFileReadOnly()
? model->lockedIcon() : m_emptyIcon);
item->setText(0, title);
item->setToolTip(0, hi.document->fileName());
item->setData(0, Qt::UserRole, QVariant::fromValue(hi.document.data()));
item->setData(0, Qt::UserRole+1, QVariant::fromValue(view));
item->setTextAlignment(0, Qt::AlignLeft);
m_editorList->addTopLevelItem(item);
if (m_editorList->topLevelItemCount() == 1){
m_editorList->setCurrentItem(item);
}
}
}
......@@ -30,8 +30,11 @@
#ifndef OPENEDITORSWINDOW_H
#define OPENEDITORSWINDOW_H
#include "editorview.h"
#include <QFrame>
#include <QIcon>
#include <QList>
QT_BEGIN_NAMESPACE
class QTreeWidgetItem;
......@@ -40,13 +43,13 @@ QT_END_NAMESPACE
namespace Core {
class IDocument;
class IEditor;
class OpenEditorsModel;
namespace Internal {
class EditorHistoryItem;
class EditorView;
class OpenEditorsWindow : public QFrame
{
......@@ -74,6 +77,8 @@ private slots:
private:
static void updateItem(QTreeWidgetItem *item, IEditor *editor);
void addHistoryItems(const QList<EditLocation> &history, EditorView *view,
OpenEditorsModel *model, QSet<IDocument*> &documentsDone);
void ensureCurrentVisible();
bool isCentering();
void centerOnItem(int selectedIndex);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment