diff --git a/LICENSES/LGPL-2.1-only.txt b/LICENSES/LGPL-2.1-only.txt
new file mode 100644
index 000000000..130dffb31
--- /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 000000000..bd405afbe
--- /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 000000000..232b3c5da
--- /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/archlinux/PKGBUILD b/archlinux/PKGBUILD
index 42e0dfcc9..af446f913 100644
--- a/archlinux/PKGBUILD
+++ b/archlinux/PKGBUILD
@@ -41,6 +41,7 @@ makedepends=('git'
'ninja'
'extra-cmake-modules'
'wayland-protocols'
+ 'libnm'
)
conflicts=('dde-shell')
provides=('dde-shell')
diff --git a/debian/control b/debian/control
index 3e6660478..33040c575 100644
--- a/debian/control
+++ b/debian/control
@@ -43,6 +43,7 @@ Build-Depends:
libxres-dev,
libxtst-dev,
libdframeworkdbus-dev,
+ libnm-dev (>= 1.4.0~),
Standards-Version: 3.9.8
Homepage: http://www.deepin.org
diff --git a/debian/dde-shell.install b/debian/dde-shell.install
index 3d19ddedb..17a122b62 100644
--- a/debian/dde-shell.install
+++ b/debian/dde-shell.install
@@ -10,6 +10,8 @@ usr/lib/*/dde-shell/org.deepin.ds.notification*
usr/share/dde-shell/org.deepin.ds.notification*/
usr/lib/*/dde-shell/org.deepin.ds.dde-appearance*
usr/share/dde-shell/org.deepin.ds.dde-appearance*/
+usr/lib/*/dde-shell/org.deepin.ds.dde-am*
+usr/share/dde-shell/org.deepin.ds.dde-am*/
usr/libexec/dockplugin-loader
usr/lib/*/qt5/plugins/wayland-shell-integration
usr/lib/*/libdde-dockplugin-interface.so.*
@@ -18,3 +20,4 @@ usr/lib/dde-dock/tmp/plugins
usr/lib/dde-dock/tmp/plugins/quick-trays
usr/share/dde-dock/tmp/translations
usr/share/dde-shell/*/translations
+usr/share/dock-network-plugin/tmp/translations
diff --git a/panels/dock/tray/CMakeLists.txt b/panels/dock/tray/CMakeLists.txt
index 660c789df..ceac788a5 100644
--- a/panels/dock/tray/CMakeLists.txt
+++ b/panels/dock/tray/CMakeLists.txt
@@ -74,28 +74,6 @@ endfunction(generation_dbus_interface)
file(GLOB INTERFACES "interfaces/*.h")
add_definitions(-DCVERSION="${VERSION}")
-#因为单元测试需要直接测试源代码,而主程序代码中include的单元使用了相对路径
-#单元测试的CMakeLists和主程序的CMakeLists路径不同,编译单元测试时会提示找不到文件
-#因此设置搜索路径
-include_directories(
- frame/accessible
- frame/controller
- frame/dbus
- frame/dbus/sni
- frame/display
- frame/item
- frame/item/components
- frame/item/resources
- frame/model
- frame/util
- frame/window
- frame/window/components
- frame/window/tray
- frame/window/tray/widgets
- frame/xcb
- ../widgets
- ../interfaces
- )
aux_source_directory(frame/accessible ACCESSIBLE)
aux_source_directory(frame/controller CONTROLLER)
aux_source_directory(frame/dbus DBUS)
@@ -129,9 +107,34 @@ file(GLOB SRC_PATH
${XCB}
)
+add_subdirectory("networkmanager-qt")
add_subdirectory("frame")
add_subdirectory("plugins")
add_subdirectory("libdbusmenu-qt")
+
+#因为单元测试需要直接测试源代码,而主程序代码中include的单元使用了相对路径
+#单元测试的CMakeLists和主程序的CMakeLists路径不同,编译单元测试时会提示找不到文件
+#因此设置搜索路径
+# include_directories(
+# frame/accessible
+# frame/controller
+# frame/dbus
+# frame/dbus/sni
+# frame/display
+# frame/item
+# frame/item/components
+# frame/item/resources
+# frame/model
+# frame/util
+# frame/window
+# frame/window/components
+# frame/window/tray
+# frame/window/tray/widgets
+# frame/xcb
+# ../widgets
+# ../interfaces
+# )
+
## qm files
file(GLOB QM_FILES "translations/*.qm")
install(FILES ${QM_FILES}
diff --git a/panels/dock/tray/frame/CMakeLists.txt b/panels/dock/tray/frame/CMakeLists.txt
index 8f18c24d9..dd676e37d 100644
--- a/panels/dock/tray/frame/CMakeLists.txt
+++ b/panels/dock/tray/frame/CMakeLists.txt
@@ -53,6 +53,7 @@ target_include_directories(${BIN_NAME} PUBLIC
accessible
controller
dbus
+ dbus/sni
display
item
item/components
diff --git a/panels/dock/tray/networkmanager-qt/CMakeLists.txt b/panels/dock/tray/networkmanager-qt/CMakeLists.txt
new file mode 100644
index 000000000..a76256e2c
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/CMakeLists.txt
@@ -0,0 +1,101 @@
+cmake_minimum_required(VERSION 3.16)
+
+set(KF_VERSION "5.103.0") # handled by release scripts
+project(NetworkManagerQt VERSION ${KF_VERSION})
+
+include(FeatureSummary)
+find_package(ECM 5.103.0 NO_MODULE)
+set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://commits.kde.org/extra-cmake-modules")
+feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES)
+
+
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${ECM_MODULE_PATH})
+
+find_package(PkgConfig)
+pkg_search_module(NetworkManager REQUIRED IMPORTED_TARGET libnm>=1.4.0)
+pkg_search_module(Gio REQUIRED IMPORTED_TARGET gio-2.0)
+
+include(KDEInstallDirs)
+include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE)
+include(KDECMakeSettings)
+
+include(KDEGitCommitHooks)
+include(ECMDeprecationSettings)
+
+set(REQUIRED_QT_VERSION 6.6.1)
+set(QT_MAJOR_VERSION 6)
+find_package(Qt${QT_MAJOR_VERSION} ${REQUIRED_QT_VERSION} REQUIRED Core DBus Network)
+
+remove_definitions(-DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_FROM_BYTEARRAY)
+
+
+include(GenerateExportHeader)
+
+include(ECMSetupVersion)
+include(ECMGenerateHeaders)
+include(ECMAddQch)
+include(ECMQtDeclareLoggingCategory)
+
+set(BUILD_TESTING OFF)
+option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" OFF)
+add_feature_info(QCH ${BUILD_QCH} "API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)")
+
+ecm_setup_version(PROJECT VARIABLE_PREFIX NETWORKMANAGERQT
+ VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/networkmanagerqt_version.h"
+ PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF5NetworkManagerQtConfigVersion.cmake"
+ SOVERSION 6)
+ecm_set_disabled_deprecation_versions(
+ QT 6.6.1
+)
+
+# Enable unit testing
+if (BUILD_TESTING)
+ add_subdirectory(src/fakenetwork)
+ add_subdirectory(autotests)
+endif ()
+
+add_subdirectory(src)
+################## examples ################################
+option(BUILD_EXAMPLES "Build example applications" FALSE)
+if (BUILD_EXAMPLES)
+ add_subdirectory(examples)
+endif(BUILD_EXAMPLES)
+
+# create a Config.cmake and a ConfigVersion.cmake file and install them
+set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF5NetworkManagerQt")
+
+if (BUILD_QCH)
+ ecm_install_qch_export(
+ TARGETS KF5NetworkManagerQt_QCH
+ FILE KF5NetworkManagerQtQchTargets.cmake
+ DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
+ COMPONENT Devel
+ )
+ set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/KF5NetworkManagerQtQchTargets.cmake\")")
+endif()
+
+include(CMakePackageConfigHelpers)
+
+configure_package_config_file(
+ "${CMAKE_CURRENT_SOURCE_DIR}/KF5NetworkManagerQtConfig.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/KF5NetworkManagerQtConfig.cmake"
+ INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
+)
+
+# install(FILES
+# "${CMAKE_CURRENT_BINARY_DIR}/KF5NetworkManagerQtConfig.cmake"
+# "${CMAKE_CURRENT_BINARY_DIR}/KF5NetworkManagerQtConfigVersion.cmake"
+# DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
+# COMPONENT Devel
+# )
+
+# install(EXPORT KF5NetworkManagerQtTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE KF5NetworkManagerQtTargets.cmake NAMESPACE KF5:: )
+
+# install(FILES
+# ${CMAKE_CURRENT_BINARY_DIR}/networkmanagerqt_version.h
+# DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/NetworkManagerQt COMPONENT Devel
+# )
+
+feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
+
+kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)
diff --git a/panels/dock/tray/networkmanager-qt/KF5NetworkManagerQtConfig.cmake.in b/panels/dock/tray/networkmanager-qt/KF5NetworkManagerQtConfig.cmake.in
new file mode 100644
index 000000000..15284bd75
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/KF5NetworkManagerQtConfig.cmake.in
@@ -0,0 +1,12 @@
+@PACKAGE_INIT@
+
+include(CMakeFindDependencyMacro)
+find_dependency(Qt@QT_MAJOR_VERSION@Core @REQUIRED_QT_VERSION@)
+find_dependency(Qt@QT_MAJOR_VERSION@DBus @REQUIRED_QT_VERSION@)
+
+find_package(PkgConfig)
+pkg_search_module(NetworkManager REQUIRED IMPORTED_TARGET libnm>=1.4.0)
+pkg_search_module(Gio REQUIRED IMPORTED_TARGET gio-2.0)
+
+include("${CMAKE_CURRENT_LIST_DIR}/KF5NetworkManagerQtTargets.cmake")
+@PACKAGE_INCLUDE_QCHTARGETS@
diff --git a/panels/dock/tray/networkmanager-qt/README.md b/panels/dock/tray/networkmanager-qt/README.md
new file mode 100644
index 000000000..b75076ded
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/README.md
@@ -0,0 +1,11 @@
+# NetworkManagerQt
+
+Qt wrapper for NetworkManager DBus API.
+
+## Introduction
+
+NetworkManagerQt provides access to all NetworkManager features
+exposed on DBus. It allows you to manage your connections and control
+your network devices and also provides a library for parsing connection
+settings which are used in DBus communication.
+
diff --git a/panels/dock/tray/networkmanager-qt/TODO b/panels/dock/tray/networkmanager-qt/TODO
new file mode 100644
index 000000000..e9b167707
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/TODO
@@ -0,0 +1,92 @@
+== NetworkManager 1.0/1.2/1.4/1.6/1.8 ==
+
+* New interfaces:
+ - org.freedesktop.NetworkManager.DnsManager
+ - org.freedesktop.NetworkManager.Device.Vxlan
+ - org.freedesktop.NetworkManager.Device.MacSec
+ - org.freedesktop.NetworkManager.Device.Dummy
+
+* New properties/slots/signals:
+ - org.freedesktop.NetworkManager
+ -------------------------------
+ - Methods:
+ - GetAllDevices()
+ - Reload()
+ - CheckpointCreate()
+ - CheckpointDestroy()
+ - CheckpointRollback()
+ - Properties:
+ - GlobalDnsConfiguration
+
+ - org.freedesktop.NetworkManager.Device
+ -------------------------------------
+ - Methods:
+ - Reapply()
+ - GetAppliedConnection()
+ - Properties:
+ - LldpNeighbors
+ - Real
+
+ - org.freedesktop.NetworkManager.IP4Config
+ ----------------------------------------
+ - Properties:
+ - DnsPriority
+ - WinServers
+
+ - org.freedesktop.NetworkManager.IP6Config
+ ----------------------------------------
+ - Properties:
+ - DnsPriority
+
+* New settings and settings properties:
+ - dcb setting
+ -----------------
+ - completely
+
+ - dummy setting
+ -----------------
+ - completely
+
+ - ip-tunnel setting
+ -----------------
+ - completely
+
+ - macsec setting
+ -----------------
+ - completely
+
+ - proxy setting
+ -----------------
+ - completely
+
+ - team-port setting
+ -----------------
+ - completely
+
+ - user setting
+ -----------------
+ - completely
+
+ - vxlan setting
+ -----------------
+ - completely
+
+ - ipv4 setting
+ -----------------
+ - address-data
+ - dad-timeout
+ - dhcp-fqdn
+ - dns-options
+ - dns-priority
+ - route-data
+
+ - ipv6 setting
+ -----------------
+ - addr-gen-mode
+ - address-data
+ - dad-timeout
+ - dhcp-timeout
+ - dhcp-fqdn
+ - dns-options
+ - route-data
+ - token
diff --git a/panels/dock/tray/networkmanager-qt/metainfo.yaml b/panels/dock/tray/networkmanager-qt/metainfo.yaml
new file mode 100644
index 000000000..911b05705
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/metainfo.yaml
@@ -0,0 +1,20 @@
+maintainer:
+ - grulich
+ - lvsouza
+ - lukas
+description: Qt wrapper for NetworkManager API
+tier: 1
+type: integration
+platforms:
+ - name: Linux
+ note: Functional only with running NetworkManager
+portingAid: false
+deprecated: false
+release: true
+libraries:
+ - cmake: "KF5NetworkManagerQt"
+cmakename: KF5NetworkManagerQt
+
+public_lib: true
+group: Frameworks
+subgroup: Tier 1
diff --git a/panels/dock/tray/networkmanager-qt/src/CMakeLists.txt b/panels/dock/tray/networkmanager-qt/src/CMakeLists.txt
new file mode 100644
index 000000000..f2983b5b1
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/CMakeLists.txt
@@ -0,0 +1,299 @@
+# add_subdirectory(dbus)
+
+include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}/dbus
+ ${CMAKE_CURRENT_SOURCE_DIR}/settings
+)
+
+set(NetworkManagerQt_PART_SRCS
+ device.cpp
+ accesspoint.cpp
+ activeconnection.cpp
+ adsldevice.cpp
+ bluetoothdevice.cpp
+ bonddevice.cpp
+ bridgedevice.cpp
+ connection.cpp
+ dhcp4config.cpp
+ dhcp6config.cpp
+ devicestatistics.cpp
+ dnsconfiguration.cpp
+ dnsdomain.cpp
+ infinibanddevice.cpp
+ ipaddress.cpp
+ iproute.cpp
+ ipconfig.cpp
+ manager.cpp
+ modemdevice.cpp
+ olpcmeshdevice.cpp
+ secretagent.cpp
+ settings.cpp
+ utils.cpp
+ vlandevice.cpp
+ vpnconnection.cpp
+ vpnplugin.cpp
+ wimaxdevice.cpp
+ wimaxnsp.cpp
+ wireddevice.cpp
+ wirelessdevice.cpp
+ wirelessnetwork.cpp
+ generictypes.cpp
+ genericdevice.cpp
+ gredevice.cpp
+ iptunneldevice.cpp
+ macvlandevice.cpp
+ teamdevice.cpp
+ tundevice.cpp
+ vethdevice.cpp
+ wimaxdevice.cpp
+ wimaxnsp.cpp
+ wireguarddevice.cpp
+)
+
+set(NetworkManagerQt_SETTINGS_SRCS
+ settings/adslsetting.cpp
+ settings/bluetoothsetting.cpp
+ settings/bondsetting.cpp
+ settings/bridgesetting.cpp
+ settings/bridgeportsetting.cpp
+ settings/cdmasetting.cpp
+ settings/connectionsettings.cpp
+ settings/dcbsetting.cpp
+ settings/gsmsetting.cpp
+ settings/iptunnelsetting.cpp
+ settings/ipv4setting.cpp
+ settings/ipv6setting.cpp
+ settings/infinibandsetting.cpp
+ settings/macsecsetting.cpp
+ settings/matchsetting.cpp
+ settings/olpcmeshsetting.cpp
+ settings/ovsbridgesetting.cpp
+ settings/ovsinterfacesetting.cpp
+ settings/ovspatchsetting.cpp
+ settings/ovsportsetting.cpp
+ settings/pppsetting.cpp
+ settings/pppoesetting.cpp
+ settings/proxysetting.cpp
+ settings/setting.cpp
+ settings/serialsetting.cpp
+ settings/security8021xsetting.cpp
+ settings/teamportsetting.cpp
+ #settings/template.cpp
+ settings/vlansetting.cpp
+ settings/vpnsetting.cpp
+ settings/wimaxsetting.cpp
+ settings/wiredsetting.cpp
+ settings/wirelesssetting.cpp
+ settings/wirelesssecuritysetting.cpp
+ settings/teamsetting.cpp
+ settings/tcsetting.cpp
+ settings/genericsetting.cpp
+ settings/tunsetting.cpp
+ settings/usersetting.cpp
+ settings/vxlansetting.cpp
+ settings/wireguardsetting.cpp
+)
+
+set(DBUS_INTERFACE_SRCS
+ dbus/accesspointinterface.cpp
+ dbus/activeconnectioninterface.cpp
+ dbus/adsldeviceinterface.cpp
+ dbus/agentmanagerinterface.cpp
+ dbus/bluetoothdeviceinterface.cpp
+ dbus/bonddeviceinterface.cpp
+ dbus/bridgedeviceinterface.cpp
+ dbus/connectioninterface.cpp
+ dbus/deviceinterface.cpp
+ dbus/devicestatisticsinterface.cpp
+ dbus/dhcp4configinterface.cpp
+ dbus/dhcp6configinterface.cpp
+ dbus/dnsmanagerinterface.cpp
+ dbus/genericdeviceinterface.cpp
+ dbus/gredeviceinterface.cpp
+ dbus/checkpointinterface.cpp
+ dbus/infinibanddeviceinterface.cpp
+ dbus/iptunneldeviceinterface.cpp
+ dbus/ip4configinterface.cpp
+ dbus/ip6configinterface.cpp
+ dbus/macsecdeviceinterface.cpp
+ dbus/macvlandeviceinterface.cpp
+ dbus/modemdeviceinterface.cpp
+ dbus/networkmanagerinterface.cpp
+ dbus/olpcmeshdeviceinterface.cpp
+ dbus/pppinterface.cpp
+ dbus/secretagentadaptor.cpp
+ dbus/settingsinterface.cpp
+ dbus/teamdeviceinterface.cpp
+ dbus/tundeviceinterface.cpp
+ dbus/vethdeviceinterface.cpp
+ dbus/vlandeviceinterface.cpp
+ dbus/vpnconnectioninterface.cpp
+ dbus/vpnplugininterface.cpp
+ dbus/vxlandeviceinterface.cpp
+ dbus/wimaxdeviceinterface.cpp
+ dbus/wimaxnspinterface.cpp
+ dbus/wireddeviceinterface.cpp
+ dbus/wirelessdeviceinterface.cpp
+ dbus/wireguarddeviceinterface.cpp
+)
+
+ecm_qt_export_logging_category(
+ IDENTIFIER NMQT
+ CATEGORY_NAME kf.networkmanagerqt
+ OLD_CATEGORY_NAMES networkmanager-qt
+ DEFAULT_SEVERITY Warning
+ DESCRIPTION "NetworkManagerQt"
+ EXPORT NETWORMANAGERQT
+)
+
+add_library(KF5NetworkManagerQt SHARED ${NetworkManagerQt_PART_SRCS} ${NetworkManagerQt_SETTINGS_SRCS} ${DBUS_INTERFACE_SRCS})
+generate_export_header(KF5NetworkManagerQt EXPORT_FILE_NAME ${NetworkManagerQt_BINARY_DIR}/networkmanagerqt/networkmanagerqt_export.h BASE_NAME NetworkManagerQt)
+add_library(KF5::NetworkManagerQt ALIAS KF5NetworkManagerQt)
+
+target_include_directories(KF5NetworkManagerQt INTERFACE "$")
+# for examples to build
+target_include_directories(KF5NetworkManagerQt PUBLIC "$")
+
+target_link_libraries(KF5NetworkManagerQt PUBLIC Qt${QT_MAJOR_VERSION}::Core Qt${QT_MAJOR_VERSION}::Network Qt${QT_MAJOR_VERSION}::DBus PkgConfig::NetworkManager PkgConfig::Gio)
+
+set_target_properties(KF5NetworkManagerQt PROPERTIES VERSION ${NETWORKMANAGERQT_VERSION}
+ SOVERSION ${NETWORKMANAGERQT_SOVERSION}
+ EXPORT_NAME NetworkManagerQt
+)
+
+########### static lib for tests ###############
+add_library(KF5NetworkManagerQt_static STATIC ${NetworkManagerQt_PART_SRCS} ${NetworkManagerQt_SETTINGS_SRCS} ${DBUS_INTERFACE_SRCS})
+set_target_properties(KF5NetworkManagerQt_static PROPERTIES COMPILE_FLAGS -DNMQT_STATIC=1)
+set_target_properties(KF5NetworkManagerQt_static PROPERTIES POSITION_INDEPENDENT_CODE ON)
+
+target_link_libraries(KF5NetworkManagerQt_static PUBLIC Qt${QT_MAJOR_VERSION}::Core Qt${QT_MAJOR_VERSION}::Network Qt${QT_MAJOR_VERSION}::DBus PkgConfig::NetworkManager PkgConfig::Gio)
+target_include_directories(KF5NetworkManagerQt_static PUBLIC "$")
+
+ecm_generate_headers(NetworkManagerQt_CamelCase_HEADERS
+ HEADER_NAMES
+ AccessPoint
+ ActiveConnection
+ AdslDevice
+ BluetoothDevice
+ BondDevice
+ BridgeDevice
+ Connection
+ Device
+ DeviceStatistics
+ Dhcp4Config
+ Dhcp6Config
+ DnsConfiguration
+ DnsDomain
+ GenericDevice
+ GenericTypes
+ GreDevice
+ InfinibandDevice
+ IpAddress
+ IpConfig
+ IpRoute
+ IpTunnelDevice
+ MacVlanDevice
+ Manager
+ ModemDevice
+ OlpcMeshDevice
+ SecretAgent
+ Settings
+ TeamDevice
+ TunDevice
+ Utils
+ VethDevice
+ VlanDevice
+ VpnConnection
+ VpnPlugin
+ WimaxDevice
+ WimaxNsp
+ WiredDevice
+ WirelessDevice
+ WirelessNetwork
+ WireGuardDevice
+
+ REQUIRED_HEADERS NetworkManagerQt_HEADERS
+ PREFIX NetworkManagerQt
+)
+
+ecm_generate_headers(NetworkManagerQt_SETTINGS_CamelCase_HEADERS
+ HEADER_NAMES
+ AdslSetting
+ BluetoothSetting
+ BondSetting
+ BridgeSetting
+ BridgePortSetting
+ CdmaSetting
+ ConnectionSettings
+ GsmSetting
+ GenericSetting
+ InfinibandSetting
+ IpTunnelSetting
+ Ipv4Setting
+ Ipv6Setting
+ OlpcMeshSetting
+ PppoeSetting
+ PppSetting
+ Security8021xSetting
+ SerialSetting
+ Setting
+ TeamSetting
+ TunSetting
+ VlanSetting
+ VpnSetting
+ WimaxSetting
+ WiredSetting
+ WireguardSetting
+ WirelessSecuritySetting
+ WirelessSetting
+
+ RELATIVE settings
+ REQUIRED_HEADERS NetworkManagerQt_SETTINGS_HEADERS
+ PREFIX NetworkManagerQt
+)
+
+# install(TARGETS KF5NetworkManagerQt EXPORT KF5NetworkManagerQtTargets ${KF_INSTALL_TARGETS_DEFAULT_ARGS})
+
+# install(FILES
+# ${NetworkManagerQt_CamelCase_HEADERS}
+# ${NetworkManagerQt_SETTINGS_CamelCase_HEADERS}
+# DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/NetworkManagerQt/NetworkManagerQt COMPONENT Devel
+# )
+
+# install(FILES
+# ${NetworkManagerQt_BINARY_DIR}/networkmanagerqt/networkmanagerqt_export.h
+# ${NetworkManagerQt_HEADERS}
+# ${NetworkManagerQt_SETTINGS_HEADERS}
+# DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/NetworkManagerQt/networkmanagerqt COMPONENT Devel
+# )
+
+# ecm_qt_install_logging_categories(
+# EXPORT NETWORMANAGERQT
+# FILE networkmanagerqt.categories
+# DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}
+# )
+
+if(BUILD_QCH)
+ ecm_add_qch(
+ KF5NetworkManagerQt_QCH
+ NAME NetworkManagerQt
+ BASE_NAME KF5NetworkManagerQt
+ VERSION ${KF_VERSION}
+ ORG_DOMAIN org.kde
+ SOURCES # using only public headers, to cover only public API
+ ${NetworkManagerQt_HEADERS}
+ ${NetworkManagerQt_SETTINGS_HEADERS}
+ MD_MAINPAGE "${CMAKE_SOURCE_DIR}/README.md"
+ LINK_QCHS
+ Qt5Core_QCH
+ Qt5Network_QCH
+ Qt5DBus_QCH
+ BLANK_MACROS
+ NETWORKMANAGERQT_EXPORT
+ NETWORKMANAGERQT_DEPRECATED
+ NETWORKMANAGERQT_DEPRECATED_EXPORT
+ TAGFILE_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR}
+ QCH_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR}
+ COMPONENT Devel
+ )
+endif()
diff --git a/panels/dock/tray/networkmanager-qt/src/accesspoint.cpp b/panels/dock/tray/networkmanager-qt/src/accesspoint.cpp
new file mode 100644
index 000000000..c50799761
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/accesspoint.cpp
@@ -0,0 +1,231 @@
+/*
+ SPDX-FileCopyrightText: 2008 Will Stephenson
+ SPDX-FileCopyrightText: 2013 Daniel Nicoletti
+ SPDX-FileCopyrightText: 2013 Jan Grulich
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
+*/
+
+#include "accesspoint_p.h"
+#include "manager_p.h"
+#include "wirelessdevice.h"
+
+#include "nmdebug.h"
+
+NetworkManager::AccessPointPrivate::AccessPointPrivate(const QString &path, AccessPoint *q)
+#ifdef NMQT_STATIC
+ : iface(NetworkManagerPrivate::DBUS_SERVICE, path, QDBusConnection::sessionBus())
+#else
+ : iface(NetworkManagerPrivate::DBUS_SERVICE, path, QDBusConnection::systemBus())
+#endif
+ , capabilities(AccessPoint::None)
+ , wpaFlags()
+ , rsnFlags()
+ , frequency(0)
+ , maxBitRate(0)
+ , mode(AccessPoint::Unknown)
+ , signalStrength(0)
+ , lastSeen(-1)
+ , q_ptr(q)
+{
+ uni = path;
+}
+
+NetworkManager::AccessPoint::Capabilities NetworkManager::AccessPointPrivate::convertCapabilities(int caps)
+{
+ NetworkManager::AccessPoint::Capabilities capFlags;
+ if (caps & NM_802_11_AP_FLAGS_PRIVACY) {
+ capFlags |= AccessPoint::Privacy;
+ }
+ if (caps & NM_802_11_AP_FLAGS_WPS) {
+ capFlags |= AccessPoint::Wps;
+ }
+ if (caps & NM_802_11_AP_FLAGS_WPS_PBC) {
+ capFlags |= AccessPoint::WpsPbc;
+ }
+ if (caps & NM_802_11_AP_FLAGS_WPS_PIN) {
+ capFlags |= AccessPoint::WpsPin;
+ }
+
+ return capFlags;
+}
+
+NetworkManager::AccessPoint::WpaFlags NetworkManager::AccessPointPrivate::convertWpaFlags(uint theirFlags)
+{
+ return (AccessPoint::WpaFlags)theirFlags;
+}
+
+NetworkManager::AccessPoint::AccessPoint(const QString &path, QObject *parent)
+ : QObject(parent)
+ , d_ptr(new AccessPointPrivate(path, this))
+{
+ Q_D(AccessPoint);
+
+ QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE,
+ d->uni,
+ NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
+ QLatin1String("PropertiesChanged"),
+ d,
+ SLOT(dbusPropertiesChanged(QString, QVariantMap, QStringList)));
+
+ // Get all AccessPoint's properties at once
+ QVariantMap initialProperties = NetworkManagerPrivate::retrieveInitialProperties(d->iface.staticInterfaceName(), path);
+ if (!initialProperties.isEmpty()) {
+ d->propertiesChanged(initialProperties);
+ }
+}
+
+NetworkManager::AccessPoint::~AccessPoint()
+{
+ Q_D(AccessPoint);
+ delete d;
+}
+
+QString NetworkManager::AccessPoint::uni() const
+{
+ Q_D(const AccessPoint);
+ return d->uni;
+}
+
+QString NetworkManager::AccessPoint::hardwareAddress() const
+{
+ Q_D(const AccessPoint);
+ return d->hardwareAddress;
+}
+
+NetworkManager::AccessPoint::Capabilities NetworkManager::AccessPoint::capabilities() const
+{
+ Q_D(const AccessPoint);
+ return d->capabilities;
+}
+
+NetworkManager::AccessPoint::WpaFlags NetworkManager::AccessPoint::wpaFlags() const
+{
+ Q_D(const AccessPoint);
+ return d->wpaFlags;
+}
+
+NetworkManager::AccessPoint::WpaFlags NetworkManager::AccessPoint::rsnFlags() const
+{
+ Q_D(const AccessPoint);
+ return d->rsnFlags;
+}
+
+QString NetworkManager::AccessPoint::ssid() const
+{
+ Q_D(const AccessPoint);
+ return d->ssid;
+}
+
+QByteArray NetworkManager::AccessPoint::rawSsid() const
+{
+ Q_D(const AccessPoint);
+ return d->rawSsid;
+}
+
+uint NetworkManager::AccessPoint::frequency() const
+{
+ Q_D(const AccessPoint);
+ return d->frequency;
+}
+
+uint NetworkManager::AccessPoint::maxBitRate() const
+{
+ Q_D(const AccessPoint);
+ return d->maxBitRate;
+}
+
+NetworkManager::AccessPoint::OperationMode NetworkManager::AccessPoint::mode() const
+{
+ Q_D(const AccessPoint);
+ return d->mode;
+}
+
+int NetworkManager::AccessPoint::signalStrength() const
+{
+ Q_D(const AccessPoint);
+ return d->signalStrength;
+}
+
+int NetworkManager::AccessPoint::lastSeen() const
+{
+ Q_D(const AccessPoint);
+ return d->lastSeen;
+}
+
+NetworkManager::AccessPoint::OperationMode NetworkManager::AccessPoint::convertOperationMode(uint mode)
+{
+ NetworkManager::AccessPoint::OperationMode ourMode = NetworkManager::AccessPoint::Unknown;
+ switch (mode) {
+ case NM_802_11_MODE_UNKNOWN:
+ ourMode = NetworkManager::AccessPoint::Unknown;
+ break;
+ case NM_802_11_MODE_ADHOC:
+ ourMode = NetworkManager::AccessPoint::Adhoc;
+ break;
+ case NM_802_11_MODE_INFRA:
+ ourMode = NetworkManager::AccessPoint::Infra;
+ break;
+ case NM_802_11_MODE_AP:
+ ourMode = NetworkManager::AccessPoint::ApMode;
+ break;
+ default:
+ qCDebug(NMQT) << Q_FUNC_INFO << "Unhandled mode" << mode;
+ }
+ return ourMode;
+}
+
+void NetworkManager::AccessPointPrivate::dbusPropertiesChanged(const QString &interfaceName,
+ const QVariantMap &properties,
+ const QStringList &invalidatedProperties)
+{
+ Q_UNUSED(invalidatedProperties);
+ if (interfaceName == QLatin1String("org.freedesktop.NetworkManager.AccessPoint")) {
+ propertiesChanged(properties);
+ }
+}
+
+void NetworkManager::AccessPointPrivate::propertiesChanged(const QVariantMap &properties)
+{
+ Q_Q(AccessPoint);
+
+ // qCDebug(NMQT) << Q_FUNC_INFO << properties;
+
+ QVariantMap::const_iterator it = properties.constBegin();
+ while (it != properties.constEnd()) {
+ const QString property = it.key();
+ if (property == QLatin1String("Flags")) {
+ capabilities = convertCapabilities(it->toUInt());
+ Q_EMIT q->capabilitiesChanged(capabilities);
+ } else if (property == QLatin1String("WpaFlags")) {
+ wpaFlags = convertWpaFlags(it->toUInt());
+ Q_EMIT q->wpaFlagsChanged(wpaFlags);
+ } else if (property == QLatin1String("RsnFlags")) {
+ rsnFlags = convertWpaFlags(it->toUInt());
+ Q_EMIT q->rsnFlagsChanged(rsnFlags);
+ } else if (property == QLatin1String("Ssid")) {
+ rawSsid = it->toByteArray();
+ ssid = QString::fromUtf8(rawSsid);
+ Q_EMIT q->ssidChanged(ssid);
+ } else if (property == QLatin1String("Frequency")) {
+ frequency = it->toUInt();
+ Q_EMIT q->frequencyChanged(frequency);
+ } else if (property == QLatin1String("HwAddress")) {
+ hardwareAddress = it->toString();
+ } else if (property == QLatin1String("Mode")) {
+ mode = q->convertOperationMode(it->toUInt());
+ } else if (property == QLatin1String("MaxBitrate")) {
+ maxBitRate = it->toUInt();
+ Q_EMIT q->bitRateChanged(maxBitRate);
+ } else if (property == QLatin1String("Strength")) {
+ signalStrength = it->toInt();
+ Q_EMIT q->signalStrengthChanged(signalStrength);
+ } else if (property == QLatin1String("LastSeen")) {
+ lastSeen = it->toInt();
+ Q_EMIT q->lastSeenChanged(lastSeen);
+ } else {
+ qCDebug(NMQT) << Q_FUNC_INFO << "Unhandled property" << property;
+ }
+ ++it;
+ }
+}
diff --git a/panels/dock/tray/networkmanager-qt/src/accesspoint.h b/panels/dock/tray/networkmanager-qt/src/accesspoint.h
new file mode 100644
index 000000000..d61b458ba
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/accesspoint.h
@@ -0,0 +1,202 @@
+/*
+ SPDX-FileCopyrightText: 2008 Will Stephenson
+ SPDX-FileCopyrightText: 2011-2013 Lamarque V. Souza
+ SPDX-FileCopyrightText: 2013 Jan Grulich
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
+*/
+
+#ifndef NETWORKMANAGERQT_ACCESSPOINT_H
+#define NETWORKMANAGERQT_ACCESSPOINT_H
+
+#include
+
+#include
+
+#include
+#include
+#include
+
+namespace NetworkManager
+{
+class AccessPointPrivate;
+
+/**
+ * Represents an access point
+ */
+class NETWORKMANAGERQT_EXPORT AccessPoint : public QObject
+{
+ Q_OBJECT
+public:
+ typedef QSharedPointer Ptr;
+ typedef QList List;
+ /**
+ * The access point's current operating mode
+ */
+ enum OperationMode {
+ Unknown = 0, /**< not associated with a network */
+ Adhoc, /**< part of an adhoc network */
+ Infra, /**< a station in an infrastructure wireless network */
+ ApMode, /**< access point in an infrastructure network */
+ };
+ /**
+ * General capabilities of an access point
+ */
+ enum Capability {
+ None = 0x0, /**< Null capability - says nothing about the access point */
+ Privacy = 0x1, /**< Access point supports privacy measures */
+ Wps = 0x2, /**< Access point supports some WPS method */
+ WpsPbc = 0x4, /**< Access point supports push-button WPS */
+ WpsPin = 0x8, /**< Access point supports PIN-based WPS */
+ };
+ /**
+ * Flags describing the access point's capabilities according to WPA (Wifi Protected Access)
+ */
+ enum WpaFlag {
+ PairWep40 = 0x1,
+ PairWep104 = 0x2,
+ PairTkip = 0x4,
+ PairCcmp = 0x8,
+ GroupWep40 = 0x10,
+ GroupWep104 = 0x20,
+ GroupTkip = 0x40,
+ GroupCcmp = 0x80,
+ KeyMgmtPsk = 0x100,
+ KeyMgmt8021x = 0x200,
+ KeyMgmtSAE = 0x400,
+ KeyMgmtEapSuiteB192 = 0x2000,
+ };
+ Q_DECLARE_FLAGS(Capabilities, Capability)
+ Q_FLAG(Capabilities)
+ Q_DECLARE_FLAGS(WpaFlags, WpaFlag)
+ Q_FLAG(WpaFlags)
+ explicit AccessPoint(const QString &path, QObject *parent = nullptr);
+ ~AccessPoint() override;
+
+ /**
+ * @return path of the access point
+ */
+ QString uni() const;
+ /**
+ * @return capabilities of an access point
+ */
+ Capabilities capabilities() const;
+ /**
+ * @return flags describing the access point's capabilities according to WPA (Wifi Protected Access).
+ * @see WpaFlag
+ */
+ AccessPoint::WpaFlags wpaFlags() const;
+ /**
+ * @return Flags describing the access point's capabilities according to the RSN (Robust Secure Network) protocol.
+ * @see WpaFlag
+ */
+ AccessPoint::WpaFlags rsnFlags() const;
+ /**
+ * @return The Service Set Identifier identifying the access point.
+ */
+ QString ssid() const;
+ /**
+ * @return raw SSID, encoded as a byte array
+ */
+ QByteArray rawSsid() const;
+ /**
+ * @return The radio channel frequency in use by the access point, in MHz.
+ */
+ uint frequency() const;
+ /**
+ * @return The hardware address (BSSID) of the access point.
+ */
+ QString hardwareAddress() const;
+ /**
+ * @return The maximum bitrate this access point is capable of, in kilobits/second (Kb/s).
+ */
+ uint maxBitRate() const;
+ /**
+ * @return Describes the operating mode of the access point.
+ */
+ OperationMode mode() const;
+ /**
+ * @return The current signal quality of the access point, in percent.
+ */
+ int signalStrength() const;
+ /**
+ * @return The timestamp (in CLOCK_BOOTTIME seconds) for the last time the access point
+ * was found in scan results. A value of -1 means the access point has never been found in scan results.
+ * @since 5.14.0
+ */
+ int lastSeen() const;
+
+ /**
+ * Helper method to convert wire representation of operation @p mode to enum
+ */
+ static OperationMode convertOperationMode(uint mode);
+
+Q_SIGNALS:
+ /**
+ * This signal is emitted when the signal strength of this network has changed.
+ *
+ * @param strength the new signal strength value for this network
+ */
+ void signalStrengthChanged(int strength);
+
+ /**
+ * This signal is emitted when the bitrate of this network has changed.
+ *
+ * @param bitrate the new bitrate value for this network
+ */
+ void bitRateChanged(int bitrate);
+
+ /**
+ * This signal is emitted when the capabilities of this network have changed.
+ *
+ * @param caps the new capabilities
+ */
+ void capabilitiesChanged(AccessPoint::Capabilities caps);
+
+ /**
+ * This signal is emitted when the WPA flags in use by this access point change
+ *
+ * @param flags the new flags
+ */
+ void wpaFlagsChanged(AccessPoint::WpaFlags flags);
+
+ /**
+ * This signal is emitted when the RSN(WPA2) flags in use by this access point change
+ *
+ * @param flags the new flags
+ */
+ void rsnFlagsChanged(AccessPoint::WpaFlags flags);
+ /**
+ * This signal is emitted when the ssid of this Access Point changes
+ *
+ * @param ssid the new SSID
+ */
+ void ssidChanged(const QString &ssid);
+
+ /**
+ * This signal is emitted when the frequency used by this Access Point changes
+ *
+ * @param frequency the new frequency
+ */
+ void frequencyChanged(uint frequency);
+
+ /**
+ * This signal is emitted when the timestamp for the last time the access point was found
+ * in scan results changes
+ *
+ * @param lastSeen the timestamp for the last time the access point was found in scan results.
+ * @since 5.14.0
+ * @see lastSeen
+ */
+ void lastSeenChanged(int lastSeen);
+
+private:
+ Q_DECLARE_PRIVATE(AccessPoint)
+
+ AccessPointPrivate *const d_ptr;
+};
+
+Q_DECLARE_OPERATORS_FOR_FLAGS(AccessPoint::WpaFlags)
+
+}
+#endif
diff --git a/panels/dock/tray/networkmanager-qt/src/accesspoint_p.h b/panels/dock/tray/networkmanager-qt/src/accesspoint_p.h
new file mode 100644
index 000000000..edd3ba27e
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/accesspoint_p.h
@@ -0,0 +1,50 @@
+/*
+ SPDX-FileCopyrightText: 2008 Will Stephenson
+ SPDX-FileCopyrightText: 2013 Daniel Nicoletti
+ SPDX-FileCopyrightText: 2013-2014 Jan Grulich
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
+*/
+
+#ifndef NETWORKMANAGERQT_ACCESSPOINT_P_H
+#define NETWORKMANAGERQT_ACCESSPOINT_P_H
+
+#include "accesspoint.h"
+#include "dbus/accesspointinterface.h"
+
+namespace NetworkManager
+{
+class AccessPointPrivate : public QObject
+{
+ Q_OBJECT
+public:
+ AccessPointPrivate(const QString &path, AccessPoint *q);
+
+ OrgFreedesktopNetworkManagerAccessPointInterface iface;
+ QString uni;
+ AccessPoint::Capabilities capabilities;
+ AccessPoint::WpaFlags wpaFlags;
+ AccessPoint::WpaFlags rsnFlags;
+ QString ssid;
+ QByteArray rawSsid;
+ uint frequency;
+ QString hardwareAddress;
+ uint maxBitRate;
+ AccessPoint::OperationMode mode;
+ int signalStrength;
+
+ int lastSeen;
+
+ NetworkManager::AccessPoint::Capabilities convertCapabilities(int caps);
+ NetworkManager::AccessPoint::WpaFlags convertWpaFlags(uint theirFlags);
+
+ Q_DECLARE_PUBLIC(AccessPoint)
+ AccessPoint *q_ptr;
+private Q_SLOTS:
+ void dbusPropertiesChanged(const QString &interfaceName, const QVariantMap &properties, const QStringList &invalidatedProperties);
+ void propertiesChanged(const QVariantMap &properties);
+};
+
+} // namespace NetworkManager
+
+#endif // NETWORKMANAGERQT_ACCESSPOINT_P_H
diff --git a/panels/dock/tray/networkmanager-qt/src/activeconnection.cpp b/panels/dock/tray/networkmanager-qt/src/activeconnection.cpp
new file mode 100644
index 000000000..76431c554
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/activeconnection.cpp
@@ -0,0 +1,350 @@
+/*
+ SPDX-FileCopyrightText: 2011 Ilia Kats
+ SPDX-FileCopyrightText: 2013 Daniel Nicoletti
+ SPDX-FileCopyrightText: 2013 Jan Grulich
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
+*/
+
+#include "activeconnection.h"
+#include "activeconnection_p.h"
+#include "device.h"
+#include "manager.h"
+#include "nmdebug.h"
+#include "settings.h"
+
+#include
+
+#include "manager_p.h"
+
+NetworkManager::ActiveConnectionPrivate::ActiveConnectionPrivate(const QString &dbusPath, ActiveConnection *q)
+#ifdef NMQT_STATIC
+ : iface(NetworkManagerPrivate::DBUS_SERVICE, dbusPath, QDBusConnection::sessionBus())
+#else
+ : iface(NetworkManagerPrivate::DBUS_SERVICE, dbusPath, QDBusConnection::systemBus())
+#endif
+ , dhcp4Config(nullptr)
+ , dhcp6Config(nullptr)
+ , state(ActiveConnection::Unknown)
+ , q_ptr(q)
+{
+ path = dbusPath;
+}
+
+NetworkManager::ActiveConnectionPrivate::~ActiveConnectionPrivate()
+{
+}
+
+NetworkManager::ActiveConnection::State NetworkManager::ActiveConnectionPrivate::convertActiveConnectionState(uint state)
+{
+ return (NetworkManager::ActiveConnection::State)state;
+}
+
+NetworkManager::ActiveConnection::Reason NetworkManager::ActiveConnectionPrivate::convertActiveConnectionReason(uint reason)
+{
+ return (NetworkManager::ActiveConnection::Reason)reason;
+}
+
+NetworkManager::ActiveConnection::ActiveConnection(const QString &path, QObject *parent)
+ : QObject(parent)
+ , d_ptr(new ActiveConnectionPrivate(path, this))
+{
+ Q_D(ActiveConnection);
+
+#ifndef NMQT_STATIC
+ QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE,
+ d->path,
+ NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
+ QLatin1String("PropertiesChanged"),
+ d,
+ SLOT(dbusPropertiesChanged(QString, QVariantMap, QStringList)));
+ QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE,
+ d->path,
+ d->iface.staticInterfaceName(),
+ QLatin1String("StateChanged"),
+ d,
+ SLOT(stateChanged(uint, uint)));
+#endif
+
+#ifdef NMQT_STATIC
+ connect(&d->iface, &OrgFreedesktopNetworkManagerConnectionActiveInterface::PropertiesChanged, d, &ActiveConnectionPrivate::propertiesChanged);
+ connect(&d->iface, &OrgFreedesktopNetworkManagerConnectionActiveInterface::StateChanged, d, &ActiveConnectionPrivate::stateChanged);
+#endif
+
+ // Get all ActiveConnection's at once
+ QVariantMap initialProperties = NetworkManagerPrivate::retrieveInitialProperties(d->iface.staticInterfaceName(), path);
+ if (!initialProperties.isEmpty()) {
+ d->propertiesChanged(initialProperties);
+ }
+}
+
+NetworkManager::ActiveConnection::ActiveConnection(ActiveConnectionPrivate &dd, QObject *parent)
+ : QObject(parent)
+ , d_ptr(&dd)
+{
+ Q_D(ActiveConnection);
+
+#ifndef NMQT_STATIC
+ QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE,
+ d->path,
+ NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
+ QLatin1String("PropertiesChanged"),
+ d,
+ SLOT(dbusPropertiesChanged(QString, QVariantMap, QStringList)));
+ QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE,
+ d->path,
+ d->iface.staticInterfaceName(),
+ QLatin1String("StateChanged"),
+ d,
+ SLOT(stateChanged(uint, uint)));
+#endif
+
+#ifdef NMQT_STATIC
+ connect(&d->iface, &OrgFreedesktopNetworkManagerConnectionActiveInterface::PropertiesChanged, d, &ActiveConnectionPrivate::propertiesChanged);
+ connect(&d->iface, &OrgFreedesktopNetworkManagerConnectionActiveInterface::StateChanged, d, &ActiveConnectionPrivate::stateChanged);
+#endif
+}
+
+NetworkManager::ActiveConnection::~ActiveConnection()
+{
+ delete d_ptr;
+}
+
+bool NetworkManager::ActiveConnection::isValid() const
+{
+ Q_D(const ActiveConnection);
+ return !d->connection.isNull();
+}
+
+NetworkManager::Connection::Ptr NetworkManager::ActiveConnection::connection() const
+{
+ Q_D(const ActiveConnection);
+ return d->connection;
+}
+
+QString NetworkManager::ActiveConnection::path() const
+{
+ Q_D(const ActiveConnection);
+ return d->path;
+}
+
+bool NetworkManager::ActiveConnection::default4() const
+{
+ Q_D(const ActiveConnection);
+ return d->default4;
+}
+
+bool NetworkManager::ActiveConnection::default6() const
+{
+ Q_D(const ActiveConnection);
+ return d->default6;
+}
+
+NetworkManager::Dhcp4Config::Ptr NetworkManager::ActiveConnection::dhcp4Config() const
+{
+ Q_D(const ActiveConnection);
+ if (!d->dhcp4Config && !d->dhcp4ConfigPath.isNull()) {
+ d->dhcp4Config = NetworkManager::Dhcp4Config::Ptr(new Dhcp4Config(d->dhcp4ConfigPath), &QObject::deleteLater);
+ }
+ return d->dhcp4Config;
+}
+
+NetworkManager::Dhcp6Config::Ptr NetworkManager::ActiveConnection::dhcp6Config() const
+{
+ Q_D(const ActiveConnection);
+ if (!d->dhcp6Config && !d->dhcp6ConfigPath.isNull()) {
+ d->dhcp6Config = NetworkManager::Dhcp6Config::Ptr(new Dhcp6Config(d->dhcp6ConfigPath), &QObject::deleteLater);
+ }
+ return d->dhcp6Config;
+}
+
+NetworkManager::IpConfig NetworkManager::ActiveConnection::ipV4Config() const
+{
+ Q_D(const ActiveConnection);
+ if (!d->ipV4Config.isValid() && !d->ipV4ConfigPath.isNull()) {
+ d->ipV4Config.setIPv4Path(d->ipV4ConfigPath);
+ }
+ return d->ipV4Config;
+}
+
+NetworkManager::IpConfig NetworkManager::ActiveConnection::ipV6Config() const
+{
+ Q_D(const ActiveConnection);
+ if (!d->ipV6Config.isValid() && !d->ipV6ConfigPath.isNull()) {
+ d->ipV6Config.setIPv6Path(d->ipV6ConfigPath);
+ }
+ return d->ipV6Config;
+}
+
+QString NetworkManager::ActiveConnection::id() const
+{
+ Q_D(const ActiveConnection);
+ return d->id;
+}
+
+NetworkManager::ConnectionSettings::ConnectionType NetworkManager::ActiveConnection::type() const
+{
+ Q_D(const ActiveConnection);
+ return NetworkManager::ConnectionSettings::typeFromString(d->type);
+}
+
+QString NetworkManager::ActiveConnection::master() const
+{
+ Q_D(const ActiveConnection);
+ return d->master;
+}
+
+QString NetworkManager::ActiveConnection::specificObject() const
+{
+ Q_D(const ActiveConnection);
+ return d->specificObject;
+}
+
+NetworkManager::ActiveConnection::State NetworkManager::ActiveConnection::state() const
+{
+ Q_D(const ActiveConnection);
+ return d->state;
+}
+
+bool NetworkManager::ActiveConnection::vpn() const
+{
+ Q_D(const ActiveConnection);
+ return d->vpn;
+}
+
+QString NetworkManager::ActiveConnection::uuid() const
+{
+ Q_D(const ActiveConnection);
+ return d->uuid;
+}
+
+QStringList NetworkManager::ActiveConnection::devices() const
+{
+ Q_D(const ActiveConnection);
+ return d->devices;
+}
+
+void NetworkManager::ActiveConnectionPrivate::dbusPropertiesChanged(const QString &interfaceName,
+ const QVariantMap &properties,
+ const QStringList &invalidatedProperties)
+{
+ Q_UNUSED(invalidatedProperties);
+
+ if (interfaceName == QLatin1String("org.freedesktop.NetworkManager.Connection.Active")) {
+ propertiesChanged(properties);
+ }
+}
+
+void NetworkManager::ActiveConnectionPrivate::propertiesChanged(const QVariantMap &properties)
+{
+ // qCDebug(NMQT) << Q_FUNC_INFO << properties;
+
+ QVariantMap::const_iterator it = properties.constBegin();
+ while (it != properties.constEnd()) {
+ propertyChanged(it.key(), it.value());
+ ++it;
+ }
+}
+
+void NetworkManager::ActiveConnectionPrivate::stateChanged(uint state, uint reason)
+{
+ Q_Q(ActiveConnection);
+
+ Q_EMIT q->stateChangedReason(convertActiveConnectionState(state), convertActiveConnectionReason(reason));
+}
+
+void NetworkManager::ActiveConnectionPrivate::propertyChanged(const QString &property, const QVariant &value)
+{
+ Q_Q(ActiveConnection);
+
+ // qCDebug(NMQT) << property << " - " << value;
+
+ if (property == QLatin1String("Connection")) {
+ connection = NetworkManager::findConnection(qdbus_cast(value).path());
+ Q_EMIT q->connectionChanged(connection);
+ const QString tmpId = connection->settings()->id();
+ const QString tmpType = connection->settings()->typeAsString(connection->settings()->connectionType());
+ if (tmpId != id) {
+ id = tmpId;
+ Q_EMIT q->idChanged(id);
+ }
+
+ if (tmpType != type) {
+ Q_EMIT q->typeChanged(NetworkManager::ConnectionSettings::typeFromString(type));
+ }
+ } else if (property == QLatin1String("Default")) {
+ default4 = value.toBool();
+ Q_EMIT q->default4Changed(default4);
+ } else if (property == QLatin1String("Default6")) {
+ default6 = value.toBool();
+ Q_EMIT q->default6Changed(default6);
+ } else if (property == QLatin1String("Dhcp4Config")) {
+ QDBusObjectPath dhcp4ConfigPathTmp = (value).value();
+ if (dhcp4ConfigPathTmp.path().isNull()) {
+ dhcp4Config.clear();
+ dhcp4ConfigPath.clear();
+ } else if (!dhcp4Config || dhcp4Config->path() != dhcp4ConfigPathTmp.path()) {
+ dhcp4Config.clear();
+ dhcp4ConfigPath = dhcp4ConfigPathTmp.path();
+ }
+ Q_EMIT q->dhcp4ConfigChanged();
+ } else if (property == QLatin1String("Dhcp6Config")) {
+ QDBusObjectPath dhcp6ConfigPathTmp = (value).value();
+ if (dhcp6ConfigPathTmp.path().isNull()) {
+ dhcp6Config.clear();
+ dhcp6ConfigPath.clear();
+ } else if (!dhcp6Config || dhcp6Config->path() != dhcp6ConfigPathTmp.path()) {
+ dhcp6Config.clear();
+ dhcp6ConfigPath = dhcp6ConfigPathTmp.path();
+ }
+ Q_EMIT q->dhcp6ConfigChanged();
+ } else if (property == QLatin1String("Ip4Config")) {
+ QDBusObjectPath ip4ConfigObjectPathTmp = (value).value();
+ if (ip4ConfigObjectPathTmp.path().isNull() || ip4ConfigObjectPathTmp.path() == QLatin1String("/")) {
+ ipV4ConfigPath.clear();
+ } else {
+ ipV4ConfigPath = ip4ConfigObjectPathTmp.path();
+ }
+ ipV4Config = IpConfig();
+ Q_EMIT q->ipV4ConfigChanged();
+ } else if (property == QLatin1String("Ip6Config")) {
+ QDBusObjectPath ip6ConfigObjectPathTmp = (value).value();
+ if (ip6ConfigObjectPathTmp.path().isNull() || ip6ConfigObjectPathTmp.path() == QLatin1String("/")) {
+ ipV6ConfigPath.clear();
+ } else {
+ ipV6ConfigPath = ip6ConfigObjectPathTmp.path();
+ }
+ ipV6Config = IpConfig();
+ Q_EMIT q->ipV6ConfigChanged();
+ } else if (property == QLatin1String("Id")) {
+ id = value.toString();
+ Q_EMIT q->idChanged(id);
+ } else if (property == QLatin1String("Type")) {
+ type = value.toString();
+ Q_EMIT q->typeChanged(NetworkManager::ConnectionSettings::typeFromString(type));
+ } else if (property == QLatin1String("Master")) {
+ master = qdbus_cast(value).path();
+ Q_EMIT q->masterChanged(master);
+ } else if (property == QLatin1String("SpecificObject")) {
+ specificObject = qdbus_cast(value).path();
+ Q_EMIT q->specificObjectChanged(specificObject);
+ } else if (property == QLatin1String("State")) {
+ state = NetworkManager::ActiveConnectionPrivate::convertActiveConnectionState(value.toUInt());
+ Q_EMIT q->stateChanged(state);
+ } else if (property == QLatin1String("Vpn")) {
+ vpn = value.toBool();
+ Q_EMIT q->vpnChanged(vpn);
+ } else if (property == QLatin1String("Uuid")) {
+ uuid = value.toString();
+ Q_EMIT q->uuidChanged(uuid);
+ } else if (property == QLatin1String("Devices")) {
+ devices.clear();
+ const QList opList = qdbus_cast>(value);
+ for (const QDBusObjectPath &path : opList) {
+ devices.append(path.path());
+ }
+ Q_EMIT q->devicesChanged();
+ } else {
+ qCDebug(NMQT) << Q_FUNC_INFO << "Unhandled property" << property;
+ }
+}
diff --git a/panels/dock/tray/networkmanager-qt/src/activeconnection.h b/panels/dock/tray/networkmanager-qt/src/activeconnection.h
new file mode 100644
index 000000000..0d978d420
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/activeconnection.h
@@ -0,0 +1,231 @@
+/*
+ SPDX-FileCopyrightText: 2011 Ilia Kats
+ SPDX-FileCopyrightText: 2011-2013 Lamarque V. Souza
+ SPDX-FileCopyrightText: 2013 Jan Grulich
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
+*/
+
+#ifndef NETWORKMANAGERQT_ACTIVECONNECTION_H
+#define NETWORKMANAGERQT_ACTIVECONNECTION_H
+
+#include
+#include
+#include
+
+#include "connection.h"
+#include "dhcp4config.h"
+#include "dhcp6config.h"
+#include "ipconfig.h"
+#include
+
+namespace NetworkManager
+{
+class ActiveConnectionPrivate;
+
+/**
+ * An active connection
+ */
+class NETWORKMANAGERQT_EXPORT ActiveConnection : public QObject
+{
+ Q_OBJECT
+
+public:
+ typedef QSharedPointer Ptr;
+ typedef QList List;
+ /**
+ * Enum describing possible active connection states
+ */
+ enum State {
+ Unknown = 0, /**< The active connection is in an unknown state */
+ Activating, /**< The connection is activating */
+ Activated, /**< The connection is activated */
+ Deactivating, /**< The connection is being torn down and cleaned up */
+ Deactivated, /**< The connection is no longer active */
+ };
+
+ enum Reason {
+ UknownReason = 0, /**< The reason for the active connection state change is unknown */
+ None, /**< No reason was given for the active connection state change */
+ UserDisconnected, /**< The active connection changed state because the user disconnected it */
+ DeviceDisconnected, /**< The active connection changed state because the device it was using was disconnected */
+ ServiceStopped, /**< The service providing the VPN connection was stopped */
+ IpConfigInvalid, /**< The IP config of the active connection was invalid */
+ ConnectTimeout, /**< The connection attempt to the VPN service timed out */
+ ServiceStartTimeout, /**< A timeout occurred while starting the service providing the VPN connection */
+ ServiceStartFailed, /**< Starting the service providing the VPN connection failed */
+ NoSecrets, /**< Necessary secrets for the connection were not provided */
+ LoginFailed, /**< Authentication to the server failed */
+ ConnectionRemoved, /**< The connection was deleted from settings */
+ DependencyFailed, /**< Master connection of this connection failed to activate */
+ DeviceRealizeFailed, /**< Could not create the software device link */
+ DeviceRemoved, /**< The device this connection depended on disappeared */
+ };
+
+ /**
+ * Creates a new ActiveConnection object.
+ *
+ * @param path the DBus path of the device
+ */
+ explicit ActiveConnection(const QString &path, QObject *parent = nullptr);
+ explicit ActiveConnection(ActiveConnectionPrivate &dd, QObject *parent = nullptr);
+ /**
+ * Destroys an ActiveConnection object.
+ */
+ ~ActiveConnection() override;
+
+ /**
+ * Returns true is this object holds a valid connection
+ */
+ bool isValid() const;
+ /**
+ * Return path of the connection object
+ */
+ QString path() const;
+ /**
+ * Returns a valid NetworkManager::Connection object
+ */
+ Connection::Ptr connection() const;
+ /**
+ * Whether this connection has the default IPv4 route
+ */
+ bool default4() const;
+ /**
+ * Whether this connection has the default IPv6 route
+ */
+ bool default6() const;
+ /**
+ * The Ip4Config object describing the configuration of the
+ * connection. Only valid when the connection is in the
+ * NM_ACTIVE_CONNECTION_STATE_ACTIVATED state
+ */
+ IpConfig ipV4Config() const;
+ /**
+ * The Ip6Config object describing the configuration of the
+ * connection. Only valid when the connection is in the
+ * NM_ACTIVE_CONNECTION_STATE_ACTIVATED state
+ */
+ IpConfig ipV6Config() const;
+ /**
+ * The Dhcp4Config object describing the DHCP options
+ * returned by the DHCP server (assuming the connection used DHCP). Only
+ * valid when the connection is in the NM_ACTIVE_CONNECTION_STATE_ACTIVATED
+ * state
+ */
+ Dhcp4Config::Ptr dhcp4Config() const;
+ /**
+ * The Dhcp6Config object describing the DHCP options
+ * returned by the DHCP server (assuming the connection used DHCP). Only
+ * valid when the connection is in the NM_ACTIVE_CONNECTION_STATE_ACTIVATED
+ * state
+ */
+ Dhcp6Config::Ptr dhcp6Config() const;
+ /**
+ * The Id of the connection
+ */
+ QString id() const;
+ /**
+ * The type of the connection
+ */
+ NetworkManager::ConnectionSettings::ConnectionType type() const;
+ /**
+ * Returns the uni of master device if the connection is a slave.
+ */
+ QString master() const;
+ /**
+ * The path of the specific object associated with the connection.
+ */
+ QString specificObject() const;
+ /**
+ * The current state of the connection
+ */
+ NetworkManager::ActiveConnection::State state() const;
+ /**
+ * Whether this is a VPN connection
+ */
+ bool vpn() const;
+ /**
+ * The UUID of the connection.
+ */
+ QString uuid() const;
+ /**
+ * List of devices UNIs which are part of this connection.
+ */
+ QStringList devices() const;
+
+Q_SIGNALS:
+ /**
+ * This signal is emitted when the connection path has changed
+ */
+ void connectionChanged(const NetworkManager::Connection::Ptr &connection);
+ /**
+ * The state of the default IPv4 route changed
+ */
+ void default4Changed(bool isDefault);
+ /**
+ * The state of the default IPv6 route changed
+ */
+ void default6Changed(bool isDefault);
+ /**
+ * Emitted when the DHCP configuration for IPv4 of this network has changed.
+ */
+ void dhcp4ConfigChanged();
+ /**
+ * Emitted when the DHCP configuration for IPv6 of this network has changed.
+ */
+ void dhcp6ConfigChanged();
+ /**
+ * Emitted when the IPv4 configuration of this network has changed.
+ */
+ void ipV4ConfigChanged();
+ /**
+ * Emitted when the IPv6 configuration of this network has changed.
+ */
+ void ipV6ConfigChanged();
+ /**
+ * The @p id changed
+ */
+ void idChanged(const QString &id);
+ /**
+ * The @p type changed
+ */
+ void typeChanged(NetworkManager::ConnectionSettings::ConnectionType type);
+ /**
+ * The master device changed.
+ */
+ void masterChanged(const QString &uni);
+ /**
+ * The @p path to the specific object changed
+ */
+ void specificObjectChanged(const QString &path);
+ /**
+ * The @p state changed
+ */
+ void stateChanged(NetworkManager::ActiveConnection::State state);
+ /**
+ * The @p state changed because of reason @p reason
+ * (never emitted in runtime NM < 1.8.0)
+ */
+ void stateChangedReason(NetworkManager::ActiveConnection::State state, NetworkManager::ActiveConnection::Reason reason);
+ /**
+ * The VPN property changed.
+ */
+ void vpnChanged(bool isVpn);
+ /**
+ * The @p uuid changed.
+ */
+ void uuidChanged(const QString &uuid);
+ /**
+ * The list of devices changed.
+ */
+ void devicesChanged();
+
+protected:
+ ActiveConnectionPrivate *const d_ptr;
+
+private:
+ Q_DECLARE_PRIVATE(ActiveConnection)
+};
+
+} // namespace NetworkManager
+#endif // NETWORKMANAGERQT_ACTIVECONNECTION_H
diff --git a/panels/dock/tray/networkmanager-qt/src/activeconnection_p.h b/panels/dock/tray/networkmanager-qt/src/activeconnection_p.h
new file mode 100644
index 000000000..0c6edbe2d
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/activeconnection_p.h
@@ -0,0 +1,64 @@
+/*
+ SPDX-FileCopyrightText: 2011 Ilia Kats
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
+*/
+
+#ifndef NETWORKMANAGERQT_ACTIVECONNECTION_P_H
+#define NETWORKMANAGERQT_ACTIVECONNECTION_P_H
+
+#include "activeconnection.h"
+#include "activeconnectioninterface.h"
+
+namespace NetworkManager
+{
+class ActiveConnectionPrivate : public QObject
+{
+ Q_OBJECT
+public:
+ explicit ActiveConnectionPrivate(const QString &, ActiveConnection *q);
+ ~ActiveConnectionPrivate() override;
+ static NetworkManager::ActiveConnection::State convertActiveConnectionState(uint);
+ static NetworkManager::ActiveConnection::Reason convertActiveConnectionReason(uint);
+ NetworkManager::Connection::Ptr connection;
+ QString path;
+ bool default4;
+ bool default6;
+ QStringList devices;
+ OrgFreedesktopNetworkManagerConnectionActiveInterface iface;
+ mutable Dhcp4Config::Ptr dhcp4Config;
+ QString dhcp4ConfigPath;
+ mutable Dhcp6Config::Ptr dhcp6Config;
+ QString dhcp6ConfigPath;
+ mutable IpConfig ipV4Config;
+ QString ipV4ConfigPath;
+ mutable IpConfig ipV6Config;
+ QString ipV6ConfigPath;
+ QString id;
+ QString type;
+ QString specificObject;
+ ActiveConnection::State state;
+ bool vpn;
+ QString uuid;
+ QString master;
+
+ Q_DECLARE_PUBLIC(ActiveConnection)
+ ActiveConnection *q_ptr;
+
+public:
+ /**
+ * When subclassing make sure to call the parent class method
+ * if the property was not useful to your new class
+ */
+ virtual void propertyChanged(const QString &property, const QVariant &value);
+
+public Q_SLOTS:
+ void propertiesChanged(const QVariantMap &properties);
+ void stateChanged(uint state, uint reason);
+
+private Q_SLOTS:
+ void dbusPropertiesChanged(const QString &interfaceName, const QVariantMap &properties, const QStringList &invalidatedProperties);
+};
+
+}
+#endif
diff --git a/panels/dock/tray/networkmanager-qt/src/adsldevice.cpp b/panels/dock/tray/networkmanager-qt/src/adsldevice.cpp
new file mode 100644
index 000000000..1b6247f17
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/adsldevice.cpp
@@ -0,0 +1,62 @@
+/*
+ SPDX-FileCopyrightText: 2012-2013 Jan Grulich
+ SPDX-FileCopyrightText: 2013 Daniel Nicoletti
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
+*/
+
+#include "adsldevice_p.h"
+
+NetworkManager::AdslDevicePrivate::AdslDevicePrivate(const QString &path, AdslDevice *q)
+ : DevicePrivate(path, q)
+#ifdef NMQT_STATIC
+ , iface(NetworkManagerPrivate::DBUS_SERVICE, path, QDBusConnection::sessionBus())
+#else
+ , iface(NetworkManagerPrivate::DBUS_SERVICE, path, QDBusConnection::systemBus())
+#endif
+ , carrier(false)
+{
+}
+
+NetworkManager::AdslDevice::~AdslDevice()
+{
+}
+
+NetworkManager::AdslDevice::AdslDevice(const QString &path, QObject *parent)
+ : Device(*new AdslDevicePrivate(path, this), parent)
+{
+ Q_D(AdslDevice);
+
+ QVariantMap initialProperties = NetworkManagerPrivate::retrieveInitialProperties(d->iface.staticInterfaceName(), path);
+ if (!initialProperties.isEmpty()) {
+ d->propertiesChanged(initialProperties);
+ }
+}
+
+NetworkManager::AdslDevicePrivate::~AdslDevicePrivate()
+{
+}
+
+NetworkManager::Device::Type NetworkManager::AdslDevice::type() const
+{
+ return NetworkManager::Device::Adsl;
+}
+
+bool NetworkManager::AdslDevice::carrier() const
+{
+ Q_D(const AdslDevice);
+
+ return d->carrier;
+}
+
+void NetworkManager::AdslDevicePrivate::propertyChanged(const QString &property, const QVariant &value)
+{
+ Q_Q(AdslDevice);
+
+ if (property == QLatin1String("Carrier")) {
+ carrier = value.toBool();
+ Q_EMIT q->carrierChanged(carrier);
+ } else {
+ DevicePrivate::propertyChanged(property, value);
+ }
+}
diff --git a/panels/dock/tray/networkmanager-qt/src/adsldevice.h b/panels/dock/tray/networkmanager-qt/src/adsldevice.h
new file mode 100644
index 000000000..176aa3b4f
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/adsldevice.h
@@ -0,0 +1,48 @@
+/*
+ SPDX-FileCopyrightText: 2012-2013 Jan Grulich
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
+*/
+
+#ifndef NETWORKMANAGERQT_ADSL_DEVICE_H
+#define NETWORKMANAGERQT_ADSL_DEVICE_H
+
+#include "device.h"
+#include
+
+namespace NetworkManager
+{
+class AdslDevicePrivate;
+
+/**
+ * An adsl device interface
+ */
+class NETWORKMANAGERQT_EXPORT AdslDevice : public Device
+{
+ Q_OBJECT
+ Q_PROPERTY(bool carrier READ carrier NOTIFY carrierChanged)
+public:
+ typedef QSharedPointer Ptr;
+ typedef QList List;
+ explicit AdslDevice(const QString &path, QObject *parent = nullptr);
+ ~AdslDevice() override;
+
+ Type type() const override;
+ /**
+ * Indicates whether the physical carrier is found
+ */
+ bool carrier() const;
+
+Q_SIGNALS:
+ /**
+ * Emitted when the carrier of this device has changed
+ */
+ void carrierChanged(bool plugged);
+
+private:
+ Q_DECLARE_PRIVATE(AdslDevice)
+};
+
+}
+
+#endif
diff --git a/panels/dock/tray/networkmanager-qt/src/adsldevice_p.h b/panels/dock/tray/networkmanager-qt/src/adsldevice_p.h
new file mode 100644
index 000000000..d5f85cde6
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/adsldevice_p.h
@@ -0,0 +1,39 @@
+/*
+ SPDX-FileCopyrightText: 2012-2014 Jan Grulich
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
+*/
+
+#ifndef NETWORKMANAGERQT_ADSL_DEVICE_P_H
+#define NETWORKMANAGERQT_ADSL_DEVICE_P_H
+
+#include "adsldevice.h"
+#include "device_p.h"
+#include "manager.h"
+#include "manager_p.h"
+
+#include "adsldeviceinterface.h"
+
+namespace NetworkManager
+{
+class AdslDevicePrivate : public DevicePrivate
+{
+ Q_OBJECT
+public:
+ AdslDevicePrivate(const QString &path, AdslDevice *q);
+ ~AdslDevicePrivate() override;
+
+ OrgFreedesktopNetworkManagerDeviceAdslInterface iface;
+ bool carrier;
+
+ Q_DECLARE_PUBLIC(AdslDevice)
+protected:
+ /**
+ * When subclassing make sure to call the parent class method
+ * if the property was not useful to your new class
+ */
+ void propertyChanged(const QString &property, const QVariant &value) override;
+};
+}
+
+#endif
diff --git a/panels/dock/tray/networkmanager-qt/src/bluetoothdevice.cpp b/panels/dock/tray/networkmanager-qt/src/bluetoothdevice.cpp
new file mode 100644
index 000000000..5c4ab26ed
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/bluetoothdevice.cpp
@@ -0,0 +1,77 @@
+/*
+ SPDX-FileCopyrightText: 2011 Lamarque Souza
+ SPDX-FileCopyrightText: 2011 Will Stephenson
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
+*/
+
+#include "bluetoothdevice.h"
+#include "bluetoothdevice_p.h"
+#include "manager_p.h"
+
+#include "nmdebug.h"
+
+NetworkManager::BluetoothDevicePrivate::BluetoothDevicePrivate(const QString &path, BluetoothDevice *q)
+ : ModemDevicePrivate(path, q)
+#ifdef NMQT_STATIC
+ , btIface(NetworkManagerPrivate::DBUS_SERVICE, path, QDBusConnection::sessionBus())
+#else
+ , btIface(NetworkManagerPrivate::DBUS_SERVICE, path, QDBusConnection::systemBus())
+#endif
+{
+}
+
+NetworkManager::BluetoothDevice::BluetoothDevice(const QString &path, QObject *parent)
+ : ModemDevice(*new BluetoothDevicePrivate(path, this), parent)
+{
+ Q_D(BluetoothDevice);
+
+ QVariantMap initialProperties = NetworkManagerPrivate::retrieveInitialProperties(d->btIface.staticInterfaceName(), path);
+ if (!initialProperties.isEmpty()) {
+ d->propertiesChanged(initialProperties);
+ }
+
+}
+
+NetworkManager::BluetoothDevice::~BluetoothDevice()
+{
+}
+
+NetworkManager::Device::Type NetworkManager::BluetoothDevice::type() const
+{
+ return NetworkManager::Device::Bluetooth;
+}
+
+void NetworkManager::BluetoothDevicePrivate::propertyChanged(const QString &property, const QVariant &value)
+{
+ Q_Q(BluetoothDevice);
+
+ if (property == QLatin1String("Name")) {
+ name = value.toString();
+ Q_EMIT q->nameChanged(name);
+ } else if (property == QLatin1String("HwAddress")) {
+ hardwareAddress = value.toString();
+ } else if (property == QLatin1String("BtCapabilities")) {
+ btCapabilities = static_cast(value.toUInt());
+ } else {
+ DevicePrivate::propertyChanged(property, value);
+ }
+}
+
+NetworkManager::BluetoothDevice::Capabilities NetworkManager::BluetoothDevice::bluetoothCapabilities() const
+{
+ Q_D(const BluetoothDevice);
+ return d->btCapabilities;
+}
+
+QString NetworkManager::BluetoothDevice::hardwareAddress() const
+{
+ Q_D(const BluetoothDevice);
+ return d->hardwareAddress;
+}
+
+QString NetworkManager::BluetoothDevice::name() const
+{
+ Q_D(const BluetoothDevice);
+ return d->name;
+}
diff --git a/panels/dock/tray/networkmanager-qt/src/bluetoothdevice.h b/panels/dock/tray/networkmanager-qt/src/bluetoothdevice.h
new file mode 100644
index 000000000..48019aad7
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/bluetoothdevice.h
@@ -0,0 +1,85 @@
+/*
+ SPDX-FileCopyrightText: 2011 Lamarque Souza
+ SPDX-FileCopyrightText: 2011 Will Stephenson
+ SPDX-FileCopyrightText: 2011-2013 Lamarque V. Souza
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
+*/
+
+#include "modemdevice.h"
+
+#ifndef NETWORKMANAGERQT_BLUETOOTH_DEVICE_H
+#define NETWORKMANAGERQT_BLUETOOTH_DEVICE_H
+
+#include
+
+namespace NetworkManager
+{
+class BluetoothDevicePrivate;
+
+/**
+ * A bluetooth device interface
+ */
+class NETWORKMANAGERQT_EXPORT BluetoothDevice : public ModemDevice
+{
+ Q_OBJECT
+
+ Q_PROPERTY(uint bluetoothCapabilities READ bluetoothCapabilities)
+ Q_PROPERTY(QString hardwareAddress READ hardwareAddress)
+ Q_PROPERTY(QString name READ name)
+
+public:
+ typedef QSharedPointer Ptr;
+ typedef QList List;
+ /**
+ * Capabilities of the Bluetooth device
+ */
+ enum Capability {
+ NoCapability = 0x0, /**< No special capability */
+ Dun = 0x1, /**< Dial Up Networking profile */
+ Pan = 0x2, /**< Personal Area Network profile */
+ };
+ Q_DECLARE_FLAGS(Capabilities, Capability)
+ Q_FLAG(Capabilities)
+ /**
+ * Creates a new BluetoothDevice object.
+ */
+ explicit BluetoothDevice(const QString &path, QObject *parent = nullptr);
+ /**
+ * Destroys a BluetoothDevice object.
+ */
+ ~BluetoothDevice() override;
+
+ /**
+ * Retrieves the capabilities supported by this device.
+ *
+ * @return the capabilities of the device
+ * @see NetworkManager::BluetoothDevice::Capability
+ */
+ Capabilities bluetoothCapabilities() const;
+ /**
+ * The hardware address assigned to the bluetooth interface
+ */
+ QString hardwareAddress() const;
+ /**
+ * Name of the bluetooth interface
+ */
+ QString name() const;
+ /**
+ * The NetworkInterface type.
+ *
+ * @return the NetworkManager::Device::Type. This always returns NetworkManager::Device::Bluetooth
+ */
+ Type type() const override;
+
+Q_SIGNALS:
+ /**
+ * Emitted when the BT device @p name changes
+ */
+ void nameChanged(const QString &name);
+
+private:
+ Q_DECLARE_PRIVATE(BluetoothDevice)
+};
+}
+#endif
diff --git a/panels/dock/tray/networkmanager-qt/src/bluetoothdevice_p.h b/panels/dock/tray/networkmanager-qt/src/bluetoothdevice_p.h
new file mode 100644
index 000000000..ee1f254ec
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/bluetoothdevice_p.h
@@ -0,0 +1,35 @@
+/*
+ SPDX-FileCopyrightText: 2011 Lamarque Souza
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
+*/
+
+#ifndef NETWORKMANAGERQT_BLUETOOTH_DEVICE_P_H
+#define NETWORKMANAGERQT_BLUETOOTH_DEVICE_P_H
+
+#include "dbus/bluetoothdeviceinterface.h"
+#include "modemdevice_p.h"
+
+namespace NetworkManager
+{
+class BluetoothDevicePrivate : public ModemDevicePrivate
+{
+ Q_OBJECT
+public:
+ explicit BluetoothDevicePrivate(const QString &path, BluetoothDevice *q);
+ OrgFreedesktopNetworkManagerDeviceBluetoothInterface btIface;
+ BluetoothDevice::Capabilities btCapabilities;
+ QString hardwareAddress;
+ QString name;
+
+ Q_DECLARE_PUBLIC(BluetoothDevice)
+protected:
+ /**
+ * When subclassing make sure to call the parent class method
+ * if the property was not useful to your new class
+ */
+ void propertyChanged(const QString &property, const QVariant &value) override;
+};
+
+}
+#endif // NETWORKMANAGERQT__BLUETOOTH_DEVICE_P_H
diff --git a/panels/dock/tray/networkmanager-qt/src/bonddevice.cpp b/panels/dock/tray/networkmanager-qt/src/bonddevice.cpp
new file mode 100644
index 000000000..5596c82a4
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/bonddevice.cpp
@@ -0,0 +1,90 @@
+/*
+ SPDX-FileCopyrightText: 2013 Jan Grulich
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
+*/
+
+#include "bonddevice_p.h"
+#include "device_p.h"
+#include "manager.h"
+#include "manager_p.h"
+
+NetworkManager::BondDevicePrivate::BondDevicePrivate(const QString &path, BondDevice *q)
+ : DevicePrivate(path, q)
+#ifdef NMQT_STATIC
+ , iface(NetworkManagerPrivate::DBUS_SERVICE, path, QDBusConnection::sessionBus())
+#else
+ , iface(NetworkManagerPrivate::DBUS_SERVICE, path, QDBusConnection::systemBus())
+#endif
+ , carrier(false)
+{
+}
+
+NetworkManager::BondDevice::~BondDevice()
+{
+}
+
+NetworkManager::BondDevice::BondDevice(const QString &path, QObject *parent)
+ : Device(*new BondDevicePrivate(path, this), parent)
+{
+ Q_D(BondDevice);
+
+ QVariantMap initialProperties = NetworkManagerPrivate::retrieveInitialProperties(d->iface.staticInterfaceName(), path);
+ if (!initialProperties.isEmpty()) {
+ d->propertiesChanged(initialProperties);
+ }
+
+}
+
+NetworkManager::BondDevicePrivate::~BondDevicePrivate()
+{
+}
+
+NetworkManager::Device::Type NetworkManager::BondDevice::type() const
+{
+ return NetworkManager::Device::Bond;
+}
+
+bool NetworkManager::BondDevice::carrier() const
+{
+ Q_D(const BondDevice);
+
+ return d->carrier;
+}
+
+QString NetworkManager::BondDevice::hwAddress() const
+{
+ Q_D(const BondDevice);
+
+ return d->hwAddress;
+}
+
+QStringList NetworkManager::BondDevice::slaves() const
+{
+ Q_D(const BondDevice);
+
+ return d->slaves;
+}
+
+void NetworkManager::BondDevicePrivate::propertyChanged(const QString &property, const QVariant &value)
+{
+ Q_Q(BondDevice);
+
+ if (property == QLatin1String("Carrier")) {
+ carrier = value.toBool();
+ Q_EMIT q->carrierChanged(carrier);
+ } else if (property == QLatin1String("HwAddress")) {
+ hwAddress = value.toString();
+ Q_EMIT q->hwAddressChanged(hwAddress);
+ } else if (property == QLatin1String("Slaves")) {
+ QStringList list;
+ const QList opList = qdbus_cast>(value);
+ for (const QDBusObjectPath &op : opList) {
+ list << op.path();
+ }
+ slaves = list;
+ Q_EMIT q->slavesChanged(slaves);
+ } else {
+ DevicePrivate::propertyChanged(property, value);
+ }
+}
diff --git a/panels/dock/tray/networkmanager-qt/src/bonddevice.h b/panels/dock/tray/networkmanager-qt/src/bonddevice.h
new file mode 100644
index 000000000..0c4477f98
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/bonddevice.h
@@ -0,0 +1,68 @@
+/*
+ SPDX-FileCopyrightText: 2013 Jan Grulich
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
+*/
+
+#ifndef NETWORKMANAGERQT_BOND_DEVICE_H
+#define NETWORKMANAGERQT_BOND_DEVICE_H
+
+#include "device.h"
+#include
+
+namespace NetworkManager
+{
+class BondDevicePrivate;
+
+/**
+ * A bond device interface
+ */
+class NETWORKMANAGERQT_EXPORT BondDevice : public Device
+{
+ Q_OBJECT
+ Q_PROPERTY(bool carrier READ carrier NOTIFY carrierChanged)
+ Q_PROPERTY(QString hwAddress READ hwAddress NOTIFY hwAddressChanged)
+ Q_PROPERTY(QStringList slaves READ slaves NOTIFY slavesChanged)
+
+public:
+ typedef QSharedPointer Ptr;
+ typedef QList List;
+ explicit BondDevice(const QString &path, QObject *parent = nullptr);
+ ~BondDevice() override;
+
+ Type type() const override;
+
+ /**
+ * Indicates whether the physical carrier is found
+ */
+ bool carrier() const;
+ /**
+ * Hardware address of the device
+ */
+ QString hwAddress() const;
+ /**
+ * Array of object paths representing devices which are currently slaved to this device
+ */
+ QStringList slaves() const;
+
+Q_SIGNALS:
+ /**
+ * Emitted when the carrier of this device has changed
+ */
+ void carrierChanged(bool plugged);
+ /**
+ * Emitted when the hardware address of this device has changed
+ */
+ void hwAddressChanged(const QString &address);
+ /**
+ * Emitted when the slaves of this device have changed
+ */
+ void slavesChanged(const QStringList &slaves);
+
+private:
+ Q_DECLARE_PRIVATE(BondDevice)
+};
+
+}
+
+#endif
diff --git a/panels/dock/tray/networkmanager-qt/src/bonddevice_p.h b/panels/dock/tray/networkmanager-qt/src/bonddevice_p.h
new file mode 100644
index 000000000..f5f5adcc4
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/bonddevice_p.h
@@ -0,0 +1,37 @@
+/*
+ SPDX-FileCopyrightText: 2014 Jan Grulich
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
+*/
+
+#ifndef NETWORKMANAGERQT_BOND_DEVICE_P_H
+#define NETWORKMANAGERQT_BOND_DEVICE_P_H
+
+#include "bonddevice.h"
+#include "dbus/bonddeviceinterface.h"
+#include "device_p.h"
+
+namespace NetworkManager
+{
+class BondDevicePrivate : public DevicePrivate
+{
+ Q_OBJECT
+public:
+ BondDevicePrivate(const QString &path, BondDevice *q);
+ ~BondDevicePrivate() override;
+
+ OrgFreedesktopNetworkManagerDeviceBondInterface iface;
+ bool carrier;
+ QString hwAddress;
+ QStringList slaves;
+
+ Q_DECLARE_PUBLIC(BondDevice)
+protected:
+ /**
+ * When subclassing make sure to call the parent class method
+ * if the property was not useful to your new class
+ */
+ void propertyChanged(const QString &property, const QVariant &value) override;
+};
+}
+#endif // NETWORKMANAGERQT__BLUETOOTH_DEVICE_P_H
diff --git a/panels/dock/tray/networkmanager-qt/src/bridgedevice.cpp b/panels/dock/tray/networkmanager-qt/src/bridgedevice.cpp
new file mode 100644
index 000000000..757ecd757
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/bridgedevice.cpp
@@ -0,0 +1,87 @@
+/*
+ SPDX-FileCopyrightText: 2013 Jan Grulich
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
+*/
+
+#include "bridgedevice_p.h"
+#include "manager_p.h"
+
+NetworkManager::BridgeDevicePrivate::BridgeDevicePrivate(const QString &path, BridgeDevice *q)
+ : DevicePrivate(path, q)
+#ifdef NMQT_STATIC
+ , iface(NetworkManagerPrivate::DBUS_SERVICE, path, QDBusConnection::sessionBus())
+#else
+ , iface(NetworkManagerPrivate::DBUS_SERVICE, path, QDBusConnection::systemBus())
+#endif
+ , carrier(false)
+{
+}
+
+NetworkManager::BridgeDevicePrivate::~BridgeDevicePrivate()
+{
+}
+
+NetworkManager::BridgeDevice::BridgeDevice(const QString &path, QObject *parent)
+ : Device(*new BridgeDevicePrivate(path, this), parent)
+{
+ Q_D(BridgeDevice);
+
+ QVariantMap initialProperties = NetworkManagerPrivate::retrieveInitialProperties(d->iface.staticInterfaceName(), path);
+ if (!initialProperties.isEmpty()) {
+ d->propertiesChanged(initialProperties);
+ }
+}
+
+NetworkManager::BridgeDevice::~BridgeDevice()
+{
+}
+
+NetworkManager::Device::Type NetworkManager::BridgeDevice::type() const
+{
+ return NetworkManager::Device::Bridge;
+}
+
+bool NetworkManager::BridgeDevice::carrier() const
+{
+ Q_D(const BridgeDevice);
+
+ return d->carrier;
+}
+
+QString NetworkManager::BridgeDevice::hwAddress() const
+{
+ Q_D(const BridgeDevice);
+
+ return d->hwAddress;
+}
+
+QStringList NetworkManager::BridgeDevice::slaves() const
+{
+ Q_D(const BridgeDevice);
+
+ return d->slaves;
+}
+
+void NetworkManager::BridgeDevicePrivate::propertyChanged(const QString &property, const QVariant &value)
+{
+ Q_Q(BridgeDevice);
+
+ if (property == QLatin1String("Carrier")) {
+ carrier = value.toBool();
+ Q_EMIT q->carrierChanged(carrier);
+ } else if (property == QLatin1String("HwAddress")) {
+ hwAddress = value.toString();
+ Q_EMIT q->hwAddressChanged(hwAddress);
+ } else if (property == QLatin1String("Slaves")) {
+ QStringList list;
+ const QList opList = qdbus_cast>(value);
+ for (const QDBusObjectPath &op : opList) {
+ list << op.path();
+ }
+ slaves = list;
+ Q_EMIT q->slavesChanged(slaves);
+ } else {
+ DevicePrivate::propertyChanged(property, value);
+ }
+}
diff --git a/panels/dock/tray/networkmanager-qt/src/bridgedevice.h b/panels/dock/tray/networkmanager-qt/src/bridgedevice.h
new file mode 100644
index 000000000..d60287398
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/bridgedevice.h
@@ -0,0 +1,68 @@
+/*
+ SPDX-FileCopyrightText: 2013 Jan Grulich
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
+*/
+
+#ifndef NETWORKMANAGERQT_BRIDGE_DEVICE_H
+#define NETWORKMANAGERQT_BRIDGE_DEVICE_H
+
+#include "device.h"
+#include
+
+namespace NetworkManager
+{
+class BridgeDevicePrivate;
+
+/**
+ * A bridge device interface
+ */
+class NETWORKMANAGERQT_EXPORT BridgeDevice : public Device
+{
+ Q_OBJECT
+ Q_PROPERTY(bool carrier READ carrier NOTIFY carrierChanged)
+ Q_PROPERTY(QString hwAddress READ hwAddress NOTIFY hwAddressChanged)
+ Q_PROPERTY(QStringList slaves READ slaves NOTIFY slavesChanged)
+
+public:
+ typedef QSharedPointer Ptr;
+ typedef QList List;
+ explicit BridgeDevice(const QString &path, QObject *parent = nullptr);
+ ~BridgeDevice() override;
+
+ Type type() const override;
+
+ /**
+ * Indicates whether the physical carrier is found
+ */
+ bool carrier() const;
+ /**
+ * Hardware address of the device
+ */
+ QString hwAddress() const;
+ /**
+ * Array of object paths representing devices which are currently slaved to this device
+ */
+ QStringList slaves() const;
+
+Q_SIGNALS:
+ /**
+ * Emitted when the carrier of this device has changed
+ */
+ void carrierChanged(bool plugged);
+ /**
+ * Emitted when the hardware address of this device has changed
+ */
+ void hwAddressChanged(const QString &address);
+ /**
+ * Emitted when the slaves of this device have changed
+ */
+ void slavesChanged(const QStringList &slaves);
+
+private:
+ Q_DECLARE_PRIVATE(BridgeDevice)
+};
+
+}
+
+#endif
diff --git a/panels/dock/tray/networkmanager-qt/src/bridgedevice_p.h b/panels/dock/tray/networkmanager-qt/src/bridgedevice_p.h
new file mode 100644
index 000000000..d7537aad1
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/bridgedevice_p.h
@@ -0,0 +1,39 @@
+/*
+ SPDX-FileCopyrightText: 2014 Jan Grulich
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
+*/
+
+#ifndef NETWORKMANAGERQT_BRIDGE_DEVICE_P_H
+#define NETWORKMANAGERQT_BRIDGE_DEVICE_P_H
+
+#include "bridgedevice.h"
+#include "device_p.h"
+#include "manager.h"
+
+#include "bridgedeviceinterface.h"
+
+namespace NetworkManager
+{
+class BridgeDevicePrivate : public DevicePrivate
+{
+public:
+ BridgeDevicePrivate(const QString &path, BridgeDevice *q);
+ ~BridgeDevicePrivate() override;
+
+ OrgFreedesktopNetworkManagerDeviceBridgeInterface iface;
+ bool carrier;
+ QString hwAddress;
+ QStringList slaves;
+
+ Q_DECLARE_PUBLIC(BridgeDevice)
+protected:
+ /**
+ * When subclassing make sure to call the parent class method
+ * if the property was not useful to your new class
+ */
+ void propertyChanged(const QString &property, const QVariant &value) override;
+};
+}
+
+#endif
diff --git a/panels/dock/tray/networkmanager-qt/src/connection.cpp b/panels/dock/tray/networkmanager-qt/src/connection.cpp
new file mode 100644
index 000000000..488d3f532
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/connection.cpp
@@ -0,0 +1,202 @@
+/*
+ SPDX-FileCopyrightText: 2008, 2009 Will Stephenson
+ SPDX-FileCopyrightText: 2011 Ilia Kats
+ SPDX-FileCopyrightText: 2011-2013 Lamarque V. Souza
+ SPDX-FileCopyrightText: 2013 Jan Grulich
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
+*/
+
+#include "connection_p.h"
+
+#undef signals
+#include
+#define signals Q_SIGNALS
+
+#include
+#include
+
+#include "nmdebug.h"
+
+NetworkManager::ConnectionPrivate::ConnectionPrivate(const QString &path, Connection *q)
+#ifdef NMQT_STATIC
+ : iface(NetworkManagerPrivate::DBUS_SERVICE, path, QDBusConnection::sessionBus())
+#else
+ : iface(NetworkManagerPrivate::DBUS_SERVICE, path, QDBusConnection::systemBus())
+#endif
+ , q_ptr(q)
+{
+}
+
+NetworkManager::Connection::Connection(const QString &path, QObject *parent)
+ : QObject(parent)
+ , d_ptr(new ConnectionPrivate(path, this))
+{
+ Q_D(Connection);
+
+ qDBusRegisterMetaType();
+ QDBusReply reply = d->iface.GetSettings();
+ if (reply.isValid()) {
+ d->updateSettings(reply.value());
+ } else {
+ d->updateSettings();
+ }
+ d->path = path;
+ // qCDebug(NMQT) << m_connection;
+
+ connect(&d->iface, &OrgFreedesktopNetworkManagerSettingsConnectionInterface::Updated, d, &ConnectionPrivate::onConnectionUpdated);
+ connect(&d->iface, &OrgFreedesktopNetworkManagerSettingsConnectionInterface::Removed, d, &ConnectionPrivate::onConnectionRemoved);
+
+ QDBusConnection::systemBus().connect(NetworkManagerPrivate::DBUS_SERVICE,
+ d->path,
+ NetworkManagerPrivate::FDO_DBUS_PROPERTIES,
+ QLatin1String("PropertiesChanged"),
+ d,
+ SLOT(dbusPropertiesChanged(QString, QVariantMap, QStringList)));
+ d->unsaved = d->iface.unsaved();
+}
+
+NetworkManager::Connection::~Connection()
+{
+ delete d_ptr;
+}
+
+bool NetworkManager::Connection::isValid() const
+{
+ Q_D(const Connection);
+ return d->iface.isValid();
+}
+
+QString NetworkManager::Connection::uuid() const
+{
+ Q_D(const Connection);
+ return d->uuid;
+}
+
+QString NetworkManager::Connection::name() const
+{
+ Q_D(const Connection);
+ return d->id;
+}
+
+bool NetworkManager::Connection::isUnsaved() const
+{
+ Q_D(const Connection);
+ return d->unsaved;
+}
+
+NetworkManager::ConnectionSettings::Ptr NetworkManager::Connection::settings()
+{
+ Q_D(Connection);
+
+ if (d->connection.isNull()) {
+ d->connection = ConnectionSettings::Ptr(new ConnectionSettings(d->settings));
+ }
+ return d->connection;
+}
+
+QDBusPendingReply NetworkManager::Connection::secrets(const QString &setting)
+{
+ Q_D(Connection);
+ return d->iface.GetSecrets(setting);
+}
+
+QDBusPendingReply<> NetworkManager::Connection::update(const NMVariantMapMap &settings)
+{
+ Q_D(Connection);
+ return d->iface.Update(settings);
+}
+
+QDBusPendingReply<> NetworkManager::Connection::updateUnsaved(const NMVariantMapMap &settings)
+{
+ Q_D(Connection);
+ return d->iface.UpdateUnsaved(settings);
+}
+
+QDBusPendingReply<> NetworkManager::Connection::save()
+{
+ Q_D(Connection);
+ return d->iface.Save();
+}
+
+QDBusPendingReply<> NetworkManager::Connection::clearSecrets()
+{
+ Q_D(Connection);
+ return d->iface.ClearSecrets();
+}
+
+QDBusPendingReply<> NetworkManager::Connection::remove()
+{
+ Q_D(Connection);
+ return d->iface.Delete();
+}
+
+QString NetworkManager::Connection::path() const
+{
+ Q_D(const Connection);
+ return d->path;
+}
+
+void NetworkManager::ConnectionPrivate::onConnectionUpdated()
+{
+ Q_Q(Connection);
+ QDBusReply reply = iface.GetSettings();
+ if (reply.isValid()) {
+ updateSettings(reply.value());
+ } else {
+ updateSettings();
+ }
+ Q_EMIT q->updated();
+}
+
+void NetworkManager::ConnectionPrivate::onConnectionRemoved()
+{
+ Q_Q(Connection);
+ QString tmpPath = path;
+ updateSettings();
+ Q_EMIT q->removed(tmpPath);
+}
+
+void NetworkManager::ConnectionPrivate::dbusPropertiesChanged(const QString &interfaceName,
+ const QVariantMap &properties,
+ const QStringList &invalidatedProperties)
+{
+ Q_UNUSED(invalidatedProperties);
+ if (interfaceName == QLatin1String("org.freedesktop.NetworkManager.Settings.Connection")) {
+ onPropertiesChanged(properties);
+ }
+}
+
+void NetworkManager::ConnectionPrivate::onPropertiesChanged(const QVariantMap &properties)
+{
+ Q_Q(Connection);
+ QVariantMap::const_iterator it = properties.constBegin();
+ while (it != properties.constEnd()) {
+ const QString property = it.key();
+ if (property == QLatin1String("Unsaved")) {
+ unsaved = it->toBool();
+ Q_EMIT q->unsavedChanged(unsaved);
+ } else {
+ qCWarning(NMQT) << Q_FUNC_INFO << "Unhandled property" << property;
+ }
+ ++it;
+ }
+}
+
+void NetworkManager::ConnectionPrivate::updateSettings(const NMVariantMapMap &newSettings)
+{
+ settings = newSettings;
+ if (settings.contains(QLatin1String(NM_SETTING_CONNECTION_SETTING_NAME))) {
+ QVariantMap connectionSetting = settings.value(QLatin1String(NM_SETTING_CONNECTION_SETTING_NAME));
+ if (connectionSetting.contains(QLatin1String(NM_SETTING_CONNECTION_UUID))) {
+ uuid = connectionSetting.value(QLatin1String(NM_SETTING_CONNECTION_UUID)).toString();
+ }
+ if (connectionSetting.contains(QLatin1String(NM_SETTING_CONNECTION_ID))) {
+ id = connectionSetting.value(QLatin1String(NM_SETTING_CONNECTION_ID)).toString();
+ }
+ } else if (newSettings.isEmpty()) {
+ uuid.clear();
+ id.clear();
+ }
+ connection.clear();
+}
diff --git a/panels/dock/tray/networkmanager-qt/src/connection.h b/panels/dock/tray/networkmanager-qt/src/connection.h
new file mode 100644
index 000000000..0be5d2030
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/connection.h
@@ -0,0 +1,150 @@
+/*
+ SPDX-FileCopyrightText: 2008, 2009 Will Stephenson
+ SPDX-FileCopyrightText: 2011-2013 Lamarque V. Souza
+ SPDX-FileCopyrightText: 2013 Jan Grulich
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
+*/
+
+#ifndef NETWORKMANAGERQT_SETTINGS_CONNECTION_H
+#define NETWORKMANAGERQT_SETTINGS_CONNECTION_H
+
+#include "connectionsettings.h"
+#include "generictypes.h"
+#include
+
+#include
+#include
+#include
+
+class QDBusPendingCallWatcher;
+
+namespace NetworkManager
+{
+class ConnectionPrivate;
+
+/**
+ * This class represents a single network connection configuration.
+ */
+class NETWORKMANAGERQT_EXPORT Connection : public QObject
+{
+ Q_OBJECT
+public:
+ typedef QSharedPointer Ptr;
+ typedef QList List;
+
+ /**
+ * Constructs a connection object for the given path
+ */
+ explicit Connection(const QString &path, QObject *parent = nullptr);
+ ~Connection() override;
+
+ /**
+ * Returns if this connection is valid
+ */
+ bool isValid() const;
+
+ /**
+ * Returns the unique identifier of this connection
+ */
+ QString uuid() const;
+
+ /**
+ * Returns the path (DBus) of this connection
+ */
+ QString path() const;
+
+ /**
+ * Returns the name of this connection
+ */
+ QString name() const;
+ /**
+ * If set, indicates that the in-memory state of the
+ * connection does not match the on-disk state. This flag
+ * will be set when updateUnsaved() is called or when any
+ * connection details change, and cleared when the connection
+ * is saved to disk via save() or from internal operations.
+ *
+ * @since 0.9.9.0
+ */
+ bool isUnsaved() const;
+ /**
+ * Returns the settings of this connection
+ */
+ ConnectionSettings::Ptr settings();
+
+ /**
+ * Retrieves this connections's secrets (passwords and / or encryption keys).
+ *
+ * @param setting the setting identifier.
+ */
+ QDBusPendingReply secrets(const QString &setting);
+
+ /**
+ * Update the connection with new @p settings and properties, replacing all previous settings and properties.
+ * Secrets may be part of the update request, and will be either stored in persistent storage or given to a Secret Agent for storage,
+ * depending on the request.
+ */
+ QDBusPendingReply<> update(const NMVariantMapMap &settings);
+ /**
+ * Update the connection with new @p settings and properties (replacing
+ * all previous settings and properties) but do not immediately save
+ * the connection to disk. Secrets may be part of the update request
+ * and may sent to a Secret Agent for storage, depending on the
+ * flags associated with each secret.
+ *
+ * Use the save() method to save these changes to disk. Note
+ * that unsaved changes will be lost if the connection is
+ * reloaded from disk (either automatically on file change or
+ * due to an explicit reloadConnections() call).
+ *
+ * @since 0.9.9.0
+ */
+ QDBusPendingReply<> updateUnsaved(const NMVariantMapMap &settings);
+
+ /**
+ * Saves a "dirty" connection (that had previously been
+ * updated with updateUnsaved()) to persistent storage.
+ *
+ * @since 0.9.9.0
+ */
+ QDBusPendingReply<> save();
+
+ /**
+ * Clear the secrets belonging to this network connection profile.
+ * @since 5.8.0
+ */
+ QDBusPendingReply<> clearSecrets();
+
+ /**
+ * Removes the connection from NetworkManager database,
+ * this operation does not ask for confirmation but
+ * a policykit rule might prevent it from being removed
+ * without the proper password.
+ */
+ QDBusPendingReply<> remove();
+
+Q_SIGNALS:
+ /**
+ * Emitted when the connection settings changes
+ */
+ void updated();
+
+ /**
+ * Emitted when the connection was removed
+ * @param path connections's path.
+ */
+ void removed(const QString &path);
+ /**
+ * Emitted when the connection unsaved state changes
+ */
+ void unsavedChanged(bool unsaved);
+
+private:
+ Q_DECLARE_PRIVATE(Connection)
+
+ ConnectionPrivate *const d_ptr;
+};
+
+}
+#endif // CONNECTION_H
diff --git a/panels/dock/tray/networkmanager-qt/src/connection_p.h b/panels/dock/tray/networkmanager-qt/src/connection_p.h
new file mode 100644
index 000000000..f26016da8
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/connection_p.h
@@ -0,0 +1,48 @@
+/*
+ SPDX-FileCopyrightText: 2008, 2009 Will Stephenson
+ SPDX-FileCopyrightText: 2011-2013 Lamarque V. Souza
+ SPDX-FileCopyrightText: 2013-2014 Jan Grulich
+
+ SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
+*/
+
+#ifndef NETWORKMANAGERQT_SETTINGS_CONNECTION_P_H
+#define NETWORKMANAGERQT_SETTINGS_CONNECTION_P_H
+
+#include "connection.h"
+#include "connectioninterface.h"
+#include "device.h"
+#include "generictypes.h"
+#include "manager_p.h"
+
+class QDBusPendingCallWatcher;
+
+namespace NetworkManager
+{
+class ConnectionPrivate : public QObject
+{
+ Q_OBJECT
+public:
+ ConnectionPrivate(const QString &path, Connection *q);
+
+ void updateSettings(const NMVariantMapMap &newSettings = NMVariantMapMap());
+ bool unsaved;
+ QString uuid;
+ QString id;
+ NMVariantMapMap settings;
+ ConnectionSettings::Ptr connection;
+ QString path;
+ OrgFreedesktopNetworkManagerSettingsConnectionInterface iface;
+
+ Q_DECLARE_PUBLIC(Connection)
+ Connection *q_ptr;
+private Q_SLOTS:
+ void onConnectionUpdated();
+ void onConnectionRemoved();
+ void dbusPropertiesChanged(const QString &interfaceName, const QVariantMap &properties, const QStringList &invalidatedProperties);
+ void onPropertiesChanged(const QVariantMap &properties);
+};
+
+}
+
+#endif
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/CMakeLists.txt b/panels/dock/tray/networkmanager-qt/src/dbus/CMakeLists.txt
new file mode 100644
index 000000000..1616f80ee
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/CMakeLists.txt
@@ -0,0 +1,75 @@
+# Steps to generate the dbus interface files
+# 1) Place the NetworkManager introspection dbus xml in introspection/
+# 2) Update the list of xml files below that we want to generate interfaces for
+# 3) Enable dbus subdirectory in ../CMakeLists.txt
+# Make, in order to generate the interface sources
+# 3.1) Add annotations to the xml so qdbusxml2cpp knows what type or typedef to use
+# Add typedefs as needed to generictypes.h
+# 4) Add the list of generated files needed for the plugin to FILES_TO_BUILD
+# 6) Copy the working generated interface sources into the source dir
+# 5) Edit the sources as required to get them to build
+# 5.1) Fix the inclusion guards as the compiler ignores anything after a '-' so the compiler thinks
+# headers have already been included
+# Run do-hand-edits to update the diff of the interfaces vs what is generated; this speeds up regenerating them since you just have to apply the diff to make them compile
+
+set(INTERFACE_INTROSPECTION_XML_FILES
+ introspection/nm-agent-manager.xml
+ introspection/org.freedesktop.NetworkManager.AccessPoint.xml
+ introspection/org.freedesktop.NetworkManager.AgentManager.xml
+ introspection/org.freedesktop.NetworkManager.Connection.Active.xml
+ introspection/org.freedesktop.NetworkManager.Device.Adsl.xml
+ introspection/org.freedesktop.NetworkManager.Device.Bluetooth.xml
+ introspection/org.freedesktop.NetworkManager.Device.Bond.xml
+ introspection/org.freedesktop.NetworkManager.Device.Bridge.xml
+ introspection/org.freedesktop.NetworkManager.Device.Generic.xml
+ introspection/org.freedesktop.NetworkManager.Device.Gre.xml
+ introspection/org.freedesktop.NetworkManager.Device.Infiniband.xml
+ introspection/org.freedesktop.NetworkManager.Device.IPTunnel.xml
+ introspection/org.freedesktop.NetworkManager.Device.Macsec.xml
+ introspection/org.freedesktop.NetworkManager.Device.Macvlan.xml
+ introspection/org.freedesktop.NetworkManager.Device.Modem.xml
+ introspection/org.freedesktop.NetworkManager.Device.OlpcMesh.xml
+ introspection/org.freedesktop.NetworkManager.Device.Statistics.xml
+ introspection/org.freedesktop.NetworkManager.Device.Team.xml
+ introspection/org.freedesktop.NetworkManager.Device.Tun.xml
+ introspection/org.freedesktop.NetworkManager.Device.Veth.xml
+ introspection/org.freedesktop.NetworkManager.Device.Vlan.xml
+ introspection/org.freedesktop.NetworkManager.Device.Vxlan.xml
+ introspection/org.freedesktop.NetworkManager.Device.WiMax.xml
+ introspection/org.freedesktop.NetworkManager.Device.Wired.xml
+ introspection/org.freedesktop.NetworkManager.Device.Wireless.xml
+ introspection/org.freedesktop.NetworkManager.Device.xml
+ introspection/org.freedesktop.NetworkManager.DHCP4Config.xml
+ introspection/org.freedesktop.NetworkManager.DHCP6Config.xml
+ introspection/org.freedesktop.NetworkManager.DnsManager.xml
+ introspection/org.freedesktop.NetworkManager.Checkpoint.xml
+ introspection/org.freedesktop.NetworkManager.IP4Config.xml
+ introspection/org.freedesktop.NetworkManager.IP6Config.xml
+ introspection/org.freedesktop.NetworkManager.PPP.xml
+# introspection/org.freedesktop.NetworkManager.Settings.Connection.xml
+ introspection/org.freedesktop.NetworkManager.Settings.xml
+ introspection/org.freedesktop.NetworkManager.VPN.Connection.xml
+ introspection/org.freedesktop.NetworkManager.VPN.Plugin.xml
+ introspection/org.freedesktop.NetworkManager.WiMax.Nsp.xml
+ introspection/org.freedesktop.NetworkManager.xml
+ )
+
+set_property(SOURCE ${INTERFACE_INTROSPECTION_XML_FILES} PROPERTY INCLUDE generictypes.h)
+
+set(ADAPTER_INTROSPECTION_XML_FILES
+ )
+
+set_source_files_properties(${INTERFACE_INTROSPECTION_XML_FILES} ${ADAPTER_INTROSPECTION_XML_FILES} PROPERTIES NO_NAMESPACE TRUE)
+
+set(FILES_TO_BUILD
+ )
+
+qt_add_dbus_interfaces(FILES_TO_BUILD ${INTERFACE_INTROSPECTION_XML_FILES})
+qt_add_dbus_adaptor(FILES_TO_BUILD introspection/org.freedesktop.NetworkManager.SecretAgent.xml "secretagent.h" "NetworkManager::SecretAgent")
+foreach(adaptor ${ADAPTER_INTROSPECTION_XML_FILES})
+ qt_add_dbus_adaptor(FILES_TO_BUILD ${adaptor} "generictypes.h")
+endforeach(adaptor ${ADAPTER_INTROSPECTION_XML_FILES})
+
+add_library(networkmanagerdbus ${FILES_TO_BUILD})
+
+target_link_libraries(networkmanagerdbus ${QT_QTCORE_LIBRARY} ${QT_QTDBUS_LIBRARY})
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/accesspointinterface.cpp b/panels/dock/tray/networkmanager-qt/src/dbus/accesspointinterface.cpp
new file mode 100644
index 000000000..cb513fabc
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/accesspointinterface.cpp
@@ -0,0 +1,28 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * This file may have been hand-edited. Look for HAND-EDIT comments
+ * before re-generating it.
+ */
+
+#include "accesspointinterface.h"
+
+/*
+ * Implementation of interface class OrgFreedesktopNetworkManagerAccessPointInterface
+ */
+
+OrgFreedesktopNetworkManagerAccessPointInterface::OrgFreedesktopNetworkManagerAccessPointInterface(const QString &service,
+ const QString &path,
+ const QDBusConnection &connection,
+ QObject *parent)
+ : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent)
+{
+}
+
+OrgFreedesktopNetworkManagerAccessPointInterface::~OrgFreedesktopNetworkManagerAccessPointInterface()
+{
+}
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/accesspointinterface.h b/panels/dock/tray/networkmanager-qt/src/dbus/accesspointinterface.h
new file mode 100644
index 000000000..416fda83e
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/accesspointinterface.h
@@ -0,0 +1,109 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * Do not edit! All changes made to it will be lost.
+ */
+
+#ifndef ACCESSPOINTINTERFACE_H
+#define ACCESSPOINTINTERFACE_H
+
+#include "generictypes.h"
+
+#include
+#include
+#include
+#include
+#include
+
+/*
+ * Proxy class for interface org.freedesktop.NetworkManager.AccessPoint
+ */
+class OrgFreedesktopNetworkManagerAccessPointInterface : public QDBusAbstractInterface
+{
+ Q_OBJECT
+public:
+ static inline const char *staticInterfaceName()
+#ifdef NMQT_STATIC
+ {
+ return "org.kde.fakenetwork.AccessPoint";
+ }
+#else
+ {
+ return "org.freedesktop.NetworkManager.AccessPoint";
+ }
+#endif
+public:
+ OrgFreedesktopNetworkManagerAccessPointInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = nullptr);
+
+ ~OrgFreedesktopNetworkManagerAccessPointInterface() override;
+
+ Q_PROPERTY(uint Flags READ flags)
+ inline uint flags() const
+ {
+ return qvariant_cast(property("Flags"));
+ }
+
+ Q_PROPERTY(uint Frequency READ frequency)
+ inline uint frequency() const
+ {
+ return qvariant_cast(property("Frequency"));
+ }
+
+ Q_PROPERTY(QString HwAddress READ hwAddress)
+ inline QString hwAddress() const
+ {
+ return qvariant_cast(property("HwAddress"));
+ }
+
+ Q_PROPERTY(int LastSeen READ lastSeen)
+ inline int lastSeen() const
+ {
+ return qvariant_cast(property("LastSeen"));
+ }
+
+ Q_PROPERTY(uint MaxBitrate READ maxBitrate)
+ inline uint maxBitrate() const
+ {
+ return qvariant_cast(property("MaxBitrate"));
+ }
+
+ Q_PROPERTY(uint Mode READ mode)
+ inline uint mode() const
+ {
+ return qvariant_cast(property("Mode"));
+ }
+
+ Q_PROPERTY(uint RsnFlags READ rsnFlags)
+ inline uint rsnFlags() const
+ {
+ return qvariant_cast(property("RsnFlags"));
+ }
+
+ Q_PROPERTY(QByteArray Ssid READ ssid)
+ inline QByteArray ssid() const
+ {
+ return qvariant_cast(property("Ssid"));
+ }
+
+ Q_PROPERTY(uchar Strength READ strength)
+ inline uchar strength() const
+ {
+ return qvariant_cast(property("Strength"));
+ }
+
+ Q_PROPERTY(uint WpaFlags READ wpaFlags)
+ inline uint wpaFlags() const
+ {
+ return qvariant_cast(property("WpaFlags"));
+ }
+
+public Q_SLOTS: // METHODS
+Q_SIGNALS: // SIGNALS
+ void PropertiesChanged(const QVariantMap &properties);
+};
+
+#endif
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/activeconnectioninterface.cpp b/panels/dock/tray/networkmanager-qt/src/dbus/activeconnectioninterface.cpp
new file mode 100644
index 000000000..74cb343f6
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/activeconnectioninterface.cpp
@@ -0,0 +1,28 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * This file may have been hand-edited. Look for HAND-EDIT comments
+ * before re-generating it.
+ */
+
+#include "activeconnectioninterface.h"
+
+/*
+ * Implementation of interface class OrgFreedesktopNetworkManagerConnectionActiveInterface
+ */
+
+OrgFreedesktopNetworkManagerConnectionActiveInterface::OrgFreedesktopNetworkManagerConnectionActiveInterface(const QString &service,
+ const QString &path,
+ const QDBusConnection &connection,
+ QObject *parent)
+ : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent)
+{
+}
+
+OrgFreedesktopNetworkManagerConnectionActiveInterface::~OrgFreedesktopNetworkManagerConnectionActiveInterface()
+{
+}
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/activeconnectioninterface.h b/panels/dock/tray/networkmanager-qt/src/dbus/activeconnectioninterface.h
new file mode 100644
index 000000000..dd402ec77
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/activeconnectioninterface.h
@@ -0,0 +1,144 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * Do not edit! All changes made to it will be lost.
+ */
+
+#ifndef ACTIVECONNECTIONINTERFACE_H
+#define ACTIVECONNECTIONINTERFACE_H
+
+#include "generictypes.h"
+
+#include
+#include
+#include
+#include
+#include
+
+/*
+ * Proxy class for interface org.freedesktop.NetworkManager.Connection.Active
+ */
+class OrgFreedesktopNetworkManagerConnectionActiveInterface : public QDBusAbstractInterface
+{
+ Q_OBJECT
+public:
+ static inline const char *staticInterfaceName()
+#ifdef NMQT_STATIC
+ {
+ return "org.kde.fakenetwork.Connection.Active";
+ }
+#else
+ {
+ return "org.freedesktop.NetworkManager.Connection.Active";
+ }
+#endif
+
+public:
+ OrgFreedesktopNetworkManagerConnectionActiveInterface(const QString &service,
+ const QString &path,
+ const QDBusConnection &connection,
+ QObject *parent = nullptr);
+
+ ~OrgFreedesktopNetworkManagerConnectionActiveInterface() override;
+
+ Q_PROPERTY(QDBusObjectPath Connection READ connection)
+ inline QDBusObjectPath connection() const
+ {
+ return qvariant_cast(property("Connection"));
+ }
+
+ Q_PROPERTY(bool Default READ default4)
+ inline bool default4() const
+ {
+ return qvariant_cast(property("Default"));
+ }
+
+ Q_PROPERTY(bool Default6 READ default6)
+ inline bool default6() const
+ {
+ return qvariant_cast(property("Default6"));
+ }
+
+ Q_PROPERTY(QList Devices READ devices)
+ inline QList devices() const
+ {
+ return qvariant_cast>(property("Devices"));
+ }
+
+ Q_PROPERTY(QDBusObjectPath Dhcp4Config READ dhcp4Config)
+ inline QDBusObjectPath dhcp4Config() const
+ {
+ return qvariant_cast(property("Dhcp4Config"));
+ }
+
+ Q_PROPERTY(QDBusObjectPath Dhcp6Config READ dhcp6Config)
+ inline QDBusObjectPath dhcp6Config() const
+ {
+ return qvariant_cast(property("Dhcp6Config"));
+ }
+
+ Q_PROPERTY(QString Id READ id)
+ inline QString id() const
+ {
+ return qvariant_cast(property("Id"));
+ }
+
+ Q_PROPERTY(QDBusObjectPath Ip4Config READ ip4Config)
+ inline QDBusObjectPath ip4Config() const
+ {
+ return qvariant_cast(property("Ip4Config"));
+ }
+
+ Q_PROPERTY(QDBusObjectPath Ip6Config READ ip6Config)
+ inline QDBusObjectPath ip6Config() const
+ {
+ return qvariant_cast(property("Ip6Config"));
+ }
+
+ Q_PROPERTY(QDBusObjectPath Master READ master)
+ inline QDBusObjectPath master() const
+ {
+ return qvariant_cast(property("Master"));
+ }
+
+ Q_PROPERTY(QDBusObjectPath SpecificObject READ specificObject)
+ inline QDBusObjectPath specificObject() const
+ {
+ return qvariant_cast(property("SpecificObject"));
+ }
+
+ Q_PROPERTY(uint State READ state)
+ inline uint state() const
+ {
+ return qvariant_cast(property("State"));
+ }
+
+ Q_PROPERTY(QString Type READ type)
+ inline QString type() const
+ {
+ return qvariant_cast(property("Type"));
+ }
+
+ Q_PROPERTY(QString Uuid READ uuid)
+ inline QString uuid() const
+ {
+ return qvariant_cast(property("Uuid"));
+ }
+
+ Q_PROPERTY(bool Vpn READ vpn)
+ inline bool vpn() const
+ {
+ return qvariant_cast(property("Vpn"));
+ }
+
+public Q_SLOTS: // METHODS
+Q_SIGNALS: // SIGNALS
+ void PropertiesChanged(const QVariantMap &properties);
+ void StateChanged(uint state, uint reason);
+};
+
+#endif
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/adsldeviceinterface.cpp b/panels/dock/tray/networkmanager-qt/src/dbus/adsldeviceinterface.cpp
new file mode 100644
index 000000000..af1339f53
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/adsldeviceinterface.cpp
@@ -0,0 +1,28 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * This file may have been hand-edited. Look for HAND-EDIT comments
+ * before re-generating it.
+ */
+
+#include "adsldeviceinterface.h"
+
+/*
+ * Implementation of interface class OrgFreedesktopNetworkManagerDeviceAdslInterface
+ */
+
+OrgFreedesktopNetworkManagerDeviceAdslInterface::OrgFreedesktopNetworkManagerDeviceAdslInterface(const QString &service,
+ const QString &path,
+ const QDBusConnection &connection,
+ QObject *parent)
+ : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent)
+{
+}
+
+OrgFreedesktopNetworkManagerDeviceAdslInterface::~OrgFreedesktopNetworkManagerDeviceAdslInterface()
+{
+}
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/adsldeviceinterface.h b/panels/dock/tray/networkmanager-qt/src/dbus/adsldeviceinterface.h
new file mode 100644
index 000000000..cf0f50761
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/adsldeviceinterface.h
@@ -0,0 +1,55 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * Do not edit! All changes made to it will be lost.
+ */
+
+#ifndef ADSLDEVICEINTERFACE_H
+#define ADSLDEVICEINTERFACE_H
+
+#include "generictypes.h"
+
+#include
+#include
+#include
+#include
+
+/*
+ * Proxy class for interface org.freedesktop.NetworkManager.Device.Adsl
+ */
+class OrgFreedesktopNetworkManagerDeviceAdslInterface : public QDBusAbstractInterface
+{
+ Q_OBJECT
+public:
+ static inline const char *staticInterfaceName()
+#ifdef NMQT_STATIC
+ {
+ return "org.kde.fakenetwork.Device.Adsl";
+ }
+#else
+ {
+ return "org.freedesktop.NetworkManager.Device.Adsl";
+ }
+#endif
+
+public:
+ OrgFreedesktopNetworkManagerDeviceAdslInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = nullptr);
+
+ ~OrgFreedesktopNetworkManagerDeviceAdslInterface() override;
+
+ Q_PROPERTY(bool Carrier READ carrier)
+ inline bool carrier() const
+ {
+ return qvariant_cast(property("Carrier"));
+ }
+
+public Q_SLOTS: // METHODS
+Q_SIGNALS: // SIGNALS
+ void PropertiesChanged(const QVariantMap &properties);
+};
+
+#endif
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/agentmanagerinterface.cpp b/panels/dock/tray/networkmanager-qt/src/dbus/agentmanagerinterface.cpp
new file mode 100644
index 000000000..b6f1d8426
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/agentmanagerinterface.cpp
@@ -0,0 +1,28 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * This file may have been hand-edited. Look for HAND-EDIT comments
+ * before re-generating it.
+ */
+
+#include "agentmanagerinterface.h"
+
+/*
+ * Implementation of interface class OrgFreedesktopNetworkManagerAgentManagerInterface
+ */
+
+OrgFreedesktopNetworkManagerAgentManagerInterface::OrgFreedesktopNetworkManagerAgentManagerInterface(const QString &service,
+ const QString &path,
+ const QDBusConnection &connection,
+ QObject *parent)
+ : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent)
+{
+}
+
+OrgFreedesktopNetworkManagerAgentManagerInterface::~OrgFreedesktopNetworkManagerAgentManagerInterface()
+{
+}
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/agentmanagerinterface.h b/panels/dock/tray/networkmanager-qt/src/dbus/agentmanagerinterface.h
new file mode 100644
index 000000000..9ef7f67a3
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/agentmanagerinterface.h
@@ -0,0 +1,72 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * Do not edit! All changes made to it will be lost.
+ */
+
+#ifndef AGENTMANAGERINTERFACE_H
+#define AGENTMANAGERINTERFACE_H
+
+#include "generictypes.h"
+
+#include
+#include
+#include
+#include
+#include
+
+/*
+ * Proxy class for interface org.freedesktop.NetworkManager.AgentManager
+ */
+class OrgFreedesktopNetworkManagerAgentManagerInterface : public QDBusAbstractInterface
+{
+ Q_OBJECT
+public:
+ static inline const char *staticInterfaceName()
+#ifdef NMQT_STATIC
+ {
+ return "org.kde.fakenetwork.AgentManager";
+ }
+#else
+ {
+ return "org.freedesktop.NetworkManager.AgentManager";
+ }
+#endif
+
+public:
+ OrgFreedesktopNetworkManagerAgentManagerInterface(const QString &service,
+ const QString &path,
+ const QDBusConnection &connection,
+ QObject *parent = nullptr);
+
+ ~OrgFreedesktopNetworkManagerAgentManagerInterface() override;
+
+public Q_SLOTS: // METHODS
+ inline QDBusPendingReply<> Register(const QString &identifier)
+ {
+ QList argumentList;
+ argumentList << QVariant::fromValue(identifier);
+ return asyncCallWithArgumentList(QStringLiteral("Register"), argumentList);
+ }
+
+ inline QDBusPendingReply<> RegisterWithCapabilities(const QString &identifier, uint capabilities)
+ {
+ QList argumentList;
+ argumentList << QVariant::fromValue(identifier) << QVariant::fromValue(capabilities);
+ return asyncCallWithArgumentList(QStringLiteral("RegisterWithCapabilities"), argumentList);
+ }
+
+ inline QDBusPendingReply<> Unregister()
+ {
+ QList argumentList;
+ return asyncCallWithArgumentList(QStringLiteral("Unregister"), argumentList);
+ }
+
+Q_SIGNALS: // SIGNALS
+};
+
+#endif
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/bluetoothdeviceinterface.cpp b/panels/dock/tray/networkmanager-qt/src/dbus/bluetoothdeviceinterface.cpp
new file mode 100644
index 000000000..23018e113
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/bluetoothdeviceinterface.cpp
@@ -0,0 +1,28 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * This file may have been hand-edited. Look for HAND-EDIT comments
+ * before re-generating it.
+ */
+
+#include "bluetoothdeviceinterface.h"
+
+/*
+ * Implementation of interface class OrgFreedesktopNetworkManagerDeviceBluetoothInterface
+ */
+
+OrgFreedesktopNetworkManagerDeviceBluetoothInterface::OrgFreedesktopNetworkManagerDeviceBluetoothInterface(const QString &service,
+ const QString &path,
+ const QDBusConnection &connection,
+ QObject *parent)
+ : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent)
+{
+}
+
+OrgFreedesktopNetworkManagerDeviceBluetoothInterface::~OrgFreedesktopNetworkManagerDeviceBluetoothInterface()
+{
+}
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/bluetoothdeviceinterface.h b/panels/dock/tray/networkmanager-qt/src/dbus/bluetoothdeviceinterface.h
new file mode 100644
index 000000000..f71850276
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/bluetoothdeviceinterface.h
@@ -0,0 +1,70 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * Do not edit! All changes made to it will be lost.
+ */
+
+#ifndef BLUETOOTHDEVICEINTERFACE_H
+#define BLUETOOTHDEVICEINTERFACE_H
+
+#include "generictypes.h"
+
+#include
+#include
+#include
+#include
+
+/*
+ * Proxy class for interface org.freedesktop.NetworkManager.Device.Bluetooth
+ */
+class OrgFreedesktopNetworkManagerDeviceBluetoothInterface : public QDBusAbstractInterface
+{
+ Q_OBJECT
+public:
+ static inline const char *staticInterfaceName()
+#ifdef NMQT_STATIC
+ {
+ return "org.kde.fakenetwork.Device.Bluetooth";
+ }
+#else
+ {
+ return "org.freedesktop.NetworkManager.Device.Bluetooth";
+ }
+#endif
+
+public:
+ OrgFreedesktopNetworkManagerDeviceBluetoothInterface(const QString &service,
+ const QString &path,
+ const QDBusConnection &connection,
+ QObject *parent = nullptr);
+
+ ~OrgFreedesktopNetworkManagerDeviceBluetoothInterface() override;
+
+ Q_PROPERTY(uint BtCapabilities READ btCapabilities)
+ inline uint btCapabilities() const
+ {
+ return qvariant_cast(property("BtCapabilities"));
+ }
+
+ Q_PROPERTY(QString HwAddress READ hwAddress)
+ inline QString hwAddress() const
+ {
+ return qvariant_cast(property("HwAddress"));
+ }
+
+ Q_PROPERTY(QString Name READ name)
+ inline QString name() const
+ {
+ return qvariant_cast(property("Name"));
+ }
+
+public Q_SLOTS: // METHODS
+Q_SIGNALS: // SIGNALS
+ void PropertiesChanged(const QVariantMap &properties);
+};
+
+#endif
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/bonddeviceinterface.cpp b/panels/dock/tray/networkmanager-qt/src/dbus/bonddeviceinterface.cpp
new file mode 100644
index 000000000..3b5c2c02a
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/bonddeviceinterface.cpp
@@ -0,0 +1,28 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * This file may have been hand-edited. Look for HAND-EDIT comments
+ * before re-generating it.
+ */
+
+#include "bonddeviceinterface.h"
+
+/*
+ * Implementation of interface class OrgFreedesktopNetworkManagerDeviceBondInterface
+ */
+
+OrgFreedesktopNetworkManagerDeviceBondInterface::OrgFreedesktopNetworkManagerDeviceBondInterface(const QString &service,
+ const QString &path,
+ const QDBusConnection &connection,
+ QObject *parent)
+ : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent)
+{
+}
+
+OrgFreedesktopNetworkManagerDeviceBondInterface::~OrgFreedesktopNetworkManagerDeviceBondInterface()
+{
+}
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/bonddeviceinterface.h b/panels/dock/tray/networkmanager-qt/src/dbus/bonddeviceinterface.h
new file mode 100644
index 000000000..2a4016b1f
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/bonddeviceinterface.h
@@ -0,0 +1,68 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * Do not edit! All changes made to it will be lost.
+ */
+
+#ifndef BONDDEVICEINTERFACE_H
+#define BONDDEVICEINTERFACE_H
+
+#include "generictypes.h"
+
+#include
+#include
+#include
+#include
+#include
+
+/*
+ * Proxy class for interface org.freedesktop.NetworkManager.Device.Bond
+ */
+class OrgFreedesktopNetworkManagerDeviceBondInterface : public QDBusAbstractInterface
+{
+ Q_OBJECT
+public:
+ static inline const char *staticInterfaceName()
+#ifdef NMQT_STATIC
+ {
+ return "org.kde.fakenetwork.Device.Bond";
+ }
+#else
+ {
+ return "org.freedesktop.NetworkManager.Device.Bond";
+ }
+#endif
+
+public:
+ OrgFreedesktopNetworkManagerDeviceBondInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = nullptr);
+
+ ~OrgFreedesktopNetworkManagerDeviceBondInterface() override;
+
+ Q_PROPERTY(bool Carrier READ carrier)
+ inline bool carrier() const
+ {
+ return qvariant_cast(property("Carrier"));
+ }
+
+ Q_PROPERTY(QString HwAddress READ hwAddress)
+ inline QString hwAddress() const
+ {
+ return qvariant_cast(property("HwAddress"));
+ }
+
+ Q_PROPERTY(QList Slaves READ slaves)
+ inline QList slaves() const
+ {
+ return qvariant_cast>(property("Slaves"));
+ }
+
+public Q_SLOTS: // METHODS
+Q_SIGNALS: // SIGNALS
+ void PropertiesChanged(const QVariantMap &properties);
+};
+
+#endif
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/bridgedeviceinterface.cpp b/panels/dock/tray/networkmanager-qt/src/dbus/bridgedeviceinterface.cpp
new file mode 100644
index 000000000..9c2b78de4
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/bridgedeviceinterface.cpp
@@ -0,0 +1,28 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * This file may have been hand-edited. Look for HAND-EDIT comments
+ * before re-generating it.
+ */
+
+#include "bridgedeviceinterface.h"
+
+/*
+ * Implementation of interface class OrgFreedesktopNetworkManagerDeviceBridgeInterface
+ */
+
+OrgFreedesktopNetworkManagerDeviceBridgeInterface::OrgFreedesktopNetworkManagerDeviceBridgeInterface(const QString &service,
+ const QString &path,
+ const QDBusConnection &connection,
+ QObject *parent)
+ : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent)
+{
+}
+
+OrgFreedesktopNetworkManagerDeviceBridgeInterface::~OrgFreedesktopNetworkManagerDeviceBridgeInterface()
+{
+}
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/bridgedeviceinterface.h b/panels/dock/tray/networkmanager-qt/src/dbus/bridgedeviceinterface.h
new file mode 100644
index 000000000..9acd43973
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/bridgedeviceinterface.h
@@ -0,0 +1,71 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * Do not edit! All changes made to it will be lost.
+ */
+
+#ifndef BRIDGEDEVICEINTERFACE_H
+#define BRIDGEDEVICEINTERFACE_H
+
+#include "generictypes.h"
+
+#include
+#include
+#include
+#include
+#include
+
+/*
+ * Proxy class for interface org.freedesktop.NetworkManager.Device.Bridge
+ */
+class OrgFreedesktopNetworkManagerDeviceBridgeInterface : public QDBusAbstractInterface
+{
+ Q_OBJECT
+public:
+ static inline const char *staticInterfaceName()
+#ifdef NMQT_STATIC
+ {
+ return "org.kde.fakenetwork.Device.Bridge";
+ }
+#else
+ {
+ return "org.freedesktop.NetworkManager.Device.Bridge";
+ }
+#endif
+
+public:
+ OrgFreedesktopNetworkManagerDeviceBridgeInterface(const QString &service,
+ const QString &path,
+ const QDBusConnection &connection,
+ QObject *parent = nullptr);
+
+ ~OrgFreedesktopNetworkManagerDeviceBridgeInterface() override;
+
+ Q_PROPERTY(bool Carrier READ carrier)
+ inline bool carrier() const
+ {
+ return qvariant_cast(property("Carrier"));
+ }
+
+ Q_PROPERTY(QString HwAddress READ hwAddress)
+ inline QString hwAddress() const
+ {
+ return qvariant_cast(property("HwAddress"));
+ }
+
+ Q_PROPERTY(QList Slaves READ slaves)
+ inline QList slaves() const
+ {
+ return qvariant_cast>(property("Slaves"));
+ }
+
+public Q_SLOTS: // METHODS
+Q_SIGNALS: // SIGNALS
+ void PropertiesChanged(const QVariantMap &properties);
+};
+
+#endif
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/checkpointinterface.cpp b/panels/dock/tray/networkmanager-qt/src/dbus/checkpointinterface.cpp
new file mode 100644
index 000000000..ceabbd4c2
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/checkpointinterface.cpp
@@ -0,0 +1,28 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * This file may have been hand-edited. Look for HAND-EDIT comments
+ * before re-generating it.
+ */
+
+#include "checkpointinterface.h"
+
+/*
+ * Implementation of interface class OrgFreedesktopNetworkManagerCheckpointInterface
+ */
+
+OrgFreedesktopNetworkManagerCheckpointInterface::OrgFreedesktopNetworkManagerCheckpointInterface(const QString &service,
+ const QString &path,
+ const QDBusConnection &connection,
+ QObject *parent)
+ : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent)
+{
+}
+
+OrgFreedesktopNetworkManagerCheckpointInterface::~OrgFreedesktopNetworkManagerCheckpointInterface()
+{
+}
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/checkpointinterface.h b/panels/dock/tray/networkmanager-qt/src/dbus/checkpointinterface.h
new file mode 100644
index 000000000..187d0f956
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/checkpointinterface.h
@@ -0,0 +1,68 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * Do not edit! All changes made to it will be lost.
+ */
+
+#ifndef CHECKPOINTINTERFACE_H
+#define CHECKPOINTINTERFACE_H
+
+#include "generictypes.h"
+
+#include
+#include
+#include
+#include
+#include
+
+/*
+ * Proxy class for interface org.freedesktop.NetworkManager.Checkpoint
+ */
+class OrgFreedesktopNetworkManagerCheckpointInterface : public QDBusAbstractInterface
+{
+ Q_OBJECT
+public:
+ static inline const char *staticInterfaceName()
+#ifdef NMQT_STATIC
+ {
+ return "org.kde.fakenetwork.Checkpoint";
+ }
+#else
+ {
+ return "org.freedesktop.NetworkManager.Checkpoint";
+ }
+#endif
+
+public:
+ OrgFreedesktopNetworkManagerCheckpointInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = nullptr);
+
+ ~OrgFreedesktopNetworkManagerCheckpointInterface() override;
+
+ Q_PROPERTY(qlonglong Created READ created)
+ inline qlonglong created() const
+ {
+ return qvariant_cast(property("Created"));
+ }
+
+ Q_PROPERTY(QList Devices READ devices)
+ inline QList devices() const
+ {
+ return qvariant_cast>(property("Devices"));
+ }
+
+ Q_PROPERTY(uint RollbackTimeout READ rollbackTimeout)
+ inline uint rollbackTimeout() const
+ {
+ return qvariant_cast(property("RollbackTimeout"));
+ }
+
+public Q_SLOTS: // METHODS
+Q_SIGNALS: // SIGNALS
+ void PropertiesChanged(const QVariantMap &properties);
+};
+
+#endif
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/connectioninterface.cpp b/panels/dock/tray/networkmanager-qt/src/dbus/connectioninterface.cpp
new file mode 100644
index 000000000..3467d6505
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/connectioninterface.cpp
@@ -0,0 +1,28 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * This file may have been hand-edited. Look for HAND-EDIT comments
+ * before re-generating it.
+ */
+
+#include "connectioninterface.h"
+
+/*
+ * Implementation of interface class OrgFreedesktopNetworkManagerSettingsConnectionInterface
+ */
+
+OrgFreedesktopNetworkManagerSettingsConnectionInterface::OrgFreedesktopNetworkManagerSettingsConnectionInterface(const QString &service,
+ const QString &path,
+ const QDBusConnection &connection,
+ QObject *parent)
+ : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent)
+{
+}
+
+OrgFreedesktopNetworkManagerSettingsConnectionInterface::~OrgFreedesktopNetworkManagerSettingsConnectionInterface()
+{
+}
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/connectioninterface.h b/panels/dock/tray/networkmanager-qt/src/dbus/connectioninterface.h
new file mode 100644
index 000000000..ab20d58ae
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/connectioninterface.h
@@ -0,0 +1,106 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * Do not edit! All changes made to it will be lost.
+ */
+
+#ifndef CONNECTIONINTERFACE_H
+#define CONNECTIONINTERFACE_H
+
+#include "generictypes.h"
+
+#include
+#include
+#include
+#include
+#include
+
+/*
+ * Proxy class for interface org.freedesktop.NetworkManager.Settings.Connection
+ */
+class OrgFreedesktopNetworkManagerSettingsConnectionInterface : public QDBusAbstractInterface
+{
+ Q_OBJECT
+public:
+ static inline const char *staticInterfaceName()
+#ifdef NMQT_STATIC
+ {
+ return "org.kde.fakenetwork.Settings.Connection";
+ }
+#else
+ {
+ return "org.freedesktop.NetworkManager.Settings.Connection";
+ }
+#endif
+
+public:
+ OrgFreedesktopNetworkManagerSettingsConnectionInterface(const QString &service,
+ const QString &path,
+ const QDBusConnection &connection,
+ QObject *parent = nullptr);
+
+ ~OrgFreedesktopNetworkManagerSettingsConnectionInterface() override;
+
+ Q_PROPERTY(bool Unsaved READ unsaved)
+ inline bool unsaved() const
+ {
+ return qvariant_cast(property("Unsaved"));
+ }
+
+public Q_SLOTS: // METHODS
+ inline QDBusPendingReply<> ClearSecrets()
+ {
+ QList argumentList;
+ return asyncCallWithArgumentList(QStringLiteral("ClearSecrets"), argumentList);
+ }
+
+ inline QDBusPendingReply<> Delete()
+ {
+ QList argumentList;
+ return asyncCallWithArgumentList(QStringLiteral("Delete"), argumentList);
+ }
+
+ inline QDBusPendingReply GetSecrets(const QString &setting_name)
+ {
+ QList argumentList;
+ argumentList << QVariant::fromValue(setting_name);
+ return asyncCallWithArgumentList(QStringLiteral("GetSecrets"), argumentList);
+ }
+
+ inline QDBusPendingReply GetSettings()
+ {
+ QList argumentList;
+ return asyncCallWithArgumentList(QStringLiteral("GetSettings"), argumentList);
+ }
+
+ inline QDBusPendingReply<> Save()
+ {
+ QList argumentList;
+ return asyncCallWithArgumentList(QStringLiteral("Save"), argumentList);
+ }
+
+ inline QDBusPendingReply<> Update(NMVariantMapMap properties)
+ {
+ QList argumentList;
+ argumentList << QVariant::fromValue(properties);
+ return asyncCallWithArgumentList(QStringLiteral("Update"), argumentList);
+ }
+
+ inline QDBusPendingReply<> UpdateUnsaved(NMVariantMapMap properties)
+ {
+ QList argumentList;
+ argumentList << QVariant::fromValue(properties);
+ return asyncCallWithArgumentList(QStringLiteral("UpdateUnsaved"), argumentList);
+ }
+
+Q_SIGNALS: // SIGNALS
+ void PropertiesChanged(const QVariantMap &properties);
+ void Removed();
+ void Updated();
+};
+
+#endif
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/deviceinterface.cpp b/panels/dock/tray/networkmanager-qt/src/dbus/deviceinterface.cpp
new file mode 100644
index 000000000..a4778e3ed
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/deviceinterface.cpp
@@ -0,0 +1,28 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * This file may have been hand-edited. Look for HAND-EDIT comments
+ * before re-generating it.
+ */
+
+#include "deviceinterface.h"
+
+/*
+ * Implementation of interface class OrgFreedesktopNetworkManagerDeviceInterface
+ */
+
+OrgFreedesktopNetworkManagerDeviceInterface::OrgFreedesktopNetworkManagerDeviceInterface(const QString &service,
+ const QString &path,
+ const QDBusConnection &connection,
+ QObject *parent)
+ : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent)
+{
+}
+
+OrgFreedesktopNetworkManagerDeviceInterface::~OrgFreedesktopNetworkManagerDeviceInterface()
+{
+}
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/deviceinterface.h b/panels/dock/tray/networkmanager-qt/src/dbus/deviceinterface.h
new file mode 100644
index 000000000..e5fd468d2
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/deviceinterface.h
@@ -0,0 +1,246 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * Do not edit! All changes made to it will be lost.
+ */
+
+#ifndef DEVICEINTERFACE_H
+#define DEVICEINTERFACE_H
+
+#include "generictypes.h"
+
+#include
+#include
+#include
+#include
+#include
+
+/*
+ * Proxy class for interface org.freedesktop.NetworkManager.Device
+ */
+class OrgFreedesktopNetworkManagerDeviceInterface : public QDBusAbstractInterface
+{
+ Q_OBJECT
+public:
+ static inline const char *staticInterfaceName()
+#ifdef NMQT_STATIC
+ {
+ return "org.kde.fakenetwork.Device";
+ }
+#else
+ {
+ return "org.freedesktop.NetworkManager.Device";
+ }
+#endif
+
+public:
+ OrgFreedesktopNetworkManagerDeviceInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = nullptr);
+
+ ~OrgFreedesktopNetworkManagerDeviceInterface() override;
+
+ Q_PROPERTY(QDBusObjectPath ActiveConnection READ activeConnection)
+ inline QDBusObjectPath activeConnection() const
+ {
+ return qvariant_cast(property("ActiveConnection"));
+ }
+
+ Q_PROPERTY(bool Autoconnect READ autoconnect WRITE setAutoconnect)
+ inline bool autoconnect() const
+ {
+ return qvariant_cast(property("Autoconnect"));
+ }
+ inline void setAutoconnect(bool value)
+ {
+ setProperty("Autoconnect", QVariant::fromValue(value));
+ }
+
+ Q_PROPERTY(QList AvailableConnections READ availableConnections)
+ inline QList availableConnections() const
+ {
+ return qvariant_cast>(property("AvailableConnections"));
+ }
+
+ Q_PROPERTY(uint Capabilities READ capabilities)
+ inline uint capabilities() const
+ {
+ return qvariant_cast(property("Capabilities"));
+ }
+
+ Q_PROPERTY(uint DeviceType READ deviceType)
+ inline uint deviceType() const
+ {
+ return qvariant_cast(property("DeviceType"));
+ }
+
+ Q_PROPERTY(QDBusObjectPath Dhcp4Config READ dhcp4Config)
+ inline QDBusObjectPath dhcp4Config() const
+ {
+ return qvariant_cast(property("Dhcp4Config"));
+ }
+
+ Q_PROPERTY(QDBusObjectPath Dhcp6Config READ dhcp6Config)
+ inline QDBusObjectPath dhcp6Config() const
+ {
+ return qvariant_cast(property("Dhcp6Config"));
+ }
+
+ Q_PROPERTY(QString Driver READ driver)
+ inline QString driver() const
+ {
+ return qvariant_cast(property("Driver"));
+ }
+
+ Q_PROPERTY(QString DriverVersion READ driverVersion)
+ inline QString driverVersion() const
+ {
+ return qvariant_cast(property("DriverVersion"));
+ }
+
+ Q_PROPERTY(bool FirmwareMissing READ firmwareMissing)
+ inline bool firmwareMissing() const
+ {
+ return qvariant_cast(property("FirmwareMissing"));
+ }
+
+ Q_PROPERTY(QString FirmwareVersion READ firmwareVersion)
+ inline QString firmwareVersion() const
+ {
+ return qvariant_cast(property("FirmwareVersion"));
+ }
+
+ Q_PROPERTY(QString Interface READ interface)
+ inline QString interface() const
+ {
+ return qvariant_cast(property("Interface"));
+ }
+
+ Q_PROPERTY(uint Ip4Address READ ip4Address)
+ inline uint ip4Address() const
+ {
+ return qvariant_cast(property("Ip4Address"));
+ }
+
+ Q_PROPERTY(QDBusObjectPath Ip4Config READ ip4Config)
+ inline QDBusObjectPath ip4Config() const
+ {
+ return qvariant_cast(property("Ip4Config"));
+ }
+
+ Q_PROPERTY(QDBusObjectPath Ip6Config READ ip6Config)
+ inline QDBusObjectPath ip6Config() const
+ {
+ return qvariant_cast(property("Ip6Config"));
+ }
+
+ Q_PROPERTY(QString IpInterface READ ipInterface)
+ inline QString ipInterface() const
+ {
+ return qvariant_cast(property("IpInterface"));
+ }
+
+ Q_PROPERTY(uint InterfaceFlags READ interfaceFlags)
+ inline uint interfaceFlags() const
+ {
+ return qvariant_cast(property("InterfaceFlags"));
+ }
+
+ Q_PROPERTY(NMVariantMapList LldpNeighbors READ lldpNeighbors)
+ inline NMVariantMapList lldpNeighbors() const
+ {
+ return qvariant_cast(property("LldpNeighbors"));
+ }
+
+ Q_PROPERTY(bool Managed READ managed WRITE setManaged)
+ inline bool managed() const
+ {
+ return qvariant_cast(property("Managed"));
+ }
+ inline void setManaged(bool value)
+ {
+ setProperty("Managed", QVariant::fromValue(value));
+ }
+
+ Q_PROPERTY(uint Metered READ metered)
+ inline uint metered() const
+ {
+ return qvariant_cast(property("Metered"));
+ }
+
+ Q_PROPERTY(uint Mtu READ mtu)
+ inline uint mtu() const
+ {
+ return qvariant_cast(property("Mtu"));
+ }
+
+ Q_PROPERTY(bool NmPluginMissing READ nmPluginMissing)
+ inline bool nmPluginMissing() const
+ {
+ return qvariant_cast(property("NmPluginMissing"));
+ }
+
+ Q_PROPERTY(QString PhysicalPortId READ physicalPortId)
+ inline QString physicalPortId() const
+ {
+ return qvariant_cast(property("PhysicalPortId"));
+ }
+
+ Q_PROPERTY(bool Real READ real)
+ inline bool real() const
+ {
+ return qvariant_cast(property("Real"));
+ }
+
+ Q_PROPERTY(uint State READ state)
+ inline uint state() const
+ {
+ return qvariant_cast(property("State"));
+ }
+
+ Q_PROPERTY(DeviceDBusStateReason StateReason READ stateReason)
+ inline DeviceDBusStateReason stateReason() const
+ {
+ return qvariant_cast(property("StateReason"));
+ }
+
+ Q_PROPERTY(QString Udi READ udi)
+ inline QString udi() const
+ {
+ return qvariant_cast(property("Udi"));
+ }
+
+public Q_SLOTS: // METHODS
+ inline QDBusPendingReply<> Delete()
+ {
+ QList argumentList;
+ return asyncCallWithArgumentList(QStringLiteral("Delete"), argumentList);
+ }
+
+ inline QDBusPendingReply<> Disconnect()
+ {
+ QList argumentList;
+ return asyncCallWithArgumentList(QStringLiteral("Disconnect"), argumentList);
+ }
+
+ inline QDBusPendingReply GetAppliedConnection(uint flags)
+ {
+ QList argumentList;
+ argumentList << QVariant::fromValue(flags);
+ return asyncCallWithArgumentList(QStringLiteral("GetAppliedConnection"), argumentList);
+ }
+
+ inline QDBusPendingReply<> Reapply(NMVariantMapMap connection, qulonglong version_id, uint flags)
+ {
+ QList argumentList;
+ argumentList << QVariant::fromValue(connection) << QVariant::fromValue(version_id) << QVariant::fromValue(flags);
+ return asyncCallWithArgumentList(QStringLiteral("Reapply"), argumentList);
+ }
+
+Q_SIGNALS: // SIGNALS
+ void StateChanged(uint new_state, uint old_state, uint reason);
+};
+
+#endif
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/devicestatisticsinterface.cpp b/panels/dock/tray/networkmanager-qt/src/dbus/devicestatisticsinterface.cpp
new file mode 100644
index 000000000..641eee21f
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/devicestatisticsinterface.cpp
@@ -0,0 +1,28 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * This file may have been hand-edited. Look for HAND-EDIT comments
+ * before re-generating it.
+ */
+
+#include "devicestatisticsinterface.h"
+
+/*
+ * Implementation of interface class OrgFreedesktopNetworkManagerDeviceStatisticsInterface
+ */
+
+OrgFreedesktopNetworkManagerDeviceStatisticsInterface::OrgFreedesktopNetworkManagerDeviceStatisticsInterface(const QString &service,
+ const QString &path,
+ const QDBusConnection &connection,
+ QObject *parent)
+ : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent)
+{
+}
+
+OrgFreedesktopNetworkManagerDeviceStatisticsInterface::~OrgFreedesktopNetworkManagerDeviceStatisticsInterface()
+{
+}
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/devicestatisticsinterface.h b/panels/dock/tray/networkmanager-qt/src/dbus/devicestatisticsinterface.h
new file mode 100644
index 000000000..7b93e014b
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/devicestatisticsinterface.h
@@ -0,0 +1,74 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * Do not edit! All changes made to it will be lost.
+ */
+
+#ifndef DEVICESTATISTICSINTERFACE_H
+#define DEVICESTATISTICSINTERFACE_H
+
+#include "generictypes.h"
+
+#include
+#include
+#include
+#include
+
+/*
+ * Proxy class for interface org.freedesktop.NetworkManager.Device.Statistics
+ */
+class OrgFreedesktopNetworkManagerDeviceStatisticsInterface : public QDBusAbstractInterface
+{
+ Q_OBJECT
+public:
+ static inline const char *staticInterfaceName()
+#ifdef NMQT_STATIC
+ {
+ return "org.kde.fakenetwork.Device.Statistics";
+ }
+#else
+ {
+ return "org.freedesktop.NetworkManager.Device.Statistics";
+ }
+#endif
+
+public:
+ OrgFreedesktopNetworkManagerDeviceStatisticsInterface(const QString &service,
+ const QString &path,
+ const QDBusConnection &connection,
+ QObject *parent = nullptr);
+
+ ~OrgFreedesktopNetworkManagerDeviceStatisticsInterface() override;
+
+ Q_PROPERTY(uint RefreshRateMs READ refreshRateMs WRITE setRefreshRateMs)
+ inline uint refreshRateMs() const
+ {
+ return qvariant_cast(property("RefreshRateMs"));
+ }
+ inline void setRefreshRateMs(uint value)
+ {
+ setProperty("RefreshRateMs", QVariant::fromValue(value));
+ }
+
+ Q_PROPERTY(qulonglong RxBytes READ rxBytes)
+ inline qulonglong rxBytes() const
+ {
+ return qvariant_cast(property("RxBytes"));
+ }
+
+ Q_PROPERTY(qulonglong TxBytes READ txBytes)
+ inline qulonglong txBytes() const
+ {
+ return qvariant_cast(property("TxBytes"));
+ }
+
+public Q_SLOTS: // METHODS
+Q_SIGNALS: // SIGNALS
+ void PropertiesChanged(const QVariantMap &properties);
+};
+
+#endif
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/dhcp4configinterface.cpp b/panels/dock/tray/networkmanager-qt/src/dbus/dhcp4configinterface.cpp
new file mode 100644
index 000000000..72799e374
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/dhcp4configinterface.cpp
@@ -0,0 +1,28 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * This file may have been hand-edited. Look for HAND-EDIT comments
+ * before re-generating it.
+ */
+
+#include "dhcp4configinterface.h"
+
+/*
+ * Implementation of interface class OrgFreedesktopNetworkManagerDHCP4ConfigInterface
+ */
+
+OrgFreedesktopNetworkManagerDHCP4ConfigInterface::OrgFreedesktopNetworkManagerDHCP4ConfigInterface(const QString &service,
+ const QString &path,
+ const QDBusConnection &connection,
+ QObject *parent)
+ : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent)
+{
+}
+
+OrgFreedesktopNetworkManagerDHCP4ConfigInterface::~OrgFreedesktopNetworkManagerDHCP4ConfigInterface()
+{
+}
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/dhcp4configinterface.h b/panels/dock/tray/networkmanager-qt/src/dbus/dhcp4configinterface.h
new file mode 100644
index 000000000..fca6483e6
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/dhcp4configinterface.h
@@ -0,0 +1,55 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * Do not edit! All changes made to it will be lost.
+ */
+
+#ifndef DHCP4CONFIGINTERFACE_H
+#define DHCP4CONFIGINTERFACE_H
+
+#include "generictypes.h"
+
+#include
+#include
+#include
+#include
+
+/*
+ * Proxy class for interface org.freedesktop.NetworkManager.DHCP4Config
+ */
+class OrgFreedesktopNetworkManagerDHCP4ConfigInterface : public QDBusAbstractInterface
+{
+ Q_OBJECT
+public:
+ static inline const char *staticInterfaceName()
+#ifdef NMQT_STATIC
+ {
+ return "org.kde.fakenetwork.DHCP4Config";
+ }
+#else
+ {
+ return "org.freedesktop.NetworkManager.DHCP4Config";
+ }
+#endif
+
+public:
+ OrgFreedesktopNetworkManagerDHCP4ConfigInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = nullptr);
+
+ ~OrgFreedesktopNetworkManagerDHCP4ConfigInterface() override;
+
+ Q_PROPERTY(QVariantMap Options READ options)
+ inline QVariantMap options() const
+ {
+ return qvariant_cast(property("Options"));
+ }
+
+public Q_SLOTS: // METHODS
+Q_SIGNALS: // SIGNALS
+ void PropertiesChanged(const QVariantMap &properties);
+};
+
+#endif
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/dhcp6configinterface.cpp b/panels/dock/tray/networkmanager-qt/src/dbus/dhcp6configinterface.cpp
new file mode 100644
index 000000000..3cf9c9f0b
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/dhcp6configinterface.cpp
@@ -0,0 +1,28 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * This file may have been hand-edited. Look for HAND-EDIT comments
+ * before re-generating it.
+ */
+
+#include "dhcp6configinterface.h"
+
+/*
+ * Implementation of interface class OrgFreedesktopNetworkManagerDHCP6ConfigInterface
+ */
+
+OrgFreedesktopNetworkManagerDHCP6ConfigInterface::OrgFreedesktopNetworkManagerDHCP6ConfigInterface(const QString &service,
+ const QString &path,
+ const QDBusConnection &connection,
+ QObject *parent)
+ : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent)
+{
+}
+
+OrgFreedesktopNetworkManagerDHCP6ConfigInterface::~OrgFreedesktopNetworkManagerDHCP6ConfigInterface()
+{
+}
diff --git a/panels/dock/tray/networkmanager-qt/src/dbus/dhcp6configinterface.h b/panels/dock/tray/networkmanager-qt/src/dbus/dhcp6configinterface.h
new file mode 100644
index 000000000..37623d5ce
--- /dev/null
+++ b/panels/dock/tray/networkmanager-qt/src/dbus/dhcp6configinterface.h
@@ -0,0 +1,55 @@
+/*
+ * This file was generated by qdbusxml2cpp version 0.8
+ * Command line was:
+ *
+ * qdbusxml2cpp is Copyright (C) 2016 The Qt Company Ltd.
+ *
+ * This is an auto-generated file.
+ * Do not edit! All changes made to it will be lost.
+ */
+
+#ifndef DHCP6CONFIGINTERFACE_H
+#define DHCP6CONFIGINTERFACE_H
+
+#include "generictypes.h"
+
+#include
+#include
+#include