diff --git a/le-search/TODO b/le-search/TODO
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/le-search/VERSAO b/le-search/VERSAO
new file mode 100644
index 0000000000000000000000000000000000000000..5bc4571bbc3e88ccdfa5d94b15cc1b8eeec54581
--- /dev/null
+++ b/le-search/VERSAO
@@ -0,0 +1,2 @@
+1.0.0
+
diff --git a/le-search/gerar.sh b/le-search/gerar.sh
new file mode 100644
index 0000000000000000000000000000000000000000..1729c6830fc9b35895ea794550b1849935523105
--- /dev/null
+++ b/le-search/gerar.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+# gerar.sh
+# Copyright (c) 2006 by Bruno Ribas <ribas@ufpr.br>
+
+DIRTMP=$(mktemp -d)
+VERSAO=$(cat VERSAO)
+
+#arrumar versao
+#$1 tipo de incremento
+MAJOR=$(echo $VERSAO| cut -d'.' -f1)
+MINOR=$(echo $VERSAO| cut -d'.' -f2)
+REVISION=$(echo $VERSAO| cut -d'.' -f3)
+
+case $1 in
+	Minor)
+		((MINOR++))
+		REVISION=0
+		;;
+	Major)
+		((MAJOR++))
+		MINOR=0
+		REVISION=0
+		;;
+	help)
+		echo "Uso: $0 Major|Minor|Revision"
+		echo '     Major - Altera versao Major'
+		echo '     Minor - Altera versao Minor'
+		exit
+		;;
+	*)
+		((REVISION++))
+		;;
+esac
+
+VERSAO="${MAJOR}.${MINOR}.${REVISION}"
+echo "$VERSAO" > VERSAO
+
+#Compila a documentacao do pacote no diretorio doc/
+#cd doc/
+#hevea -text *.tex
+#hevea -text *.tex
+#cd ../
+
+cp -r pacote $DIRTMP
+
+#Copia a documentacao compilada para dentro do pacote.
+#cp doc/*.txt $DIRTMP/pacote/usr/share/doc/prd-*
+
+cd $DIRTMP
+find . -name ".svn" -exec rm -rf {} \; &>/dev/null
+sed -i -e "s/Version:/Version: $VERSAO/" pacote/DEBIAN/control
+
+fakeroot dpkg -b pacote .
+
+cd -
+
+cp $DIRTMP/*deb .
+rm -rf $DIRTMP
+
+
+# vim:tabstop=4:shiftwidth=4:encoding=iso-8859-1
+
diff --git a/le-search/pacote/DEBIAN/control b/le-search/pacote/DEBIAN/control
new file mode 100644
index 0000000000000000000000000000000000000000..fa55052cdc3677ca7b2d3c9a219e39d933aa25fa
--- /dev/null
+++ b/le-search/pacote/DEBIAN/control
@@ -0,0 +1,8 @@
+Package: le-search
+Section: main
+Priority: important
+Version:
+Architecture: i386
+Depends: libxml2, konqueror, libqt4-dev
+Maintainer: LE Maintainer <le-maintainer@c3sl.ufpr.br>
+Description: Search tool for educational content of Linux Educacional project
diff --git a/le-search/pacote/usr/local/share/doc/le-search/AUTHORS b/le-search/pacote/usr/local/share/doc/le-search/AUTHORS
new file mode 100644
index 0000000000000000000000000000000000000000..eca085e96c00cf1ff995653a9874ff88955ff0a3
--- /dev/null
+++ b/le-search/pacote/usr/local/share/doc/le-search/AUTHORS
@@ -0,0 +1,29 @@
+# LE-SEARCH
+
+C3SL - Centro de Computacao Cientifica e Software Livre
+
+Adriano da Luz
+Bruno Cesar Ribas
+Carlos Carvalho
+Cleide Luzia Bonfim Possamai
+Danilo Kiyoshi Simizu Yorinori
+Diego Giovane Pasqualin
+Eduardo Todt
+Erik Alexandre Pucci
+Felipe Cys Laskoski
+Guilherme Zasyeki Machado
+Josiney de Souza
+Juliana Bueno
+Klismann Smoger Mottin
+Laura Sanchez Garcia
+Luis Carlos Erpen de Bona
+Marcela Saragioto
+Marcos Castilho
+Pedro Eugenio Rocha
+Renan Franca De Miranda
+Ricardo Tavares De Oliveira
+Rubens Massayuki Suguimoto
+Thiago Henrique Dos Santos Picharski
+Tiago Rodrigo Kepe
+Victor Tarabola Cortiano
+Vinicius Kwiecien Ruoso
diff --git a/le-search/pacote/usr/local/share/doc/le-search/COPYING b/le-search/pacote/usr/local/share/doc/le-search/COPYING
new file mode 100644
index 0000000000000000000000000000000000000000..10926e87f113fb026c366866d6fa466061562870
--- /dev/null
+++ b/le-search/pacote/usr/local/share/doc/le-search/COPYING
@@ -0,0 +1,675 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
+
diff --git a/le-search/src/Makefile b/le-search/src/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..1f1ac833a5c4663a860b61fa3a3fdaa80cfb6052
--- /dev/null
+++ b/le-search/src/Makefile
@@ -0,0 +1,264 @@
+#############################################################################
+# Makefile for building: qt
+# Generated by qmake (2.01a) (Qt 4.7.0) on: qui jan 27 10:12:45 2011
+# Project:  qt.pro
+# Template: app
+# Command: /usr/bin/qmake -o Makefile qt.pro
+#############################################################################
+
+####### Compiler, tools and options
+
+CC            = gcc
+CXX           = g++
+DEFINES       = -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED
+CFLAGS        = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
+CXXFLAGS      = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
+INCPATH       = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I/usr/include/libxml2 -I. -I. -I.
+LINK          = g++
+LFLAGS        = -Wl,-O1
+LIBS          = $(SUBLIBS)  -L/usr/lib -lQtGui -lQtCore -lpthread -lxml2
+AR            = ar cqs
+RANLIB        = 
+QMAKE         = /usr/bin/qmake
+TAR           = tar -cf
+COMPRESS      = gzip -9f
+COPY          = cp -f
+SED           = sed
+COPY_FILE     = $(COPY)
+COPY_DIR      = $(COPY) -r
+STRIP         = strip
+INSTALL_FILE  = install -m 644 -p
+INSTALL_DIR   = $(COPY_DIR)
+INSTALL_PROGRAM = install -m 755 -p
+DEL_FILE      = rm -f
+SYMLINK       = ln -f -s
+DEL_DIR       = rmdir
+MOVE          = mv -f
+CHK_DIR_EXISTS= test -d
+MKDIR         = mkdir -p
+
+####### Output directory
+
+OBJECTS_DIR   = ./
+
+####### Files
+
+SOURCES       = categorize.cpp \
+		convert.c \
+		main.cpp \
+		mySearch.cpp \
+		readXml.c \
+		walk.c moc_mySearch.cpp
+OBJECTS       = categorize.o \
+		convert.o \
+		main.o \
+		mySearch.o \
+		readXml.o \
+		walk.o \
+		moc_mySearch.o
+DIST          = /usr/share/qt4/mkspecs/common/g++.conf \
+		/usr/share/qt4/mkspecs/common/unix.conf \
+		/usr/share/qt4/mkspecs/common/linux.conf \
+		/usr/share/qt4/mkspecs/qconfig.pri \
+		/usr/share/qt4/mkspecs/features/qt_functions.prf \
+		/usr/share/qt4/mkspecs/features/qt_config.prf \
+		/usr/share/qt4/mkspecs/features/exclusive_builds.prf \
+		/usr/share/qt4/mkspecs/features/default_pre.prf \
+		/usr/share/qt4/mkspecs/features/release.prf \
+		/usr/share/qt4/mkspecs/features/default_post.prf \
+		/usr/share/qt4/mkspecs/features/warn_on.prf \
+		/usr/share/qt4/mkspecs/features/qt.prf \
+		/usr/share/qt4/mkspecs/features/unix/thread.prf \
+		/usr/share/qt4/mkspecs/features/moc.prf \
+		/usr/share/qt4/mkspecs/features/resources.prf \
+		/usr/share/qt4/mkspecs/features/uic.prf \
+		/usr/share/qt4/mkspecs/features/yacc.prf \
+		/usr/share/qt4/mkspecs/features/lex.prf \
+		/usr/share/qt4/mkspecs/features/include_source_dir.prf \
+		qt.pro
+QMAKE_TARGET  = le-search
+DESTDIR       = 
+TARGET        = le-search
+
+first: all
+####### Implicit rules
+
+.SUFFIXES: .o .c .cpp .cc .cxx .C
+
+.cpp.o:
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
+
+.cc.o:
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
+
+.cxx.o:
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
+
+.C.o:
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
+
+.c.o:
+	$(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<"
+
+####### Build rules
+
+all: Makefile $(TARGET)
+
+$(TARGET): ui_mySearch.h ui_mySearchHelp.h $(OBJECTS)  
+	$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
+
+Makefile: qt.pro  /usr/share/qt4/mkspecs/linux-g++/qmake.conf /usr/share/qt4/mkspecs/common/g++.conf \
+		/usr/share/qt4/mkspecs/common/unix.conf \
+		/usr/share/qt4/mkspecs/common/linux.conf \
+		/usr/share/qt4/mkspecs/qconfig.pri \
+		/usr/share/qt4/mkspecs/features/qt_functions.prf \
+		/usr/share/qt4/mkspecs/features/qt_config.prf \
+		/usr/share/qt4/mkspecs/features/exclusive_builds.prf \
+		/usr/share/qt4/mkspecs/features/default_pre.prf \
+		/usr/share/qt4/mkspecs/features/release.prf \
+		/usr/share/qt4/mkspecs/features/default_post.prf \
+		/usr/share/qt4/mkspecs/features/warn_on.prf \
+		/usr/share/qt4/mkspecs/features/qt.prf \
+		/usr/share/qt4/mkspecs/features/unix/thread.prf \
+		/usr/share/qt4/mkspecs/features/moc.prf \
+		/usr/share/qt4/mkspecs/features/resources.prf \
+		/usr/share/qt4/mkspecs/features/uic.prf \
+		/usr/share/qt4/mkspecs/features/yacc.prf \
+		/usr/share/qt4/mkspecs/features/lex.prf \
+		/usr/share/qt4/mkspecs/features/include_source_dir.prf \
+		/usr/lib/libQtGui.prl \
+		/usr/lib/libQtCore.prl
+	$(QMAKE) -o Makefile qt.pro
+/usr/share/qt4/mkspecs/common/g++.conf:
+/usr/share/qt4/mkspecs/common/unix.conf:
+/usr/share/qt4/mkspecs/common/linux.conf:
+/usr/share/qt4/mkspecs/qconfig.pri:
+/usr/share/qt4/mkspecs/features/qt_functions.prf:
+/usr/share/qt4/mkspecs/features/qt_config.prf:
+/usr/share/qt4/mkspecs/features/exclusive_builds.prf:
+/usr/share/qt4/mkspecs/features/default_pre.prf:
+/usr/share/qt4/mkspecs/features/release.prf:
+/usr/share/qt4/mkspecs/features/default_post.prf:
+/usr/share/qt4/mkspecs/features/warn_on.prf:
+/usr/share/qt4/mkspecs/features/qt.prf:
+/usr/share/qt4/mkspecs/features/unix/thread.prf:
+/usr/share/qt4/mkspecs/features/moc.prf:
+/usr/share/qt4/mkspecs/features/resources.prf:
+/usr/share/qt4/mkspecs/features/uic.prf:
+/usr/share/qt4/mkspecs/features/yacc.prf:
+/usr/share/qt4/mkspecs/features/lex.prf:
+/usr/share/qt4/mkspecs/features/include_source_dir.prf:
+/usr/lib/libQtGui.prl:
+/usr/lib/libQtCore.prl:
+qmake:  FORCE
+	@$(QMAKE) -o Makefile qt.pro
+
+dist: 
+	@$(CHK_DIR_EXISTS) .tmp/qt1.0.0 || $(MKDIR) .tmp/qt1.0.0 
+	$(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/qt1.0.0/ && $(COPY_FILE) --parents categorize.h convert.h main.h mySearch.h readXml.h walk.h .tmp/qt1.0.0/ && $(COPY_FILE) --parents categorize.cpp convert.c main.cpp mySearch.cpp readXml.c walk.c .tmp/qt1.0.0/ && $(COPY_FILE) --parents mySearch.ui mySearchHelp.ui .tmp/qt1.0.0/ && (cd `dirname .tmp/qt1.0.0` && $(TAR) qt1.0.0.tar qt1.0.0 && $(COMPRESS) qt1.0.0.tar) && $(MOVE) `dirname .tmp/qt1.0.0`/qt1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/qt1.0.0
+
+
+clean:compiler_clean 
+	-$(DEL_FILE) $(OBJECTS)
+	-$(DEL_FILE) *~ core *.core
+
+
+####### Sub-libraries
+
+distclean: clean
+	-$(DEL_FILE) $(TARGET) 
+	-$(DEL_FILE) Makefile
+
+
+check: first
+
+mocclean: compiler_moc_header_clean compiler_moc_source_clean
+
+mocables: compiler_moc_header_make_all compiler_moc_source_make_all
+
+compiler_moc_header_make_all: moc_mySearch.cpp
+compiler_moc_header_clean:
+	-$(DEL_FILE) moc_mySearch.cpp
+moc_mySearch.cpp: ui_mySearch.h \
+		ui_mySearchHelp.h \
+		walk.h \
+		readXml.h \
+		convert.h \
+		categorize.h \
+		mySearch.h
+	/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) mySearch.h -o moc_mySearch.cpp
+
+compiler_rcc_make_all:
+compiler_rcc_clean:
+compiler_image_collection_make_all: qmake_image_collection.cpp
+compiler_image_collection_clean:
+	-$(DEL_FILE) qmake_image_collection.cpp
+compiler_moc_source_make_all:
+compiler_moc_source_clean:
+compiler_uic_make_all: ui_mySearch.h ui_mySearchHelp.h
+compiler_uic_clean:
+	-$(DEL_FILE) ui_mySearch.h ui_mySearchHelp.h
+ui_mySearch.h: mySearch.ui
+	/usr/bin/uic-qt4 mySearch.ui -o ui_mySearch.h
+
+ui_mySearchHelp.h: mySearchHelp.ui
+	/usr/bin/uic-qt4 mySearchHelp.ui -o ui_mySearchHelp.h
+
+compiler_yacc_decl_make_all:
+compiler_yacc_decl_clean:
+compiler_yacc_impl_make_all:
+compiler_yacc_impl_clean:
+compiler_lex_make_all:
+compiler_lex_clean:
+compiler_clean: compiler_moc_header_clean compiler_uic_clean 
+
+####### Compile
+
+categorize.o: categorize.cpp categorize.h \
+		readXml.h \
+		convert.h \
+		walk.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o categorize.o categorize.cpp
+
+convert.o: convert.c 
+	$(CC) -c $(CFLAGS) $(INCPATH) -o convert.o convert.c
+
+main.o: main.cpp main.h \
+		mySearch.h \
+		ui_mySearch.h \
+		ui_mySearchHelp.h \
+		walk.h \
+		readXml.h \
+		convert.h \
+		categorize.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
+
+mySearch.o: mySearch.cpp mySearch.h \
+		ui_mySearch.h \
+		ui_mySearchHelp.h \
+		walk.h \
+		readXml.h \
+		convert.h \
+		categorize.h
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o mySearch.o mySearch.cpp
+
+readXml.o: readXml.c readXml.h \
+		convert.h
+	$(CC) -c $(CFLAGS) $(INCPATH) -o readXml.o readXml.c
+
+walk.o: walk.c walk.h \
+		readXml.h \
+		convert.h
+	$(CC) -c $(CFLAGS) $(INCPATH) -o walk.o walk.c
+
+moc_mySearch.o: moc_mySearch.cpp 
+	$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_mySearch.o moc_mySearch.cpp
+
+####### Install
+
+install:   FORCE
+
+uninstall:   FORCE
+
+FORCE:
+
diff --git a/le-search/src/busca.png b/le-search/src/busca.png
new file mode 100644
index 0000000000000000000000000000000000000000..6af2ca7bc9168dbe7578b9febcaaba107831ae82
Binary files /dev/null and b/le-search/src/busca.png differ
diff --git a/le-search/src/categorize.cpp b/le-search/src/categorize.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..c87d12851f7bc0d10ef0c11a8b5db2a813eb0df3
--- /dev/null
+++ b/le-search/src/categorize.cpp
@@ -0,0 +1,77 @@
+#include <QtGui>
+#include "categorize.h"
+#include "readXml.h"
+#include "walk.h"
+
+using namespace std;
+
+void categorizeXml(const char *xmlFile, map<string, set<string> >& M) {
+    xmlTextReaderPtr reader;
+    nodeContent node;
+    const xmlChar *name;
+    int ret;
+    string category, media;
+
+    reader = xmlReaderForFile(xmlFile, NULL, 0);
+    if (reader != NULL) {
+        ret = xmlTextReaderRead(reader);
+        while (ret == 1) {
+             name = xmlTextReaderConstName(reader);
+             if ( xmlTextReaderHasAttributes(reader) == 1 ) {
+                 node.category = xmlTextReaderGetAttribute(reader, xmlCharStrdup("category"));
+                 node.media = xmlTextReaderGetAttribute(reader, xmlCharStrdup("media"));
+                 category = QString().fromLatin1((char *)node.category).toStdString();
+                 media = QString().fromLatin1((char *)node.media).toStdString();
+                 M[media].insert(category);
+             }
+             ret = xmlTextReaderRead(reader);
+         }
+    }
+}
+
+int categorize(const char *currentDirName, map<string, set<string> >& M)
+{
+    struct dirent **contentDir;
+    struct stat contentDirStat;
+    char *tmpDirName;
+    int n_dir, i;
+
+    n_dir = scandir(currentDirName, &contentDir, 0, alphasort);
+    for (i = 0; i < n_dir; i++)
+    {
+        /* Ignore directories "." and ".." */
+        if( strcmp(contentDir[i]->d_name, ".")
+            && strcmp(contentDir[i]->d_name, "..") )
+        {
+            tmpDirName = NULL;
+            /* Concatenates current directory path with
+            contentDir->d_name */
+            if( ! concatString(&tmpDirName, currentDirName, "/") )
+                return 0;
+            if( ! concatString(&tmpDirName, tmpDirName,
+                contentDir[i]->d_name) )
+                return 0;
+
+            /* Parse the type of current file */
+            if( lstat(tmpDirName, &contentDirStat) )
+                return 0;
+            /* Macro S_ISDIR returns true if st_mode is directory. */
+            if( S_ISDIR(contentDirStat.st_mode) )
+            {
+                if( ! categorize(tmpDirName,M) )
+                    return 0;
+            }
+            else
+                if(strstr(tmpDirName,".xml"))
+                {
+                    const char *xmlFile = tmpDirName;
+                    categorizeXml(xmlFile, M);
+                    return 1;
+                }
+        }
+
+    }
+
+return 1;
+}
+
diff --git a/le-search/src/categorize.h b/le-search/src/categorize.h
new file mode 100644
index 0000000000000000000000000000000000000000..1afef4dc17ef56d916be0ca50b3e2beb9af026ac
--- /dev/null
+++ b/le-search/src/categorize.h
@@ -0,0 +1,14 @@
+#ifndef H_CATEGORIZE_H
+#define H_CATEGORIZE_H
+
+#include <map>
+#include <set>
+#include <string>
+
+using namespace std;
+
+void categorizeXml(const char *xmlFile, map<string, set<string> >& M);
+int categorize(const char *currentDirName, map<string, set<string> >& M);
+
+#endif
+
diff --git a/le-search/src/convert.c b/le-search/src/convert.c
new file mode 100644
index 0000000000000000000000000000000000000000..357e26028fc9626ffe246a72bc43ef38e84a9348
--- /dev/null
+++ b/le-search/src/convert.c
@@ -0,0 +1,183 @@
+char * convertXmlToLower(char *source)
+{
+    int i;
+    int source_size;
+    char *destination = (char *) malloc( sizeof(char));
+    int j = 0; /* "j" will save the current size of the "destination" */
+    source_size = strlen(source);
+
+    for( i = 0; i < source_size; i++ )
+    {
+        /* If the character is not sharp and  are in lowercase, only copies
+        to the new word */
+        if ( source[i] >= 97 && source[i] <= 122 )
+        {
+            j++;
+            destination = (char*)realloc( destination, j * sizeof(char));
+            destination[j-1] = source[i];
+        }
+        else
+        {
+            /* Detects "a" sharp and replaces it by character "a" */
+            if ( ( source[i] <= -124 && source[i] >= -128 ) ||
+                 ( source[i] <= -92 && source[i] >= -96 ) )
+            {
+                j++;
+                destination = (char*)realloc( destination, j * sizeof(char));
+                destination[j-1] = 'a';
+            }
+
+            /* Detects "e" sharp and replaces it by character "e" */
+            if ( ( source[i] <= -117 && source[i] >= -120 ) ||
+                 ( source[i] <= -85 && source[i] >= -88 ) )
+
+            {
+                j++;
+                destination = (char*)realloc( destination, j * sizeof(char));
+                destination[j-1] = 'e';
+            }
+
+            /* Detects "i" sharp and replaces it by character "i" */
+            if ( ( source[i] <= -113 && source[i] >= -116 ) ||
+                 ( source[i] <= -81 && source[i] >= -84 ) )
+            {
+                j++;
+                destination = (char*)realloc( destination, j * sizeof(char));
+                destination[j-1] = 'i';
+            }
+
+            /* Detects "o" sharp and replaces it by character "o" */
+            if ( ( source[i] <= -106 && source[i] >= -110 ) ||
+                 ( source[i] <= -74 && source[i] >= -78  ) )
+            {
+                j++;
+                destination = (char*)realloc( destination, j * sizeof(char));
+                destination[j-1] = 'o';
+            }
+
+            /* Detects "u" sharp and replaces it by character "u" */
+            if ( ( source[i] <= -100 && source[i] >= -103 ) ||
+                 ( source[i] <= -68 && source[i] >= -71 ) )
+            {
+                j++;
+                destination = (char*)realloc( destination, j * sizeof(char));
+                destination[j-1] = 'u';
+            }
+
+            /* Detects "ç" and replace by character "c" */
+            if ( source[i] == -89 )
+            {
+                j++;
+                destination = (char*)realloc( destination, j * sizeof(char));
+                destination[j-1] = 'c';
+            }
+
+            /* Converts uppercase to lowercase */
+            if ( source[i] >= 65 && source[i] <= 90 )
+            {
+                j++;
+                destination = (char*)realloc( destination, j * sizeof(char));
+                destination[j-1] = source[i] + 32;
+            }
+        }
+    }
+
+    /* Ends the word with "\0" */
+    j++;
+    destination = (char*)realloc( destination, j * sizeof(char));
+    destination[j-1] = '\0';
+
+    return destination;
+}
+
+char * convertParamToLower(char *source)
+{
+    int i;
+    int source_size;
+    char *destination = (char *) malloc( sizeof(char));
+    int j = 0; /* "j" will save the current size of the "destination" */
+    source_size = strlen(source);
+
+    for( i = 0; i < source_size; i++ )
+    {
+        /* If the character is not sharp and  are in lowercase, only copies
+        to the new word */
+        if ( source[i] >= 97 && source[i] <= 122 )
+        {
+            j++;
+            destination = (char*)realloc( destination, j * sizeof(char));
+            destination[j-1] = source[i];
+        }
+        else
+        {
+            /* Detects "a" sharp and replaces it by character "a" */
+            if ( ( source[i] <= -28 && source[i] >= -32 ) ||
+                 ( source[i] <= -60 && source[i] >= -64 ) )
+            {
+                j++;
+                destination = (char*)realloc( destination, j * sizeof(char));
+                destination[j-1] = 'a';
+            }
+
+            /* Detects "e" sharp and replaces it by character "e" */
+            if ( ( source[i] <= -21 && source[i] >= -24 ) ||
+                 ( source[i] <= -53 && source[i] >= -56 ) )
+
+            {
+                j++;
+                destination = (char*)realloc( destination, j * sizeof(char));
+                destination[j-1] = 'e';
+            }
+
+            /* Detects "i" sharp and replaces it by character "i" */
+            if ( ( source[i] <= -17 && source[i] >= -20 ) ||
+                 ( source[i] <= -49 && source[i] >= -52 ) )
+            {
+                j++;
+                destination = (char*)realloc( destination, j * sizeof(char));
+                destination[j-1] = 'i';
+            }
+
+            /* Detects "o" sharp and replaces it by character "o" */
+            if ( ( source[i] <= -10 && source[i] >= -14 ) ||
+                 ( source[i] <= -42 && source[i] >= -46 ) || source[i]==179)
+            {
+                j++;
+                destination = (char*)realloc( destination, j * sizeof(char));
+                destination[j-1] = 'o';
+            }
+
+            /* Detects "u" sharp and replaces it by character "u" */
+            if ( ( source[i] <= -4 && source[i] >= -7 ) ||
+                 ( source[i] <= -36 && source[i] >= -39 ) )
+            {
+                j++;
+                destination = (char*)realloc( destination, j * sizeof(char));
+                destination[j-1] = 'u';
+            }
+
+            /* Detects "ç" and replace by character "c" */
+            if ( source[i] == -25 )
+            {
+                j++;
+                destination = (char*)realloc( destination, j * sizeof(char));
+                destination[j-1] = 'c';
+            }
+
+            /* Converts uppercase to lowercase */
+            if ( source[i] >= 65 && source[i] <= 90 )
+            {
+                j++;
+                destination = (char*)realloc( destination, j * sizeof(char));
+                destination[j-1] = source[i] + 32;
+            }
+        }
+    }
+
+    /* Ends the word with "\0" */
+    j++;
+    destination = (char*)realloc( destination, j * sizeof(char));
+    destination[j-1] = '\0';
+
+    return destination;
+}
diff --git a/le-search/src/convert.h b/le-search/src/convert.h
new file mode 100644
index 0000000000000000000000000000000000000000..b361375bd8781ebe05f5e172fcc1fbd9ab53b9fa
--- /dev/null
+++ b/le-search/src/convert.h
@@ -0,0 +1,17 @@
+#ifndef H_CONVERT_H
+#define H_CONVERT_H
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+char * convertXmlToLower(char *source);
+
+char * convertParamToLower(char *source);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/le-search/src/help2.png b/le-search/src/help2.png
new file mode 100644
index 0000000000000000000000000000000000000000..c88b97dec4d37e827a92ffa190169b4557d6f2c8
Binary files /dev/null and b/le-search/src/help2.png differ
diff --git a/le-search/src/main.cpp b/le-search/src/main.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b7746ee297808a9b1c74be7c5bfba3687a901db0
--- /dev/null
+++ b/le-search/src/main.cpp
@@ -0,0 +1,11 @@
+#include "main.h"
+
+int main(int argc, char **argv)
+{
+    QApplication app(argc, argv);
+    Search *dialog = new Search();
+
+    dialog->show();
+    return app.exec();
+}
+
diff --git a/le-search/src/main.h b/le-search/src/main.h
new file mode 100644
index 0000000000000000000000000000000000000000..dad03c888d41c40c5a1b7ba10b24f9806a8096c6
--- /dev/null
+++ b/le-search/src/main.h
@@ -0,0 +1,8 @@
+#ifndef H_MAIN_H
+#define H_MAIN_H
+
+#include <QApplication>
+#include "mySearch.h"
+
+#endif
+
diff --git a/le-search/src/mySearch.cpp b/le-search/src/mySearch.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ef37b764d5cb094cdac4154dd78f3b9de4932744
--- /dev/null
+++ b/le-search/src/mySearch.cpp
@@ -0,0 +1,253 @@
+#include <QtGui>
+#include "mySearch.h"
+#include "ui_mySearchHelp.h"
+#include "categorize.h"
+
+Search::Search( QWidget *parent )
+{
+    setupUi(this);
+
+    resultArray.size = 0;
+
+    /* Catalogs subjects and disciplines */
+    categorize(DIR_FULL,Categories);
+
+    /* Connects the combo media */
+    connect( comboMedia, SIGNAL( currentIndexChanged(QString) ), this, SLOT(changeCategory(QString)) );
+
+    /* Conects the button search */
+    connect( pushButton_Search,SIGNAL( clicked() ), this, SLOT( searchClick() ) );
+
+    /* Connects the table to receive a double click. Open the file of the
+    selected row */
+    connect( tableResult, SIGNAL( doubleClicked(QModelIndex) ), this, SLOT(openFile(QModelIndex)) );
+
+    /* Conects to radioButton_1 e 2 */
+    connect(radioButton_1, SIGNAL( clicked() ), this, SLOT(radioButtonClick()) );
+    connect(radioButton_2, SIGNAL( clicked() ), this, SLOT(radioButtonClick_2()) );
+    connect(radioButton_3, SIGNAL( clicked() ), this, SLOT(radioButtonClick_3()) );
+
+
+    /* Conects to helpButton */
+    connect( helpButton, SIGNAL( clicked() ), this, SLOT( helpClick() ) );
+
+    /* Set images on buttons */
+    QIcon *searchImg = new QIcon("/usr/share/le-search/busca.png");
+    QIcon *helpImg = new QIcon("/usr/share/le-search/help2.png");
+    pushButton_Search->setFixedSize(96,20);
+    pushButton_Search->setIconSize(QSize(96,20));
+    pushButton_Search->setIcon(*searchImg);
+    helpButton->setFixedSize(24,24);
+    helpButton->setIconSize(QSize(24,24));
+    helpButton->setIcon(*helpImg);
+
+    /* Selects Public Domain by default */
+    radioButton_1->click();
+
+    /* Hide progressbar */
+    progressBar->hide();
+}
+
+int Search::helpClick() {
+    Help *help = new Help();
+    help->setupUi(help);
+    help->show();
+    return 0;
+}
+
+void Search::changeCategory(QString S) {
+    string comboText = S.toStdString();
+    map<string, set<string> >::iterator Mi;
+    set<string>::iterator Si;
+    int i=0;
+    QStringList *stringList = new QStringList();
+    stringList->insert(i++, QString(""));
+    if (comboText == "") {
+        /* Show all categories in the comboCategory */
+        for (Mi = Categories.begin(); Mi != Categories.end(); Mi++)
+            for (Si = Mi->second.begin(); Si != Mi->second.end(); Si++)
+               stringList->insert(i++, QString().fromUtf8(Si->c_str()));
+    } else {
+        /* Show only one category in the comboCategory */
+        for (Si = Categories[comboText].begin(); Si != Categories[comboText].end(); Si++)
+           stringList->insert(i++, QString().fromUtf8(Si->c_str()));
+    }
+    comboCategory->clear();
+    comboCategory->insertItems(0, *stringList);
+}
+
+void Search::openFile(QModelIndex q) {
+    /* Open the file using konqueror */
+    string cmm = "/usr/bin/kfmclient exec '/";
+    int id = model->index(q.row(),4).data().toInt();
+    cmm += (char*)resultArray.content[id].path;
+    cmm += "'";
+    system(cmm.c_str());
+}
+
+void Search::radioButtonClick()
+{
+    QRadioButton *clickRadioButton_1 = qobject_cast<QRadioButton *>(sender());
+
+    QStringList *stringList = new QStringList();
+
+    if (clickRadioButton_1 == radioButton_1)
+    {
+        stringList->insert(0, QString().fromUtf8(""));
+        stringList->insert(1, QString().fromUtf8("Texto"));
+        stringList->insert(2, QString().fromUtf8("Som"));
+        stringList->insert(3, QString().fromUtf8("Imagem"));
+
+        comboMedia->clear();
+        comboMedia->insertItems(0, *stringList);
+    }
+}
+
+void Search::radioButtonClick_2()
+{
+    QRadioButton *clickRadioButton_2 = qobject_cast<QRadioButton*>(sender());
+
+    QStringList *stringList = new QStringList();
+
+    if (clickRadioButton_2 == radioButton_2)
+    {
+        stringList->insert(0, QString().fromUtf8("Vídeo"));
+
+        comboMedia->clear();
+        comboMedia->insertItems(0, *stringList);
+    }
+}
+
+void Search::radioButtonClick_3()
+{
+    QRadioButton *clickRadioButton_3 = qobject_cast<QRadioButton*>(sender());
+
+    QStringList *stringList = new QStringList();
+
+    if (clickRadioButton_3 == radioButton_3)
+    {
+        stringList->insert(0, QString().fromUtf8("Aula"));
+
+        comboMedia->clear();
+        comboMedia->insertItems(0, *stringList);
+    }
+}
+
+int Search::searchClick()
+{
+    char *dirBase;
+    paramSearch param;
+
+    QPushButton *clickedButton = qobject_cast<QPushButton *>(sender());
+
+    if (clickedButton == pushButton_Search)
+    {
+
+        QString media = comboMedia->currentText();
+        QString category = comboCategory->currentText();
+        QString author = lineAuthor->text();
+        QString title = lineTitle->text();
+
+        result1 = category.toStdString();
+        param.category = (char *)result1.c_str();
+        param.category = convertParamToLower(param.category);
+
+        result2 = author.toStdString();
+        param.author = (char *)result2.c_str();
+        param.author = convertParamToLower(param.author);
+
+        result3 = title.toStdString();
+        param.title = (char *)result3.c_str();
+        param.title = convertParamToLower(param.title);
+
+        /* Set to variable disBase depending on the media selected by the user */
+        if ( media == QString().fromUtf8("Texto") )
+            dirBase = DIR_DP, param.media = "Texto";
+
+        else if ( media == QString().fromUtf8("Imagem") )
+            dirBase = DIR_DP, param.media = "Imagem";
+
+        else if ( media == QString().fromUtf8("Vídeo") )
+            dirBase = DIR_TV, param.media = "Video";
+
+        else if ( media == QString().fromUtf8("Aula") )
+            dirBase = DIR_PORTAL, param.media = "Aula";
+
+        else if ( media == QString().fromUtf8("Som") )
+            dirBase = DIR_SOM, param.media = "Som";
+
+        else if ( media == QString().fromUtf8("") )
+            dirBase = DIR_FULL, param.media = "";
+
+        param.media = convertParamToLower(param.media);
+
+        /*-------------------------------------------------------*/
+        releaseResult(&resultArray);
+        resultArray.content = (nodeContent *)malloc(sizeof(nodeContent));
+
+        /* Set progress bar visible and zero */
+        progressBar->show();
+        progressBar->setValue(0);
+        if ( ! walkDir(dirBase, param, &resultArray) )
+        {
+            fprintf(stderr, "Erro enquanto percorria o diretório.\n");
+            return 1;
+        }
+
+        /* Creation of model for the table */
+        model = new QStandardItemModel(resultArray.size,5);
+
+        /* Labels the columns */
+        QStringList LabelsCols;
+        LabelsCols << "Disciplina/Assunto" << "Autor" << "Titulo" << "Tipo/Formato";
+        model->setHorizontalHeaderLabels(LabelsCols);
+
+        /* Add items */
+        int porcent;
+        for (int i=0;i<resultArray.size;i++) {
+            porcent = ((100*i)/resultArray.size);
+            progressBar->setValue(porcent);
+
+            QStandardItem *item0 = new QStandardItem(QString().fromUtf8((char *)resultArray.content[i].category));
+            model->setItem(i,0,item0);
+
+            QStandardItem *item1 = new QStandardItem(QString().fromUtf8((char *)resultArray.content[i].author));
+            model->setItem(i,1,item1);
+
+            QStandardItem *item2 = new QStandardItem(QString().fromUtf8((char *)resultArray.content[i].title));
+            model->setItem(i,2,item2);
+
+            QStandardItem *item3 = new QStandardItem(QString().fromUtf8((char *)resultArray.content[i].media));
+            model->setItem(i,3,item3);
+
+            char aux[64];
+            sprintf(aux,"%d",i);
+            QStandardItem *item4 = new QStandardItem(QString().fromUtf8(aux));
+            model->setItem(i,4,item4);
+        }
+
+        progressBar->setValue(100);
+
+        /* Insert on the table */
+        tableResult->setModel(model);
+        progressBar->hide();
+
+        /* Adjust the column sizes */
+        tableResult->setColumnWidth(1,150); /* Author */
+        tableResult->setColumnWidth(2,230); /* Title */
+        tableResult->setColumnWidth(3,75); /* Type e format */
+
+        /* Hidden the id column */
+        tableResult->setColumnHidden(4,true);
+
+        /* Search content not found */
+        if(resultArray.size == 0)
+            QMessageBox::information(this,"Busca", QString().fromUtf8("O conteúdo procurado não foi encontrado.\n\
+Possíveis causas:\n- De fato não existe o conteúdo com as características procuradas;\n\
+- O conteúdo pode não estar instalado localmente (utilize o ícone \"Instalar Conteúdos\" da EDUBAR)."));
+
+        return 0; /* Success */
+
+    }
+    return 0;
+}
diff --git a/le-search/src/mySearch.h b/le-search/src/mySearch.h
new file mode 100644
index 0000000000000000000000000000000000000000..7e923002db1e8e032f1267612d30dcf8cced4cc2
--- /dev/null
+++ b/le-search/src/mySearch.h
@@ -0,0 +1,58 @@
+#ifndef H_QTSEARCH_H
+#define H_QTSEARCH_H
+
+#include "ui_mySearch.h"
+#include "ui_mySearchHelp.h"
+#include "walk.h"
+#include "categorize.h"
+
+#include <stdio.h>
+#include <map>
+#include <string>
+#include <set>
+#include <QtGui>
+
+#define DIR_DP "/home/ConteudoMEC/dp"
+#define DIR_TV "/home/ConteudoMEC/tvescola"
+#define DIR_PORTAL "/home/ConteudoMEC/portaldoprofessor"
+#define DIR_SOM "/home/ConteudoMEC/dp/Sons"
+#define DIR_FULL "/home/ConteudoMEC/"
+
+using namespace std;
+
+class Help : public QWidget, public Ui::helpWidget
+{
+    Q_OBJECT
+};
+
+
+class Search : public QWidget, private Ui::qtSearch
+{
+    Q_OBJECT
+
+public:
+
+    Search(QWidget *parent=0);
+
+public slots:
+
+    int searchClick();
+    int helpClick();
+    void changeCategory(QString);
+    void openFile(QModelIndex);
+    void radioButtonClick();
+    void radioButtonClick_2();
+    void radioButtonClick_3();
+
+
+private:
+
+    string result, result1, result2, result3;
+    resultSearch resultArray;
+    map<string, set<string> > Categories;
+    QStandardItemModel *model;
+
+};
+
+#endif
+
diff --git a/le-search/src/mySearch.ui b/le-search/src/mySearch.ui
new file mode 100644
index 0000000000000000000000000000000000000000..6786f14713203731ecc428e68a994dd91aeb57a6
--- /dev/null
+++ b/le-search/src/mySearch.ui
@@ -0,0 +1,831 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>qtSearch</class>
+ <widget class="QWidget" name="qtSearch">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>600</width>
+    <height>445</height>
+   </rect>
+  </property>
+  <property name="palette">
+   <palette>
+    <active>
+     <colorrole role="WindowText">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>255</red>
+        <green>255</green>
+        <blue>255</blue>
+       </color>
+      </brush>
+     </colorrole>
+     <colorrole role="Base">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>255</red>
+        <green>255</green>
+        <blue>255</blue>
+       </color>
+      </brush>
+     </colorrole>
+     <colorrole role="Window">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>135</red>
+        <green>175</green>
+        <blue>38</blue>
+       </color>
+      </brush>
+     </colorrole>
+     <colorrole role="Shadow">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>34</red>
+        <green>183</green>
+        <blue>11</blue>
+       </color>
+      </brush>
+     </colorrole>
+     <colorrole role="Highlight">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>135</red>
+        <green>175</green>
+        <blue>38</blue>
+       </color>
+      </brush>
+     </colorrole>
+     <colorrole role="Link">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>255</red>
+        <green>25</green>
+        <blue>55</blue>
+       </color>
+      </brush>
+     </colorrole>
+     <colorrole role="LinkVisited">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>255</red>
+        <green>0</green>
+        <blue>0</blue>
+       </color>
+      </brush>
+     </colorrole>
+    </active>
+    <inactive>
+     <colorrole role="WindowText">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>255</red>
+        <green>255</green>
+        <blue>255</blue>
+       </color>
+      </brush>
+     </colorrole>
+     <colorrole role="Base">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>255</red>
+        <green>255</green>
+        <blue>255</blue>
+       </color>
+      </brush>
+     </colorrole>
+     <colorrole role="Window">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>135</red>
+        <green>175</green>
+        <blue>38</blue>
+       </color>
+      </brush>
+     </colorrole>
+     <colorrole role="Shadow">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>34</red>
+        <green>183</green>
+        <blue>11</blue>
+       </color>
+      </brush>
+     </colorrole>
+     <colorrole role="Highlight">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>135</red>
+        <green>175</green>
+        <blue>38</blue>
+       </color>
+      </brush>
+     </colorrole>
+     <colorrole role="Link">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>255</red>
+        <green>25</green>
+        <blue>55</blue>
+       </color>
+      </brush>
+     </colorrole>
+     <colorrole role="LinkVisited">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>255</red>
+        <green>0</green>
+        <blue>0</blue>
+       </color>
+      </brush>
+     </colorrole>
+    </inactive>
+    <disabled>
+     <colorrole role="WindowText">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>119</red>
+        <green>119</green>
+        <blue>119</blue>
+       </color>
+      </brush>
+     </colorrole>
+     <colorrole role="Base">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>135</red>
+        <green>175</green>
+        <blue>38</blue>
+       </color>
+      </brush>
+     </colorrole>
+     <colorrole role="Window">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>135</red>
+        <green>175</green>
+        <blue>38</blue>
+       </color>
+      </brush>
+     </colorrole>
+     <colorrole role="Shadow">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>34</red>
+        <green>183</green>
+        <blue>11</blue>
+       </color>
+      </brush>
+     </colorrole>
+     <colorrole role="Highlight">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>178</red>
+        <green>178</green>
+        <blue>178</blue>
+       </color>
+      </brush>
+     </colorrole>
+     <colorrole role="Link">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>255</red>
+        <green>25</green>
+        <blue>55</blue>
+       </color>
+      </brush>
+     </colorrole>
+     <colorrole role="LinkVisited">
+      <brush brushstyle="SolidPattern">
+       <color alpha="255">
+        <red>255</red>
+        <green>0</green>
+        <blue>0</blue>
+       </color>
+      </brush>
+     </colorrole>
+    </disabled>
+   </palette>
+  </property>
+  <property name="cursor">
+   <cursorShape>ArrowCursor</cursorShape>
+  </property>
+  <property name="windowTitle">
+   <string>Ferramenta de Busca de Conteúdos Educacionais</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <property name="sizeConstraint">
+    <enum>QLayout::SetDefaultConstraint</enum>
+   </property>
+   <property name="verticalSpacing">
+    <number>6</number>
+   </property>
+   <item row="0" column="0">
+    <layout class="QVBoxLayout" name="verticalLayout">
+     <property name="sizeConstraint">
+      <enum>QLayout::SetFixedSize</enum>
+     </property>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout">
+       <property name="sizeConstraint">
+        <enum>QLayout::SetFixedSize</enum>
+       </property>
+       <item>
+        <widget class="QPushButton" name="helpButton">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>30</width>
+           <height>30</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>30</width>
+           <height>30</height>
+          </size>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>100</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QRadioButton" name="radioButton_1">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="font">
+          <font>
+           <weight>75</weight>
+           <bold>true</bold>
+          </font>
+         </property>
+         <property name="text">
+          <string>Domínio Público</string>
+         </property>
+         <property name="checked">
+          <bool>false</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QRadioButton" name="radioButton_2">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="font">
+          <font>
+           <weight>75</weight>
+           <bold>true</bold>
+          </font>
+         </property>
+         <property name="text">
+          <string>TV Escola</string>
+         </property>
+         <property name="checked">
+          <bool>false</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QRadioButton" name="radioButton_3">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="font">
+          <font>
+           <weight>75</weight>
+           <bold>true</bold>
+          </font>
+         </property>
+         <property name="text">
+          <string>Portal do Professor</string>
+         </property>
+         <property name="checked">
+          <bool>true</bool>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout_2">
+       <property name="sizeConstraint">
+        <enum>QLayout::SetFixedSize</enum>
+       </property>
+       <item>
+        <layout class="QFormLayout" name="formLayout">
+         <property name="sizeConstraint">
+          <enum>QLayout::SetFixedSize</enum>
+         </property>
+         <property name="fieldGrowthPolicy">
+          <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
+         </property>
+         <property name="rowWrapPolicy">
+          <enum>QFormLayout::DontWrapRows</enum>
+         </property>
+         <property name="labelAlignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+         <property name="formAlignment">
+          <set>Qt::AlignCenter</set>
+         </property>
+         <item row="0" column="0">
+          <widget class="QLabel" name="label_3">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <weight>75</weight>
+             <bold>true</bold>
+            </font>
+           </property>
+           <property name="text">
+            <string>Tipo e Formato</string>
+           </property>
+           <property name="alignment">
+            <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="1">
+          <widget class="QComboBox" name="comboMedia">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="minimumSize">
+            <size>
+             <width>100</width>
+             <height>0</height>
+            </size>
+           </property>
+           <property name="maximumSize">
+            <size>
+             <width>200</width>
+             <height>16777215</height>
+            </size>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="0">
+          <widget class="QLabel" name="label_4">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <weight>75</weight>
+             <bold>true</bold>
+            </font>
+           </property>
+           <property name="text">
+            <string>Disciplina/Assunto</string>
+           </property>
+           <property name="alignment">
+            <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="1">
+          <widget class="QComboBox" name="comboCategory">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="minimumSize">
+            <size>
+             <width>100</width>
+             <height>0</height>
+            </size>
+           </property>
+           <property name="maximumSize">
+            <size>
+             <width>200</width>
+             <height>16777215</height>
+            </size>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item>
+        <spacer name="horizontalSpacer_2">
+         <property name="orientation">
+          <enum>Qt::Horizontal</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>50</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <layout class="QFormLayout" name="formLayout_2">
+         <property name="sizeConstraint">
+          <enum>QLayout::SetFixedSize</enum>
+         </property>
+         <property name="fieldGrowthPolicy">
+          <enum>QFormLayout::AllNonFixedFieldsGrow</enum>
+         </property>
+         <property name="labelAlignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+         <property name="formAlignment">
+          <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+         </property>
+         <item row="0" column="0">
+          <widget class="QLabel" name="label">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <weight>75</weight>
+             <bold>true</bold>
+            </font>
+           </property>
+           <property name="text">
+            <string>Autor</string>
+           </property>
+           <property name="alignment">
+            <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="1">
+          <widget class="QLineEdit" name="lineAuthor">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="text">
+            <string/>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="0">
+          <widget class="QLabel" name="label_2">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+           <property name="font">
+            <font>
+             <weight>75</weight>
+             <bold>true</bold>
+            </font>
+           </property>
+           <property name="text">
+            <string>Título</string>
+           </property>
+           <property name="alignment">
+            <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="1">
+          <widget class="QLineEdit" name="lineTitle">
+           <property name="sizePolicy">
+            <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+             <horstretch>0</horstretch>
+             <verstretch>0</verstretch>
+            </sizepolicy>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout_3">
+       <property name="sizeConstraint">
+        <enum>QLayout::SetFixedSize</enum>
+       </property>
+       <item>
+        <widget class="QPushButton" name="pushButton_Search">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>100</width>
+           <height>100</height>
+          </size>
+         </property>
+         <property name="font">
+          <font/>
+         </property>
+         <property name="layoutDirection">
+          <enum>Qt::LeftToRight</enum>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="flat">
+          <bool>false</bool>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+    </layout>
+   </item>
+   <item row="1" column="0">
+    <layout class="QVBoxLayout" name="verticalLayout_2">
+     <item>
+      <widget class="QTableView" name="tableResult">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+         <horstretch>50</horstretch>
+         <verstretch>50</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="palette">
+        <palette>
+         <active>
+          <colorrole role="Shadow">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>34</red>
+             <green>183</green>
+             <blue>11</blue>
+            </color>
+           </brush>
+          </colorrole>
+         </active>
+         <inactive>
+          <colorrole role="Shadow">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>34</red>
+             <green>183</green>
+             <blue>11</blue>
+            </color>
+           </brush>
+          </colorrole>
+         </inactive>
+         <disabled>
+          <colorrole role="Shadow">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>34</red>
+             <green>183</green>
+             <blue>11</blue>
+            </color>
+           </brush>
+          </colorrole>
+         </disabled>
+        </palette>
+       </property>
+       <property name="editTriggers">
+        <set>QAbstractItemView::NoEditTriggers</set>
+       </property>
+       <property name="alternatingRowColors">
+        <bool>true</bool>
+       </property>
+       <property name="selectionMode">
+        <enum>QAbstractItemView::SingleSelection</enum>
+       </property>
+       <property name="selectionBehavior">
+        <enum>QAbstractItemView::SelectRows</enum>
+       </property>
+       <property name="sortingEnabled">
+        <bool>true</bool>
+       </property>
+       <attribute name="horizontalHeaderDefaultSectionSize">
+        <number>150</number>
+       </attribute>
+      </widget>
+     </item>
+     <item>
+      <widget class="QProgressBar" name="progressBar">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="palette">
+        <palette>
+         <active>
+          <colorrole role="Base">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Window">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>94</red>
+             <green>239</green>
+             <blue>15</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Highlight">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>29</red>
+             <green>178</green>
+             <blue>13</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="HighlightedText">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Link">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>118</red>
+             <green>255</green>
+             <blue>14</blue>
+            </color>
+           </brush>
+          </colorrole>
+         </active>
+         <inactive>
+          <colorrole role="Base">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Window">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>94</red>
+             <green>239</green>
+             <blue>15</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Highlight">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>29</red>
+             <green>178</green>
+             <blue>13</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="HighlightedText">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>255</red>
+             <green>255</green>
+             <blue>255</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Link">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>118</red>
+             <green>255</green>
+             <blue>14</blue>
+            </color>
+           </brush>
+          </colorrole>
+         </inactive>
+         <disabled>
+          <colorrole role="Base">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>94</red>
+             <green>239</green>
+             <blue>15</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Window">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>94</red>
+             <green>239</green>
+             <blue>15</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Highlight">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>178</red>
+             <green>178</green>
+             <blue>178</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="HighlightedText">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>129</red>
+             <green>150</green>
+             <blue>123</blue>
+            </color>
+           </brush>
+          </colorrole>
+          <colorrole role="Link">
+           <brush brushstyle="SolidPattern">
+            <color alpha="255">
+             <red>118</red>
+             <green>255</green>
+             <blue>14</blue>
+            </color>
+           </brush>
+          </colorrole>
+         </disabled>
+        </palette>
+       </property>
+       <property name="cursor">
+        <cursorShape>ArrowCursor</cursorShape>
+       </property>
+       <property name="value">
+        <number>0</number>
+       </property>
+       <property name="textVisible">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/le-search/src/mySearchHelp.ui b/le-search/src/mySearchHelp.ui
new file mode 100644
index 0000000000000000000000000000000000000000..c2ee5af18de786169d1a9e7c69251edbbd33a2a1
--- /dev/null
+++ b/le-search/src/mySearchHelp.ui
@@ -0,0 +1,201 @@
+<ui version="4.0" >
+ <class>helpWidget</class>
+ <widget class="QWidget" name="helpWidget" >
+  <property name="geometry" >
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>371</width>
+    <height>328</height>
+   </rect>
+  </property>
+  <property name="palette" >
+   <palette>
+    <active>
+     <colorrole role="Base" >
+      <brush brushstyle="SolidPattern" >
+       <color alpha="255" >
+        <red>255</red>
+        <green>255</green>
+        <blue>255</blue>
+       </color>
+      </brush>
+     </colorrole>
+     <colorrole role="Window" >
+      <brush brushstyle="SolidPattern" >
+       <color alpha="255" >
+        <red>135</red>
+        <green>175</green>
+        <blue>38</blue>
+       </color>
+      </brush>
+     </colorrole>
+    </active>
+    <inactive>
+     <colorrole role="Base" >
+      <brush brushstyle="SolidPattern" >
+       <color alpha="255" >
+        <red>255</red>
+        <green>255</green>
+        <blue>255</blue>
+       </color>
+      </brush>
+     </colorrole>
+     <colorrole role="Window" >
+      <brush brushstyle="SolidPattern" >
+       <color alpha="255" >
+        <red>135</red>
+        <green>175</green>
+        <blue>38</blue>
+       </color>
+      </brush>
+     </colorrole>
+    </inactive>
+    <disabled>
+     <colorrole role="Base" >
+      <brush brushstyle="SolidPattern" >
+       <color alpha="255" >
+        <red>135</red>
+        <green>175</green>
+        <blue>38</blue>
+       </color>
+      </brush>
+     </colorrole>
+     <colorrole role="Window" >
+      <brush brushstyle="SolidPattern" >
+       <color alpha="255" >
+        <red>135</red>
+        <green>175</green>
+        <blue>38</blue>
+       </color>
+      </brush>
+     </colorrole>
+    </disabled>
+   </palette>
+  </property>
+  <property name="windowTitle" >
+   <string>Ajuda</string>
+  </property>
+  <widget class="QTextEdit" name="textEdit" >
+   <property name="enabled" >
+    <bool>false</bool>
+   </property>
+   <property name="geometry" >
+    <rect>
+     <x>10</x>
+     <y>10</y>
+     <width>351</width>
+     <height>281</height>
+    </rect>
+   </property>
+   <property name="palette" >
+    <palette>
+     <active>
+      <colorrole role="Base" >
+       <brush brushstyle="SolidPattern" >
+        <color alpha="255" >
+         <red>255</red>
+         <green>255</green>
+         <blue>255</blue>
+        </color>
+       </brush>
+      </colorrole>
+      <colorrole role="Window" >
+       <brush brushstyle="SolidPattern" >
+        <color alpha="255" >
+         <red>255</red>
+         <green>255</green>
+         <blue>255</blue>
+        </color>
+       </brush>
+      </colorrole>
+     </active>
+     <inactive>
+      <colorrole role="Base" >
+       <brush brushstyle="SolidPattern" >
+        <color alpha="255" >
+         <red>255</red>
+         <green>255</green>
+         <blue>255</blue>
+        </color>
+       </brush>
+      </colorrole>
+      <colorrole role="Window" >
+       <brush brushstyle="SolidPattern" >
+        <color alpha="255" >
+         <red>255</red>
+         <green>255</green>
+         <blue>255</blue>
+        </color>
+       </brush>
+      </colorrole>
+     </inactive>
+     <disabled>
+      <colorrole role="Base" >
+       <brush brushstyle="SolidPattern" >
+        <color alpha="255" >
+         <red>255</red>
+         <green>255</green>
+         <blue>255</blue>
+        </color>
+       </brush>
+      </colorrole>
+      <colorrole role="Window" >
+       <brush brushstyle="SolidPattern" >
+        <color alpha="255" >
+         <red>255</red>
+         <green>255</green>
+         <blue>255</blue>
+        </color>
+       </brush>
+      </colorrole>
+     </disabled>
+    </palette>
+   </property>
+   <property name="readOnly" >
+    <bool>true</bool>
+   </property>
+   <property name="html" >
+    <string>&lt;html>&lt;head>&lt;meta name="qrichtext" content="1" />&lt;style type="text/css">
+p, li { white-space: pre-wrap; }
+&lt;/style>&lt;/head>&lt;body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;">
+&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;span style=" text-decoration: underline;">Para que serve isto&lt;/span>? Esta ferramenta dá acesso a diversas fontes de material de apoio às atividades educacionais, em particular aos repositórios de &lt;span style=" font-weight:600;">material desenvolvido para o MEC e organizado nos currículos escolares &lt;/span>(textos de domínio público e vídeos da TV escola) e ao repositório de &lt;span style=" font-weight:600;">material elaborado por instiuições parceiras como contribuição livre.&lt;/span>&lt;/p>
+&lt;p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;">&lt;/p>
+&lt;p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-weight:600;">&lt;span style=" font-weight:400; text-decoration: underline;">Como devo fazer a busca?&lt;/span>&lt;span style=" font-weight:400;"> A busca pode ser feita selecionando a fonte de interesse ("Domínio Público" ou "TV Escola"), de forma combinada com a seleção do tipo e formato do arquivo e a digitação do nome do autor e/ou do título do material. Também pode ser selecionado a disciplina ou o assunto de interesse.&lt;/span>&lt;/p>
+&lt;p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">&lt;/p>&lt;/body>&lt;/html></string>
+   </property>
+  </widget>
+  <widget class="QPushButton" name="okButton" >
+   <property name="geometry" >
+    <rect>
+     <x>160</x>
+     <y>300</y>
+     <width>75</width>
+     <height>20</height>
+    </rect>
+   </property>
+   <property name="text" >
+    <string>OK</string>
+   </property>
+  </widget>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>okButton</sender>
+   <signal>clicked()</signal>
+   <receiver>helpWidget</receiver>
+   <slot>close()</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>197</x>
+     <y>293</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>185</x>
+     <y>154</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/le-search/src/qt.pro b/le-search/src/qt.pro
new file mode 100644
index 0000000000000000000000000000000000000000..875af27a54664e16f4a966ee1cf095777f8c039a
--- /dev/null
+++ b/le-search/src/qt.pro
@@ -0,0 +1,13 @@
+######################################################################
+# Automatically generated by qmake (2.01a) qua set 29 11:34:06 2010
+######################################################################
+
+TEMPLATE = app
+TARGET = 
+DEPENDPATH += .
+INCLUDEPATH += .
+
+# Input
+HEADERS += categorize.h convert.h main.h mySearch.h readXml.h walk.h
+FORMS += mySearch.ui mySearchHelp.ui
+SOURCES += categorize.cpp convert.c main.cpp mySearch.cpp readXml.c walk.c
diff --git a/le-search/src/readXml.c b/le-search/src/readXml.c
new file mode 100644
index 0000000000000000000000000000000000000000..bc6616db1d030840f82af393657db637225567f3
--- /dev/null
+++ b/le-search/src/readXml.c
@@ -0,0 +1,149 @@
+#include "readXml.h"
+
+/*--------------------------------------------------------------------------
+ *
+ * Function: isXml
+ * Description: Verify if the arqName is an XML file.
+ */
+int isXml(const char *arqName)
+{
+    if ( strstr(arqName, ".xml") )
+        return 1;
+    return 0;
+}
+
+/*--------------------------------------------------------------------------
+ *
+ * Function: testIsValidXml
+ * Description: Verify if XML have valid nodes.
+ */
+int testIsValidXml(nodeContent node)
+{
+    if( node.media == NULL || node.category == NULL ||
+        node.author == NULL || node.title == NULL )
+        return 0;
+    else
+        return 1;
+}
+
+/*--------------------------------------------------------------------------
+ *
+ * Function: cmpParamXml
+ * Description: Compare the parameters passed by user with the contents of
+ * the XML file.
+ */
+int cmpParamXml(paramSearch param, nodeContent content)
+{
+    content.media = convertXmlToLower(content.media);
+    content.category = convertXmlToLower(content.category);
+    content.author = convertXmlToLower(content.author);
+    content.title = convertXmlToLower(content.title);
+
+    if( ! strlen(param.media) ||  strstr(content.media, param.media) )
+
+        if( strstr(content.category, param.category)
+            || ! strlen(param.category) )
+
+            if( strstr(content.author, param.author)
+                || ! strlen(param.author) )
+
+                if( strstr(content.title, param.title)
+                    || ! strlen(param.title) )
+                     return 1;
+
+    return 0;
+}
+
+/*--------------------------------------------------------------------------
+ *
+ * Function: releaseResult
+ * Description: Realease the structure to store the search results.
+ */
+void releaseResult(resultSearch *result)
+{
+    int i;
+    for(i=0; i < result->size; i++) {
+        free(result->content[i].media);
+        free(result->content[i].category);
+        free(result->content[i].author);
+        free(result->content[i].title);
+        free(result->content[i].file);
+        free(result->content[i].path);
+    }
+    if(result->size)
+        free(result->content);
+
+    result->size = 0;
+    return;
+}
+
+/*--------------------------------------------------------------------------
+ *
+ * Function: allocResult
+ * Description: Reallocate the structure to store the search results. Return
+ * the pointer to allocated structure.
+ */
+nodeContent *allocResult(resultSearch *result)
+{
+    result->content = (nodeContent *)realloc(result->content,(result->size+1)
+                       *sizeof(nodeContent));
+    if (result->content == NULL)
+        return NULL;
+    result->size++;
+    return result->content;
+}
+
+/*--------------------------------------------------------------------------
+ *
+ * Function: parserXml
+ * Description: Load the XML file in the reader. For each tag "content" of
+ * XML file, invoke cmpParamXml function.
+ */
+void parserXml(const char *xmlFile, paramSearch param, resultSearch *result)
+{
+    xmlTextReaderPtr reader;
+    const xmlChar *name;
+    nodeContent node;
+    int ret;
+
+    reader = xmlReaderForFile(xmlFile, NULL, 0);
+
+    if (reader != NULL)
+    {
+        ret = xmlTextReaderRead(reader);
+        while (ret == 1)
+        {
+            name = xmlTextReaderConstName(reader);
+            if ( xmlTextReaderHasAttributes(reader) == 1 )
+            {
+                node.media = xmlTextReaderGetAttribute(reader, "media");
+                node.category = xmlTextReaderGetAttribute(reader,"category");
+                node.author = xmlTextReaderGetAttribute(reader, "author");
+                node.title = xmlTextReaderGetAttribute(reader, "title");
+                if ( !testIsValidXml(node) )
+                    return;
+               /* If successful cmpParamXml, then assigns the
+                 * contents of the node to the result */
+                if ( cmpParamXml(param, node) )
+                {
+                    node.file = xmlTextReaderGetAttribute(reader, "file");
+                    node.path = xmlTextReaderGetAttribute(reader, "path");
+                    if ( allocResult(result) != NULL)
+                    {
+                        int i = result->size-1;
+                        result->content[i].media = node.media;
+                        result->content[i].category = node.category;
+                        result->content[i].author = node.author;
+                        result->content[i].title = node.title;
+                        result->content[i].file = node.file;
+                        result->content[i].path = node.path;
+                    }
+                }
+            }
+            ret = xmlTextReaderRead(reader);
+        }
+    	xmlFreeTextReader(reader);
+    }
+
+    return;
+}
diff --git a/le-search/src/readXml.h b/le-search/src/readXml.h
new file mode 100644
index 0000000000000000000000000000000000000000..42a0acb08b342062f975875f59d3853b43702aa8
--- /dev/null
+++ b/le-search/src/readXml.h
@@ -0,0 +1,54 @@
+#ifndef H_READXML_H
+#define H_READXML_H
+
+#include <libxml/xmlreader.h>
+
+#include <stdio.h>
+#include <string.h>
+#include <dirent.h>
+#include <stdlib.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include "convert.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+typedef struct paramSearch {
+    char *media;
+    char *category;
+    char *author;
+    char *title;
+} paramSearch;
+
+typedef struct nodeContent {
+    xmlChar *media;
+    xmlChar *category;
+    xmlChar *author;
+    xmlChar *title;
+    xmlChar *file;
+    xmlChar *path;
+} nodeContent;
+
+typedef struct resultSearch {
+    nodeContent *content;
+    int size;
+} resultSearch;
+
+int isXml(const char *arqName);
+int cmpParamXml(paramSearch param, nodeContent content);
+nodeContent *allocResult(resultSearch *result);
+void releaseResult(resultSearch *result);
+void parserXml(const char *xmlFile, paramSearch param, resultSearch *result);
+int testIsValidXml(nodeContent content);
+#ifdef __cplusplus
+}
+
+#endif
+
+#endif
+
diff --git a/le-search/src/walk.c b/le-search/src/walk.c
new file mode 100644
index 0000000000000000000000000000000000000000..e8332f8eec078d239a537530ccc1a14ed9670d8c
--- /dev/null
+++ b/le-search/src/walk.c
@@ -0,0 +1,117 @@
+#include "walk.h"
+
+/*--------------------------------------------------------------------------
+ *
+ * Function: allocString
+ * Description: Allocate or reallocate memory for a string of size chars,
+ * and save pointer to **string.
+ */
+int allocString(char **string, const int size)
+{
+    if( *string )
+        return (*string = (char*)realloc(*string, sizeof(char) * size))
+            != NULL;
+    else
+        return (*string = (char*)malloc(sizeof(char) * size)) != NULL;
+}
+
+/*--------------------------------------------------------------------------
+ *
+ * Function: concatString
+ * Description: Concatenates strings *string1 with *string2, and saves the
+ * result in **result. Allocates the memory needed for string result.
+ */
+int concatString(char **result, const char *string1, const char *string2)
+{
+    int destTam = (strlen(string1) + strlen(string2) + 1) * sizeof(char),
+        execStrCpy = 1, diffResultStr2 = 1;
+    char *tempStr = NULL;
+
+    if( *result )
+    {
+        execStrCpy = strcmp(*result, string1);
+
+        if( ! strcmp(*result, string2) )
+        {
+            if( ! allocString(&tempStr, strlen(string2)) )
+                return 0;
+
+            strcpy(tempStr, string2);
+            diffResultStr2 = 0;
+        }
+
+        if( ! allocString(result, destTam) )
+            return 0;
+    }
+    else if( ! allocString(result, destTam) )
+        return 0;
+    /* If the string1 is equal the result, not has exec strcpy. */
+    if( execStrCpy )
+        strcpy(*result, string1);
+    /* If the string2 is equal the result, has exec strcat with the string
+     * tempStr. */
+    if( diffResultStr2 )
+        strcat(*result, string2);
+    else
+    {
+        strcat(*result, tempStr);
+        free(tempStr);
+    }
+
+    return 1;
+}
+
+/*--------------------------------------------------------------------------
+ *
+ * Function: walkDir
+ * Description: Walk in the entire directory tree and find the XML files.
+ * For each XML, invokes the parserXML function.
+ */
+int walkDir(const char *currentDirName, paramSearch param, resultSearch *result)
+{
+    struct dirent **contentDir;
+    struct stat contentDirStat;
+    char *tmpDirName;
+    int n_dir, i;
+
+    n_dir = scandir(currentDirName, &contentDir, 0, alphasort);
+    if (n_dir < 0)
+        fprintf(stderr, "");
+    else
+        for (i = 0; i < n_dir; i++)
+        {
+            /* Ignore directories "." and ".." */
+            if( strcmp(contentDir[i]->d_name, ".")
+                && strcmp(contentDir[i]->d_name, "..") )
+            {
+                tmpDirName = NULL;
+                /* Concatenates current directory path with
+                contentDir->d_name */
+                if( ! concatString(&tmpDirName, currentDirName, "/") )
+                    return 0;
+                if( ! concatString(&tmpDirName, tmpDirName,
+                    contentDir[i]->d_name) )
+                    return 0;
+
+                /* Parse the type of current file */
+                if( lstat(tmpDirName, &contentDirStat) )
+                    return 0;
+                /* Macro S_ISDIR returns true if st_mode is directory. */
+                if( S_ISDIR(contentDirStat.st_mode) )
+                {
+                    if( ! walkDir(tmpDirName, param, result) )
+                        return 0;
+                }
+                else
+                    if( isXml(tmpDirName))
+                    {
+                        const char *xmlFile = tmpDirName;
+                        parserXml(xmlFile, param, result);
+                        return 1;
+                    }
+            }
+
+        }
+
+    return 1;
+}
diff --git a/le-search/src/walk.h b/le-search/src/walk.h
new file mode 100644
index 0000000000000000000000000000000000000000..6a4091db8d22d4af7e3aabe63f58383730bf47b0
--- /dev/null
+++ b/le-search/src/walk.h
@@ -0,0 +1,20 @@
+#ifndef H_WALK_H
+#define H_WALK_H
+
+#include "readXml.h"
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+int allocString(char **string, const int size);
+int concatString(char **result, const char *string1, const char *string2);
+int walkDir(const char *currentDirName, paramSearch param, resultSearch *result);
+
+#ifdef __cplusplus 
+}
+
+#endif
+
+#endif
+