00001 /* 00002 * Copyright (C) 2009, Edmundo Albuquerque de Souza e Silva. 00003 * 00004 * This file may be distributed under the terms of the Q Public License 00005 * as defined by Trolltech AS of Norway and appearing in the file 00006 * LICENSE.QPL included in the packaging of this file. 00007 * 00008 * THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING 00009 * THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR 00010 * PURPOSE. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, 00011 * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING 00012 * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, 00013 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION 00014 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 00015 * 00016 */ 00017 00018 #ifndef __RIOMMKEYWORDS_H__ 00019 #define __RIOMMKEYWORDS_H__ 00020 00021 #include <qdom.h> 00022 #include <iostream> 00023 00024 #include "RioInterfaceTypes.h" 00025 #include "RioInterface.h" 00026 #include "RioMMInterface.h" 00027 #include "RioMMObject.h" 00028 #include "RioFile.h" 00029 00030 // A fun��o xmlValidateDocument() utilizada no metodo GetKeywords() trabalha 00031 // com um par�metro do tipo xmlValidCtxt que, por sua vez, tem dois membros 00032 // que s�o ponteiros para fun��es (do tipo fprintf). N�o querendo que nada 00033 // fosse feito neste ponto, surgiu a necessidade de criar uma fun��o "morta", 00034 // no caso a donothing2(). 00035 void donothing2(); 00036 00037 class CRioMMKeywords : public CRioMMObject 00038 { 00039 00040 private: 00041 RioFile *KeywordsFile; // Ponteiro para o objeto usado para ler 00042 // o arquivo .keyword. 00043 QDomDocument *domTree; // Ponteiro para o objeto com a estrutura 00044 // hier�rquica com as palavras-chave. 00045 RioMMInterface *rio; // Ponteiro para o objeto com a interface gr�fica 00046 // do cliente. 00047 00048 public: 00049 // As fun��es s�o descritas no arquivo RioMMKeywords.cpp. 00050 00051 /*** 00052 * Construtor CRioMMKeywords: Constr�i um objeto da classe CRioMMKeywords. 00053 * O construtor da classe base � chamado para fazer as inicializa��es da 00054 * desta classe, e depois as vari�veis da classe CRioMMKeywords s�o 00055 * inicializadas com os valores dados no construtor 00056 * (obs: esta classe � baseada no c�digo da classe CRioMMTopics). 00057 * @param KeywordsName Nome do arquivo com as palavras-chave (.keyword) no 00058 * formato XML. 00059 * @param blocksize Tamanho dos blocos do arquivo. 00060 * @param numBuffers Informa o tamanho do PlayOutBuffer do cliente. (?) 00061 * @param RTT_average Estrutura com o tempo m�dio de RTT. (?) 00062 * @param rio_interface Ponteiro para o objeto RioMMInterface com a interface 00063 * gr�fica. 00064 */ 00065 CRioMMKeywords( char*, unsigned int, RioBlock, struct timeval, 00066 RioMMInterface* ); 00067 00068 /*** 00069 * Destrutor CRioMMKeywords: destr�i um objeto da classe CRioMMKeywords. 00070 */ 00071 ~CRioMMKeywords(); 00072 00073 /*** 00074 * Fun��o GetKeywords: Le e avalia o arquivo .keyword associado a uma aula, e 00075 * faz a sua avalia��o sint�tica (o arquivo est� no formato XML) usando o 00076 * arquivo keyword.dtd. Os dois arquivos est�o armazenados no Servidor RIO e 00077 * s�o baixados para um diret�rio tempor�rio (em arquivos tempor�rios). Se a 00078 * avalia��o sint�tica tiver sucesso, um evento � gerado (para o objeto rio da 00079 * classe do tipo CRioMMInterface) para que o manipulador de eventos da 00080 * interface gr�fica gere as palavras-chave no di�logo a ser mostrado ao 00081 * usu�rio. 00082 * @param Access Modo de acesso ao arquivo .keyword. 00083 * @param Stream Ponteiro para o stream do RIO usado para baixar o arquivo do 00084 * servidor. 00085 * @return Valor menor ou igual a 0 se algum erro ocorrer. 00086 */ 00087 int GetKeywords( RioAccess, CRioStream* ); 00088 00089 void Play(); 00090 void Stop(); 00091 void Pause(); 00092 void FastRewind(); 00093 void FastForward(); 00094 void GoTo( unsigned int ); 00095 int init(); 00096 RioBlock GetCurrentPosition(); 00097 RioBlock GetTotalPositions(); 00098 00099 /*** 00100 * Fun��o setRio: Altera o objeto com a interface gr�fica do cliente (do tipo 00101 * CRioMMInterface). 00102 * @param r Ponteiro para o objeto com a interface gr�fica. 00103 */ 00104 void setRio( RioMMInterface* ); 00105 00106 /*** 00107 * Fun��o getRio: Retorna o objeto com a interface gr�fica do cliente (do tipo 00108 * CRioMMInterface). 00109 * @return Ponteiro do objeto com a interface gr�fica. 00110 */ 00111 RioMMInterface *getRio(); 00112 00113 /*** 00114 * Fun��o setDomTree: Altera o objeto da classe que armazena a estrutura 00115 * hier�rquica de um arquivo .keyword processado. 00116 * @param d Ponteiro para o objeto com a estrutura hier�rquica. 00117 */ 00118 void setDomTree( QDomDocument* ); 00119 QDomDocument *getDomTree(); 00120 00121 }; 00122 #endif