|
31 | 31 |
|
32 | 32 | // NSUserDefaults entries |
33 | 33 | constexpr auto enabledAccountsSettingsKey = "enabledAccounts"; |
| 34 | +constexpr auto customFolderNamesSettingsKey = "customFolderNames"; |
34 | 35 |
|
35 | 36 | float gbFromBytesWithOneDecimal(const unsigned long long bytes) |
36 | 37 | { |
@@ -182,6 +183,48 @@ void signalFileProviderDomain(const QString &userIdAtHost) const |
182 | 183 | return _fileProviderDomainSyncStatuses.value(userIdAtHost); |
183 | 184 | } |
184 | 185 |
|
| 186 | + [[nodiscard]] QString customFolderNameForAccount(const QString &userIdAtHost) const |
| 187 | + { |
| 188 | + NSDictionary<NSString *, NSString *> *const customFolderNames = nsCustomFolderNames(); |
| 189 | + |
| 190 | + if (customFolderNames == nil) { |
| 191 | + return QString(); |
| 192 | + } |
| 193 | + |
| 194 | + NSString *const folderName = [customFolderNames objectForKey:userIdAtHost.toNSString()]; |
| 195 | + |
| 196 | + if (folderName == nil) { |
| 197 | + return QString(); |
| 198 | + } |
| 199 | + |
| 200 | + return QString::fromNSString(folderName); |
| 201 | + } |
| 202 | + |
| 203 | + void setCustomFolderNameForAccount(const QString &userIdAtHost, const QString &folderName) |
| 204 | + { |
| 205 | + qCInfo(lcFileProviderSettingsController) << "Setting custom folder name for account" |
| 206 | + << userIdAtHost |
| 207 | + << "to" |
| 208 | + << folderName; |
| 209 | + |
| 210 | + NSDictionary<NSString *, NSString *> *customFolderNames = nsCustomFolderNames(); |
| 211 | + |
| 212 | + if (customFolderNames == nil) { |
| 213 | + customFolderNames = @{}; |
| 214 | + } |
| 215 | + |
| 216 | + NSMutableDictionary<NSString *, NSString *> *const mutableCustomFolderNames = customFolderNames.mutableCopy; |
| 217 | + |
| 218 | + if (folderName.isEmpty()) { |
| 219 | + [mutableCustomFolderNames removeObjectForKey:userIdAtHost.toNSString()]; |
| 220 | + } else { |
| 221 | + [mutableCustomFolderNames setObject:folderName.toNSString() forKey:userIdAtHost.toNSString()]; |
| 222 | + } |
| 223 | + |
| 224 | + [_userDefaults setObject:mutableCustomFolderNames forKey:_customFolderNamesKey]; |
| 225 | + [_userDefaults synchronize]; |
| 226 | + } |
| 227 | + |
185 | 228 | public slots: |
186 | 229 | // NOTE: This method will release the provided args so make sure to retain them beforehand |
187 | 230 | void enumerateMaterialisedFilesForDomainManager(NSFileProviderManager * const managerForDomain, |
@@ -253,6 +296,11 @@ void updateDomainSyncStatuses() |
253 | 296 | { |
254 | 297 | return (NSArray<NSString *> *)[_userDefaults objectForKey:_accountsKey]; |
255 | 298 | } |
| 299 | + |
| 300 | + [[nodiscard]] NSDictionary<NSString *, NSString *> *nsCustomFolderNames() const |
| 301 | + { |
| 302 | + return (NSDictionary<NSString *, NSString *> *)[_userDefaults objectForKey:_customFolderNamesKey]; |
| 303 | + } |
256 | 304 |
|
257 | 305 | void fetchMaterialisedFilesStorageUsage() |
258 | 306 | { |
@@ -313,6 +361,7 @@ void initialCheck() |
313 | 361 | FileProviderSettingsController *q = nullptr; |
314 | 362 | NSUserDefaults *_userDefaults = NSUserDefaults.standardUserDefaults; |
315 | 363 | NSString *_accountsKey = [NSString stringWithUTF8String:enabledAccountsSettingsKey]; |
| 364 | + NSString *_customFolderNamesKey = [NSString stringWithUTF8String:customFolderNamesSettingsKey]; |
316 | 365 | QHash<QString, QVector<FileProviderItemMetadata>> _materialisedFiles; |
317 | 366 | QHash<QString, unsigned long long> _storageUsage; |
318 | 367 | QHash<QString, FileProviderDomainSyncStatus*> _fileProviderDomainSyncStatuses; |
@@ -514,6 +563,17 @@ void initialCheck() |
514 | 563 | return d->domainSyncStatusForAccount(userIdAtHost); |
515 | 564 | } |
516 | 565 |
|
| 566 | +QString FileProviderSettingsController::customFolderNameForAccount(const QString &userIdAtHost) const |
| 567 | +{ |
| 568 | + return d->customFolderNameForAccount(userIdAtHost); |
| 569 | +} |
| 570 | + |
| 571 | +void FileProviderSettingsController::setCustomFolderNameForAccount(const QString &userIdAtHost, const QString &folderName) |
| 572 | +{ |
| 573 | + d->setCustomFolderNameForAccount(userIdAtHost, folderName); |
| 574 | + emit customFolderNameForAccountChanged(userIdAtHost); |
| 575 | +} |
| 576 | + |
517 | 577 | void FileProviderSettingsController::resetVfsForAccount(const QString &userIdAtHost) |
518 | 578 | { |
519 | 579 | qCInfo(lcFileProviderSettingsController) << "Resetting virtual files environment for account" << userIdAtHost; |
|
0 commit comments