Skip to content

Commit

Permalink
Merge #98 nmc/2003-FolderWizard_Settings_Dialog
Browse files Browse the repository at this point in the history
  • Loading branch information
eugenMCloud committed Mar 27, 2024
2 parents bc7c335 + e9da551 commit 1a533d5
Show file tree
Hide file tree
Showing 14 changed files with 520 additions and 26 deletions.
3 changes: 3 additions & 0 deletions src/gui/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ set(CMAKE_AUTOUIC_SEARCH_PATHS "${CMAKE_SOURCE_DIR}/src/gui")
#NMC change, its needed to find the ui file in a different location than the header file
set(CMAKE_AUTOUIC_SEARCH_PATHS "${CMAKE_SOURCE_DIR}/src/gui")

#NMC change, its needed to find the ui file in a different location than the header file
set(CMAKE_AUTOUIC_SEARCH_PATHS "${CMAKE_SOURCE_DIR}/src/gui")

if(QUICK_COMPILER)
find_package(Qt5QuickCompiler)
set_package_properties(Qt5QuickCompiler PROPERTIES
Expand Down
6 changes: 3 additions & 3 deletions src/gui/accountsettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
#include "theme.h"
#include "foldercreationdialog.h"
#include "folderman.h"
#include "folderwizard.h"
#include "nmcgui/nmcfolderwizard.h"
#include "folderstatusmodel.h"
#include "folderstatusdelegate.h"
#include "common/utility.h"
Expand Down Expand Up @@ -771,7 +771,7 @@ void AccountSettings::slotAddFolder()
const auto folderMan = FolderMan::instance();
folderMan->setSyncEnabled(false); // do not start more syncs.

const auto folderWizard = new FolderWizard(_accountState->account(), this);
const auto folderWizard = new NMCFolderWizard(_accountState->account(), this);
folderWizard->setAttribute(Qt::WA_DeleteOnClose);

connect(folderWizard, &QDialog::accepted, this, &AccountSettings::slotFolderWizardAccepted);
Expand All @@ -782,7 +782,7 @@ void AccountSettings::slotAddFolder()

void AccountSettings::slotFolderWizardAccepted()
{
const auto folderWizard = qobject_cast<FolderWizard *>(sender());
const auto folderWizard = qobject_cast<NMCFolderWizard *>(sender());
const auto folderMan = FolderMan::instance();

qCInfo(lcAccountSettings) << "Folder wizard completed";
Expand Down
14 changes: 10 additions & 4 deletions src/gui/folderwizard.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -506,9 +506,11 @@ bool FolderWizardRemotePath::isComplete() const
if (QDir::cleanPath(dir) == QDir::cleanPath(curDir)) {
warnStrings.append(tr("This folder is already being synced."));
} else if (dir.startsWith(curDir)) {
warnStrings.append(tr("You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>.").arg(Utility::escape(curDir), Utility::escape(dir)));
//warnStrings.append(tr("You are already syncing <i>%1</i>, which is a parent folder of <i>%2</i>.").arg(Utility::escape(curDir), Utility::escape(dir)));
} else if (curDir.startsWith(dir)) {
warnStrings.append(tr("You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>.").arg(Utility::escape(curDir), Utility::escape(dir)));
//NMC customization
warnStrings.append(QCoreApplication::translate("", "FOLDER_WIZARD_FOLDER_WARNING"));
//warnStrings.append(tr("You are already syncing <i>%1</i>, which is a subfolder of <i>%2</i>.").arg(Utility::escape(curDir), Utility::escape(dir)));
}
}

Expand Down Expand Up @@ -565,7 +567,7 @@ void FolderWizardRemotePath::changeStyle()
FolderWizardSelectiveSync::FolderWizardSelectiveSync(const AccountPtr &account)
{
auto *layout = new QVBoxLayout(this);
_selectiveSync = new SelectiveSyncWidget(account, this);
_selectiveSync = new NMCSelectiveSyncWidget(account, this);
layout->addWidget(_selectiveSync);

if (Theme::instance()->showVirtualFilesOption() && bestAvailableVfsMode() != Vfs::Off) {
Expand Down Expand Up @@ -679,7 +681,11 @@ FolderWizard::FolderWizard(AccountPtr account, QWidget *parent)
setPage(Page_Target, _folderWizardTargetPage);
_folderWizardTargetPage->installEventFilter(this);
}
setPage(Page_SelectiveSync, _folderWizardSelectiveSyncPage);

if(Utility::isMac())
{
setPage(Page_SelectiveSync, _folderWizardSelectiveSyncPage);
}

setWindowTitle(tr("Add Folder Sync Connection"));
setOptions(QWizard::CancelButtonOnLeft);
Expand Down
24 changes: 17 additions & 7 deletions src/gui/folderwizard.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,15 @@
#include "folder.h"
#include "accountfwd.h"

#include "ui_folderwizardsourcepage.h"
#include "ui_folderwizardtargetpage.h"
#include "nmcgui/nmcfolderwizardsourcepage.h"
#include "nmcgui/nmcfolderwizardtargetpage.h"
#include "nmcgui/nmcselectivesyncdialog.h"

class QCheckBox;

namespace OCC {

class SelectiveSyncWidget;
class NMCSelectiveSyncWidget;

class ownCloudInfo;

Expand Down Expand Up @@ -61,6 +62,11 @@ class FolderWizardLocalPath : public FormatWarningsWizardPage

void setFolderMap(const Folder::Map &fm) { _folderMap = fm; }

NMCFolderWizardSourcePage getUi()
{
return _ui;
}

protected:
void changeEvent(QEvent *) override;

Expand All @@ -70,7 +76,7 @@ protected slots:
private:
void changeStyle();

Ui_FolderWizardSourcePage _ui{};
NMCFolderWizardSourcePage _ui{};
Folder::Map _folderMap;
AccountPtr _account;
};
Expand All @@ -93,6 +99,10 @@ class FolderWizardRemotePath : public FormatWarningsWizardPage
void initializePage() override;
void cleanupPage() override;

NMCFolderWizardTargetPage getUi(){
return _ui;
};

protected slots:
void showWarn(const QString & = QString()) const;
void slotAddRemoteFolder();
Expand All @@ -119,7 +129,7 @@ private slots:
LsColJob *runLsColJob(const QString &path);
void recursiveInsert(QTreeWidgetItem *parent, QStringList pathTrail, QString path);
bool selectByPath(QString path);
Ui_FolderWizardTargetPage _ui{};
NMCFolderWizardTargetPage _ui{};
bool _warnWasVisible = false;
AccountPtr _account;
QTimer _lscolTimer;
Expand All @@ -146,7 +156,7 @@ private slots:
void virtualFilesCheckboxClicked();

private:
SelectiveSyncWidget *_selectiveSync;
NMCSelectiveSyncWidget *_selectiveSync;
QCheckBox *_virtualFilesCheckBox = nullptr;
};

Expand All @@ -170,7 +180,7 @@ class FolderWizard : public QWizard
bool eventFilter(QObject *watched, QEvent *event) override;
void resizeEvent(QResizeEvent *event) override;

private:
protected:
FolderWizardLocalPath *_folderWizardSourcePage;
FolderWizardRemotePath *_folderWizardTargetPage = nullptr;
FolderWizardSelectiveSync *_folderWizardSelectiveSyncPage;
Expand Down
41 changes: 41 additions & 0 deletions src/gui/nmcgui/nmcfolderwizard.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/*
* Copyright (C) by Eugen Fischer
*
* 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.
*/
#include "nmcfolderwizard.h"

/**
* Folder wizard itself
*/

namespace OCC {

NMCFolderWizard::NMCFolderWizard(AccountPtr account, QWidget *parent)
:FolderWizard(account, parent)
{
setWizardStyle(QWizard::ClassicStyle);
setButtonText(QWizard::FinishButton, QCoreApplication::translate("", "ADD_SYNCHRONIZATION"));

//Source page
auto sourceUi = _folderWizardSourcePage->getUi();
sourceUi.localFolderLineEdit->clear();
sourceUi.localFolderLineEdit->setPlaceholderText(QCoreApplication::translate("", "ADD_LIVE_BACKUP_PLACEHOLDER_TEXT"));
sourceUi.setDefaultSettings();
sourceUi.changeLayout();

//Target page
auto targetUi = _folderWizardTargetPage->getUi();
targetUi.setDefaultSettings();
targetUi.setLayout();
}

} // end namespace
50 changes: 50 additions & 0 deletions src/gui/nmcgui/nmcfolderwizard.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*
* Copyright (C) by Eugen Fischer
*
* 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 MIRALL_NMCFolderWizard_H
#define MIRALL_NMCFolderWizard_H

#include "folderwizard.h"

/**
* @brief The NMCFolderWizard class represents a specific folder wizard for the NMC application.
* @ingroup gui
*
* The NMCFolderWizard class is derived from the FolderWizard class and provides additional functionality
* specific to the NMC (replace with the actual application name) application.
*/

namespace OCC {

class NMCFolderWizard : public FolderWizard
{
Q_OBJECT
public:
/**
* @brief Constructs an instance of NMCFolderWizard.
* @param account The account associated with the wizard.
* @param parent The parent widget (default is nullptr).
*/
explicit NMCFolderWizard(OCC::AccountPtr account, QWidget *parent = nullptr);

/**
* @brief Destroys the NMCFolderWizard instance.
*/
~NMCFolderWizard() = default;
};

} // namespace OCC

#endif

81 changes: 81 additions & 0 deletions src/gui/nmcgui/nmcfolderwizardsourcepage.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
/*
* Copyright (C) by Eugen Fischer
*
* 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.
*/

#include "nmcfolderwizardsourcepage.h"
#include "theme.h"

namespace OCC {

NMCFolderWizardSourcePage::NMCFolderWizardSourcePage()
:FolderWizardSourcePage()
{

}

void NMCFolderWizardSourcePage::setDefaultSettings()
{
groupBox->setVisible(false);
}

void NMCFolderWizardSourcePage::changeLayout()
{
gridLayout_2->setMargin(0);

QLabel *stepLabel = new QLabel();
stepLabel->setText(QCoreApplication::translate("", "ADD_LIVE_BACKUP_HEADLINE"));
stepLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
stepLabel->setStyleSheet("QLabel{color: black; font-size: 13px; font-weight: bold;}");

gridLayout_2->addWidget(stepLabel, 0, 0, Qt::AlignTop | Qt::AlignLeft);

QWidget *mainLayoutWidget = new QWidget();
mainLayoutWidget->setStyleSheet("");

auto *whiteLayout = new QGridLayout;
mainLayoutWidget->setObjectName("mainLayoutWidget");
mainLayoutWidget->setStyleSheet("QWidget#mainLayoutWidget { background-color: white; border-radius: 4px;}");
mainLayoutWidget->setLayout(whiteLayout);

QLabel *textLabel = new QLabel();
textLabel->setText(QCoreApplication::translate("", "ADD_LIVE_BACKUP_PAGE1_DESCRIPTION"));
textLabel->setWordWrap(true);
textLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);

whiteLayout->addWidget(textLabel, 0, 0);

gridLayout_2->removeWidget(localFolderLineEdit);
localFolderLineEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
whiteLayout->addWidget(localFolderLineEdit, 1, 0);

localFolderChooseBtn->setAutoDefault(true);
localFolderChooseBtn->setDefault(true);
localFolderChooseBtn->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
//localFolderChooseBtn->setFixedHeight(10);
whiteLayout->addWidget(localFolderChooseBtn, 1, 1);

gridLayout_2->addWidget(mainLayoutWidget, 1, 0, 1, 3);

gridLayout_2->removeWidget(warnLabel);
gridLayout_2->addWidget(warnLabel, 2, 0, 1, 3);

warnLabel->setStyleSheet("border: 0px; border-radius: 4px; background-color: #fee2d0");

gridLayout_2->removeItem(verticalSpacer);
gridLayout_2->addItem(verticalSpacer, 3, 0, 1, 3);
}

} // end namespace



