<para>O &ksplash; é um ecrã inicial bonito que mostra o progresso de uma aplicação que está a ser carregada. Por favor comunique quaisquer problemas ou pedidos de funcionalidades às listas de correio do &kde;. As principais funcionalidades do &ksplash; são: </para>
<para>Este manual mostrar-lhe-á como criar temas para usar com os 'plugins' que já estão disponíveis. Se nenhum dos 'plugins' disponíveis satisfaz o seu gosto, você poderá aprender como personalizar a aparência do &ksplash; por completo ao criar um 'plugin' em C++. </para>
<para>Para usar os temas do <ulink url="http://www.kde-look.org">KDE-Look</ulink>, extraia-os para a pasta <filename>~/.trinity/share/apps/ksplash/Themes/</filename> para um único utilizador, ou para a <filename>$<envar>TDEDIR</envar>/share/apps/ksplash/Themes/</filename> para os tornar disponíveis para todos os utilizadores do seu sistema.</para>
<para>Você também poderá usar o módulo <guilabel>Ecrã Inicial</guilabel> da <guilabel>Aparência</guilabel> no centro de controlo do &kde; para fazer isto automaticamente.</para>
<para>Este módulo permite-lhe instalar, testar e remover temas do &ksplash;.</para>
<para>Ao lado do módulo existe uma lista com os temas disponíveis de momento para o &ksplash;. Quando seleccionar um, irá aparecer uma antevisão na área principal da janela. Quando tiver seleccionado o item que deseja usar, carregue em <guibutton>OK</guibutton> ou em <guibutton>Aplicar</guibutton>. Carregue em <guibutton>Cancelar</guibutton> para sair do módulo sem ter feito nenhuma alteração ou em <guibutton>Predefinições</guibutton> para repor o ecrã inicial por omissão do sistema.</para>
<para>Para instalar novos módulos, carregue em <guibutton>Adicionar...</guibutton> e procure o tema no seu computador. Você não terá de descomprimir os ficheiros dos temas; poderá seleccionar sem problemas o ficheiro de tema comprimido. Se instalar um tema não o torna o tema por omissão, até que você o seleccione na lista e carregue em <guibutton>OK</guibutton> ou em <guibutton>Aplicar</guibutton>.</para>
<para>Ainda que você possa ver uma antevisão do ecrã inicial, você poderá querer ver como é que ele funciona realmente, por exemplo para ver como é que fica a animação. Você poderá testar os temas se os seleccionar na lista e carregar em <guibutton>Testar</guibutton>.</para>
<para>Você também poderá remover os temas que não deseja mais usar, se os seleccionar e carregar em <guibutton>Remover</guibutton>. Lembre-se que a sua conta de utilizador poderá não ter permissões para remover os temas instalados ao nível do sistema. Também é recomendado que não desinstale o ecrã inicial <guilabel>Por omissão</guilabel>.</para>
<para>Criar os seus próprios temas do &ksplash; é simples. Depois de você ter terminado os seus temas poderá publicá-los no <ulink url="http://www.kde-look.org">KDE-Look</ulink> para que as outras pessoas os possam usar.</para>
<para>Vamos então criar um tema chamado <literal>OMeuTemaFixe</literal>. Para o tema ser reconhecido pelo &ksplash;, deverá ser guardado numa pasta chamada <filename class="directory">OMeuTemaFixe</filename> em <filename class="directory">~/.trinity/apps/ksplash/Themes/</filename>. Deverá ter um ficheiro chamado <filename>Theme.rc</filename>, o qual contém a configuração do tema. Você poderá indicar várias coisas especiais para o tema, alterar o motor do 'plugin' a usar, e assim por diante. Você não terá de usar todas as configurações disponíveis; normalmente, as configurações têm valores por omissão aceitáveis. A sintaxe básica dos itens no ficheiro <filename>Theme.rc</filename> é <literal>[opção] = [valor]</literal> Você poderá encontrar as definições das várias opções nas seguintes secções.</para>
<para>Depois de indicar o nome, a descrição e o autor do tema, você deverá escolher primeiro um motor de temas (também conhecido por 'plugin'). A partir daí, você poderá personalizar várias funcionalidades do motor do tema ao atribuir pares (chave, valor) como no ficheiro de exemplo em cima.</para>
<para>Garanta que o nome da pasta onde os ficheiros dos temas são gravados (<filename class="directory">~/.trinity/apps/ksplash/Themes/OMeuTemaFixe</filename> no nosso caso) e o identificador (<literal>[Tema do KSplash: OMeuTemaFixe] </literal>, também no nosso caso) do tema no ficheiro <filename>Theme.rc</filename> sejam idênticos. Caso contrário, o &ksplash; não irá reconhecer o tema.</para>
<para>Quando o &ksplash; se inicia, ele tenta procurar uma imagem de fundo para a sua resolução de ecrã actual, se o motor do tema usar uma. O ficheiro com a imagem de fundo deverá ter um nome com o seguinte formato: <filename>Background-<replaceable>LLLxAAA</replaceable>.png</filename>, com o LLL sendo a largura em pixels e o AAA, a altura..</para>
<para>Por exemplo, você poderá usar um ficheiro chamado <filename>Background-1024x768</filename>. Se a imagem de fundo para a sua resolução não puder ser encontrada, ele tentará redimensionar o ficheiro original <filename>Background.png</filename> ou o ficheiro indicado no <filename>Theme.rc</filename> para se adequar à resolução actual. O redimensionamento imediato poderá levar algum tempo, como tal você deverá fornecer imagens de fundo para, pelo menos, os seguintes tamanhos: 1280x1024, 1024x768 e 800x600.</para>
<para>Neste capítulo, nós descrevemos um método simples para usar o &ksplash; como o ecrã inicial para a sua aplicação do &kde;. Se não você não desenvolve aplicações para o &kde;, poderá ignorar este capítulo.</para>
<para>A sua aplicação do &kde; deverá lidar com o &DCOP;. O &DCOP; é a tecnologia do &kde; que é usada para comunicar entre as aplicações. Se você usar a <ulink url="http://developer.kde.org">plataforma-padrão de aplicações do &kde;</ulink>, isto é realizado automaticamente. Para mais informações sobre o &DCOP; e as tecnologias relacionadas do &kde; vá ao <ulink url="http://developer.kde.org">cantinho dos programadores do &kde;</ulink>.</para>
<para>Antes de a sua aplicação iniciar o seu trabalho intensivo, ou antes de começar a carregar os 'plugins', &etc;, invoke o &ksplash; como se mostra a seguir:</para>
<para>Nós iremos assumir que só existe uma instância do &ksplash; a correr. Os outros casos são ligeiramente mais complexos. Por favor, veja a documentação do &DCOP; para mais detalhes.</para>
<para>Antes de você poder mostrar quaisquer mensagens, você precisa de configurar o número de passos que irá mostrar. Por exemplo, o procedimento de arranque do &kde; utiliza 7 passos.</para>
<para>De cada vez que você invocar o <constant>programStarted</constant>, os passos completos são incrementados. Quando o seu programa tiver terminado o seu arranque, faça o seguinte para fazer desaparecer o ecrã inicial:</para>
<para>A criação de novos 'plugins' para o &ksplash; não é difícil. Neste capítulo, nós iremos criar um 'plugin' simples que irá emular o ecrã inicial de um sistema operativo bem conhecido. Este tutorial assume que você conhece as bases do C++ e um pouco de programação com o KDE/Qt.</para>
<para>Nós iremos criar um 'plugin' chamado <literal>2k</literal>. O nome do 'plugin' é usado em vários sítios, e é importante que você o use de forma consistente, de modo a que o 'plugin' seja reconhecido pelo &ksplash;. Os 'plugins' do &ksplash; são de factos bibliotecas carregadas dinamicamente com a seguinte convenção de nomes: </para>
<member>A biblioteca dever-se-á chamar <filename>ksplash+nomedotemaemminúsculas</filename>. Para o nosso tema, chamar-se-á <filename>ksplash2k</filename>.</member>
<member>Deverá ter um ficheiro 'desktop' correspondente com o nome formatado da seguinte forma <filename>ksplash+nomedotemaemminúsculas.desktop</filename>. Para o nosso tema, será igual a <filename>ksplash2k.desktop</filename>. </member>
<member>Finalmente, o objecto que é devolvido pela biblioteca deverá ser uma classe chamada <literal>Theme+nomedotema</literal>. Para o nosso exemplo, será a <literal>Theme2k</literal>.</member>
<para>Não se preocupe com isso se não perceber nada da parte anterior. Nós vamos ter em consideração cada um desses pontos em detalhe mais tarde. O outro detalhe importante é que a classe do 'plugin' deverá ser derivada da classe <literal>ThemeEngine</literal>. </para>
<para>Nós iremos usar a plataforma de aplicações do &kde;, a qual tomará conta de construir o 'plugin' e que nos irá garantir alguma independência da plataforma, sem nenhum trabalho da nossa parte. Para o fazer, certifique-se que tem o pacote <filename>tdesdk</filename> instalado. Corra o comando <literal>kapptemplate</literal> para produzir uma aplicação chamada "2k". Ela irá criar uma pasta de topo que contém alguns ficheiros genéricos como o AUTHORS, &etc;. Nós estamos mais interessados na subpasta chamada <filename class="directory">2k</filename>. Vá para essa subpasta e remova todos os ficheiros que lá estejam. A partir de agora, temos o esqueleto que pretendemos. </para>
<para>O próximo passo é a criação de um ficheiro <filename>.desktop</filename> que, ao ser instalado, irá indicar ao &ksplash; que o nosso 'plugin' está disponível. Estando consistente com as convenções de nomes indicadas na <link linkend="basic-requirements">secção anterior</link>, crie um ficheiro chamado <filename>ksplash2k.desktop</filename> nessa pasta. Deverá conter as seguintes linhas: </para>
<para>Os campos <literal>Encoding</literal>, <literal>Type</literal>, <literal>Comment</literal> e <literal>ServiceTypes</literal> são os mesmos para todos os 'plugins'. O nome do 'plugin' e da biblioteca seguem as convenções indicadas acima. O campo <literal>X-KSplash-Default</literal> usa um valor booleano que indica se deverá ser mostrado no módulo de configuração do painel de controlo por omissão. Excepto em casos muitos raros, deverá ser igual a <constant>true</constant>. </para>
<para>Agora que terminámos o trabalho preliminar, vamos para a parte divertida - criar uma classe que irá fornecer o comportamento que pretendemos. Embora tenhamos a liberdade de fazer com que esta classe faça praticamente tudo o que quisermos, existem algumas restrições.</para>
<listitem><para>As classes do 'plugin' deverão herdar da classe <constant>ThemeEngine</constant>.</para></listitem>
<listitem><para>As classes do 'plugin' deverão ter um nome de acordo com a regra: <classname>Theme+NomePlugin</classname>.</para></listitem>
<listitem><para>As classes do 'plugin' deverão oferecer uma função <literal>static</literal> chamada <function>names</function> que devolve uma lista com os nomes pela qual poderá ser invocada.</para></listitem>
<listitem><para>Se o 'plugin' puder ser configurado no módulo do centro de controlo, deverá oferecer uma classe baseada na <literal>ThemeEngineConfig</literal> para a configuração.</para></listitem>
<listitem><para>As classes do 'plugin' deverão reimplementar pelo menos uma das funções virtuais <function>slotSetText</function>, <function>slotSetPixmap</function>, <function>slotUpdateProgress</function> e <function>slotUpdateSteps</function> para serem úteis.</para></listitem>
<listitem><para>O construtor deverá ter a forma <literal>ThemeEngine( TQWidget *mae, const char *nome, const QStringList &argumentos )</literal> para que possa ser usada com a <classname>KGenericFactory</classname>.</para></listitem>
<para>O último requisito poderá parecer complicado mas, como veremos mais tarde, ao adicionar uma única linha aos seus ficheiros de código, você poderá normalmente ignorá-lo.</para>
<para>Vamos então analisar a listagem em cima. A classe <classname>Theme2k</classname> satisfaz as convenções de nomes e herda da classe <classname>ThemeEngine</classname>. Ela contém um método <methodname>Theme2k::names()</methodname>, e tem um construtor que recebe os parâmetros obrigatórios: <function>Theme2k( TQWidget *, const char *, const QStringList& );</function> e também contém um método simples <methodname>Theme2k::slotSetText()</methodname>. De momento, não se preocupe com a classe <classname>RotWidget</classname>. É um pequeno item que oferece alguma beleza visual para o utilizador. O nosso 'plugin' é muito simples e não mostra nenhuns ícones nem nenhuma barra de progresso. Se você quiser mostrar os ícones, implemente de novo a função <function>slotSetPixmap</function>. Existem funções semelhantes para definir o intervalo da barra de progresso (<function>slotUpdateSteps</function>) e para incrementar (<function>slotUpdateProgress</function>) o passo actual. </para>
<para>Nós iremos examinar só as partes relevantes da implementação. Para uma listagem da implementação completa (e não traduzida), veja por favor o apêndice. A primeira coisa que será feita é descartar o requisito da biblioteca:</para>
<para>A macro <constant>K_EXPORT_COMPONENT_FACTORY</constant> é declarada no ficheiro <filename>kgenericfactory.h</filename>. Sigamos para o construtor! Dado que este é um 'plugin' muito simples, assim o é também o construtor.</para>
<para>O método <function>readSettings()</function> ilustra a forma correcta de obter a configuração do seu tema. (Você deseja que as pessoas usem os seus 'plugins' nos temas delas, não deseja?)</para>
<para>Dado que gostamos dos nossos utilizadores, nós oferecemos valores razoáveis para os parâmetros que não estejam presentes no ficheiro do tema. Repare que devemos ser definir o nosso grupo para "KSplash Theme: nomedotema" para continuarmos compatíveis com as especificações dos temas futuras. O método <function>initUI()</function> não é muito interessante, dado que apenas cria a interface gráfica. Veja por favor o apêndice para mais detalhes. </para>
<para>Dado que decidimos usar a plataforma do &kde; para compilar o 'plugin', nós iremos precisar de criar um <filename>Makefile.am</filename>. Deverá ficar algo do género:</para>
<para>Para mais informações sobre como criar os ficheiros <filename>Makefile.am</filename> para o &kde;, por favor veja o <ulink url="http://developer.kde.org/documentation/other/makefile_am_howto.html">'site' Web</ulink> dos programadores do &kde;. A única coisa a notar é que nós oferecemos um tema por omissão baseado neste 'plugin' e oferecemos uma imagem de antevisão para o mesmo. Por razões de cortesia para os seus utilizadores, você deverá oferecer um <filename>Theme.rc</filename> de exemplo e que ilustre a utilização das várias opções.</para>
<para>Você provavelmente não tem os 'plugins' correctos para o tema. Os 'plugins' estão no pacote <literal>kde-artwork</literal>. Obtenha-os e instale-os, e tente de novo mais tarde.</para>
<para>O <filename>Theme.rc</filename> é o ficheiro onde você poderá indicar a configuração de um tema. Para mais informações, dê uma vista de olhos em <link linkend="themes">Como criar temas para o &ksplash;</link>. </para>
<para>Para conseguir usar com sucesso o &ksplash;, você necessita do &kde; versão 3.2 ou superior. Alguns temas poderão necessitar de 'plugins' específicos. Se um tema não funcionar, por favor contacte o autor do tema para descobrir onde obter o 'plugin' apropriado.</para>