Merge pull request #2058 from nextcloud/sbeyer-fix-nosync-crash

Fix/improve use case without local folder
This commit is contained in:
Kevin Ottens 2020-06-09 18:33:54 +02:00 committed by GitHub
commit 6420725fb9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 15 additions and 8 deletions

View file

@ -96,8 +96,7 @@ QVariant ActivityListModel::data(const QModelIndex &index, int role) const
relPath.prepend(folder->remotePath());
list = FolderMan::instance()->findFileInLocalFolders(relPath, ast->account());
if (list.count() > 0) {
QString path = "file:///" + QString(list.at(0));
return QUrl(path);
return QUrl::fromLocalFile(list.at(0));
}
// File does not exist anymore? Let's try to open its path
if (QFileInfo(relPath).exists()) {

View file

@ -417,12 +417,11 @@ ActivityListModel *User::getActivityModel()
void User::openLocalFolder()
{
#ifdef Q_OS_WIN
QString path = "file:///" + this->getFolder()->path();
#else
QString path = "file://" + this->getFolder()->path();
#endif
QDesktopServices::openUrl(path);
const auto folder = getFolder();
if (folder != nullptr) {
QDesktopServices::openUrl(QUrl::fromLocalFile(folder->path()));
}
}
void User::login() const
@ -764,6 +763,11 @@ bool UserModel::currentUserHasActivities()
return _users[currentUserIndex()]->hasActivities();
}
bool UserModel::currentUserHasLocalFolder()
{
return _users[currentUserIndex()]->getFolder() != nullptr;
}
void UserModel::fetchCurrentActivityModel()
{
_users[currentUserId()]->slotRefresh();

View file

@ -101,6 +101,7 @@ public:
Q_INVOKABLE QString currentUserName();
Q_INVOKABLE QString currentUserServer();
Q_INVOKABLE bool currentUserHasActivities();
Q_INVOKABLE bool currentUserHasLocalFolder();
Q_INVOKABLE bool currentServerHasTalk();
Q_INVOKABLE int currentUserId();
Q_INVOKABLE bool isUserConnected(const int &id);

View file

@ -30,6 +30,7 @@ Window {
currentAccountAvatar.source = "image://avatars/currentUser"
currentAccountUser.text = userModelBackend.currentUserName();
currentAccountServer.text = userModelBackend.currentUserServer();
openLocalFolderButton.visible = userModelBackend.currentUserHasLocalFolder();
trayWindowTalkButton.visible = userModelBackend.currentServerHasTalk() ? true : false;
currentAccountStateIndicator.source = ""
currentAccountStateIndicator.source = userModelBackend.isUserConnected(userModelBackend.currentUserId()) ? "qrc:///client/theme/colored/state-ok.svg" : "qrc:///client/theme/colored/state-offline.svg"
@ -52,6 +53,7 @@ Window {
}
onNewUserSelected: {
accountMenu.close();
openLocalFolderButton.visible = userModelBackend.currentUserHasLocalFolder();
trayWindowTalkButton.visible = userModelBackend.currentServerHasTalk() ? true : false;
}
}
@ -360,6 +362,7 @@ Window {
Layout.preferredWidth: Style.trayWindowHeaderHeight
Layout.preferredHeight: Style.trayWindowHeaderHeight
flat: true
visible: userModelBackend.currentUserHasLocalFolder()
icon.source: "qrc:///client/theme/white/folder.svg"
icon.width: Style.headerButtonIconSize