Skip to content

Commit

Permalink
account settings dialog changes
Browse files Browse the repository at this point in the history
  • Loading branch information
memurats committed Aug 13, 2024
1 parent 66c355a commit 613c4b3
Show file tree
Hide file tree
Showing 11 changed files with 321 additions and 7 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -190,3 +190,6 @@ convert.exe
*-w10startmenu.png
*state-*.png
theme.qrc

# Ignore specific folders
shell_integration/MacOSX/NextcloudIntegration/NextcloudIntegration.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/
4 changes: 4 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ set(CMAKE_XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME YES)

set(BIN_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")

set(NMC_RCC_FILE "nmctheme_v1.rcc")
configure_file(${CMAKE_SOURCE_DIR}/${NMC_RCC_FILE} "${BIN_OUTPUT_DIRECTORY}/${NMC_RCC_FILE}" COPYONLY)

include(${CMAKE_SOURCE_DIR}/NEXTCLOUD.cmake)

# CfAPI Shell Extensions
Expand Down Expand Up @@ -303,6 +306,7 @@ configure_file(version.h.in ${CMAKE_CURRENT_BINARY_DIR}/version.h)
if(BUILD_OWNCLOUD_OSX_BUNDLE)
install(FILES sync-exclude.lst DESTINATION ${OWNCLOUD_OSX_BUNDLE}/Contents/Resources/)
configure_file(sync-exclude.lst bin/${OWNCLOUD_OSX_BUNDLE}/Contents/Resources/sync-exclude.lst COPYONLY)
install(FILES nmctheme_v1.rcc DESTINATION ${OWNCLOUD_OSX_BUNDLE}/Contents/Resources/)
elseif(BUILD_CLIENT)
install( FILES sync-exclude.lst DESTINATION ${SYSCONFDIR}/${APPLICATION_SHORTNAME} )
configure_file(sync-exclude.lst bin/sync-exclude.lst COPYONLY)
Expand Down
Binary file added nmctheme_v1.rcc
Binary file not shown.
8 changes: 8 additions & 0 deletions src/gui/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ find_package(Qt5 REQUIRED COMPONENTS Widgets Svg Qml Quick QuickControls2 QuickW
find_package(KF5Archive REQUIRED)
find_package(KF5GuiAddons)

#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 Expand Up @@ -261,6 +264,10 @@ set(client_SRCS
wizard/linklabel.cpp
)

file(GLOB NMC_FILES "nmcgui/*")
set(NMC_SRCS ${NMC_FILES})
list(APPEND client_SRCS ${NMC_SRCS})

if (Qt5WebEngine_FOUND AND Qt5WebEngineWidgets_FOUND)
list(APPEND client_SRCS
wizard/webviewpage.h
Expand Down Expand Up @@ -623,6 +630,7 @@ if(NOT BUILD_OWNCLOUD_OSX_BUNDLE)
install(FILES ${VISUAL_ELEMENTS} DESTINATION bin/visualelements)
install(FILES "${theme_dir}/${APPLICATION_EXECUTABLE}.VisualElementsManifest.xml" DESTINATION bin)
install(FILES ${client_I18N} DESTINATION i18n)
install(FILES ${CMAKE_SOURCE_DIR}/nmctheme_v1.rcc DESTINATION bin)
endif()

# we may not add MACOSX_BUNDLE here, if not building one
Expand Down
7 changes: 5 additions & 2 deletions src/gui/accountsettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1134,7 +1134,7 @@ void AccountSettings::showConnectionLabel(const QString &message, QStringList er
_ui->connectLabel->setToolTip({});
_ui->connectLabel->setStyleSheet(errStyle);
}
_ui->accountStatus->setVisible(!message.isEmpty());
//_ui->accountStatus->setVisible(!message.isEmpty()); //NMC Customization
}

void AccountSettings::slotEnableCurrentFolder(bool terminate)
Expand Down Expand Up @@ -1230,9 +1230,10 @@ void AccountSettings::slotUpdateQuota(qint64 total, qint64 used)
const auto totalStr = Utility::octetsToString(total);
const auto percentStr = Utility::compactFormatDouble(percent, 1);
const auto toolTip = tr("%1 (%3%) of %2 in use. Some folders, including network mounted or shared folders, might have different limits.").arg(usedStr, totalStr, percentStr);
_ui->quotaInfoLabel->setText(tr("%1 of %2 in use").arg(usedStr, totalStr));
_ui->quotaInfoLabel->setText(QCoreApplication::translate("", "%1_OF_%2").arg(usedStr, totalStr));
_ui->quotaInfoLabel->setToolTip(toolTip);
_ui->quotaProgressBar->setToolTip(toolTip);
_ui->quotaInfoText->setText(QCoreApplication::translate("", "USED_STORAGE_%1").arg(percentStr));
} else {
_ui->quotaProgressBar->setVisible(false);
_ui->quotaInfoLabel->setToolTip({});
Expand All @@ -1244,6 +1245,8 @@ void AccountSettings::slotUpdateQuota(qint64 total, qint64 used)
const auto usedStr = Utility::octetsToString(used);
_ui->quotaInfoLabel->setText(tr("%1 in use").arg(usedStr));
}

