summaryrefslogtreecommitdiffstats
path: root/src/schemes/about/profiles.c
blob: a4b6eb248ad7ec911aa60cd9da5cac46f1d13f05 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*
 * about:profiles
 *
 * Copyright (C) 2017  Patrick McDermott
 *
 * This file is part of Marquee.
 *
 * Marquee is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Marquee is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Marquee.  If not, see <http://www.gnu.org/licenses/>.
 */

#include <glib.h>
#include <webkit2/webkit2.h>

#include "../../application.h"
#include "../../config/profiles.h"
#include "../../utils/html.h"
#include "../../utils/profile-icon.h"
#include "../about.h"
#include "paths.h"

static gchar *
generate_div(MqProfiles *profiles, gchar *id)
{
	gchar *name;
	gchar *editing_str;
	gchar *name_str;
	gchar *default_str;
	gchar *delete_str;
	gchar *save_str;
	gchar *div;

	/* Freed by mq_html_container(). */
	name = mq_profiles_get_name(profiles, id);

	editing_str = g_strdup_printf("editing_%s", id);
	name_str    = g_strdup_printf("name_%s", id);
	default_str = g_strdup_printf("default_%s", id);
	delete_str  = g_strdup_printf("delete_%s", id);
	save_str    = g_strdup_printf("save_%s", id);

	div = mq_html_container("div", "profile",
		mq_html_input_radio("editing", editing_str, id, NULL, FALSE),
		mq_profile_icon_new(mq_profiles_get_color(profiles, id)),
		mq_html_container("span", NULL, name, NULL),
		mq_html_input_text(name_str, NULL, name),
		mq_html_submit(default_str, "Make Default",
			mq_profiles_is_default(profiles, id)),
		mq_html_submit(delete_str, "Delete", FALSE),
		mq_html_label(editing_str, "Edit", FALSE),
		mq_html_submit(save_str, "Save", FALSE),
		NULL);

	g_free(editing_str);
	g_free(name_str);
	g_free(default_str);
	g_free(delete_str);
	g_free(save_str);

	return div;
}

void
mq_about_profiles_response(MqApplication *application,
	GHashTable G_GNUC_UNUSED *query,
	WebKitURISchemeRequest *request)
{
	MqProfiles  *profiles;
	gchar       *document;
	gchar      **ids;
	gsize        length;
	gchar      **divs;
	gsize        i;

	profiles = mq_application_get_profiles(application);

	ids = mq_profiles_get_profiles(profiles, &length);
	divs = g_new(gchar *, length);
	for (i = 0; i < length; ++i) {
		divs[i] = generate_div(profiles, ids[i]);
	}
	divs[i] = NULL;
	g_strfreev(ids);

	document = mq_html_document("Profiles",
		mq_html_form_v("Add Profile", NULL, divs),
		NULL);
	mq_about_response(request, document);
}