<para>&ksplash; és una bella pantalla d'inici que mostra el progrés d'una aplicació mentre aquesta s'està carregant. Si us plau, informeu de qualsevol problema o requeriment de característica a les llistes de correu del &kde;. Les principals característiques de &ksplash;: </para>
<para>Aquest manual us ensenyarà com crear temes per usar-los amb connectors que ja estan disponibles. Si cap dels connectors disponibles us satisfà, podeu aprendre a personalitzar l'aparença de &ksplash; escrivint completament un connector en C++. </para>
<para>Per emprar temes de <ulink url="http://www.kde-look.org">KDE-Look</ulink>, feu-ne la extracció a <filename>~/.trinity/share/apps/ksplash/Themes/</filename> per a l'ús d'un únic usuari, o a <filename>$<envar>TDEDIR</envar>/share/apps/ksplash/Themes/</filename> per a que resti a l'abast de tots els usuaris del vostre sistema.</para>
<para>També podeu emprar el mòdul <guilabel>Pantalla d'inici</guilabel> que es troba sota la pestanya <guilabel>Aparença</guilabel> en el centre de control de &kde; per a fer-ho automàticament.</para>
<para>Aquest mòdul us permet instal·lar, provar i eliminar temes de &ksplash;.</para>
<para>A l'esquerra del mòdul hi ha un llistat dels temes disponibles per a &ksplash;. Tan aviat com en seleccioneu un, es mostrarà una vista prèvia a la part principal de la finestra. Quan hageu fet la tria premeu <guibutton>Bé</guibutton> o <guibutton>Aplica</guibutton>. Premeu <guibutton>Cancel·la</guibutton> per sortir del mòdul sense aplicar cap canvi, i <guibutton>Omissió</guibutton> per a restaurar la pantalla d'inici per omissió del sistema.</para>
<para>Per instal·lar nous mòduls, premeu <guibutton>Afegeix...</guibutton> i cerqueu el tema al vostre ordinador. No cal que descomprimiu els fitxers del tema, seleccioneu el fitxer comprimit. Tingueu present que no n'hi ha prou amb instal·lar el tema doncs l'haureu de seleccionar i prémer un dels botons <guibutton>Bé</guibutton> o <guibutton>Aplica</guibutton>.</para>
<para>Podeu veure la vista prèvia de la pantalla d'inici per tal de decidir si us agrada l'aparença de la mateixa. Podeu provar els temes seleccionant-los en la llista i després fent clic en el botó <guibutton>Prova</guibutton>.</para>
<para>Podeu eliminar els temes que ja no us calguin seleccionant-los i prement el botó <guibutton>Elimina</guibutton>. Tingueu present que des del vostre compte d'usuari no teniu prou permisos per eliminar els temes que estiguin instal·lats a tot el sistema. També és molt recomanable que no desinstal·leu la pantalla d'inici <guilabel>Omissió</guilabel>.</para>
<para>Crear els vostres propis temes per a &ksplash; és fàcil. Una vegada els hageu finalitzat envieu-los a <ulink url="http://www.kde-look.org">KDE-Look</ulink> a on en trobareu d'altres de disponibles.</para>
<para>Us permet crear un tema anomenat <literal>MyCoolTheme</literal>. Per a que el tema sigui reconegut per &ksplash;, aquest haurà de ser desat en una carpeta anomenada <filename class="directory">MyCoolTheme</filename> sota <filename class="directory">~/.trinity/apps/ksplash/Themes/</filename>. Aquesta haurà de contenir un fitxer anomenat <filename>Theme.rc</filename>, que contingui les opcions del tema. Podeu especificar un llarg nombre de coses especials per al tema, canviar l'enginy de connectors a usar, i molt més. No haureu pas d'emprar totes les opcions disponibles, usualment, les opcions tenen un valor per omissió força acceptable. La sintaxi de base per a les entrades en el fitxer <filename>Theme.rc</filename> és <literal>[opció] = [valor]</literal>. Podeu trobar les definicions de les diverses opcions en les següents seccions.</para>
<para>Després d'especificar el nom, la descripció i l'autor del tema, primer haureu de triar un enginy de tema (també conegut com a connector). Llavores, podreu personalitzar diverses característiques de l'enginy del tema assignant valors clau semblants a l'anterior fitxer d'exemple.</para>
<para>Assegureu-vos que el noms siguin idèntics: El directori sota el que deixeu els fitxers del tema (en el nostre cas seria <filename class="directory">~/.trinity/apps/ksplash/Themes/MyCoolTheme</filename>) i l'identificador (en el nostre cas seria <literal>[KSplash Theme: MyCoolTheme] </literal>), tot amb el fitxer <filename>Theme.rc</filename>. D'altra manera &ksplash; no el reconeixerà.</para>
<para>Quan s'inicia &ksplash;, aquest intenta trobar una imatge de fons adequada per a la vostra resolució de pantalla, sempre que l'enginy del tema n'empri una. El fitxer imatge de fons haurà d'estar anomenat en el següent format: <filename>Background-<replaceable>AAAxaaa</replaceable>.png</filename>.</para>
<para>Per exemple, hauríeu d'emprar un fitxer anomenat <filename>Background-1024x768</filename>. Si no es troba la imatge de fons per a la vostra resolució de pantalla, aquest intentarà redimensionar el <filename>Background.png</filename> original o el fitxer especificat a <filename>Theme.rc</filename> per adaptar-lo a la resolució actual. El redimensionament al vol es prendrà un cert temps, de manera que hauríeu de proveir imatges de fons per almenys les següents mides: 1280x1024, 1024x768 i 800x600.</para>
<para>En aquest capítol descriurem un mètode simple per usar &ksplash; com a pantalla d'inici per a la vostra aplicació &kde;. Si no desenvolupeu aplicacions per al &kde; podeu ometre aquest capítol.</para>
<para>La vostra aplicació &kde; haurà d'entendre &DCOP;. &DCOP; és la tecnologia emprada pel &kde; per a la comunicació entre aplicacions. Si empreu l'<ulink url="http://developer.kde.org">entorn de treball estàndard per aplicacions &kde;</ulink>, aquest se'n farà càrrec automàticament. Per a més informació quant a &DCOP; i les tecnologies &kde; relacionades, si us plau, visiteu el <ulink url="http://developer.kde.org">Racó dels desenvolupadors de &kde;</ulink>.</para>
<para>Abans de que la vostra aplicació comenci un intensiu treball de càlcul, o abans de que comenci a carregar els connectors, &etc;, invoqueu a &ksplash; tal i com segueix:</para>
<para>Assumirem que només hi ha en execució una sola instància de &ksplash;. En els altres casos és significativament més complex. Si us plau, per a més detalls consulteu la documentació de &DCOP;.</para>
<para>Abans de mostrar cap missatge, necessitareu establir les passes que es mostraran. Per exemple, L'inici del &kde; procedeix emprant 7 passes.</para>
<para>Cada vegada que crideu <constant>programStarted</constant>, les passes completades s'incrementaran. Quan el vostre programa hagi finalitzat el seu inici, feu el següent per eliminar la pantalla d'inici:</para>
<para>L'escriptura de nous connectors per a &ksplash; no és pas difícil. En aquest capítol, escriurem un simple connector que emularà la pantalla d'inici d'un conegut sistema operatiu. Aquest tutorial assumeix que coneixeu les bases de C++, i una mica de programació KDE/Qt.</para>
<para>Crearem un connector anomenat <literal>2k</literal>. El nom del connector serà usat a diversos indrets, i és important que n'useu un de coherent de manera que sigui reconegut per &ksplash;. Els connectors de &ksplash; actualment són biblioteques carregables dinàmicament amb la següent convenció de noms: </para>
<member>La biblioteca s'haurà d'anomenar com <filename>ksplash+nom_del_tema_en_minúscules</filename>. Per al nostre tema, aquest serà <filename>ksplash2k</filename>.</member>
<member>Aquesta haurà de tenir un fitxer desktop corresponent anomenat <filename>ksplash+nom_del_tema_en_minúscules.desktop</filename>. Per al nostre tema, aquest serà <filename>ksplash2k.desktop</filename>. </member>
<member>Finalment, l'objecte que serà retornat per la biblioteca haurà de ser una classe anomenada <literal>Theme+nom_del_tema</literal>. Per al nostre exemple, aquesta serà <literal>Theme2k</literal>.</member>
<para>No us preocupeu per si no compreneu tot el que s'ha explicat. Considerarem cadascun d'aquests punts més endavant. L'altre detall molt important és que la classe del connector hauria d'estar derivada de <literal>ThemeEngine</literal>. </para>
<title>Construir l'esquelet de l'entorn de treball</title>
<para>Nosaltres emprarem l'entorn de treball de les aplicacions &kde;, el qual té cura de construir el connector proveint-lo d'un ús independent de la plataforma sense cap treball per la nostra part. Per a fer això, primer assegureu-vos de tenir instal·lat el paquet <filename>tdesdk</filename>. Executeu el comandament <literal>kapptemplate</literal> per a produir una aplicació anomenada "2k". Aquest crearà una carpeta de primer nivell continguen fitxers genèrics com AUTHORS, &etc; Nosaltres estem més interessats en la subcarpeta anomenada <filename class="directory">2k</filename>. Aneu-hi i esborreu tots els fitxers que hi hagi. Ara disposarem de l'esquelet requerit. </para>
<para>La següent passa serà crear un fitxer <filename>.desktop</filename>, una vegada instal·lat, li indicarà a &ksplash; que el nostre connector està disponible. Consistent en les convencions anomenades en <link linkend="basic-requirements">la secció precedent</link>, creeu un fitxer anomenat <filename>ksplash2k.desktop</filename> en aquesta carpeta. Aquest haurà de contenir les següents línies: </para>
<para>Les línies <literal>Encoding</literal>, <literal>Type</literal>, <literal>Comment</literal> i <literal>ServiceTypes</literal> són les mateixes per a tots els connectors. El nom del connector i el de la biblioteca segueixen les convencions anotades anteriorment. L'entrada <literal>X-KSplash-Default</literal> pren un valor booleà que determinarà si aquest es mostrarà per omissió en el mòdul de configuració del plafó de control. Excepte per alguns casos rars, aquest valor hauria de ser <constant>true</constant>. </para>
<title>Declaració de la classe del connector</title>
<para>Ara que ja tenim feta la feina preliminar, procedirem amb la part verdaderament divertida -crear una classe que proveeixi del comportament que desitgem-. Tot i que som ben lliures de crear aquesta classe per a que faci el que vulguem, hi ha algunes restriccions.</para>
<listitem><para>Les classes del connector hereta la classe <constant>ThemeEngine</constant>.</para></listitem>
<listitem><para>Les classes del connector s'hauran d'anomenar d'acord a la regla: <classname>Theme+NomConnector</classname>.</para></listitem>
<listitem><para>Les classes del connector hauran de proveir una funció <literal>static</literal> anomenada <function>names</function> que retorni una llista de noms per als quals ha estat invocada.</para></listitem>
<listitem><para>Si el connector es pot configurar en el mòdul del centre de control, aquest haurà de proveir una classe <literal>ThemeEngineConfig</literal> per a la configuració.</para></listitem>
<listitem><para>La classe del connector haurà de solapar a almenys una de les funcions virtuals <function>slotSetText</function>, <function>slotSetPixmap</function>, <function>slotUpdateProgress</function> i <function>slotUpdateSteps</function> per a fer-se usable.</para></listitem>
<listitem><para>El constructor ha de prendre la forma <literal>ThemeEngine( TQWidget *parent, const char *name, const QStringList &args )</literal> de manera que sigui emprat amb <classname>KGenericFactory</classname>.</para></listitem>
<para>L'últim requeriment podria ser complicat, però, tal i com veurem més endavant, afegint una simple línia als vostres fitxers font, usualment podreu ignorar-lo.</para>
<para>Analitzem l'anterior llistat. La classe <classname>Theme2k</classname> satisfà les convencions de nom, i és inherent de <classname>ThemeEngine</classname>. Aquesta proveeix un <methodname>Theme2k::names()</methodname>, i disposa d'un constructor que pren els paràmetres requerits: <function>Theme2k( TQWidget *, const char *, const QStringList& );</function> i també proveeix d'un mètode <methodname>Theme2k::slotSetText()</methodname> simple. De moment, no us preocupeu per la classe <classname>RotWidget</classname>. Aquesta és un petit estri (en anglès "widjet") que proveeix d'alguns afegits visuals per l'usuari. El nostre connector és molt simple i no mostra cap icona o barra de progrés. Si us agradaria mostrar icones, solapeu la funció <function>slotSetPixmap</function>. Existeixen funcions similars per establir el rang de la barra de progrés (<function>slotUpdateSteps</function>) i l'increment de la passa actual (<function>slotUpdateProgress</function>). </para>
<para>Nosaltres tan sols examinarem les parts significatives de la implementació. Per a un llistat complet, si us plau, consulteu l'apèndix. La primera cosa que farem serà treure el requeriment de la biblioteca de la manera:</para>
<para>La macro <constant>K_EXPORT_COMPONENT_FACTORY</constant> està declarada dintre de <filename>kgenericfactory.h</filename>. D'ara en endavant el constructor! Atès que aquest és un connector molt simple, el constructor serà molt minimalista.</para>
<para>El mètode <function>readSettings()</function> il·lustra la manera adequada d'obtenir les opcions del vostre tema. (Voldreu que la gent usi els vostres connectors en els seus temes, voleu?)</para>
<para>Ja que ens agraden els nostres usuaris, s'hom sensibles i proveïm de paràmetres per omissió que no són presents en el fitxer de tema. Tingueu en compte que també hauríeu d'establir el nostre grup a "KSplash Theme: nom_del_tema" per a romandre compatible amb les futures especificacions de tema. El mètode <function>initUI()</function> no és gaire interessant, ja que ell essencialment construeix els estris. Si us plau, per a detalls consulteu l'apèndix. </para>
<para>Ja que hem optat per emprar l'entorn de treball &kde; per a compilar el connector, necessitarem crear un <filename>Makefile.am</filename>. Aquest s'haurà d'assemblar a això:</para>
<para>Per a més informació a sobre de l'escriptura de fitxers <filename>Makefile.am</filename> per al &kde;, si us plau, consulteu el <ulink url="http://developer.kde.org/documentation/other/makefile_am_howto.html">lloc web</ulink> per als desenvolupadors de &kde;. L'única cosa a fer notar és que proveïm d'un tema per omissió basat en aquest connector, així com d'una imatge per al mateix. Per cortesia cap als vostres usuaris, hauríeu de proveir d'un fitxer exemple <filename>Theme.rc</filename>, il·lustrant l'ús de les diverses opcions.</para>
<para>Probablement no disposeu dels connectors correctes per al tema. Els connectors estan en el paquet <literal>kde-artwork</literal>. Feu-ne la descàrrega, instal·leu-lo i torneu-ho a provar.</para>
<para><filename>Theme.rc</filename> és el fitxer a on especifiqueu les opcions d'un tema. Per a més informació, feu un cop d'ull a <link linkend="themes">Com crear temes per a &ksplash;</link>. </para>
<para>Per tal d'emprar &ksplash; amb èxit, necessitareu &kde; versió 3.2 o superior. Alguns temes poden requerir de connectors específics. Si un tema no funciona, si us plau, contacteu amb l'autor del tema per mirar d'obtenir el connector apropiat.</para>