|
|
@@ -79,11 +79,10 @@ ShareLinkWidget::ShareLinkWidget(AccountPtr account,
|
|
|
connect(_ui->confirmPassword, &QAbstractButton::clicked, this, &ShareLinkWidget::slotCreatePassword);
|
|
|
connect(_ui->confirmNote, &QAbstractButton::clicked, this, &ShareLinkWidget::slotCreateNote);
|
|
|
connect(_ui->confirmExpirationDate, &QAbstractButton::clicked, this, &ShareLinkWidget::slotSetExpireDate);
|
|
|
- connect(_ui->calendar, &QDateTimeEdit::dateChanged, this, &ShareLinkWidget::slotSetExpireDate);
|
|
|
|
|
|
_ui->errorLabel->hide();
|
|
|
|
|
|
- bool sharingPossible = true;
|
|
|
+ auto sharingPossible = true;
|
|
|
if (!_account->capabilities().sharePublicLink()) {
|
|
|
qCWarning(lcShareLink) << "Link shares have been disabled";
|
|
|
sharingPossible = false;
|
|
|
@@ -104,7 +103,6 @@ ShareLinkWidget::ShareLinkWidget(AccountPtr account,
|
|
|
togglePasswordOptions(false);
|
|
|
toggleExpireDateOptions(false);
|
|
|
toggleNoteOptions(false);
|
|
|
- _ui->calendar->setMinimumDate(QDate::currentDate().addDays(1));
|
|
|
|
|
|
_ui->noteProgressIndicator->setVisible(false);
|
|
|
_ui->passwordProgressIndicator->setVisible(false);
|
|
|
@@ -123,7 +121,7 @@ ShareLinkWidget::~ShareLinkWidget()
|
|
|
delete _ui;
|
|
|
}
|
|
|
|
|
|
-void ShareLinkWidget::slotToggleShareLinkAnimation(bool start)
|
|
|
+void ShareLinkWidget::slotToggleShareLinkAnimation(const bool start)
|
|
|
{
|
|
|
_ui->sharelinkProgressIndicator->setVisible(start);
|
|
|
if (start) {
|
|
|
@@ -135,17 +133,19 @@ void ShareLinkWidget::slotToggleShareLinkAnimation(bool start)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void ShareLinkWidget::slotToggleButtonAnimation(QToolButton *button, QProgressIndicator *progressIndicator, bool optionEnabled, bool start)
|
|
|
+void ShareLinkWidget::toggleButtonAnimation(QToolButton *button, QProgressIndicator *progressIndicator, const QAction *checkedAction) const
|
|
|
{
|
|
|
- button->setVisible(optionEnabled && !start);
|
|
|
- progressIndicator->setVisible(start);
|
|
|
- if (start) {
|
|
|
- if (!progressIndicator->isAnimated()) {
|
|
|
- progressIndicator->startAnimation();
|
|
|
- }
|
|
|
+ auto startAnimation = false;
|
|
|
+ const auto actionIsChecked = checkedAction->isChecked();
|
|
|
+ if (!progressIndicator->isAnimated() && actionIsChecked) {
|
|
|
+ progressIndicator->startAnimation();
|
|
|
+ startAnimation = true;
|
|
|
} else {
|
|
|
progressIndicator->stopAnimation();
|
|
|
}
|
|
|
+
|
|
|
+ button->setVisible(!startAnimation && actionIsChecked);
|
|
|
+ progressIndicator->setVisible(startAnimation && actionIsChecked);
|
|
|
}
|
|
|
|
|
|
void ShareLinkWidget::setLinkShare(QSharedPointer<LinkShare> linkShare)
|
|
|
@@ -165,7 +165,6 @@ void ShareLinkWidget::focusPasswordLineEdit()
|
|
|
|
|
|
void ShareLinkWidget::setupUiOptions()
|
|
|
{
|
|
|
- connect(_linkShare.data(), &LinkShare::expireDateSet, this, &ShareLinkWidget::slotExpireDateSet);
|
|
|
connect(_linkShare.data(), &LinkShare::noteSet, this, &ShareLinkWidget::slotNoteSet);
|
|
|
connect(_linkShare.data(), &LinkShare::passwordSet, this, &ShareLinkWidget::slotPasswordSet);
|
|
|
connect(_linkShare.data(), &LinkShare::passwordSetError, this, &ShareLinkWidget::slotPasswordSetError);
|
|
|
@@ -174,7 +173,7 @@ void ShareLinkWidget::setupUiOptions()
|
|
|
// Prepare permissions check and create group action
|
|
|
const QDate expireDate = _linkShare.data()->getExpireDate().isValid() ? _linkShare.data()->getExpireDate() : QDate();
|
|
|
const SharePermissions perm = _linkShare.data()->getPermissions();
|
|
|
- bool checked = false;
|
|
|
+ auto checked = false;
|
|
|
auto *permissionsGroup = new QActionGroup(this);
|
|
|
|
|
|
// Prepare sharing menu
|
|
|
@@ -239,6 +238,7 @@ void ShareLinkWidget::setupUiOptions()
|
|
|
|
|
|
_shareLinkWidgetAction = new QWidgetAction(this);
|
|
|
_shareLinkWidgetAction->setDefaultWidget(_shareLinkDefaultWidget);
|
|
|
+ _shareLinkWidgetAction->setCheckable(true);
|
|
|
_linkContextMenu->addAction(_shareLinkWidgetAction);
|
|
|
|
|
|
// Adds permissions actions (radio button style)
|
|
|
@@ -257,7 +257,7 @@ void ShareLinkWidget::setupUiOptions()
|
|
|
if (_linkShare->getNote().isSimpleText() && !_linkShare->getNote().isEmpty()) {
|
|
|
_ui->textEdit_note->setText(_linkShare->getNote());
|
|
|
_noteLinkAction->setChecked(true);
|
|
|
- showNoteOptions(true);
|
|
|
+ toggleNoteOptions();
|
|
|
}
|
|
|
|
|
|
// Adds action to display password widget (check box)
|
|
|
@@ -267,7 +267,7 @@ void ShareLinkWidget::setupUiOptions()
|
|
|
if (_linkShare.data()->isPasswordSet()) {
|
|
|
_passwordProtectLinkAction->setChecked(true);
|
|
|
_ui->lineEdit_password->setPlaceholderText(QString::fromUtf8(passwordIsSetPlaceholder));
|
|
|
- showPasswordOptions(true);
|
|
|
+ togglePasswordOptions();
|
|
|
}
|
|
|
|
|
|
// If password is enforced then don't allow users to disable it
|
|
|
@@ -285,8 +285,11 @@ void ShareLinkWidget::setupUiOptions()
|
|
|
if (!expireDate.isNull()) {
|
|
|
_ui->calendar->setDate(expireDate);
|
|
|
_expirationDateLinkAction->setChecked(true);
|
|
|
- showExpireDateOptions(true);
|
|
|
+ toggleExpireDateOptions();
|
|
|
}
|
|
|
+ connect(_ui->calendar, &QDateTimeEdit::dateChanged, this, &ShareLinkWidget::slotSetExpireDate);
|
|
|
+ connect(_linkShare.data(), &LinkShare::expireDateSet, this, &ShareLinkWidget::slotExpireDateSet);
|
|
|
+
|
|
|
|
|
|
// If expiredate is enforced do not allow disable and set max days
|
|
|
if (_account->capabilities().sharePublicLinkEnforceExpireDate()) {
|
|
|
@@ -321,32 +324,27 @@ void ShareLinkWidget::setupUiOptions()
|
|
|
// show sharing options
|
|
|
_ui->shareLinkToolButton->show();
|
|
|
|
|
|
- //TO DO
|
|
|
- //startAnimation(0, height());
|
|
|
-
|
|
|
customizeStyle();
|
|
|
}
|
|
|
|
|
|
-void ShareLinkWidget::setNote(const QString ¬e)
|
|
|
-{
|
|
|
- if (_linkShare) {
|
|
|
- slotToggleButtonAnimation(_ui->confirmNote, _ui->noteProgressIndicator, _noteLinkAction->isChecked(), true);
|
|
|
- _ui->errorLabel->hide();
|
|
|
- _linkShare->setNote(note);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
void ShareLinkWidget::slotCreateNote()
|
|
|
{
|
|
|
- setNote(_ui->textEdit_note->toPlainText());
|
|
|
+ const auto note = _ui->textEdit_note->toPlainText();
|
|
|
+ if (!_linkShare || _linkShare->getNote() == note || note.isEmpty()) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ toggleButtonAnimation(_ui->confirmNote, _ui->noteProgressIndicator, _noteLinkAction);
|
|
|
+ _ui->errorLabel->hide();
|
|
|
+ _linkShare->setNote(note);
|
|
|
}
|
|
|
|
|
|
void ShareLinkWidget::slotNoteSet()
|
|
|
{
|
|
|
- slotToggleButtonAnimation(_ui->confirmNote, _ui->noteProgressIndicator, _noteLinkAction->isChecked(), false);
|
|
|
+ toggleButtonAnimation(_ui->confirmNote, _ui->noteProgressIndicator, _noteLinkAction);
|
|
|
}
|
|
|
|
|
|
-void ShareLinkWidget::slotCopyLinkShare(bool clicked)
|
|
|
+void ShareLinkWidget::slotCopyLinkShare(const bool clicked) const
|
|
|
{
|
|
|
Q_UNUSED(clicked);
|
|
|
|
|
|
@@ -355,7 +353,7 @@ void ShareLinkWidget::slotCopyLinkShare(bool clicked)
|
|
|
|
|
|
void ShareLinkWidget::slotExpireDateSet()
|
|
|
{
|
|
|
- slotToggleButtonAnimation(_ui->confirmExpirationDate, _ui->expirationDateProgressIndicator, _expirationDateLinkAction->isChecked(), false);
|
|
|
+ toggleButtonAnimation(_ui->confirmExpirationDate, _ui->expirationDateProgressIndicator, _expirationDateLinkAction);
|
|
|
}
|
|
|
|
|
|
void ShareLinkWidget::slotSetExpireDate()
|
|
|
@@ -364,7 +362,7 @@ void ShareLinkWidget::slotSetExpireDate()
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- slotToggleButtonAnimation(_ui->confirmExpirationDate, _ui->expirationDateProgressIndicator, _expirationDateLinkAction->isChecked(), true);
|
|
|
+ toggleButtonAnimation(_ui->confirmExpirationDate, _ui->expirationDateProgressIndicator, _expirationDateLinkAction);
|
|
|
_ui->errorLabel->hide();
|
|
|
_linkShare->setExpireDate(_ui->calendar->date());
|
|
|
}
|
|
|
@@ -375,12 +373,12 @@ void ShareLinkWidget::slotCreatePassword()
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- slotToggleButtonAnimation(_ui->confirmPassword, _ui->passwordProgressIndicator, _passwordProtectLinkAction->isChecked(), true);
|
|
|
+ toggleButtonAnimation(_ui->confirmPassword, _ui->passwordProgressIndicator, _passwordProtectLinkAction);
|
|
|
_ui->errorLabel->hide();
|
|
|
emit createPassword(_ui->lineEdit_password->text());
|
|
|
}
|
|
|
|
|
|
-void ShareLinkWidget::slotCreateShareLink(bool clicked)
|
|
|
+void ShareLinkWidget::slotCreateShareLink(const bool clicked)
|
|
|
{
|
|
|
Q_UNUSED(clicked);
|
|
|
slotToggleShareLinkAnimation(true);
|
|
|
@@ -389,27 +387,26 @@ void ShareLinkWidget::slotCreateShareLink(bool clicked)
|
|
|
|
|
|
void ShareLinkWidget::slotPasswordSet()
|
|
|
{
|
|
|
- slotToggleButtonAnimation(_ui->confirmPassword, _ui->passwordProgressIndicator, _passwordProtectLinkAction->isChecked(), false);
|
|
|
+ toggleButtonAnimation(_ui->confirmPassword, _ui->passwordProgressIndicator, _passwordProtectLinkAction);
|
|
|
+
|
|
|
+ _ui->lineEdit_password->setText({});
|
|
|
|
|
|
- _ui->lineEdit_password->setText(QString());
|
|
|
if (_linkShare->isPasswordSet()) {
|
|
|
_ui->lineEdit_password->setEnabled(true);
|
|
|
_ui->lineEdit_password->setPlaceholderText(QString::fromUtf8(passwordIsSetPlaceholder));
|
|
|
} else {
|
|
|
- _ui->lineEdit_password->setPlaceholderText(QString());
|
|
|
+ _ui->lineEdit_password->setPlaceholderText({});
|
|
|
}
|
|
|
|
|
|
- setupUiOptions();
|
|
|
-
|
|
|
emit createPasswordProcessed();
|
|
|
}
|
|
|
|
|
|
-void ShareLinkWidget::slotPasswordSetError(int code, const QString &message)
|
|
|
+void ShareLinkWidget::slotPasswordSetError(const int code, const QString &message)
|
|
|
{
|
|
|
- slotToggleButtonAnimation(_ui->confirmPassword, _ui->passwordProgressIndicator, _passwordProtectLinkAction->isChecked(), false);
|
|
|
+ toggleButtonAnimation(_ui->confirmPassword, _ui->passwordProgressIndicator, _passwordProtectLinkAction);
|
|
|
|
|
|
slotServerError(code, message);
|
|
|
- showPasswordOptions(true);
|
|
|
+ togglePasswordOptions();
|
|
|
_ui->lineEdit_password->setFocus();
|
|
|
emit createPasswordProcessed();
|
|
|
}
|
|
|
@@ -434,9 +431,6 @@ void ShareLinkWidget::slotDeleteShareFetched()
|
|
|
{
|
|
|
slotToggleShareLinkAnimation(false);
|
|
|
|
|
|
- // TODO
|
|
|
- //startAnimation(height(), 0);
|
|
|
-
|
|
|
_linkShare.clear();
|
|
|
togglePasswordOptions(false);
|
|
|
toggleNoteOptions(false);
|
|
|
@@ -444,25 +438,16 @@ void ShareLinkWidget::slotDeleteShareFetched()
|
|
|
emit deleteLinkShare();
|
|
|
}
|
|
|
|
|
|
-void ShareLinkWidget::showNoteOptions(bool show)
|
|
|
+void ShareLinkWidget::toggleNoteOptions(const bool enable)
|
|
|
{
|
|
|
- _ui->noteLabel->setVisible(show);
|
|
|
- _ui->textEdit_note->setVisible(show);
|
|
|
- _ui->confirmNote->setVisible(show);
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-void ShareLinkWidget::toggleNoteOptions(bool enable)
|
|
|
-{
|
|
|
- showNoteOptions(enable);
|
|
|
-
|
|
|
- if (enable) {
|
|
|
- _ui->textEdit_note->setFocus();
|
|
|
- } else {
|
|
|
- // 'deletes' note
|
|
|
- if (_linkShare)
|
|
|
- _linkShare->setNote(QString());
|
|
|
- }
|
|
|
+ _ui->noteLabel->setVisible(enable);
|
|
|
+ _ui->textEdit_note->setVisible(enable);
|
|
|
+ _ui->confirmNote->setVisible(enable);
|
|
|
+ _ui->textEdit_note->setText(enable && _linkShare ? _linkShare->getNote() : QString());
|
|
|
+
|
|
|
+ if (!enable && _linkShare && !_linkShare->getNote().isEmpty()) {
|
|
|
+ _linkShare->setNote({});
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void ShareLinkWidget::slotAnimationFinished()
|
|
|
@@ -473,16 +458,19 @@ void ShareLinkWidget::slotAnimationFinished()
|
|
|
|
|
|
void ShareLinkWidget::slotCreateLabel()
|
|
|
{
|
|
|
- if (_linkShare) {
|
|
|
- slotToggleButtonAnimation(_shareLinkButton, _shareLinkProgressIndicator, true, true);
|
|
|
- _ui->errorLabel->hide();
|
|
|
- _linkShare->setLabel(_shareLinkEdit->text());
|
|
|
+ const auto labelText = _shareLinkEdit->text();
|
|
|
+ if (!_linkShare || _linkShare->getLabel() == labelText || labelText.isEmpty()) {
|
|
|
+ return;
|
|
|
}
|
|
|
+ _shareLinkWidgetAction->setChecked(true);
|
|
|
+ toggleButtonAnimation(_shareLinkButton, _shareLinkProgressIndicator, _shareLinkWidgetAction);
|
|
|
+ _ui->errorLabel->hide();
|
|
|
+ _linkShare->setLabel(_shareLinkEdit->text());
|
|
|
}
|
|
|
|
|
|
void ShareLinkWidget::slotLabelSet()
|
|
|
{
|
|
|
- slotToggleButtonAnimation(_shareLinkButton, _shareLinkProgressIndicator, true, false);
|
|
|
+ toggleButtonAnimation(_shareLinkButton, _shareLinkProgressIndicator, _shareLinkWidgetAction);
|
|
|
displayShareLinkLabel();
|
|
|
}
|
|
|
|
|
|
@@ -498,7 +486,6 @@ void ShareLinkWidget::slotCreateShareRequiresPassword(const QString &message)
|
|
|
{
|
|
|
slotToggleShareLinkAnimation(message.isEmpty());
|
|
|
|
|
|
- showPasswordOptions(true);
|
|
|
if (!message.isEmpty()) {
|
|
|
_ui->errorLabel->setText(message);
|
|
|
_ui->errorLabel->show();
|
|
|
@@ -506,49 +493,34 @@ void ShareLinkWidget::slotCreateShareRequiresPassword(const QString &message)
|
|
|
|
|
|
_passwordRequired = true;
|
|
|
|
|
|
- togglePasswordOptions(true);
|
|
|
-}
|
|
|
-
|
|
|
-void ShareLinkWidget::showPasswordOptions(bool show)
|
|
|
-{
|
|
|
- _ui->passwordLabel->setVisible(show);
|
|
|
- _ui->lineEdit_password->setVisible(show);
|
|
|
- _ui->confirmPassword->setVisible(show);
|
|
|
+ togglePasswordOptions();
|
|
|
}
|
|
|
|
|
|
-void ShareLinkWidget::togglePasswordOptions(bool enable)
|
|
|
+void ShareLinkWidget::togglePasswordOptions(const bool enable)
|
|
|
{
|
|
|
- showPasswordOptions(enable);
|
|
|
-
|
|
|
- if (enable) {
|
|
|
- _ui->lineEdit_password->setFocus();
|
|
|
- } else {
|
|
|
- // 'deletes' password
|
|
|
- if (_linkShare)
|
|
|
- _linkShare->setPassword(QString());
|
|
|
+ _ui->passwordLabel->setVisible(enable);
|
|
|
+ _ui->lineEdit_password->setVisible(enable);
|
|
|
+ _ui->confirmPassword->setVisible(enable);
|
|
|
+ _ui->lineEdit_password->setFocus();
|
|
|
+
|
|
|
+ if (!enable && _linkShare && _linkShare->isPasswordSet()) {
|
|
|
+ _linkShare->setPassword({});
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void ShareLinkWidget::showExpireDateOptions(bool show)
|
|
|
+void ShareLinkWidget::toggleExpireDateOptions(const bool enable)
|
|
|
{
|
|
|
- _ui->expirationLabel->setVisible(show);
|
|
|
- _ui->calendar->setVisible(show);
|
|
|
- _ui->confirmExpirationDate->setVisible(show);
|
|
|
-}
|
|
|
-
|
|
|
-void ShareLinkWidget::toggleExpireDateOptions(bool enable)
|
|
|
-{
|
|
|
- showExpireDateOptions(enable);
|
|
|
-
|
|
|
- if (enable) {
|
|
|
- const QDate date = QDate::currentDate().addDays(1);
|
|
|
- _ui->calendar->setDate(date);
|
|
|
- _ui->calendar->setMinimumDate(date);
|
|
|
- _ui->calendar->setFocus();
|
|
|
- } else {
|
|
|
- // 'deletes' expire date
|
|
|
- if (_linkShare)
|
|
|
- _linkShare->setExpireDate(QDate());
|
|
|
+ _ui->expirationLabel->setVisible(enable);
|
|
|
+ _ui->calendar->setVisible(enable);
|
|
|
+ _ui->confirmExpirationDate->setVisible(enable);
|
|
|
+
|
|
|
+ const auto date = enable ? _linkShare->getExpireDate() : QDate::currentDate().addDays(1);
|
|
|
+ _ui->calendar->setDate(date);
|
|
|
+ _ui->calendar->setMinimumDate(date);
|
|
|
+ _ui->calendar->setFocus();
|
|
|
+
|
|
|
+ if (!enable && _linkShare && _linkShare->getExpireDate().isValid()) {
|
|
|
+ _linkShare->setExpireDate({});
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -593,7 +565,7 @@ void ShareLinkWidget::slotContextMenuButtonClicked()
|
|
|
|
|
|
void ShareLinkWidget::slotLinkContextMenuActionTriggered(QAction *action)
|
|
|
{
|
|
|
- bool state = action->isChecked();
|
|
|
+ const auto state = action->isChecked();
|
|
|
SharePermissions perm = SharePermissionRead;
|
|
|
|
|
|
if (action == _addAnotherLinkAction) {
|
|
|
@@ -628,7 +600,7 @@ void ShareLinkWidget::slotLinkContextMenuActionTriggered(QAction *action)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void ShareLinkWidget::slotServerError(int code, const QString &message)
|
|
|
+void ShareLinkWidget::slotServerError(const int code, const QString &message)
|
|
|
{
|
|
|
slotToggleShareLinkAnimation(false);
|
|
|
|
|
|
@@ -669,7 +641,7 @@ void ShareLinkWidget::customizeStyle()
|
|
|
void ShareLinkWidget::displayShareLinkLabel()
|
|
|
{
|
|
|
_shareLinkElidedLabel->clear();
|
|
|
- if(!_linkShare->getLabel().isEmpty()) {
|
|
|
+ if (!_linkShare->getLabel().isEmpty()) {
|
|
|
_shareLinkElidedLabel->setText(QString("(%1)").arg(_linkShare->getLabel()));
|
|
|
}
|
|
|
}
|