57 changes: 57 additions & 0 deletions src/gui/nmcgui/nmcfolderwizardsourcepage.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
/*
* Copyright (C) by Eugen Fischer
*
* 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 MIRALL_NMCFolderWizardSourcePage_H
#define MIRALL_NMCFolderWizardSourcePage_H

#include "ui_folderwizardsourcepage.h"

/**
* @brief The NMCFolderWizardSourcePage class represents a source page for the NMCFolderWizard.
* @ingroup gui
*
* The NMCFolderWizardSourcePage class is derived from the Ui::FolderWizardSourcePage class and provides
* additional functionality specific to the NMCFolderWizard in the NMC application (replace with the actual application name).
*/

namespace OCC {

class NMCFolderWizardSourcePage : public ::Ui::FolderWizardSourcePage
{

public:
/**
* @brief Constructs an instance of NMCFolderWizardSourcePage.
*/
explicit NMCFolderWizardSourcePage();

/**
* @brief Destroys the NMCFolderWizardSourcePage instance.
*/
~NMCFolderWizardSourcePage() = default;

/**
* @brief Sets default settings for the NMCFolderWizardSourcePage.
*/
void setDefaultSettings();

/**
* @brief Changes the layout of the NMCFolderWizardSourcePage.
*/
void changeLayout();
};

} // namespace OCC

#endif
Loading

0 comments on commit 1a533d5

Please sign in to comment.