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

Function ensureWritable

kdevplatform/util/shellutils.cpp:159–200  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

157}
158
159bool ensureWritable(const QList<QUrl>& urls)
160{
161 QStringList notWritable;
162 for (const QUrl& url : urls) {
163 if (url.isLocalFile()) {
164 QFile file(url.toLocalFile());
165 if (file.exists() && !(file.permissions() & QFileDevice::WriteOwner) &&
166 !(file.permissions() & QFileDevice::WriteGroup)) {
167 notWritable << url.toLocalFile();
168 }
169 }
170 }
171
172 if (!notWritable.isEmpty()) {
173 int answer = KMessageBox::questionTwoActionsCancel(
174 ICore::self()->uiController()->activeMainWindow(),
175 i18n("You don't have write permissions for the following files; add write permissions for owner before "
176 "saving?")
177 + QLatin1String("\n\n") + notWritable.join(QLatin1Char('\n')),
178 i18nc("@title:window", "Some Files are Write-Protected"),
179 KGuiItem(i18nc("@action:button", "Set Write Permissions"), QStringLiteral("dialog-ok")),
180 KGuiItem(i18nc("@action:button", "Ignore"), QStringLiteral("dialog-cancel")), KStandardGuiItem::cancel());
181 if (answer == KMessageBox::PrimaryAction) {
182 bool success = true;
183 for (const QString& filename : std::as_const(notWritable)) {
184 QFile file(filename);
185 QFileDevice::Permissions permissions = file.permissions();
186 permissions |= QFileDevice::WriteOwner;
187 success &= file.setPermissions(permissions);
188 }
189
190 if (!success) {
191 KMessageBox::error(ICore::self()->uiController()->activeMainWindow(),
192 i18n("Failed adding write permissions for some files."),
193 i18nc("@title:window", "Failed Setting Permissions"));
194 return false;
195 }
196 }
197 return answer != KMessageBox::Cancel;
198 }
199 return true;
200}
201
202bool restoreAndAutoSaveGeometry(QWidget& widget, const QString& configGroupName, const QString& configSubgroupName)
203{

Callers 2

saveMethod · 0.85
applyAllChangesMethod · 0.85

Calls 7

isLocalFileMethod · 0.80
toLocalFileMethod · 0.80
existsMethod · 0.80
uiControllerMethod · 0.80
joinMethod · 0.80
isEmptyMethod · 0.45
activeMainWindowMethod · 0.45

Tested by

no test coverage detected