|
|
@@ -759,68 +759,61 @@ void ownCloudGui::fetchNavigationApps(AccountStatePtr account, QMenu *accountMen
|
|
|
job->getNavigationApps();
|
|
|
}
|
|
|
|
|
|
-void ownCloudGui::buildNavigationAppsMenu(QMenu *accountMenu){
|
|
|
- QMapIterator<AccountStatePtr, QJsonArray> it(_navApps);
|
|
|
- while(it.hasNext()){
|
|
|
-
|
|
|
- //qDebug() << it.key() << it.value();
|
|
|
-
|
|
|
- auto account = it.key();
|
|
|
- auto navLinks = it.value();
|
|
|
-
|
|
|
- if(navLinks.size() > 0){
|
|
|
-
|
|
|
- // when there is only one account add the nav links above the settings
|
|
|
- QAction *actionBefore = _actionSettings;
|
|
|
-
|
|
|
- // when there is more than one account add the nav links above pause/unpause folder or logout action
|
|
|
- if(AccountManager::instance()->accounts().size() > 1){
|
|
|
- foreach(QAction *action, accountMenu->actions()){
|
|
|
-
|
|
|
- // pause/unpause folder and logout actions have propertyAccountC
|
|
|
- if(auto actionAccount = qvariant_cast<AccountStatePtr>(action->property(propertyAccountC))){
|
|
|
- if(actionAccount == account){
|
|
|
- actionBefore = action;
|
|
|
- break;
|
|
|
- }
|
|
|
+void ownCloudGui::buildNavigationAppsMenu(AccountStatePtr account, QMenu *accountMenu){
|
|
|
+ auto navLinks = _navApps.value(account);
|
|
|
+ if(navLinks.size() > 0){
|
|
|
+
|
|
|
+ // when there is only one account add the nav links above the settings
|
|
|
+ QAction *actionBefore = _actionSettings;
|
|
|
+
|
|
|
+ // when there is more than one account add the nav links above pause/unpause folder or logout action
|
|
|
+ if(AccountManager::instance()->accounts().size() > 1){
|
|
|
+ foreach(QAction *action, accountMenu->actions()){
|
|
|
+
|
|
|
+ // pause/unpause folder and logout actions have propertyAccountC
|
|
|
+ if(auto actionAccount = qvariant_cast<AccountStatePtr>(action->property(propertyAccountC))){
|
|
|
+ if(actionAccount == account){
|
|
|
+ actionBefore = action;
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- // Create submenu with links
|
|
|
- QMenu *navLinksMenu = new QMenu(tr("Apps"));
|
|
|
- accountMenu->insertSeparator(actionBefore);
|
|
|
- accountMenu->insertMenu(actionBefore, navLinksMenu);
|
|
|
- foreach (const QJsonValue &value, navLinks) {
|
|
|
- auto navLink = value.toObject();
|
|
|
- QAction *action = new QAction(navLink.value("name").toString(), this);
|
|
|
- QUrl href(navLink.value("href").toString());
|
|
|
- connect(action, &QAction::triggered, this, [href] { QDesktopServices::openUrl(href); });
|
|
|
- navLinksMenu->addAction(action);
|
|
|
- }
|
|
|
- accountMenu->insertSeparator(actionBefore);
|
|
|
}
|
|
|
|
|
|
- it.next();
|
|
|
+ // Create submenu with links
|
|
|
+ QMenu *navLinksMenu = new QMenu(tr("Apps"));
|
|
|
+ accountMenu->insertSeparator(actionBefore);
|
|
|
+ accountMenu->insertMenu(actionBefore, navLinksMenu);
|
|
|
+ foreach (const QJsonValue &value, navLinks) {
|
|
|
+ auto navLink = value.toObject();
|
|
|
+ QAction *action = new QAction(navLink.value("name").toString(), this);
|
|
|
+ QUrl href(navLink.value("href").toString());
|
|
|
+ connect(action, &QAction::triggered, this, [href] { QDesktopServices::openUrl(href); });
|
|
|
+ navLinksMenu->addAction(action);
|
|
|
+ }
|
|
|
+ accountMenu->insertSeparator(actionBefore);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
void ownCloudGui::slotNavigationAppsFetched(const QJsonDocument &reply, int statusCode)
|
|
|
{
|
|
|
+ auto account = qvariant_cast<AccountStatePtr>(sender()->property(propertyAccountC));
|
|
|
+ auto accountMenu = qvariant_cast<QMenu*>(sender()->property(propertyMenuC));
|
|
|
+
|
|
|
if (statusCode == 304) {
|
|
|
qCWarning(lcApplication) << "Status code " << statusCode << " Not Modified - No new navigation apps.";
|
|
|
} else {
|
|
|
if(!reply.isEmpty()){
|
|
|
auto element = reply.object().value("ocs").toObject().value("data");
|
|
|
auto navLinks = element.toArray();
|
|
|
- if(auto account = qvariant_cast<AccountStatePtr>(sender()->property(propertyAccountC))){
|
|
|
+ if(account){
|
|
|
_navApps.insert(account, navLinks);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if(QMenu *accountMenu = qvariant_cast<QMenu*>(sender()->property(propertyMenuC)))
|
|
|
- buildNavigationAppsMenu(accountMenu);
|
|
|
+ if(accountMenu)
|
|
|
+ buildNavigationAppsMenu(account, accountMenu);
|
|
|
}
|
|
|
|
|
|
void ownCloudGui::slotOcsError(int statusCode, const QString &message)
|