_ui->quotaInfoText->setText(QCoreApplication::translate("", "USED_STORAGE_%1").arg(QString::number(0)));
}
}

Expand Down
8 changes: 7 additions & 1 deletion src/gui/accountsettings.h
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ protected slots:
void slotSelectiveSyncChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight,
const QVector<int> &roles);
void slotPossiblyUnblacklistE2EeFoldersAndRestartSync();
void checkClientSideEncryptionState(); //NMC customization, we need acces to it

private slots:
void updateBlackListAndScheduleFolderSync(const QStringList &blackList, OCC::Folder *folder, const QStringList &foldersToRemoveFromBlacklist) const;
Expand All @@ -129,9 +130,14 @@ private slots:

void initializeE2eEncryption();
void resetE2eEncryption();
void checkClientSideEncryptionState();
void removeActionFromEncryptionMessage(const QString &actionId);

protected:
Ui::AccountSettings *getUi() const
{
return _ui;
}

private:
bool event(QEvent *) override;
QAction *addActionToEncryptionMessage(const QString &actionTitle, const QString &actionId);
Expand Down
21 changes: 20 additions & 1 deletion src/gui/accountsettings.ui
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<string notr="true">Form</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="2" column="0">
<item row="3" column="0">
<layout class="QHBoxLayout" name="storageGroupBox">
<item>
<widget class="QLabel" name="quotaInfoLabel">
Expand Down Expand Up @@ -66,6 +66,25 @@
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="quotaInfoText">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>0% of memory used</string>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</item>
<item row="4" column="0">
Expand Down
12 changes: 12 additions & 0 deletions src/gui/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,18 @@ int main(int argc, char **argv)
#ifdef Q_OS_WIN
SetDllDirectory(L"");
#endif

bool resourceLoaded = false;
const QString currentPath = QDir::currentPath();
if(Utility::isMac())
{
resourceLoaded = QResource::registerResource(QDir::toNativeSeparators("/Applications/MagentaCLOUD.app/Contents/Resources/nmctheme_v1.rcc"));
}
else if(Utility::isWindows() || !resourceLoaded)
{
resourceLoaded = QResource::registerResource(QDir::toNativeSeparators(currentPath + "/nmctheme_v1.rcc"));
}

Q_INIT_RESOURCE(resources);
Q_INIT_RESOURCE(theme);

