Notizie: scarica ora l'ultima versione disponibile di Firefox!

Autore Topic: aggiornare i calendari  (Letto 3580 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline briglia23

  • Post: 10
aggiornare i calendari
« il: 02 Dicembre 2008 15:55:55 »
Salve a tutti!
Premetto che sono un novello di Lightning, per lavoro sto iniziando a approcciare questo tool.

Io avrei bisogno di modificare il procedimento di aggiornamento dei calendari, ovvero togliere refresh a tempo ed effettuarlo solo quando voglio io (arrivo richiesta http).

Modificando il codice ho trovato dove disabilitare l'opzione per il timeout refresh di lightning.

Il mio problema è che non riesco a trovare la parte che si occupa di ricaricare i calendari.

Io mi sto concentrando su CalDavCalendar.js, ma non riesco a capire come funziona, in quanto da nessuna parte viene richiamata la funzione dove si regola il timeout di refresh.

Spero di essere stato chiaro nella spiegazione e che mi possiate aiutare.

Grazie

Offline reherd

  • Post: 343
Re: aggiornare i calendari
« Risposta #1 il: 02 Dicembre 2008 17:17:29 »
Ciao.
Se per "procedimento di aggiornamento dei calendari" intendi la ricarica di calendari remoti, la puoi bloccare spuntando l'opzione "Ricarica impostazioni" che trovi in Strumenti->Opzioni...->Lightning->scheda generale.
la ricarica manuale la puoi ottenere personalizzando la barra degli strumenti di Lightning (clic destro->personalizza) e aggiungendo il pulsante "Ricarica", oppure facendo clic destro su un calendario della lista nel pannello di sinistra e scegliendo "Ricarica calendari remoti".


Offline briglia23

  • Post: 10
Re: aggiornare i calendari
« Risposta #2 il: 02 Dicembre 2008 17:44:39 »
sì intendo questo.

Il mio problema è però + complesso.

La ricarica dei calendari remoti avviene tramite l'impostazione di un valore di timeout per il refresh.

Allo scadere del timeout viene fatta una richiesta http per ottenere il nuovo calendario.

La mia domanda è:

Qualcuno mi sa dire quale è il file javascript dove è gestita la richiesta http?

Grazie

Offline reherd

  • Post: 343
Re: aggiornare i calendari
« Risposta #3 il: 02 Dicembre 2008 18:16:02 »
La richiesta (non credo che sia sempre http) dovrebbe partire, o essere chiamata, o comunque essere rintracciabile, dal file che gestisce il timeout del refresh e cioè
calCalendarManager.js
situato nella cartella JS al primo livello dentro Lightning

Offline briglia23

  • Post: 10
Re: aggiornare i calendari
« Risposta #4 il: 03 Dicembre 2008 09:42:18 »
Grazie 1000.

Saresti micca in gradi di spiegarmi come è gestita la richiesta di un calendario remoto?
o dirmi dove poso trovare qualche cosa che mi descriva come è il flusso di esecuzione? Perchè in effetti in calCalendarManager.js ho trovato dove gestisce il timeout, ma poi non capisco come arriva alla richiesta http. Se non sbaglio il codice che gestisce il timeout è il seguente

 var refreshTimeout = 0;
        try {
            var refreshTimeout = prefBranch.getIntPref("calendar.autorefresh.timeout") * 60000;
        } catch (e) {
        }

        if (refreshEnabled && refreshTimeout > 0) {
            this.mRefreshTimer = Components.classes["@mozilla.org/timer;1"]
                                    .createInstance(Components.interfaces.nsITimer);
            this.mRefreshTimer.init(this, refreshTimeout,
                                   Components.interfaces.nsITimer.TYPE_REPEATING_SLACK);
        }



in particolare a me interessa il testo in rosso.

Sicuramente le mie domande potranno essere banali, ma sono dovute al fatto che non ho mai usato JS

Grazie

Offline reherd

  • Post: 343
Re: aggiornare i calendari
« Risposta #5 il: 03 Dicembre 2008 15:59:25 »
...
Sicuramente le mie domande potranno essere banali, ma sono dovute al fatto che non ho mai usato JS

Azzz! Non mi sembra tanto banale come domanda.
Anche io non conosco Javascript, ma in questo caso potrebbe anche essere il male minore, perché in realtà bisognerebbe conoscere la struttura del codice di Calendar e alcuni componenti della piattaforma Mozilla.
Quel poco che ti posso dire io è che il testo in rosso non fa altro che impostare il timer sulla base delle preferenze se è impostata la ricarica automatica e se l'intervallo di tempo non è nullo. In particolare la prima riga richiama il componente e la seconda ne imposta i parametri letti in precedenza (come puoi leggere da qui) ma nulla di più.

Mentre la funzione che ricarica i calendari dovrebbe essere la refresh() perché viene chiamata anche dal menu contestuale quando si chiede la ricarica manuale dei calendari (menu che porta in questo punto del codice e che chiama il metodo refresh() in calCompositeCalendar.js).

Il problema è che il metodo refresh() è utilizzato e definito in molti oggetti tra cui forse potrebbe servirti questo in calDavCalendar.js.
Seguendo la safeRefresh() (linea803) sembra che si giunga al file calProvider.js che potrebbe (dico potrebbe) contenere quello che cerchi.

Il legame tra timer e richiesta dovrebbe avvenire tramite gli observer di cui conosco molto poco e che puoi cercare su https://developer.mozilla.org o su http://www.xulplanet.com/.

Di sicuro non è così semplice perché ci sono molti oggetti con vario livello di astrazione che fanno riferimento a molti altri oggetti. Se poi, come me, non si conosce js ...
Se nessun altro più esperto ti fornisce una risposta prova a postare sul forum mozillaZine nella sezione Mozilla Development o Extension Development.
 
P.S. Hai notato che ho usato molti condizionali, vero? ;-)

EDIT:
Forse il punto in cui avviene la chiamata è proprio nel file calCalendarManager.js (a meno che quando si parla di refresh non si intenda qualche cosa d'altro).
L'oggetto calCalendarManager dovrebbe essere registrato da qualche parte come Observer per il timer e per altre cose.
Il suo metodo observe viene chiamato, tra gli altri casi, quando scatta il timer, condizione per la quale gli viene passato un parametro aTopic di valore "timer-callback" (vedi link del Timer sopra) e in quel caso viene eseguito il refresh dei calendari (linea 216).
« Ultima modifica: 03 Dicembre 2008 22:44:46 da reherd »

Offline briglia23

  • Post: 10
Re: aggiornare i calendari
« Risposta #6 il: 03 Dicembre 2008 16:29:39 »
Sì sì ho notato.

Cmq grazie infinitamente adesso guardo tutto quello che mi hai detto e poi ti faccio sapere.
Intanto mi hai aiutato a trovare un filo logico del flusso, se non mi avessi aiutato continuavo ancora a vagare nell'ignoto.

 :D

Offline briglia23

  • Post: 10
Re: aggiornare i calendari
« Risposta #7 il: 05 Dicembre 2008 16:39:48 »
Bene ho una bella notizia ed una brutta.
La bella è che ho capito come funziona l'aggiornamento dei calendari, la brutta è che fa già quello che volevo fare io e che pensavo fosse la causa del picco di cpu.

Adesso ho un'altra domanda visto che devo fare del delbug ho visto che viene usata la funzine verbose logging, qualcuno mi sa dire dove è definita e (soprattutto) dove vengono messi i vari file di log?

Grazie

0 Utenti e 1 Visitatore stanno visualizzando questo topic.