Commit graph

82 commits

Author SHA1 Message Date
Claudio Cambra
fb4bb95b91
Perform inactive qquickwindow garbage collection when generating new file detail dialogs, raise existing dialog instead of always deleting
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2022-10-31 18:06:08 +01:00
Claudio Cambra
685a0362fc
Refactor generation of dialogs, remove need for QSharedPointer and reduce use of pointers
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2022-10-31 18:06:07 +01:00
Claudio Cambra
f97f39375b
Remove Q_REQUIRED_RESULT from method with side-effect where result not always required, and viceversa
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2022-10-31 18:06:07 +01:00
Claudio Cambra
7971789112
Add a file details window/page, QMLify file sharing
Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
2022-10-31 18:06:03 +01:00
Claudio Cambra
57f8de9fb6 Make Systray's void methods slots
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
2022-10-25 12:19:17 +02:00
alex-z
7672cb7903 Improve 'Handle local file editing' feature. Add loading popup. Add force sync before opening a file.'
Signed-off-by: alex-z <blackslayer4@gmail.com>
2022-10-10 17:13:06 +03:00
Matthieu Gallien
565a5f0999 add [[nodiscard]] attribute via clang-tidy
ran
run-clang-tidy-14.py -header-filter='.*' -checks='-*,modernize-use-nodiscard' -fix
under linux with most part of our code covered

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
2022-10-04 11:14:45 +02:00
Claudio Cambra
5a56584fba Deallocate call notification dialog objects when closed
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
2022-09-14 12:34:47 +02:00
Claudio Cambra
b1caa45929 Fix menu bar height calculation on macOS
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
2022-09-10 11:52:29 +02:00
Claudio Cambra
539ba93fd1 QMLify the UserModel, use properties rather than setter methods
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
2022-07-15 16:47:17 +02:00
Claudio Cambra
ce9e4a99c0 Refactor tray window opening code for clarity and efficiency
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
2022-07-12 22:54:00 +02:00
Claudio Cambra
b712eb95e2 Clean up systray methods, make more QML-friendly
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
2022-07-06 11:26:53 +02:00
Claudio Cambra
22464f5005 Work around issues with window positioning on Linux DEs, hardcode tray window to screen center when new account added
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
2022-07-04 14:11:19 +02:00
Claudio Cambra
a504dbf965 Close call notifications when the call has been joined by the user, or the call has ended
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
2022-07-01 11:39:50 +02:00
Claudio Cambra
a2cc2ace4a Explicitly ask user for notification authorisation on launch
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
2022-05-19 10:59:12 +02:00
Claudio Cambra
364d02a13f Actually reset menu when user accounts are added or removed
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
2022-05-16 16:42:20 +02:00
Claudio Cambra
c22d5959b8 Reimplement notifications for macOS and add support for actionable update notifications
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
2022-05-11 17:33:33 +02:00
Matthieu Gallien
2d27a68e73 show errors on lock/unlock actions
use a native dialog to show users errors when trying to lock/unlock
files

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
2022-05-02 13:52:05 +02:00
Claudio Cambra
3f5243aaee Add an incoming talk call notification to the desktop client
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>

Co-authored-by: Camila <hello@camila.codes>
2022-04-28 09:13:13 +02:00
alex-z
71b610eee3 Remove redundant _guiAppInstance
Signed-off-by: alex-z <blackslayer4@gmail.com>
2022-04-01 08:41:35 +00:00
Claudio Cambra
3d086ae305 Fix dark mode stuff relating to unified search, fix macOS auto dark/light theme switching not always working, fix Windows detection of dark/light theme switching
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
2022-03-28 09:21:35 +00:00
Claudio Cambra
c342c304ac Added dark mode
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
2022-03-18 16:43:15 +00:00
Camila
73bae8cd30
Add TalkReply class and tests.
- Add struct TalkNotificationData to handle token and messageId.
- Handle chat and call notifications with the new struct.
- Add talk token and messageId to data roles in ActivityListModel.
- Add Talk Reply component to the ActivityList.
- User Loader to display the TalkReply component.
- Move Talk Reply from ActivityItem to ActivityItemContent due to PR #4186.
- Use TextField instead of Text.
- Disable send reply button instead of changing border color when field is empty.