Expand Down
147 changes: 147 additions & 0 deletions src/gui/nmcgui/nmcaccountsettings.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
/*
* 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 "nmcgui/nmcaccountsettings.h"
#include "ui_accountsettings.h"
#include "../common/utility.h"
#include "guiutility.h"
#include "qdesktopservices.h"


namespace OCC {

NMCAccountSettings::NMCAccountSettings(AccountState *accountState, QWidget *parent)
: AccountSettings(accountState, parent)
, m_liveAccountButton(new CustomButton(QCoreApplication::translate("", "ADD_LIVE_BACKUP"), QIcon(QLatin1String(":/client/theme/NMCIcons/action-add.svg")).pixmap(24,24)))
, m_liveTitle(new QLabel(QCoreApplication::translate("", "LIVE_BACKUPS")))
, m_liveDescription(new QLabel(QCoreApplication::translate("", "LIVE_DESCRIPTION")))
, m_folderSync(new QLabel(QCoreApplication::translate("", "YOUR_FOLDER_SYNC")))
{
setDefaultSettings();
setLayout();
connect(m_liveAccountButton, &CustomButton::clicked, this, &NMCAccountSettings::slotAddFolder);
}

void NMCAccountSettings::setDefaultSettings()
{
//Set default settings
getUi()->encryptionMessage->setCloseButtonVisible(true);
getUi()->selectiveSyncStatus->setVisible(false);
getUi()->selectiveSyncNotification->setVisible(false);
getUi()->accountStatus->setVisible(false);
getUi()->bigFolderUi->setVisible(false);
getUi()->gridLayout->setSpacing(8);
}

void NMCAccountSettings::setLayout()
{
//Fix layout
getUi()->storageGroupBox->removeWidget(getUi()->quotaInfoLabel);
getUi()->storageGroupBox->removeWidget(getUi()->quotaProgressBar);
getUi()->storageGroupBox->removeWidget(getUi()->quotaInfoText);

getUi()->gridLayout->removeWidget(getUi()->encryptionMessage);
getUi()->gridLayout->addWidget(getUi()->encryptionMessage, 0, 0);

//getUi()->gridLayout->addWidget(new QLabel(""), 1, 0); //Spacer

//Title
m_folderSync->setStyleSheet("font-size: 15px; font-weight: 600; padding: 8px;"); //Semi-bold
m_folderSync->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
getUi()->gridLayout->addWidget(m_folderSync, 1, 0);

//Live backup area encryptionMessage
auto *liveHLayout = new QHBoxLayout(this);
liveHLayout->setContentsMargins(8,8,8,8);
auto *liveVLayout = new QVBoxLayout(this);
auto *liveWidget = new QWidget(this);

liveWidget->setStyleSheet("QWidget {background-color: white;border-radius: 4px;}");
liveWidget->setLayout(liveHLayout);
liveHLayout->addLayout(liveVLayout);

liveHLayout->addSpacerItem(new QSpacerItem(1,1, QSizePolicy::Expanding, QSizePolicy::Fixed));

const QString styleSheet("QPushButton{ font-size: %5px; border: %1px solid; border-color: black; border-radius: 4px; background-color: %2; color: %3;} QPushButton:hover { background-color: %4; }" );
m_liveAccountButton->setStyleSheet(styleSheet.arg("0","#E20074","white", "#c00063", "13"));
m_liveAccountButton->setFixedSize(180, 32);
m_liveAccountButton->setLeftIconMargin(4);
liveHLayout->addWidget(m_liveAccountButton);

liveVLayout->addWidget(m_liveTitle);
m_liveTitle->setStyleSheet("font-size: 15px; font-weight: 600;"); //Semi-bold
liveVLayout->addWidget(m_liveDescription);
m_liveDescription->setStyleSheet("font-size: 13px;");
m_liveDescription->setText(QCoreApplication::translate("", "LIVE_BACKUPS_DESCRIPTION"));
m_liveDescription->setWordWrap(true);
m_liveDescription->setFixedWidth(450);

getUi()->gridLayout->addWidget(liveWidget, 4, 0);

//Storage area
auto *magentaHLayout = new QHBoxLayout(this);
magentaHLayout->setSpacing(32);

auto *quotaVLayout = new QVBoxLayout(this);
quotaVLayout->setSpacing(4);

quotaVLayout->addSpacerItem(new QSpacerItem(1,12, QSizePolicy::Fixed, QSizePolicy::Fixed));
quotaVLayout->addWidget(getUi()->quotaInfoLabel);
getUi()->quotaInfoLabel->setStyleSheet("QLabel{font-size: 18px; padding: 8px; font-weight: 500;}");
quotaVLayout->addWidget(getUi()->quotaProgressBar);
getUi()->quotaProgressBar->setStyleSheet("QProgressBar {"
" background-color: #e5e5e5;"
" color: black;"
" border-width: 1px;"
" border-color: black;"
" border-radius: 4px;"
"}"

"QProgressBar::chunk {"
" background-color: #ea0a8e; }");
getUi()->quotaProgressBar->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
quotaVLayout->addWidget(getUi()->quotaInfoText);
getUi()->quotaInfoText->setStyleSheet("QLabel{font-size: 13px; padding: 8px;}");

quotaVLayout->addSpacerItem(new QSpacerItem(1,20, QSizePolicy::Fixed, QSizePolicy::Fixed));

magentaHLayout->addLayout(quotaVLayout);

auto *storageLinkButton = new QPushButton(QCoreApplication::translate("", "STORAGE_EXTENSION"), this);
storageLinkButton->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
storageLinkButton->setStyleSheet("QPushButton {"
" height: 32px;"
" width: 180px;"
" border: 1px solid black;"
" background-color: #ededed;"
" font-size: 13px;"
" border-radius: 4px;"
"} QPushButton::hover {"
" background-color: white;"
"}");
connect(storageLinkButton, &QPushButton::clicked, this, [](){
QDesktopServices::openUrl(QUrl("https://cloud.telekom-dienste.de/tarife"));
});
magentaHLayout->addWidget(storageLinkButton);
magentaHLayout->addSpacerItem(new QSpacerItem(8,1, QSizePolicy::Fixed, QSizePolicy::Fixed));

getUi()->gridLayout->addLayout(magentaHLayout, 5, 0);

//We need these, because our widget becomes visibe, when we add it to our layout (due to parent), but in accountsettings its forced to be invisible at first.
//We do here the same and check if the visibility is needed or not.
getUi()->encryptionMessage->hide();
checkClientSideEncryptionState();
}

} // namespace OCC
Loading

0 comments on commit 613c4b3

Please sign in to comment.