[Buoh-dev] Fechas de publicación
Carlos Garcia Campos
carlosgc at gnome.org
Wed Sep 28 11:56:05 MDT 2005
El mié, 28-09-2005 a las 18:50 +0200, Esteban Sánchez escribió:
> Acabo de añadir una propiedad más al dialogo de propiedades, en el
> caso
> de que sea un comic-manager-date se muestra los días de la semana en
> los
> que se publica. Para ello he creado un método get_publication_days en
> la
> clase BuohComicManagerDate que devuelve una cadena "human-readable".
> No
> sé si es la solución más OO, pero lo he hecho así por dos razones:
>
> 1- El que lo use no tiene porqué saber como lo almacena interiormente
> 2- Desde fuera nunca se va a usar las "restricciones".
está perfecto, lo que no interesa de cara al exterior son los dias que
sale publicado
> Además he creado una función para devolver el nombre del día de la
> semana a partir del número. Lo he hecho así porque no he encontrado
> ninguna función para hacerlo de una manera sencilla (sin usar
> strftime).
> Tal y como lo he hecho se añaden cadenas de traducción, pero están
> hiper-traducidas, así que no es un problema.
>
> Se me olvidó hacer commit (madre mia :P) de lo último que comenté,
> pero
> como no eran funcionalidades ni afectaban excesivamente al código pues
> tampoco ha sido grave. Lo digo porque esos cambios también van en el
> parche.
>
> Ahí va el parche. ¿Comments?
>
> Saludos
>
> --
> Esteban Sánchez
> esteban at steve-0.com
> http://steve-o.org
> http://subanales.com/
> ------------------------------------------------
> PGP key: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0xB6E0F8AF
> +static const gchar *
> +get_dayweek (GDateWeekday d)
ponle el prefijo, aunque sea un función auxiliar y privada, por convenio
con el resto del código. Añade también un prototipo al principio del
fichero.
> +{
> + switch (d) {
> + case G_DATE_MONDAY:
> + return (_("Monday"));
> +
> + case G_DATE_TUESDAY:
> + return (_("Tuesday"));
> +
> + case G_DATE_WEDNESDAY:
> + return (_("Wednesday"));
> +
> + case G_DATE_THURSDAY:
> + return (_("Thursday"));
> +
> + case G_DATE_FRIDAY:
> + return (_("Friday"));
> +
> + case G_DATE_SATURDAY:
> + return (_("Saturday"));
> +
> + case G_DATE_SUNDAY:
> + return (_("Sunday"));
yo para esto propondría algo como:
static const gchar *day_names [] {
NULL,
N_("Monday"),
.......
};
y simplemente devolver g_strdup (day_names[d]);
compruebas antes que el índice no se vaya de rango y listo
> +
> + case G_DATE_BAD_WEEKDAY:
> + default:
> + return ("Bad weekday");
realmente nos interesa devolver esto? No tiene ninguna utilidad, además
que no lo estas manejando, así que en caso de devolver esto, llegará al
gui una cadena sin traducir que no pinta mucho. Creo que sería mejor
devolver NULL y controlarlo después, para en caso de recibir NULL,
simplemente ignorarlo.
> + }
> +}
> +
> +gchar *
> +buoh_comic_manager_date_get_publications_days (BuohComicManagerDate
> *comic_manager)
hmm no sería publication_days? (dias de publicación no de publicaciones,
no?)
> +{
> + gint i, last_printed;
> + gboolean has_restrict, prev;
> + GString *aux;
> +
> + aux = g_string_new ("");
> + has_restrict = FALSE;
> + prev = FALSE;
> + last_printed = 0;
haz las inicializaciones en las declaraciones.
> +
> + for (i = 1; i < 8; i++) {
aprovecha que tienes nombre para esos números, en este punto podrías
pretuntarte, porque empieza en 1 y no en 0? Algo como
for (i = G_DATE_MONDAY; i < = G_DATE_SUNDAY; i++) {
es mas comprensible, y sabemos en todo momento que estamos recorriendo
los dias de la semana
> + if (!comic_manager->priv->restrictions[i]) {
nunca he entendido esto de las restricciones. Si son los dias de
publicación, por que no se llama simplemente publication_days y tiene
una lógica directa en vez de indirecta? Vamos que cada vez que veo esto
de las restricciones me tengo que acordar que corresponde a los dias de
pucblicación, pero teniendo en cuenta que FALSE significa que si se
publica ese dia.
> + if (prev == 0) {
si es booleana, == 0 te obliga a pensar, 0 era verdadero o falso? usa
mejor TRUE o FALSE o simplemente !
> + if (aux->len) {
es necesario comprobar siempre esto antes de un append? en este punto
nos hemos metido ya en un 4 nivel for { if { if { if { Esto es una
locura, si hay manera de mejorarlo bien sino pues na.
> + g_string_append (aux, ", ");
> + }
> + g_string_append (aux, get_dayweek
> (i));
> + last_printed = i;
> + }
> +
> + prev = TRUE;
> + } else {
> + if (prev && (last_printed != i - 1)) {
> + if (aux->len) {
idem
> + g_string_append (aux, _(" to
> "));
> + }
> + g_string_append (aux, get_dayweek (i -
> 1));
> + }
> +
> + has_restrict = TRUE;
> + prev = FALSE;
> + }
> + }
> +
> + if (!has_restrict) {
> + g_string_set_size (aux, 0);
> + g_string_append (aux, _("Every day"));
> + }
> +
> + /* g_string_free () returns the "gchar *" data */
> + return g_string_free (aux, FALSE);
> }
Salu2
--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Carlos Garcia Campos a.k.a. KaL
elkalmail at yahoo.es
carlosgc at gnome.org
http://carlosgc.linups.org
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
PGP key: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x523E6462
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Esta parte del mensaje =?ISO-8859-1?Q?est=E1?= firmada
digitalmente
Url : http://forge.novell.com/pipermail/buoh-dev/attachments/20050928/18f8a0a4/attachment.pgp
More information about the Buoh-dev
mailing list