mirror of
https://github.com/ZoiteChat/zoitechat.git
synced 2026-03-21 05:00:19 +00:00
67 lines
1.3 KiB
C
67 lines
1.3 KiB
C
|
|
#include "preferences-persistence.h"
|
||
|
|
|
||
|
|
#include "../common/cfgfiles.h"
|
||
|
|
#include "theme/theme-runtime.h"
|
||
|
|
|
||
|
|
PreferencesPersistenceResult
|
||
|
|
preferences_persistence_save_all (void)
|
||
|
|
{
|
||
|
|
PreferencesPersistenceResult result;
|
||
|
|
char *config_temp;
|
||
|
|
char *theme_temp;
|
||
|
|
|
||
|
|
result.success = FALSE;
|
||
|
|
result.retry_possible = TRUE;
|
||
|
|
result.partial_failure = FALSE;
|
||
|
|
result.config_failed = FALSE;
|
||
|
|
result.theme_failed = FALSE;
|
||
|
|
result.failed_file = NULL;
|
||
|
|
config_temp = NULL;
|
||
|
|
theme_temp = NULL;
|
||
|
|
|
||
|
|
if (!save_config_prepare (&config_temp))
|
||
|
|
{
|
||
|
|
result.config_failed = TRUE;
|
||
|
|
goto done;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (!theme_runtime_save_prepare (&theme_temp))
|
||
|
|
{
|
||
|
|
result.theme_failed = TRUE;
|
||
|
|
goto done;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (!save_config_finalize (config_temp))
|
||
|
|
{
|
||
|
|
result.config_failed = TRUE;
|
||
|
|
goto done;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (!theme_runtime_save_finalize (theme_temp))
|
||
|
|
{
|
||
|
|
result.theme_failed = TRUE;
|
||
|
|
result.partial_failure = TRUE;
|
||
|
|
goto done;
|
||
|
|
}
|
||
|
|
|
||
|
|
result.success = TRUE;
|
||
|
|
|
||
|
|
done:
|
||
|
|
if (!result.success)
|
||
|
|
{
|
||
|
|
if (result.config_failed && result.theme_failed)
|
||
|
|
result.failed_file = "zoitechat.conf and colors.conf";
|
||
|
|
else if (result.config_failed)
|
||
|
|
result.failed_file = "zoitechat.conf";
|
||
|
|
else if (result.theme_failed)
|
||
|
|
result.failed_file = "colors.conf";
|
||
|
|
}
|
||
|
|
|
||
|
|
save_config_discard (config_temp);
|
||
|
|
theme_runtime_save_discard (theme_temp);
|
||
|
|
g_free (config_temp);
|
||
|
|
g_free (theme_temp);
|
||
|
|
|
||
|
|
return result;
|
||
|
|
}
|