Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
d23ee1c
Rename consent form
ThomasKroes Apr 28, 2025
3ac2523
Rename error logging consent dialog
ThomasKroes Apr 28, 2025
8c748af
Rename app features consent dialog and modify cmake
ThomasKroes Apr 28, 2025
f73ec0d
Rename app features consent dialog
ThomasKroes Apr 28, 2025
0c5a167
Add app features dialog to dedicated source gorup and remove unnecess…
ThomasKroes Apr 28, 2025
0f2715f
Rename error logging consent dialog
ThomasKroes Apr 28, 2025
36ef746
Load correct app features HTML file
ThomasKroes Apr 28, 2025
337a46f
Change app features HTML resource and removed unused include
ThomasKroes Apr 28, 2025
d2e6b48
Rename error logging settings action
ThomasKroes Apr 28, 2025
0dd651f
Modify cmake accordingly
ThomasKroes Apr 28, 2025
95f339f
Further refactor of error logging classes and added app feature actio…
ThomasKroes May 2, 2025
0838d27
Remove redundant friend declaration and comment unused member functions
ThomasKroes May 2, 2025
285be81
Add dynamic content app feature action
ThomasKroes May 2, 2025
69dafa1
Work on app feature implementation
ThomasKroes May 2, 2025
fc024c5
Work on app feature action class
ThomasKroes May 2, 2025
0db33c5
Fix app featurre action overload and work on dynamic content app feat…
ThomasKroes May 2, 2025
77b5a9e
Refactor
ThomasKroes May 2, 2025
c6a41ec
Add other dynamic content app feature actions and add app feature tog…
ThomasKroes May 2, 2025
2837814
Merge branch 'master' into feature/app_features
ThomasKroes May 2, 2025
d8e3b66
Merge branch 'master' into feature/app_features
ThomasKroes May 2, 2025
3afaef2
Group several app features into downloadable content app features
ThomasKroes May 2, 2025
4890c32
Merge branch 'master' into feature/app_features
ThomasKroes May 2, 2025
03025bb
Work on downloadable content app feature
ThomasKroes May 2, 2025
f322867
Merge branch 'master' into feature/app_features
ThomasKroes May 2, 2025
fa70ba7
Fix downloadable content
ThomasKroes May 2, 2025
b519a48
Work on app feature action and some re-structuring
ThomasKroes May 6, 2025
3d4e8da
App featur action is working properly now
ThomasKroes May 6, 2025
bd32b93
Conditionally hide the settings action
ThomasKroes May 6, 2025
7031f86
Move error logging DSN and other parameters to the error logging app …
ThomasKroes May 6, 2025
cdf91d1
Cleanup error logging app feature class
ThomasKroes May 6, 2025
f38347c
Streamline settings IO
ThomasKroes May 6, 2025
18015b2
Several improvements:
ThomasKroes May 8, 2025
9c4a139
Use tutorials app feature setting in the start page
ThomasKroes May 8, 2025
bdec6a0
Only show videos and tutorials help menus when the corresponding app …
ThomasKroes May 8, 2025
90145ee
Use the tutorials app feature in the tutorials model
ThomasKroes May 8, 2025
c329354
Use videos and tutorials app features in the learning center
ThomasKroes May 8, 2025
6e8572c
Add videos dsns action to plugin factory
ThomasKroes May 8, 2025
ea54ae5
Removed redundant file downloader from the help manager (relocate to …
ThomasKroes May 8, 2025
135ae80
Videos learning center model now uses the videos app feature
ThomasKroes May 8, 2025
14710c7
Automatically toggle videos and tutorials sections of the start and l…
ThomasKroes May 8, 2025
987fc02
Change projects disclaimer
ThomasKroes Jul 9, 2025
298c2b6
Merge branch 'master' into feature/app_features
ThomasKroes Jul 9, 2025
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
18 changes: 16 additions & 2 deletions ManiVault/cmake/CMakeMvSourcesApplication.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,6 @@ if(MV_USE_ERROR_LOGGING)
list(APPEND PRIVATE_APPLICATION_HEADERS
src/private/SentryErrorLogger.h
src/private/CrashReportDialog.h
src/private/ErrorLoggingConsentDialog.h
)
endif()

Expand All @@ -320,7 +319,6 @@ if(MV_USE_ERROR_LOGGING)
list(APPEND PRIVATE_APPLICATION_SOURCES
src/private/SentryErrorLogger.cpp
src/private/CrashReportDialog.cpp
src/private/ErrorLoggingConsentDialog.cpp
)
endif()

Expand All @@ -329,6 +327,19 @@ set(PRIVATE_APPLICATION_FILES
${PRIVATE_APPLICATION_SOURCES}
)

set(PRIVATE_APP_FEATURES_HEADERS
src/private/AppFeaturesDialog.h
)

set(PRIVATE_APP_FEATURES_SOURCES
src/private/AppFeaturesDialog.cpp
)

set(PRIVATE_APP_FEATURES_FILES
${PRIVATE_APP_FEATURES_HEADERS}
${PRIVATE_APP_FEATURES_SOURCES}
)

set(PRIVATE_STARTUP_PROJECT_HEADERS
src/private/StartupProjectsModel.h
src/private/StartupProjectsFilterModel.h
Expand Down Expand Up @@ -448,6 +459,7 @@ set(PRIVATE_HEADERS
${PRIVATE_MISCELLANEOUS_HEADERS}
${PRIVATE_ACTIONS_HEADERS}
${PRIVATE_STARTUP_PROJECT_HEADERS}
${PRIVATE_APP_FEATURES_HEADERS}
)

set(PRIVATE_SOURCES
Expand All @@ -460,6 +472,7 @@ set(PRIVATE_SOURCES
${PRIVATE_MISCELLANEOUS_SOURCES}
${PRIVATE_ACTIONS_SOURCES}
${PRIVATE_STARTUP_PROJECT_SOURCES}
${PRIVATE_APP_FEATURES_SOURCES}
${PRIVATE_HEADERS}
)

Expand All @@ -469,6 +482,7 @@ list(REMOVE_DUPLICATES PRIVATE_SOURCES)
source_group(Core FILES ${PRIVATE_CORE_FILES})
source_group(Actions FILES ${PRIVATE_ACTION_FILES})
source_group(Application FILES ${PRIVATE_APPLICATION_FILES} ${MAIN_SOURCES})
source_group(AppFeatures FILES ${PRIVATE_APP_FEATURES_FILES})
source_group(StartupProject FILES ${PRIVATE_STARTUP_PROJECT_FILES})
source_group(Managers\\Layout FILES ${PRIVATE_LAYOUT_MANAGER_FILES})
source_group(Managers\\Plugin FILES ${PRIVATE_PLUGIN_MANAGER_FILES})
Expand Down
28 changes: 26 additions & 2 deletions ManiVault/cmake/CMakeMvSourcesPublic.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -315,6 +315,27 @@ set(PUBLIC_TASK_ACTIONS_FILES
${PUBLIC_TASK_ACTIONS_SOURCES}
)

set(PUBLIC_APP_FEATURE_ACTIONS_HEADERS
src/actions/AppFeatureAction.h
src/actions/ErrorLoggingAppFeatureAction.h
src/actions/TutorialsAppFeatureAction.h
src/actions/ProjectsAppFeatureAction.h
src/actions/VideosAppFeatureAction.h
)

set(PUBLIC_APP_FEATURE_ACTIONS_SOURCES
src/actions/AppFeatureAction.cpp
src/actions/ErrorLoggingAppFeatureAction.cpp
src/actions/TutorialsAppFeatureAction.cpp
src/actions/ProjectsAppFeatureAction.cpp
src/actions/VideosAppFeatureAction.cpp
)

set(PUBLIC_APP_FEATURE_ACTIONS_FILES
${PUBLIC_APP_FEATURE_ACTIONS_HEADERS}
${PUBLIC_APP_FEATURE_ACTIONS_SOURCES}
)

set(PUBLIC_ACTIONS_INTERNAL_HEADERS
src/actions/WidgetAction.h
src/actions/WidgetActionWidget.h
Expand Down Expand Up @@ -1021,7 +1042,7 @@ set(PUBLIC_GLOBAL_SETTINGS_HEADERS
src/TasksSettingsAction.h
src/AppearanceSettingsAction.h
src/TemporaryDirectoriesSettingsAction.h
src/ErrorLoggingSettingsAction.h
src/AppFeaturesSettingsAction.h
src/PluginGlobalSettingsGroupAction.h
)

Expand All @@ -1032,7 +1053,7 @@ set(PUBLIC_GLOBAL_SETTINGS_SOURCES
src/TasksSettingsAction.cpp
src/AppearanceSettingsAction.cpp
src/TemporaryDirectoriesSettingsAction.cpp
src/ErrorLoggingSettingsAction.cpp
src/AppFeaturesSettingsAction.cpp
src/PluginGlobalSettingsGroupAction.cpp
)

Expand Down Expand Up @@ -1106,6 +1127,7 @@ set(PUBLIC_HEADERS
${PUBLIC_TOOLBAR_ACTIONS_HEADERS}
${PUBLIC_MISCELLANEOUS_ACTIONS_HEADERS}
${PUBLIC_TASK_ACTIONS_HEADERS}
${PUBLIC_APP_FEATURE_ACTIONS_HEADERS}
${PUBLIC_ACTIONS_INTERNAL_HEADERS}
${PUBLIC_WIDGETS_HEADERS}
${PUBLIC_WIDGETS_INTERNAL_HEADERS}
Expand Down Expand Up @@ -1155,6 +1177,7 @@ set(PUBLIC_SOURCES
${PUBLIC_TOOLBAR_ACTIONS_SOURCES}
${PUBLIC_MISCELLANEOUS_ACTIONS_SOURCES}
${PUBLIC_TASK_ACTIONS_SOURCES}
${PUBLIC_APP_FEATURE_ACTIONS_SOURCES}
${PUBLIC_ACTIONS_INTERNAL_SOURCES}
${PUBLIC_WIDGETS_SOURCES}
${PUBLIC_WIDGETS_INTERNAL_SOURCES}
Expand Down Expand Up @@ -1218,6 +1241,7 @@ source_group(Actions\\Toolbar FILES ${PUBLIC_TOOLBAR_ACTIONS_FILES})
source_group(Actions\\Miscellaneous FILES ${PUBLIC_MISCELLANEOUS_ACTIONS_FILES})
source_group(Actions\\Task FILES ${PUBLIC_TASK_ACTIONS_FILES})
source_group(Actions\\Internal FILES ${PUBLIC_ACTIONS_INTERNAL_FILES})
source_group(Actions\\AppFeature FILES ${PUBLIC_APP_FEATURE_ACTIONS_FILES})
source_group(Widgets FILES ${PUBLIC_WIDGETS_FILES})
source_group(Widgets\\Internal FILES ${PUBLIC_WIDGETS_INTERNAL_FILES})
source_group(Renderers FILES ${PUBLIC_RENDERERS_FILES})
Expand Down
5 changes: 4 additions & 1 deletion ManiVault/res/ResourcesCore.qrc
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,10 @@
</qresource>
<qresource prefix="/HTML">
<file alias="Markdown">html/markdown.html</file>
<file alias="ErrorLoggingConsent">html/ErrorLoggingConsent.html</file>
<file alias="AppFeatureErrorLogging">html/AppFeatureErrorLogging.html</file>
<file alias="AppFeatureProjects">html/AppFeatureProjects.html</file>
<file alias="AppFeatureTutorials">html/AppFeatureTutorials.html</file>
<file alias="AppFeatureVideos">html/AppFeatureVideos.html</file>
</qresource>
<qresource prefix="/JSON">
<file alias="TutorialsSchema">json/tutorials.schema.json</file>
Expand Down
19 changes: 19 additions & 0 deletions ManiVault/res/html/AppFeatureErrorLogging.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<!DOCTYPE html>
<html>
<body style="margin: 15px;">
<h1>Automated error reporting</h1>
<p><b>ManiVault Studio</b> can automatically report bugs and crashes using <a href="https://sentry.io/">Sentry</a>. This might help us fix issues faster and improve the application for everyone.</p>
<p>What we collect:</p>
<ul>
<li>Details about errors (e.g., crash logs, stack traces).</li>
<li>Basic system information (e.g., operating system, app version).</li>
<li>Contact details (if you opt to supply them).</li>
</ul>
<p>What we don’t collect:</p>
<ul>
<li>Personal files like projects or research data.</li>
<li>Sensitive data like passwords.</li>
</ul>
<p>You can opt out of automated error reporting at any time in the application settings.</p>
</body>
</html>
20 changes: 20 additions & 0 deletions ManiVault/res/html/AppFeatureProjects.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<!DOCTYPE html>
<html>
<body style="margin: 15px;">
<h1>Projects</h1>
<p><b>ManiVault Studio</b> can optionally download dynamic projects content. When you enable this feature, the application connects to servers to:</p>
<ul>
<li>Fetch available projects listings.</li>
<li>Download projects.</li>
</ul>
<p>You will find this feature at the start page, and posibly during startup of <b>ManiVault Studio</b>.</p>
<p>Projects listings and projects might originate from:</p>
<ul>
<li>Servers hosted by the ManiVault Studio team.</li>
<li>Servers hosted by third-party plugin developers (i.e. example projects accompanied by plugins).</li>
</ul>
<p>Please note that we do not track which projects you download.</p>
<p>If you prefer not to allow automatic downloads of projects, you can disable this feature at any time in the application settings.</p>
</body>
</html>

20 changes: 20 additions & 0 deletions ManiVault/res/html/AppFeatureTutorials.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<!DOCTYPE html>
<html>
<body style="margin: 15px;">
<h1>Learning center tutorials</h1>
<p>As part of the learning center, <b></b>ManiVault Studio</b> can optionally download dynamic tutorial content. When you enable this feature, the application connects to servers to:</p>
<ul>
<li>Fetch available tutorials listings.</li>
<li>Download tutorial projects.</li>
</ul>
<p>You will find this feature at the start page of <b>ManiVault Studio</b> and in the help menu.</p>
<p>Tutorials listings and projects might originate from:</p>
<ul>
<li>Servers hosted by the ManiVault Studio team.</li>
<li>Servers hosted by third-party plugin developers if the plugins provide tutorials.</li>
</ul>
<p>
<p>Please note that we do not track which tutorials you download.</p>
<p>If you prefer not to allow automatic downloads of start page content, you can disable this feature at any time in the application settings.</p>
</body>
</html>
14 changes: 14 additions & 0 deletions ManiVault/res/html/AppFeatureVideos.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<!DOCTYPE html>
<html>
<body style="margin: 15px;">
<h1>Learning center videos</h1>
<p>As part of the learning center, <b>ManiVault Studio</b> can optionally download dynamic video content. When you enable this feature, the application connects to servers to fetch available videos listings (the videos are watched by opening a browser window). Videos listings might originate from:
<ul>
<li>Servers hosted by the ManiVault Studio team.</li>
<li>Servers hosted by third-party plugin developers.</li>
</ul>
<p>
<p>Please note that we do not track which videos you view.</p>
<p>If you prefer not to allow automatic downloads of videos content, you can disable this feature at any time in the application settings.</p>
</body>
</html>
25 changes: 0 additions & 25 deletions ManiVault/res/html/ErrorLoggingConsent.html

This file was deleted.

1 change: 0 additions & 1 deletion ManiVault/src/AbstractErrorManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,6 @@ class CORE_EXPORT AbstractErrorManager : public AbstractManager
AbstractErrorLogger* _errorLogger; /** Pointer to the error logger */

friend class AbstractErrorLogger;
friend class gui::ErrorLoggingSettingsAction;
};

}
12 changes: 10 additions & 2 deletions ManiVault/src/AbstractSettingsManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@

#include "actions/TriggerAction.h"

#include "AppFeaturesSettingsAction.h"
#include "ParametersSettingsAction.h"
#include "MiscellaneousSettingsAction.h"
#include "TasksSettingsAction.h"
#include "AppearanceSettingsAction.h"
#include "TemporaryDirectoriesSettingsAction.h"
#include "ErrorLoggingSettingsAction.h"
#include "PluginGlobalSettingsGroupAction.h"

namespace mv {
Expand Down Expand Up @@ -56,12 +56,20 @@ class CORE_EXPORT AbstractSettingsManager : public AbstractManager

public: // Global settings actions

//virtual gui::AppFeaturesSettingsAction& getAppFeaturesSettingsAction() = 0;
virtual gui::ParametersSettingsAction& getParametersSettings() = 0;
virtual gui::MiscellaneousSettingsAction& getMiscellaneousSettings() = 0;
virtual gui::TasksSettingsAction& getTasksSettingsAction() = 0;
virtual gui::AppearanceSettingsAction& getAppearanceSettingsAction() = 0;
virtual gui::TemporaryDirectoriesSettingsAction& getTemporaryDirectoriesSettingsAction() = 0;
virtual gui::ErrorLoggingSettingsAction& getErrorLoggingSettingsAction() = 0;

virtual const gui::AppFeaturesSettingsAction& getAppFeaturesSettingsAction() const = 0;
virtual const gui::ParametersSettingsAction& getParametersSettings() const = 0;
virtual const gui::MiscellaneousSettingsAction& getMiscellaneousSettings() const = 0;
virtual const gui::TasksSettingsAction& getTasksSettingsAction() const = 0;
virtual const gui::AppearanceSettingsAction& getAppearanceSettingsAction() const = 0;
virtual const gui::TemporaryDirectoriesSettingsAction& getTemporaryDirectoriesSettingsAction() const = 0;


/**
* Get plugin global settings for plugin \p kind
Expand Down
61 changes: 61 additions & 0 deletions ManiVault/src/AppFeaturesSettingsAction.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
// SPDX-License-Identifier: LGPL-3.0-or-later
// A corresponding LICENSE file is located in the root directory of this source tree
// Copyright (C) 2023 BioVault (Biomedical Visual Analytics Unit LUMC - TU Delft)

#include "AppFeaturesSettingsAction.h"

#include "actions/VerticalGroupAction.h"

namespace mv::gui
{

AppFeaturesSettingsAction::AppFeaturesSettingsAction(QObject* parent) :
GlobalSettingsGroupAction(parent, "App Features", false),
_errorLoggingAppFeatureAction(this),
_projectsAppFeatureAction(this),
_tutorialsAppFeatureAction(this),
_videosAppFeatureAction(this)
{

#ifdef ERROR_LOGGING
addAction(&_errorLoggingAppFeatureAction);
#endif

auto downloadableContentAppFeaturesAction = new VerticalGroupAction(this, "Downloadable Content");

downloadableContentAppFeaturesAction->setShowLabels(false);
downloadableContentAppFeaturesAction->setDefaultWidgetFlag(GroupAction::WidgetFlag::NoMargins);

addAction(&_projectsAppFeatureAction);
addAction(&_tutorialsAppFeatureAction);
addAction(&_videosAppFeatureAction);
}

/*
const gui::TriggerAction& AppFeaturesSettingsAction::getLoggingAskConsentDialogAction() const
{
return mv::errors().getLoggingAskConsentDialogAction();
}

const gui::ToggleAction& AppFeaturesSettingsAction::getUserHasOptedAction() const
{
return mv::errors().getLoggingUserHasOptedAction();
}

const gui::ToggleAction& AppFeaturesSettingsAction::getEnabledAction() const
{
return mv::errors().getLoggingEnabledAction();
}

const gui::StringAction& AppFeaturesSettingsAction::getDsnAction() const
{
return mv::errors().getLoggingDsnAction();
}

const gui::ToggleAction& AppFeaturesSettingsAction::getShowCrashReportDialogAction() const
{
return mv::errors().getLoggingShowCrashReportDialogAction();
}
*/

}
Loading
Loading