Signed-off-by: Camila <hello@camila.codes>
2022-03-17 17:50:33 +01:00
Claudio Cambra
02f3a1aed6 File activity dialog now works for all file actions activities (e.g. deleted files)
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
2022-03-16 08:38:14 +01:00
Claudio Cambra
655a2e1c39 No longer assume status bar height, calculate, fixing notch borking
Signed-off-by: Claudio Cambra <claudio.cambra@gmail.com>
2022-03-02 13:22:55 +01:00
Matthieu Gallien
12c6d6e3bd add a network access factory to qml engine
ensure network access made via qml are using our user agent

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
2021-11-22 12:21:58 +00:00
Matthieu Gallien
69d6f4acec our source code files have lower case names
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
2021-10-25 15:38:21 +02:00
Felix Weilbach
0c9dce1154 Add file activity dialog
Signed-off-by: Felix Weilbach <felix.weilbach@nextcloud.com>
2021-10-05 12:41:34 +00:00
Matthieu Gallien
25669938fd let clang-tidy add missing override after enabling again the check
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
2021-08-31 08:35:56 +00:00
Felix Weilbach
89fea30a3b Remove Q_INVOKABLE from signals because it's not needed
Signed-off-by: Felix Weilbach <felix.weilbach@nextcloud.com>
2021-07-20 12:55:37 +02:00
Felix Weilbach
efaccbd6fd Show main dialog as normal window if tray icons not available
Fixes #3307

Signed-off-by: Felix Weilbach <felix.weilbach@nextcloud.com>
2021-07-12 14:10:26 +00:00
Brian Kendall
f9991e180c Fix macOS bug where tray window causes spaces to switch
Signed-off-by: Brian Kendall <brian@briankendall.net>
2020-12-02 06:54:16 +00:00
Kevin Ottens
1288ee0437 Move pause/unpause helpers to Systray
We had signals just to call those backs in ownCloudGui, they were
otherwise unused. So let's move them inside of Systray since it's
specific to it anyway.

Also fix the dangerous call to sender(). We can call this function
without going through a signal/slot connection and also it's never
connected to an AccountState.

Signed-off-by: Kevin Ottens <kevin.ottens@nextcloud.com>
2020-11-10 17:29:51 +00:00
Kevin Ottens
24964e2b9b Ensure we quickly show/hide the systray window on startup
This is quick enough that no flickering should appear in practice.

We end up doing this because for some reason on Windows (I dug up deep
into the Windows QPA without nailing it down) not showing that systray
window at least once prevents the app object to return from exec() when
the session ends.

It's as if that window would be in some limbo state (neither opened nor
closed) which would prevent quitting. Clearly what we're doing here is a
workaround...

Signed-off-by: Kevin Ottens <kevin.ottens@nextcloud.com>
2020-10-22 17:31:05 +00:00
Kevin Ottens
608bf025e6 Enable bugprone-forward-declaration-namespace clang-tidy check
Signed-off-by: Kevin Ottens <kevin.ottens@nextcloud.com>
2020-09-01 06:37:03 +00:00
Kevin Ottens
2f8c29082a Enable the modernize-use-equals-default check on clang-tidy
Signed-off-by: Kevin Ottens <kevin.ottens@nextcloud.com>
2020-08-13 14:19:42 +02:00
Stephan Beyer
cd008ffe59 Let context menu open wizard if there are no accounts
The context menu offers to open the main dialog and the settings
even if no accounts are configured.  In this case, the main dialog
is useless and the settings are probably confusing.  Hence, this
commit replaces these actions in the context menu by an action
to open the wizard (which also opens on left click, so this is
the most natural thing to do).

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
2020-07-23 21:08:53 +02:00
Dominique Fuchs
82c70f0c95 Properly set syncPause state on Systray creation when account init is done
Signed-off-by: Dominique Fuchs <32204802+DominiqueFuchs@users.noreply.github.com>
2020-07-21 10:10:07 +00:00
Camila
fdc160460b Fix #2085 new tray menu.
Update systray behavior and context menu:
- left click brings up the new QtQuick based dialogs on all latforms
- right click brings up the new QtQuick based dialog on Mac OS only
- right click brings up a context menu on all other platforms than Mac OS
- "Quit Nextcloud" => "Exit Nextcloud"
- Add "Open main dialog" option.

