[Buoh-dev] Fechas de =?ISO-8859-1?Q?publicaci=F3n?=



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 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 yahoo es
   carlosgc 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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]