Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions cmake/modules/FindLibGit2.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# SPDX-License-Identifier: BSD-3-Clause

find_package(PkgConfig QUIET)
pkg_check_modules(PC_LibGit2 QUIET libgit2)

find_path(LibGit2_INCLUDE_DIR
NAMES git2.h
HINTS ${PC_LibGit2_INCLUDE_DIRS}
)

find_library(LibGit2_LIBRARY
NAMES git2 libgit2
HINTS ${PC_LibGit2_LIBRARY_DIRS}
)

if(LibGit2_INCLUDE_DIR)
file(STRINGS "${LibGit2_INCLUDE_DIR}/git2/version.h" _libgit2_version_line
REGEX "#define LIBGIT2_VERSION \"[^\"]+\""
)
string(REGEX REPLACE ".*\"([^\"]+)\".*" "\\1" LibGit2_VERSION "${_libgit2_version_line}")
endif()

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LibGit2
REQUIRED_VARS LibGit2_LIBRARY LibGit2_INCLUDE_DIR
VERSION_VAR LibGit2_VERSION
)

if(LibGit2_FOUND AND NOT TARGET LibGit2::LibGit2)
add_library(LibGit2::LibGit2 UNKNOWN IMPORTED)
set_target_properties(LibGit2::LibGit2 PROPERTIES
IMPORTED_LOCATION "${LibGit2_LIBRARY}"
INTERFACE_INCLUDE_DIRECTORIES "${LibGit2_INCLUDE_DIR}"
)
endif()

mark_as_advanced(LibGit2_INCLUDE_DIR LibGit2_LIBRARY)
5 changes: 5 additions & 0 deletions src/gui/generalsettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,10 @@ GeneralSettings::GeneralSettings(QWidget *parent)
ConfigFile().setMoveToTrash(checked);
Q_EMIT syncOptionsChanged();
});
connect(_ui->autoMergeTextConflictsCheckBox, &QCheckBox::toggled, this, [this](bool checked) {
ConfigFile().setAutoMergeTextConflicts(checked);
Q_EMIT syncOptionsChanged();
});

connect(_ui->ignoredFilesButton, &QAbstractButton::clicked, this, &GeneralSettings::slotIgnoreFilesEditor);
connect(_ui->logSettingsButton, &QPushButton::clicked, this, [] {
Expand Down Expand Up @@ -136,6 +140,7 @@ void GeneralSettings::reloadConfig()
{
_ui->syncHiddenFilesCheckBox->setChecked(!FolderMan::instance()->ignoreHiddenFiles());
_ui->moveToTrashCheckBox->setChecked(ConfigFile().moveToTrash());
_ui->autoMergeTextConflictsCheckBox->setChecked(ConfigFile().autoMergeTextConflicts());
if (Utility::isWindows() && Utility::isInstalledByStore()) {
_ui->autostartCheckBox->setVisible(false);
} else {
Expand Down
8 changes: 8 additions & 0 deletions src/gui/generalsettings.ui
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,13 @@
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="autoMergeTextConflictsCheckBox">
<property name="text">
<string>Automatically merge text file conflicts when possible</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<item>
Expand Down Expand Up @@ -242,6 +249,7 @@
<tabstop>syncHiddenFilesCheckBox</tabstop>
<tabstop>crashreporterCheckBox</tabstop>
<tabstop>moveToTrashCheckBox</tabstop>
<tabstop>autoMergeTextConflictsCheckBox</tabstop>
<tabstop>ignoredFilesButton</tabstop>
<tabstop>logSettingsButton</tabstop>
<tabstop>widget</tabstop>
Expand Down
8 changes: 8 additions & 0 deletions src/libsync/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
find_package(LibreGraphAPI 1.0.4 REQUIRED)
find_package(LibGit2 REQUIRED)
set_package_properties(LibreGraphAPI PROPERTIES
URL https://github.com/owncloud/libre-graph-api-cpp-qt-client.git
DESCRIPTION "Libre Graph is a free API for cloud collaboration inspired by the MS Graph API"
TYPE REQUIRED
)
set_package_properties(LibGit2 PROPERTIES
URL https://libgit2.org
DESCRIPTION "Portable Git library used for three-way text conflict automerge"
TYPE REQUIRED
)

configure_file(config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)

Expand All @@ -23,6 +29,7 @@ add_library(libsync SHARED
logger.cpp
accessmanager.cpp
configfile.cpp
conflictautomerge.cpp
globalconfig.cpp
abstractnetworkjob.cpp
networkjobs.cpp
Expand Down Expand Up @@ -101,6 +108,7 @@ target_link_libraries(libsync
PRIVATE
Qt::Concurrent
ZLIB::ZLIB
LibGit2::LibGit2
Qt6Keychain::Qt6Keychain
SQLite::SQLite3
)
Expand Down
11 changes: 11 additions & 0 deletions src/libsync/configfile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ const QString pauseSyncWhenMeteredC()
return QStringLiteral("pauseWhenMetered");
}
const QString moveToTrashC() { return QStringLiteral("moveToTrash"); }
const QString autoMergeTextConflictsC() { return QStringLiteral("autoMergeTextConflicts"); }

const QString issuesWidgetFilterC()
{
Expand Down Expand Up @@ -432,6 +433,16 @@ void ConfigFile::setMoveToTrash(bool isChecked)
setValue(moveToTrashC(), isChecked);
}

bool ConfigFile::autoMergeTextConflicts() const
{
return getValue(autoMergeTextConflictsC(), false).toBool();
}

void ConfigFile::setAutoMergeTextConflicts(bool isChecked)
{
setValue(autoMergeTextConflictsC(), isChecked);
}

bool ConfigFile::crashReporter() const
{
auto settings = makeQSettings();
Expand Down
4 changes: 4 additions & 0 deletions src/libsync/configfile.h
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,10 @@ class OPENCLOUD_SYNC_EXPORT ConfigFile
bool moveToTrash() const;
void setMoveToTrash(bool);

/** Whether text file conflicts should be automatically merged when possible. */
bool autoMergeTextConflicts() const;
void setAutoMergeTextConflicts(bool);

/// Used for testing, so we do not change the user's config file.
static bool setConfDir(const QString &value);

Expand Down
Loading