MCPcopy Create free account
hub / github.com/KDE/kdevelop / loadToAreaPrivate

Function loadToAreaPrivate

kdevplatform/shell/workingsets/workingset.cpp:107–211  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

105}
106
107QSplitter* loadToAreaPrivate(Sublime::Area *area, Sublime::AreaIndex *areaIndex, const KConfigGroup &setGroup, QMultiMap<QString, Sublime::View*> &recycle)
108{
109 Q_ASSERT(!areaIndex->isSplit());
110
111 QSplitter *parentSplitter = nullptr;
112
113 if (setGroup.hasKey("Orientation")) {
114 QStringList subgroups = setGroup.groupList();
115 if (!subgroups.contains(QStringLiteral("0"))) {
116 if (subgroups.contains(QStringLiteral("1"))) {
117 parentSplitter = loadToAreaPrivate(area, areaIndex, KConfigGroup(&setGroup, QStringLiteral("1")), recycle);
118 }
119 } else if (!subgroups.contains(QStringLiteral("1"))) {
120 parentSplitter = loadToAreaPrivate(area, areaIndex, KConfigGroup(&setGroup, QStringLiteral("0")), recycle);
121 } else {
122 areaIndex->split(setGroup.readEntry("Orientation", "Horizontal") == QLatin1String("Vertical") ? Qt::Vertical : Qt::Horizontal);
123
124 parentSplitter = loadToAreaPrivate(area, areaIndex->first(), KConfigGroup(&setGroup, QStringLiteral("0")), recycle);
125 if (!parentSplitter) {
126 areaIndex->unsplit(areaIndex->first());
127 parentSplitter = loadToAreaPrivate(area, areaIndex, KConfigGroup(&setGroup, QStringLiteral("1")), recycle);
128 } else if (auto *splitter = loadToAreaPrivate(area, areaIndex->second(), KConfigGroup(&setGroup, QStringLiteral("1")), recycle)) {
129 splitter->setSizes(setGroup.readEntry("Sizes", QList<int>({1, 1})));
130 parentSplitter = qobject_cast<QSplitter*>(splitter->parent());
131 } else {
132 areaIndex->unsplit(areaIndex->second());
133 emit area->viewAdded(areaIndex, nullptr);
134 }
135 }
136 } else {
137 //Load all documents from the workingset into this areaIndex
138 int viewCount = setGroup.readEntry("View Count", 0);
139 QVector<Sublime::View*> createdViews(viewCount, nullptr);
140 for (int i = 0; i < viewCount; ++i) {
141 QString specifier = setGroup.readEntry(QStringLiteral("View %1").arg(i), QString());
142 if (specifier.isEmpty()) {
143 continue;
144 }
145
146 Sublime::View* previousView = areaIndex->views().empty() ? nullptr : areaIndex->views().back();
147
148 QMultiMap<QString, Sublime::View*>::iterator it = recycle.find(specifier);
149 if (it != recycle.end()) {
150 area->addView(*it, areaIndex, previousView);
151 createdViews[i] = *it;
152 recycle.erase(it);
153 continue;
154 }
155 auto url = QUrl::fromUserInput(specifier);
156 if (url.isLocalFile() && !QFileInfo::exists(url.path())) {
157 // This code runs both on KDevelop start and when active area changes from Code to Debug or vice versa.
158 // If a document is already open, it can be opened again, even if its file does not exist on disk
159 // (an untitled document, opened nonexistent file or a file deleted from disk externally after opening).
160 // documentForUrl() returns a valid pointer for an already open document URL.
161 if (!Core::self()->documentControllerInternal()->documentForUrl(url)) {
162 qCWarning(WORKINGSET) << "Unable to find file" << specifier;
163 continue;
164 }

Callers 1

loadToAreaMethod · 0.85

Calls 15

readEntryMethod · 0.80
unsplitMethod · 0.80
secondMethod · 0.80
emptyMethod · 0.80
isLocalFileMethod · 0.80
documentForUrlMethod · 0.80
existsMethod · 0.80
textViewMethod · 0.80
KConfigGroupClass · 0.50
QStringClass · 0.50
invalidFunction · 0.50

Tested by

no test coverage detected