PasswordProtectedPreferences/it

Tutte le modifiche aggiunte al codice sorgente originale di OpenOffice.org, presenti in questa pagina, sono:


 * '''Sotto licenza LGPL V3, (e si può ridistribuirlo e / o modificarlo secondo i termini della GNU Lesser General Public License come pubblicata dalla Free Software Foundation)
 * Copyright Eric Bachard Gennaio 2010

Introduzione
Qui di seguito troverete una descrizione tecnica della funzione Nuova password protezione preferenze. Trattasi prevalentemente di codice sorgente di OpenOffice.org (principalmente C++). Più precisamente, vi troverete la nuova implementazione SfxPasswordDialog, la nuova interfaccia utente (lucchetto verde / lucchetto rosso), la descrizione delle modalità di lettura / scrittura di una password, di un valore booleano, di un valore nel file Common.cxu (principalmente un'applicazione UNO), la descrizione dei cambiamenti nelle classi: OfaMiscTabPage (aggiungere pulsanti, e la loro gestione), OfaTreeOptionsDialog (la gestione dei cambiamenti nelle Preferenze, a seconda dello stato della funzione, abilitata / disabilitata). I prerequisiti per leggere questo articolo devono ancora essere definiti, ma se al lettore mancano, alcune nozioni possono essere recuperate dando un'occhiata al OpenOffice.org wiki per completare la sua conoscenza, e quindi procedere nella lettura di questo articolo nelle migliori condizioni.

 BOZZA, OCCORRE LAVORARCI ANCORA

L'idea fondamentale è quella di proteggere tramite una password le preferenze impostate, in modo da evitare che i bambini possano modificare qualche impostazione generando disordine o malfunzionamenti.

Principi
I bambini amano fare esperimenti. Molti di loro hanno anche una grande capacità e fantasia ma non è proprio quello che vorrebbero i docenti :-) L'idea di questa funzionalità aggiunta è di proteggere le preferenze utilizzando una password che:
 * impedisca ai bambini di effettuare qualsiasi modifica
 * consentire comunque di cliccare vedere conoscere ed esplorare tutto quello che vogliono (in modalità sola lettura)

Importante : questa proprietà serve solo come protezione contro le modifiche alle impostazioni di OOo4Kids da parte dei bimbi, non è un sistema di sicurezza (la password è facilmente e direttamente leggibile nel file Common.xcu)

Le Regole :

=> Attenzione: la password deve essere convalidata prima di chiudere la finestra di dialogo, una volta attivato il processo è irreversibile ! Per disattivarlo è necessaria la password.
 * La password preimpostata, se abilitata, è: prof
 * Come impostazione standard, le preferenze non sono bloccate
 * Per attivare la protezione, basta fare cilc su "Attivare la password di protezione".

Aspetti grafici:


 * Un lucchetto verde mostrato in fondo alla finestra significa: preferenze non bloccate
 * Un lucchetto rosso mostrato in fondo alla finestra significa: preferenze bloccate

(VERDE) Lucchetto sbloccato



 * Chiunque può leggere le preferenze, e controllare quali siano le funzioni sclete accessibili.
 * Per essere in grado di modificare le preferenze, occorre fare clic sul lucchetto rosso(fare clic sul lucchetto verde non ha alcun effetto). La pressione del pulsante sinistro del mouse sul lucchetto rosso causa l'apertura della finestra di dialogo in cui si richiede l'immissione della password (Occorre ricordare: la password di default è "prof"). Se la password è corretta il lucchetto diventa verde e l'utilizzatore diviene abilitato ad effettuare tutte le modifiche ed impostazioni che ritiene necessarie. La password viene considerata valida fintanto che la finestra di dialogo Strumenti-> Opzioni resta chiusa.
 * Un volta inserita la password corretta e dopo che il lucchetto è diventato verde, l'utente può disabilitare la funzione "password per le preferenze".

Disabilitare la protezione
questa è l'immagine della finestra di dialogo per la disabilitazione della protezione

Cambiare la password
Questa è l'immagine della finestra dove procedere alla modifica della password

Attenzione: Le barre dei menu strumenti rimangono e devono rimanere personalizzabili.


 * proposta icone 24x24
 * Benbois 08:56, 7 Settembre 2009 (UTC) : [[File:padlock1_open.png]] / [[File:padlock1_closed.png]]
 * Benbois 09:06, 7 Settembre 2009 (UTC) : [[File:padlock2_open.png]] / [[File:padlock2_closed.png]]

PASSO 01

 * L'utente richiama il menu "preferenze" (utilizzando il menu o le scorciatoie, esempio il Mac OS X)



PASSO 02

 * La finestra delle preferenze viene visualizzata con tutto il contenuto visibile ma disabilitato (il pulsante OK è disabilitato e la sua pressione anzichè aggiornare le preferenze le reimposta all'originale).
 * L'utente deve cliccare sul bottone del lucchetto per bloccare/sbloccare
 * Mancante: Cliccando su "Annulla" o "ESC" si ritorna a OOo4Kids
 * sarà fatto, nessun problema
 * Suggerimento : il bottone "Annulla" dovrebbe essere allineato con il bottone del lucchetto



PASSO 03

 * Cliccando sul bottone per sbloccare viene visualizzata la finestra di dialogo per inserire la password.



PASSO 04

 * Se la password è corretta:
 * Tutti i settaggi sono abilitati, l'utente può operare le modifiche che vuole
 * La chiusura della finestra di dialogo pone termine alle modifiche
 * Se la password è errata:
 * Viene visualizzato un messaggio di errore, l'utente può solo fare clic sul bottone OK per continuare
 * Con questa scelta obbligata si ritorna automaticamente alla finestra di dialogo precedente (quella delle Preferenze a sfondo grigio)
 * La finestra Preferenze viene mostrata con tutte le impostazioni disabilitate e l'utente ha una sola scelta operabile:
 * La convalida della password corretta,
 * Oppure fare clic su "cancella" per ritornare a OOo4Kids



Design
=> In via di sviluppo

Moduli soggetti a modifica:


 * officecfg : il file .xcu ( Common.cxu) + quello .xcs da modificare sono dentro questo modulo.


 * sfx2 : la finestra di dialogo SfxPasswordDialog è aggiunta qui, insieme ad altri metodi, ed anche ad una correzione per il valore di ritorno. Abbiamo creato una istanza a SfxPasswordDialog per due casi : inserimento della password e modifica della. La lunghezza minima della password è stata impostata a 4 lettere.


 * svx : in questo modulo sono presenti ed è da qui che verranno usate le finestre di dialogo misc tabpage (OaMiscTabPage class) e la treeoptions (OfaTreeOptionsDialog). La misc tabpage servirà per le operazioni di ricevimento ed impostazione delle informazioni relative a:
 * Se la funzionalità di password è abilitata o meno
 * Se la funzionalità non è mai stato usato prima o no
 * Lettura / scrittura la password nel xcu.
 * Nella finestra treeoptions verrà gestita la possibilità oppure l'impossibilità di modificare le Preferenze, dipendentemente dallo stato 'abilitato/disabilitato' di questa caratteristica.
 * La vista sarà attuata in treeopt.src, e sarà basata su controlli ImageButton.
 * Il lucchetto stesso sarà una coppia di ImageButton che giocano a ping-pong (Hide / Show ) a seconda che la funzione sia attivata o meno

Per mantenere il codice pulito, e separare le modifiche di OOo4kids da OpenOffice.org, il nuovo file passwd_OOo4Kids.cxx è stato aggiunto in sfx2/source/dialog

Aggiunte alla classe SfxPasswordDialog
Commento : una OUString, che restituisce la password contenuta nel Common.xcu, nella proprietà UserPrefsPassword. Questo metodo è metodo pubblico proprio della classe SfxPasswordDialog.
 * OUString SfxPasswordDialog::getUserPrefsPassword

Commento : un metodo pubbilco vuoto per SfxPasswordDialog, per lasciare lo spazio vuoto e scrivere la nuova password nel file .xcu, nelle proprietà di UserPrefsPassword.
 * void SfxPasswordDialog::setUserPrefsPassword( OUString aPassword )

Aggiunte alla classe OfaMiscTabPage
Commento : un metodo accesso attributo oggetto, getter, come valore booleano, che restituisce lo stato iniziale (vero, falso) nelle proprietà UserPrefsPasswordFeatureEnabled e UserPrefsPasswordNeverModified, per far conoscere se la caratteristica è o non è abilitata, e se è stata usata almeno una volta. Il tutto per la necessità di abilitare/disabilitare la caratteristica "Modifica la password", in base al valore restituito.
 * bool OfaMiscTabPage::getUserPrefsPasswordBoolProperty( USER_PASSWD_PREFS_PROPERTY aUserPrefsPasswordProperty )

Commento : è il corrispettivo setter del metodo accesso attributo, come valore nullo, utilizzato per scrivere un valore booleano iniziale nelle proprietà UserPrefsPasswordFeatureEnabled e UserPrefsPasswordNeverModified, del file Common.xcu
 * void OfaMiscTabPage::setUserPrefsPasswordBoolProperty( USER_PASSWD_PREFS_PROPERTY aUserPrefsPasswordProperty, bool aBool )

Commento : questa è la chiamata usata per eseguire l'operazione: Aprire la "finestra di dialogo Modifica password", se solo e soltanto se il bottone è abilitato
 * IMPL_LINK( OfaMiscTabPage, aChangePrefsPasswordBtnHdl_Impl, PushButton*, EMPTYARG )

Commento : questa è la chiamata per eseguire l'operazione: Attiva/disattiva la casella di controllo "Attivare la password", se solo e soltanto se l'utente è abilitato a modificare le Preferenze
 * IMPL_LINK( OfaMiscTabPage, aPrefsPasswordCBHdl_Impl, CheckBox*, EMPTYARG )

Commento : metodo pubblico per OfaMiscTabPage, usato per il recupero dello stato delle Preferenze (bloccate/sbloccate)
 * bool OfaMiscTabPage::IsPadlockLocked

Aggiunte nella classe OfaTreeOptionsDialog

 * IMPL_LINK( OfaTreeOptionsDialog, PadlockHdl_Impl, ImageButton *, EMPTYARG )

Commento : chiamata per eseguire lo sblocco/blocco delle preferenze quando l'utente clicca sul lucchetto, di qualunque colore esso sia.


 * void OfaTreeOptionsDialog::loadImage( const ResId& i_rId, ImageButton& i_rButton )

Commento : carica l'immagine nel controllo ImageButton. ATTENZIONE : usare il comando più di una volta sul bottone genera codice inutile ed altera il comportamento della routine in modo imprevedibile.


 * void OfaTreeOptionsDialog::SetPadlockImage

Commento : metodo di chiamata per il constructor di OfaTreeOptions.

Modello

 * Lunghezza della Password inserita : short int
 * La Password vera e propria: OUString
 * Nuova Password: OUString
 * Conferma nuova Password: OUString
 * Contenitore delle Password : common.xcu
 * Contenitore della caratteristica Password abilitata: Common.xcu
 * Validazione password insetita "Ok" : pulsante
 * Validazione password inserita "Annulla" : pulsante
 * Validazione nuova password "Ok" : pulsante
 * Validazione nuova password "Annulla" : pulsante
 * Lucchetto chiuso : pulsante+ immagine == ImageButton
 * Lucchetto aperto : pulsante+ immagine== ImageButton
 * Size : aPadlockButtonImageSize (the same for both ImageButtons)

Vista

 * Finestra di dialogo per la modalità "Inserire una password", con i pulsanti "Ok", "Annulla" ed un'area di testo in cui sia possibile digitare
 * Finestra di dialogo per la modalità "Inserire una nuova password", con i pulsanti "Conferma la nuova password", "Ok", "Annulla" e due aree di testo

Controllore
=> TBD 


 * treeopt.cxx: contiene il quadro delle opzioni, tra cui il pulsante OK per essere controllato e gestito, mentre il optgdlg.cxx contiene il TabPages, e tutte le azioni associate ( IMPL_LINK  ).

Il controllore deve consentire queste funzioni:


 * DONE Settare / Resettare /Iimpedire modifiche alle Preferenze
 * DONE Leggere / Scrivere la password nel file .xcu
 * DONE Creare una nuova classe ereditata dalla password nel modulo sfx2
 * DONE sostituire il vecchio treeopt.cxx con quello nuovo, includendoing i nuovi valori booleani ed il nuovo comportamento
 * DONE L'inattività della finestra Preferenze darà luogo a questa procedura: ciclo infinito (per la modalità finestra) in attesa di ricevere come imput o un clic sul lucchetto oppure la pressione del tasto Esc per annullare le eventuali modifiche apportate alle Preferenze
 * DONE Implementare l'immagine del lucchetto nella finestra, utilizzando due ImageButton + il QuickHelpText. Deve essere visualizzato un solo pulsante alla volta. Show e Hide  vengono utilizzati per giocare a ping pong con queste due ImageButtons.

-

In quanto alle preferenze in OOo4Kids : Penso sia necessario revisionare il contenuto e l'aspetto grafico di questa finestra di dialogo.

Perchè:
 * Ci sono troppe impostazioni modificabili
 * L'organizzazione risulta confusa

Questa è una critica da estendere all'intera suite OpenOffice, globalmente. Credo si più efficace mantenere qui solo le impostazioni principali, esplicate in modo chiaro e ben comprensibile.

Un'altra idea potrebbe essere quella di mettere a disposizione un pannello delle Preferenze apposta per i bambini, con un numero ridotto di scelte ed un altro a parte invece per gli insegnanti, completo. Ovviamente senza andare a modificare il sistema di password, semmai creando un integrazione. Lafonjm 21 aprile 2009 à 09:10 (CEST)