Era un pò che non mi cimentavo con un'installazione di Asterisk: non perchè mi manchi la voglia ma in questi mesi ho preferito passare questa attività ai miei colleghi, che oggettivamente sono molto più bravi e pazienti di me !

Comunque qualche giorno fa qui in azienda dovevamo preparare una macchina ad alta affidabilità con sopra Asterisk, e mi è venuto il "prurito alle mani": il risultato è il tutorial che Vi allego.

Per la cronaca, se Vi interessa, ho usato come dispostivo hardware un PBX Compact Small UTM, di cui trovate il link in allegato.

Sappiate che questa non è assolutamente una pubblicità, non ci guadagno assolutamente nulla, ma è una segnalazione tra colleghi: se per caso avete necessità di un apparato ad altra affidabilità per installarci sopra asterisk questo fa al caso vostro.

Buona lettura

Linkografia

Install on Debian Stretch 9.4 the fabulous Asterisk 14 + Freepbx 14

PBX Compact Small UTM

 

Per parlare dei data trigger penso sia utile fare un doppio salto mortale ! Infatti sono convinto che sia efficace mostrarne le funzionalità tramite l’ausilio di un controllo molto utilizzato in WPF, ListBox, e che sinora non abbiamo visto.

Questo ci permetterà di esporre in modo più agevole di questo tipo di trigger, oltre che iniziare a vedere un controllo abbastanza utilizzato nel mondo WPF.

Contestualmente a questo verranno esposti i rudimenti del databinding, che è il sistema tramite il quale è possibile connettere due proprietà di oggetti differenti e mantenerne i dati sincronizzati.

Del databinding ne parleremo diffusamente nel seguito, ma in questo post ne verrà mostrato un primo utilizzo pratico.

Ed ora... alcune parole su sua maestà ListBox !

Il ListBox è un controllo che permette di presentare una lista di item.

Occorre dire da subito che nel mondo WPF esistono vari controlli che permettono di ottenere medesimi risultati, ma questo in particolare si distingue per il fatto che è molto semplice da utilizzare e dispone inoltre di una funzionalità che permette anche di selezionare uno o più item.

Se siete pratici di programmazione anni '90 potete pensare questo controllo con un mix tra una griglia e una combo che permette la multiselezione.

Tradotta in italiano la parola trigger identifica qualcosa in grado di scatenare un innesco, o anche un qualcosa che è capace di scatenare un qualche processo.

Non a caso un altro significato della stessa parola è grilletto !

La stessa parola viene anche utilizzata in WPF per identificare una funzionalità utilizzata in tandem con gli stili, e che, seguendo il significato originale della parola, permette di cambiare il look and feel dei controlli allo scatenarsi di determinati eventi o condizioni prestabilite.

Per esempio si immagini di voler cambiare l’aspetto di un controllo qualora il mouse si trova sopra questo: in questo caso la causa scatenante è il mouse posizionato sopra un controllo, e l’effetto che si vuole ottenere è che il controllo stesso cambi qualche elemento dello stile.

Certo: è possibile ottenere questo risultato con l’ausilio di codice C# associato e determinati eventi. Purtuttavia è possibile ottenere lo stesso effetto anche con l’ausilio di sole dichiarazioni WPF e l’ausilio dei trigger.

Ora Vi prego: non “cambiate canale”. L’esempio proposto sopra per illustrare l’uso dei trigger può sembrare poco interessante: un controllo che cambia aspetto quando il mouse si posiziona sopra di esso è molto “anni ‘90” e quando mi capita di vederlo in qualche maschera mi provoca tenerezza.

In realtà vedremo a breve che i trigger risultano essere indispensabili in altri ambiti decisamente molto più interessanti.

WPF offre diverse tipologia di trigger che Vi esplicito nel seguito.

- Property trigger – è il trigger più utilizzato e viene attivato non appena una proprietà di un controllo assume un determinato valore.

- Multi-trigger – come quello precedente, solo che viene attivato quando diverse proprietà assumono contemporaneamente determinati valori.

- Event trigger – viene attivato quando un determinato evento occorre.

- Data trigger – viene azionato quando dei dati in binding cambiano valore.

In questa serie per brevità ho pensato di lasciare fuori gli event trigger, poiché li ritengo meno interessanti rispetto agli altri.

Se il codice che produco è passibile di mille critiche, le maschere che mi capita di creare sono indubbiamente e sicuramente delle schifezze immonde.

Il bottone lo metto sempre nella posizione sbagliata, e così le caselle di testo, per non parlare del colore assegnato ai controlli: i miei colleghi diventano matti a sistemare le UI che creo in modo che siano non dico utilizzabili, ma che almeno siano presentabili.

Per questo motivo non mi trovo a mio agio a parlare di aspetto dei controlli UI WPF: semplicemente non è il mio campo !

Però siccome nelle prossime parti occorrerà mettere mano allo stile dei controlli, per lo meno quando si parlerà della validazione dei dati inseriti, occorre che ne scriva qualcosa !