diff --git a/LICENSES/LGPL-2.0-or-later.txt b/LICENSES/LGPL-2.0-or-later.txt
new file mode 100644
index 0000000..5c96471
--- /dev/null
+++ b/LICENSES/LGPL-2.0-or-later.txt
@@ -0,0 +1,446 @@
+GNU LIBRARY GENERAL PUBLIC LICENSE
+
+Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc.
+
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+[This is the first released version of the library GPL. It is numbered 2 because
+it goes with version 2 of the ordinary GPL.]
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to share
+and change it. By contrast, the GNU General Public Licenses are intended to
+guarantee your freedom to share and change free software--to make sure the
+software is free for all its users.
+
+This license, the Library General Public License, applies to some specially
+designated Free Software Foundation software, and to any other libraries whose
+authors decide to use it. You can use it for your libraries, 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 this service 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 make restrictions that forbid anyone to
+deny you these rights or to ask you to surrender the rights. These restrictions
+translate to certain responsibilities for you if you distribute copies of
+the library, or if you modify it.
+
+For example, if you distribute copies of the library, whether gratis or for
+a fee, you must give the recipients all the rights that we gave you. You must
+make sure that they, too, receive or can get the source code. If you link
+a program with the library, you must provide complete object files to the
+recipients so that they can relink them with the library, after making changes
+to the library and recompiling it. And you must show them these terms so they
+know their rights.
+
+Our method of protecting your rights has two steps: (1) copyright the library,
+and (2) offer you this license which gives you legal permission to copy, distribute
+and/or modify the library.
+
+Also, for each distributor's protection, we want to make certain that everyone
+understands that there is no warranty for this free library. If the library
+is modified by someone else and passed on, we want its recipients to know
+that what they have is not the original version, so that any problems introduced
+by others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents. We
+wish to avoid the danger that companies distributing free software will individually
+obtain patent licenses, thus in effect transforming the program into proprietary
+software. To prevent this, we have made it clear that any patent must be licensed
+for everyone's free use or not licensed at all.
+
+Most GNU software, including some libraries, is covered by the ordinary GNU
+General Public License, which was designed for utility programs. This license,
+the GNU Library General Public License, applies to certain designated libraries.
+This license is quite different from the ordinary one; be sure to read it
+in full, and don't assume that anything in it is the same as in the ordinary
+license.
+
+The reason we have a separate public license for some libraries is that they
+blur the distinction we usually make between modifying or adding to a program
+and simply using it. Linking a program with a library, without changing the
+library, is in some sense simply using the library, and is analogous to running
+a utility program or application program. However, in a textual and legal
+sense, the linked executable is a combined work, a derivative of the original
+library, and the ordinary General Public License treats it as such.
+
+Because of this blurred distinction, using the ordinary General Public License
+for libraries did not effectively promote software sharing, because most developers
+did not use the libraries. We concluded that weaker conditions might promote
+sharing better.
+
+However, unrestricted linking of non-free programs would deprive the users
+of those programs of all benefit from the free status of the libraries themselves.
+This Library General Public License is intended to permit developers of non-free
+programs to use free libraries, while preserving your freedom as a user of
+such programs to change the free libraries that are incorporated in them.
+(We have not seen how to achieve this as regards changes in header files,
+but we have achieved it as regards changes in the actual functions of the
+Library.) The hope is that this will lead to faster development of free libraries.
+
+The precise terms and conditions for copying, distribution and modification
+follow. Pay close attention to the difference between a "work based on the
+library" and a "work that uses the library". The former contains code derived
+from the library, while the latter only works together with the library.
+
+Note that it is possible for a library to be covered by the ordinary General
+Public License rather than by this special one.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License Agreement applies to any software library which contains a
+notice placed by the copyright holder or other authorized party saying it
+may be distributed under the terms of this Library General Public License
+(also called "this License"). Each licensee is addressed as "you".
+
+A "library" means a collection of software functions and/or data prepared
+so as to be conveniently linked with application programs (which use some
+of those functions and data) to form executables.
+
+The "Library", below, refers to any such software library or work which has
+been distributed under these terms. A "work based on the Library" means either
+the Library or any derivative work under copyright law: that is to say, a
+work containing the Library or a portion of it, either verbatim or with modifications
+and/or translated straightforwardly into another language. (Hereinafter, translation
+is included without limitation in the term "modification".)
+
+"Source code" for a work means the preferred form of the work for making modifications
+to it. For a library, complete source code means all the source code for all
+modules it contains, plus any associated interface definition files, plus
+the scripts used to control compilation and installation of the library.
+
+Activities other than copying, distribution and modification are not covered
+by this License; they are outside its scope. The act of running a program
+using the Library is not restricted, and output from such a program is covered
+only if its contents constitute a work based on the Library (independent of
+the use of the Library in a tool for writing it). Whether that is true depends
+on what the Library does and what the program that uses the Library does.
+
+1. You may copy and distribute verbatim copies of the Library's complete source
+code as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and disclaimer
+of warranty; keep intact all the notices that refer to this License and to
+the absence of any warranty; and distribute a copy of this License along with
+the Library.
+
+You may charge a fee for the physical act of transferring a copy, and you
+may at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Library or any portion of it,
+thus forming a work based on the Library, and copy and distribute such modifications
+or work under the terms of Section 1 above, provided that you also meet all
+of these conditions:
+
+ a) The modified work must itself be a software library.
+
+b) You must cause the files modified to carry prominent notices stating that
+you changed the files and the date of any change.
+
+c) You must cause the whole of the work to be licensed at no charge to all
+third parties under the terms of this License.
+
+d) If a facility in the modified Library refers to a function or a table of
+data to be supplied by an application program that uses the facility, other
+than as an argument passed when the facility is invoked, then you must make
+a good faith effort to ensure that, in the event an application does not supply
+such function or table, the facility still operates, and performs whatever
+part of its purpose remains meaningful.
+
+(For example, a function in a library to compute square roots has a purpose
+that is entirely well-defined independent of the application. Therefore, Subsection
+2d requires that any application-supplied function or table used by this function
+must be optional: if the application does not supply it, the square root function
+must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If identifiable
+sections of that work are not derived from the Library, and can be reasonably
+considered independent and separate works in themselves, then this License,
+and its terms, do not apply to those sections when you distribute them as
+separate works. But when you distribute the same sections as part of a whole
+which is a work based on the Library, the distribution of the whole must be
+on the terms of this License, whose permissions for other licensees extend
+to the entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest your
+rights to work written entirely by you; rather, the intent is to exercise
+the right to control the distribution of derivative or collective works based
+on the Library.
+
+In addition, mere aggregation of another work not based on the Library with
+the Library (or with a work based on the Library) on a volume of a storage
+or distribution medium does not bring the other work under the scope of this
+License.
+
+3. You may opt to apply the terms of the ordinary GNU General Public License
+instead of this License to a given copy of the Library. To do this, you must
+alter all the notices that refer to this License, so that they refer to the
+ordinary GNU General Public License, version 2, instead of to this License.
+(If a newer version than version 2 of the ordinary GNU General Public License
+has appeared, then you can specify that version instead if you wish.) Do not
+make any other change in these notices.
+
+Once this change is made in a given copy, it is irreversible for that copy,
+so the ordinary GNU General Public License applies to all subsequent copies
+and derivative works made from that copy.
+
+This option is useful when you wish to copy part of the code of the Library
+into a program that is not a library.
+
+4. You may copy and distribute the Library (or a portion or derivative of
+it, under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you accompany it with the complete corresponding
+machine-readable source code, which must be distributed under the terms of
+Sections 1 and 2 above on a medium customarily used for software interchange.
+
+If distribution of object code is made by offering access to copy from a designated
+place, then offering equivalent access to copy the source code from the same
+place satisfies the requirement to distribute the source code, even though
+third parties are not compelled to copy the source along with the object code.
+
+5. A program that contains no derivative of any portion of the Library, but
+is designed to work with the Library by being compiled or linked with it,
+is called a "work that uses the Library". Such a work, in isolation, is not
+a derivative work of the Library, and therefore falls outside the scope of
+this License.
+
+However, linking a "work that uses the Library" with the Library creates an
+executable that is a derivative of the Library (because it contains portions
+of the Library), rather than a "work that uses the library". The executable
+is therefore covered by this License. Section 6 states terms for distribution
+of such executables.
+
+When a "work that uses the Library" uses material from a header file that
+is part of the Library, the object code for the work may be a derivative work
+of the Library even though the source code is not. Whether this is true is
+especially significant if the work can be linked without the Library, or if
+the work is itself a library. The threshold for this to be true is not precisely
+defined by law.
+
+If such an object file uses only numerical parameters, data structure layouts
+and accessors, and small macros and small inline functions (ten lines or less
+in length), then the use of the object file is unrestricted, regardless of
+whether it is legally a derivative work. (Executables containing this object
+code plus portions of the Library will still fall under Section 6.)
+
+Otherwise, if the work is a derivative of the Library, you may distribute
+the object code for the work under the terms of Section 6. Any executables
+containing that work also fall under Section 6, whether or not they are linked
+directly with the Library itself.
+
+6. As an exception to the Sections above, you may also compile or link a "work
+that uses the Library" with the Library to produce a work containing portions
+of the Library, and distribute that work under terms of your choice, provided
+that the terms permit modification of the work for the customer's own use
+and reverse engineering for debugging such modifications.
+
+You must give prominent notice with each copy of the work that the Library
+is used in it and that the Library and its use are covered by this License.
+You must supply a copy of this License. If the work during execution displays
+copyright notices, you must include the copyright notice for the Library among
+them, as well as a reference directing the user to the copy of this License.
+Also, you must do one of these things:
+
+a) Accompany the work with the complete corresponding machine-readable source
+code for the Library including whatever changes were used in the work (which
+must be distributed under Sections 1 and 2 above); and, if the work is an
+executable linked with the Library, with the complete machine-readable "work
+that uses the Library", as object code and/or source code, so that the user
+can modify the Library and then relink to produce a modified executable containing
+the modified Library. (It is understood that the user who changes the contents
+of definitions files in the Library will not necessarily be able to recompile
+the application to use the modified definitions.)
+
+b) Accompany the work with a written offer, valid for at least three years,
+to give the same user the materials specified in Subsection 6a, above, for
+a charge no more than the cost of performing this distribution.
+
+c) If distribution of the work is made by offering access to copy from a designated
+place, offer equivalent access to copy the above specified materials from
+the same place.
+
+d) Verify that the user has already received a copy of these materials or
+that you have already sent this user a copy.
+
+For an executable, the required form of the "work that uses the Library" must
+include any data and utility programs needed for reproducing the executable
+from it. However, as a special exception, the source code distributed need
+not include anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the operating
+system on which the executable runs, unless that component itself accompanies
+the executable.
+
+It may happen that this requirement contradicts the license restrictions of
+other proprietary libraries that do not normally accompany the operating system.
+Such a contradiction means you cannot use both them and the Library together
+in an executable that you distribute.
+
+7. You may place library facilities that are a work based on the Library side-by-side
+in a single library together with other library facilities not covered by
+this License, and distribute such a combined library, provided that the separate
+distribution of the work based on the Library and of the other library facilities
+is otherwise permitted, and provided that you do these two things:
+
+a) Accompany the combined library with a copy of the same work based on the
+Library, uncombined with any other library facilities. This must be distributed
+under the terms of the Sections above.
+
+b) Give prominent notice with the combined library of the fact that part of
+it is a work based on the Library, and explaining where to find the accompanying
+uncombined form of the same work.
+
+8. You may not copy, modify, sublicense, link with, or distribute the Library
+except as expressly provided under this License. Any attempt otherwise to
+copy, modify, sublicense, link with, or distribute the Library is void, and
+will automatically terminate your rights under this License. However, parties
+who have received copies, or rights, from you under this License will not
+have their licenses terminated so long as such parties remain in full compliance.
+
+9. You are not required to accept this License, since you have not signed
+it. However, nothing else grants you permission to modify or distribute the
+Library or its derivative works. These actions are prohibited by law if you
+do not accept this License. Therefore, by modifying or distributing the Library
+(or any work based on the Library), you indicate your acceptance of this License
+to do so, and all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+10. Each time you redistribute the Library (or any work based on the Library),
+the recipient automatically receives a license from the original licensor
+to copy, distribute, link with or modify the Library subject to these terms
+and conditions. You may not impose any further restrictions on the recipients'
+exercise of the rights granted herein. You are not responsible for enforcing
+compliance by third parties to this License.
+
+11. If, as a consequence of a court judgment or allegation of patent infringement
+or for any other reason (not limited to patent issues), 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 distribute so as to satisfy simultaneously your
+obligations under this License and any other pertinent obligations, then as
+a consequence you may not distribute the Library at all. For example, if a
+patent license would not permit royalty-free redistribution of the Library
+by all those who receive copies directly or indirectly through you, then the
+only way you could satisfy both it and this License would be to refrain entirely
+from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents
+or other property right claims or to contest validity of any such claims;
+this section has the sole purpose of protecting the integrity of the free
+software distribution system which is implemented by public license practices.
+Many people have made generous contributions to the wide range of software
+distributed through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing to
+distribute software through any other system and a licensee cannot impose
+that choice.
+
+This section is intended to make thoroughly clear what is believed to be a
+consequence of the rest of this License.
+
+12. If the distribution and/or use of the Library is restricted in certain
+countries either by patents or by copyrighted interfaces, the original copyright
+holder who places the Library under this License may add an explicit geographical
+distribution limitation excluding those countries, so that distribution is
+permitted only in or among countries not thus excluded. In such case, this
+License incorporates the limitation as if written in the body of this License.
+
+13. The Free Software Foundation may publish revised and/or new versions of
+the Library 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 Library specifies
+a version number of this License which applies to it and "any later version",
+you have the option of following the terms and conditions either of that version
+or of any later version published by the Free Software Foundation. If the
+Library does not specify a license version number, you may choose any version
+ever published by the Free Software Foundation.
+
+14. If you wish to incorporate parts of the Library into other free programs
+whose distribution conditions are incompatible with these, write to the author
+to ask for permission. For software which is copyrighted by the Free Software
+Foundation, write to the Free Software Foundation; we sometimes make exceptions
+for this. Our decision will be guided by the two goals of preserving the free
+status of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
+THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
+STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY
+"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 LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE
+THE LIBRARY 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 LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH
+HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+END OF TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Libraries
+
+If you develop a new library, and you want it to be of the greatest possible
+use to the public, we recommend making it free software that everyone can
+redistribute and change. You can do so by permitting redistribution under
+these terms (or, alternatively, under the terms of the ordinary General Public
+License).
+
+To apply these terms, attach the following notices to the library. It is safest
+to attach them to the start of each source file to most effectively convey
+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 library's name and an idea of what it does.
+
+Copyright (C) year name of author
+
+This library is free software; you can redistribute it and/or modify it under
+the terms of the GNU Library General Public License as published by the Free
+Software Foundation; either version 2 of the License, or (at your option)
+any later version.
+
+This library 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 Library General Public License for more
+details.
+
+You should have received a copy of the GNU Library General Public License
+along with this library; if not, write to the Free Software Foundation, Inc.,
+51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your school,
+if any, to sign a "copyright disclaimer" for the library, if necessary. Here
+is a sample; alter the names:
+
+Yoyodyne, Inc., hereby disclaims all copyright interest in
+
+the library `Frob' (a library for tweaking knobs) written
+
+by James Random Hacker.
+
+signature of Ty Coon, 1 April 1990
+
+Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/LICENSES/LGPL-2.1-only.txt b/LICENSES/LGPL-2.1-only.txt
new file mode 100644
index 0000000..130dffb
--- /dev/null
+++ b/LICENSES/LGPL-2.1-only.txt
@@ -0,0 +1,467 @@
+GNU LESSER GENERAL PUBLIC LICENSE
+
+Version 2.1, February 1999
+
+Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts as the
+successor of the GNU Library Public License, version 2, hence the version
+number 2.1.]
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to share
+and change it. By contrast, the GNU General Public Licenses are intended to
+guarantee your freedom to share and change free software--to make sure the
+software is free for all its users.
+
+This license, the Lesser General Public License, applies to some specially
+designated software packages--typically libraries--of the Free Software Foundation
+and other authors who decide to use it. You can use it too, but we suggest
+you first think carefully about whether this license or the ordinary General
+Public License is the better strategy to use in any particular case, based
+on the explanations below.
+
+When we speak of free software, we are referring to freedom of use, 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 this service if you
+wish); that you receive source code or can get it if you want it; that you
+can change the software and use pieces of it in new free programs; and that
+you are informed that you can do these things.
+
+To protect your rights, we need to make restrictions that forbid distributors
+to deny you these rights or to ask you to surrender these rights. These restrictions
+translate to certain responsibilities for you if you distribute copies of
+the library or if you modify it.
+
+For example, if you distribute copies of the library, whether gratis or for
+a fee, you must give the recipients all the rights that we gave you. You must
+make sure that they, too, receive or can get the source code. If you link
+other code with the library, you must provide complete object files to the
+recipients, so that they can relink them with the library after making changes
+to the library and recompiling it. And you must show them these terms so they
+know their rights.
+
+We protect your rights with a two-step method: (1) we copyright the library,
+and (2) we offer you this license, which gives you legal permission to copy,
+distribute and/or modify the library.
+
+To protect each distributor, we want to make it very clear that there is no
+warranty for the free library. Also, if the library is modified by someone
+else and passed on, the recipients should know that what they have is not
+the original version, so that the original author's reputation will not be
+affected by problems that might be introduced by others.
+
+Finally, software patents pose a constant threat to the existence of any free
+program. We wish to make sure that a company cannot effectively restrict the
+users of a free program by obtaining a restrictive license from a patent holder.
+Therefore, we insist that any patent license obtained for a version of the
+library must be consistent with the full freedom of use specified in this
+license.
+
+Most GNU software, including some libraries, is covered by the ordinary GNU
+General Public License. This license, the GNU Lesser General Public License,
+applies to certain designated libraries, and is quite different from the ordinary
+General Public License. We use this license for certain libraries in order
+to permit linking those libraries into non-free programs.
+
+When a program is linked with a library, whether statically or using a shared
+library, the combination of the two is legally speaking a combined work, a
+derivative of the original library. The ordinary General Public License therefore
+permits such linking only if the entire combination fits its criteria of freedom.
+The Lesser General Public License permits more lax criteria for linking other
+code with the library.
+
+We call this license the "Lesser" General Public License because it does Less
+to protect the user's freedom than the ordinary General Public License. It
+also provides other free software developers Less of an advantage over competing
+non-free programs. These disadvantages are the reason we use the ordinary
+General Public License for many libraries. However, the Lesser license provides
+advantages in certain special circumstances.
+
+For example, on rare occasions, there may be a special need to encourage the
+widest possible use of a certain library, so that it becomes a de-facto standard.
+To achieve this, non-free programs must be allowed to use the library. A more
+frequent case is that a free library does the same job as widely used non-free
+libraries. In this case, there is little to gain by limiting the free library
+to free software only, so we use the Lesser General Public License.
+
+In other cases, permission to use a particular library in non-free programs
+enables a greater number of people to use a large body of free software. For
+example, permission to use the GNU C Library in non-free programs enables
+many more people to use the whole GNU operating system, as well as its variant,
+the GNU/Linux operating system.
+
+Although the Lesser General Public License is Less protective of the users'
+freedom, it does ensure that the user of a program that is linked with the
+Library has the freedom and the wherewithal to run that program using a modified
+version of the Library.
+
+The precise terms and conditions for copying, distribution and modification
+follow. Pay close attention to the difference between a "work based on the
+library" and a "work that uses the library". The former contains code derived
+from the library, whereas the latter must be combined with the library in
+order to run.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License Agreement applies to any software library or other program
+which contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Lesser General
+Public License (also called "this License"). Each licensee is addressed as
+"you".
+
+A "library" means a collection of software functions and/or data prepared
+so as to be conveniently linked with application programs (which use some
+of those functions and data) to form executables.
+
+The "Library", below, refers to any such software library or work which has
+been distributed under these terms. A "work based on the Library" means either
+the Library or any derivative work under copyright law: that is to say, a
+work containing the Library or a portion of it, either verbatim or with modifications
+and/or translated straightforwardly into another language. (Hereinafter, translation
+is included without limitation in the term "modification".)
+
+"Source code" for a work means the preferred form of the work for making modifications
+to it. For a library, complete source code means all the source code for all
+modules it contains, plus any associated interface definition files, plus
+the scripts used to control compilation and installation of the library.
+
+Activities other than copying, distribution and modification are not covered
+by this License; they are outside its scope. The act of running a program
+using the Library is not restricted, and output from such a program is covered
+only if its contents constitute a work based on the Library (independent of
+the use of the Library in a tool for writing it). Whether that is true depends
+on what the Library does and what the program that uses the Library does.
+
+1. You may copy and distribute verbatim copies of the Library's complete source
+code as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and disclaimer
+of warranty; keep intact all the notices that refer to this License and to
+the absence of any warranty; and distribute a copy of this License along with
+the Library.
+
+You may charge a fee for the physical act of transferring a copy, and you
+may at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Library or any portion of it,
+thus forming a work based on the Library, and copy and distribute such modifications
+or work under the terms of Section 1 above, provided that you also meet all
+of these conditions:
+
+ a) The modified work must itself be a software library.
+
+b) You must cause the files modified to carry prominent notices stating that
+you changed the files and the date of any change.
+
+c) You must cause the whole of the work to be licensed at no charge to all
+third parties under the terms of this License.
+
+d) If a facility in the modified Library refers to a function or a table of
+data to be supplied by an application program that uses the facility, other
+than as an argument passed when the facility is invoked, then you must make
+a good faith effort to ensure that, in the event an application does not supply
+such function or table, the facility still operates, and performs whatever
+part of its purpose remains meaningful.
+
+(For example, a function in a library to compute square roots has a purpose
+that is entirely well-defined independent of the application. Therefore, Subsection
+2d requires that any application-supplied function or table used by this function
+must be optional: if the application does not supply it, the square root function
+must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If identifiable
+sections of that work are not derived from the Library, and can be reasonably
+considered independent and separate works in themselves, then this License,
+and its terms, do not apply to those sections when you distribute them as
+separate works. But when you distribute the same sections as part of a whole
+which is a work based on the Library, the distribution of the whole must be
+on the terms of this License, whose permissions for other licensees extend
+to the entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest your
+rights to work written entirely by you; rather, the intent is to exercise
+the right to control the distribution of derivative or collective works based
+on the Library.
+
+In addition, mere aggregation of another work not based on the Library with
+the Library (or with a work based on the Library) on a volume of a storage
+or distribution medium does not bring the other work under the scope of this
+License.
+
+3. You may opt to apply the terms of the ordinary GNU General Public License
+instead of this License to a given copy of the Library. To do this, you must
+alter all the notices that refer to this License, so that they refer to the
+ordinary GNU General Public License, version 2, instead of to this License.
+(If a newer version than version 2 of the ordinary GNU General Public License
+has appeared, then you can specify that version instead if you wish.) Do not
+make any other change in these notices.
+
+Once this change is made in a given copy, it is irreversible for that copy,
+so the ordinary GNU General Public License applies to all subsequent copies
+and derivative works made from that copy.
+
+This option is useful when you wish to copy part of the code of the Library
+into a program that is not a library.
+
+4. You may copy and distribute the Library (or a portion or derivative of
+it, under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you accompany it with the complete corresponding
+machine-readable source code, which must be distributed under the terms of
+Sections 1 and 2 above on a medium customarily used for software interchange.
+
+If distribution of object code is made by offering access to copy from a designated
+place, then offering equivalent access to copy the source code from the same
+place satisfies the requirement to distribute the source code, even though
+third parties are not compelled to copy the source along with the object code.
+
+5. A program that contains no derivative of any portion of the Library, but
+is designed to work with the Library by being compiled or linked with it,
+is called a "work that uses the Library". Such a work, in isolation, is not
+a derivative work of the Library, and therefore falls outside the scope of
+this License.
+
+However, linking a "work that uses the Library" with the Library creates an
+executable that is a derivative of the Library (because it contains portions
+of the Library), rather than a "work that uses the library". The executable
+is therefore covered by this License. Section 6 states terms for distribution
+of such executables.
+
+When a "work that uses the Library" uses material from a header file that
+is part of the Library, the object code for the work may be a derivative work
+of the Library even though the source code is not. Whether this is true is
+especially significant if the work can be linked without the Library, or if
+the work is itself a library. The threshold for this to be true is not precisely
+defined by law.
+
+If such an object file uses only numerical parameters, data structure layouts
+and accessors, and small macros and small inline functions (ten lines or less
+in length), then the use of the object file is unrestricted, regardless of
+whether it is legally a derivative work. (Executables containing this object
+code plus portions of the Library will still fall under Section 6.)
+
+Otherwise, if the work is a derivative of the Library, you may distribute
+the object code for the work under the terms of Section 6. Any executables
+containing that work also fall under Section 6, whether or not they are linked
+directly with the Library itself.
+
+6. As an exception to the Sections above, you may also combine or link a "work
+that uses the Library" with the Library to produce a work containing portions
+of the Library, and distribute that work under terms of your choice, provided
+that the terms permit modification of the work for the customer's own use
+and reverse engineering for debugging such modifications.
+
+You must give prominent notice with each copy of the work that the Library
+is used in it and that the Library and its use are covered by this License.
+You must supply a copy of this License. If the work during execution displays
+copyright notices, you must include the copyright notice for the Library among
+them, as well as a reference directing the user to the copy of this License.
+Also, you must do one of these things:
+
+a) Accompany the work with the complete corresponding machine-readable source
+code for the Library including whatever changes were used in the work (which
+must be distributed under Sections 1 and 2 above); and, if the work is an
+executable linked with the Library, with the complete machine-readable "work
+that uses the Library", as object code and/or source code, so that the user
+can modify the Library and then relink to produce a modified executable containing
+the modified Library. (It is understood that the user who changes the contents
+of definitions files in the Library will not necessarily be able to recompile
+the application to use the modified definitions.)
+
+b) Use a suitable shared library mechanism for linking with the Library. A
+suitable mechanism is one that (1) uses at run time a copy of the library
+already present on the user's computer system, rather than copying library
+functions into the executable, and (2) will operate properly with a modified
+version of the library, if the user installs one, as long as the modified
+version is interface-compatible with the version that the work was made with.
+
+c) Accompany the work with a written offer, valid for at least three years,
+to give the same user the materials specified in Subsection 6a, above, for
+a charge no more than the cost of performing this distribution.
+
+d) If distribution of the work is made by offering access to copy from a designated
+place, offer equivalent access to copy the above specified materials from
+the same place.
+
+e) Verify that the user has already received a copy of these materials or
+that you have already sent this user a copy.
+
+For an executable, the required form of the "work that uses the Library" must
+include any data and utility programs needed for reproducing the executable
+from it. However, as a special exception, the materials to be distributed
+need not include anything that is normally distributed (in either source or
+binary form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component itself
+accompanies the executable.
+
+It may happen that this requirement contradicts the license restrictions of
+other proprietary libraries that do not normally accompany the operating system.
+Such a contradiction means you cannot use both them and the Library together
+in an executable that you distribute.
+
+7. You may place library facilities that are a work based on the Library side-by-side
+in a single library together with other library facilities not covered by
+this License, and distribute such a combined library, provided that the separate
+distribution of the work based on the Library and of the other library facilities
+is otherwise permitted, and provided that you do these two things:
+
+a) Accompany the combined library with a copy of the same work based on the
+Library, uncombined with any other library facilities. This must be distributed
+under the terms of the Sections above.
+
+b) Give prominent notice with the combined library of the fact that part of
+it is a work based on the Library, and explaining where to find the accompanying
+uncombined form of the same work.
+
+8. You may not copy, modify, sublicense, link with, or distribute the Library
+except as expressly provided under this License. Any attempt otherwise to
+copy, modify, sublicense, link with, or distribute the Library is void, and
+will automatically terminate your rights under this License. However, parties
+who have received copies, or rights, from you under this License will not
+have their licenses terminated so long as such parties remain in full compliance.
+
+9. You are not required to accept this License, since you have not signed
+it. However, nothing else grants you permission to modify or distribute the
+Library or its derivative works. These actions are prohibited by law if you
+do not accept this License. Therefore, by modifying or distributing the Library
+(or any work based on the Library), you indicate your acceptance of this License
+to do so, and all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+10. Each time you redistribute the Library (or any work based on the Library),
+the recipient automatically receives a license from the original licensor
+to copy, distribute, link with or modify the Library subject to these terms
+and conditions. You may not impose any further restrictions on the recipients'
+exercise of the rights granted herein. You are not responsible for enforcing
+compliance by third parties with this License.
+
+11. If, as a consequence of a court judgment or allegation of patent infringement
+or for any other reason (not limited to patent issues), 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 distribute so as to satisfy simultaneously your
+obligations under this License and any other pertinent obligations, then as
+a consequence you may not distribute the Library at all. For example, if a
+patent license would not permit royalty-free redistribution of the Library
+by all those who receive copies directly or indirectly through you, then the
+only way you could satisfy both it and this License would be to refrain entirely
+from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents
+or other property right claims or to contest validity of any such claims;
+this section has the sole purpose of protecting the integrity of the free
+software distribution system which is implemented by public license practices.
+Many people have made generous contributions to the wide range of software
+distributed through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing to
+distribute software through any other system and a licensee cannot impose
+that choice.
+
+This section is intended to make thoroughly clear what is believed to be a
+consequence of the rest of this License.
+
+12. If the distribution and/or use of the Library is restricted in certain
+countries either by patents or by copyrighted interfaces, the original copyright
+holder who places the Library under this License may add an explicit geographical
+distribution limitation excluding those countries, so that distribution is
+permitted only in or among countries not thus excluded. In such case, this
+License incorporates the limitation as if written in the body of this License.
+
+13. The Free Software Foundation may publish revised and/or new versions of
+the Lesser 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 Library specifies
+a version number of this License which applies to it and "any later version",
+you have the option of following the terms and conditions either of that version
+or of any later version published by the Free Software Foundation. If the
+Library does not specify a license version number, you may choose any version
+ever published by the Free Software Foundation.
+
+14. If you wish to incorporate parts of the Library into other free programs
+whose distribution conditions are incompatible with these, write to the author
+to ask for permission. For software which is copyrighted by the Free Software
+Foundation, write to the Free Software Foundation; we sometimes make exceptions
+for this. Our decision will be guided by the two goals of preserving the free
+status of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
+THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE
+STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY
+"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 LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE
+THE LIBRARY 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 LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH
+HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+END OF TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Libraries
+
+If you develop a new library, and you want it to be of the greatest possible
+use to the public, we recommend making it free software that everyone can
+redistribute and change. You can do so by permitting redistribution under
+these terms (or, alternatively, under the terms of the ordinary General Public
+License).
+
+To apply these terms, attach the following notices to the library. It is safest
+to attach them to the start of each source file to most effectively convey
+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 library's name and an idea of what it does. >
+
+Copyright (C) < year > < name of author >
+
+This library is free software; you can redistribute it and/or modify it under
+the terms of the GNU Lesser General Public License as published by the Free
+Software Foundation; either version 2.1 of the License, or (at your option)
+any later version.
+
+This library 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 Lesser General Public License for more
+details.
+
+You should have received a copy of the GNU Lesser General Public License along
+with this library; if not, write to the Free Software Foundation, Inc., 51
+Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information
+on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your school,
+if any, to sign a "copyright disclaimer" for the library, if necessary. Here
+is a sample; alter the names:
+
+Yoyodyne, Inc., hereby disclaims all copyright interest in
+
+the library `Frob' (a library for tweaking knobs) written
+
+by James Random Hacker.
+
+< signature of Ty Coon > , 1 April 1990
+
+Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/LICENSES/LGPL-3.0-only.txt b/LICENSES/LGPL-3.0-only.txt
new file mode 100644
index 0000000..bd405af
--- /dev/null
+++ b/LICENSES/LGPL-3.0-only.txt
@@ -0,0 +1,163 @@
+GNU LESSER GENERAL PUBLIC LICENSE
+
+Version 3, 29 June 2007
+
+Copyright (C) 2007 Free Software Foundation, Inc.
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+This version of the GNU Lesser General Public License incorporates the terms
+and conditions of version 3 of the GNU General Public License, supplemented
+by the additional permissions listed below.
+
+ 0. Additional Definitions.
+
+
+
+As used herein, "this License" refers to version 3 of the GNU Lesser General
+Public License, and the "GNU GPL" refers to version 3 of the GNU General Public
+License.
+
+
+
+"The Library" refers to a covered work governed by this License, other than
+an Application or a Combined Work as defined below.
+
+
+
+An "Application" is any work that makes use of an interface provided by the
+Library, but which is not otherwise based on the Library. Defining a subclass
+of a class defined by the Library is deemed a mode of using an interface provided
+by the Library.
+
+
+
+A "Combined Work" is a work produced by combining or linking an Application
+with the Library. The particular version of the Library with which the Combined
+Work was made is also called the "Linked Version".
+
+
+
+The "Minimal Corresponding Source" for a Combined Work means the Corresponding
+Source for the Combined Work, excluding any source code for portions of the
+Combined Work that, considered in isolation, are based on the Application,
+and not on the Linked Version.
+
+
+
+The "Corresponding Application Code" for a Combined Work means the object
+code and/or source code for the Application, including any data and utility
+programs needed for reproducing the Combined Work from the Application, but
+excluding the System Libraries of the Combined Work.
+
+ 1. Exception to Section 3 of the GNU GPL.
+
+You may convey a covered work under sections 3 and 4 of this License without
+being bound by section 3 of the GNU GPL.
+
+ 2. Conveying Modified Versions.
+
+If you modify a copy of the Library, and, in your modifications, a facility
+refers to a function or data to be supplied by an Application that uses the
+facility (other than as an argument passed when the facility is invoked),
+then you may convey a copy of the modified version:
+
+a) under this License, provided that you make a good faith effort to ensure
+that, in the event an Application does not supply the function or data, the
+facility still operates, and performs whatever part of its purpose remains
+meaningful, or
+
+b) under the GNU GPL, with none of the additional permissions of this License
+applicable to that copy.
+
+ 3. Object Code Incorporating Material from Library Header Files.
+
+The object code form of an Application may incorporate material from a header
+file that is part of the Library. You may convey such object code under terms
+of your choice, provided that, if the incorporated material is not limited
+to numerical parameters, data structure layouts and accessors, or small macros,
+inline functions and templates (ten or fewer lines in length), you do both
+of the following:
+
+a) Give prominent notice with each copy of the object code that the Library
+is used in it and that the Library and its use are covered by this License.
+
+b) Accompany the object code with a copy of the GNU GPL and this license document.
+
+ 4. Combined Works.
+
+You may convey a Combined Work under terms of your choice that, taken together,
+effectively do not restrict modification of the portions of the Library contained
+in the Combined Work and reverse engineering for debugging such modifications,
+if you also do each of the following:
+
+a) Give prominent notice with each copy of the Combined Work that the Library
+is used in it and that the Library and its use are covered by this License.
+
+b) Accompany the Combined Work with a copy of the GNU GPL and this license
+document.
+
+c) For a Combined Work that displays copyright notices during execution, include
+the copyright notice for the Library among these notices, as well as a reference
+directing the user to the copies of the GNU GPL and this license document.
+
+ d) Do one of the following:
+
+0) Convey the Minimal Corresponding Source under the terms of this License,
+and the Corresponding Application Code in a form suitable for, and under terms
+that permit, the user to recombine or relink the Application with a modified
+version of the Linked Version to produce a modified Combined Work, in the
+manner specified by section 6 of the GNU GPL for conveying Corresponding Source.
+
+1) Use a suitable shared library mechanism for linking with the Library. A
+suitable mechanism is one that (a) uses at run time a copy of the Library
+already present on the user's computer system, and (b) will operate properly
+with a modified version of the Library that is interface-compatible with the
+Linked Version.
+
+e) Provide Installation Information, but only if you would otherwise be required
+to provide such information under section 6 of the GNU GPL, and only to the
+extent that such information is necessary to install and execute a modified
+version of the Combined Work produced by recombining or relinking the Application
+with a modified version of the Linked Version. (If you use option 4d0, the
+Installation Information must accompany the Minimal Corresponding Source and
+Corresponding Application Code. If you use option 4d1, you must provide the
+Installation Information in the manner specified by section 6 of the GNU GPL
+for conveying Corresponding Source.)
+
+ 5. Combined Libraries.
+
+You may place library facilities that are a work based on the Library side
+by side in a single library together with other library facilities that are
+not Applications and are not covered by this License, and convey such a combined
+library under terms of your choice, if you do both of the following:
+
+a) Accompany the combined library with a copy of the same work based on the
+Library, uncombined with any other library facilities, conveyed under the
+terms of this License.
+
+b) Give prominent notice with the combined library that part of it is a work
+based on the Library, and explaining where to find the accompanying uncombined
+form of the same work.
+
+ 6. Revised Versions of the GNU Lesser General Public License.
+
+The Free Software Foundation may publish revised and/or new versions of the
+GNU Lesser 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 Library as you
+received it specifies that a certain numbered version of the GNU Lesser General
+Public License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that published version or of
+any later version published by the Free Software Foundation. If the Library
+as you received it does not specify a version number of the GNU Lesser General
+Public License, you may choose any version of the GNU Lesser General Public
+License ever published by the Free Software Foundation.
+
+If the Library as you received it specifies that a proxy can decide whether
+future versions of the GNU Lesser General Public License shall apply, that
+proxy's public statement of acceptance of any version is permanent authorization
+for you to choose that version for the Library.
diff --git a/LICENSES/LicenseRef-KDE-Accepted-LGPL.txt b/LICENSES/LicenseRef-KDE-Accepted-LGPL.txt
new file mode 100644
index 0000000..232b3c5
--- /dev/null
+++ b/LICENSES/LicenseRef-KDE-Accepted-LGPL.txt
@@ -0,0 +1,12 @@
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 3 of the license or (at your option) any later version
+that is accepted by the membership of KDE e.V. (or its successor
+approved by the membership of KDE e.V.), which shall act as a
+proxy as defined in Section 6 of version 3 of the license.
+
+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.
diff --git a/autotests/configtest.cpp b/autotests/configtest.cpp
index 48e626c..35c7d10 100644
--- a/autotests/configtest.cpp
+++ b/autotests/configtest.cpp
@@ -1,58 +1,43 @@
/*
This file is part of KDE.
- Copyright (c) 2018 Ralf Habacker
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2018 Ralf Habacker
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include
#include
using namespace Attica;
class ConfigTest : public QObject
{
Q_OBJECT
private Q_SLOTS:
void testParsing();
};
void ConfigTest::testParsing()
{
Config::Parser parser;
QString validData (QLatin1String(""
""
"1.7"
"store.kde.org"
"api.kde-look.org"
"contact@opendesktop.org"
"true"
""));
Config config = parser.parse(validData);
QVERIFY(config.isValid());
QString invalidData = QLatin1String("");
config = parser.parse(invalidData);
QVERIFY(!config.isValid());
}
QTEST_GUILESS_MAIN(ConfigTest)
#include "configtest.moc"
diff --git a/autotests/persontest.cpp b/autotests/persontest.cpp
index 9019865..070fe17 100644
--- a/autotests/persontest.cpp
+++ b/autotests/persontest.cpp
@@ -1,64 +1,49 @@
/*
This file is part of KDE.
- Copyright (c) 2010 Martin Sandsmark
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2010 Martin Sandsmark
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include
#include
using namespace Attica;
class PersonTest : public QObject
{
Q_OBJECT
private Q_SLOTS:
void testParsing();
};
void PersonTest::testParsing()
{
Person::Parser parser;
QString validData(QLatin1String(""
""
"10"
"Ola"
"Nordmann"
"http://kde.org/"
"http://techbase.kde.org/skins/oxygen/top-kde.png"
"1"
"2010-06-21"
"Oslo"
"Norway"
"59.56"
"10.41"
""));
Person person = parser.parse(validData);
QVERIFY(person.isValid());
QString invalidData = QLatin1String("");
person = parser.parse(invalidData);
QVERIFY(!person.isValid());
}
QTEST_MAIN(PersonTest)
#include "persontest.moc"
diff --git a/autotests/privatedatatest.cpp b/autotests/privatedatatest.cpp
index 9913c17..2a9a2b6 100644
--- a/autotests/privatedatatest.cpp
+++ b/autotests/privatedatatest.cpp
@@ -1,61 +1,46 @@
/*
This file is part of KDE.
- Copyright (c) 2010 Martin Sandsmark
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2010 Martin Sandsmark
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include
#include "../privatedata.h"
#include "../privatedataparser.h"
using namespace Attica;
class PersonTest : public QObject
{
Q_OBJECT
private slots:
void testParsing();
void testMergeType();
};
void PersonTest::testParsing()
{
PrivateData::Parser parser;
QString validData(""
"keyfoo"
"valuebar"
"01.01.1998"
"");
PrivateData attributes = parser.parse(validData);
QVERIFY(attributes.attributeChanged("keyfoo").isValid());
QVERIFY(!attributes.attribute("keyfoo").isNull());
}
void PersonTest::testMergeType()
{
PrivateData a;
a.setMergeType(PrivateData::OverwriteLocal);
QVERIFY(a.mergeType() == PrivateData::OverwriteLocal);
}
QTEST_MAIN(PersonTest);
#include "moc_persontest.cxx"
diff --git a/autotests/providertest.cpp b/autotests/providertest.cpp
index 42ec71e..d5af918 100644
--- a/autotests/providertest.cpp
+++ b/autotests/providertest.cpp
@@ -1,151 +1,136 @@
/*
This file is part of KDE.
- Copyright (c) 2018 Ralf Habacker
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2018 Ralf Habacker
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include
#include
#include
#include
#include
#include
using namespace Attica;
class ProviderTest : public QObject
{
Q_OBJECT
public:
ProviderTest();
virtual ~ProviderTest();
private:
void initProvider(const QUrl &url);
private Q_SLOTS:
void testFetchValidProvider();
void testFetchInvalidProvider();
protected Q_SLOTS:
void providerAdded(Attica::Provider p);
void slotDefaultProvidersLoaded();
void slotConfigResult(Attica::BaseJob *j);
void slotTimeout();
private:
Attica::ProviderManager *m_manager;
QEventLoop *m_eventloop;
QTimer m_timer;
bool m_errorReceived = false;
};
ProviderTest::ProviderTest()
: m_manager(nullptr),
m_eventloop(new QEventLoop)
{
QLoggingCategory::setFilterRules(QStringLiteral("org.kde.attica.debug=true"));
}
ProviderTest::~ProviderTest()
{
delete m_manager;
delete m_eventloop;
}
void ProviderTest::slotDefaultProvidersLoaded()
{
qDebug() << "default providers loaded";
m_eventloop->exit();
}
void ProviderTest::providerAdded(Attica::Provider p)
{
qDebug() << "got provider" << p.name();
m_eventloop->exit();
}
void ProviderTest::initProvider(const QUrl &url)
{
m_errorReceived = false;
delete m_manager;
m_manager = new Attica::ProviderManager;
m_manager->setAuthenticationSuppressed(true);
connect(m_manager, &ProviderManager::defaultProvidersLoaded, this, &ProviderTest::slotDefaultProvidersLoaded);
connect(m_manager, &ProviderManager::providerAdded, this, &ProviderTest::providerAdded);
m_manager->addProviderFile(url);
connect(m_manager, &Attica::ProviderManager::failedToLoad, this, [this]() {
m_errorReceived = true;
m_eventloop->quit();
});
m_timer.singleShot(5000, this, &ProviderTest::slotTimeout);
m_eventloop->exec();
}
void ProviderTest::testFetchValidProvider()
{
initProvider(QUrl(QLatin1String("https://autoconfig.kde.org/ocs/providers.xml")));
Attica::Provider provider = m_manager->providers().at(0);
ItemJob* job = provider.requestConfig();
QVERIFY(job);
connect(job, &BaseJob::finished, this, &ProviderTest::slotConfigResult);
job->start();
m_eventloop->exec();
}
void ProviderTest::slotConfigResult(Attica::BaseJob* j)
{
if (j->metadata().error() == Metadata::NoError) {
Attica::ItemJob *itemJob = static_cast *>( j );
Attica::Config p = itemJob->result();
qDebug() << QLatin1String("Config loaded - Server has version") << p.version();
} else if (j->metadata().error() == Metadata::OcsError) {
qDebug() << QString(QLatin1String("OCS Error: %1")).arg(j->metadata().message());
} else if (j->metadata().error() == Metadata::NetworkError) {
qDebug() << QString(QLatin1String("Network Error: %1")).arg(j->metadata().message());
} else {
qDebug() << QString(QLatin1String("Unknown Error: %1")).arg(j->metadata().message());
}
m_eventloop->exit();
m_timer.stop();
QVERIFY(j->metadata().error() == Metadata::NoError);
}
void ProviderTest::slotTimeout()
{
QVERIFY(m_eventloop->isRunning());
m_eventloop->exit();
QFAIL("Timeout fetching provider");
}
void ProviderTest::testFetchInvalidProvider()
{
initProvider(QUrl(QLatin1String("https://invalid-url.org/ocs/providers.xml")));
QVERIFY(m_manager->providers().size() == 0);
QVERIFY(m_errorReceived);
}
QTEST_GUILESS_MAIN(ProviderTest)
#include "providertest.moc"
diff --git a/src/accountbalance.cpp b/src/accountbalance.cpp
index f728b6b..f7fd050 100644
--- a/src/accountbalance.cpp
+++ b/src/accountbalance.cpp
@@ -1,69 +1,55 @@
/*
- Copyright (C) 2009 Frederik Gladhorn
+ SPDX-FileCopyrightText: 2009 Frederik Gladhorn
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "accountbalance.h"
using namespace Attica;
class AccountBalance::Private : public QSharedData
{
public:
QString balance;
QString currency;
};
AccountBalance::AccountBalance()
: d(new Private)
{
}
AccountBalance::AccountBalance(const Attica::AccountBalance &other)
: d(other.d)
{
}
AccountBalance &AccountBalance::operator=(const Attica::AccountBalance &other)
{
d = other.d;
return *this;
}
AccountBalance::~AccountBalance()
{}
void AccountBalance::setBalance(const QString &balance)
{
d->balance = balance;
}
QString AccountBalance::balance() const
{
return d->balance;
}
void AccountBalance::setCurrency(const QString ¤cy)
{
d->currency = currency;
}
QString AccountBalance::currency() const
{
return d->currency;
}
diff --git a/src/accountbalance.h b/src/accountbalance.h
index 498e49e..f9f3543 100644
--- a/src/accountbalance.h
+++ b/src/accountbalance.h
@@ -1,95 +1,81 @@
/*
- Copyright (C) 2009 Frederik Gladhorn
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2009 Frederik Gladhorn
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#ifndef ATTICA_ACCOUNTBALANCE_H
#define ATTICA_ACCOUNTBALANCE_H
#include
#include
#include "attica_export.h"
namespace Attica
{
/**
* Represents the money in the account of the user
*/
class ATTICA_EXPORT AccountBalance
{
public:
typedef QList List;
class Parser;
/**
* Creates an empty AccountBalance
*/
AccountBalance();
/**
* Copy constructor.
* @param other the AccountBalance to copy from
*/
AccountBalance(const AccountBalance &other);
/**
* Assignment operator.
* @param other the AccountBalance to assign from
* @return pointer to this AccountBalance
*/
AccountBalance &operator=(const AccountBalance &other);
/**
* Destructor.
*/
~AccountBalance();
/**
* Sets the currency in use.
* @param currency the new currency (Euro, US Dollar)
*/
void setCurrency(const QString ¤cy);
/**
* Gets the currency.
* @return the currency
*/
QString currency() const;
/**
* Sets the balance.
* @param balance
*/
void setBalance(const QString &name);
/**
* Gets the balance.
* @return the amount of money in the account
*/
QString balance() const;
private:
class Private;
QSharedDataPointer d;
};
}
#endif // ACCOUNTBALANCE_H
diff --git a/src/accountbalanceparser.cpp b/src/accountbalanceparser.cpp
index c3d23ec..95896d3 100644
--- a/src/accountbalanceparser.cpp
+++ b/src/accountbalanceparser.cpp
@@ -1,51 +1,36 @@
/*
This file is part of KDE.
- Copyright (c) 2009 Frederik Gladhorn
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2009 Frederik Gladhorn
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "accountbalanceparser.h"
#include
using namespace Attica;
QStringList AccountBalance::Parser::xmlElement() const
{
return QStringList(QStringLiteral("person"));
}
AccountBalance AccountBalance::Parser::parseXml(QXmlStreamReader &xml)
{
AccountBalance item;
while (!xml.atEnd()) {
xml.readNext();
if (xml.isStartElement()) {
if (xml.name() == QLatin1String("balance")) {
item.setBalance(xml.readElementText());
}
else if (xml.name() == QLatin1String("currency")) {
item.setCurrency(xml.readElementText());
}
}
}
return item;
}
diff --git a/src/accountbalanceparser.h b/src/accountbalanceparser.h
index 7ff9967..a9ad564 100644
--- a/src/accountbalanceparser.h
+++ b/src/accountbalanceparser.h
@@ -1,42 +1,27 @@
/*
This file is part of KDE.
- Copyright (c) 2009 Frederik Gladhorn
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2009 Frederik Gladhorn
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#ifndef ATTICA_ACCOUNTBALANCEPARSER_H
#define ATTICA_ACCOUNTBALANCEPARSER_H
#include "accountbalance.h"
#include "parser.h"
namespace Attica
{
class AccountBalance::Parser : public Attica::Parser
{
private:
AccountBalance parseXml(QXmlStreamReader &xml) override;
QStringList xmlElement() const override;
};
}
#endif
diff --git a/src/achievement.cpp b/src/achievement.cpp
index 0e8f963..39cefff 100644
--- a/src/achievement.cpp
+++ b/src/achievement.cpp
@@ -1,287 +1,272 @@
/*
This file is part of KDE.
- Copyright (c) 2011 Laszlo Papp
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2011 Laszlo Papp
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "achievement.h"
using namespace Attica;
Achievement::Type Achievement::stringToAchievementType(const QString &achievementTypeString)
{
if (achievementTypeString == QLatin1String("flowing")) {
return Achievement::FlowingAchievement;
} else if (achievementTypeString == QLatin1String("stepped")) {
return Achievement::SteppedAchievement;
} else if (achievementTypeString == QLatin1String("namedsteps")) {
return Achievement::NamedstepsAchievement;
} else if (achievementTypeString == QLatin1String("set")) {
return Achievement::SetAchievement;
}
Q_ASSERT(false);
return Achievement::FlowingAchievement;
}
QString Achievement::achievementTypeToString(const Achievement::Type type)
{
switch (type) {
case Achievement::FlowingAchievement:
return QStringLiteral("flowing");
case Achievement::SteppedAchievement:
return QStringLiteral("stepped");
case Achievement::NamedstepsAchievement:
return QStringLiteral("namedsteps");
case Achievement::SetAchievement:
return QStringLiteral("set");
}
Q_ASSERT(false);
return QString();
}
Achievement::Visibility Achievement::stringToAchievementVisibility(const QString &achievementVisibilityString)
{
if (achievementVisibilityString == QLatin1String("visible")) {
return Achievement::VisibleAchievement;
} else if (achievementVisibilityString == QLatin1String("dependents")) {
return Achievement::DependentsAchievement;
} else if (achievementVisibilityString == QLatin1String("secret")) {
return Achievement::SecretAchievement;
}
Q_ASSERT(false);
return Achievement::VisibleAchievement;
}
QString Achievement::achievementVisibilityToString(const Achievement::Visibility visibility)
{
switch (visibility) {
case Achievement::VisibleAchievement:
return QStringLiteral("visible");
case Achievement::DependentsAchievement:
return QStringLiteral("dependents");
case Achievement::SecretAchievement:
return QStringLiteral("secret");
}
Q_ASSERT(false);
return QString();
}
class Achievement::Private : public QSharedData
{
public:
QString m_id;
QString m_contentId;
QString m_name;
QString m_description;
QString m_explanation;
int m_points;
QUrl m_image;
QStringList m_dependencies;
Achievement::Visibility m_visibility;
Achievement::Type m_type;
QStringList m_options;
int m_steps;
QVariant m_progress;
Private()
: m_points(0),
m_steps(0)
{
}
};
Achievement::Achievement()
: d(new Private)
{
}
Achievement::Achievement(const Achievement &other)
: d(other.d)
{
}
Achievement &Achievement::operator=(const Attica::Achievement &other)
{
d = other.d;
return *this;
}
Achievement::~Achievement()
{
}
void Achievement::setId(const QString &id)
{
d->m_id = id;
}
QString Achievement::id() const
{
return d->m_id;
}
void Achievement::setContentId(const QString &contentId)
{
d->m_contentId = contentId;
}
QString Achievement::contentId() const
{
return d->m_contentId;
}
void Achievement::setName(const QString &name)
{
d->m_name = name;
}
QString Achievement::name() const
{
return d->m_name;
}
void Achievement::setDescription(const QString &description)
{
d->m_description = description;
}
QString Achievement::description() const
{
return d->m_description;
}
void Achievement::setExplanation(const QString &explanation)
{
d->m_explanation = explanation;
}
QString Achievement::explanation() const
{
return d->m_explanation;
}
void Achievement::setPoints(const int points)
{
d->m_points = points;
}
int Achievement::points() const
{
return d->m_points;
}
void Achievement::setImage(const QUrl &image)
{
d->m_image = image;
}
QUrl Achievement::image() const
{
return d->m_image;
}
void Achievement::setDependencies(const QStringList &dependencies)
{
d->m_dependencies = dependencies;
}
void Achievement::addDependency(const QString &dependency)
{
d->m_dependencies.append(dependency);
}
void Achievement::removeDependency(const QString &dependency)
{
d->m_dependencies.removeOne(dependency);
}
QStringList Achievement::dependencies() const
{
return d->m_dependencies;
}
void Achievement::setVisibility(Achievement::Visibility visibility)
{
d->m_visibility = visibility;
}
Achievement::Visibility Achievement::visibility() const
{
return d->m_visibility;
}
void Achievement::setType(Achievement::Type type)
{
d->m_type = type;
}
Achievement::Type Achievement::type() const
{
return d->m_type;
}
void Achievement::setOptions(const QStringList &options)
{
d->m_options = options;
}
void Achievement::addOption(const QString &option)
{
d->m_options.append(option);
}
void Achievement::removeOption(const QString &option)
{
d->m_options.removeOne(option);
}
QStringList Achievement::options() const
{
return d->m_options;
}
void Achievement::setSteps(const int steps)
{
d->m_steps = steps;
}
int Achievement::steps() const
{
return d->m_steps;
}
void Achievement::setProgress(const QVariant &progress)
{
d->m_progress = progress;
}
QVariant Achievement::progress() const
{
return d->m_progress;
}
bool Achievement::isValid() const
{
return !(d->m_id.isEmpty());
}
diff --git a/src/achievement.h b/src/achievement.h
index 2a9203b..025087b 100644
--- a/src/achievement.h
+++ b/src/achievement.h
@@ -1,116 +1,102 @@
/*
This file is part of KDE.
- Copyright (c) 2011 Laszlo Papp
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2011 Laszlo Papp
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#ifndef ATTICA_ACHIEVEMENT_H
#define ATTICA_ACHIEVEMENT_H
#include "attica_export.h"
#include
#include
#include
#include
namespace Attica
{
class ATTICA_EXPORT Achievement
{
public:
typedef QList List;
class Parser;
enum Type {
FlowingAchievement,
SteppedAchievement,
NamedstepsAchievement,
SetAchievement
};
static Achievement::Type stringToAchievementType(const QString &achievementTypeString);
static QString achievementTypeToString(const Achievement::Type type);
enum Visibility {
VisibleAchievement,
DependentsAchievement,
SecretAchievement
};
static Achievement::Visibility stringToAchievementVisibility(const QString &achievementVisibilityString);
static QString achievementVisibilityToString(const Achievement::Visibility visibility);
Achievement();
Achievement(const Achievement &other);
Achievement &operator=(const Achievement &other);
~Achievement();
void setId(const QString &id);
QString id() const;
void setContentId(const QString &contentId);
QString contentId() const;
void setName(const QString &name);
QString name() const;
void setDescription(const QString &description);
QString description() const;
void setExplanation(const QString &explanation);
QString explanation() const;
void setPoints(const int points);
int points() const;
void setImage(const QUrl &image);
QUrl image() const;
void setDependencies(const QStringList &dependencies);
void addDependency(const QString &dependency);
void removeDependency(const QString &dependency);
QStringList dependencies() const;
void setVisibility(Achievement::Visibility visibility);
Achievement::Visibility visibility() const;
void setType(Achievement::Type type);
Achievement::Type type() const;
void setOptions(const QStringList &options);
void addOption(const QString &option);
void removeOption(const QString &option);
QStringList options() const;
void setSteps(const int steps);
int steps() const;
void setProgress(const QVariant &progress);
QVariant progress() const;
bool isValid() const;
private:
class Private;
QSharedDataPointer d;
};
}
#endif
diff --git a/src/achievementparser.cpp b/src/achievementparser.cpp
index 96f9750..5ba518c 100644
--- a/src/achievementparser.cpp
+++ b/src/achievementparser.cpp
@@ -1,151 +1,136 @@
/*
This file is part of KDE.
- Copyright (c) 2011 Laszlo Papp
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2011 Laszlo Papp
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "achievementparser.h"
#include "atticautils.h"
using namespace Attica;
Achievement Achievement::Parser::parseXml(QXmlStreamReader &xml)
{
Achievement achievement;
while (!xml.atEnd()) {
xml.readNext();
if (xml.isStartElement()) {
if (xml.name() == QLatin1String("id")) {
achievement.setId(xml.readElementText());
} else if (xml.name() == QLatin1String("content_id")) {
achievement.setContentId(xml.readElementText());
} else if (xml.name() == QLatin1String("name")) {
achievement.setName(xml.readElementText());
} else if (xml.name() == QLatin1String("description")) {
achievement.setDescription(xml.readElementText());
} else if (xml.name() == QLatin1String("explanation")) {
achievement.setExplanation(xml.readElementText());
} else if (xml.name() == QLatin1String("points")) {
achievement.setPoints(xml.readElementText().toInt());
} else if (xml.name() == QLatin1String("image")) {
achievement.setImage(QUrl(xml.readElementText()));
} else if (xml.name() == QLatin1String("dependencies")) {
QStringList dependencies = parseXmlDependencies(xml);
achievement.setDependencies(dependencies);
} else if (xml.name() == QLatin1String("visibility")) {
achievement.setVisibility(Achievement::stringToAchievementVisibility(xml.readElementText()));
} else if (xml.name() == QLatin1String("type")) {
achievement.setType(Achievement::stringToAchievementType(xml.readElementText()));
} else if (xml.name() == QLatin1String("options")) {
QStringList options = parseXmlOptions(xml);
achievement.setOptions(options);
} else if (xml.name() == QLatin1String("steps")) {
achievement.setSteps(xml.readElementText().toInt());
} else if (xml.name() == QLatin1String("progress")) {
switch (achievement.type()) {
case Achievement::FlowingAchievement:
achievement.setProgress(QVariant(xml.readElementText().toFloat()));
break;
case Achievement::SteppedAchievement:
achievement.setProgress(QVariant(xml.readElementText().toInt()));
break;
case Achievement::NamedstepsAchievement:
achievement.setProgress(QVariant(xml.readElementText()));
break;
case Achievement::SetAchievement: {
QVariant progress = parseXmlProgress(xml);
achievement.setProgress(progress);
}
break;
default:
break;
}
}
} else if (xml.isEndElement() && xml.name() == QLatin1String("achievement")) {
break;
}
}
return achievement;
}
QStringList Achievement::Parser::parseXmlDependencies(QXmlStreamReader &xml)
{
QStringList dependencies;
while (!xml.atEnd()) {
xml.readNext();
if (xml.isStartElement()) {
if (xml.name() == QLatin1String("achievement_id")) {
dependencies.append(xml.readElementText());
}
} else if (xml.isEndElement() && xml.name() == QLatin1String("dependencies")) {
break;
}
}
return dependencies;
}
QStringList Achievement::Parser::parseXmlOptions(QXmlStreamReader &xml)
{
QStringList options;
while (!xml.atEnd()) {
xml.readNext();
if (xml.isStartElement()) {
if (xml.name() == QLatin1String("option")) {
options.append(xml.readElementText());
}
} else if (xml.isEndElement() && xml.name() == QLatin1String("options")) {
break;
}
}
return options;
}
QVariant Achievement::Parser::parseXmlProgress(QXmlStreamReader &xml)
{
QStringList progress;
while (!xml.atEnd()) {
xml.readNext();
if (xml.isStartElement()) {
if (xml.name() == QLatin1String("reached")) {
progress.append(xml.readElementText());
}
} else if (xml.isEndElement() && xml.name() == QLatin1String("progress")) {
break;
}
}
return progress;
}
QStringList Achievement::Parser::xmlElement() const
{
return QStringList(QStringLiteral("achievement"));
}
diff --git a/src/achievementparser.h b/src/achievementparser.h
index ded0451..ae56921 100644
--- a/src/achievementparser.h
+++ b/src/achievementparser.h
@@ -1,45 +1,30 @@
/*
This file is part of KDE.
- Copyright (c) 2011 Laszlo Papp
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2011 Laszlo Papp
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#ifndef ATTICA_ACHIEVEMENTPARSER_H
#define ATTICA_ACHIEVEMENTPARSER_H
#include "achievement.h"
#include "parser.h"
namespace Attica
{
class Achievement::Parser : public Attica::Parser
{
private:
Achievement parseXml(QXmlStreamReader &xml) override;
QStringList parseXmlOptions(QXmlStreamReader &xml);
QStringList parseXmlDependencies(QXmlStreamReader &xml);
QVariant parseXmlProgress(QXmlStreamReader &xml);
QStringList xmlElement() const override;
};
}
#endif
diff --git a/src/activity.cpp b/src/activity.cpp
index bcb603c..26be439 100644
--- a/src/activity.cpp
+++ b/src/activity.cpp
@@ -1,112 +1,97 @@
/*
This file is part of KDE.
- Copyright (c) 2008 Cornelius Schumacher
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2008 Cornelius Schumacher
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "activity.h"
#include
using namespace Attica;
class Activity::Private : public QSharedData
{
public:
QString m_id;
Person m_associatedPerson;
QDateTime m_timestamp;
QString m_message;
QUrl m_link;
};
Activity::Activity() : d(new Private)
{
}
Activity::Activity(const Attica::Activity &other)
: d(other.d)
{
}
Activity &Activity::operator=(const Attica::Activity &other)
{
d = other.d;
return *this;
}
Activity::~Activity()
{
}
void Activity::setId(const QString &id)
{
d->m_id = id;
}
QString Activity::id() const
{
return d->m_id;
}
void Activity::setAssociatedPerson(const Person &associatedPerson)
{
d->m_associatedPerson = associatedPerson;
}
Person Activity::associatedPerson() const
{
return d->m_associatedPerson;
}
void Activity::setTimestamp(const QDateTime &date)
{
d->m_timestamp = date;
}
QDateTime Activity::timestamp() const
{
return d->m_timestamp;
}
void Activity::setMessage(const QString &c)
{
d->m_message = c;
}
QString Activity::message() const
{
return d->m_message;
}
void Activity::setLink(const QUrl &v)
{
d->m_link = v;
}
QUrl Activity::link() const
{
return d->m_link;
}
bool Activity::isValid() const
{
return !(d->m_id.isEmpty());
}
diff --git a/src/activity.h b/src/activity.h
index 899b3f7..83d2a80 100644
--- a/src/activity.h
+++ b/src/activity.h
@@ -1,145 +1,130 @@
/*
This file is part of KDE.
- Copyright (c) 2008 Cornelius Schumacher
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2008 Cornelius Schumacher
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#ifndef ATTICA_ACTIVITY_H
#define ATTICA_ACTIVITY_H
#include
#include
#include
#include "attica_export.h"
#include "person.h"
class QDateTime;
namespace Attica
{
/**
* Represents a single news item (also known as activity)
*/
class ATTICA_EXPORT Activity
{
public:
typedef QList List;
class Parser;
/**
* Creates an empty Activity
*/
Activity();
/**
* Copy constructor.
* @param other the Activity to copy from
*/
Activity(const Activity &other);
/**
* Assignment operator.
* @param other the Activity to assign from
* @return pointer to this Activity
*/
Activity &operator=(const Activity &other);
/**
* Destructor.
*/
~Activity();
/**
* Sets the id of the Activity.
* The id uniquely identifies an Activity with the OCS API.
* @param id the new id
*/
void setId(const QString &id);
/**
* Gets the id of the Activity.
* The id uniquely identifies an Activity with the OCS API.
* @return the id
*/
QString id() const;
/**
* Sets the user bound to the Activity.
* @param id the new user
*/
void setAssociatedPerson(const Person &associatedPerson);
/**
* Gets the user bound to the Activity.
* @return the user
*/
Person associatedPerson() const;
/**
* Sets the timestamp the Activity has been published.
* @param timestamp the new timestamp
*/
void setTimestamp(const QDateTime ×tamp);
/**
* Gets the timestamp the Activity has been published.
* @return the timestamp
*/
QDateTime timestamp() const;
/**
* Sets the message of the Activity.
* @param message the new message
*/
void setMessage(const QString &message);
/**
* Gets the message of the Activity.
* @return the message
*/
QString message() const;
/**
* Sets the link to further information about this Activity.
* @param link the new link
*/
void setLink(const QUrl &link);
/**
* Gets the link to further information about this Activity.
* @return the link
*/
QUrl link() const;
/**
* Checks whether this Activity has an id
* @return @c true if an id has been set, @c false otherwise
*/
bool isValid() const;
private:
class Private;
QSharedDataPointer d;
};
}
#endif
diff --git a/src/activityparser.cpp b/src/activityparser.cpp
index 2813cf4..9b5b264 100644
--- a/src/activityparser.cpp
+++ b/src/activityparser.cpp
@@ -1,72 +1,57 @@
/*
This file is part of KDE.
- Copyright (c) 2008 Cornelius Schumacher
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2008 Cornelius Schumacher
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "activityparser.h"
#include
#include
using namespace Attica;
Activity Activity::Parser::parseXml(QXmlStreamReader &xml)
{
Activity activity;
Person person;
while (!xml.atEnd()) {
xml.readNext();
if (xml.isStartElement()) {
if (xml.name() == QLatin1String("id")) {
activity.setId(xml.readElementText());
} else if (xml.name() == QLatin1String("personid")) {
person.setId(xml.readElementText());
} else if (xml.name() == QLatin1String("avatarpic")) {
person.setAvatarUrl(QUrl(xml.readElementText()));
} else if (xml.name() == QLatin1String("firstname")) {
person.setFirstName(xml.readElementText());
} else if (xml.name() == QLatin1String("lastname")) {
person.setLastName(xml.readElementText());
} else if (xml.name() == QLatin1String("timestamp")) {
QString timestampString = xml.readElementText();
timestampString.remove(QRegularExpression(QStringLiteral("\\+.*$")));
QDateTime timestamp = QDateTime::fromString(timestampString, Qt::ISODate);
activity.setTimestamp(timestamp);
} else if (xml.name() == QLatin1String("message")) {
activity.setMessage(xml.readElementText());
} else if (xml.name() == QLatin1String("link")) {
activity.setLink(QUrl(xml.readElementText()));
}
} else if (xml.isEndElement() && xml.name() == QLatin1String("activity")) {
break;
}
}
activity.setAssociatedPerson(person);
return activity;
}
QStringList Activity::Parser::xmlElement() const
{
return QStringList(QStringLiteral("activity"));
}
diff --git a/src/activityparser.h b/src/activityparser.h
index 734529b..e492804 100644
--- a/src/activityparser.h
+++ b/src/activityparser.h
@@ -1,42 +1,27 @@
/*
This file is part of KDE.
- Copyright (c) 2008 Cornelius Schumacher
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2008 Cornelius Schumacher
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#ifndef ATTICA_ACTIVITYPARSER_H
#define ATTICA_ACTIVITYPARSER_H
#include "activity.h"
#include "parser.h"
namespace Attica
{
class Activity::Parser : public Attica::Parser
{
private:
Activity parseXml(QXmlStreamReader &xml) override;
QStringList xmlElement() const override;
};
}
#endif
diff --git a/src/atticabasejob.cpp b/src/atticabasejob.cpp
index 2121b00..b5f9246 100644
--- a/src/atticabasejob.cpp
+++ b/src/atticabasejob.cpp
@@ -1,196 +1,181 @@
/*
This file is part of KDE.
- Copyright (c) 2008 Cornelius Schumacher
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2008 Cornelius Schumacher
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "atticabasejob.h"
#include
#include
#include
#include
#include
#include
#include "platformdependent.h"
using namespace Attica;
class BaseJob::Private
{
public:
Metadata m_metadata;
PlatformDependent *m_internals;
QNetworkReply *m_reply;
Private(PlatformDependent *internals)
: m_internals(internals), m_reply(nullptr)
{
}
bool redirection(QUrl &newUrl) const
{
if (m_reply == nullptr ||
#if (QT_VERSION < QT_VERSION_CHECK(5, 15, 0))
m_reply->error()
#else
m_reply->networkError()
#endif
!= QNetworkReply::NoError) {
return false;
}
int httpStatusCode = m_reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
if (httpStatusCode == 301 || // Moved Permanently
httpStatusCode == 302 || // Found
httpStatusCode == 303 || // See Other
httpStatusCode == 307) { // Temporary Redirect
QNetworkRequest request = m_reply->request();
QUrl redirectUrl(m_reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl());
if (redirectUrl.isRelative()) {
QUrl baseUrl(request.url());
newUrl = baseUrl.resolved(redirectUrl);
qCDebug(ATTICA) << "resolving relative URL redirection to" << newUrl.toString();
} else {
newUrl = redirectUrl;
qCDebug(ATTICA) << "resolving absolute URL redirection to" << newUrl.toString();
}
return true;
}
return false;
}
};
BaseJob::BaseJob(PlatformDependent *internals)
: d(new Private(internals))
{
}
BaseJob::~BaseJob()
{
delete d;
}
void BaseJob::dataFinished()
{
if (!d->m_reply) {
return;
}
bool error = (
#if (QT_VERSION < QT_VERSION_CHECK(5, 15, 0))
d->m_reply->error()
#else
d->m_reply->networkError()
#endif
!= QNetworkReply::NoError);
// handle redirections automatically
QUrl newUrl;
if (d->redirection(newUrl)) {
//qCDebug(ATTICA) << "BaseJob::dataFinished" << newUrl;
QNetworkRequest request = d->m_reply->request();
QNetworkAccessManager::Operation operation = d->m_reply->operation();
if (newUrl.isValid() && operation == QNetworkAccessManager::GetOperation) {
d->m_reply->deleteLater();
// reissue same request with different Url
request.setUrl(newUrl);
d->m_reply = internals()->get(request);
connect(d->m_reply, &QNetworkReply::finished, this, &BaseJob::dataFinished);
return;
} else {
error = true;
}
}
if (!error) {
QByteArray data = d->m_reply->readAll();
//qCDebug(ATTICA) << "XML Returned:\n" << data;
parse(QString::fromUtf8(data.constData()));
if (d->m_metadata.statusCode() >= 100 && d->m_metadata.statusCode() < 200) {
d->m_metadata.setError(Metadata::NoError);
} else {
d->m_metadata.setError(Metadata::OcsError);
}
} else {
d->m_metadata.setError(Metadata::NetworkError);
#if (QT_VERSION < QT_VERSION_CHECK(5, 15, 0))
d->m_metadata.setStatusCode(d->m_reply->error());
#else
d->m_metadata.setStatusCode(d->m_reply->networkError());
#endif
d->m_metadata.setStatusString(d->m_reply->errorString());
}
emit finished(this);
d->m_reply->deleteLater();
deleteLater();
}
void BaseJob::start()
{
QTimer::singleShot(0, this, &BaseJob::doWork);
}
void BaseJob::doWork()
{
d->m_reply = executeRequest();
qCDebug(ATTICA) << "executing" << Utils::toString(d->m_reply->operation()) << "request for" << d->m_reply->url();
connect(d->m_reply, &QNetworkReply::finished, this, &BaseJob::dataFinished);
connect(d->m_reply->manager(), &QNetworkAccessManager::authenticationRequired,
this, &BaseJob::authenticationRequired);
connect(d->m_reply, static_cast(&QNetworkReply::error),
[](QNetworkReply::NetworkError code){
qCDebug(ATTICA) << "error found" << code;
});
}
void BaseJob::authenticationRequired(QNetworkReply *reply, QAuthenticator *auth)
{
auth->setUser(reply->request().attribute((QNetworkRequest::Attribute) BaseJob::UserAttribute).toString());
auth->setPassword(reply->request().attribute((QNetworkRequest::Attribute) BaseJob::PasswordAttribute).toString());
}
void BaseJob::abort()
{
if (d->m_reply) {
d->m_reply->abort();
d->m_reply->deleteLater();
}
deleteLater();
}
PlatformDependent *BaseJob::internals()
{
return d->m_internals;
}
Metadata BaseJob::metadata() const
{
return d->m_metadata;
}
void BaseJob::setMetadata(const Attica::Metadata &data) const
{
d->m_metadata = data;
}
diff --git a/src/atticabasejob.h b/src/atticabasejob.h
index dde602e..8135aab 100644
--- a/src/atticabasejob.h
+++ b/src/atticabasejob.h
@@ -1,90 +1,75 @@
/*
This file is part of KDE.
- Copyright (c) 2008 Cornelius Schumacher
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2008 Cornelius Schumacher
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#ifndef ATTICA_ATTICABASEJOB_H
#define ATTICA_ATTICABASEJOB_H
#include
#include
#include
#include
#include
#include "attica_export.h"
#include "metadata.h"
class QNetworkReply;
namespace Attica
{
class PlatformDependent;
class ATTICA_EXPORT BaseJob : public QObject
{
Q_OBJECT
public:
virtual ~BaseJob();
Metadata metadata() const;
enum NetworkRequestCustomAttributes {
UserAttribute = QNetworkRequest::User + 1,
PasswordAttribute
};
public Q_SLOTS:
void start();
void abort();
Q_SIGNALS:
void finished(Attica::BaseJob *job);
protected Q_SLOTS:
void dataFinished();
protected:
BaseJob(PlatformDependent *internals);
void setMetadata(const Metadata &data) const;
virtual QNetworkReply *executeRequest() = 0;
virtual void parse(const QString &xml) = 0;
PlatformDependent *internals();
void setError(int errorCode);
void setErrorString(const QString &errorString);
private Q_SLOTS:
void doWork();
void authenticationRequired(QNetworkReply *, QAuthenticator *);
private:
BaseJob(const BaseJob &other);
BaseJob &operator=(const BaseJob &other);
class Private;
Private *d;
};
}
#endif
diff --git a/src/atticautils.cpp b/src/atticautils.cpp
index a54ff2f..1aafc0b 100644
--- a/src/atticautils.cpp
+++ b/src/atticautils.cpp
@@ -1,88 +1,74 @@
/*
This file is part of KDE.
- Copyright (c) 2010 Intel Corporation
- Author: Mateu Batle Sastre
+ SPDX-FileCopyrightText: 2010 Intel Corporation
+ SPDX-FileContributor: Mateu Batle Sastre
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "atticautils.h"
#include
using namespace Attica;
QDateTime Utils::parseQtDateTimeIso8601(const QString &str)
{
QDateTime result;
QStringList list;
QString datetime;
int tzsign = 0;
if (str.indexOf(QLatin1String("+")) != -1) {
list = str.split(QStringLiteral("+"));
datetime = list[0];
tzsign = 1;
} else if (str.indexOf(QLatin1String("-")) != -1) {
list = str.split(QStringLiteral("-"));
datetime = list[0];
tzsign = -1;
} else {
datetime = str;
}
// parse date time
result = QDateTime::fromString(datetime, Qt::ISODate);
result.setTimeSpec(Qt::UTC);
// parse timezone
if (list.count() == 2) {
QString tz = list[1];
int hh = 0;
int mm = 0;
int tzsecs = 0;
if (tz.indexOf(QLatin1Char(':')) != -1) {
QStringList tzlist = tz.split(QLatin1Char(':'));
if (tzlist.count() == 2) {
hh = tzlist[0].toInt();
mm = tzlist[1].toInt();
}
} else {
hh = tz.leftRef(2).toInt();
mm = tz.midRef(2).toInt();
}
tzsecs = 60 * 60 * hh + 60 * mm;
result = result.addSecs(- tzsecs * tzsign);
}
return result;
}
const char *Utils::toString(QNetworkAccessManager::Operation operation)
{
switch(operation) {
case QNetworkAccessManager::GetOperation : return "Get";
case QNetworkAccessManager::HeadOperation : return "Head";
case QNetworkAccessManager::PutOperation : return "Put";
case QNetworkAccessManager::PostOperation : return "Post";
case QNetworkAccessManager::DeleteOperation : return "Delete";
case QNetworkAccessManager::CustomOperation : return "Custom";
default: return "unknown";
}
return "invalid";
}
diff --git a/src/atticautils.h b/src/atticautils.h
index f5c5e28..dc6703d 100644
--- a/src/atticautils.h
+++ b/src/atticautils.h
@@ -1,44 +1,30 @@
/*
This file is part of KDE.
- Copyright (c) 2010 Intel Corporation
- Author: Mateu Batle Sastre
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2010 Intel Corporation
+ SPDX-FileContributor: Mateu Batle Sastre
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#ifndef ATTICAUTILS_H
#define ATTICAUTILS_H
#include
#include
#include
namespace Attica
{
class Utils
{
public:
/// parses the QtDateTime in ISO 8601 format correctly (recognizes TZ properly)
static QDateTime parseQtDateTimeIso8601(const QString &str);
static const char *toString(QNetworkAccessManager::Operation operation);
};
}
#endif // ATTICAUTILS_H
diff --git a/src/buildservice.cpp b/src/buildservice.cpp
index ecd9c03..3f72fab 100644
--- a/src/buildservice.cpp
+++ b/src/buildservice.cpp
@@ -1,105 +1,90 @@
/*
This file is part of KDE.
- Copyright 2010 Sebastian Kügler
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2010 Sebastian Kügler
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "buildservice.h"
using namespace Attica;
class BuildService::Private : public QSharedData
{
public:
QString id;
QString name;
QString url;
//QStringList targets;
QList targets;
Private()
{
}
};
BuildService::BuildService()
: d(new Private)
{
}
BuildService::BuildService(const BuildService &other)
: d(other.d)
{
}
BuildService &BuildService::operator=(const Attica::BuildService &other)
{
d = other.d;
return *this;
}
BuildService::~BuildService()
{
}
void BuildService::setId(const QString &u)
{
d->id = u;
}
QString BuildService::id() const
{
return d->id;
}
void BuildService::setName(const QString &u)
{
d->name = u;
}
QString BuildService::name() const
{
return d->name;
}
void BuildService::addTarget(const Target &t)
{
d->targets << t;
}
QList BuildService::targets() const
{
return d->targets;
}
void BuildService::setUrl(const QString &u)
{
d->url = u;
}
QString BuildService::url() const
{
return d->url;
}
bool BuildService::isValid() const
{
return !(d->id.isEmpty());
}
diff --git a/src/buildservice.h b/src/buildservice.h
index fd40e32..dfcc3e1 100644
--- a/src/buildservice.h
+++ b/src/buildservice.h
@@ -1,74 +1,59 @@
/*
This file is part of KDE.
- Copyright 2010 Sebastian Kügler
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2010 Sebastian Kügler
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#ifndef ATTICA_BUILDSERVICE_H
#define ATTICA_BUILDSERVICE_H
#include
#include
#include
#include
#include
#include
#include "attica_export.h"
namespace Attica
{
struct Target {
QString id;
QString name;
};
class ATTICA_EXPORT BuildService
{
public:
typedef QList List;
class Parser;
BuildService();
BuildService(const BuildService &other);
BuildService &operator=(const BuildService &other);
~BuildService();
void setId(const QString &);
QString id() const;
void setName(const QString &);
QString name() const;
void setUrl(const QString &);
QString url() const;
void addTarget(const Target &);
QList targets() const;
bool isValid() const;
private:
class Private;
QSharedDataPointer d;
};
}
#endif
diff --git a/src/buildservicejob.cpp b/src/buildservicejob.cpp
index a89f712..95e7bd2 100644
--- a/src/buildservicejob.cpp
+++ b/src/buildservicejob.cpp
@@ -1,169 +1,154 @@
/*
This file is part of KDE.
- Copyright 2010 Sebastian Kügler
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2010 Sebastian Kügler
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "buildservicejob.h"
using namespace Attica;
class BuildServiceJob::Private : public QSharedData
{
public:
QString id;
QString name;
int status;
qreal progress;
QString projectId;
QString target;
QString buildServiceId;
QString url;
QString message;
Private()
{
}
};
BuildServiceJob::BuildServiceJob()
: d(new Private)
{
}
BuildServiceJob::BuildServiceJob(const BuildServiceJob &other)
: d(other.d)
{
}
BuildServiceJob &BuildServiceJob::operator=(const Attica::BuildServiceJob &other)
{
d = other.d;
return *this;
}
BuildServiceJob::~BuildServiceJob()
{
}
void BuildServiceJob::setId(const QString &u)
{
d->id = u;
}
QString BuildServiceJob::id() const
{
return d->id;
}
void BuildServiceJob::setName(const QString &u)
{
d->name = u;
}
QString BuildServiceJob::name() const
{
return d->name;
}
void BuildServiceJob::setProgress(const qreal p)
{
d->progress = p;
}
qreal BuildServiceJob::progress() const
{
return d->progress;
}
void BuildServiceJob::setStatus(const int status)
{
d->status = status;
}
bool BuildServiceJob::isRunning() const
{
return d->status == 1;
}
bool BuildServiceJob::isCompleted() const
{
return d->status == 2;
}
bool BuildServiceJob::isFailed() const
{
return d->status == 3;
}
void BuildServiceJob::setUrl(const QString &u)
{
d->url = u;
}
QString BuildServiceJob::url() const
{
return d->url;
}
void BuildServiceJob::setMessage(const QString &u)
{
d->message = u;
}
QString BuildServiceJob::message() const
{
return d->message;
}
void BuildServiceJob::setProjectId(const QString &u)
{
d->projectId = u;
}
QString BuildServiceJob::projectId() const
{
return d->projectId;
}
void BuildServiceJob::setTarget(const QString &u)
{
d->target = u;
}
QString BuildServiceJob::target() const
{
return d->target;
}
void BuildServiceJob::setBuildServiceId(const QString &u)
{
d->buildServiceId = u;
}
QString BuildServiceJob::buildServiceId() const
{
return d->buildServiceId;
}
bool BuildServiceJob::isValid() const
{
return !(d->id.isEmpty());
}
diff --git a/src/buildservicejob.h b/src/buildservicejob.h
index db239fb..db16e64 100644
--- a/src/buildservicejob.h
+++ b/src/buildservicejob.h
@@ -1,86 +1,71 @@
/*
This file is part of KDE.
- Copyright 2010 Sebastian Kügler
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2010 Sebastian Kügler
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#ifndef ATTICA_BUILDSERVICEJOB_H
#define ATTICA_BUILDSERVICEJOB_H
#include
#include
#include
#include
#include
#include
#include "attica_export.h"
namespace Attica
{
class ATTICA_EXPORT BuildServiceJob
{
public:
typedef QList List;
class Parser;
BuildServiceJob();
BuildServiceJob(const BuildServiceJob &other);
BuildServiceJob &operator=(const BuildServiceJob &other);
~BuildServiceJob();
void setId(const QString &);
QString id() const;
void setName(const QString &);
QString name() const;
void setUrl(const QString &);
QString url() const;
void setProjectId(const QString &);
QString projectId() const;
void setBuildServiceId(const QString &);
QString buildServiceId() const;
void setMessage(const QString &);
QString message() const;
void setTarget(const QString &);
QString target() const;
void setProgress(const qreal);
qreal progress() const;
void setStatus(const int);
bool isRunning() const;
bool isCompleted() const;
bool isFailed() const;
bool isValid() const;
private:
class Private;
QSharedDataPointer d;
};
}
#endif
diff --git a/src/buildservicejoboutput.cpp b/src/buildservicejoboutput.cpp
index b3752c8..b69612c 100644
--- a/src/buildservicejoboutput.cpp
+++ b/src/buildservicejoboutput.cpp
@@ -1,71 +1,56 @@
/*
This file is part of KDE.
- Copyright 2010 Dan Leinir Turthra Jensen
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2010 Dan Leinir Turthra Jensen
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "buildservicejoboutput.h"
using namespace Attica;
class BuildServiceJobOutput::Private : public QSharedData
{
public:
QString output;
Private()
{
}
};
BuildServiceJobOutput::BuildServiceJobOutput()
: d(new Private)
{
}
BuildServiceJobOutput::BuildServiceJobOutput(const BuildServiceJobOutput &other)
: d(other.d)
{
}
BuildServiceJobOutput &BuildServiceJobOutput::operator=(const Attica::BuildServiceJobOutput &other)
{
d = other.d;
return *this;
}
BuildServiceJobOutput::~BuildServiceJobOutput()
{
}
void BuildServiceJobOutput::setOutput(const QString &output)
{
d->output = output;
}
QString BuildServiceJobOutput::output() const
{
return d->output;
}
bool BuildServiceJobOutput::isValid() const
{
return !(d->output.isNull());
}
diff --git a/src/buildservicejoboutput.h b/src/buildservicejoboutput.h
index b6bfd13..146f794 100644
--- a/src/buildservicejoboutput.h
+++ b/src/buildservicejoboutput.h
@@ -1,61 +1,46 @@
/*
This file is part of KDE.
- Copyright 2010 Dan Leinir Turthra Jensen
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2010 Dan Leinir Turthra Jensen
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#ifndef ATTICA_BUILDSERVICEJOBOUTPUT_H
#define ATTICA_BUILDSERVICEJOBOUTPUT_H
#include
#include
#include
#include "attica_export.h"
namespace Attica
{
class ATTICA_EXPORT BuildServiceJobOutput
{
public:
typedef QList List;
class Parser;
BuildServiceJobOutput();
BuildServiceJobOutput(const BuildServiceJobOutput &other);
BuildServiceJobOutput &operator=(const BuildServiceJobOutput &other);
~BuildServiceJobOutput();
void setOutput(const QString &output);
QString output() const;
bool isRunning() const;
bool isCompleted() const;
bool isFailed() const;
bool isValid() const;
private:
class Private;
QSharedDataPointer d;
};
} // namespace Attica
#endif // ATTICA_BUILDSERVICEJOBOUTPUT_H
diff --git a/src/buildservicejoboutputparser.cpp b/src/buildservicejoboutputparser.cpp
index 31a044d..4322ef9 100644
--- a/src/buildservicejoboutputparser.cpp
+++ b/src/buildservicejoboutputparser.cpp
@@ -1,51 +1,36 @@
/*
This file is part of KDE.
- Copyright 2010 Dan Leinir Turthra Jensen
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2010 Dan Leinir Turthra Jensen
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "buildservicejoboutputparser.h"
#include "qdebug.h"
using namespace Attica;
BuildServiceJobOutput BuildServiceJobOutput::Parser::parseXml(QXmlStreamReader &xml)
{
BuildServiceJobOutput buildservicejoboutput;
// For specs about the XML provided, see here:
// http://www.freedesktop.org/wiki/Specifications/open-collaboration-services-draft#BuildServiceJobs
while (!xml.atEnd()) {
if (xml.isStartElement()) {
if (xml.name() == QLatin1String("output")) {
buildservicejoboutput.setOutput(xml.readElementText());
}
} else if (xml.isEndElement() && xml.name() == QLatin1String("output")) {
break;
}
xml.readNext();
}
return buildservicejoboutput;
}
QStringList BuildServiceJobOutput::Parser::xmlElement() const
{
return QStringList(QStringLiteral("output"));
}
diff --git a/src/buildservicejoboutputparser.h b/src/buildservicejoboutputparser.h
index aae5e4a..ee0a775 100644
--- a/src/buildservicejoboutputparser.h
+++ b/src/buildservicejoboutputparser.h
@@ -1,42 +1,27 @@
/*
This file is part of KDE.
- Copyright 2010 Dan Leinir Turthra Jensen
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2010 Dan Leinir Turthra Jensen
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#ifndef ATTICA_BUILDSERVICEJOBOUTPUTPARSER_H
#define ATTICA_BUILDSERVICEJOBOUTPUTPARSER_H
#include "buildservicejoboutput.h"
#include "parser.h"
namespace Attica
{
class BuildServiceJobOutput::Parser : public Attica::Parser
{
public:
BuildServiceJobOutput parseXml(QXmlStreamReader &xml) override;
QStringList xmlElement() const override;
};
} // namespace Attica
#endif // ATTICA_BUILDSERVICEJOBOUTPUTPARSER_H
diff --git a/src/buildservicejobparser.cpp b/src/buildservicejobparser.cpp
index 31ec1eb..52f90a1 100644
--- a/src/buildservicejobparser.cpp
+++ b/src/buildservicejobparser.cpp
@@ -1,71 +1,56 @@
/*
This file is part of KDE.
- Copyright 2010 Sebastian Kügler
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2010 Sebastian Kügler
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "buildservicejobparser.h"
#include
using namespace Attica;
BuildServiceJob BuildServiceJob::Parser::parseXml(QXmlStreamReader &xml)
{
BuildServiceJob buildservicejob;
// For specs about the XML provided, see here:
// http://www.freedesktop.org/wiki/Specifications/open-collaboration-services-draft#BuildServiceJobs
while (!xml.atEnd()) {
//qCDebug(ATTICA) << "XML returned:" << xml.text().toString();
xml.readNext();
if (xml.isStartElement()) {
if (xml.name() == QLatin1String("id")) { // FIXME: server should give "id" here ...
buildservicejob.setId(xml.readElementText());
} else if (xml.name() == QLatin1String("project")) {
buildservicejob.setProjectId(xml.readElementText());
} else if (xml.name() == QLatin1String("buildservice")) {
buildservicejob.setBuildServiceId(xml.readElementText());
} else if (xml.name() == QLatin1String("target")) {
buildservicejob.setTarget(xml.readElementText());
} else if (xml.name() == QLatin1String("name")) {
buildservicejob.setName(xml.readElementText());
} else if (xml.name() == QLatin1String("status")) {
int status = xml.readElementText().toInt();
buildservicejob.setStatus(status);
} else if (xml.name() == QLatin1String("progress")) {
qreal progress = (qreal)(xml.readElementText().toFloat());
buildservicejob.setProgress(progress);
} else if (xml.name() == QLatin1String("message")) {
buildservicejob.setMessage(xml.readElementText());
} else if (xml.name() == QLatin1String("url")) {
buildservicejob.setUrl(xml.readElementText());
}
} else if (xml.isEndElement() && (xml.name() == QLatin1String("buildjob") || xml.name() == QLatin1String("user"))) {
break;
}
}
return buildservicejob;
}
QStringList BuildServiceJob::Parser::xmlElement() const
{
return QStringList(QStringLiteral("buildjob")) << QStringLiteral("user");
}
diff --git a/src/buildservicejobparser.h b/src/buildservicejobparser.h
index 0e1a153..6563c5a 100644
--- a/src/buildservicejobparser.h
+++ b/src/buildservicejobparser.h
@@ -1,42 +1,27 @@
/*
This file is part of KDE.
- Copyright 2010 Sebastian Kügler
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2010 Sebastian Kügler
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#ifndef ATTICA_BUILDSERVICEJOBPARSER_H
#define ATTICA_BUILDSERVICEJOBPARSER_H
#include "buildservicejob.h"
#include "parser.h"
namespace Attica
{
class BuildServiceJob::Parser : public Attica::Parser
{
private:
BuildServiceJob parseXml(QXmlStreamReader &xml) override;
QStringList xmlElement() const override;
};
}
#endif
diff --git a/src/buildserviceparser.cpp b/src/buildserviceparser.cpp
index b527d9e..4503499 100644
--- a/src/buildserviceparser.cpp
+++ b/src/buildserviceparser.cpp
@@ -1,86 +1,71 @@
/*
This file is part of KDE.
- Copyright 2010 Sebastian Kügler
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2010 Sebastian Kügler
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "buildserviceparser.h"
#include
using namespace Attica;
BuildService BuildService::Parser::parseXml(QXmlStreamReader &xml)
{
// For specs about the XML provided, see here:
// http://www.freedesktop.org/wiki/Specifications/open-collaboration-services-draft
BuildService buildservice;
while (!xml.atEnd()) {
xml.readNext();
if (xml.isStartElement()) {
if (xml.name() == QLatin1String("id")) {
buildservice.setId(xml.readElementText());
} else if (xml.name() == QLatin1String("name")) {
buildservice.setName(xml.readElementText());
} else if (xml.name() == QLatin1String("registrationurl")) {
buildservice.setUrl(xml.readElementText());
} else if (xml.name() == QLatin1String("supportedtargets")) {
while (!xml.atEnd()) {
xml.readNextStartElement();
if (xml.isStartElement()) {
if (xml.name() == QLatin1String("target")) {
Target t;
while (!xml.atEnd()) {
xml.readNextStartElement();
if (xml.isStartElement()) {
if (xml.name() == QLatin1String("id")) {
t.id = xml.readElementText();
} else if (xml.name() == QLatin1String("name")) {
t.name = xml.readElementText();
}
} else if (xml.isEndElement() && (xml.name() == QLatin1String("target"))) {
xml.readNext();
break;
}
}
buildservice.addTarget(t);
}
} else if (xml.isEndElement() && (xml.name() == QLatin1String("supportedtargets"))) {
xml.readNext();
break;
}
}
}
} else if (xml.isEndElement()
&& ((xml.name() == QLatin1String("buildservice"))
|| (xml.name() == QLatin1String("user")))) {
break;
}
}
return buildservice;
}
QStringList BuildService::Parser::xmlElement() const
{
return QStringList(QStringLiteral("buildservice")) << QStringLiteral("user");
}
diff --git a/src/buildserviceparser.h b/src/buildserviceparser.h
index 5f91158..b241b6f 100644
--- a/src/buildserviceparser.h
+++ b/src/buildserviceparser.h
@@ -1,42 +1,27 @@
/*
This file is part of KDE.
- Copyright 2010 Sebastian Kügler
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2010 Sebastian Kügler
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#ifndef ATTICA_BUILDSERVICEPARSER_H
#define ATTICA_BUILDSERVICEPARSER_H
#include "buildservice.h"
#include "parser.h"
namespace Attica
{
class BuildService::Parser : public Attica::Parser
{
private:
BuildService parseXml(QXmlStreamReader &xml) override;
QStringList xmlElement() const override;
};
}
#endif
diff --git a/src/category.cpp b/src/category.cpp
index f193592..26fc1cc 100644
--- a/src/category.cpp
+++ b/src/category.cpp
@@ -1,98 +1,83 @@
/*
This file is part of KDE.
- Copyright (c) 2008 Cornelius Schumacher
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2008 Cornelius Schumacher
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "category.h"
#include
#include
using namespace Attica;
QDebug operator<<(QDebug s, const Attica::Category& cat)
{
const QString name = cat.isValid() ? cat.name() : QStringLiteral("Invalid");
s.nospace() << "Category(" << name << ')';
return s.space();
}
class Category::Private : public QSharedData
{
public:
QString m_id;
QString m_name;
QString m_displayName;
};
Category::Category() : d(new Private)
{
}
Category::Category(const Attica::Category &other)
: d(other.d)
{
}
Category &Category::operator=(const Attica::Category &other)
{
d = other.d;
return *this;
}
Category::~Category()
{
}
void Category::setId(const QString &u)
{
d->m_id = u;
}
QString Category::id() const
{
return d->m_id;
}
void Category::setName(const QString &name)
{
d->m_name = name;
}
QString Category::name() const
{
return d->m_name;
}
void Category::setDisplayName(const QString &name)
{
d->m_displayName = name;
}
QString Category::displayName() const
{
return d->m_displayName;
}
bool Category::isValid() const
{
return !(d->m_id.isEmpty());
}
diff --git a/src/category.h b/src/category.h
index 0b1650e..70c27fb 100644
--- a/src/category.h
+++ b/src/category.h
@@ -1,125 +1,110 @@
/*
This file is part of KDE.
- Copyright (c) 2008 Cornelius Schumacher
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2008 Cornelius Schumacher
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#ifndef ATTICA_CATEGORY_H
#define ATTICA_CATEGORY_H
#include
#include
#include "attica_export.h"
namespace Attica
{
/**
* Represents a single content category
*/
class ATTICA_EXPORT Category
{
public:
typedef QList List;
class Parser;
/**
* Creates an empty Category
*/
Category();
/**
* Copy constructor.
* @param other the Category to copy from
*/
Category(const Category &other);
/**
* Assignment operator.
* @param other the Category to assign from
* @return pointer to this Category
*/
Category &operator=(const Category &other);
/**
* Destructor.
*/
~Category();
/**
* Sets the id of the Category.
* The id uniquely identifies a Category with the OCS API.
* @param id the new id
*/
void setId(const QString &);
/**
* Gets the id of the Category.
* The id uniquely identifies a Category with the OCS API.
* @return the id
*/
QString id() const;
/**
* Sets the name of the Category.
* @param name the new name
*/
void setName(const QString &name);
/**
* Gets the name of the Category.
* @return the name
*/
QString name() const;
/**
* Checks whether this Category has an id
* @return @c true if an id has been set, @c false otherwise
*/
bool isValid() const;
/**
* Sets the display name of the Category.
* This name is guaranteed to be user friendly, while name may be
* internal for the server
* @param name the new name
* @since 5.31
*/
void setDisplayName(const QString &name);
/**
* Gets the display name of the Category.
* This name is guaranteed to be user friendly, while name may be
* internal for the server
* @return the name
* @since 5.31
*/
QString displayName() const;
private:
class Private;
QSharedDataPointer d;
};
}
QDebug operator<<(QDebug s, const Attica::Category& cat);
#endif
diff --git a/src/categoryparser.cpp b/src/categoryparser.cpp
index 20d5965..39b9fd7 100644
--- a/src/categoryparser.cpp
+++ b/src/categoryparser.cpp
@@ -1,54 +1,39 @@
/*
This file is part of KDE.
- Copyright (c) 2008 Cornelius Schumacher
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2008 Cornelius Schumacher
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "categoryparser.h"
using namespace Attica;
Category Category::Parser::parseXml(QXmlStreamReader &xml)
{
Category category;
while (!xml.atEnd()) {
xml.readNext();
if (xml.isStartElement()) {
if (xml.name() == QLatin1String("id")) {
category.setId(xml.readElementText());
} else if (xml.name() == QLatin1String("name")) {
category.setName(xml.readElementText());
} else if (xml.name() == QLatin1String("display_name")) {
category.setDisplayName(xml.readElementText());
}
} else if (xml.isEndElement() && xml.name() == QLatin1String("category")) {
break;
}
}
return category;
}
QStringList Category::Parser::xmlElement() const
{
return QStringList(QStringLiteral("category"));
}
diff --git a/src/categoryparser.h b/src/categoryparser.h
index 716e637..869c28e 100644
--- a/src/categoryparser.h
+++ b/src/categoryparser.h
@@ -1,42 +1,27 @@
/*
This file is part of KDE.
- Copyright (c) 2008 Cornelius Schumacher
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2008 Cornelius Schumacher
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#ifndef ATTICA_CATEGORYPARSER_H
#define ATTICA_CATEGORYPARSER_H
#include "category.h"
#include "parser.h"
namespace Attica
{
class Category::Parser : public Attica::Parser
{
private:
Category parseXml(QXmlStreamReader &xml) override;
QStringList xmlElement() const override;
};
}
#endif
diff --git a/src/cloud.cpp b/src/cloud.cpp
index acd299d..9e303c8 100644
--- a/src/cloud.cpp
+++ b/src/cloud.cpp
@@ -1,138 +1,124 @@
/*
This file is part of KDE.
- Copyright (c) 2012 Laszlo Papp
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2012 Laszlo Papp
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "cloud.h"
using namespace Attica;
class Cloud::Private : public QSharedData
{
public:
QString m_name;
QString m_url;
QUrl m_icon;
qulonglong m_quota;
qulonglong m_free;
qulonglong m_used;
float m_relative;
QString m_key;
};
Cloud::Cloud()
: d(new Private)
{
}
Cloud::Cloud(const Attica::Cloud &other)
: d(other.d)
{
}
Cloud &Cloud::operator=(const Attica::Cloud &other)
{
d = other.d;
return *this;
}
Cloud::~Cloud()
{
}
void Cloud::setName(const QString &name)
{
d->m_name = name;
}
QString Cloud::name() const
{
return d->m_name;
}
void Cloud::setUrl(const QString &url)
{
d->m_url = url;
}
QString Cloud::url() const
{
return d->m_url;
}
void Cloud::setIcon(const QUrl &icon)
{
d->m_icon = icon;
}
QUrl Cloud::icon() const
{
return d->m_icon;
}
void Cloud::setQuota(qulonglong quota)
{
d->m_quota = quota;
}
qulonglong Cloud::quota() const
{
return d->m_quota;
}
void Cloud::setFree(qulonglong free)
{
d->m_free = free;
}
qulonglong Cloud::free() const
{
return d->m_free;
}
void Cloud::setUsed(qulonglong used)
{
d->m_used = used;
}
qulonglong Cloud::used() const
{
return d->m_used;
}
void Cloud::setRelative(float relative)
{
d->m_relative = relative;
}
float Cloud::relative() const
{
return d->m_relative;
}
void Cloud::setKey(const QString &key)
{
d->m_key = key;
}
QString Cloud::key() const
{
return d->m_key;
}
diff --git a/src/cloud.h b/src/cloud.h
index d0a710f..779151b 100644
--- a/src/cloud.h
+++ b/src/cloud.h
@@ -1,203 +1,189 @@
/*
This file is part of KDE.
- Copyright (c) 2012 Laszlo Papp
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2012 Laszlo Papp
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#ifndef ATTICA_CLOUD_H
#define ATTICA_CLOUD_H
#include "attica_export.h"
#include
#include
#include
namespace Attica
{
class ATTICA_EXPORT Cloud
{
public:
typedef QList List;
class Parser;
/**
* Creates an empty Cloud
*/
Cloud();
/**
* Copy constructor.
* @param other the Cloud to copy from
*/
Cloud(const Cloud &other);
/**
* Assignment operator.
* @param other the Cloud to assign from
* @return pointer to this Activity
*/
Cloud &operator=(const Cloud &other);
/**
* Destructor.
*/
~Cloud();
/**
* Sets the name of the Cloud service
*
* @param name the new name
*/
void setName(const QString &name);
/**
* Gets the name of the Cloud service.
*
* @return the name
*/
QString name() const;
/**
* Sets the url of the Cloud service
*
* @param url the new url
*/
void setUrl(const QString &url);
/**
* Gets the url of the Cloud service.
*
* @return the url
*/
QString url() const;
/**
* Sets the icon of the Cloud service
*
* @param icon the new icon
*/
void setIcon(const QUrl &icon);
/**
* Gets the icon of the Cloud service.
*
* @return the icon
*/
QUrl icon() const;
/**
* Sets the quota of the Cloud service
*
* @param quota the new quota
*/
void setQuota(qulonglong quota);
/**
* Gets the quota of the Cloud service.
*
* @return the quota
*/
qulonglong quota() const;
/**
* Sets the free amount of the Cloud service
*
* @param free the new free amount
*/
void setFree(qulonglong free);
/**
* Gets the free amount of the Cloud service.
*
* @return the free amount
*/
qulonglong free() const;
/**
* Sets the used amount of the Cloud service
*
* @param used the new used amount
*/
void setUsed(qulonglong used);
/**
* Gets the used amount of the Cloud service.
*
* @return the used amount
*/
qulonglong used() const;
/**
* Sets the relative of the Cloud service
*
* @param relative the new relative
*/
void setRelative(float relative);
/**
* Gets the relative of the Cloud service.
*
* @return the relative
*/
float relative() const;
/**
* Sets the private key of the Cloud service
*
* @param privateKey the new privateKey
*/
void setKey(const QString &privateKey);
/**
* Gets the private key of the Cloud service.
*
* @return the private key
*/
QString key() const;
private:
class Private;
QSharedDataPointer d;
};
}
#endif
diff --git a/src/cloudparser.cpp b/src/cloudparser.cpp
index 6ede55d..6e37693 100644
--- a/src/cloudparser.cpp
+++ b/src/cloudparser.cpp
@@ -1,66 +1,51 @@
/*
This file is part of KDE.
- Copyright (c) 2012 Laszlo Papp
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2012 Laszlo Papp
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "cloudparser.h"
#include "atticautils.h"
using namespace Attica;
Cloud Cloud::Parser::parseXml(QXmlStreamReader &xml)
{
Cloud cloud;
while (!xml.atEnd()) {
xml.readNext();
if (xml.isStartElement()) {
if (xml.name() == QLatin1String("name")) {
cloud.setName(xml.readElementText());
} else if (xml.name() == QLatin1String("url")) {
cloud.setUrl(xml.readElementText());
// TODO: there should be usage for the attica icon class
} else if (xml.name() == QLatin1String("icon")) {
cloud.setIcon(QUrl(xml.readElementText()));
} else if (xml.name() == QLatin1String("quota")) {
cloud.setQuota(xml.readElementText().toULongLong());
} else if (xml.name() == QLatin1String("free")) {
cloud.setFree(xml.readElementText().toULongLong());
} else if (xml.name() == QLatin1String("used")) {
cloud.setUsed(xml.readElementText().toULongLong());
} else if (xml.name() == QLatin1String("relative")) {
cloud.setRelative(xml.readElementText().toFloat());
} else if (xml.name() == QLatin1String("key")) {
cloud.setKey(xml.readElementText());
}
} else if (xml.isEndElement() && xml.name() == QLatin1String("cloud")) {
break;
}
}
return cloud;
}
QStringList Cloud::Parser::xmlElement() const
{
return QStringList(QLatin1String("cloud"));
}
diff --git a/src/cloudparser.h b/src/cloudparser.h
index f1895c5..09d3e04 100644
--- a/src/cloudparser.h
+++ b/src/cloudparser.h
@@ -1,42 +1,27 @@
/*
This file is part of KDE.
- Copyright (c) 2012 Laszlo Papp
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2012 Laszlo Papp
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#ifndef ATTICA_CLOUDPARSER_H
#define ATTICA_CLOUDPARSER_H
#include "cloud.h"
#include "parser.h"
namespace Attica
{
class Cloud::Parser : public Attica::Parser
{
private:
Cloud parseXml(QXmlStreamReader &xml);
QStringList xmlElement() const;
};
}
#endif
diff --git a/src/comment.cpp b/src/comment.cpp
index 4a9b64a..372cd3a 100644
--- a/src/comment.cpp
+++ b/src/comment.cpp
@@ -1,170 +1,155 @@
/*
This file is part of KDE.
- Copyright (c) 2010 Intel Corporation
- Author: Mateu Batle Sastre
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2010 Intel Corporation
+ SPDX-FileContributor: Mateu Batle Sastre
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "comment.h"
#include
using namespace Attica;
QString Comment::commentTypeToString(const Comment::Type type)
{
switch (type) {
case ContentComment:
return QStringLiteral("1");
case ForumComment:
return QStringLiteral("4");
case KnowledgeBaseComment:
return QStringLiteral("7");
case EventComment:
return QStringLiteral("8");
}
Q_ASSERT(false);
return QString();
}
class Comment::Private : public QSharedData
{
public:
QString m_id;
QString m_subject;
QString m_text;
int m_childCount;
QString m_user;
QDateTime m_date;
int m_score;
QList m_children;
Private()
: m_childCount(0),
m_score(0)
{
}
};
Comment::Comment()
: d(new Private)
{
}
Comment::Comment(const Comment &other)
: d(other.d)
{
}
Comment &Comment::operator=(const Attica::Comment &other)
{
d = other.d;
return *this;
}
Comment::~Comment()
{
}
void Comment::setId(const QString &id)
{
d->m_id = id;
}
QString Comment::id() const
{
return d->m_id;
}
void Comment::setSubject(const QString &subject)
{
d->m_subject = subject;
}
QString Comment::subject() const
{
return d->m_subject;
}
void Comment::setText(const QString &text)
{
d->m_text = text;
}
QString Comment::text() const
{
return d->m_text;
}
void Comment::setChildCount(const int childCount)
{
d->m_childCount = childCount;
}
int Comment::childCount() const
{
return d->m_childCount;
}
void Comment::setUser(const QString &user)
{
d->m_user = user;
}
QString Comment::user() const
{
return d->m_user;
}
void Comment::setDate(const QDateTime &date)
{
d->m_date = date;
}
QDateTime Comment::date() const
{
return d->m_date;
}
void Comment::setScore(const int score)
{
d->m_score = score;
}
int Comment::score() const
{
return d->m_score;
}
void Comment::setChildren(QList children)
{
d->m_children = std::move(children); // TODO KF6 Make QList const & and remove the std::move
}
QList Comment::children() const
{
return d->m_children;
}
bool Comment::isValid() const
{
return !(d->m_id.isEmpty());
}
diff --git a/src/comment.h b/src/comment.h
index 146ce0c..2d38d82 100644
--- a/src/comment.h
+++ b/src/comment.h
@@ -1,97 +1,83 @@
/*
This file is part of KDE.
- Copyright (c) 2010 Intel Corporation
- Author: Mateu Batle Sastre
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2010 Intel Corporation
+ SPDX-FileContributor: Mateu Batle Sastre
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#ifndef ATTICA_COMMENT_H
#define ATTICA_COMMENT_H
#include "attica_export.h"
#include
#include
#include
namespace Attica
{
class ATTICA_EXPORT Comment
{
public:
typedef QList List;
class Parser;
enum Type {
ContentComment,
ForumComment,
KnowledgeBaseComment,
EventComment
};
static QString commentTypeToString(const Comment::Type type);
Comment();
Comment(const Comment &other);
Comment &operator=(const Comment &other);
~Comment();
void setId(const QString &id);
QString id() const;
void setSubject(const QString &subject);
QString subject() const;
void setText(const QString &text);
QString text() const;
void setChildCount(const int childCount);
int childCount() const;
void setUser(const QString &user);
QString user() const;
void setDate(const QDateTime &date);
QDateTime date() const;
/**
This is for internal usage, @see Provider::setCommentScore to set scores in comments.
@param score average comment score in scale from 0 to 100
*/
void setScore(const int score);
/**
Returns score of this comment.
@param score average comment score in scale from 0 to 100
*/
int score() const;
void setChildren(QList comments);
QList children() const;
bool isValid() const;
private:
class Private;
QSharedDataPointer d;
};
}
#endif
diff --git a/src/commentparser.cpp b/src/commentparser.cpp
index bc97249..450d65e 100644
--- a/src/commentparser.cpp
+++ b/src/commentparser.cpp
@@ -1,92 +1,77 @@
/*
This file is part of KDE.
- Copyright (c) 2010 Intel Corporation
- Author: Mateu Batle Sastre
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2010 Intel Corporation
+ SPDX-FileContributor: Mateu Batle Sastre
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "commentparser.h"
#include "atticautils.h"
#include
using namespace Attica;
Comment Comment::Parser::parseXml(QXmlStreamReader &xml)
{
Comment comment;
while (!xml.atEnd()) {
xml.readNext();
if (xml.isStartElement()) {
if (xml.name() == QLatin1String("id")) {
comment.setId(xml.readElementText());
} else if (xml.name() == QLatin1String("subject")) {
comment.setSubject(xml.readElementText());
} else if (xml.name() == QLatin1String("text")) {
comment.setText(xml.readElementText());
} else if (xml.name() == QLatin1String("childcount")) {
comment.setChildCount(xml.readElementText().toInt());
} else if (xml.name() == QLatin1String("user")) {
comment.setUser(xml.readElementText());
} else if (xml.name() == QLatin1String("date")) {
comment.setDate(Utils::parseQtDateTimeIso8601(xml.readElementText()));
} else if (xml.name() == QLatin1String("score")) {
comment.setScore(xml.readElementText().toInt());
} else if (xml.name() == QLatin1String("children")) {
// This may seem strange, however we are dealing with a situation where we may
// receive multiple children subsections (the standard accepts this, and certain
// server implementations do do this)
QList children = comment.children();
children += parseXmlChildren(xml);
comment.setChildren(children);
}
} else if (xml.isEndElement() && xml.name() == QLatin1String("comment")) {
break;
}
}
return comment;
}
QList Comment::Parser::parseXmlChildren(QXmlStreamReader &xml)
{
QList children;
while (!xml.atEnd()) {
xml.readNext();
if (xml.isStartElement()) {
if (xml.name() == QLatin1String("comment")) {
Comment comment = parseXml(xml);
children.append(comment);
}
} else if (xml.isEndElement() && xml.name() == QLatin1String("children")) {
break;
}
}
return children;
}
QStringList Comment::Parser::xmlElement() const
{
return QStringList(QStringLiteral("comment"));
}
diff --git a/src/commentparser.h b/src/commentparser.h
index b988aff..c36ca97 100644
--- a/src/commentparser.h
+++ b/src/commentparser.h
@@ -1,44 +1,29 @@
/*
This file is part of KDE.
- Copyright (c) 2010 Intel Corporation
- Author: Mateu Batle Sastre
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2010 Intel Corporation
+ SPDX-FileContributor: Mateu Batle Sastre
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#ifndef ATTICA_COMMENTPARSER_H
#define ATTICA_COMMENTPARSER_H
#include "comment.h"
#include "parser.h"
namespace Attica
{
class Comment::Parser : public Attica::Parser
{
private:
Comment parseXml(QXmlStreamReader &xml) override;
QList parseXmlChildren(QXmlStreamReader &xml);
QStringList xmlElement() const override;
};
}
#endif
diff --git a/src/config.cpp b/src/config.cpp
index fc1475b..d65a0d5 100644
--- a/src/config.cpp
+++ b/src/config.cpp
@@ -1,116 +1,101 @@
/*
This file is part of KDE.
- Copyright (c) 2018 Ralf Habacker
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2018 Ralf Habacker
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "config.h"
using namespace Attica;
class Config::Private : public QSharedData {
public:
QString m_version;
QString m_website;
QString m_host;
QString m_contact;
bool m_ssl;
Private()
: m_ssl(false)
{
}
};
Config::Config()
: d(new Private)
{
}
Config::Config(const Attica::Config& other)
: d(other.d)
{
}
Config& Config::operator=(const Attica::Config & other)
{
d = other.d;
return *this;
}
Config::~Config()
{
}
QString Attica::Config::version() const
{
return d->m_version;
}
QString Config::website() const
{
return d->m_website;
}
QString Config::host() const
{
return d->m_host;
}
QString Config::contact() const
{
return d->m_contact;
}
bool Config::ssl() const
{
return d->m_ssl;
}
bool Config::isValid() const
{
return !(d->m_version.isEmpty());
}
void Config::setContact(const QString &contact)
{
d->m_contact = contact;
}
void Config::setVersion(const QString &version)
{
d->m_version = version;
}
void Config::setWebsite(const QString &website)
{
d->m_website = website;
}
void Config::setHost(const QString &host)
{
d->m_host = host;
}
void Config::setSsl(bool ssl)
{
d->m_ssl = ssl;
}
diff --git a/src/config.h b/src/config.h
index 08290b2..b1410eb 100644
--- a/src/config.h
+++ b/src/config.h
@@ -1,90 +1,75 @@
/*
This file is part of KDE.
- Copyright (c) 2018 Ralf Habacker
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2018 Ralf Habacker
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#ifndef ATTICA_CONFIG_H
#define ATTICA_CONFIG_H
#include
#include
#include "attica_export.h"
namespace Attica {
/**
* Represents a server config
*/
class ATTICA_EXPORT Config
{
public:
typedef QList List;
class Parser;
/**
* Creates an empty Config
*/
Config();
/**
* Copy constructor.
* @param other the Config to copy from
*/
Config(const Config& other);
/**
* Assignment operator.
* @param other the Config to assign from
* @return pointer to this Config
*/
Config& operator=(const Config& other);
/**
* Destructor.
*/
~Config();
QString contact() const;
QString host() const;
QString version() const;
bool ssl() const;
QString website() const;
void setContact(const QString &contact);
void setHost(const QString &host);
void setSsl(bool ssl);
void setVersion(const QString &version);
void setWebsite(const QString &website);
/**
* Checks whether this config is valid
* @return @c true if config is valid, @c false otherwise
*/
bool isValid() const;
private:
class Private;
QSharedDataPointer d;
};
}
#endif
diff --git a/src/configparser.cpp b/src/configparser.cpp
index 1ca786e..9b1a09d 100644
--- a/src/configparser.cpp
+++ b/src/configparser.cpp
@@ -1,61 +1,46 @@
/*
This file is part of KDE.
- Copyright (c) 2018 Ralf Habacker
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2018 Ralf Habacker
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "configparser.h"
using namespace Attica;
Config Config::Parser::parseXml(QXmlStreamReader& xml)
{
Config config;
while (!xml.atEnd()) {
xml.readNext();
if (xml.isStartElement()) {
if (xml.name() == QLatin1String("version")) {
config.setVersion( xml.readElementText());
} else if (xml.name() == QLatin1String("website")) {
config.setWebsite( xml.readElementText());
} else if (xml.name() == QLatin1String("host")) {
config.setHost( xml.readElementText());
} else if (xml.name() == QLatin1String("contact")) {
config.setContact( xml.readElementText());
} else if (xml.name() == QLatin1String("ssl")) {
config.setSsl(xml.readElementText() == QLatin1String("true"));
}
}
if (xml.isEndElement() && xml.name() == QLatin1String("data")) {
break;
}
}
return config;
}
QStringList Config::Parser::xmlElement() const {
return QStringList(QStringLiteral( "data" ));
}
diff --git a/src/configparser.h b/src/configparser.h
index 3aae14c..0d5d1f2 100644
--- a/src/configparser.h
+++ b/src/configparser.h
@@ -1,45 +1,30 @@
/*
This file is part of KDE.
- Copyright (c) 2018 Ralf Habacker
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2018 Ralf Habacker
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#ifndef ATTICA_CONFIGPARSER_H
#define ATTICA_CONFIGPARSER_H
#include "config.h"
#include "parser.h"
#include "attica_export.h"
namespace Attica {
class ATTICA_EXPORT Config::Parser : public Attica::Parser
{
private:
Config parseXml(QXmlStreamReader& xml) override;
QStringList xmlElement() const override;
};
}
#endif
diff --git a/src/content.cpp b/src/content.cpp
index 011952a..2b4ab77 100644
--- a/src/content.cpp
+++ b/src/content.cpp
@@ -1,341 +1,326 @@
/*
This file is part of KDE.
- Copyright (c) 2008 Cornelius Schumacher
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2008 Cornelius Schumacher
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "content.h"
#include
using namespace Attica;
class Content::Private : public QSharedData
{
public:
QString m_id;
QString m_name;
int m_downloads;
int m_numberOfComments;
int m_rating;
QDateTime m_created;
QDateTime m_updated;
QList m_icons;
QList m_videos;
QStringList m_tags;
QMap m_extendedAttributes;
Private()
: m_downloads(0),
m_numberOfComments(0),
m_rating(0)
{
}
};
Content::Content()
: d(new Private)
{
}
Content::Content(const Attica::Content &other)
: d(other.d)
{
}
Content &Content::operator=(const Attica::Content &other)
{
d = other.d;
return *this;
}
Content::~Content()
{
}
void Content::setId(const QString &u)
{
d->m_id = u;
}
QString Content::id() const
{
return d->m_id;
}
void Content::setName(const QString &name)
{
d->m_name = name;
}
QString Content::name() const
{
return d->m_name;
}
void Content::setRating(int v)
{
d->m_rating = v;
}
int Content::rating() const
{
return d->m_rating;
}
void Content::setDownloads(int v)
{
d->m_downloads = v;
}
int Content::downloads() const
{
return d->m_downloads;
}
void Content::setNumberOfComments(int v)
{
d->m_numberOfComments = v;
}
int Content::numberOfComments() const
{
return d->m_numberOfComments;
}
void Content::setCreated(const QDateTime &date)
{
d->m_created = date;
}
QDateTime Content::created() const
{
return d->m_created;
}
void Content::setUpdated(const QDateTime &date)
{
d->m_updated = date;
}
QDateTime Content::updated() const
{
return d->m_updated;
}
void Content::addAttribute(const QString &key, const QString &value)
{
d->m_extendedAttributes.insert(key, value);
}
QString Content::attribute(const QString &key) const
{
return d->m_extendedAttributes.value(key);
}
QMap Content::attributes() const
{
return d->m_extendedAttributes;
}
bool Content::isValid() const
{
return !(d->m_id.isEmpty());
}
QString Content::summary() const
{
return attribute(QStringLiteral("summary"));
}
QString Content::description() const
{
return attribute(QStringLiteral("description"));
}
QUrl Content::detailpage() const
{
return QUrl(attribute(QStringLiteral("detailpage")));
}
QString Attica::Content::changelog() const
{
return attribute(QStringLiteral("changelog"));
}
QString Attica::Content::depend() const
{
return attribute(QStringLiteral("depend"));
}
QList Attica::Content::downloadUrlDescriptions() const
{
QList descriptions;
QMap::const_iterator iter = d->m_extendedAttributes.constBegin();
while (iter != d->m_extendedAttributes.constEnd()) {
QString key = iter.key();
if (key.startsWith(QLatin1String("downloadname"))) {
bool ok;
// remove "downloadlink", get the rest as number
int num = key.rightRef(key.size() - 12).toInt(&ok);
if (ok) {
// check if the download actually has a name
if (!iter.value().isEmpty()) {
descriptions.append(downloadUrlDescription(num));
}
}
}
++iter;
}
return descriptions;
}
Attica::DownloadDescription Attica::Content::downloadUrlDescription(int number) const
{
QString num(QString::number(number));
DownloadDescription desc;
Attica::DownloadDescription::Type downloadType = Attica::DownloadDescription::LinkDownload;
if (attribute(QLatin1String("downloadway") + num) == QLatin1Char('0')) {
downloadType = Attica::DownloadDescription::FileDownload;
} else if (attribute(QLatin1String("downloadway") + num) == QLatin1Char('1')) {
downloadType = Attica::DownloadDescription::LinkDownload;
} else if (attribute(QLatin1String("downloadway") + num) == QLatin1Char('2')) {
downloadType = Attica::DownloadDescription::PackageDownload;
}
desc.setType(downloadType);
desc.setId(number);
desc.setName(attribute(QLatin1String("downloadname") + num));
desc.setDistributionType(attribute(QLatin1String("downloadtype") + num));
desc.setHasPrice(attribute(QLatin1String("downloadbuy") + num) == QLatin1Char('1'));
desc.setLink(attribute(QLatin1String("downloadlink") + num));
desc.setPriceReason(attribute(QLatin1String("downloadreason") + num));
desc.setPriceAmount(attribute(QLatin1String("downloadprice") + num));
desc.setSize(attribute(QLatin1String("downloadsize") + num).toUInt());
desc.setGpgFingerprint(attribute(QLatin1String("downloadgpgfingerprint") + num));
desc.setGpgSignature(attribute(QLatin1String("downloadgpgsignature") + num));
desc.setPackageName(attribute(QLatin1String("downloadpackagename") + num));
desc.setRepository(attribute(QLatin1String("downloadrepository") + num));
desc.setTags(attribute(QLatin1String("downloadtags") + num).split(QLatin1Char(',')));
return desc;
}
QList Attica::Content::homePageEntries()
{
QList homepages;
QMap::const_iterator iter = d->m_extendedAttributes.constBegin();
while (iter != d->m_extendedAttributes.constEnd()) {
QString key = iter.key();
if (key.startsWith(QLatin1String("homepagetype"))) {
bool ok;
// remove "homepage", get the rest as number
int num = key.rightRef(key.size() - 12).toInt(&ok);
if (ok) {
// check if the homepage actually has a valid type
if (!iter.value().isEmpty()) {
homepages.append(homePageEntry(num));
}
}
}
++iter;
}
return homepages;
}
Attica::HomePageEntry Attica::Content::homePageEntry(int number) const
{
QString num(QString::number(number));
HomePageEntry homepage;
if (number == 1 && attribute(QStringLiteral("homepage1")).isEmpty()) {
num.clear();
}
homepage.setType(attribute(QLatin1String("homepagetype") + num));
homepage.setUrl(QUrl(attribute(QLatin1String("homepage") + num)));
return homepage;
}
QString Attica::Content::version() const
{
return attribute(QStringLiteral("version"));
}
QString Attica::Content::author() const
{
return attribute(QStringLiteral("personid"));
}
QString Attica::Content::license() const
{
return attribute(QStringLiteral("licensetype"));
}
QString Attica::Content::licenseName() const
{
return attribute(QStringLiteral("license"));
}
QString Attica::Content::previewPicture(const QString &number) const
{
return attribute(QLatin1String("previewpic") + number);
}
QString Attica::Content::smallPreviewPicture(const QString &number) const
{
return attribute(QLatin1String("smallpreviewpic") + number);
}
QList Attica::Content::icons()
{
return d->m_icons;
}
QList Attica::Content::icons() const
{
return d->m_icons;
}
void Attica::Content::setIcons(QList icons)
{
d->m_icons = std::move(icons); // TODO KF6 Make QList const & and remove the std::move
}
QList Attica::Content::videos()
{
return d->m_videos;
}
void Attica::Content::setVideos(QList videos)
{
d->m_videos = std::move(videos);
}
QStringList Attica::Content::tags() const
{
return d->m_tags;
}
void Attica::Content::setTags(const QStringList &tags)
{
d->m_tags = tags;
}
diff --git a/src/content.h b/src/content.h
index 67c0547..8e09b6c 100644
--- a/src/content.h
+++ b/src/content.h
@@ -1,281 +1,267 @@
/*
This file is part of KDE.
- Copyright (c) 2008 Cornelius Schumacher
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2008 Cornelius Schumacher
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
+
#ifndef ATTICA_CONTENT_H
#define ATTICA_CONTENT_H
#include
#include
#include
#include
#include
#include "attica_export.h"
#include "downloaddescription.h"
#include "homepageentry.h"
#include "icon.h"
class QDateTime;
namespace Attica
{
/**
* Represents a single content
*/
class ATTICA_EXPORT Content
{
public:
typedef QList List;
class Parser;
/**
* Creates an empty Content
*/
Content();
/**
* Copy constructor.
* @param other the Content to copy from
*/
Content(const Content &other);
/**
* Assignment operator.
* @param other the Content to assign from
* @return pointer to this Content
*/
Content &operator=(const Content &other);
/**
* Destructor.
*/
~Content();
/**
* Sets the id of the Content.
* The id uniquely identifies a Content with the OCS API.
* @param id the new id
*/
void setId(const QString &id);
/**
* Gets the id of the Content.
* The id uniquely identifies a Content with the OCS API.
* @return the id
*/
QString id() const;
/**
* Sets the name of the Content.
* @param name the new name
*/
void setName(const QString &name);
/**
* Gets the name of the Content.
* @return the name
*/
QString name() const;
/**
* Sets the rating of the Content.
* @param rating the new rating, has to be in the range 0-100
*/
void setRating(int rating);
/**
* Gets the rating of the Content.
* @return the rating in the range 0-100
*/
int rating() const;
/**
* Sets the number of downloads for the Content.
* @param downloads the new number of downloads
*/
void setDownloads(int downloads);
/**
* Gets the number of downloads for the Content (how often this has been downloaded from the server).
* @return the number of downloads
*/
int downloads() const;
/**
* Sets the number of comments for the Content.
* @param numComments the new number of downloads
*/
void setNumberOfComments(int numComments);
/**
* Gets the number of comments for the Content.
* @return the number of comments
*/
int numberOfComments() const;
/**
* Sets the date and time the Content has been created.
* @param created the new creation date and time
*/
void setCreated(const QDateTime &created);
/**
* Gets the date and time the Content has been created.
* @return the date and time of the last update
*/
QDateTime created() const;
/**
* Sets the time the Content has been last updated.
* @param updated the new date and time of the last update
*/
void setUpdated(const QDateTime &updated);
/**
* Gets the date and time the Content has been last updated.
* @return the date and time of the last update
*/
QDateTime updated() const;
/**
* A summary description of this content.
*/
QString summary() const;
/**
* A description of this content.
*/
QString description() const;
/**
* A webpage with the detailed description of this content.
*/
QUrl detailpage() const;
QString changelog() const;
QString version() const;
QString depend() const;
/**
Get the details about a download (a content can have multiple links, eg for different distros).
This is not very helpful if we don't know the allowed numbers.
*/
DownloadDescription downloadUrlDescription(int number) const;
/**
Get all possible downloads.
This is slow searching through lots of strings, so beware and don't call it too often.
*/
QList downloadUrlDescriptions() const;
/**
Get the details about a home page (a content can have multiple home pages, blog, bugs, ...).
This is not very helpful if we don't know the allowed numbers.
*/
HomePageEntry homePageEntry(int number) const;
/**
Get all home pages for this content.
This is slow searching through lots of strings, so beware and don't call it too often.
*/
QList homePageEntries();
QString previewPicture(const QString &number = QStringLiteral("1")) const;
QString smallPreviewPicture(const QString &number = QStringLiteral("1")) const;
QString license() const;
QString licenseName() const;
QString author() const;
/**
Get all icons for this content.
*/
QList icons();
/**
Get all icons for this content.
*/
QList icons() const;
/**
* Set list of icons.
* @param icons list of icons for this content
*/
void setIcons(QList icons);
/**
Get all videos for this content.
*/
QList videos();
/**
* Set list of videos.
* @param videos list of videos for this content
*/
void setVideos(QList videos);
/**
* Get all the tags for this content
* @since 5.50
*/
QStringList tags() const;
/**
* Set the list of tags
* @param tags list of tags for this content
* @since 5.50
*/
void setTags(const QStringList &tags);
/**
* Add an attribute that is not included in the basis set of attributes exposed by the Content class.
* If the attribute already exists it gets overwritten.
* @param key the key of the attribute
* @param value the value of the attribute
*/
void addAttribute(const QString &key, const QString &value);
/**
* Get an attribute that is not included in the basis set of attributes exposed by the Content class.
* @param key the key of the attribute
* @return the value of the attribute with the specified key, or an empty string, if the key has not been found
*/
QString attribute(const QString &key) const;
/**
* Get all attributes that are not included in the basis set of attributes exposed by the Content class.
* @return the attribute mappings
*/
QMap attributes() const;
/**
* Checks whether this Content has an id
* @return @c true if an id has been set, @c false otherwise
*/
bool isValid() const;
private:
class Private;
QSharedDataPointer d;
};
}
#endif
diff --git a/src/contentparser.cpp b/src/contentparser.cpp
index fa31da3..c0d81f7 100644
--- a/src/contentparser.cpp
+++ b/src/contentparser.cpp
@@ -1,104 +1,89 @@
/*
This file is part of KDE.
- Copyright (c) 2008 Cornelius Schumacher
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see .
+ SPDX-FileCopyrightText: 2008 Cornelius Schumacher
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
#include "contentparser.h"
#include
#include
using namespace Attica;
Content Content::Parser::parseXml(QXmlStreamReader &xml)
{
Content content;
while (!xml.atEnd()) {
xml.readNext();
if (xml.isStartElement()) {
if (xml.name() == QLatin1String("id")) {
content.setId(xml.readElementText());
} else if (xml.name() == QLatin1String("name")) {
content.setName(xml.readElementText());
} else if (xml.name() == QLatin1String("score")) {
content.setRating(xml.readElementText().toInt());
} else if (xml.name() == QLatin1String("downloads")) {
content.setDownloads(xml.readElementText().toInt());
} else if (xml.name() == QLatin1String("comments")) {
content.setNumberOfComments(xml.readElementText().toInt());
} else if (xml.name() == QLatin1String("created")) {
// Qt doesn't accept +-Timezone modifiers, truncate if the string contains them
QString dateString = xml.readElementText().left(19);
content.setCreated(QDateTime::fromString(dateString, Qt::ISODate));
} else if (xml.name() == QLatin1String("changed")) {
// Qt doesn't accept +-Timezone modifiers, truncate if the string contains them
QString dateString = xml.readElementText().left(19);
content.setUpdated(QDateTime::fromString(dateString, Qt::ISODate));
} else if (xml.name() == QLatin1String("icon")) {
Icon icon;
icon.setUrl(QUrl(xml.readElementText()));
const QXmlStreamAttributes attributes = xml.attributes();
const QStringRef width = attributes.value(QLatin1String("width"));
const QStringRef height = attributes.value(QLatin1String("height"));
if (!width.isEmpty()) {
icon.setWidth(width.toInt());
}
if (!height.isEmpty()) {
icon.setHeight(height.toInt());
}
// append the icon to the current list of icons
QList icons;
icons = content.icons();
icons.append(icon);
content.setIcons(icons);
} else if (xml.name() == QLatin1String("video")) {
QUrl video(xml.readElementText());
// append the video to the current list of videos
QList videos;
videos = content.videos();
videos.append(video);
content.setVideos(videos);
} else if (xml.name() == QLatin1String("tags")) {
content.setTags(xml.readElementText().split(QLatin1Char(',')));
} else {
content.addAttribute(xml.name().toString(), xml.readElementText());
}
}
if (xml.isEndElement() && xml.name() == QLatin1String("content")) {
break;
}
}
// in case the server only sets creation date, use that as updated also
if (content.updated().isNull()) {
content.setUpdated(content.created());
}
return content;
}
QStringList Content::Parser::xmlElement() const
{
return QStringList(QStringLiteral("content"));
}
diff --git a/src/contentparser.h b/src/contentparser.h
index eee0592..e633a09 100644
--- a/src/contentparser.h
+++ b/src/contentparser.h
@@ -1,42 +1,27 @@
/*
This file is part of KDE.
- Copyright (c) 2008 Cornelius Schumacher
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) version 3, or any
- later version accepted by the membership of KDE e.V. (or its
- successor approved by the membership of KDE e.V.), which shall
- act as a proxy defined in Section 6 of version 3 of the license.
-
- This library 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
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library. If not, see