Ecco cosa ci racconta:
Quello che ora viene fornito è una schermata di configurazione per l'utente con la solita configurazione per i widget dove inserire il testo, drop-boxes, item-lists ecc.. e i bottoni OK e Cancella. Il problema era che ogni dataprovider aveva il suo codice Gtk e Glade, ciò significa che un sacco di codice era duplicato e con interfacce confuse, per niente HIG-compliant. Oltre a ciò ogni data provider mostrava la propria finestra di configurazione, così non eravamo in grado di fare niente altro che mostrare il la finestra. Sistemare tutto ciò significava sistemarli tutti uno alla volta.
Ho cominciato con l'idea che per essere più utili alle applicazioni esterne dobbiamo essere più flessibili e dobbiamo sistemare i nostri problemi una volta per tutte in tutte le finestre di dialogo. Sapevo che avrei dovuto cambiare ogni dataprovider che forniamo. Alla fine ho creato un wrapper a Gtk, lasciando che i dataprovider avessero solo a che fare con quello che a loro interessa. Perché abbiamo un limitato set di widget, possiamo avere un'API molto più utile allora avendo a che fare direttamente con Gtk. Otteniamo anche alcuni benefici:
* Sistemare il codice in un posto lo sistema per tutti i dataprovider.
* Essere HIG-compliant è molto più semplice
* Potremo passare da Gtk a qualcos'altro molto più velocemente in futuro
* Possiamo gestire le finestre di configurazione sui client in un modo nettamente migliore (pensate a incorporare una finestra di configurazione per sincronizzare l'ipod dentro Rhythmbox).
* Possiamo fare qualcos'altro che siano finestre di dialogo per la configurazione. Pensate a una sidebar alla Glade.
E' stato esplicitamente creato il design per gli ultimi due punti, perché il mio primo lavoro a Conduit era che il modulo iPod fornisse la stessa esperienza di iTunes per sincronizzare ed era uno dei maggiori obiettivi.
Così speravo di mostrare uno screenshot di come fosse prima, ma sembra che abbiamo sistemato così tante cose ultimamente (o ne abbiamo sbagliate così tante prima) che non riesco a fare andare la vecchia versione.
Ad ogni modo ecco qui uno screenshot del nuovo codice:

Naturalmente abbiamo cambiato un sacco di codice con gli ultimi commit e non senza creare nuovi bug. La nostra UI è ancora pessima, ma speriamo di poterla migliorare presto.
Dovrei iniziare a pensarci su a partire da questa Summer of Code. Fortunatamente avremo qualcosa di veramente buono alla fine dell'estate (il mio inverno a dire il vero).
0 commenti:
Posta un commento