mirror of
https://github.com/nextcloud/desktop.git
synced 2024-11-21 20:45:51 +03:00
Display the Nextcloud assistant icon in the main window.
- If NC assistant is enabled in the server, display the icon to open it instead of Talk. Talk is then displayed in the list with the other apps. - The direct link is only available in the assistant app >= 1.0.9. Signed-off-by: Camila Ayres <hello@camilasan.com>
This commit is contained in:
parent
d5b32daa20
commit
b7bf6083d9
7 changed files with 60 additions and 11 deletions
|
@ -621,21 +621,21 @@ ApplicationWindow {
|
|||
}
|
||||
|
||||
HeaderButton {
|
||||
id: trayWindowTalkButton
|
||||
|
||||
visible: UserModel.currentUser && UserModel.currentUser.serverHasTalk
|
||||
icon.source: "image://svgimage-custom-color/talk-app.svg" + "/" + Style.currentUserHeaderTextColor
|
||||
id: trayWindowFeaturedAppButton
|
||||
visible: UserModel.currentUser.isNcAssistantEnabled || UserModel.currentUser.serverHasTalk
|
||||
icon.source: UserModel.currentUser.isNcAssistantEnabled
|
||||
? "image:///client/theme/white/nc-assistant-app.svg" + "/" + Style.currentUserHeaderTextColor
|
||||
: "image:///client/theme/white/talk-app.svg" + "/" + Style.currentUserHeaderTextColor
|
||||
icon.color: Style.currentUserHeaderTextColor
|
||||
onClicked: UserModel.openCurrentAccountTalk()
|
||||
onClicked: UserModel.currentUser.isNcAssistantEnabled ? UserModel.openCurrentAccountNcAssistant() : UserModel.openCurrentAccountTalk()
|
||||
|
||||
Accessible.role: Accessible.Button
|
||||
Accessible.name: qsTr("Open Nextcloud Talk in browser")
|
||||
Accessible.onPressAction: trayWindowTalkButton.clicked()
|
||||
Accessible.name: UserModel.currentUser.isNcAssistantEnabled ? qsTr("Open Nextcloud Assistant in browser") : qsTr("Open Nextcloud Talk in browser")
|
||||
Accessible.onPressAction: trayWindowFeaturedAppButton.clicked()
|
||||
|
||||
Layout.alignment: Qt.AlignRight
|
||||
Layout.preferredWidth: Style.trayWindowHeaderHeight
|
||||
Layout.preferredHeight: Style.trayWindowHeaderHeight
|
||||
|
||||
}
|
||||
|
||||
HeaderButton {
|
||||
|
|
|
@ -471,6 +471,7 @@ void User::slotRefreshNotifications()
|
|||
void User::slotRebuildNavigationAppList()
|
||||
{
|
||||
emit serverHasTalkChanged();
|
||||
emit ncAssistantAvailabityChanged();
|
||||
// Rebuild App list
|
||||
UserAppsModel::instance()->buildAppList();
|
||||
}
|
||||
|
@ -1046,6 +1047,11 @@ bool User::hasActivities() const
|
|||
return _account->account()->capabilities().hasActivities();
|
||||
}
|
||||
|
||||
bool User::isNcAssistantEnabled() const
|
||||
{
|
||||
return _account->account()->capabilities().ncAssistantEnabled();
|
||||
}
|
||||
|
||||
QColor User::headerColor() const
|
||||
{
|
||||
return _account->account()->headerColor();
|
||||
|
@ -1364,6 +1370,20 @@ void UserModel::openCurrentAccountFolderFromTrayInfo(const QString &fullRemotePa
|
|||
_users[_currentUserId]->openFolderLocallyOrInBrowser(fullRemotePath);
|
||||
}
|
||||
|
||||
void UserModel::openCurrentAccountNcAssistant()
|
||||
{
|
||||
if (!currentUser()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (currentUser()->isNcAssistantEnabled()) {
|
||||
QDesktopServices::openUrl(QUrl(_users[_currentUserId]->server(false).append("/apps/assistant/")));
|
||||
} else {
|
||||
qCWarning(lcActivity) << "The Nextcloud Assistant app is not enabled on" << currentUser()->server();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void UserModel::setCurrentUserId(const int id)
|
||||
{
|
||||
Q_ASSERT(id < _users.size());
|
||||
|
@ -1630,10 +1650,11 @@ void UserAppsModel::buildAppList()
|
|||
|
||||
if (UserModel::instance()->appList().count() > 0) {
|
||||
const auto talkApp = UserModel::instance()->currentUser()->talkApp();
|
||||
foreach (AccountApp *app, UserModel::instance()->appList()) {
|
||||
for (auto &app : UserModel::instance()->appList()) {
|
||||
// Filter out Talk because we have a dedicated button for it
|
||||
if (talkApp && app->id() == talkApp->id())
|
||||
if (talkApp && app->id() == talkApp->id() && !UserModel::instance()->currentUser()->isNcAssistantEnabled()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
beginInsertRows(QModelIndex(), rowCount(), rowCount());
|
||||
_apps << app;
|
||||
|
|
|
@ -57,6 +57,7 @@ class User : public QObject
|
|||
Q_PROPERTY(bool desktopNotificationsAllowed READ isDesktopNotificationsAllowed NOTIFY desktopNotificationsAllowedChanged)
|
||||
Q_PROPERTY(bool hasLocalFolder READ hasLocalFolder NOTIFY hasLocalFolderChanged)
|
||||
Q_PROPERTY(bool serverHasTalk READ serverHasTalk NOTIFY serverHasTalkChanged)
|
||||
Q_PROPERTY(bool isNcAssistantEnabled READ isNcAssistantEnabled NOTIFY ncAssistantAvailabityChanged)
|
||||
Q_PROPERTY(QString avatar READ avatarUrl NOTIFY avatarChanged)
|
||||
Q_PROPERTY(bool isConnected READ isConnected NOTIFY accountStateChanged)
|
||||
Q_PROPERTY(UnifiedSearchResultsListModel* unifiedSearchResultsListModel READ getUnifiedSearchResultsListModel CONSTANT)
|
||||
|
@ -83,6 +84,7 @@ public:
|
|||
[[nodiscard]] bool serverHasUserStatus() const;
|
||||
[[nodiscard]] AccountApp *talkApp() const;
|
||||
[[nodiscard]] bool hasActivities() const;
|
||||
[[nodiscard]] bool isNcAssistantEnabled() const;
|
||||
[[nodiscard]] QColor accentColor() const;
|
||||
[[nodiscard]] QColor headerColor() const;
|
||||
[[nodiscard]] QColor headerTextColor() const;
|
||||
|
@ -113,6 +115,7 @@ signals:
|
|||
void accentColorChanged();
|
||||
void sendReplyMessage(const int activityIndex, const QString &conversationToken, const QString &message, const QString &replyTo);
|
||||
void groupFoldersChanged();
|
||||
void ncAssistantAvailabityChanged();
|
||||
|
||||
public slots:
|
||||
void slotItemCompleted(const QString &folder, const OCC::SyncFileItemPtr &item);
|
||||
|
@ -251,6 +254,7 @@ public slots:
|
|||
void openCurrentAccountTalk();
|
||||
void openCurrentAccountServer();
|
||||
void openCurrentAccountFolderFromTrayInfo(const QString &fullRemotePath);
|
||||
void openCurrentAccountNcAssistant();
|
||||
void setCurrentUserId(const int id);
|
||||
void login(const int id);
|
||||
void logout(const int id);
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
#include <QVariantMap>
|
||||
#include <QLoggingCategory>
|
||||
#include <QUrl>
|
||||
|
||||
#include <QVersionNumber>
|
||||
#include <QDebug>
|
||||
|
||||
namespace OCC {
|
||||
|
@ -277,6 +277,25 @@ bool Capabilities::userStatusSupportsEmoji() const
|
|||
return userStatusMap.value("supports_emoji", false).toBool();
|
||||
}
|
||||
|
||||
bool Capabilities::ncAssistantEnabled() const
|
||||
{
|
||||
if (_capabilities.contains("assistant")
|
||||
&& _capabilities["assistant"].toMap()["enabled"].toBool()) {
|
||||
|
||||
const auto minimumVersion = QVersionNumber(1, 0, 9);
|
||||
const auto versionString = _capabilities["assistant"].toMap()["version"].toString();
|
||||
|
||||
if (const auto currentVersion = QVersionNumber::fromString(versionString);
|
||||
QVersionNumber::compare(currentVersion, minimumVersion) >= 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
qCInfo(lcServerCapabilities) << "The NC Assistant app only provides a direct link starting at 1.0.9.";
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
QColor Capabilities::serverColor() const
|
||||
{
|
||||
const auto themingMap = serverThemingMap();
|
||||
|
|
|
@ -69,6 +69,7 @@ public:
|
|||
[[nodiscard]] bool filesLockTypeAvailable() const;
|
||||
[[nodiscard]] bool userStatus() const;
|
||||
[[nodiscard]] bool userStatusSupportsEmoji() const;
|
||||
[[nodiscard]] bool ncAssistantEnabled() const;
|
||||
[[nodiscard]] QColor serverColor() const;
|
||||
[[nodiscard]] QColor serverTextColor() const;
|
||||
|
||||
|
|
|
@ -189,6 +189,7 @@
|
|||
<file>theme/white/folder.svg</file>
|
||||
<file>theme/white/more-apps.svg</file>
|
||||
<file>theme/white/talk-app.svg</file>
|
||||
<file>theme/white/nc-assistant-app.svg</file>
|
||||
<file>theme/white/caret-down.svg</file>
|
||||
<file>theme/black/caret-down.svg</file>
|
||||
<file>theme/white/user.svg</file>
|
||||
|
|
3
theme/white/nc-assistant-app.svg
Normal file
3
theme/white/nc-assistant-app.svg
Normal file
|
@ -0,0 +1,3 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#fff">
|
||||
<path d="M19,1L17.74,3.75L15,5L17.74,6.26L19,9L20.25,6.26L23,5L20.25,3.75M9,4L6.5,9.5L1,12L6.5,14.5L9,20L11.5,14.5L17,12L11.5,9.5M19,15L17.74,17.74L15,19L17.74,20.25L19,23L20.25,20.25L23,19L20.25,17.74" />
|
||||
</svg>
|
After Width: | Height: | Size: 290 B |
Loading…
Reference in a new issue