Skip to content

Commit 1d0cf12

Browse files
committed
add server name to preset data
This allows to perform an auto-login on preset load
1 parent 8cd41b0 commit 1d0cf12

File tree

1 file changed

+49
-8
lines changed

1 file changed

+49
-8
lines changed

src/imageio/storage/piwigo.c

Lines changed: 49 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,12 @@
4242
#include <unistd.h>
4343
#include <inttypes.h>
4444

45-
DT_MODULE(2)
45+
DT_MODULE(3)
4646

4747
#define piwigo_EXTRA_VERBOSE FALSE
4848

4949
#define MAX_ALBUM_NAME_SIZE 100
50+
#define MAX_SERVER_NAME_SIZE 2048
5051

5152
typedef struct _piwigo_api_context_t
5253
{
@@ -128,6 +129,7 @@ typedef struct dt_storage_piwigo_preset_data_t
128129
char filename_pattern[DT_MAX_PATH_FOR_PARAMS];
129130
dt_storage_piwigo_permissions_t privacy;
130131
dt_storage_piwigo_conflict_actions_t conflict_action;
132+
char server[MAX_SERVER_NAME_SIZE];
131133
} dt_storage_piwigo_preset_data_t;
132134

133135
typedef struct dt_storage_piwigo_params_t
@@ -149,17 +151,17 @@ void *legacy_params(dt_imageio_module_storage_t *self,
149151
int *new_version,
150152
size_t *new_size)
151153
{
152-
typedef struct dt_storage_piwigo_preset_data_v2_t
153-
{
154-
char filename_pattern[DT_MAX_PATH_FOR_PARAMS];
155-
dt_storage_piwigo_permissions_t privacy;
156-
dt_storage_piwigo_conflict_actions_t conflict_action;
157-
} dt_storage_piwigo_preset_data_v2_t;
158-
159154
if(old_version == 1)
160155
{
161156
// version 1 did not save any piwigo settings in the preset,
162157
// so we only need to initialize the data struct here
158+
typedef struct dt_storage_piwigo_preset_data_v2_t
159+
{
160+
char filename_pattern[DT_MAX_PATH_FOR_PARAMS];
161+
dt_storage_piwigo_permissions_t privacy;
162+
dt_storage_piwigo_conflict_actions_t conflict_action;
163+
} dt_storage_piwigo_preset_data_v2_t;
164+
163165
dt_storage_piwigo_preset_data_v2_t *n =
164166
(dt_storage_piwigo_preset_data_v2_t *)g_malloc0(sizeof(dt_storage_piwigo_preset_data_v2_t));
165167

@@ -172,6 +174,28 @@ void *legacy_params(dt_imageio_module_storage_t *self,
172174

173175
return n;
174176
}
177+
else if(old_version == 2)
178+
{
179+
// add server name to params
180+
typedef struct dt_storage_piwigo_preset_data_v3_t
181+
{
182+
char filename_pattern[DT_MAX_PATH_FOR_PARAMS];
183+
dt_storage_piwigo_permissions_t privacy;
184+
dt_storage_piwigo_conflict_actions_t conflict_action;
185+
char server[MAX_SERVER_NAME_SIZE];
186+
} dt_storage_piwigo_preset_data_v3_t;
187+
188+
dt_storage_piwigo_preset_data_v3_t *n =
189+
(dt_storage_piwigo_preset_data_v3_t *)g_malloc0(sizeof(dt_storage_piwigo_preset_data_v3_t));
190+
191+
memcpy(n, old_params, old_params_size);
192+
n->server[0] = '\0';
193+
194+
*new_size = sizeof(dt_storage_piwigo_preset_data_v3_t);
195+
*new_version = 3;
196+
197+
return n;
198+
}
175199

176200
return NULL;
177201
}
@@ -1457,6 +1481,8 @@ void *get_params(dt_imageio_module_storage_t *self)
14571481
// fill p from controls in ui
14581482
const char *text = dt_conf_get_string_const("plugins/imageio/storage/export/piwigo/filename_pattern");
14591483
g_strlcpy(p->preset_data.filename_pattern, text, sizeof(p->preset_data.filename_pattern));
1484+
text = dt_conf_get_string_const("plugins/imageio/storage/export/piwigo/server");
1485+
g_strlcpy(p->preset_data.server, text, sizeof(p->preset_data.server));
14601486

14611487
p->preset_data.conflict_action = dt_bauhaus_combobox_get(ui->conflict_action);
14621488

@@ -1552,6 +1578,21 @@ int set_params(dt_imageio_module_storage_t *self,
15521578
gtk_entry_set_text(GTK_ENTRY(g->filename_pattern_entry), d->preset_data.filename_pattern);
15531579
dt_bauhaus_combobox_set(g->conflict_action, d->preset_data.conflict_action);
15541580

1581+
if(dt_bauhaus_combobox_set_from_text(g->account_list, d->preset_data.server))
1582+
{
1583+
const _piwigo_account_t *account = _piwigo_get_account(g, d->preset_data.server);
1584+
if(account)
1585+
{
1586+
gtk_entry_set_text(g->server_entry, account->server);
1587+
gtk_entry_set_text(g->user_entry, account->username);
1588+
gtk_entry_set_text(g->pwd_entry, account->password);
1589+
1590+
// if we have a server name, do auto-login
1591+
if(dt_conf_get_bool("plugins/imageio/storage/export/auto_login"))
1592+
storage_login(self);
1593+
}
1594+
}
1595+
15551596
switch(d->preset_data.privacy)
15561597
{
15571598
case DT_PIWIGO_PERMISSION_EVERYONE: // everyone

0 commit comments

Comments
 (0)