Signed-off-by: Camila <hello@camila.codes>
2020-07-02 19:21:10 +02:00
Stephan Beyer
20b58219e4 Hide Systray's auxiliary positioning methods from public and Qml
Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
2020-06-26 12:03:26 +00:00
Stephan Beyer
080505ef46 Simplify tray window positioning
The Qml position setting code is moved to C++, which allowed to get rid
of the currentScreenIndex() method (which seemed to be just a detour to
pass the screen from C++ to Qml).

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
2020-06-26 12:03:26 +00:00
Stephan Beyer
f90e0e519f Make Systray's _trayEngine a QPointer
This is just safer.

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
2020-06-24 17:25:20 +02:00
Stephan Beyer
08cb289b8c Fix SEGV (by circular ownership) at exit
Commit a12205f322 (PR #1891) introduced
a circular ownership: qmlRegisterSingletonType<Systray>(...) makes the
QQmlEngine own the resulting singleton Systray instance, however, the
QQmlEngine _trayEngine itself is owned by the Systray instance. This
circular ownership results in a crash when the destructor of Systray
calls the destructor of _trayEngine which attempts to call the destructor
of Systray.

This commit solves this problem by making ownCloudGui, which is the
parent of Systray, the parent of the _trayEngine.

Signed-off-by: Stephan Beyer <s-beyer@gmx.net>
2020-06-24 13:50:17 +02:00
Michael Schuster
44a9200c5d Fix crash caused by setting Tray window screen pointer on the QML side
Seems like Qt sometimes doesn't like the QML window's screen property to be set
to a C++ (QVariant) pointer value, so we use the index: Qt.application.screens[]

See Qt docs: https://doc.qt.io/qt-5/qml-qtquick-window-window.html#screen-prop

This fix returns the matching window's index from the QGuiApplication::screens()
list to the QML side, instead of the window pointer.

Steps to reproduce the crash with the previous code:
- Open the Tray menu and close it a few times,
  or scroll randomly up and down in its activity list.

Tested with Qt 5.12.5

Signed-off-by: Michael Schuster <michael@schuster.ms>
2020-06-15 12:32:25 +00:00
Kevin Ottens
5848a1575b Make the reference point independent of the window
This leads to simplifying the computation code quite a bit as well.
Indeed we're separating concern between what is window size dependent or
not and that shows.

Signed-off-by: Kevin Ottens <kevin.ottens@nextcloud.com>
2020-06-15 12:32:25 +00:00
Kevin Ottens
40824dc427 Get rid of screenIndex
This was leading to the same logic being duplicated several times. It's
fine to return the QScreen* on the QML side directly but wrapped into a
QVariant.

Signed-off-by: Kevin Ottens <kevin.ottens@nextcloud.com>
2020-06-15 12:32:25 +00:00
Kevin Ottens
6c6dfb15a7 Move all the position computation on the C++ side
The API is just more convenient there, the rect and point types on the
QML side are just pale shadow of their C++ counterparts.

Also improved a bit the constness of the Systray class.

Signed-off-by: Kevin Ottens <kevin.ottens@nextcloud.com>
2020-06-15 12:32:25 +00:00
Dominique Fuchs
a6f918f3c2 More simplifications, also transfer of more tray positioning logic to C++ backend.
Signed-off-by: Dominique Fuchs <32204802+DominiqueFuchs@users.noreply.github.com>
2020-06-15 12:32:25 +00:00
Dominique Fuchs
f44df7f61a Major multi monitor improvements and rewrite of tray window positioning
Signed-off-by: Dominique Fuchs <32204802+DominiqueFuchs@users.noreply.github.com>
2020-06-15 12:32:25 +00:00
Kevin Ottens
e3e262e42e Use default member init when applicable
This also fixes a couple of warnings at places (out of order init for
instance) and a potential bug in the webflow credentials / qtkeychain
integration.

Signed-off-by: Kevin Ottens <kevin.ottens@nextcloud.com>
2020-06-03 16:10:39 +02:00