Esempio n. 1
0
gboolean
sync_run_cli(JamAccountLJ *acc) {
	SyncStatus st = {0}, *status = &st;
	GSList *warnings = NULL, *l;
	GError *err = NULL;
	char *id;
	gboolean success;

	status->account = acc;
	id = jam_account_id_strdup(JAM_ACCOUNT(status->account));
	g_print(_("Synchronizing '%s'..."), id);
	g_print("\n");
	g_free(id);

	success = sync_run_internal(status, sync_run_verb_cli, sync_progress_cli, NULL, &warnings, &err);

	if (warnings) {
		g_print(_("Warnings:\n"));
		for (l = warnings; l; l = l->next)
			g_print("\t%s\n", (char*)l->data);
		g_slist_foreach(warnings, (GFunc)g_free, NULL);
		g_slist_free(warnings);
	}
	if (err) {
		g_print(_("Error: %s\n"), err->message);
		g_error_free(err);
		success = FALSE;
	}
	return success;
}
Esempio n. 2
0
/* through callbacks, this function manages to drive both
 * the gtk and the cli sync. */
static gboolean
sync_run_internal(SyncStatus *status,
		LJRunVerbCallback sync_run_verb,
		LJSyncProgressCallback sync_progress,
		gpointer parent,
		GSList **warnings, GError **err) {
	GError *tmperr = NULL;
	gboolean success = FALSE;
	char *lastsync = NULL;

	status->js = journal_store_open(JAM_ACCOUNT(status->account), TRUE, &tmperr);
	if (!status->js) goto err;

	lastsync = journal_store_get_lastsync(status->js);

	if (!lj_sync_run(jam_account_lj_get_user(status->account), NULL /* usejournal */,
			lastsync,
			put_lastsync, sync_run_verb, put_entries, sync_progress,
			status, warnings, &tmperr))
		goto err;

	success = TRUE;

err:
	if (tmperr)
		g_propagate_error(err, tmperr);

	g_free(lastsync);
	if (status->js)
		journal_store_free(status->js);

	return success;
}
Esempio n. 3
0
gboolean
login_check_lastupdate(GtkWindow *parent, JamAccountLJ *acclj) {
	time_t deltat;
	GtkWidget *dlg;
	char *msg;
	gboolean ret = TRUE;
	JamAccount *acc = JAM_ACCOUNT(acclj);

	if (!conf.options.showloginhistory)
		return login_run(NULL, acclj);

	deltat = time(NULL) - acclj->lastupdate;
	if (deltat < 2 * 7 * 24 * 60 * 60) /* two weeks. */
		return TRUE;

	if (acclj->lastupdate == 0) {
		msg = g_strdup_printf(_("Account '%s' hasn't ever logged in.  "
								"Log in now?"), jam_account_get_username(acc)); 
	} else {
		msg = g_strdup_printf(_("Account '%s' hasn't logged in "
								"in at least %lu days.  Log in now?"),
		                        jam_account_get_username(acc),
		                        (unsigned long) deltat/(24*60*60));
	}
	dlg = gtk_message_dialog_new(parent, GTK_DIALOG_DESTROY_WITH_PARENT,
			GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,
			msg);
	g_free(msg);
	if (gtk_dialog_run(GTK_DIALOG(dlg)) == GTK_RESPONSE_YES)
		ret = login_run(GTK_WINDOW(dlg), acclj);
	gtk_widget_destroy(dlg);

	/* no matter what they answered, we shouldn't bug them again
	 * next time if they said no.  the only case to bug them again
	 * is if login failed. */
	if (ret)
		acclj->lastupdate = time(NULL);

	return ret;
}