/* * Copyright (C) by Roeland Jago Douma * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * for more details. */ #ifndef SHAREUSERGROUPWIDGET_H #define SHAREUSERGROUPWIDGET_H #include "accountfwd.h" #include "sharepermissions.h" #include "sharee.h" #include "QProgressIndicator.h" #include #include #include #include #include #include #include class QAction; class QCompleter; class QModelIndex; namespace OCC { namespace Ui { class ShareUserGroupWidget; class ShareUserLine; } class AbstractCredentials; class SyncResult; class Share; class ShareManager; /** * @brief The ShareDialog (user/group) class * @ingroup gui */ class ShareUserGroupWidget : public QWidget { Q_OBJECT public: explicit ShareUserGroupWidget(AccountPtr account, const QString &sharePath, const QString &localPath, SharePermissions maxSharingPermissions, const QString &privateLinkUrl, QWidget *parent = nullptr); ~ShareUserGroupWidget(); signals: void togglePublicLinkShare(bool); void styleChanged(); public slots: void getShares(); void slotStyleChanged(); private slots: void slotSharesFetched(const QList> &shares); void on_shareeLineEdit_textChanged(const QString &text); void searchForSharees(ShareeModel::LookupMode lookupMode); void slotLineEditTextEdited(const QString &text); void slotLineEditReturn(); void slotCompleterActivated(const QModelIndex &index); void slotCompleterHighlighted(const QModelIndex &index); void slotShareesReady(); void slotAdjustScrollWidgetSize(); void slotPrivateLinkShare(); void displayError(int code, const QString &message); void slotPrivateLinkOpenBrowser(); void slotPrivateLinkCopy(); void slotPrivateLinkEmail(); private: void customizeStyle(); void activateShareeLineEdit(); Ui::ShareUserGroupWidget *_ui; QScrollArea *_parentScrollArea; AccountPtr _account; QString _sharePath; QString _localPath; SharePermissions _maxSharingPermissions; QString _privateLinkUrl; QCompleter *_completer; ShareeModel *_completerModel; QTimer _completionTimer; bool _isFile; bool _disableCompleterActivated; // in order to avoid that we share the contents twice ShareManager *_manager; QProgressIndicator _pi_sharee; }; /** * The widget displayed for each user/group share */ class ShareUserLine : public QWidget { Q_OBJECT public: explicit ShareUserLine(QSharedPointer Share, SharePermissions maxSharingPermissions, bool isFile, QWidget *parent = nullptr); ~ShareUserLine(); QSharedPointer share() const; signals: void visualDeletionDone(); void resizeRequested(); public slots: void slotStyleChanged(); private slots: void on_deleteShareButton_clicked(); void slotPermissionsChanged(); void slotEditPermissionsChanged(); void slotDeleteAnimationFinished(); void slotShareDeleted(); void slotPermissionsSet(); void slotAvatarLoaded(QImage avatar); private: void displayPermissions(); void loadAvatar(); void customizeStyle(); Ui::ShareUserLine *_ui; QSharedPointer _share; bool _isFile; // _permissionEdit is a checkbox QAction *_permissionReshare; QAction *_deleteShareButton; QAction *_permissionCreate; QAction *_permissionChange; QAction *_permissionDelete; }; } #endif // SHAREUSERGROUPWIDGET_H