pax_global_header00006660000000000000000000000064132367655660014535gustar00rootroot0000000000000052 comment=31730a0b2285504cbb3d803655ad55adae545187 dde-qt5integration-0.2.8.3+git20180208/000077500000000000000000000000001323676556600170205ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/.clog.toml000066400000000000000000000002261323676556600207170ustar00rootroot00000000000000[clog] repository = "https://github.com/linuxdeepin/qt5integration" from-latest-tag = true changelog = "CHANGELOG.md" [sections] Others = ["chore"] dde-qt5integration-0.2.8.3+git20180208/.gitignore000066400000000000000000000005461323676556600210150ustar00rootroot00000000000000*.pro.user* build*/ bin/ # C++ objects and libs *.slo *.lo *.o *.a *.la *.lai *.so *.dll *.dylib # Qt-es /.qmake.cache /.qmake.stash *.pro.user *.pro.user.* *.qbs.user *.qbs.user.* *.moc moc_*.cpp qrc_*.cpp ui_*.h Makefile* *build-* # QtCreator *.autosave # QtCtreator Qml *.qmlproject.user *.qmlproject.user.* # QtCtreator CMake CMakeLists.txt.user dde-qt5integration-0.2.8.3+git20180208/CHANGELOG.md000066400000000000000000000070071323676556600206350ustar00rootroot00000000000000 ## 0.2.8.3 (2017-12-06) #### Bug Fixes * **style:** visable bottom lines on QMenu when hover item ([c8eb56b7](https://github.com/linuxdeepin/qt5integration/commit/c8eb56b7cadb8f7a3d95207bf6ff7a7048a89706)) ## 0.2.8.2 (2017-12-06) #### Features * **theme:** set window flags for native dialog ([3ec67bf0](https://github.com/linuxdeepin/qt5integration/commit/3ec67bf01fead41dbac5a4b096622f7ca50d685c)) #### Bug Fixes * is dxcb platform if the "_d_isDxcb" property is true of QCoreApplication ([714b5f78](https://github.com/linuxdeepin/qt5integration/commit/714b5f78b98f7e63757db15ab84a8eb653c36b31)) * **style:** * visable left/top lines on draw rubber band control ([9c06e770](https://github.com/linuxdeepin/qt5integration/commit/9c06e7709b99958e6ebb98714fbbfa2a61d7a0a5)) * bottom/right visible lines on draw rubber band rect for QListView ([1177381a](https://github.com/linuxdeepin/qt5integration/commit/1177381ae5914188ca4236e993475367071d66bd)) * slider icons ([dae8caa6](https://github.com/linuxdeepin/qt5integration/commit/dae8caa6ec73b95b3781ebe6ecd6da0b359a189f)) ## 0.2.8.1 (2017-11-02) #### Bug Fixes * remove libqt5dxcb-dev for "Conflicts" and "Provides" ([4d38dbca](https://github.com/linuxdeepin/qt5integration/commit/4d38dbcac71375f96469cfdda2b4bad0124c7b16)) ## 0.2.8 (2017-11-02) #### Features * keep the window border is 1px for hiDPI ([da8040c4](https://github.com/linuxdeepin/qt5integration/commit/da8040c42df0cbde97e21693f472a288ef46a9d8)) * **theme plugin:** read settings from config file ([aacc2995](https://github.com/linuxdeepin/qt5integration/commit/aacc299512f4006ff174c5700d471d344d7155d0)) * **theme style:** auto update the widgets font when theme config file changed ([d478074e](https://github.com/linuxdeepin/qt5integration/commit/d478074e73d8e22e2d70080ad1430c565261d9af)) #### Bug Fixes * add build-depend: libegl1-mesa-dev ([2d265267](https://github.com/linuxdeepin/qt5integration/commit/2d265267ad1f6f113a74c931a67fe938b85a5af0)) * build failed(add build-depend: libmtdev-dev) ([babdc356](https://github.com/linuxdeepin/qt5integration/commit/babdc3561ab22d85ab83e4b6e385a4daa1387516)) * set cursor is invaild ([a2e235be](https://github.com/linuxdeepin/qt5integration/commit/a2e235bed7873d35030be380e8cd73acc0192e89)) * **dxcb:** * crash when screen changed ([7e1627c2](https://github.com/linuxdeepin/qt5integration/commit/7e1627c20fd92d7b4c1d7a69c55b4de5869cf6b6)) * the window border size is wrong ([83d6ac50](https://github.com/linuxdeepin/qt5integration/commit/83d6ac500b7e070f5c97ff220da16736229fd060)) * draw shadow area ([284cae9d](https://github.com/linuxdeepin/qt5integration/commit/284cae9dd90e9b9d7af92480e3a0e217a7c5f478)) * the DFrameWindow shadow area ([6e9c8274](https://github.com/linuxdeepin/qt5integration/commit/6e9c8274ef871fe3fa48a60a0861a96b6880dbf0)) * **style:** * update all widgets on font changed ([0e28f244](https://github.com/linuxdeepin/qt5integration/commit/0e28f244217f57d454424cc7dfba488ee6be93e3)) * update all widgets on font changed ([d4a65deb](https://github.com/linuxdeepin/qt5integration/commit/d4a65deb9e21e18390447c8b26eb429843333be4)) * **theme:** * "DFileSystemWatcherPrivate::addPaths: inotify_add_watch failed" ([a0322a68](https://github.com/linuxdeepin/qt5integration/commit/a0322a68447b7d918af49fbba23ebe1d5f53da25)) * set ini codec to "utf8" for QSettings ([3a4f7d76](https://github.com/linuxdeepin/qt5integration/commit/3a4f7d7651f6c433ef9735426d936289ac04d6c9)) dde-qt5integration-0.2.8.3+git20180208/LICENSE000066400000000000000000001045141323676556600200320ustar00rootroot00000000000000 GNU 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. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . dde-qt5integration-0.2.8.3+git20180208/README.md000066400000000000000000000023531323676556600203020ustar00rootroot00000000000000# qt5integration qt5integration is the Qt platform theme integration plugins for Deepin Desktop Environment. It includes multiple Qt5 plugins to make make DDE more Qt5 Apps friendly. ## Dependencies ### Build dependencies * Qt (>= 5.6) * gtk+-2.0 * mtdev * [dtk](https://github.com/linuxdeepin/deepin-tool-kit) * [libqtxdg](https://github.com/lxde/libqtxdg) * Qt5 (>= 5.6) * Qt5-Core * Qt5-Gui * Qt5-Widgets * Qt5-DBus * Qt5-Multimedia * Qt5-MultimediaWidgets * Qt5-Svg * Qt5-OpenGL * Qt5-X11extras * Qt5-Core-Private * Qt5-Widgets-Private ### Runtime dependencies * DDE File Manager (suggestion, to make Qt5 file dialogs more elegant) ## Installation ### Build from source code 1. Make sure you have installed all dependencies. 2. Build: ``` $ cd qt5integration $ mkdir build $ cd build $ qmake .. $ make ``` 3. Install: ``` $ sudo make install ``` ## Usage To be done. ## Getting help You may also find these channels useful if you encounter any other issues: * [Gitter](https://gitter.im/orgs/linuxdeepin/rooms) * [IRC Channel](https://webchat.freenode.net/?channels=deepin) * [Official Forum](https://bbs.deepin.org/) * [Wiki](http://wiki.deepin.org/) ## License qt5integration is licensed under [GPLv3](LICENSE). dde-qt5integration-0.2.8.3+git20180208/clog.toml000066400000000000000000000001661323676556600206440ustar00rootroot00000000000000[clog] repository = "https://github.com/linuxdeepin/qt5integration" from-latest-tag = true changelog = "CHANGELOG.md" dde-qt5integration-0.2.8.3+git20180208/debian/000077500000000000000000000000001323676556600202425ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/debian/changelog000066400000000000000000000003171323676556600221150ustar00rootroot00000000000000qt5integration (1.0.0) unstable; urgency=medium * Initial release (Closes: #nnnn) -- Deepin Packages Builder Tue, 08 Nov 2016 15:10:02 +0800 dde-qt5integration-0.2.8.3+git20180208/debian/compat000066400000000000000000000000021323676556600214400ustar00rootroot000000000000009 dde-qt5integration-0.2.8.3+git20180208/debian/control000066400000000000000000000013701323676556600216460ustar00rootroot00000000000000Source: qt5integration Section: devel Priority: optional Maintainer: Deepin Packages Builder Build-Depends: debhelper (>=9), qt5-default, qtbase5-dev, qtbase5-private-dev, libqt5xdg-dev, libdtkwidget-dev, pkg-config, libgtk2.0-dev, libqt5x11extras5-dev, libfontconfig1-dev, libfreetype6-dev, libglib2.0-dev, libqt5svg5-dev, libqt5xdgiconloader-dev, libmtdev-dev, libegl1-mesa-dev Standards-Version: 3.9.8 Package: dde-qt5integration Architecture: any Provides: libqt5deepintheme-plugin Conflicts: libqt5deepintheme-plugin Depends: ${shlibs:Depends}, ${misc:Depends}, qt5dxcb-plugin Description: Qt platform theme integration plugins for DDE Multiple Qt plugins to provide better Qt5 integration for DDE is included. dde-qt5integration-0.2.8.3+git20180208/debian/copyright000066400000000000000000000017441323676556600222030ustar00rootroot00000000000000Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: qt5integration Source: https://github.com/linuxdeepin/qt5integration Files: * Copyright: 2017 Deepin.Inc License: GPL-3+ This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. . This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. . You should have received a copy of the GNU General Public License along with this program. If not, see . On Debian systems, the complete text of the GNU General Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". dde-qt5integration-0.2.8.3+git20180208/debian/rules000077500000000000000000000013711323676556600213240ustar00rootroot00000000000000#!/usr/bin/make -f # See debhelper(7) (uncomment to enable) # output every command that modifies files on the build system. #export DH_VERBOSE = 1 # see FEATURE AREAS in dpkg-buildflags(1) #export DEB_BUILD_MAINT_OPTIONS = hardening=+all # see ENVIRONMENT in dpkg-buildflags(1) # package maintainers to append CFLAGS #export DEB_CFLAGS_MAINT_APPEND = -Wall -pedantic # package maintainers to append LDFLAGS #export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed %: dh $@ override_dh_shlibdeps: dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info # dh_make generated override targets # This is example for Cmake (See https://bugs.debian.org/641051 ) #override_dh_auto_configure: # dh_auto_configure -- # -DCMAKE_LIBRARY_PATH=$(DEB_HOST_MULTIARCH) dde-qt5integration-0.2.8.3+git20180208/debian/source/000077500000000000000000000000001323676556600215425ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/debian/source/format000066400000000000000000000000151323676556600227510ustar00rootroot000000000000003.0 (native) dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/000077500000000000000000000000001323676556600215435ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets.qrc000066400000000000000000000057501323676556600235630ustar00rootroot00000000000000 assets/icons/arrow-down.png assets/icons/arrow-left.png assets/icons/arrow-right.png assets/icons/arrow-up.png assets/icons/button-cancel.png assets/icons/computer.svg assets/icons/dialog-apply.png assets/icons/document-save.png assets/icons/drive-harddisk.png assets/icons/emblem-symbolic-link.png assets/icons/folder-open.svg assets/icons/folder.svg assets/icons/help-faq.png assets/icons/input_clear_hover.svg assets/icons/input_clear_normal.svg assets/icons/input_clear_press.svg assets/icons/media-optical.png assets/icons/process-stop.png assets/icons/text-x-generic.svg assets/icons/user-home.svg assets/icons/user-trash.svg assets/icons/view-refresh.png assets/icons/window_close_hover_dark.png assets/icons/window_close_hover_light.png assets/icons/window_close_normal_dark.png assets/icons/window_close_normal_light.png assets/icons/window_close_press_dark.png assets/icons/window_close_press_light.png assets/icons/window_max_hover_dark.png assets/icons/window_max_hover_light.png assets/icons/window_max_normal_dark.png assets/icons/window_max_normal_light.png assets/icons/window_max_press_dark.png assets/icons/window_max_press_light.png assets/icons/window_min_hover_dark.png assets/icons/window_min_hover_light.png assets/icons/window_min_normal_dark.png assets/icons/window_min_normal_light.png assets/icons/window_min_press_dark.png assets/icons/window_min_press_light.png assets/icons/window_option_hover_dark.png assets/icons/window_option_hover_light.png assets/icons/window_option_normal_dark.png assets/icons/window_option_normal_light.png assets/icons/window_option_press_dark.png assets/icons/window_option_press_light.png assets/icons/window_unmax_hover_dark.png assets/icons/window_unmax_hover_light.png assets/icons/window_unmax_normal_dark.png assets/icons/window_unmax_normal_light.png assets/icons/window_unmax_press_dark.png assets/icons/window_unmax_press_light.png dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/000077500000000000000000000000001323676556600230455ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/README000066400000000000000000000002421323676556600237230ustar00rootroot00000000000000All images under this directory and its subdirectories are made by Wuhan Deepin Technology Co., Ltd. Licensed under GNU GENERAL PUBLIC LICENSE Version 3 or later.dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/000077500000000000000000000000001323676556600237665ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/check_disabled.png000066400000000000000000000003321323676556600273760ustar00rootroot00000000000000PNG  IHDR  gAMA aIDAT} @w@`!SY "R Z`Xvw3$谖2V[huȲF1)"U!T (()Gx!5StNjѫ4L=mo/:-)=.Hj:+h[55QIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/check_normal.png000066400000000000000000000003251323676556600271210ustar00rootroot00000000000000PNG  IHDR  gAMA aIDATc`" %Lxԁ8:>Ob5|D & L @ ـL ȸ&;sA1@$S@\@V1@ m@^iTT M@<Pex@@& .H"xIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/check_selected.png000066400000000000000000000003151323676556600274200ustar00rootroot00000000000000PNG  IHDR  gAMA aIDATc`Ċx@Z3T _@lO2P{ .+rxX&dsE ^ @i@|y@@z1_ኁ@|q1budPBo1#a dC*t/IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/000077500000000000000000000000001323676556600255545ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/checkbox_checked.png000066400000000000000000000010011323676556600315060ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8c` ܿ_DHs160/H9ȷ+r޿†@ݻgvݟ@$jǖ-[$߽{3yda5@0330/9[0!Dv޽JQQH ?kÆ >jr>رٟ>}ZS1 bؼyHzzzTTT&\RRRLFxa֭ZZZKϜ9SR;_K.M;oF 0?$$d޽{MYXXXYYU.\ F1۷ ʁ.x4$׭AAAG5!Q It=z-48NlPXXX #eԂ r&eA ͠dc2L0 ,0E3L,DUzIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/checkbox_checked@2x.png000066400000000000000000000021371323676556600320730ustar00rootroot00000000000000PNG  IHDR szzgAMA aIDATX WmHQr#+,NHBB$HaZ-4i1d,B%h"BQ:!$E0JCS3w_ݹ|<{{w ſ6&''a伕`jۉw3s/ZQTZW3 &ơva'0b9LVSSSǀ_j@ ir0"beeew`0|Xd7422p9dfu/%MQQQ ёKSSS7Rv9 5o=@{XGRbb (e^d;h w$rI|= `M c' #hpp0 ί35p{bR}ZsL\777DŽ=dxT,6L R(Ѐ>APo- '቞"_I.%nJjYGV>x8y|hxxx5ܜ3inZ %$$2bby={WWWFEE8QJw{ Qy#/R9ƴ8g{ʖ@TߘmeӒ'۽W0Xbbb=']uVu 33k ˟ozl6Gƺ<Lrcc']Qbl ) } ָ,r29~YY,+Sg0~;+l%L\oq(3>$xOO~o@r0 SJlmpIЫOo@-5.Ao#)57e=ʏ0 _ypS)IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/checkbox_checked_focus.png000066400000000000000000000010331323676556600327120ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8c` ܿ_Dv߯F30HЁ&3;0_ q322Z@eqlNjS%%Nد{o"GQQ"4 {ɓ69Hr6.AA@ZZy!P[˿3b *m>|X t=KG;vp"GG@ ytW...͛7;$`GIEEe߿%%%a4[n Zz̙2OOON__9@Zti4hH,@y!!!kk"((T,ʪr…0M4o߾o``Pt{! _n : bLĤѣoͧı03>$lmm=! &Z ȸ= edb\#:3 h[=,sȢ <IENDB`checkbox_checked_focus@2x.png000066400000000000000000000022541323676556600332130ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkboxPNG  IHDR szzgAMA acIDATX WoL[Uvu@Af$N [Dp7I!;> 1q1uDHAu&LHL@0̚ ,]y)O{}= 6ރ Z7#(v εdKԪ}^e;;;.6/c̒'-zq97E.~ $3z}'vd V.G{$R )}|+w4 .ٜG;滻 ${{'D#) E*b[QQ 0V_ `@[[p(z?Ѿv-3/(_A֠ TkZ-| h\jB 9@ͰSsg4IN044tjɑN; LMUUd2][&777lKaap|+?΀>00ÃMA9w V2j.L*䙙kSSd,tċ-//_uͦF>Q9!h4^*oCeccm6;Ⱦ U \ n?]-,t='9rްSյ$77ڞ{)IfL:ab1rкܜXQ@7-~S9f=Vgˊ4#g߄\k?)6;/5r*mf P<#M6;@kF# NV?̿!NhIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/checkbox_checked_hover.png000066400000000000000000000011201323676556600327130ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8c` pQ|lvJg??C?+%# YgRp6÷O释_?@Heabh/Y"43(w=' 1&fV.>&mά4cՙ,.3~Ύxp . %kjGk~9n+WyVVV֌U1{T140|ubc.F72A,r>u A'@% XwC￘z2[C~6^6N'd=:Fŀ߾gkckAL=ύ=ӀNU1{&AY_M ahgd+rl Y( D `Ct3A9410<qH7]/r-BN "/!&1Pe@.IENDB`checkbox_checked_hover@2x.png000066400000000000000000000023701323676556600332160ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkboxPNG  IHDR szzgAMA aIDATX WoLU{{k aҮں`V,Eef ctk\ʴ`O&馱j%k17\Qgµ%ƽp9/煔?/ۧvss{^[o$D9n& r`8wݎ3>8ǰo3ŜGHzUU!|P"/jˇ @ 8wb,[;7 aZn*@#/!E3vB]^rRt01cƢbi~8m hpY׺>pJw?&7g:6:ڟLpxt ` ^ a^ 7\.1-7m; e{Xc৙nrl(Yy|\AS Ȩ(YunG^!7A2m?ttCc%rq}]qɍ ~zѧkG}m;x|fAN/BgęFp#3|~)\0s2tOĻ >t0EMe,wxn8"ʳg{ANyy͎a:RUPdQc#Ɖw4Gz^fK{!6ީ4#t+xOnݮݲL퓐)uZkVJs qN,w%qmʄ+1|lYZ(};vNzoK8kh%{ Yu4j;o}Lv{[|V¼>*}#qjĖ9Z*c]?هڷB8plO{R֝/h ű2 5qtOTӚ+cGٜÇŃ(S'AFW?LxpS"e \GrnSD]C@r7̻?^栞$0IENDB`checkbox_checked_insensitive.png000066400000000000000000000007631323676556600340650ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkboxPNG  IHDRagAMA aIDAT8SK`w-]0\M "U򢑗xb7g*x,괈i`bi(8%}~y<\~ߏTl\l 306zt:L&F|>W7bHt:! l~FfbQv ؕrS<7V-IZ|;(R xJ8.b /z~Zz}/Y˲^TwaORf AP}jzUU=G@6e3 rjͯM ǘ.˲^4Mr2DOx0&!Lj#O(H$MӼdžp j%r"piD bA ,察ě>?n@ko/okIENDB`checkbox_checked_insensitive@2x.png000066400000000000000000000020771323676556600344370ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkboxPNG  IHDR szzgAMA aIDATX W[OZA"4PC[5&XjW?ۣ&5X!Hm6( K"J7gqA/&ۙ9k>vss۷ z*L?99 \]J۱/'ƕ+鰑B**D\:,/A]9v&xRzffN'lܳ(P*-VTP3XD(`H[F0ĝ3#Q{s@ pp %DDv!߿f7A!Gާ'AߓqW<'l.6A`@Maf)bǣ@0 HXUJK_KlqL/k?7M`d<15yAūmLPT6X8r^o`$RӭqWt6+ *bV@ 3frA2Q6-6$ŒɨuыxY7[VcbzH:|44>,z+@@IENDB`checkbox_checked_press@2x.png000066400000000000000000000027371323676556600332360ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkboxPNG  IHDR szzgAMA aIDATX Wmhe޳sq0XȲ>)*3+2*,+V ѲSF*BAC"(UQ} Yf|<]>{W羯xߝ7Yu.µغ#SFVkKp@sh;Uep\ G9YmЍ9-Q:z+x_+D*gdHJ.؄m(Nc;=u]”R6]ƂڢG Éx ~~FPtc;w}w}X"_:)yFێb=R[oW,J!1gꧩi؊Pm*\&*/F7aP$B`otcd枍G"T!ݍ{NXHL0TNJT.1 ` j#t_wCz@ Vxadʹx()̓}nZ+[Zro6(-3=ΊC !0"t '+`-TXq=H߆iy ~BBƝ?Ua+; 289ppH%~kWD kqEp*Iv 1FO'o *6<7glB)Kvxזs7YY3Wu]qXs 8"FTaڮd}JG]DگVr ^Pɻjw<2]hâA-"1~>glŨbtw%KNC-?6ӁlTaBedô.^lg݉ 8Tb+ ۸cXLBkCl?ܱM[GYM`}Yh#Y XPfFӆ"k~ }CćNwKh!xL*l3'YzȟU$+_|"!ÇCcMY Cc>TI@s@d熠 (y 222+`{(%> RR  "b4 y! - bYLjn `s5'!˽xz>=0qp!,Mʰ@,3\B 6SIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/checkbox_mixed@2x.png000066400000000000000000000007211323676556600316100ustar00rootroot00000000000000PNG  IHDR szzgAMA aIDATX W1N@Wvf+bIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/checkbox_mixed_focus@2x.png000066400000000000000000000010201323676556600330000ustar00rootroot00000000000000PNG  IHDR szzgAMA aIDATX c`[-my!Z3В\dKsbWt-w:<D-w[|٢ʗjHeKŵZ+Wgdt4 f<@`?0EԠ%Ev302J210 f8(Alϩm9\ Al] 6`Ѵ0jNis8lp>4uhJ]/*ŧ$jjj6< J$4u<{C`!`:Am8Z~v扫 PD̆`$.\j@ 3A-c>lxA]cOwۨ,Ɂ,9\W} 958I -IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/checkbox_mixed_hover.png000066400000000000000000000004261323676556600324430ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8c`02PR`2v,` ]g85QI0&00H2142]X @jAzza`$vAX!E{PĀ@b(F @z#(y jz?÷7 n10' fՍ |"w q0635$~31;<< IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/checkbox_mixed_hover@2x.png000066400000000000000000000010021323676556600330040ustar00rootroot00000000000000PNG  IHDR szzgAMA aIDATX 헱KQǿwgIbAR ֤ :FH MԐK45$ bw|j.y&qw=z{/( j)Ϗ%v3Ǎi11yD<0 ʀWѲ#~jXf GDr/:(z>P'6vӈθ,6]}IF.DmYdJ))y߹+'E&L)e_CAAcO 9k;il'$I[a'&};Q,W\.zFf%%odvRp!r+|ġԤ6d)(C 6  De.a4E^s4I ^ iἸ KpGg 6ŏ/kVUź j$%5Zp,XQLp-t`̈́֏[R\[2egg৛.MEw~ ~_{/% .=\3ڽ:(KfJdXr-ЩLޔad?8/Ho\$7@MY Q!s`nR'QIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/checkbox_mixed_press.png000066400000000000000000000006231323676556600324530ustar00rootroot00000000000000PNG  IHDRagAMA aJIDAT8R1N1 78x'P'^ (OHt Xfq6 a;'و|=J$r?L(D3v0&ҦsuÊ~ d6#Q1=`}DMreZށyilrm1-ȁM$D5jkj@}=l^Ol'׳ $$4ű-Id8խoWz"oGhwܪ@qȿeA@EYG΍& ;`UyC3H.Duc{"y/;1srM/3 gyn;f _g[k.IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/checkbox_mixed_press@2x.png000066400000000000000000000020061323676556600330220ustar00rootroot00000000000000PNG  IHDR szzgAMA aIDATX 嗽nSAw(R$R PsgH /@::-H@HMqp|og=e=3眙]_;rJpv~}ikBDJL P*Ǜ>mm˹tUCO[g7ͳ:A=^MDɢ)[o`d[:fM4dX~uKJaKAJB}6͡he 2n`\ nϐ^:djkTcӞDǘRo"D4M7D7(@ݷ %4qk yib!ۚw g Zo'XPoe1FCu9NM[n <˃[^z).>WsuB#b|S PT:_YI&jמy z\X<˧ȅiQ!Z.n #P޸0nNta[ sÑz<(ХpBć=s9  zsCD`=;: _x|f@VY[%b[ ̎@zèm〮YmiDh" ɜ .4Z|@$ 񼧽 "⪡x,+hi@<5?dP\ǁS^"Obޗ/ ]? 0|ywiBSď(JA|`Hgh ugVގܸkwM <Zεtn7{Wklq/_b&k$G cO6l; (y 222+`{(%> RR  "b4 y! - bYLjn߀WTCՂ4%I)L0CԲCY IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/checkbox_unchecked@2x.png000066400000000000000000000006541323676556600324400ustar00rootroot00000000000000PNG  IHDR szzgAMA acIDATX WAN@T;ݙ^x t 2܀. @luцɗtcuљda}o8!cӜmچzi~ 3jXҜGo gEB> P-=w]YUkoY}]j'I\axy)a$`Yȣ(zi4Q E"v1pMܺ75 Ņ .S ^-H8<ӳ8s9@zpS3l.Y @N12;ҫc ([SjZM̲X,#[6&5a/G3yHwI3IENDB`checkbox_unchecked_focus.png000066400000000000000000000003771323676556600332100ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkboxPNG  IHDRagAMA aIDAT8c`0v߯F30H3#" &aX@AeqlNj3@6O= C#P]%XO&@v DMf:ylLzh,x0= DP0hZp*AɓC@j@jAd 2H?ERnE/:ZoIENDB`checkbox_unchecked_focus@2x.png000066400000000000000000000007261323676556600335600ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkboxPNG  IHDR szzgAMA aIDATX c`[-my!Z3В\dKsbWt-w:<D-w[|٢ʗjHeKŵZ+Wgdt4 f<@`?0EԠ%Ev302J210 f8(Alϩm9\ Al] 6`Ѵ0jNis8lp>4uhhh"WP jѪ d3HԀѴ0av@8n K(W 65LPd&3* . '`d狻mnZ@ w_l@.+JAl$%͠ ѩ8IENDB`checkbox_unchecked_hover.png000066400000000000000000000003631323676556600332070ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkboxPNG  IHDRagAMA aIDAT8c`02PR`2v,` ]g85QI0&00H2142]X @jAzzQF@ɓXV  Qepۏ??qf5ndɍX35+$~31ĺ1rǖIENDB`checkbox_unchecked_hover@2x.png000066400000000000000000000007221323676556600335600ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkboxPNG  IHDR szzgAMA aIDATX 헱K@_j0Č UqNn'qrqMpqrp H&PCI+(M^;ŦE%wN:$1.Q >,+*@[{$^.)7MǚERBxAyI)j2߼蝓"S D}T̄3`0 L&I%b:-iowʸl" m9=5K]#6qȟ=T5=xp{DN|' LJ I ʋ1%|i61tF, O*8ؒœ\+nAE{ /K/wyz3IENDB`checkbox_unchecked_insensitive.png000066400000000000000000000003321323676556600344200ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkboxPNG  IHDRagAMA aIDAT8c`0 H1??G ~b xBtt4ˍԀ- G@`AjAz@a^:4" r@= qN4 L:ZH2%IAuYOp@`IENDB`checkbox_unchecked_insensitive@2x.png000066400000000000000000000006151323676556600347760ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkboxPNG  IHDR szzgAMA aDIDATX WK 0LQFgw9z܋{ŕ"XgB,/F֘L|Q߇~( MZ@qօ$s @@W. =L\_8!VX'I2 p* iἸ1ɩ]`XEݳԈC֗5WiO' 0]zGYp4YEQTG,T~ޔad?βlV'"s~"'jN& 1SQ?P IENDB`checkbox_unchecked_press.png000066400000000000000000000005751323676556600332250ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkboxPNG  IHDRagAMA a4IDAT8RAR0 ||ϡ9wz26hFҮi߽}5{W|(c;30X/j"&10 `дw(@zD#f^!76i lc7*@ROۦv@sFZ_4q5QnTt8<3s󧐔5-tm*G"𶁀7R(j@pXDU/O6Еx8~|x5)A*[`⡥(p̑dؙ%/y+ nf ]oqX#(AQGC~@oƙjo;PFm 6 qkyqGJXmMyy 7YD>94_o.(G>>hnmT'<O)bc8|WSx9֦U"MNUZ1 *?bb݀tb8S߁\gm 43_Ƕջ8"|WEí;Ht~_ I*HX ba[G)Z#HZ_'ښHp"l^:NҠԄB"]yD2G6Jp0Q0#&7f4&z22|"'@r!O=6<+gVn9B2?yد`aN΅1YbvMߺgw2[k5& |ubt$)+YlXn!r ^1gYx7FB9Cznn+AreSis!Y5 pEёΘe `#j+48kΘO\A0V) [%in$).\bo#U C+j'?Leɤ'gIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/radio_checked@2x.png000066400000000000000000000017331323676556600314040ustar00rootroot00000000000000PNG  IHDR szzgAMA aIDATX WKAޘJ4JD ^b9K7k{^o-^PHJ R-BI "-3m2ԃ3e] (ס߃ڍzUU4OUnz<6S"ý (tP?F#`Aa:>|h4lG B^O}]4 W0~ 6>\^^222R+p*NlhhhD1p Mcggr78 ;X"dgsIl||i'IlO<$WAFv~~~mR:ԕ2ض-%vmu< l`x5&60a ǣ?J8;+Պm&'''ڍL./-X 5x9 \In l{+ .+L&_McRFJ lT}Π'!uzzy=:B81͛e~0hl6qxxd C?鯝gmM9qq1{(81 b/}'727X]]j.\uVF{Ʉ)+ C pv 3&BǬ&^8sU6ĔyaMrZsG/bRAaZN]FsO5 z3cB㲀ȹI ]]1 aIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/radio_checked_focus.png000066400000000000000000000006631323676556600322320ustar00rootroot00000000000000PNG  IHDRagAMA ajIDAT8c`0_%r*P;@8z3~FփbߎǷZyܛ żJfaL\LY#f4,LX(P@ ɁԀ 9W~(L 4ĚSŨ]&"AΆi644d=}t՝;w΁0 g̚5THH(QAlDʰ) )bPf]PT xF#AɁ FFP<u{n_0 Ƀl0exلN@j@.)$')2l5/IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/radio_checked_focus@2x.png000066400000000000000000000021121323676556600325730ustar00rootroot00000000000000PNG  IHDR szzgAMA aIDATX W]HTAs׻4EJ5!*H )@ɟL0(ا(I0H4!Bb0Q[]r{;ͷ6w,|3|3\pUIB" *a@f@gDJD/w&NR&tW2B+C_'$Ei$;edǩς$b3sw3=xY'<3tL%T  J} wmLIͼ,Dt WH}Vv]j^KTU7_kn`'RX!nF$Lx̊D\Q24-o"7Wj*npCtm:ˬC>`ߜpl\+X[ 7ǵut6 gxjX}s-V'2Y5`k|LDᩍ]=h>/,G8Wq(#l$Q1 PLh1/HU0Wc b!G9c{\aU6Z $cuֵ(L,gʈ,$Я# Q5pA|$#jlnu?Ԑ GIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/radio_checked_hover.png000066400000000000000000000010761323676556600322350ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8S=H[QˋşhI@CşLV08*8M":t֥&.7]ZhI,TAQS$O6{7Q{9s9Onn(,7Mf:`T\\W}_wc!2+yn V{-A1O@؜_Ɯ}eB+Է}" ~n~L aH3۷*m`lDDr$ˠxWoVwcZn Y’#Y-L:E_c~#^/'``|ssYw| #ǘ'|R}T 9Q>Ygi2مqT|u ??<:Y&1I\zd_ԐA"iIQm7`'{gr-_qae0ǹ,@9P ;N ,JXCWLI,l j? ٲSq,o]pt"ү[dIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/radio_checked_hover@2x.png000066400000000000000000000024751323676556600326130ustar00rootroot00000000000000PNG  IHDR szzgAMA aIDATX W]hU~4mβHMċNPAa Uqwc(tT!wzVAz!Q\B\if]m.Lq|sr5IZ|cVGs_tF;=mB\DL{4a#X = FK A{9Α~'57Ua_bSᒊ'_Nީa bb\XenPu.s  wĶV9^JaC#Ehb=‹Еjsq[,sj$;}p|aU.>~ { QYBV\q[G{߼t^owd5FTZ D^G`JyN2Sa_6~lrSL 藊jffQ[M.ryk\,x'3 o7jk ׊qFcYF|Ul.^|XPm"'Vk5؎\NU wo5>FmW\DW`R-CY>պj[5mī˜lOVd'xOG__WW>~5iHL 4rS̋@=8B->:+0Rߝ@arƔiBSYv6M󡹮SN<v8~뺖`NN#.#m`pAZ|g&gLGXp=`VeěvIENDB`radio_checked_insensitive@2x.png000066400000000000000000000014761323676556600337510ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkboxPNG  IHDR szzgAMA aIDATX Wn15hRH[!ED/;čΝ $T*KJ9jpm!&7^⩷}7`6MBϨ&IX,>EP_Crxk%UP$3Bl2JFxxoSv?x/V&:`B9(WZ]t<~lĹ@(_Db>%O0naf.w;hZD̚nkݓE8 -sxpzq ըa*jNۏV')d BW!WθQC5k_7ykg_짙'5qU@\rg%(,8KΊ`þ4d IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/radio_checked_press@2x.png000066400000000000000000000026701323676556600326210ustar00rootroot00000000000000PNG  IHDR szzgAMA aoIDATX WMh]Us^SĚ"vUTDTэ. ĕ WRpFԍPRTŠ ԶRkS6i!!$}swkNfo9?ވNdW]~ob<P/_JU2=n&)R)-LLdɏqE^ ոe't}Gy/P0`, Թ/y]찛 ZwAq&'}]zJ\345Y9Ĵ1"'Jlםϣb)%bUN6Ylac K4bIJy":]vvgAX. LIrL3xnY˜|GI@&Lm´R1S7rb4Ln Z@[ـ`r,cYd#[VܺwY}b mt)Je[sp)ZJxw=AS=[D^,2ХrzFd70-%C9-ߛ[_.y&6"4MDO` y*pxh4 J@kahm'!ÉEh[6Kުs!yܰP,O/5kƦН {Z!V'۳\M ؔ"-aN5Mq1W ]!0_G[0&Hm?b̬n.~_8v29U[׮! )Uk2Bd7g,Xm=9#6D-ʥ(@*_/f09zVdVgCTWn1=A hږ 005á00ô4 Ib،û Au#m"⮷uoK| ϼ[BF>3 ?<}͐űPӺK`%(npPx1Zb,@sSxD꥟FbӜ+TGB`FB(.ǩ>!t*u^?{ru_EH!Z1Sh߅ nO]t,-Riu5ܹp.&bAV5O{e畎f.(B%83مFu\߰mKNbn *\rvvԫ/>x'/b@6Ė<̜,#|V5J[ -0B:M̧E@Gw }=cEAmtRtskgGϗ&p112{6m~j+4}6oxM[Ǧ 2!p܊ CxyYIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/radio_mixed.png000066400000000000000000000005351323676556600305510ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8c`0?PL偘*H?Kb` f)Ǐ._ŋTDFF0{h38 iO9st 00HjB?@O3@Z `/9&@g ]A#wr LgZPejA3`Jj1ĂMɹs^xQcmm=Y AHgg&P#䱉 Z ^%` L@j :JH'e@N̄ r8㫡5 IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/radio_mixed@2x.png000066400000000000000000000014761323676556600311300ustar00rootroot00000000000000PNG  IHDR szzgAMA aIDATX WAkAލ -b4z ҃D{oО,C R 5j-3˨k6!ơ}Դt'\.`C ~ v-pK;B@|? cd!A-`0l6v}h4^Wd2T*u G{"7Fp9_ZoBa08P kZ8N?CL!u0Kp~7drt:?ʺdr^!אV$6mc9Z":Ͷ:2|Z}Cy` W- }Kc8W=VD {s|F=:ë #' *v.m  w᜘ I`߮rmWVvb 0jljcLZ k'j]*ls'*QXLa\\qER:Uu\!#9`;63#[љ; "Ӕ\)ꃩ6 Gg,&ح) tc1_:so6YZ+m4 OkV2,&v9ZQ $c]QnT!,-e$A݈A?&* Af>_x[[ubL~IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/radio_mixed_focus.png000066400000000000000000000010661323676556600317500ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8c`0bӯ_F_ `yF6_ฅU9?/[} ūxwAp~0E_`@sxz&6NF66KA@pt\ۻ{ג%@E\BJ#ك@j@U_k3@j@jV 'v/> 9'>_s $@ 5Q-`ϝ;|ݧѣ0wY _p{dI~722R p;&K00z#VX!j01片 cQ"RR ҃":_v(%aH H-L3 lm ,d6RnoS@jjS?`qff FFFs/sl$V΍@Ew/E_!&)+CIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/radio_mixed_focus@2x.png000066400000000000000000000023671323676556600323270ustar00rootroot00000000000000PNG  IHDR szzgAMA aIDATX W]lUwfwf.iSjRh F*>HH!lC61$T1+ Ƥ>ISJ $ -߅X~t?%[ܝ\ϙr%1$ι|s;K]\ IGH[DHFFx*pwu#d9a,6R4%o7L,H,_UVBi#cLDJ$c1#DNF՘T$oOY <ޭ1|TS&N޹qN^>\ږisܒQv"GErW'%t L 8{pP{`tpqaSGcyT1(Yz5BK}D'(RVҎDd[hK'cfX>j,^ԱTpƺ&b`!>O ?߻ZG$K[P 8D''͘hJ`"v$^-8׀7wH昰%b.kE͒Et3!]ĺ8I@cz4FB|4' ~B\ &xKEub\E?<-cNz$ 7E붶"}-XӴ;s+Pu_ @ l|2ľ @#G|r7+ޞʽTRe<9RR`Yhh]˗ .!o |Fkk L940s4gMm9b:4缴U#11 K2S< "!4b`=xwͅ-;NT+WR2`+.~ydB8 _G9u:vß؏ѭW~u r5QLRj@Z(7Bwя3[Fhc ? g]$WI%Y 3+ہ*:8`1gDn;LIq?:4`wE4xd 盧8[׋}z'Թap ./BS*ɈP!YvTZA HFfygKT!#BŢC +%#XyL,U$Wf*B K9d(*p o|rA dkV{rH2Z2"IQ"s5ӯHk1"qv hG`:anMVh'GFܷ D2Ec)T}J Ⱥ C OIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/radio_mixed_hover@2x.png000066400000000000000000000022231323676556600323220ustar00rootroot00000000000000PNG  IHDR szzgAMA aJIDATX WMhcU=/i4Lmb2:NAQtƝTA ;7t7 ,E\t%8t43t: ?L̽F}76Q).cin+WjY28F'Na$A47F,n%Eeu[[(8ΕPwƆ<<13ܓSF#} ?IDMGQ{߼=FWw%'H=8Fb">$"7Ov;(n\.k?L.0 Xah" t(uhv~ACcOY{Ռw\3pZs 䆉?0űͬvӆuͷ K2 =0{9:j6a KղM2et;jnt/Oaffᡱ3dIxH^pe[\⤅{w1`x VuŎ wnqW3-lZ"X3'm i}18zTiծж4#TļeBxkI!a;.SMƠor Ux~rpYp+@5%ӬdB_&,a!.qҬY=J&bvmf/lqKȶ4zl[7s>v "͊ 8l{ąYD9j5 TKɆ#Z"~&@P`NtCV3a&C@S$/\oo\G("RZO<$5-ךfyY3{ATs"TY|_zO>xǾ?DBNr'BxLDyk$ x$lW bk\79n /}E%kV'& :aqLbq5-o~v}[wQ8,@Nޝ >DHʢKF\"0:IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/radio_mixed_insensitive.png000066400000000000000000000005101323676556600331620ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8S@ Z02&|%CǏP)@GcgBMpc| jh♟繆jE <@u1Cg<븮CȎ ?DC>TQ;r)D,r HFILJЧH,9hsmyTX͠mޟĒCvf8^J)eΘeqc>4W+ GZk DzHrM@䧟8&Rw hIENDB`radio_mixed_insensitive@2x.png000066400000000000000000000013471323676556600334660ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkboxPNG  IHDR szzgAMA aIDATX WA1˶vw[a)\*EzT<%=^œE/`Ѳt;,MBf 3:x>d&|Bw:aVŏp_31˅(@R!CJ+@y/t:d2ᛋZvl6/jkq.W4? W Rt XgU7iv6 mM-||~KK K?i"kYnTT6:2 m"l6+ O5F=j~KNPbĆØޞ[Mp8 'OMN\beb4+d0 [r.0 [r :f!6:g'u:v=crGR?n9Xt#-)"؆}AChb\\+b #1 %9lL6b[J.mT0Su]OՀ1UmP'Q^<7iXvbSl0B?q =YK ua)8ߕ *"Fր&"2 0Dτ%lY }IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/radio_mixed_press.png000066400000000000000000000010411323676556600317560ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8R=OTA=36nAH06|X #-\k5;DMtl@ :caavf8gfg٬νs9޷o\f^s+h:g::PDTg-pɌpIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/radio_mixed_press@2x.png000066400000000000000000000026041323676556600323360ustar00rootroot00000000000000PNG  IHDR szzgAMA a;IDATX WMhU>w~^SVkE+.F VFwvw.*EP"EAp*ET Ň"$)67;sϼ=p{ϹLD!?dwμ|$t]=uWk)m9wr9 L dB=}rU5ovL{/O!C`g(c7ʾ_q|Mr߶ғS&5Ylo|Ȝ|RX?Z>{}} 2r)?K&Yl#.9 p@.mH宵`t"y `XL`Z$CM<21wړ51JL譕%W)`y$$Zlc1f7ڳ- +n+yޡ͂fm:t"/kyV_j}tPe+; ~9.j -!TCd:"|{!4MWo.?y+P+ ĺ(nPA.z_pYFa94Z^iJ[*C3c:ÍKƌ[c~]1FD{( Ok":(FS!Ȍgfx2Uk97Nf5,Q@1} 4j M"?ALʙ"*?N#(8D22E"-\k3d)g³Iᣅ؀Z!Wpm'hl_?—2d<ģ"̠7sxd>(;Cɝ=4v;1R' cYk"& G\be,b1m39|xrc|D0'` pĥ b=8zȪ7ǧRT" .`z:ǧ <@(nxԸˍTZ^N@p~1g!ngNdY]sgq 5L@Ȝ\9ybLE'sFwNd髷ڣoWv%`'sG9kxSDk_xgYXrPО1YWwmG<~ˎLt@+MPi2m {-\7X:C~Sa/ٸK8luRκˋ'{?›O_3&ƫ9Y2hRfz7dg\:64u Nbi'"1O{NIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/radio_unchecked.png000066400000000000000000000005521323676556600313730ustar00rootroot00000000000000PNG  IHDRagAMA a!IDAT8J@`Փw"!o!@»_x@l6:?̎FGm{``ik C]EQyA`(:B*t %7Miw,{SP2쭨DT #sO0 _UUU QOvOq#eY⹑\U=*$I20-WV/hnYnV?H]t?QvDcǤQ3^cu$IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/radio_unchecked@2x.png000066400000000000000000000015551323676556600317510ustar00rootroot00000000000000PNG  IHDR szzgAMA a$IDATX WMKQZ4Ѧ.%Bh@\tS.1JU0jlbibKczfI&w͝y}w$鮋j5;OBǠ`3b)¶%mcfBK?@ PZ-D"qN+XZe‚<777 p\Vu!h D+o&?M Be8lmm}^[[;)J ySaD18 fL o1adiiigoojЬ݋FFFF1DULefI\#_8;X,l΁ID$ ^ҿ5_^^ԫsb# pO҇&ްgccc5MT*/x5іuGt[v B'#(q>l8:::s9D=l 0J@0"zR2v7n1J:w@dss6%0@K&ud1WKzQon4A ))Bfp ك?Ƥ~ 1Y+C[[d&+d*[(b-WD"OET h/^UlX Sh[XO59׼J{b0&OcCh N[1O>; eA"j&8b@= qx<縜|,BDTC,X6Mw;W" Pƥ2\%A "Y0sH?wA>TaIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkbox/radio_unchecked_focus.png000066400000000000000000000007171323676556600325750ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8c`0_%r@ d2eϰQ@d=(߹~|;ީUwϽƩle9B$dClf?  Ha*txfX쟗;[zL 4ĆSٰC]&O?~ ! w-ȻJ@| > $@ ~*`B }3o񥷀bnMரS:&YFC.H=&faj4`>n&vn{`"d(A *gĜ̩h<!*-Ǭ9 'R#,IcO4 5Y/ +3$)ҸYIENDB`radio_unchecked_focus@2x.png000066400000000000000000000020371323676556600330650ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkboxPNG  IHDR szzgAMA aIDATX WkHTAȷYDU&TPB?ATPԏ" J4T0J(BͲ(r]MW՝ιښ[h`9w3\BBDzeBFF)qX6hD6J rw㌱roJ6nYD#%cW);Ur{U" XmKN"̖ uP\@TАO[a / [a=m%#o>uxਦqB|1b^`M),(EHQ@[ 3_PX]wө7n69zsD4& DL/{;c S\ h̬Ϧ6(>2{8?su2y1iG |lv\It^).IuF7kquϵC<=;gmJ \^,@`;\IĆR/p gFDxwΉFD N\%&˼eܹR8 ֢gZL_sLHDXq~[lb B܌:i.l.;![¡4ORN"`Z꫐ڴ<$%ŧ$Ꚗs(ُBd_pr:k6ΞɝIENDB`radio_unchecked_hover_dark.png000066400000000000000000000010301323676556600335100ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkboxPNG  IHDRagAMA aIDAT8KKaKČhb+R/ EK]Min RF ]Fj2~g<9gy,?Uy) eMEF"4~>py= GPZCZ&4K@`Nma+7\?mU7OncO,¥ ֦ɨ-ţJGI,B $;bCy4zRk{~'"9\X?hz:s9 >7kO>k^șMZݚ o)G:T<ѯ:F 7d!SMqΨz2˳=B A=E 1Ad6D9|({b IvMZ[,Rivml{.mm B=E&4ذ<\< _aeiVtoNL@!se+J4~͈lL/b/FC%"4fȌh C6#a<1@K8FDj`wf:E2fa|$6plGM[@gx?8SĽxveض %A7N}xmlOkx+|q|u2&|'K,!:xry Ǻ*Ź$NN>pj˼ây1ȫδ4C(ioܸ0!ɬ[Rb&*Omjjv=9DJL)J,{t.-Ωk].E$@+tdo.|'>Pk~LE[-/:sEgnnEEi4>UL 4vCRFwUpϋ=yO\rpywmk8RqXvM&I FQvS4?jCYw,,\Zg7] $q\8ZBwjI Nlc@tDNDVslsL~FbLI](:oAwO O}|[ktcbL}UdQ݂/EE;8um`?y-~-0"g HFDZų?~K,TW/8G@PLGi!A))CMAป Ji[ ~J?憟| QXFX{~vZyt1?tpMB$D`R;XNi<|C\\G{$({ׂE`K#ƒobH@͛.IK 360gn[ ̥j'T|_ hvH ɺ;_?Ss6 u9IENDB`radio_unchecked_insensitive@2x.png000066400000000000000000000013001323676556600342760ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkboxPNG  IHDR szzgAMA awIDATX A@e-uAx)؋x7W?IAh)3d I&ɼ̼Qn1}?4+q/߉R)i 'ADYV[TBȃxY\rc6Ee:j]ufYA\s_,_:G_(<ZV0R>%\qw $GN@*{I/@r$DBN,!D$ʅ32$0 $љ;:u*e*tW:9dbUT0TN̾Mr4QvqPZXESLɏ͢8C R%(~,s`eLU42;9CrBgU!`E[Uf{)5YBó=E< Ӣ̦L>DUfP$I8l{s}֘_|*/Et'q=ovA;kk283uv@jo6vI:çd579l-Ǿs<~&X,XNqvL y^nwh>%m* LFBfYlRC߬ѱaRՔ_.~1FnEx->oK1Bs"O ?\VIENDB`radio_unchecked_press_dark@2x.png000066400000000000000000000026321323676556600341040ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/checkboxPNG  IHDR szzgAMA aQIDATX WMhU>wfkbhB41e AW.\ nܴ]tEpcɦ]QWH S+BĘ[mkZ5i23;sϼDSns9̫uy'2V yxs2~62y񰻈~#7R?˖^FAAl7˗Mnho,"O3 &ԤucIz>~<䮙9s-rW[2Us,&5Of#oY{ɹMN\x՝da]Wdr#%ı:8]* >R7ȗFSjliPh4ae4bLb`|= u)o<.jHQ1"^J\ZP@  x2P ݗ3uN@) t)TEBfJ pyhdI&C`5!, z1&A^ڐEȯ$m|$$+Lj"#T[MA6{S!DmBŗH7IIK[I@8xR ]Y? XL1 |X6D,a˳ zy-I$Z9~E4;n $[`}r@j'(Z xVUf_"mǏ\0Quc:.q/tN{ "$1a5Ww~_2Ov"R3Wƶ{'&Cx8䧩ߏ^g$7FSN : C:#Qy=RCrXpӧFy01sܾ}Wt-w>t_ݎcD`VLODxdl2;XO]~`b51J=I!=c8Cg{z<#i2?\>xAҩEXB LAEp }`ϣ1fιADn[6YL'&CM΍%#ɉV!e}ȳ3.KhhVi@T:, XO8'y+ql#IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/header_arrow_down.png000066400000000000000000000002561323676556600301700ustar00rootroot00000000000000PNG  IHDR Vu\gAMA aeIDAT(c`FK 1L /(&eʁa @|ܹsK@|@iK5"+a MP`d " 0NIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/header_arrow_up.png000066400000000000000000000002721323676556600276430ustar00rootroot00000000000000PNG  IHDR Vu\gAMA aqIDAT(c`(y]RRR?~ Y bFF$ ҈ hRs- R $))yŋ7A61cbb dĠLx4 &OIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/slider/000077500000000000000000000000001323676556600252505ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/slider/slider_handle_focus.svg000077500000000000000000000037131323676556600317740ustar00rootroot00000000000000 slider_handle_focus Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/slider/slider_handle_insensitive.svg000077500000000000000000000037171323676556600332210ustar00rootroot00000000000000 slider_handle_insensitive Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/slider/slider_handle_normal.svg000077500000000000000000000036741323676556600321530ustar00rootroot00000000000000 slider_handle_normal Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/slider/slider_handle_press.svg000077500000000000000000000036601323676556600320120ustar00rootroot00000000000000 slider_handle_press Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/slider/slider_point_handle.png000066400000000000000000000013471323676556600317710ustar00rootroot00000000000000PNG  IHDRw=sRGBIDATH U;Ql4Km$@ߡf !M( Vi B뢄`o䛽 &gΙ;/,n:w͛l;X,cpCdGm:kFNNsF@(nTѷFg|^t: ^ɤf?íwL@%_d%F] wOTz7 .srhDRl^aT.j-1Ձ]R(FkO\. =G*x{ノh^G-ohTWL ȗXD"n8~ r}V 'GTe-9]ҠP(gYIGkX2Ob:ekTw=H^.7J͡Ѭ@z%QE^7o;WpvF@JQ[~> 8UuLF(ɃuBL=ZE\\IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/slider/slider_point_handle@2x.png000066400000000000000000000034501323676556600323400ustar00rootroot00000000000000PNG  IHDR00WsRGBIDAThYIOdU@l%F;i;(alX1MoVv[ @#b"@hP3qrPē:{ޫ2eѐbE1^YT".-dMttԞ%[XX⃼`rbb`)Ya(<\XaUcn擉)cXy؆:^>>|ɓw>WQQq27ɔ&....899zff/-OE/: BCȱioo{%3U mkC'8VLX9&4zGTV"i!@1p͂} 6aKbu  Y$ g^J\LJ5`*0E9C*1w/SWc {|zi  zD7&Lig~W1I#DG|NF.V::E˅]g2 MQFҿ?cua:It+RP0v 3L]`Pr!q y>HkO19udXiB?v ŌIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/slider/slider_point_handle_focus.png000066400000000000000000000016231323676556600331650ustar00rootroot00000000000000PNG  IHDRw=sRGBMIDATH TKLQ'BcPBpKD++,tэĐ….pcDQnЅ,d݈"i;3:}36M{,D.٤PYӴǙ~dͶ-Ir\ޠ3^n1I4g? :9Ԁ&uV]:i,SX,-OupbWDsΫllt $ε:GM-0pJbޚ =e&jF64(aE)"U(6ő˄p_r!-sOP MCChz:Q@0l KBȉ"*$M1QSL7=@(r? ަZqWYwa `T}$"LKZÂp:Z`X aͿ+{o^_v#,Mo)!s6<1pV1eSˣ#\9J{aM͋\7i'usם u֊MRvѤ)ƀLġWbduis,tRda[_öC}ݯœ4Ȃ˖-3z? ]q1%>mK$ÐAh^*/,Gr q:UgϞ8qGA$CK>9 c#N#"Ur"6}",<~NM !B`8C݃i/$)ALJĒIBLd͕~~s(mܾz%w'`ۅ)H Yw-bF-"h ɛnx 9 #&8i]'=IVcL9Ot]atDXm([W30ҼR ͖ZXv 'H>$K>|M5?u~`Q1$u"I9וCk4-I8eO Oxz< xӎю"׽{#O6 KW^q~`n!JH\'-[S;]`(1BnaI@H B|)^ ]MKpHQL~d\'u$,.)"S "F"Fɹ}}N>XC.Tn/@JZ#o#q޳H^>N5ȅx-U$#9ͥ 3i5N ):!"FRD8$_+ 9Unƅ|*>(B=CN}]tYBM+-.iCS N`]Ns6EӼUv,<jA!d4[Nz.jMWjSJomƿO5i@wЍ>$?Ӕ"鵲<7 ֑znbM`m*^$g-u@IAdC`Zk8qA.Xmk:]pj*[-[!CDa pvqmy.[BPqܯiK򍨼108aTCZD{FFlF]}O_v#SS{4FMK̋ 5ԻeJ#a+{ iؘd*>8;X;簰QDy+֋jXc])|%8x x87d3*EgZ΋ 7K7+zx:G6{߃ M jinQ:kn0d`:`0oR~ ZHn}HҙF˂[֑7n.`)N|jNLs6.Lk;]~R9Jtvyâ{b7r7_D4϶zsqmP^7/\ovME̡ݗ>s]h/j(_dɯ3yM8xPɁf49azOv&@nw'y'` 4= ,P5qZR.Mm* KgDH6 YYF90`$f%4irٚaXF71Rļr^}$`^_C6Zַr ZTjRnt:[ 9Wrw d2i2fNtG L{DwVVVpu_iY6UO)7 fvAxM4"P5N|UzgY9ll󎭻)^U!`0\j1mH|h4~BAkC2EpB'-,k\8/?J rO$)% ~$;KֿTb&`bŋIENDB`slider_point_handle_insensitive@2x.png000066400000000000000000000031701323676556600347000ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/sliderPNG  IHDR00WsRGB2IDAThXJdGn[x 1B0!7gH$o$m//Qjw:NYUtk6T]{ڷmVcYb)}JW7O%եuW>̰2MTy.F,_=Py> PyuOy.k\a###_6۾z^NcCU%𤋮ǂ7WVV7@Z=,0y}aai:_l\vCNĂ-1v~ߚwwww= 3L\paI,#`y*N>2/Z3Nec"24dJC̃AvS,Lik\\f?bhu{8gD:R]`;E ſ}3::|̙3Unu:%q> D\s|¾jCe&A ٧t!l݋uLKrO٨r1Dcʉv1sӫ|k2h_W.Aiթ0!`ٌSE0NFuCc&TĪ7`yq_%V U Y|AiĠ0xi6Pʖb&un͍ & yЁTF<| G +szaA^"v͋GeSnK/lؙ=`@2/&<Y\F,[ @`H'N.//'Sި1̮Bz(r?6WǻɒC@n3MFtmZm=W;<<,#}>@ј%HBƐ[,M (!)\n<ËVDy 8q8.4 cb0Fn~&9:Voup|LN.ump-@7@7lfLiN}} &Ђ\]]= /Cg6:G>,W}tfgg1oColl|dF>n@;^ֵw$-[` mwtTV@ߪ"6QFhEy||| d$gE< 5:~pː.6JV;%P?n t &v7NYuՎ~fJ>}1( #D-?6J ?LktWEqSSS(mtfL'We챐Om`!#)OY)jƞ 7=!9@=ig@h*'$cv²8Su;br`Ę@jOtIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/slider/slider_point_handle_press.png000066400000000000000000000015171323676556600332040ustar00rootroot00000000000000PNG  IHDRw=sRGB IDATH TKQ?Օ]ɯ"?0m§50 ^ W7SJ˰֯Zw{g;̮م;{~ܙ!=HvߑPLgA?D$jp$Q J7 nZx%Bn S%sb .%LÍ DyV^{ҕgcojN &""LVq5]{ug4PYV~G$y>۾CC :1N?;}ĹcESIk΂nܤĞ`#dĮwSa mxXD9Er1vf :5Xw*eG]"fHb\[#0?p| 5nаx9Vՠih9wӾʗg/cѯ{Wڜp hAT,~\@KA0{ćHc̴IƵSI퉷F+gZ.ow4 k4u55M⪖ $D=/δVElٟ^ծ:޼oszrGo) fݢ Ow` ;1~ `1z6~?qy{IFbqYXVVfy X,e*ean}]%r{Nf%O7g-_yə[WW"YPBw0v4^o*YAkR4\4Ag;#ƚ2.XVSa=/x4IENDB`slider_point_handle_press@2x.png000066400000000000000000000041531323676556600334760ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/sliderPNG  IHDR00WsRGB%IDAThYoU?glExPD 1'F-! &}0x!T/%bȥ@mi;̷v:3ۢdw3V-]e, ,+7l"/-<^ccq|e(LӺ6ichѽspGu{n8P K\JDaTI$%39BB\ƼE#汓OG0N&V'D78y@d$Au@ڏCTeX( 84^|d*M'3WPJX})WrrM*$.iI1%G\CquN{cKNfgy !KZbh(&beD'!$>’ ݥ`>rv߹XR䑔cӿPAhYZ^*h2b'dn ZU|8 ii @vuf]J-R(O_O%NsЍl¶ҙEԠ{_  '< %5Ò1z&% fuJfeh JW!:4~C-s.>ig5-ix'M`<1W_ GЍNu=u2h6%ϴyƛj>Ҿ-q Aeֽ6[1ՙ$&|jcM6USCgzCPNAwKw,0=Yj}G+ׇ-ityF,/íUō&Ԡ[*&i8Lۛˏ}^C=?i:VsG(n٠ ƕd6`@b'i@&j|([ځ`VLSƘHC'γpK&nMԃ ԅh\7(q憣C7n.`B}g#A1/5|K咵 眰IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/spinbox/000077500000000000000000000000001323676556600254505ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/spinbox/spinbutton_down_hover.png000066400000000000000000000002211323676556600326100ustar00rootroot00000000000000PNG  IHDRxUsRGBKIDATc-}FF%@@Ŀ@4L$ ?8,b" * '\'LFCMʆA4HLSIENDB`spinbutton_down_insensitive.png000066400000000000000000000002461323676556600337550ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/spinboxPNG  IHDRxUsRGB`IDATc|߿?+++f@ݓK2$޽ Jſ0A E?5$O\+@VdIL n߾ 2f6IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/spinbox/spinbutton_down_normal.png000066400000000000000000000002441323676556600327620ustar00rootroot00000000000000PNG  IHDRxUsRGB^IDATcw^-}%%%@@y@,H(I122&A@v )`Ȋ@b$HLldAb3IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/spinbox/spinbutton_down_press.png000066400000000000000000000002571323676556600326320ustar00rootroot00000000000000PNG  IHDRxUsRGBiIDATc]?+K@Kg\!#H$ RT?$c)`(%A04$ݕ@\..IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/spinbox/spinbutton_minus_hover.png000066400000000000000000000001501323676556600327750ustar00rootroot00000000000000PNG  IHDR;֕JsRGB"IDAT(c`C$a06!T!{46gcfIENDB`spinbutton_minus_insensitive.png000066400000000000000000000001531323676556600341360ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/spinboxPNG  IHDR;֕JsRGB%IDAT(c`C$asNMVQQEHͨ NLUIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/spinbox/spinbutton_minus_normal.png000066400000000000000000000001541323676556600331460ustar00rootroot00000000000000PNG  IHDR;֕JsRGB&IDAT(c`C$a{ GHixIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/spinbox/spinbutton_minus_press.png000066400000000000000000000001541323676556600330120ustar00rootroot00000000000000PNG  IHDR;֕JsRGB&IDAT(c`C$aY?MGHF:IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/spinbox/spinbutton_plus_hover.png000066400000000000000000000001741323676556600326330ustar00rootroot00000000000000PNG  IHDR;֕JsRGB6IDAT(c`?s>IBrCT3#_D32+C4(r6ր rvIENDB`spinbutton_plus_insensitive.png000066400000000000000000000001771323676556600337740ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/spinboxPNG  IHDR;֕JsRGB9IDAT(c`Ν;iƄO***Xل F]o +IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/spinbox/spinbutton_plus_normal.png000066400000000000000000000002001323676556600327660ustar00rootroot00000000000000PNG  IHDR;֕JsRGB:IDAT(c`ݻ9 $!!/BSQ؄ FQ >wIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/spinbox/spinbutton_plus_press.png000066400000000000000000000002001323676556600326320ustar00rootroot00000000000000PNG  IHDR;֕JsRGB:IDAT(c`@gƄOW"9Q؄ FQ YLIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/spinbox/spinbutton_up_hover.png000066400000000000000000000002101323676556600322630ustar00rootroot00000000000000PNG  IHDRxUsRGBBIDATc`@d$!*H $+@q6## djqE0IENDB`spinbutton_up_insensitive.png000066400000000000000000000002361323676556600334310ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/spinboxPNG  IHDRxUsRGBXIDATc`@nRdddt "$ ˑ?b"FdIEE ŘA:a jjjV.IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/spinbox/spinbutton_up_normal.png000066400000000000000000000002371323676556600324410ustar00rootroot00000000000000PNG  IHDRxUsRGBYIDATc`@ d$!$@>#ͨ4$"`@T8(cA1L  @:a ]@X4H 2'IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/spinbox/spinbutton_up_press.png000066400000000000000000000002541323676556600323040ustar00rootroot00000000000000PNG  IHDRxUsRGBfIDATMA 0 Q7=E_Cb+(og8HCA!ȐMahL' ޺Tз&v{0V#IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/tabbar/000077500000000000000000000000001323676556600252215ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/tabbar/add_hover.svg000066400000000000000000000013171323676556600276770ustar00rootroot00000000000000 add_hover Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/tabbar/add_normal.svg000066400000000000000000000013471323676556600300470ustar00rootroot00000000000000 add_normal Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/tabbar/add_press.svg000066400000000000000000000013171323676556600277100ustar00rootroot00000000000000 add_press Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/tabbar/pagedown_hover.svg000066400000000000000000000012011323676556600307430ustar00rootroot00000000000000 pagedown_hover Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/tabbar/pagedown_insensitive.svg000066400000000000000000000012331323676556600321650ustar00rootroot00000000000000 pagedown_insensitive Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/tabbar/pagedown_normal.svg000066400000000000000000000012311323676556600311130ustar00rootroot00000000000000 pagedown_normal Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/tabbar/pagedown_press.svg000066400000000000000000000012011323676556600307540ustar00rootroot00000000000000 pagedown_press Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/tabbar/pageup_hover.svg000066400000000000000000000012261323676556600304270ustar00rootroot00000000000000 pageup_hover Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/tabbar/pageup_insensitive.svg000066400000000000000000000012601323676556600316420ustar00rootroot00000000000000 pageup_insensitive Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/tabbar/pageup_normal.svg000066400000000000000000000012561323676556600305770ustar00rootroot00000000000000 pageup_normal Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/tabbar/pageup_press.svg000066400000000000000000000012261323676556600304400ustar00rootroot00000000000000 pageup_press Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/tabbar/tab_close_hover.svg000066400000000000000000000025221323676556600311010ustar00rootroot00000000000000 tab_close_hover Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/tabbar/tab_close_normal.svg000066400000000000000000000026431323676556600312520ustar00rootroot00000000000000 tab_close_normal Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/dark/tabbar/tab_close_press.svg000066400000000000000000000024521323676556600311140ustar00rootroot00000000000000 tab_close_press Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/000077500000000000000000000000001323676556600241605ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/arrow-down.png000066400000000000000000000011041323676556600267610ustar00rootroot00000000000000PNG  IHDR00WsBIT|d pHYs33o~tEXtSoftwarewww.inkscape.org<IDAThJP@Ͻu6ąe #.**!ݗ? }3_Tt#8PY#ܹh- -2 |g&9'7((a%-(Ug6_f])\/槦 sggqkMdZv |rmE`VN7Q#ݱ#uN)np`)׋rτ0;b'΋ ;*u_m-ΤS~%Jŷ/.~ךƃRSR gGH !%@Iy"!`,!E< Jos|;[$w"'E,ah4ahLaARwKN?.@OD.+̙57y((|D!އIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/arrow-left.png000066400000000000000000000010761323676556600267540ustar00rootroot00000000000000PNG  IHDR00WsBIT|d pHYs33o~tEXtSoftwarewww.inkscape.org<IDATh홱JAEL F&!$AԔj$؇E kF,Jp&$3JSܽy{31Je>efZb D[}׊G QuNSkp,Mw>?ղФo ݳ(zi]&+<CהQ4h /wWOQt0e,Bǐy0BR60d a e i4m4HX3N5b,Y݇7:*uoPWM'H@S<^vrw{xn 5}0~-R W` ͅ+x/2.(7ըb&2Q,.yxw!AIITl61ҁa?tǧS$&m;|ݱ+Ss^~It\TmXȶLL|}(\:jDygg3F 1.SeM4oYOt8UZ^xazRHMk)^ܩ{(f;/9 !8evacoaI$brX}CAzz']M%_-V" Ikm/ħ[˷l~k+x@+s>L1T=,Go'D 6ELtUG[4*͞`. :w}:Pibj9V8Bowa٫cU;fjV=;^)KIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/computer.svg000066400000000000000000000271641323676556600265510ustar00rootroot00000000000000 计算机 Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/dialog-apply.png000066400000000000000000000021541323676556600272520ustar00rootroot00000000000000PNG  IHDR00WsBIT|d pHYs33o~tEXtSoftwarewww.inkscape.org<IDAThMheϻmZBKŪP(F{IOG`xQS1T*iTMAQ/&l4t7 =$a7mtKE[CEgǝٯwja;)x Lμ v0dKٝJX4|yjO3|Ima|)`z*GC~Y"C!TahPkL8Mvv`?- ?p;SOkWX3Rp瀮ΦtV1JpοQ."zU]Un!Y-}OAyo_'m#Aꘕ>=JH;tܹ[n`e5b_JAa ţ 3IfQ= DDcv,䒢]ǕSإSU+3WeBӓg][#mN/{!>y7'8M@=s%z/¸wv~m&JHSb -.r6u#;k֛8JeӾKj}jg+T l !zuط0=1U:fl7T5 'YO-v`GWv^A6G-ZԟLIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/document-save.png000066400000000000000000000012131323676556600274350ustar00rootroot00000000000000PNG  IHDR00WsBIT|d pHYs33o~tEXtSoftwarewww.inkscape.org<IDAThOkPM&*vt*d o/aE[~n ~n*U\Y&qiAuE)Be亰c_gI:A6y!` պVυsA%ȯ=Xq@.HXYy Ly`պ&s17$Dx< e7Be+fP<`+z]6@: Ki)~Բ?蚤 |< 7e(2_%&@7&nr}4}pYa-0tcЍ Ob!D43S46ї_}B˶+ΏU5LXWǷi x0r B1羨= !:`4RdDxj;j15L 0I 1LH);{k 7JolT&*by@!fa~ي43n`ܞ axc6,0IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/drive-harddisk.png000066400000000000000000000022161323676556600275670ustar00rootroot00000000000000PNG  IHDR00WsBIT|d pHYs))"ߌtEXtSoftwarewww.inkscape.org< IDAThYMh\U}oZHE*ZJhۅ FP  T҅v rj SŅЅTsah!ЩmJqԍI"3:Nw: afΜ{߹6L~PZ8c-mQEVE1D p8m4|iqߏ@ H5BJ9(3pD{e=B=ϻ٭]033˝nd^}rpDֺ񉉉3O!u~&`S\\ YZ$@o00 ~ vfU8kJl?RJjR :gsr!]p7ZgC4 `9R:BbʳBϦY&8'q oXD"Ř/dDOy,bQt[،NVq9ElNd#`DfwǦqm\$ɚ.UV5WP0-`*m*Ru󋋋(J(J|]<7tN/Mi_p 38^@kD cLtML1 ɿWRX>99y7OQ,rYzPߌ({* X)u }zcc7֏698INbuٷ>/ *bq͊;.tJ@2Q?7*]JmrY> ຳT*m$InϕROo ӎiG!y}~2K ľϹElqs4}R}r.T(nA໎3L/buŽl&BTZ$ĥR4 t\P(0]?Jdޕ$%)Saf''s%%a/Xm!r(fT<8nذ![Q oǖQ_DڈF. sMQL#^+???l6C/(-M[iiiG|Y,Q}9̂f5l]D eF}.//KrJ!/'VAVyڕgٗLj4:gxo{d@ bw}rhN6N8{RJXx)z^*D? ѩˢ/kɏ8B]H[4.#~FNvMQDv{c#vq##OЏ6.*meB+5Pz՝5k*`| BU0+%fB)bl#+w?"6 aXB~O!pc"$͏ I̭h f")DJ IqDYD ڻD!aG(((o' 6̵tDY2DF}HݲB)5fsuA3$8ER744|/bzӍM'IDZFZ7eSw fQ2`:bWd JDȼ(o+BsȨpܓ[۹8H xs:!unAc}EΣ; uԧg0Ұ }+?KG%*/Rh5x[&wvv>/:`B_ZN$dqJ8RU‡hfUHDmGN folder-open-48px Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/folder.svg000066400000000000000000000056741323676556600261700ustar00rootroot00000000000000 folder Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/help-faq.png000066400000000000000000000017541323676556600263720ustar00rootroot00000000000000PNG  IHDR00WsBIT|d pHYs33o~tEXtSoftwarewww.inkscape.org<iIDAThMh\U羙iS1(+uRL:`i+E%4dTj)Rhqc%;MQB#C~ӢX!vR+E%䣙3mܱ ﷼?yw;RRRRn$Ҏ];6rJb;oVrS˛+=] '7ƾ@wh7*G[YX#>{LV[6ac߹DpKu׺p6[|Pk~沾h`Đ4>3/HI<L7){]:ɸ$u_oU \ b30yfekծ⨹`kTbI^^7H'<Sl\T豮|F9|=4j`uU$X ui?p+#BCC[IXmJեB6 ̗T*pu[z]+afû.ÿ` %Y}a 2=zl)ujle2@Fx5s'lqE_XD'.Ӗ#T(1>y{ ^lZNըFeѫx$hL-fjJI?TʕJZuOG[<$0[8|vbZ*dIn¾ŅnZu7'7wԪ{ f~o Х3V}jj`2:5~{},-mZ ESJt|:))))7mL>pIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/input_clear_hover.svg000066400000000000000000000026411323676556600304140ustar00rootroot00000000000000 input_clear_hover Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/input_clear_normal.svg000066400000000000000000000026051323676556600305610ustar00rootroot00000000000000 input_clear_normal Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/input_clear_press.svg000066400000000000000000000026161323676556600304270ustar00rootroot00000000000000 input_clear_press Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/media-optical.png000066400000000000000000000060601323676556600274000ustar00rootroot00000000000000PNG  IHDR00WsBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org< IDAThYkluΝ.%._(Yʒiq\9v@N&6n@#Hҟu? hiu!XFTȲbݝ{OcgW#rss]ooѻf[E?Ȅ;0 D`:^-NExZqz9Q1:/ o :tf1.GH @o0둢ύ3Ⱦѯ!NHI?# !fVۄ}_hb,}lȥ .f{H FQz;QSےzWvC[?P.KR t[:Y[)Yz^MJO s@zj?#hr7Zϸ/7@@ MRFP20 PpQ*a;Nlx1p0fXǫU\߿ 74]{F {VYA+ %0 b'Damzu ?CTI+"z mIAԖڤD"@ ǶAjg@!s yGLJ8ze!LYk ZXEQo[">*AGΨj ) C1 _en_dxuau8e^ka`DRe*#!Yn>M;4f~ mc9j6Tx+D[زRE` D `aqcc ܎ S7=bត<8OD ;lӫO2504m ZfE8p3$3m8A@қ c޻+b̅J[_(.`罵<ᝣ{=4;^ ԅ EMKSøc'&<σe;== NBF?4 P(++(fH& FSPY22ӨM i*zvk >R iu-^wVo=m0°Un>C{y F(dlo8=j?|0Mu] #)_{O8s6h&H#hmBɲv `@;Xe=s#c4H`k X5Q`Q\l64{=|sӑ#GYYVl<Ӣ(mk`;]/{g!gPD!(BBq`rimlRٲo>Oh øA)%6dYN)%RVflwP P!h[E|.! P4p7w׋R_xUJi- {i:LOO `?Lާ Ib R! rTS[ D'- Bd5=q/WՅW홙'"$RvjmO@y`dr@~ou/ 1WJT> p]i@FQ&(ͼrҒ5::g(t)TV1eclN]N GKg#d^_E^ܟXrVJ\eI3$Xa`kna 0#_ 6.O~44QK)NI膉 @hI()b`K[ kSRoO:Bk Wyߝdž&^e7gbDQ'x0Sg5f^rq5.߈{m߮upOt ++W{'O'{~3g|Y/g"Mu6?0~í&篟{,hX&R\v\:G3f ~>7 n2zh0 Z}~M TByO%>{o}__̀K9Bs'^}{&0I |V8;{O~_#N?%]ѩ_ݶsӆ?b>open?}_$f,3ikc>~_::8X~HIm7H )d0uVj1[a}O|G'7KHJ&$*7 hvO[7؛ߋ?IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/process-stop.png000066400000000000000000000025511323676556600273320ustar00rootroot00000000000000PNG  IHDR00WsBIT|d pHYs33o~tEXtSoftwarewww.inkscape.org<IDAThYMpSU}1Jՙ638CuA$e]X;PWD uZ$-3N5M,\@i$uVhq$^MUsw;:ijM&!nXkrp??!:Dڸ0&dj׮*p0HB~ TD:t* `yppG WQѨ7WzL8B~ ekt;(KR|cnB`.^0#֑L,7=l )^.`l+L"hrpBh5CHǕ9'\BDtd! : GBO0>}t O17 ͫ:y'Pc._L4p\<u9v rJ]#1s"% c* )dɏJ ~R]ZHgx]W60ޗL @᥃h`9޲x+&F04JcPmrZ*8? D%@;[4f,9\zѓg:a2|=~'NL_)~]!HMvyN& aD/6߭%ͭP<lyo1hلeDlrfxijՒy-Vn9aKIY[@s*:@jΡC _X3BJeOdRSM-{\yReT)-ZP%x@R<ɣߴi5kh s/7}g^BZ?kDK4^nN0O:m6R؞D':'a^h`K6&:]%lLt FA5 {ȸ۬Ak@g"J*,dvev}mxfc LT6,,p8V1g1fh#c)zml/CW7s٨OB$w{bDĩUBcXYtɃD|L2G|jrz}d(j|c׽z/}ox3{݊Y㭁Շ; Lh'T+l4_]es ӿTvb xCth7Xk;U0/@WuQGOy*YmIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/text-x-generic.svg000066400000000000000000000146121323676556600275500ustar00rootroot00000000000000 image/svg+xml dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/user-home.svg000066400000000000000000000072161323676556600266130ustar00rootroot00000000000000 folder-home Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/user-trash.svg000066400000000000000000000056671323676556600270140ustar00rootroot00000000000000 Artboard 2 Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/view-refresh.png000066400000000000000000000021421323676556600272730ustar00rootroot00000000000000PNG  IHDR00WsBIT|d pHYs33o~tEXtSoftwarewww.inkscape.org<IDAThk\EǿyimcNV$h&($]EDCE{Ѓ%ԃ֋A`v1xPD Uԃ-C6awvyowm =L}s+ao\F-#x]tl[wnו|rslKZO/-/v:wG $sYEuZ!J$ߩJQ=DJ`lrfqg@u:YWFHsT k7j}leƏ y\T.Z(XpJ⾁! 8U?""Dfv2'HsrA03w{XV|k$mW*əa'/nK8&c3}t@j 90 ~GJ( 3"61ڮ@b:%ղ!o8pnvԶ4PLey4 (ӆ$ <-Z.\eC覹\d6҂bR*g[3"5:V^ \OICRt[ Fi㈥8&V"@[d\9E?472(|މAK5G=ׯojQSz;OWԨ_r!-5;_[|PJo7.ց7+joEeo$-p7;vgI-mwېR#Ǩbχz& 軸ޤm O`)1ɯ?.T;LmwEP^sgoӟ7Ktp6Se 8z'4 l0ߌOg>o m2:$ҹ^ C.G "qK1[o"@hA4|7V \vq ~Bc}.HG~sL5kdo#!{7뷏y 2*;ӧO;$ wIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/window_close_hover_dark.png000066400000000000000000000006651323676556600315750ustar00rootroot00000000000000PNG  IHDR4.sRGBoIDATH c`c 1 @ f  2` &"9`iYe_[yf|_`cYr~.q5Đ"@Ϙ$}x|@̵2k%,fcaKR @2[qO> sg^dRMP8і4}gm l28=Y9b\>$ G 1ZD}zj*Jb!Bep qęr0(0 DYuTpЇ .E5;G%Ձ,b o BeG`$pB2PG a6}ڄD55zr68RzIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/window_close_hover_light.png000066400000000000000000000006461323676556600317620ustar00rootroot00000000000000PNG  IHDR4.sRGB`IDATH c`c @1&&&t9b1`Ad= "P [Gfa l>CCU೬OC?7;'DbC#ggjfn!".λߙ@7(˖yrq0Vu =6XpABϮO@3@Ͼ\L?I٥ʞL_f(.hːhKqdq,S:8BN4r &*&٥qK4e8Q|vY2j!N6QS7k#͘ʱg)4ƭb26*IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/window_close_normal_dark.png000066400000000000000000000004111323676556600317270ustar00rootroot00000000000000PNG  IHDR4.sRGBIDATH A 0EڋI<ྦྷAܸn%/)h:BLw'dҁҁo`m4u_YpwC W#'8]Z@!ܱ`p=ؓVj' `HfT5*:lh$h|Ɉjf:ɾ#sk![$2xiIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/window_close_normal_light.png000066400000000000000000000005151323676556600321220ustar00rootroot00000000000000PNG  IHDR4.sRGBIDATH c`!0"C_5HHHhx zCC&IIIulrjYXX hp&<"x Pl-8.6Q>{99M//`122:?5. 9fffTw#9R,MT0qԩ@&E^@#~,#0́!P\4і!љ3gN9-H4,@ G#Xl`yL4Y#g- CVVVG&&0Qz4FC#}Es叺IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/window_close_press_dark.png000066400000000000000000000007161323676556600316030ustar00rootroot00000000000000PNG  IHDR4.sRGBIDATH c`8b@̄EX@lRj| sP6˰h"alY4~? t H~1[](]n%,d AQs24K GcFy潾MPlM6s0|a)$2XMMz0."$IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/window_min_hover_dark.png000066400000000000000000000003271323676556600312460ustar00rootroot00000000000000PNG  IHDR4.sRGBIDATH c`c 1 @ f  2` &"9`iYF-#+5 `dA*S,b؄VIĈLRz٨(M`l> C!kj a˾EdIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/window_min_hover_light.png000066400000000000000000000003441323676556600314330ustar00rootroot00000000000000PNG  IHDR4.sRGBIDATH c`c @1&&&t9b1`Ad= "P [Gfa l>CCUeT ,ܹ O 3140)§eFF En٨HI8l0B+>#V9|Bb-Ԥj1z3IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/window_min_normal_dark.png000066400000000000000000000001721323676556600314110ustar00rootroot00000000000000PNG  IHDR4.sRGB4IDATH c`!0!0$B+?<##c:=JhGd,IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/window_min_normal_light.png000066400000000000000000000001741323676556600316010ustar00rootroot00000000000000PNG  IHDR4.sRGB6IDATH c`!0!0$B+ R_p…D"Վ*  YcIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/window_min_press_dark.png000066400000000000000000000003431323676556600312550ustar00rootroot00000000000000PNG  IHDR4.sRGBIDATH c`8b@̄EX@lRj| sP6˰h"al2 ] Ftux.WEİ R0I*ϐq63x&=0ab;c˃Xc Fk:| (IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/window_min_press_light.png000066400000000000000000000003471323676556600314470ustar00rootroot00000000000000PNG  IHDR4.sRGBIDATH c`c _~'|XYZ2P9Q#dñajG-J`d!>V=%,J qE+L 8)ځ FPŇi$H`3gBaԤj4,*6IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/window_option_hover_dark.png000066400000000000000000000003541323676556600317730ustar00rootroot00000000000000PNG  IHDR4.sRGBIDATH U 0ѡcӺةm\ HP@Xaڌϐ G+DK&G!0X` |4>HQP|x&l*!KT>×%lԐ>!>IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/window_unmax_normal_light.png000066400000000000000000000002431323676556600321430ustar00rootroot00000000000000PNG  IHDR4.sRGB]IDATH c`!0"CX_ǧ… Dr3G3e! lg&H+Q˨D | [¡F  NgJ4IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/window_unmax_press_dark.png000066400000000000000000000003771323676556600316310ustar00rootroot00000000000000PNG  IHDR4.sRGBIDATH UK@@ KҚ++.K5C,Ф^߼W4&I)x0GXEڈ8S.$xՈYuvd t(E{Ԭ˨q5Zkf3MidiM&3&#Q 1G7_}y@a@Ã:B#trVR >; B'IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/icons/window_unmax_press_light.png000066400000000000000000000004101323676556600320030ustar00rootroot00000000000000PNG  IHDR4.sRGBIDATH c`c _~'|XYZ2P9Q#dñajj ])>]aArD[0B9(0K`4Qc3#` tM !=lĀ-`sQk6 FPU|^'`հb)&EV +92AIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/000077500000000000000000000000001323676556600241545ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/arrow-right_disabled.svg000066400000000000000000000012161323676556600307710ustar00rootroot00000000000000 菜单箭头 Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/arrow-right_normal.svg000066400000000000000000000012161323676556600305120ustar00rootroot00000000000000 菜单箭头 Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/arrow-right_selected.svg000066400000000000000000000012321323676556600310100ustar00rootroot00000000000000 菜单箭头选中 Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/check_disabled.svg000066400000000000000000000014621323676556600276040ustar00rootroot00000000000000 select_insensitive Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/check_normal.svg000066400000000000000000000014111323676556600273170ustar00rootroot00000000000000 select Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/check_selected.svg000066400000000000000000000014201323676556600276170ustar00rootroot00000000000000 select_hover Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkbox/000077500000000000000000000000001323676556600257425ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkbox/checkbox_checked.png000066400000000000000000000007371323676556600317130ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8S=kAZ\c" ",DRډ`g 1BQ^Hm ~@@46r nxKBԀfgnvُtTkͷᳰcX H~r"H۶}oX,7Aܰ0LDP6 ȡd2/Lơ ['~j%F<eá7MUgȦ}  \׍>9$01N URI Llۺp\Brf̀Cd,|^\וn+B|t:bf`@V;a7^?Pb:`Vkx,rY6>${%EnRy<x0&֠.sa0c$.& `pIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkbox/checkbox_checked@2x.png000066400000000000000000000020311323676556600322520ustar00rootroot00000000000000PNG  IHDR szzgAMA aIDATX WMH[A [ 9HAo *CKK/V^ %Zb[E"z/zkl̓KE?ԟm|MjS;33GQnnBnH-t\\ssBxϳ&XV[ tƅ La1\\:)gSNNNA xT=`b6ucccyj0nJ1^o888xÎA;1==Q@l=8_ZZzl= 8[[[d,+sid]`y_\)/@ЋwdoVCs̯٘}E[Vdw@]#NhAFǽAND6n'1̨~effBn|x-.< g7˩TqpI9QH \ש!+pttDMMM!L& l6zb yZZZ9JgD0F lnnRuu2OmhbbB뉟\UD܁}Z[[S fCUPEE* )) i||Z[[  , j#6pYE~|>Njz{{ť#`IIjC\`! C j[ZZFV ПWq.Zq(// 1CnLc``@ ~‡he¬78U])o_xQ.kB Bna؅oH7MIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkbox/checkbox_checked_focus.png000066400000000000000000000010061323676556600331000ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8S?Ha c *&5%$Hc VɈFtiqdFc E!h$I2ƹY,p0D"AbQUuL`CqhZP.A:y(Jx8-tfrARaL&PBXx"Nf T{հ;oo97 w=TQD'~Z 1g9cGXُ=6ﵹ?P)9/<v7?TIENDB`checkbox_checked_focus@2x.png000066400000000000000000000021331323676556600333750ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkboxPNG  IHDR szzgAMA aIDATX W_HQ?w̜Z(C|LM3|I=HABfjZn0D E-Aa΂!'%5YЛ!J 2ݚ:MoϽwν?8nq/777$?HY-nGt7==c߱ܜC5,%=~;^R뜰.!J)䴴;HG3A~+I+h~g%hq+{ggg'x+0XG}ڼ~$ﯞN(!T褞Fa.:L:ڗ5ͅY'r $&%s­CH@τsTΩ=-{A__[tL ?m\ ```ະҿCO.x awP[[ ĉ~cK0_Z@+@q333(چĄ3ـ<&Ų2^Orr&MMM@Y__ J ͸TRNN<66ơGFF`mmn5p: ?@8TT`0\ONN'%%UB@ @mllr%%%!XEE?l( LG⇦`7jaa!OGww7xJ%oM8H{^^/R5ޖcb>.72~/)QKӿU}@{I'_|U/I%b>mP4_oWӎvζ9OXpJ4j+NXފ6QPds3HAHrrDOd?nPdKsfXXT_ XVT~셿Kgh<IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkbox/checkbox_checked_hover.png000066400000000000000000000011231323676556600331040ustar00rootroot00000000000000PNG  IHDRagAMA a IDAT8=hQo.w~5QD,-Zh4VZY'Fbi҈"(`?P0h''8{@q`?- +ux +K88փ9DRxr7v4ɍA͞B ?DXbq,K礧cD~*50a2OҸRPZ44[,wG̿7 ,czc7 [yK}(5/շprVzF5h~s2%_}XެE`{10f`-ȅpqQ|-Xw< ǟ8/xQlav[)KnՙMBgNL-KygOBX:sN8.wfm]J 8 >yqHg4a  Y}Ji 9j'"aV^ W)%d;W]+ :BdXbgF9IENDB`checkbox_checked_hover@2x.png000066400000000000000000000025301323676556600334020ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkboxPNG  IHDR szzgAMA aIDATX WklTUνlBi!V Vb41i4((|G#E 4O13DnдU+mR=;]F'99|͜woۈ+œZ֏jV t9/b1w&F=1(m}xz#S}^N`wD~)[2 thjwn pAJ#ꀺ2 c[hBRJIPt v~M)/|wph^-zZԸ#,+ȇW g GXԮc8DwWFζ&V(*Rv+3YIvl?䌥ujW̖g2y/Tp*Lv Xp8_0軿Wx OޭȒ@}%O;Ӷ!jry_79 %^3#)xY oeM"%I&62ЩpdМwcl",p)eIswdܤ+hQu `BdƣWu_pK08cdg("DiB۔owR4yRKl ^IyFzW.l',nPx`Z7l nXE .m2 mXYtKʫ =`ldAFUń̵)xdžk;kQ(WŰKF^6,'+ 7>qg:ykF*hQ_أ}9p^9WK lW`;M& ClZjA1'?dml' FbKg1 C9B pq>=[Im+A|Y!&)Hvd]@.7Ǔ0{`8_ 8ӧCΊ;`}Ok~$PuʙO>v31I/0@q)s}r^lSbKQ:iD܊GP/Jw4Ї$nBT =Wqqu:\Tg0cI P3pkvl?hESzDv<Na4I#B$23s0D_4 !2£G\YS]6YfIENDB`checkbox_checked_insensitive.png000066400000000000000000000007601323676556600342500ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkboxPNG  IHDRagAMA aIDAT8S1kPRTn-.ƹ8:8(tA \DбH.ִ}|w{#-JQ+1FEta:Db[ I,f/ øm;:A,_`^F1L@l67`𔊼EirZ=p m& 5MA8џzE<`5z*_c>t:d2N8==`@k * HRv*BeYP,CV;s7& Z-0Mq<4 Bn6D\@ v۩+ H8O`{t]\.{ y $X,>EQ|A8f[+򆉥)`+rlB?G̾P;sQ>hIENDB`checkbox_checked_insensitive@2x.png000066400000000000000000000020261323676556600346170ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkboxPNG  IHDR szzgAMA aIDATX WKA$b[h 6xŃ7 * >N"xQQ U"#&c$MOdgvg7;;_Ңn"Hf+Yǜ gXʞAg(n0V777O&V11g2' SbSyy#~QFc@Cz)d6l6LnIIInFFA1Hɶv͍}>{]{<|,8"eb +Ų$I$vVTT<6p8^r[~Vt%%QpdMggg_Z+C@\*i=>y.D#R/..ЂV-g#000@3JƂ; @ނȱyZ[[SCw (Z3ETWWGՊDR|Ӗc"pFqq1KxŴת(SG###.6{ZҔhqttvvvĀN99X;kQcccڈߐ(xq33|xxΛ1UGCCCj"^27ٌK(5esuu%uA6QA=<gUXXYYQ}VVV B ψ/[ q )++KkXW6F9멪*?юæ&T}[ZZT=-tZ[[+crr#"tleQ"@FcR|b~L&X\c{{+(YpۭgEpt~~0m |r+;QsGnHbj _swwn,Ar L '4:LȬf82!+xʬ̩5iaC}a R3 Ő3gO>IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkbox/checkbox_checked_press.png000066400000000000000000000011361323676556600331210ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8R=hQ޻ۃT("$B $!FAE+R$(h#"%&v$H@v7Wٙy ~zhvzOhPVEw΅Sa*Z__$ rJ\ 2Yt~=憶c}!Gާ'AߓqW<'l.6A`@Maf)bǣ@0 HXUJK_KlqL/k?7M`d<15yAūmLPT6X8r^o`$RӭqWt6+ *bV@ 3frA2Q6-6$ŒɨuыxY7[VcbzH:|44>,z+@@IENDB`checkbox_checked_press@2x.png000066400000000000000000000027371323676556600334240ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkboxPNG  IHDR szzgAMA aIDATX Wmhe޳sq0XȲ>)*3+2*,+V ѲSF*BAC"(UQ} Yf|<]>{W羯xߝ7Yu.µغ#SFVkKp@sh;Uep\ G9YmЍ9-Q:z+x_+D*gdHJ.؄m(Nc;=u]”R6]ƂڢG Éx ~~FPtc;w}w}X"_:)yFێb=R[oW,J!1gꧩi؊Pm*\&*/F7aP$B`otcd枍G"T!ݍ{NXHL0TNJT.1 ` j#t_wCz@ Vxadʹx()̓}nZ+[Zro6(-3=ΊC !0"t '+`-TXq=H߆iy ~BBƝ?Ua+; 289ppH%~kWD kqEp*Iv 1FO'o *6<7glB)Kvxזs7YY3Wu]qXs 8"FTaڮd}JG]DگVr ^Pɻjw<2]hâA-"1~>glŨbtw%KNC-?6ӁlTaBedô.^lg݉ 8Tb+ ۸cXLBkCl?ܱM[GYM`}Yh#Y XPfFӆ"k~ }CćNwKh!xL*l3'YzȟU$+_|"!ÇCcMY Cc>TI@s@d熠%/ `ݻ Z.^0ULf @] L`@g @)ZWaԄK 5X/ &jV?k!,0o.&P_Ty{L%ٹryIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkbox/checkbox_mixed_focus.png000066400000000000000000000004241323676556600326230ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8c`0v߯F&33?Ll_ 5 =pWxAf = @\ qUiîj`hhWX Q?`L4 ;H<_~98R R (mgC@j@jAz@PƸf =A)hXdIENDB`checkbox_mixed_focus@2x.png000066400000000000000000000007611323676556600331220ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkboxPNG  IHDR szzgAMA aIDATX W;N@5cY h (@pЀBr 8\"44,ACnH|Nd+xgA;I*+*>@qZ}Z,iDՆDV(7z _M&qmn]HD-OZ%^d{ ]׈;o tLp7d4VIENDB`checkbox_mixed_hover@2x.png000066400000000000000000000015761323676556600331330ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkboxPNG  IHDR szzgAMA a5IDATX W1ka}{39cFP !hcMBW!A4B C9Ϡ&:oݹۻ#3;f.tq-ĵ4"ܨEXHs81=õ%"b S\ǻ0[_aUVoEaD_ ONWOFa+6J,QiVwx ,V{6N[ˈL:qĈqQzf<2NA""9r0yݔ`^5|'A"6/K0<dz_1Os7aJ>-xŸ &)7} ?Q)["Vdb}ؠhhSNS,כs%~C' HDq|\FLh8M`\j ˸+cK ?Noo8k)e-(SXf8NJ?VE:$RBhY'}qFe\8Щ1a+y|~ħg@MՌ^ /}q.}t>(_ #",ELe)?(P-m~-h6j؋^+($8O[PqL\̧f"?Κj"p{Kt tp9iw ņI YzR$L`xsSmm˹tUCO[g7ͳ:A=^MDɢ)[o`d[:fM4dX~uKJaKAJB}6͡he 2n`\ nϐ^:djkTcӞDǘRo"D4M7D7(@ݷ %4qk yib!ۚw g Zo'XPoe1FCu9NM[n <˃[^z).>WsuB#b|S PT:_YI&jמy z\X<˧ȅiQ!Z.n #P޸0nNta[ sÑz<(ХpBć=s9  zsCD`=;: _x|f@VY[%b[ ̎@zèm〮YmiDh" ɜ .4Z|@$ 񼧽 "⪡x,+hi@<5?dP\ǁS^"Obޗ/ ]? 0|ywiBSď(JA|`Hgh ugVގܸkwM <Zεtn7{Wklq/_b&k$G cO6l;%/ `ݻ Z.^0ULf @] L`@g @)ZWaԄKXFũ߿uPP$ OHӗcH H-P/(?0P-3 # ySIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkbox/checkbox_unchecked@2x.png000066400000000000000000000006411323676556600326220ustar00rootroot00000000000000PNG  IHDR szzgAMA aXIDATX Oj@Ƨ]h).^Y!r6@ko*HV2twΞmCIENDB`checkbox_unchecked_hover@2x.png000066400000000000000000000015341323676556600337500ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkboxPNG  IHDR szzgAMA aIDATX W1kaܙh&)`6 6;`ge+iCeJP kAēC9π&fnNB#{ff.|4[n%HjH))&$)i 7ԠWI1]|&Lئ%Eݪ䰑f,j W}Pkx@mӴn3&N} **_l7뙖i26L |]/$> !Hsy>&kMy -\$3€3٠?kuNpڢ2Uc, Aq,Ud4=S2e /Ӽ1vp؀)DuF 2\0cӢ8+AEȺυ%݁Y>=/ܛfTu(11rN]8) T*g5pїذa,GPe>D*$2bxh6@ݯYֹc^@>zR/3bՌ"7P#'G34?,?_tyVs* -~G&-s '?*H<(F GK-G{ i<71TPX̷0*a6>|GMPW$'A-&t좇akh+zti h7p Ci{{/>M5X2]2wv'i5lKIENDB`checkbox_unchecked_insensitive.png000066400000000000000000000003461323676556600346130ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkboxPNG  IHDRagAMA aIDAT8c`0B3ii b.P-? .; 5 = 0$A ]s ACՂ 38G ``N<f_@ĽteY&qFoUU22ip"D 9wx8~|x5)A*[`⡥(p̑dؙ%/y+ nf ]oqX#(AQGC~@oƙjo;PFm 6 qkyqGJXmMyy 7YD>94_o.(G>>hnmT'<O)bc8|WSx9֦U"MNUZ1 *?bb݀tb8S߁\gm 43_Ƕջ8"|WEí;Ht~_ I*HX ba[G)Z#HZ_'ښHp"l^:NҠԄB"]yD2G6Jp0Q0#&7f4&z22|"'@r!O=6<+gVn9B2?yد`aN΅1YbvMߺgw2[k5ﭭ-zbx7s31cgMmכ.J{ޟs l_ r"KX,[|lPvwvv/mN7Nfm ؖ-/2G`(Xn_.J`){1h -MOORP D"cΌLm]Đ1DyVSN4lU*95$0eYշ~ YQ4+psnkcR):& +@JlU[ؘ}[Ăp*@*l% ۫ VNllL/qAHR2XUye4^5K)bA%[~}}hpV6LhRPsnE1K@V/}}2$d#MmMĂvnBcx fffhuujQӡ) H$(Ll\.v|kx-ҵ_FGL6s\aLX6S?ZFLrqormkF$ "M+}ZʟV jt0_bXʣ6M.FvL\iT-52IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkbox/radio_checked_focus.png000066400000000000000000000006151323676556600324150ustar00rootroot00000000000000PNG  IHDRagAMA aDIDAT8S-O@8 A9j8U G%A N)(ץo4]H:N߾ۙ [pgVYqLxЋ!,/GUcFCEzc6imlwT '0ʛIj9{x8SG`p-ۉ>'8B&_S j) Cr]r`pL({LTq$]e |b1+s*$y1xEDyZŘ[6MQ異>* =BQA6RV py &/Ozr8IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkbox/radio_checked_focus@2x.png000066400000000000000000000017241323676556600327710ustar00rootroot00000000000000PNG  IHDR szzgAMA aIDATX WKTAFJDIԋX զd7 O)V AB_R`Z>D;VϰWgk >ԁe9w~u,c,1*Kna!k%ԢP|w7Qq#h))ŲJQ98gkhU*uhzwረkف=U`+Kg ~*{JK\m'֑Rfи/o]iB8=Vfp^;o+?}Uy.فDdq=xAp\,Uuen,&)ƹϹ赑0, qW̜%7F=W y%oyn1.X\Ɛi{eۙtÌ!jā\ }\,`bb$LPq՞)ilhhMMM`l544\Q/.P2+ 2 qm1V+8A,ɠA l !/v|3ap!C@#(#idxx& JD6_`>CD6#zUϭ?* 92W?:s5s}tIZO) b.vb9gwnG%^9J4&^^)r07ɮY=Μզ|biNaxK.MTBZ^![A H47)c' +T7G>C,jܡqw+ulDk /_}[y& ү#ݭM#D#AE;ZE%N2oONHIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkbox/radio_checked_hover@2x.png000066400000000000000000000027511323676556600327760ustar00rootroot00000000000000PNG  IHDR szzgAMA aIDATX VKlUt)tBcy15DlxMM,PDݸbA  FcZ`1,0&"-% G->}f:uʓ=u{u5oexan 6G ͷRWFqa|&YHa~@QgaS)t[5܊WӨAJr`iEE`nsrd`p̢A`dќ^lmF_>" |Wo>Nr@b{C?p)gśؼ~Ensi JT2Z2P)J/S[`$E"'e:܃iR?8b `BN6&۾B5 Kve;Q#ϟXjr e".Ekk-gr L"Coccl㜨ņ:.,0/~rWKiv )ǁvM Ӷ0ҟl2'Ij a'/czB朸t]D63;eRޅG ZL5'0 XVgIV;p:#&J]$1o"?]B(հBLiK V8NpqTÑxDzݡ|ԌMxc4eLLmN1 N"Lr_nEǻdSؿ幇z< h$Is׼$+5홤F< H-ϑH5,C7M".)O3IENDB`radio_checked_insensitive.png000066400000000000000000000007231323676556600335570ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkboxPNG  IHDRagAMA aIDAT8Sj`hEJ34]Rtsķ7gWW /G(hPD7R=8E?Ja*ɮI_H!&M2f~8>0ωw+ d2)O$Nj:[,a+\ m_/bn'WP{9'A R.xܳ\._Dip#iۢx:z1: ^RzD"fxx8}xxx\*`X.S0(O1rez\0Bd7P bɽh!Emvvv|hhhLNNiر(YS )7jznLRj+Y__7$"Yx)O?{os8 λ |RCV,ʬ0zAڃ\smłP  Sqo+kK:Yp~ʷ?_@24lNUX熮Sqo+E}pAbNE?0N! #]QW®bfS5 t_vvA9e пPq"ǰ4}O@竫}^U,@B_e՞qN`vvlһ}ZWʮdkLty tMRIIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkbox/radio_checked_press.png000066400000000000000000000011061323676556600324260ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8R1KA}3KN4"Ę$$.PIڥ$),- hZ l 1A XXewfvgw7s2MOjSx,_\/``bG'ӈE++9Ye5ӷ[(u VEܝ_svN)NPY!70q)6!#PϞb@LF 8Ȗ;qaƨbe&?ƀ81q\,6Ltdvi>$3Bl2JFxxoSv?x/V&:`B9(WZ]t<~lĹ@(_Db>%O0naf.w;hZD̚nkݓE8 -sxpzq ըa*jNۏV')d BW!WθQC5k_7ykg_짙'5qU@\rg%(,8KΊ`þ4d IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkbox/radio_checked_press@2x.png000066400000000000000000000026701323676556600330070ustar00rootroot00000000000000PNG  IHDR szzgAMA aoIDATX WMh]Us^SĚ"vUTDTэ. ĕ WRpFԍPRTŠ ԶRkS6i!!$}swkNfo9?ވNdW]~ob<P/_JU2=n&)R)-LLdɏqE^ ոe't}Gy/P0`, Թ/y]찛 ZwAq&'}]zJ\345Y9Ĵ1"'Jlםϣb)%bUN6Ylac K4bIJy":]vvgAX. LIrL3xnY˜|GI@&Lm´R1S7rb4Ln Z@[ـ`r,cYd#[VܺwY}b mt)Je[sp)ZJxw=AS=[D^,2ХrzFd70-%C9-ߛ[_.y&6"4MDO` y*pxh4 J@kahm'!ÉEh[6Kުs!yܰP,O/5kƦН {Z!V'۳\M ؔ"-aN5Mq1W ]!0_G[0&Hm?b̬n.~_8v29U[׮! )Uk2Bd7g,Xm=9#6D-ʥ(@*_/f09zVdVgCTWn1=A hږ 005á00ô4 Ib،û Au#m"⮷uoK| ϼ[BF>3 ?<}͐űPӺK`%(npPx1Zb,@sSxD꥟FbӜ+TGB`FB(.ǩ>!t*u^?{ru_EH!Z1Sh߅ nO]t,-Riu5ܹp.&bAV5O{e畎f.(B%83مFu\߰mKNbn *\rvvԫ/>x'/b@6Ė<̜,#|V5J[ -0B:M̧E@Gw }=cEAmtRtskgGϗ&p112{6m~j+4}6oxM[Ǧ 2!p܊ CxyYIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkbox/radio_mixed.png000066400000000000000000000004431323676556600307350ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8c`0bbu ʿ7aSܹsǏA+Pj|8H i RR =pr"L!Gn #OBa @= @ȨBIZp @`hhWXCn̝;HPG#$)FRRfDA!;3!CmsWtCIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkbox/radio_mixed@2x.png000066400000000000000000000013341323676556600313070ustar00rootroot00000000000000PNG  IHDR szzgAMA aIDATX WAC [XK$7\a %W@e ʿ䢕9@.zhb(\w|޷/0x U@!~),h;`{  q=r$* JrT*dGTgt:vhd;l~aSs0`r9}us ǒx 8@ cjc]_Uqjo~q?Fr ]~m25u¥&d2uLj\FM"kپgr'~In(X7*ɰ nE 3͹E!NN[ϯ5 n@"x<籺cNsF~303Aj@jAz@0Aζ` pZ ?҄.R d@Z`花j1v.CCCb teʟ.PhZ?/LxFR JXp@) HʰRR ҃"OnB8)r p$I JFcIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkbox/radio_mixed_focus@2x.png000066400000000000000000000015241323676556600325070ustar00rootroot00000000000000PNG  IHDR szzgAMA a IDATX ;OTAgސUcAQCVĄD11])ZSS런(q[I,ĠX 4JF3~agg/r)syw/JIe.<^25s3fL+}(uY7ʬyF/.]ˍ%`d2a6ƜZZMLFf͐etexK8kuV2 /?z1؞/^fiIVU~wJ] L3Yby]{Q4ԷTMnh/5n2[lyyfDjt?ݩ{R_7>yuUko0_y%ɳtQgu2熗]i]/C~ 0p`6Tvp9#wt &5*p{]fh7,^2r9jv &lbY - 95y/9L6}Ykrʤs*l'Bn^%˶ș ^%˶~+˪X,mppPJ}qSE^%-dcM&xi_Bc?aЋ5=cw~F!9Oj sa5Y`&xmr߅MfE=O* ư<6 'Hb%` 'F ILG}ak&KMԒYijJ8ܞr+1i7NwIMLКy+ mXzGIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkbox/radio_mixed_hover.png000066400000000000000000000011341323676556600321360ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8RAKTQ73錠3aD0 ~Dp'HѪMZ%nvU &PԱ4rfIw\gm;}9 f~_F"c8Ũt\Wm#_#. &ПnLJ$R=I㒅.y`=#ܟU(-nbEn/Iu , b9̪|J#u\)+|Ví~URTOBR]q1@rdz.bLPopO3WQ;!CiQ[IGbl<3kӉ?Yd]0ON}K00~꫊_i@-9e;sU">~1m*'"{?7{b0Ã*|/2u@;n+C!<]U{fUGp1=9O%^jB™L,R>1s<#X Q6xjo`t oǧ;^o68=DZ~)yTqL,-tIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkbox/radio_mixed_hover@2x.png000066400000000000000000000026341323676556600325160ustar00rootroot00000000000000PNG  IHDR szzgAMA aSIDATX V]k\U]$$L&1 I!jĀ"ID}"DЧ>hMED,1V҇6iFeL:I&=u3Lon9gnfּ6z\m5y]b7[ŵ]g7i݂m.@ߚā:y&>n-wqn3!qj ;qAU] ƄAmU85ōEi`y-n1 KaۂqV[\ER9-tImq\BP@4 8Yo7HHoQiI֩8 81i3[끖p-,%P"-GLF Dȟ둬0eW2\X~ hw#=Y8GF0A# rU`;MŸ3ԺGb.M'}N˕pEBӢfoXEo9?rb3E@N. ŋmzI؅%b--br=ٗuؿ+M#W9HV"+u $SPOlr]`yf5Y^ }藛4x+=cʫqRa>aK_TR@$r}" =_NwŪ RX/¾'яضp",~L&0"+Tp;1gg9Ë&fy(#:a$nf<]64 v1<܌/hb:@ƋEgzVM;ïL'9gh%11-"8&[L;m3Liwbs-!l>INPF)2.A Cq5$Wܝ5U+8̅:μ8 &%3Wʍآ"GC@.a29.# Y4( ήjUEW!B|QJ.(!3pD,߮]؈bIENDB`radio_mixed_insensitive.png000066400000000000000000000006401323676556600332750ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkboxPNG  IHDRagAMA aWIDAT8SAjP)iЍBJEh7n[>ƍ;.r%J$* -q7@aoޛ9挾L49'ؾjcAx^|QDqDx&sT` IR ϝn=!*ϙٲ0 [:PqTS_.pl6\u{i xҴvt:=@˲y XO&Me+^BMg"ѿ0 S!IENDB`radio_mixed_insensitive@2x.png000066400000000000000000000014541323676556600336530ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkboxPNG  IHDR szzgAMA aIDATX WoA~%\9h8GpHLq?gz!h &ĤQZ) K%K^g|3 u7@_/pWkw:o0>ki3{#R>n"|>3H;^W4NhjM*ʷpHw JS$jx<KghۣcM85 /$2Z>xLbG2+Xdn¤*9d&LrCnInBuHRPH4 S?Ab\/g繋W!NcckߑK59Lg+V_"RXx[=~Ԫ aD<*O c06z^FA}߸TLp \X,,?=^Xy!!{XL$=pr] 4r^3pV 'VʥTWk.Y][ Lp=A. IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkbox/radio_mixed_press.png000066400000000000000000000010411323676556600321440ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8R=OTA=36nAH06|X #-\k5;DMtl@ :caavf8gfg٬νs9޷o\f^s+h:g::PDTg-pɌpIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkbox/radio_mixed_press@2x.png000066400000000000000000000026041323676556600325240ustar00rootroot00000000000000PNG  IHDR szzgAMA a;IDATX WMhU>w~^SVkE+.F VFwvw.*EP"EAp*ET Ň"$)67;sϼ=p{ϹLD!?dwμ|$t]=uWk)m9wr9 L dB=}rU5ovL{/O!C`g(c7ʾ_q|Mr߶ғS&5Ylo|Ȝ|RX?Z>{}} 2r)?K&Yl#.9 p@.mH宵`t"y `XL`Z$CM<21wړ51JL譕%W)`y$$Zlc1f7ڳ- +n+yޡ͂fm:t"/kyV_j}tPe+; ~9.j -!TCd:"|{!4MWo.?y+P+ ĺ(nPA.z_pYFa94Z^iJ[*C3c:ÍKƌ[c~]1FD{( Ok":(FS!Ȍgfx2Uk97Nf5,Q@1} 4j M"?ALʙ"*?N#(8D22E"-\k3d)g³Iᣅ؀Z!Wpm'hl_?—2d<ģ"̠7sxd>(;Cɝ=4v;1R' cYk"& G\be,b1m39|xrc|D0'` pĥ b=8zȪ7ǧRT" .`z:ǧ <@(nxԸˍTZ^N@p~1g!ngNdY]sgq 5L@Ȝ\9ybLE'sFwNd髷ڣoWv%`'sG9kxSDk_xgYXrPО1YWwmG<~ˎLt@+MPi2m {-\7X:C~Sa/ٸK8luRκˋ'{?›O_3&ƫ9Y2hRfz7dg\:64u Nbi'"1O{NIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkbox/radio_unchecked.png000066400000000000000000000005001323676556600315520ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8S1@Dk- c|F;J7H Q;MrԘH*GLHpe73ܠi'0#ga/Pygbaj3UUh Zo8><$EHm"sM!,8M,=9HU,65SE4MOHO4U Øz!.fI\Ȳ"|I&;VGmf]WUzb plD`[svES _lP&+."q*3TW$^w؞!vFT%ФG̐Q=lV _l#JFy gm3ɭ\.P_l tl6{*͔ZVQ :k6RFG:RNC[Gy9 4nγl!1'.cfDIHmNI$Δ03Aa!L ӏ_RL, 1\ZFJ@j0gLbť ]p e~Ft UF6Z`/Uݽ @jakkH qu|( G_ JPT"OLB:%!aMʠ4 *PRr))g`Nκf; ApWfIS5}VIENDB`radio_unchecked_focus@2x.png000066400000000000000000000016641323676556600332600ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkboxPNG  IHDR szzgAMA akIDATX W[OAĠb$EhD" QGOF&hqQڥ9β--P3{v;ߜo ꅦN'*(N^d lS~&ޑzedk"P&iX 0(imPEE=qQv>Ȥ| fSG D\d| 3t4fuSBJH#j='KI1!;+tTg fb1Qgl# ٟ vlp"l×-%75w&Ӳqv ue/ժa;;Ѯ-` OND`.92x5/3i&SKU(rnS1v\h̗=\/ O XT nasjB?61Gl]r1 l0&,d $-,o¶Mr2j*rrpqZ٪oeI3_/| dx40] |6E }$mo!!b[5j? 5nPFM 2[bb[  E}8cn^͆yV`D6Rj0fOիxq((W  !#n AUQ1޻NIAyݒL0TQ*H$1l ^ mY.H`i&NԟfӐK&ic=A=*IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkbox/radio_unchecked_hover.png000066400000000000000000000011331323676556600327600ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8SAOSAfyڂmAbMDxЄx׋'E.^<Ћ!ƅMDH fRDcXhjyoj8vfwlgSybİ; ˝Gd7nWq[-d piJĶ.C|Nd@RhBryROBAY&!=6IENDB`radio_unchecked_hover@2x.png000066400000000000000000000026561323676556600332660ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkboxPNG  IHDR szzgAMA aeIDATX VYlU,Rf:@i(-Y1BB! &#DA 1&Cb0&ꃚW5PhKM|(y`OAҖeweB/{r;bkcp♸ cMƢBgǻqNC&@b݂ ^Kx;> 6ԯքϬ3M 2I\[\N;|ׅ޿wY1$rpTF ?wYGĘ?~Ɨ7c<c'"U5euMTZK?%^Jn8xQVxr$VGRL"'@zMd\OHc.BFKHH-0.cZ&PX]X "  m F$YD$6HXQӁ$riWplfq}ֆ^"xUQoBbGƚ{|V'\kE,iER7Fl>p@~ࡍ%s,٘+^:eoF̨f9Y4 OrLR uVkr%=f e`LhhRI8ҍ A׀9`q,BJd4ljK0p'5Z'G l*4N/At XrM>R"DнC׀7oYkۗ8]_M׃P)ƭ5Y l>Z85% xᨃf|K -PJ&TKl&-WNB'+k-$nרdRfh8Xt_@'٬@! 8f"vF?\6/'x "^.Hi 6OzX1:9ODēоێvmv`k0E5P^ qw*i ~b1 ugxuŒb0R RR~h;upD-ٗ<}lMnPĊ9aaEnmەc("Ly#gh3q<yTh_ -|-Yތ[=CRFjp 9r[>8ev =y~މ$ZI$zGl}10'ԒIa:|E,z9<-0Hlt;b`C:CW+=G.rS1sgo= +6+ \2V= 4D\uc?mӮy\kBd|${"A"u{+Hd G2g$͒RѹIӾLIENDB`radio_unchecked_insensitive.png000066400000000000000000000006111323676556600341160ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkboxPNG  IHDRagAMA a@IDAT8Sj@)i˒KJE^^zx<'॒ A ڠNA6 ~}?3+7 [ | rwkI^]&I7Ms0fxQm5ME"AG0vY%K˔xDkyqi@ V,5yl͹}(oF Nycg ޸\ 0K $7t&f: 5rӷ4jj|?üTe!Cugz,PM Ɵ>]yHLJIENDB`radio_unchecked_insensitive@2x.png000066400000000000000000000014001323676556600344650ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkboxPNG  IHDR szzgAMA aIDATX =Q]TmHƠ5TTj~ %7!h &4&QW<י]@f?`'yso3}{=U79oDpwe _5"]A5_SwB@x_pC`q\._d2{XV$Qf9L>wi:qǎoZi qՊ_~8ύ^7)GE,͒K|>l6ph5LY*^qc^ D؛HEZ JZV{ V,̓` tž`*@cHB˗Cr'Ҋ3RTt4}mMrm-,m평-!k\2%ο IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkbox/radio_unchecked_press.png000066400000000000000000000010541323676556600327730ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8SJ\A=uM&A\I>@r$DBN,!D$ʅ32$0 $љ;:u*e*tW:9dbUT0TN̾Mr4QvqPZXESLɏ͢8C R%(~,s`eLU42;9CrBgU!`E[Uf{)5YBó=E< Ӣ̦L>DUfP$I8l{s}֘_|*/Et'q=ovA;kk283uv@jo6vI:çd579l-Ǿs<~&X,XNqvL y^nwh>%m* LFBfYlRC߬ѱaRՔ_.~1FnEx->oK1Bs"O ?\VIENDB`radio_unchecked_press@2x.png000066400000000000000000000026321323676556600332710ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/checkboxPNG  IHDR szzgAMA aQIDATX WMhU>wfkbhB41e AW.\ nܴ]tEpcɦ]QWH S+BĘ[mkZ5i23;sϼDSns9̫uy'2V yxs2~62y񰻈~#7R?˖^FAAl7˗Mnho,"O3 &ԤucIz>~<䮙9s-rW[2Us,&5Of#oY{ɹMN\x՝da]Wdr#%ı:8]* >R7ȗFSjliPh4ae4bLb`|= u)o<.jHQ1"^J\ZP@  x2P ݗ3uN@) t)TEBfJ pyhdI&C`5!, z1&A^ڐEȯ$m|$$+Lj"#T[MA6{S!DmBŗH7IIK[I@8xR ]Y? XL1 |X6D,a˳ zy-I$Z9~E4;n $[`}r@j'(Z xVUf_"mǏ\0Quc:.q/tN{ "$1a5Ww~_2Ov"R3Wƶ{'&Cx8䧩ߏ^g$7FSN : C:#Qy=RCrXpӧFy01sܾ}Wt-w>t_ݎcD`VLODxdl2;XO]~`b51J=I!=c8Cg{z<#i2?\>xAҩEXB LAEp }`ϣ1fιADn[6YL'&CM΍%#ɉV!e}ȳ3.KhhVi@T:, XO8'y+ql#IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/header_arrow_down.png000066400000000000000000000002561323676556600303560ustar00rootroot00000000000000PNG  IHDR Vu\gAMA aeIDAT(c`FK 1L /(&eʁa @|ܹsK@|@iK5"+a MP`d " 0NIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/header_arrow_up.png000066400000000000000000000002721323676556600300310ustar00rootroot00000000000000PNG  IHDR Vu\gAMA aqIDAT(c`(y]RRR?~ Y bFF$ ҈ hRs- R $))yŋ7A61cbb dĠLx4 &OIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/slider/000077500000000000000000000000001323676556600254365ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/slider/slider_handle_focus.svg000077500000000000000000000050401323676556600321550ustar00rootroot00000000000000 slider_handle_focus Created with Sketch. slider_handle_insensitive.svg000077500000000000000000000040721323676556600333230ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/slider slider_handle_insensitive Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/slider/slider_handle_normal.svg000077500000000000000000000051701323676556600323320ustar00rootroot00000000000000 slider_handle_normal Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/slider/slider_handle_press.svg000077500000000000000000000052001323676556600321700ustar00rootroot00000000000000 slider_handle_press Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/slider/slider_point_handle.png000066400000000000000000000011001323676556600321420ustar00rootroot00000000000000PNG  IHDRw=sRGBIDATH Un0LB}qG~jտ|IC 8V%?H[tx#DZC8t:Yg8[_,/|kr(6ۂFd2yIY'rk( r'0րf S:I c0HƜ<% ur6$n 7@V.}{R̛Oa㡐1 0Nd؞ U+rHde^%:R78+Yp轵"3cWA8] DkFyGEq j1?hl+Q3't:f$$Jպ_Vz^4;֨>4~hCoRW=brL`nlAr4{'FamSvvAp\U8e+يg:vȫ@!`riH])M(~4B,QtG44N5B"-zXv~*ϵט'y>0Ti` IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/slider/slider_point_handle@2x.png000066400000000000000000000027541323676556600325340ustar00rootroot00000000000000PNG  IHDR00WsRGBIDAThMO$UQ0 G1~`W`E5jb&nNLL@cFQ$& cnߧR].$ssǽoݪ.w w(EISSUI -"1SLK9_&'w^V/%1Mr9.;32E_\\J%MgwXlW4@.rɝJ= ;0888[9EmEV |RDZ$ĘɺvYŹnڧӀW"߸, @fꌅǣ(͇ji.̒֓>HXCNrS?۰5e[bcoOSj&gy>rmJkXdA#C݋'a +-‚lC#2YO٧,@\'h85x"T +ƫoO'縹&p]f.h@|=Z16u% CzXhhЖ_IYI v\$w*JR iyqENO 4<ys|K݁,i~Dl%X'œ'a&Id38 :9Rqϼ]`[*AS8?$x;tQ`2 TL|4 t~/?87t;/o(j :#((1a@"fQKJ[[[J!D:A(NJ5t\Us+Oo_dN75|.QQy2PjBiii (Q@ 1U.KnZjwTVd'V..+3>R{h\ Es)xH\9IENDB`slider_point_handle_focus.png000066400000000000000000000011371323676556600332740ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/sliderPNG  IHDRw=sRGBIDATH c`1`D7?t51?8<6>3# 5W1¦.gG/_|O4pp1Wxf,_Lh1sb`)JcX@Yീf}@4Z@(0AP^t ֕}t = 1 yF.rmoٔc?oAz@zt A*mVoRr Ak}cBVDlXkn^ E0D -rsý?pYzK\prQ'?TJaAD Kش缘3@ ^ % 0ɸ' .z{?aAwSpH 9h]*.F+YJqbAC@jX53|=zD9P7bb?:E1\Ԉpb jyW@AAӠ}IENDB`slider_point_handle_focus@2x.png000066400000000000000000000026261323676556600336520ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/sliderPNG  IHDR00WsRGBPIDATh[LUA#AbTM}1ꋩ414M\J-j4jńjl!*PӪڂPiar].;s{;gvg/9aw]K[n׽oѷ &hLkmq`zzZCJT+nPqQP7e=4UT)Ă_}36fMel'4:LEC/T 95<(;pMx0 _zscf&ؖ0 ֤o+z^?tĢ. -W"Q h9S sQ]^9 _SG[?S%p>}f@iCG3TQjY&J1ÈW^S{t%@Ehd_zKbQ%-7hUe^R=aCgJV ƤuX}MP}~-I` Dz+̙;9:J'XFU>NT& aX~Ґ1=&!&deӾϫd6:_2 ȖzoѽL5wGi? /ƃN* `R ;Y/¾7NGkEWۧ-d:t5/x)^L$BKU}ޏ:BiJi* ,C#B~ _0X0NS_q1 ')vJZWc = EX71J8pr;L&g'WvnJ6iL, p]Ȅ*a.'T;P~5S N,\wW^X2pL"Ŗb7z#7J*ltqnD 8[L#fBBL:k/Actd)' į*///OL#i&mæG֞rDnSI2[)fI)<׀86ԧ[gV2 zߘ8 3#{79`dJZ\$dRtDǨfv׻˨ ~FTVMP8Hv +~&^oxFh8G8~GHF u;&$rJ#Q$NMOME< UdAKnx`IENDB`slider_point_handle_insensitive@2x.png000066400000000000000000000023771323676556600350760ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/sliderPNG  IHDR00WsRGBIDAThKOVH)Hl6iK UB(iX A|!EjO M.i%"a a<>t6s;Rhʐۖg񵤹#ǠD#KIA}X`ޑRX,[GgwUQE. @ @dA]|J'''?vttEo\.wvv>iR4o&)PsA0wRlN40' kZ|˔d$-TWh4 V݊ ,ה25YSe.- =],aKQ'uZ0mc¥r+;C B귁;<<<?]]]PNI-x󦦦^V*+]Ug^ quq]P9ȅ.箪?-.ƫhZa]th@A.rJ#wc<. Cq EW`Q{?88x%WTsfff9J%\gszzz9#Wb߲ / qkK|o"݁4VBz*5 R|$QwJWSxlP;+?o~~~"18vwuD:IOpddk-*)Q9V_p|&h<+DJ?:^f'9u[_RO`:0]xx*mmm=xdVss,M-6 \7BCz=,6Je:4~V Ihᩴ|%q=6BRGŹŎդ7_Q ȻGGGN( ALΓ") RI5rlݠߓDXqu^C$hISo{ GՓOoF(3_MlR;Ւ "`IENDB`slider_point_handle_press.png000066400000000000000000000013361323676556600333120ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/sliderPNG  IHDRw=sRGBIDATH UkAٺ1%Eǥ^,/  QiXfQШm h06АԦc|AГl1o†\T?a0@Hܯ"qB}857cl^=w; Ap ¢F]ɰ^mH3hxԗeqy̕ҁx\($0R]V: ٠>; lQB]NfR4]~X WWM̼O3W>dx1W9ȕ$Q`Q{yF(g WXF ϗp, csi ޲Y bb9љsȵB6@55a`T%baiFxamb reّl e@1712"YΗjr|(?8;&xxqe!ѺQq5e|a7c{QT=μ dD,/&=u[gGT?D"Iep6:ݣ^ ~4(pAP`Š$R2QuT.Jd4*}+@UJ {۝m8ϽvzEѫM. :{"(/ ES!6S:㽸NejIENDB`slider_point_handle_press@2x.png000066400000000000000000000033521323676556600336640ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/sliderPNG  IHDR00WsRGBIDAThY[lU>gʶt[*7E71BLC1R@'@LaA PVE 1**@ {n{sRhwf; ?soߜelT plL2IΤk֖Q |Kޯlِf"Y%%{.= [\"ѬPyƵ)A{VvA~|no+KR˥_#GS2i+z[H1|.oxɻ%;ۦ'2q9,95~M XZ1:mڔ |1@&`UM%鍋b"xNl@zeUTYо4]y`+Qʗ:~V X!1X%psb4gsn=5t0gsn=5t0gsnm-ckPi2zꂕ5+kL܂ l|L@$`rfJaƼ$f_&S|8L+㫙p&!["kC3a}NR\/4}c1X&@QtnHvEXdqPmow-ɟ%O.jw%.%8+,pV~ tŠ幗4zg ki%f̎wMzGsatӿ y1jYa)ELhZ=m?-U xHTQ[e/ULɚT3(hD[בn.E!1%Z0>%]ZAp!%QĄ2ZB\6aЪn]BHQg+* ƕSwTZ*R1'v!:AKҒ ^ j'LQI۹}ԅrjm2-ye-(k- 3r|UzEnpX%=Z @s m`>,ͨ)A6fjLtϥ-/8FsUA6`J`z-^NfC N,E¸ WLMh!AnX%\Q) ?BGd:U'*3 `XI'qBXKStI.Rc%s\\sm,P،q5Ӯo;OKx'Ң_ҺGi|sUM*5z (|HT{"#8pRamE'YSԝW;;$\8P)q畴%*=JT:%:*:r`5{@SA@FB}o_:oYD}k_gc&fIѭ<&u?kmw 1bLa`.}1qte+9ds#'PpCgkRsϒ3ϓN^C88Q<6Bk8\A HJ<)EǿgkP:J$_ (p6=w>~O-}항^]E3"ǦoXݹRMRN&"z`:*V#EupoIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/spinbox/000077500000000000000000000000001323676556600256365ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/spinbox/spinbutton_down_hover.png000066400000000000000000000002111323676556600327750ustar00rootroot00000000000000PNG  IHDRxUsRGBCIDATcf``b9 I /( H8 C'P& A&e8 ` k/IENDB`spinbutton_down_insensitive.png000066400000000000000000000002451323676556600341420ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/spinboxPNG  IHDRxUsRGB_IDATc4666 .f@򌌌L I*L$W&&/ A=yHę3g)bIQ$}}}mdA5# IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/spinbox/spinbutton_down_normal.png000066400000000000000000000002461323676556600331520ustar00rootroot00000000000000PNG  IHDRxUsRGB`IDATc444eddܹ% HȵcIP &j !#H$ RT~I211MV?P$ G 8YE+3IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/spinbox/spinbutton_down_press.png000066400000000000000000000002571323676556600330200ustar00rootroot00000000000000PNG  IHDRxUsRGBiIDATc]?+K@Kg\!#H$ RT?$c)`(%A04$ݕ@\..IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/spinbox/spinbutton_minus_hover.png000066400000000000000000000001461323676556600331700ustar00rootroot00000000000000PNG  IHDR;֕JsRGB IDAT(c`C$MQ^=IENDB`spinbutton_minus_insensitive.png000066400000000000000000000001531323676556600343240ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/spinboxPNG  IHDR;֕JsRGB%IDAT(c`C$a400H .\EHͨ TIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/spinbox/spinbutton_minus_normal.png000066400000000000000000000001541323676556600333340ustar00rootroot00000000000000PNG  IHDR;֕JsRGB&IDAT(c`C$a400c/\GHxEơIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/spinbox/spinbutton_minus_press.png000066400000000000000000000001541323676556600332000ustar00rootroot00000000000000PNG  IHDR;֕JsRGB&IDAT(c`C$aY?MGHF:IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/spinbox/spinbutton_plus_hover.png000066400000000000000000000001721323676556600330170ustar00rootroot00000000000000PNG  IHDR;֕JsRGB4IDAT(c`?>1$$7D53" o 1I!x FACo}yl=IENDB`spinbutton_plus_insensitive.png000066400000000000000000000001771323676556600341620ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/spinboxPNG  IHDR;֕JsRGB9IDAT(c` ØIa"80u … Xل F]lXIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/spinbox/spinbutton_plus_normal.png000066400000000000000000000002001323676556600331540ustar00rootroot00000000000000PNG  IHDR;֕JsRGB:IDAT(c`?>1$$7D53E(p`@ Q؄ FQ9u0 F`IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/spinbox/spinbutton_plus_press.png000066400000000000000000000002001323676556600330200ustar00rootroot00000000000000PNG  IHDR;֕JsRGB:IDAT(c`@gƄOW"9Q؄ FQ YLIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/spinbox/spinbutton_up_hover.png000066400000000000000000000002001323676556600324500ustar00rootroot00000000000000PNG  IHDRxUsRGB:IDATc`@!@n2 Ŀ8! a$Al," x(pn N>ۂIENDB`spinbutton_up_insensitive.png000066400000000000000000000002521323676556600336150ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/spinboxPNG  IHDRxUsRGBdIDATc`@JHB 0HN7 9$33;)bD<{ .d1f111;0IgϞNy4rIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/spinbox/spinbutton_up_normal.png000066400000000000000000000002541323676556600326260ustar00rootroot00000000000000PNG  IHDRxUsRGBfIDATc`@!@$ $GBB/΁ `@~6PR =9d .1L300``2 @:a ϟ_4)4-vfBLIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/spinbox/spinbutton_up_press.png000066400000000000000000000002541323676556600324720ustar00rootroot00000000000000PNG  IHDRxUsRGBfIDATMA 0 Q7=E_Cb+(og8HCA!ȐMahL' ޺Tз&v{0V#IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/tabbar/000077500000000000000000000000001323676556600254075ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/tabbar/add_hover.svg000066400000000000000000000013171323676556600300650ustar00rootroot00000000000000 add_hover Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/tabbar/add_normal.svg000066400000000000000000000013211323676556600302250ustar00rootroot00000000000000 add_normal Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/tabbar/add_press.svg000066400000000000000000000013171323676556600300760ustar00rootroot00000000000000 add_press Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/tabbar/pagedown_hover.svg000066400000000000000000000012011323676556600311310ustar00rootroot00000000000000 pagedown_hover Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/tabbar/pagedown_insensitive.svg000066400000000000000000000012431323676556600323540ustar00rootroot00000000000000 pagedown_insensitive Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/tabbar/pagedown_normal.svg000066400000000000000000000012031323676556600313000ustar00rootroot00000000000000 pagedown_normal Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/tabbar/pagedown_press.svg000066400000000000000000000012011323676556600311420ustar00rootroot00000000000000 pagedown_press Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/tabbar/pageup_hover.svg000066400000000000000000000012261323676556600306150ustar00rootroot00000000000000 pageup_hover Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/tabbar/pageup_insensitive.svg000066400000000000000000000012701323676556600320310ustar00rootroot00000000000000 pageup_insensitive Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/tabbar/pageup_normal.svg000066400000000000000000000012301323676556600307550ustar00rootroot00000000000000 pageup_normal Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/tabbar/pageup_press.svg000066400000000000000000000012261323676556600306260ustar00rootroot00000000000000 pageup_press Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/tabbar/tab_close_hover.svg000066400000000000000000000022001323676556600312600ustar00rootroot00000000000000 tab_close_hover Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/tabbar/tab_close_normal.svg000066400000000000000000000034261323676556600314400ustar00rootroot00000000000000 tab_close_normal Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/light/tabbar/tab_close_press.svg000066400000000000000000000021301323676556600312730ustar00rootroot00000000000000 tab_close_press Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/000077500000000000000000000000001323676556600246445ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/check_disabled.png000066400000000000000000000003321323676556600302540ustar00rootroot00000000000000PNG  IHDR  gAMA aIDAT} @w@`!SY "R Z`Xvw3$谖2V[huȲF1)"U!T (()Gx!5StNjѫ4L=mo/:-)=.Hj:+h[55QIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/check_normal.png000066400000000000000000000003251323676556600277770ustar00rootroot00000000000000PNG  IHDR  gAMA aIDATc`" %Lxԁ8:>Ob5|D & L @ ـL ȸ&;sA1@$S@\@V1@ m@^iTT M@<Pex@@& .H"xIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/check_selected.png000066400000000000000000000003151323676556600302760ustar00rootroot00000000000000PNG  IHDR  gAMA aIDATc`Ċx@Z3T _@lO2P{ .+rxX&dsE ^ @i@|y@@z1_ኁ@|q1budPBo1#a dC*t/IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkbox/000077500000000000000000000000001323676556600264325ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkbox/checkbox_checked.png000066400000000000000000000010011323676556600323640ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8c` ܿ_DHs160/H9ȷ+r޿†@ݻgvݟ@$jǖ-[$߽{3yda5@0330/9[0!Dv޽JQQH ?kÆ >jr>رٟ>}ZS1 bؼyHzzzTTT&\RRRLFxa֭ZZZKϜ9SR;_K.M;oF 0?$$d޽{MYXXXYYU.\ F1۷ ʁ.x4$׭AAAG5!Q It=z-48NlPXXX #eԂ r&eA ͠dc2L0 ,0E3L,DUzIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkbox/checkbox_checked@2x.png000066400000000000000000000021371323676556600327510ustar00rootroot00000000000000PNG  IHDR szzgAMA aIDATX WmHQr#+,NHBB$HaZ-4i1d,B%h"BQ:!$E0JCS3w_ݹ|<{{w ſ6&''a伕`jۉw3s/ZQTZW3 &ơva'0b9LVSSSǀ_j@ ir0"beeew`0|Xd7422p9dfu/%MQQQ ёKSSS7Rv9 5o=@{XGRbb (e^d;h w$rI|= `M c' #hpp0 ί35p{bR}ZsL\777DŽ=dxT,6L R(Ѐ>APo- '቞"_I.%nJjYGV>x8y|hxxx5ܜ3inZ %$$2bby={WWWFEE8QJw{ Qy#/R9ƴ8g{ʖ@TߘmeӒ'۽W0Xbbb=']uVu 33k ˟ozl6Gƺ<Lrcc']Qbl ) } ָ,r29~YY,+Sg0~;+l%L\oq(3>$xOO~o@r0 SJlmpIЫOo@-5.Ao#)57e=ʏ0 _ypS)IENDB`checkbox_checked_focus.png000066400000000000000000000010331323676556600335110ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDRagAMA aIDAT8c` ܿ_Dv߯F30HЁ&3;0_ q322Z@eqlNjS%%Nد{o"GQQ"4 {ɓ69Hr6.AA@ZZy!P[˿3b *m>|X t=KG;vp"GG@ ytW...͛7;$`GIEEe߿%%%a4[n Zz̙2OOON__9@Zti4hH,@y!!!kk"((T,ʪr…0M4o߾o``Pt{! _n : bLĤѣoͧı03>$lmm=! &Z ȸ= edb\#:3 h[=,sȢ <IENDB`checkbox_checked_focus@2x.png000066400000000000000000000022541323676556600340710ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDR szzgAMA acIDATX WoL[Uvu@Af$N [Dp7I!;> 1q1uDHAu&LHL@0̚ ,]y)O{}= 6ރ Z7#(v εdKԪ}^e;;;.6/c̒'-zq97E.~ $3z}'vd V.G{$R )}|+w4 .ٜG;滻 ${{'D#) E*b[QQ 0V_ `@[[p(z?Ѿv-3/(_A֠ TkZ-| h\jB 9@ͰSsg4IN044tjɑN; LMUUd2][&777lKaap|+?΀>00ÃMA9w V2j.L*䙙kSSd,tċ-//_uͦF>Q9!h4^*oCeccm6;Ⱦ U \ n?]-,t='9rްSյ$77ڞ{)IfL:ab1rкܜXQ@7-~S9f=Vgˊ4#g߄\k?)6;/5r*mf P<#M6;@kF# NV?̿!NhIENDB`checkbox_checked_hover.png000066400000000000000000000011201323676556600335120ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDRagAMA aIDAT8c` pQ|lvJg??C?+%# YgRp6÷O释_?@Heabh/Y"43(w=' 1&fV.>&mά4cՙ,.3~Ύxp . %kjGk~9n+WyVVV֌U1{T140|ubc.F72A,r>u A'@% XwC￘z2[C~6^6N'd=:Fŀ߾gkckAL=ύ=ӀNU1{&AY_M ahgd+rl Y( D `Ct3A9410<qH7]/r-BN "/!&1Pe@.IENDB`checkbox_checked_hover@2x.png000066400000000000000000000023701323676556600340740ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDR szzgAMA aIDATX WoLU{{k aҮں`V,Eef ctk\ʴ`O&馱j%k17\Qgµ%ƽp9/煔?/ۧvss{^[o$D9n& r`8wݎ3>8ǰo3ŜGHzUU!|P"/jˇ @ 8wb,[;7 aZn*@#/!E3vB]^rRt01cƢbi~8m hpY׺>pJw?&7g:6:ڟLpxt ` ^ a^ 7\.1-7m; e{Xc৙nrl(Yy|\AS Ȩ(YunG^!7A2m?ttCc%rq}]qɍ ~zѧkG}m;x|fAN/BgęFp#3|~)\0s2tOĻ >t0EMe,wxn8"ʳg{ANyy͎a:RUPdQc#Ɖw4Gz^fK{!6ީ4#t+xOnݮݲL퓐)uZkVJs qN,w%qmʄ+1|lYZ(};vNzoK8kh%{ Yu4j;o}Lv{[|V¼>*}#qjĖ9Z*c]?هڷB8plO{R֝/h ű2 5qtOTӚ+cGٜÇŃ(S'AFW?LxpS"e \GrnSD]C@r7̻?^栞$0IENDB`checkbox_checked_insensitive.png000066400000000000000000000007631323676556600347430ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDRagAMA aIDAT8SK`w-]0\M "U򢑗xb7g*x,괈i`bi(8%}~y<\~ߏTl\l 306zt:L&F|>W7bHt:! l~FfbQv ؕrS<7V-IZ|;(R xJ8.b /z~Zz}/Y˲^TwaORf AP}jzUU=G@6e3 rjͯM ǘ.˲^4Mr2DOx0&!Lj#O(H$MӼdžp j%r"piD bA ,察ě>?n@ko/okIENDB`checkbox_checked_insensitive@2x.png000066400000000000000000000020771323676556600353150ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDR szzgAMA aIDATX W[OZA"4PC[5&XjW?ۣ&5X!Hm6( K"J7gqA/&ۙ9k>vss۷ z*L?99 \]J۱/'ƕ+鰑B**D\:,/A]9v&xRzffN'lܳ(P*-VTP3XD(`H[F0ĝ3#Q{s@ pp %DDv!߿f7A!Gާ'AߓqW<'l.6A`@Maf)bǣ@0 HXUJK_KlqL/k?7M`d<15yAūmLPT6X8r^o`$RӭqWt6+ *bV@ 3frA2Q6-6$ŒɨuыxY7[VcbzH:|44>,z+@@IENDB`checkbox_checked_press@2x.png000066400000000000000000000027371323676556600341140ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDR szzgAMA aIDATX Wmhe޳sq0XȲ>)*3+2*,+V ѲSF*BAC"(UQ} Yf|<]>{W羯xߝ7Yu.µغ#SFVkKp@sh;Uep\ G9YmЍ9-Q:z+x_+D*gdHJ.؄m(Nc;=u]”R6]ƂڢG Éx ~~FPtc;w}w}X"_:)yFێb=R[oW,J!1gꧩi؊Pm*\&*/F7aP$B`otcd枍G"T!ݍ{NXHL0TNJT.1 ` j#t_wCz@ Vxadʹx()̓}nZ+[Zro6(-3=ΊC !0"t '+`-TXq=H߆iy ~BBƝ?Ua+; 289ppH%~kWD kqEp*Iv 1FO'o *6<7glB)Kvxזs7YY3Wu]qXs 8"FTaڮd}JG]DگVr ^Pɻjw<2]hâA-"1~>glŨbtw%KNC-?6ӁlTaBedô.^lg݉ 8Tb+ ۸cXLBkCl?ܱM[GYM`}Yh#Y XPfFӆ"k~ }CćNwKh!xL*l3'YzȟU$+_|"!ÇCcMY Cc>TI@s@d熠 (y 222+`{(%> RR  "b4 y! - bYLjn `s5'!˽xz>=0qp!,Mʰ@,3\B 6SIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkbox/checkbox_mixed@2x.png000066400000000000000000000007211323676556600324660ustar00rootroot00000000000000PNG  IHDR szzgAMA aIDATX W1N@Wvf+bIENDB`checkbox_mixed_focus@2x.png000066400000000000000000000010201323676556600335770ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDR szzgAMA aIDATX c`[-my!Z3В\dKsbWt-w:<D-w[|٢ʗjHeKŵZ+Wgdt4 f<@`?0EԠ%Ev302J210 f8(Alϩm9\ Al] 6`Ѵ0jNis8lp>4uhJ]/*ŧ$jjj6< J$4u<{C`!`:Am8Z~v扫 PD̆`$.\j@ 3A-c>lxA]cOwۨ,Ɂ,9\W} 958I -IENDB`checkbox_mixed_hover.png000066400000000000000000000004261323676556600332420ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDRagAMA aIDAT8c`02PR`2v,` ]g85QI0&00H2142]X @jAzza`$vAX!E{PĀ@b(F @z#(y jz?÷7 n10' fՍ |"w q0635$~31;<< IENDB`checkbox_mixed_hover@2x.png000066400000000000000000000010021323676556600336030ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDR szzgAMA aIDATX 헱KQǿwgIbAR ֤ :FH MԐK45$ bw|j.y&qw=z{/( j)Ϗ%v3Ǎi11yD<0 ʀWѲ#~jXf GDr/:(z>P'6vӈθ,6]}IF.DmYdJ))y߹+'E&L)e_CAAcO 9k;il'$I[a'&};Q,W\.zFf%%odvRp!r+|ġԤ6d)(C 6  De.a4E^s4I ^ iἸ KpGg 6ŏ/kVUź j$%5Zp,XQLp-t`̈́֏[R\[2egg৛.MEw~ ~_{/% .=\3ڽ:(KfJdXr-ЩLޔad?8/Ho\$7@MY Q!s`nR'QIENDB`checkbox_mixed_press.png000066400000000000000000000006231323676556600332520ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDRagAMA aJIDAT8R1N1 78x'P'^ (OHt Xfq6 a;'و|=J$r?L(D3v0&ҦsuÊ~ d6#Q1=`}DMreZށyilrm1-ȁM$D5jkj@}=l^Ol'׳ $$4ű-Id8խoWz"oGhwܪ@qȿeA@EYG΍& ;`UyC3H.Duc{"y/;1srM/3 gyn;f _g[k.IENDB`checkbox_mixed_press@2x.png000066400000000000000000000020061323676556600336210ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDR szzgAMA aIDATX 嗽nSAw(R$R PsgH /@::-H@HMqp|og=e=3眙]_;rJpv~}ikBDJL P*Ǜ>mm˹tUCO[g7ͳ:A=^MDɢ)[o`d[:fM4dX~uKJaKAJB}6͡he 2n`\ nϐ^:djkTcӞDǘRo"D4M7D7(@ݷ %4qk yib!ۚw g Zo'XPoe1FCu9NM[n <˃[^z).>WsuB#b|S PT:_YI&jמy z\X<˧ȅiQ!Z.n #P޸0nNta[ sÑz<(ХpBć=s9  zsCD`=;: _x|f@VY[%b[ ̎@zèm〮YmiDh" ɜ .4Z|@$ 񼧽 "⪡x,+hi@<5?dP\ǁS^"Obޗ/ ]? 0|ywiBSď(JA|`Hgh ugVގܸkwM <Zεtn7{Wklq/_b&k$G cO6l; (y 222+`{(%> RR  "b4 y! - bYLjn߀WTCՂ4%I)L0CԲCY IENDB`checkbox_unchecked@2x.png000066400000000000000000000006541323676556600332370ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDR szzgAMA acIDATX WAN@T;ݙ^x t 2܀. @luцɗtcuљda}o8!cӜmچzi~ 3jXҜGo gEB> P-=w]YUkoY}]j'I\axy)a$`Yȣ(zi4Q E"v1pMܺ75 Ņ .S ^-H8<ӳ8s9@zpS3l.Y @N12;ҫc ([SjZM̲X,#[6&5a/G3yHwI3IENDB`checkbox_unchecked_focus.png000066400000000000000000000003771323676556600340660ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDRagAMA aIDAT8c`0v߯F30H3#" &aX@AeqlNj3@6O= C#P]%XO&@v DMf:ylLzh,x0= DP0hZp*AɓC@j@jAd 2H?ERnE/:ZoIENDB`checkbox_unchecked_focus@2x.png000066400000000000000000000007261323676556600344360ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDR szzgAMA aIDATX c`[-my!Z3В\dKsbWt-w:<D-w[|٢ʗjHeKŵZ+Wgdt4 f<@`?0EԠ%Ev302J210 f8(Alϩm9\ Al] 6`Ѵ0jNis8lp>4uhhh"WP jѪ d3HԀѴ0av@8n K(W 65LPd&3* . '`d狻mnZ@ w_l@.+JAl$%͠ ѩ8IENDB`checkbox_unchecked_hover.png000066400000000000000000000003631323676556600340650ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDRagAMA aIDAT8c`02PR`2v,` ]g85QI0&00H2142]X @jAzzQF@ɓXV  Qepۏ??qf5ndɍX35+$~31ĺ1rǖIENDB`checkbox_unchecked_hover@2x.png000066400000000000000000000007221323676556600344360ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDR szzgAMA aIDATX 헱K@_j0Č UqNn'qrqMpqrp H&PCI+(M^;ŦE%wN:$1.Q >,+*@[{$^.)7MǚERBxAyI)j2߼蝓"S D}T̄3`0 L&I%b:-iowʸl" m9=5K]#6qȟ=T5=xp{DN|' LJ I ʋ1%|i61tF, O*8ؒœ\+nAE{ /K/wyz3IENDB`checkbox_unchecked_insensitive.png000066400000000000000000000003321323676556600352760ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDRagAMA aIDAT8c`0 H1??G ~b xBtt4ˍԀ- G@`AjAz@a^:4" r@= qN4 L:ZH2%IAuYOp@`IENDB`checkbox_unchecked_insensitive@2x.png000066400000000000000000000006151323676556600356540ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDR szzgAMA aDIDATX WK 0LQFgw9z܋{ŕ"XgB,/F֘L|Q߇~( MZ@qօ$s @@W. =L\_8!VX'I2 p* iἸ1ɩ]`XEݳԈC֗5WiO' 0]zGYp4YEQTG,T~ޔad?βlV'"s~"'jN& 1SQ?P IENDB`checkbox_unchecked_press.png000066400000000000000000000005751323676556600341030ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDRagAMA a4IDAT8RAR0 ||ϡ9wz26hFҮi߽}5{W|(c;30X/j"&10 `дw(@zD#f^!76i lc7*@ROۦv@sFZ_4q5QnTt8<3s󧐔5-tm*G"𶁀7R(j@pXDU/O6Еx8~|x5)A*[`⡥(p̑dؙ%/y+ nf ]oqX#(AQGC~@oƙjo;PFm 6 qkyqGJXmMyy 7YD>94_o.(G>>hnmT'<O)bc8|WSx9֦U"MNUZ1 *?bb݀tb8S߁\gm 43_Ƕջ8"|WEí;Ht~_ I*HX ba[G)Z#HZ_'ښHp"l^:NҠԄB"]yD2G6Jp0Q0#&7f4&z22|"'@r!O=6<+gVn9B2?yد`aN΅1YbvMߺgw2[k5& |ubt$)+YlXn!r ^1gYx7FB9Cznn+AreSis!Y5 pEёΘe `#j+48kΘO\A0V) [%in$).\bo#U C+j'?Leɤ'gIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkbox/radio_checked@2x.png000066400000000000000000000017331323676556600322620ustar00rootroot00000000000000PNG  IHDR szzgAMA aIDATX WKAޘJ4JD ^b9K7k{^o-^PHJ R-BI "-3m2ԃ3e] (ס߃ڍzUU4OUnz<6S"ý (tP?F#`Aa:>|h4lG B^O}]4 W0~ 6>\^^222R+p*NlhhhD1p Mcggr78 ;X"dgsIl||i'IlO<$WAFv~~~mR:ԕ2ض-%vmu< l`x5&60a ǣ?J8;+Պm&'''ڍL./-X 5x9 \In l{+ .+L&_McRFJ lT}Π'!uzzy=:B81͛e~0hl6qxxd C?鯝gmM9qq1{(81 b/}'727X]]j.\uVF{Ʉ)+ C pv 3&BǬ&^8sU6ĔyaMrZsG/bRAaZN]FsO5 z3cB㲀ȹI ]]1 aIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkbox/radio_checked_focus.png000066400000000000000000000006631323676556600331100ustar00rootroot00000000000000PNG  IHDRagAMA ajIDAT8c`0_%r*P;@8z3~FփbߎǷZyܛ żJfaL\LY#f4,LX(P@ ɁԀ 9W~(L 4ĚSŨ]&"AΆi644d=}t՝;w΁0 g̚5THH(QAlDʰ) )bPf]PT xF#AɁ FFP<u{n_0 Ƀl0exلN@j@.)$')2l5/IENDB`radio_checked_focus@2x.png000066400000000000000000000021121323676556600333720ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDR szzgAMA aIDATX W]HTAs׻4EJ5!*H )@ɟL0(ا(I0H4!Bb0Q[]r{;ͷ6w,|3|3\pUIB" *a@f@gDJD/w&NR&tW2B+C_'$Ei$;edǩς$b3sw3=xY'<3tL%T  J} wmLIͼ,Dt WH}Vv]j^KTU7_kn`'RX!nF$Lx̊D\Q24-o"7Wj*npCtm:ˬC>`ߜpl\+X[ 7ǵut6 gxjX}s-V'2Y5`k|LDᩍ]=h>/,G8Wq(#l$Q1 PLh1/HU0Wc b!G9c{\aU6Z $cuֵ(L,gʈ,$Я# Q5pA|$#jlnu?Ԑ GIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkbox/radio_checked_hover.png000066400000000000000000000010761323676556600331130ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8S=H[QˋşhI@CşLV08*8M":t֥&.7]ZhI,TAQS$O6{7Q{9s9Onn(,7Mf:`T\\W}_wc!2+yn V{-A1O@؜_Ɯ}eB+Է}" ~n~L aH3۷*m`lDDr$ˠxWoVwcZn Y’#Y-L:E_c~#^/'``|ssYw| #ǘ'|R}T 9Q>Ygi2مqT|u ??<:Y&1I\zd_ԐA"iIQm7`'{gr-_qae0ǹ,@9P ;N ,JXCWLI,l j? ٲSq,o]pt"ү[dIENDB`radio_checked_hover@2x.png000066400000000000000000000024751323676556600334120ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDR szzgAMA aIDATX W]hU~4mβHMċNPAa Uqwc(tT!wzVAz!Q\B\if]m.Lq|sr5IZ|cVGs_tF;=mB\DL{4a#X = FK A{9Α~'57Ua_bSᒊ'_Nީa bb\XenPu.s  wĶV9^JaC#Ehb=‹Еjsq[,sj$;}p|aU.>~ { QYBV\q[G{߼t^owd5FTZ D^G`JyN2Sa_6~lrSL 藊jffQ[M.ryk\,x'3 o7jk ׊qFcYF|Ul.^|XPm"'Vk5؎\NU wo5>FmW\DW`R-CY>պj[5mī˜lOVd'xOG__WW>~5iHL 4rS̋@=8B->:+0Rߝ@arƔiBSYv6M󡹮SN<v8~뺖`NN#.#m`pAZ|g&gLGXp=`VeěvIENDB`radio_checked_insensitive@2x.png000066400000000000000000000014761323676556600346270ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDR szzgAMA aIDATX Wn15hRH[!ED/;čΝ $T*KJ9jpm!&7^⩷}7`6MBϨ&IX,>EP_Crxk%UP$3Bl2JFxxoSv?x/V&:`B9(WZ]t<~lĹ@(_Db>%O0naf.w;hZD̚nkݓE8 -sxpzq ըa*jNۏV')d BW!WθQC5k_7ykg_짙'5qU@\rg%(,8KΊ`þ4d IENDB`radio_checked_press@2x.png000066400000000000000000000026701323676556600334200ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDR szzgAMA aoIDATX WMh]Us^SĚ"vUTDTэ. ĕ WRpFԍPRTŠ ԶRkS6i!!$}swkNfo9?ވNdW]~ob<P/_JU2=n&)R)-LLdɏqE^ ոe't}Gy/P0`, Թ/y]찛 ZwAq&'}]zJ\345Y9Ĵ1"'Jlםϣb)%bUN6Ylac K4bIJy":]vvgAX. LIrL3xnY˜|GI@&Lm´R1S7rb4Ln Z@[ـ`r,cYd#[VܺwY}b mt)Je[sp)ZJxw=AS=[D^,2ХrzFd70-%C9-ߛ[_.y&6"4MDO` y*pxh4 J@kahm'!ÉEh[6Kުs!yܰP,O/5kƦН {Z!V'۳\M ؔ"-aN5Mq1W ]!0_G[0&Hm?b̬n.~_8v29U[׮! )Uk2Bd7g,Xm=9#6D-ʥ(@*_/f09zVdVgCTWn1=A hږ 005á00ô4 Ib،û Au#m"⮷uoK| ϼ[BF>3 ?<}͐űPӺK`%(npPx1Zb,@sSxD꥟FbӜ+TGB`FB(.ǩ>!t*u^?{ru_EH!Z1Sh߅ nO]t,-Riu5ܹp.&bAV5O{e畎f.(B%83مFu\߰mKNbn *\rvvԫ/>x'/b@6Ė<̜,#|V5J[ -0B:M̧E@Gw }=cEAmtRtskgGϗ&p112{6m~j+4}6oxM[Ǧ 2!p܊ CxyYIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkbox/radio_mixed.png000066400000000000000000000005351323676556600314270ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8c`0?PL偘*H?Kb` f)Ǐ._ŋTDFF0{h38 iO9st 00HjB?@O3@Z `/9&@g ]A#wr LgZPejA3`Jj1ĂMɹs^xQcmm=Y AHgg&P#䱉 Z ^%` L@j :JH'e@N̄ r8㫡5 IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkbox/radio_mixed@2x.png000066400000000000000000000014761323676556600320060ustar00rootroot00000000000000PNG  IHDR szzgAMA aIDATX WAkAލ -b4z ҃D{oО,C R 5j-3˨k6!ơ}Դt'\.`C ~ v-pK;B@|? cd!A-`0l6v}h4^Wd2T*u G{"7Fp9_ZoBa08P kZ8N?CL!u0Kp~7drt:?ʺdr^!אV$6mc9Z":Ͷ:2|Z}Cy` W- }Kc8W=VD {s|F=:ë #' *v.m  w᜘ I`߮rmWVvb 0jljcLZ k'j]*ls'*QXLa\\qER:Uu\!#9`;63#[љ; "Ӕ\)ꃩ6 Gg,&ح) tc1_:so6YZ+m4 OkV2,&v9ZQ $c]QnT!,-e$A݈A?&* Af>_x[[ubL~IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkbox/radio_mixed_focus.png000066400000000000000000000010661323676556600326260ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8c`0bӯ_F_ `yF6_ฅU9?/[} ūxwAp~0E_`@sxz&6NF66KA@pt\ۻ{ג%@E\BJ#ك@j@U_k3@j@jV 'v/> 9'>_s $@ 5Q-`ϝ;|ݧѣ0wY _p{dI~722R p;&K00z#VX!j01片 cQ"RR ҃":_v(%aH H-L3 lm ,d6RnoS@jjS?`qff FFFs/sl$V΍@Ew/E_!&)+CIENDB`radio_mixed_focus@2x.png000066400000000000000000000023671323676556600331260ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDR szzgAMA aIDATX W]lUwfwf.iSjRh F*>HH!lC61$T1+ Ƥ>ISJ $ -߅X~t?%[ܝ\ϙr%1$ι|s;K]\ IGH[DHFFx*pwu#d9a,6R4%o7L,H,_UVBi#cLDJ$c1#DNF՘T$oOY <ޭ1|TS&N޹qN^>\ږisܒQv"GErW'%t L 8{pP{`tpqaSGcyT1(Yz5BK}D'(RVҎDd[hK'cfX>j,^ԱTpƺ&b`!>O ?߻ZG$K[P 8D''͘hJ`"v$^-8׀7wH昰%b.kE͒Et3!]ĺ8I@cz4FB|4' ~B\ &xKEub\E?<-cNz$ 7E붶"}-XӴ;s+Pu_ @ l|2ľ @#G|r7+ޞʽTRe<9RR`Yhh]˗ .!o |Fkk L940s4gMm9b:4缴U#11 K2S< "!4b`=xwͅ-;NT+WR2`+.~ydB8 _G9u:vß؏ѭW~u r5QLRj@Z(7Bwя3[Fhc ? g]$WI%Y 3+ہ*:8`1gDn;LIq?:4`wE4xd 盧8[׋}z'Թap ./BS*ɈP!YvTZA HFfygKT!#BŢC +%#XyL,U$Wf*B K9d(*p o|rA dkV{rH2Z2"IQ"s5ӯHk1"qv hG`:anMVh'GFܷ D2Ec)T}J Ⱥ C OIENDB`radio_mixed_hover@2x.png000066400000000000000000000022231323676556600331210ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDR szzgAMA aJIDATX WMhcU=/i4Lmb2:NAQtƝTA ;7t7 ,E\t%8t43t: ?L̽F}76Q).cin+WjY28F'Na$A47F,n%Eeu[[(8ΕPwƆ<<13ܓSF#} ?IDMGQ{߼=FWw%'H=8Fb">$"7Ov;(n\.k?L.0 Xah" t(uhv~ACcOY{Ռw\3pZs 䆉?0űͬvӆuͷ K2 =0{9:j6a KղM2et;jnt/Oaffᡱ3dIxH^pe[\⤅{w1`x VuŎ wnqW3-lZ"X3'm i}18zTiծж4#TļeBxkI!a;.SMƠor Ux~rpYp+@5%ӬdB_&,a!.qҬY=J&bvmf/lqKȶ4zl[7s>v "͊ 8l{ąYD9j5 TKɆ#Z"~&@P`NtCV3a&C@S$/\oo\G("RZO<$5-ךfyY3{ATs"TY|_zO>xǾ?DBNr'BxLDyk$ x$lW bk\79n /}E%kV'& :aqLbq5-o~v}[wQ8,@Nޝ >DHʢKF\"0:IENDB`radio_mixed_insensitive.png000066400000000000000000000005101323676556600337610ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDRagAMA aIDAT8S@ Z02&|%CǏP)@GcgBMpc| jh♟繆jE <@u1Cg<븮CȎ ?DC>TQ;r)D,r HFILJЧH,9hsmyTX͠mޟĒCvf8^J)eΘeqc>4W+ GZk DzHrM@䧟8&Rw hIENDB`radio_mixed_insensitive@2x.png000066400000000000000000000013471323676556600343440ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDR szzgAMA aIDATX WA1˶vw[a)\*EzT<%=^œE/`Ѳt;,MBf 3:x>d&|Bw:aVŏp_31˅(@R!CJ+@y/t:d2ᛋZvl6/jkq.W4? W Rt XgU7iv6 mM-||~KK K?i"kYnTT6:2 m"l6+ O5F=j~KNPbĆØޞ[Mp8 'OMN\beb4+d0 [r.0 [r :f!6:g'u:v=crGR?n9Xt#-)"؆}AChb\\+b #1 %9lL6b[J.mT0Su]OՀ1UmP'Q^<7iXvbSl0B?q =YK ua)8ߕ *"Fր&"2 0Dτ%lY }IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkbox/radio_mixed_press.png000066400000000000000000000010411323676556600326340ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8R=OTA=36nAH06|X #-\k5;DMtl@ :caavf8gfg٬νs9޷o\f^s+h:g::PDTg-pɌpIENDB`radio_mixed_press@2x.png000066400000000000000000000026041323676556600331350ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDR szzgAMA a;IDATX WMhU>w~^SVkE+.F VFwvw.*EP"EAp*ET Ň"$)67;sϼ=p{ϹLD!?dwμ|$t]=uWk)m9wr9 L dB=}rU5ovL{/O!C`g(c7ʾ_q|Mr߶ғS&5Ylo|Ȝ|RX?Z>{}} 2r)?K&Yl#.9 p@.mH宵`t"y `XL`Z$CM<21wړ51JL譕%W)`y$$Zlc1f7ڳ- +n+yޡ͂fm:t"/kyV_j}tPe+; ~9.j -!TCd:"|{!4MWo.?y+P+ ĺ(nPA.z_pYFa94Z^iJ[*C3c:ÍKƌ[c~]1FD{( Ok":(FS!Ȍgfx2Uk97Nf5,Q@1} 4j M"?ALʙ"*?N#(8D22E"-\k3d)g³Iᣅ؀Z!Wpm'hl_?—2d<ģ"̠7sxd>(;Cɝ=4v;1R' cYk"& G\be,b1m39|xrc|D0'` pĥ b=8zȪ7ǧRT" .`z:ǧ <@(nxԸˍTZ^N@p~1g!ngNdY]sgq 5L@Ȝ\9ybLE'sFwNd髷ڣoWv%`'sG9kxSDk_xgYXrPО1YWwmG<~ˎLt@+MPi2m {-\7X:C~Sa/ٸK8luRκˋ'{?›O_3&ƫ9Y2hRfz7dg\:64u Nbi'"1O{NIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkbox/radio_unchecked.png000066400000000000000000000005521323676556600322510ustar00rootroot00000000000000PNG  IHDRagAMA a!IDAT8J@`Փw"!o!@»_x@l6:?̎FGm{``ik C]EQyA`(:B*t %7Miw,{SP2쭨DT #sO0 _UUU QOvOq#eY⹑\U=*$I20-WV/hnYnV?H]t?QvDcǤQ3^cu$IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkbox/radio_unchecked@2x.png000066400000000000000000000015551323676556600326270ustar00rootroot00000000000000PNG  IHDR szzgAMA a$IDATX WMKQZ4Ѧ.%Bh@\tS.1JU0jlbibKczfI&w͝y}w$鮋j5;OBǠ`3b)¶%mcfBK?@ PZ-D"qN+XZe‚<777 p\Vu!h D+o&?M Be8lmm}^[[;)J ySaD18 fL o1adiiigoojЬ݋FFFF1DULefI\#_8;X,l΁ID$ ^ҿ5_^^ԫsb# pO҇&ްgccc5MT*/x5іuGt[v B'#(q>l8:::s9D=l 0J@0"zR2v7n1J:w@dss6%0@K&ud1WKzQon4A ))Bfp ك?Ƥ~ 1Y+C[[d&+d*[(b-WD"OET h/^UlX Sh[XO59׼J{b0&OcCh N[1O>; eA"j&8b@= qx<縜|,BDTC,X6Mw;W" Pƥ2\%A "Y0sH?wA>TaIENDB`radio_unchecked_focus.png000066400000000000000000000007171323676556600333740ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDRagAMA aIDAT8c`0_%r@ d2eϰQ@d=(߹~|;ީUwϽƩle9B$dClf?  Ha*txfX쟗;[zL 4ĆSٰC]&O?~ ! w-ȻJ@| > $@ ~*`B }3o񥷀bnMரS:&YFC.H=&faj4`>n&vn{`"d(A *gĜ̩h<!*-Ǭ9 'R#,IcO4 5Y/ +3$)ҸYIENDB`radio_unchecked_focus@2x.png000066400000000000000000000020371323676556600337430ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDR szzgAMA aIDATX WkHTAȷYDU&TPB?ATPԏ" J4T0J(BͲ(r]MW՝ιښ[h`9w3\BBDzeBFF)qX6hD6J rw㌱roJ6nYD#%cW);Ur{U" XmKN"̖ uP\@TАO[a / [a=m%#o>uxਦqB|1b^`M),(EHQ@[ 3_PX]wө7n69zsD4& DL/{;c S\ h̬Ϧ6(>2{8?su2y1iG |lv\It^).IuF7kquϵC<=;gmJ \^,@`;\IĆR/p gFDxwΉFD N\%&˼eܹR8 ֢gZL_sLHDXq~[lb B܌:i.l.;![¡4ORN"`Z꫐ڴ<$%ŧ$Ꚗs(ُBd_pr:k6ΞɝIENDB`radio_unchecked_hover_dark.png000066400000000000000000000010301323676556600343660ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDRagAMA aIDAT8KKaKČhb+R/ EK]Min RF ]Fj2~g<9gy,?Uy) eMEF"4~>py= GPZCZ&4K@`Nma+7\?mU7OncO,¥ ֦ɨ-ţJGI,B $;bCy4zRk{~'"9\X?hz:s9 >7kO>k^șMZݚ o)G:T<ѯ:F 7d!SMqΨz2˳=B A=E 1Ad6D9|({b IvMZ[,Rivml{.mm B=E&4ذ<\< _aeiVtoNL@!se+J4~͈lL/b/FC%"4fȌh C6#a<1@K8FDj`wf:E2fa|$6plGM[@gx?8SĽxveض %A7N}xmlOkx+|q|u2&|'K,!:xry Ǻ*Ź$NN>pj˼ây1ȫδ4C(ioܸ0!ɬ[Rb&*Omjjv=9DJL)J,{t.-Ωk].E$@+tdo.|'>Pk~LE[-/:sEgnnEEi4>UL 4vCRFwUpϋ=yO\rpywmk8RqXvM&I FQvS4?jCYw,,\Zg7] $q\8ZBwjI Nlc@tDNDVslsL~FbLI](:oAwO O}|[ktcbL}UdQ݂/EE;8um`?y-~-0"g HFDZų?~K,TW/8G@PLGi!A))CMAป Ji[ ~J?憟| QXFX{~vZyt1?tpMB$D`R;XNi<|C\\G{$({ׂE`K#ƒobH@͛.IK 360gn[ ̥j'T|_ hvH ɺ;_?Ss6 u9IENDB`radio_unchecked_insensitive@2x.png000066400000000000000000000013001323676556600351540ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDR szzgAMA awIDATX A@e-uAx)؋x7W?IAh)3d I&ɼ̼Qn1}?4+q/߉R)i 'ADYV[TBȃxY\rc6Ee:j]ufYA\s_,_:G_(<ZV0R>%\qw $GN@*{I/@r$DBN,!D$ʅ32$0 $љ;:u*e*tW:9dbUT0TN̾Mr4QvqPZXESLɏ͢8C R%(~,s`eLU42;9CrBgU!`E[Uf{)5YBó=E< Ӣ̦L>DUfP$I8l{s}֘_|*/Et'q=ovA;kk283uv@jo6vI:çd579l-Ǿs<~&X,XNqvL y^nwh>%m* LFBfYlRC߬ѱaRՔ_.~1FnEx->oK1Bs"O ?\VIENDB`radio_unchecked_press_dark@2x.png000066400000000000000000000026321323676556600347620ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/checkboxPNG  IHDR szzgAMA aQIDATX WMhU>wfkbhB41e AW.\ nܴ]tEpcɦ]QWH S+BĘ[mkZ5i23;sϼDSns9̫uy'2V yxs2~62y񰻈~#7R?˖^FAAl7˗Mnho,"O3 &ԤucIz>~<䮙9s-rW[2Us,&5Of#oY{ɹMN\x՝da]Wdr#%ı:8]* >R7ȗFSjliPh4ae4bLb`|= u)o<.jHQ1"^J\ZP@  x2P ݗ3uN@) t)TEBfJ pyhdI&C`5!, z1&A^ڐEȯ$m|$$+Lj"#T[MA6{S!DmBŗH7IIK[I@8xR ]Y? XL1 |X6D,a˳ zy-I$Z9~E4;n $[`}r@j'(Z xVUf_"mǏ\0Quc:.q/tN{ "$1a5Ww~_2Ov"R3Wƶ{'&Cx8䧩ߏ^g$7FSN : C:#Qy=RCrXpӧFy01sܾ}Wt-w>t_ݎcD`VLODxdl2;XO]~`b51J=I!=c8Cg{z<#i2?\>xAҩEXB LAEp }`ϣ1fιADn[6YL'&CM΍%#ɉV!e}ȳ3.KhhVi@T:, XO8'y+ql#IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/header_arrow_down.png000066400000000000000000000002561323676556600310460ustar00rootroot00000000000000PNG  IHDR Vu\gAMA aeIDAT(c`FK 1L /(&eʁa @|ܹsK@|@iK5"+a MP`d " 0NIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/header_arrow_up.png000066400000000000000000000002721323676556600305210ustar00rootroot00000000000000PNG  IHDR Vu\gAMA aqIDAT(c`(y]RRR?~ Y bFF$ ҈ hRs- R $))yŋ7A61cbb dĠLx4 &OIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/slider/000077500000000000000000000000001323676556600261265ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/slider/slider_handle_focus.svg000077500000000000000000000050401323676556600326450ustar00rootroot00000000000000 slider_handle_focus Created with Sketch. slider_handle_insensitive.svg000077500000000000000000000040721323676556600340130ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/slider slider_handle_insensitive Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/slider/slider_handle_normal.svg000077500000000000000000000051701323676556600330220ustar00rootroot00000000000000 slider_handle_normal Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/slider/slider_handle_press.svg000077500000000000000000000052001323676556600326600ustar00rootroot00000000000000 slider_handle_press Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/slider/slider_point_handle.png000066400000000000000000000011001323676556600326320ustar00rootroot00000000000000PNG  IHDRw=sRGBIDATH Un0LB}qG~jտ|IC 8V%?H[tx#DZC8t:Yg8[_,/|kr(6ۂFd2yIY'rk( r'0րf S:I c0HƜ<% ur6$n 7@V.}{R̛Oa㡐1 0Nd؞ U+rHde^%:R78+Yp轵"3cWA8] DkFyGEq j1?hl+Q3't:f$$Jպ_Vz^4;֨>4~hCoRW=brL`nlAr4{'FamSvvAp\U8e+يg:vȫ@!`riH])M(~4B,QtG44N5B"-zXv~*ϵט'y>0Ti` IENDB`slider_point_handle@2x.png000066400000000000000000000027541323676556600331450ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/sliderPNG  IHDR00WsRGBIDAThMO$UQ0 G1~`W`E5jb&nNLL@cFQ$& cnߧR].$ssǽoݪ.w w(EISSUI -"1SLK9_&'w^V/%1Mr9.;32E_\\J%MgwXlW4@.rɝJ= ;0888[9EmEV |RDZ$ĘɺvYŹnڧӀW"߸, @fꌅǣ(͇ji.̒֓>HXCNrS?۰5e[bcoOSj&gy>rmJkXdA#C݋'a +-‚lC#2YO٧,@\'h85x"T +ƫoO'縹&p]f.h@|=Z16u% CzXhhЖ_IYI v\$w*JR iyqENO 4<ys|K݁,i~Dl%X'œ'a&Id38 :9Rqϼ]`[*AS8?$x;tQ`2 TL|4 t~/?87t;/o(j :#((1a@"fQKJ[[[J!D:A(NJ5t\Us+Oo_dN75|.QQy2PjBiii (Q@ 1U.KnZjwTVd'V..+3>R{h\ Es)xH\9IENDB`slider_point_handle_focus.png000066400000000000000000000011371323676556600337640ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/sliderPNG  IHDRw=sRGBIDATH c`1`D7?t51?8<6>3# 5W1¦.gG/_|O4pp1Wxf,_Lh1sb`)JcX@Yീf}@4Z@(0AP^t ֕}t = 1 yF.rmoٔc?oAz@zt A*mVoRr Ak}cBVDlXkn^ E0D -rsý?pYzK\prQ'?TJaAD Kش缘3@ ^ % 0ɸ' .z{?aAwSpH 9h]*.F+YJqbAC@jX53|=zD9P7bb?:E1\Ԉpb jyW@AAӠ}IENDB`slider_point_handle_focus@2x.png000066400000000000000000000026261323676556600343420ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/sliderPNG  IHDR00WsRGBPIDATh[LUA#AbTM}1ꋩ414M\J-j4jńjl!*PӪڂPiar].;s{;gvg/9aw]K[n׽oѷ &hLkmq`zzZCJT+nPqQP7e=4UT)Ă_}36fMel'4:LEC/T 95<(;pMx0 _zscf&ؖ0 ֤o+z^?tĢ. -W"Q h9S sQ]^9 _SG[?S%p>}f@iCG3TQjY&J1ÈW^S{t%@Ehd_zKbQ%-7hUe^R=aCgJV ƤuX}MP}~-I` Dz+̙;9:J'XFU>NT& aX~Ґ1=&!&deӾϫd6:_2 ȖzoѽL5wGi? /ƃN* `R ;Y/¾7NGkEWۧ-d:t5/x)^L$BKU}ޏ:BiJi* ,C#B~ _0X0NS_q1 ')vJZWc = EX71J8pr;L&g'WvnJ6iL, p]Ȅ*a.'T;P~5S N,\wW^X2pL"Ŗb7z#7J*ltqnD 8[L#fBBL:k/Actd)' į*///OL#i&mæG֞rDnSI2[)fI)<׀86ԧ[gV2 zߘ8 3#{79`dJZ\$dRtDǨfv׻˨ ~FTVMP8Hv +~&^oxFh8G8~GHF u;&$rJ#Q$NMOME< UdAKnx`IENDB`slider_point_handle_insensitive@2x.png000066400000000000000000000023771323676556600355660ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/sliderPNG  IHDR00WsRGBIDAThKOVH)Hl6iK UB(iX A|!EjO M.i%"a a<>t6s;Rhʐۖg񵤹#ǠD#KIA}X`ޑRX,[GgwUQE. @ @dA]|J'''?vttEo\.wvv>iR4o&)PsA0wRlN40' kZ|˔d$-TWh4 V݊ ,ה25YSe.- =],aKQ'uZ0mc¥r+;C B귁;<<<?]]]PNI-x󦦦^V*+]Ug^ quq]P9ȅ.箪?-.ƫhZa]th@A.rJ#wc<. Cq EW`Q{?88x%WTsfff9J%\gszzz9#Wb߲ / qkK|o"݁4VBz*5 R|$QwJWSxlP;+?o~~~"18vwuD:IOpddk-*)Q9V_p|&h<+DJ?:^f'9u[_RO`:0]xx*mmm=xdVss,M-6 \7BCz=,6Je:4~V Ihᩴ|%q=6BRGŹŎդ7_Q ȻGGGN( ALΓ") RI5rlݠߓDXqu^C$hISo{ GՓOoF(3_MlR;Ւ "`IENDB`slider_point_handle_press.png000066400000000000000000000013361323676556600340020ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/sliderPNG  IHDRw=sRGBIDATH UkAٺ1%Eǥ^,/  QiXfQШm h06АԦc|AГl1o†\T?a0@Hܯ"qB}857cl^=w; Ap ¢F]ɰ^mH3hxԗeqy̕ҁx\($0R]V: ٠>; lQB]NfR4]~X WWM̼O3W>dx1W9ȕ$Q`Q{yF(g WXF ϗp, csi ޲Y bb9љsȵB6@55a`T%baiFxamb reّl e@1712"YΗjr|(?8;&xxqe!ѺQq5e|a7c{QT=μ dD,/&=u[gGT?D"Iep6:ݣ^ ~4(pAP`Š$R2QuT.Jd4*}+@UJ {۝m8ϽvzEѫM. :{"(/ ES!6S:㽸NejIENDB`slider_point_handle_press@2x.png000066400000000000000000000033521323676556600343540ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semidark/sliderPNG  IHDR00WsRGBIDAThY[lU>gʶt[*7E71BLC1R@'@LaA PVE 1**@ {n{sRhwf; ?soߜelT plL2IΤk֖Q |Kޯlِf"Y%%{.= [\"ѬPyƵ)A{VvA~|no+KR˥_#GS2i+z[H1|.oxɻ%;ۦ'2q9,95~M XZ1:mڔ |1@&`UM%鍋b"xNl@zeUTYо4]y`+Qʗ:~V X!1X%psb4gsn=5t0gsn=5t0gsnm-ckPi2zꂕ5+kL܂ l|L@$`rfJaƼ$f_&S|8L+㫙p&!["kC3a}NR\/4}c1X&@QtnHvEXdqPmow-ɟ%O.jw%.%8+,pV~ tŠ幗4zg ki%f̎wMzGsatӿ y1jYa)ELhZ=m?-U xHTQ[e/ULɚT3(hD[בn.E!1%Z0>%]ZAp!%QĄ2ZB\6aЪn]BHQg+* ƕSwTZ*R1'v!:AKҒ ^ j'LQI۹}ԅrjm2-ye-(k- 3r|UzEnpX%=Z @s m`>,ͨ)A6fjLtϥ-/8FsUA6`J`z-^NfC N,E¸ WLMh!AnX%\Q) ?BGd:U'*3 `XI'qBXKStI.Rc%s\\sm,P،q5Ӯo;OKx'Ң_ҺGi|sUM*5z (|HT{"#8pRamE'YSԝW;;$\8P)q畴%*=JT:%:*:r`5{@SA@FB}o_:oYD}k_gc&fIѭ<&u?kmw 1bLa`.}1qte+9ds#'PpCgkRsϒ3ϓN^C88Q<6Bk8\A HJ<)EǿgkP:J$_ (p6=w>~O-}항^]E3"ǦoXݹRMRN&"z`:*V#EupoIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/000077500000000000000000000000001323676556600250325ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/arrow-right_disabled.png000066400000000000000000000003321323676556600316320ustar00rootroot00000000000000PNG  IHDR /3gAMA aIDATc`Pf xXccc  FFk, 6ٳgeee?^ZZ0"k755U33&d &&_ ann./w3ϟ@v?\a*Ap@?IfIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/arrow-right_normal.png000066400000000000000000000003011323676556600313470ustar00rootroot00000000000000PNG  IHDR /3gAMA axIDATc`P6 n߾ Y%%%JHHs  ȹd%$@0􉑑/c066v344tD ~As*?ia4e.}IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/arrow-right_selected.png000066400000000000000000000002461323676556600316570ustar00rootroot00000000000000PNG  IHDR /3gAMA a]IDATc`hdw@"C'Q,0파k:@ܥ &?@,ro@\M Y@al 7NKIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/check_disabled.png000066400000000000000000000004171323676556600304460ustar00rootroot00000000000000PNG  IHDR  gAMA aIDATc`hnnRˆG)##* &233o={s&l&*rdbb:RRä/7OΝ;w &asOcccVO4 Lf:ׯ_5lIII [ϟ? H3?ʺ*@顋m@Xu~IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/check_normal.png000066400000000000000000000004101323676556600301600ustar00rootroot00000000000000PNG  IHDR  gAMA aIDATcf}x1022hTgddkhh p*266Vښh<ˑ#Gރw7.\Srl/_;88;H$hF>M 4̙37Q8@2ՁCΟ?Y \EGBjSaIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/check_selected.png000066400000000000000000000003151323676556600304640ustar00rootroot00000000000000PNG  IHDR  gAMA aIDATc`Ċx@Z3T _@lO2P{ .+rxX&dsE ^ @i@|y@@z1_ኁ@|q1budPBo1#a dC*t/IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkbox/000077500000000000000000000000001323676556600266205ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkbox/checkbox_checked.png000066400000000000000000000007371323676556600325710ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8S=kAZ\c" ",DRډ`g 1BQ^Hm ~@@46r nxKBԀfgnvُtTkͷᳰcX H~r"H۶}oX,7Aܰ0LDP6 ȡd2/Lơ ['~j%F<eá7MUgȦ}  \׍>9$01N URI Llۺp\Brf̀Cd,|^\וn+B|t:bf`@V;a7^?Pb:`Vkx,rY6>${%EnRy<x0&֠.sa0c$.& `pIENDB`checkbox_checked@2x.png000066400000000000000000000020311323676556600330510ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDR szzgAMA aIDATX WMH[A [ 9HAo *CKK/V^ %Zb[E"z/zkl̓KE?ԟm|MjS;33GQnnBnH-t\\ssBxϳ&XV[ tƅ La1\\:)gSNNNA xT=`b6ucccyj0nJ1^o888xÎA;1==Q@l=8_ZZzl= 8[[[d,+sid]`y_\)/@ЋwdoVCs̯٘}E[Vdw@]#NhAFǽAND6n'1̨~effBn|x-.< g7˩TqpI9QH \ש!+pttDMMM!L& l6zb yZZZ9JgD0F lnnRuu2OmhbbB뉟\UD܁}Z[[S fCUPEE* )) i||Z[[  , j#6pYE~|>Njz{{ť#`IIjC\`! C j[ZZFV ПWq.Zq(// 1CnLc``@ ~‡he¬78U])o_xQ.kB Bna؅oH7MIENDB`checkbox_checked_focus.png000066400000000000000000000010061323676556600336770ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDRagAMA aIDAT8S?Ha c *&5%$Hc VɈFtiqdFc E!h$I2ƹY,p0D"AbQUuL`CqhZP.A:y(Jx8-tfrARaL&PBXx"Nf T{հ;oo97 w=TQD'~Z 1g9cGXُ=6ﵹ?P)9/<v7?TIENDB`checkbox_checked_focus@2x.png000066400000000000000000000021331323676556600342530ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDR szzgAMA aIDATX W_HQ?w̜Z(C|LM3|I=HABfjZn0D E-Aa΂!'%5YЛ!J 2ݚ:MoϽwν?8nq/777$?HY-nGt7==c߱ܜC5,%=~;^R뜰.!J)䴴;HG3A~+I+h~g%hq+{ggg'x+0XG}ڼ~$ﯞN(!T褞Fa.:L:ڗ5ͅY'r $&%s­CH@τsTΩ=-{A__[tL ?m\ ```ະҿCO.x awP[[ ĉ~cK0_Z@+@q333(چĄ3ـ<&Ų2^Orr&MMM@Y__ J ͸TRNN<66ơGFF`mmn5p: ?@8TT`0\ONN'%%UB@ @mllr%%%!XEE?l( LG⇦`7jaa!OGww7xJ%oM8H{^^/R5ޖcb>.72~/)QKӿU}@{I'_|U/I%b>mP4_oWӎvζ9OXpJ4j+NXފ6QPds3HAHrrDOd?nPdKsfXXT_ XVT~셿Kgh<IENDB`checkbox_checked_hover.png000066400000000000000000000011231323676556600337030ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDRagAMA a IDAT8=hQo.w~5QD,-Zh4VZY'Fbi҈"(`?P0h''8{@q`?- +ux +K88փ9DRxr7v4ɍA͞B ?DXbq,K礧cD~*50a2OҸRPZ44[,wG̿7 ,czc7 [yK}(5/շprVzF5h~s2%_}XެE`{10f`-ȅpqQ|-Xw< ǟ8/xQlav[)KnՙMBgNL-KygOBX:sN8.wfm]J 8 >yqHg4a  Y}Ji 9j'"aV^ W)%d;W]+ :BdXbgF9IENDB`checkbox_checked_hover@2x.png000066400000000000000000000025301323676556600342600ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDR szzgAMA aIDATX WklTUνlBi!V Vb41i4((|G#E 4O13DnдU+mR=;]F'99|͜woۈ+œZ֏jV t9/b1w&F=1(m}xz#S}^N`wD~)[2 thjwn pAJ#ꀺ2 c[hBRJIPt v~M)/|wph^-zZԸ#,+ȇW g GXԮc8DwWFζ&V(*Rv+3YIvl?䌥ujW̖g2y/Tp*Lv Xp8_0軿Wx OޭȒ@}%O;Ӷ!jry_79 %^3#)xY oeM"%I&62ЩpdМwcl",p)eIswdܤ+hQu `BdƣWu_pK08cdg("DiB۔owR4yRKl ^IyFzW.l',nPx`Z7l nXE .m2 mXYtKʫ =`ldAFUń̵)xdžk;kQ(WŰKF^6,'+ 7>qg:ykF*hQ_أ}9p^9WK lW`;M& ClZjA1'?dml' FbKg1 C9B pq>=[Im+A|Y!&)Hvd]@.7Ǔ0{`8_ 8ӧCΊ;`}Ok~$PuʙO>v31I/0@q)s}r^lSbKQ:iD܊GP/Jw4Ї$nBT =Wqqu:\Tg0cI P3pkvl?hESzDv<Na4I#B$23s0D_4 !2£G\YS]6YfIENDB`checkbox_checked_insensitive.png000066400000000000000000000007601323676556600351260ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDRagAMA aIDAT8S1kPRTn-.ƹ8:8(tA \DбH.ִ}|w{#-JQ+1FEta:Db[ I,f/ øm;:A,_`^F1L@l67`𔊼EirZ=p m& 5MA8џzE<`5z*_c>t:d2N8==`@k * HRv*BeYP,CV;s7& Z-0Mq<4 Bn6D\@ v۩+ H8O`{t]\.{ y $X,>EQ|A8f[+򆉥)`+rlB?G̾P;sQ>hIENDB`checkbox_checked_insensitive@2x.png000066400000000000000000000020261323676556600354750ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDR szzgAMA aIDATX WKA$b[h 6xŃ7 * >N"xQQ U"#&c$MOdgvg7;;_Ңn"Hf+Yǜ gXʞAg(n0V777O&V11g2' SbSyy#~QFc@Cz)d6l6LnIIInFFA1Hɶv͍}>{]{<|,8"eb +Ų$I$vVTT<6p8^r[~Vt%%QpdMggg_Z+C@\*i=>y.D#R/..ЂV-g#000@3JƂ; @ނȱyZ[[SCw (Z3ETWWGՊDR|Ӗc"pFqq1KxŴת(SG###.6{ZҔhqttvvvĀN99X;kQcccڈߐ(xq33|xxΛ1UGCCCj"^27ٌK(5esuu%uA6QA=<gUXXYYQ}VVV B ψ/[ q )++KkXW6F9멪*?юæ&T}[ZZT=-tZ[[+crr#"tleQ"@FcR|b~L&X\c{{+(YpۭgEpt~~0m |r+;QsGnHbj _swwn,Ar L '4:LȬf82!+xʬ̩5iaC}a R3 Ő3gO>IENDB`checkbox_checked_press.png000066400000000000000000000011361323676556600337200ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDRagAMA aIDAT8R=hQ޻ۃT("$B $!FAE+R$(h#"%&v$H@v7Wٙy ~zhvzOhPVEw΅Sa*Z__$ rJ\ 2Yt~=憶c}!Gާ'AߓqW<'l.6A`@Maf)bǣ@0 HXUJK_KlqL/k?7M`d<15yAūmLPT6X8r^o`$RӭqWt6+ *bV@ 3frA2Q6-6$ŒɨuыxY7[VcbzH:|44>,z+@@IENDB`checkbox_checked_press@2x.png000066400000000000000000000027371323676556600343020ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDR szzgAMA aIDATX Wmhe޳sq0XȲ>)*3+2*,+V ѲSF*BAC"(UQ} Yf|<]>{W羯xߝ7Yu.µغ#SFVkKp@sh;Uep\ G9YmЍ9-Q:z+x_+D*gdHJ.؄m(Nc;=u]”R6]ƂڢG Éx ~~FPtc;w}w}X"_:)yFێb=R[oW,J!1gꧩi؊Pm*\&*/F7aP$B`otcd枍G"T!ݍ{NXHL0TNJT.1 ` j#t_wCz@ Vxadʹx()̓}nZ+[Zro6(-3=ΊC !0"t '+`-TXq=H߆iy ~BBƝ?Ua+; 289ppH%~kWD kqEp*Iv 1FO'o *6<7glB)Kvxזs7YY3Wu]qXs 8"FTaڮd}JG]DگVr ^Pɻjw<2]hâA-"1~>glŨbtw%KNC-?6ӁlTaBedô.^lg݉ 8Tb+ ۸cXLBkCl?ܱM[GYM`}Yh#Y XPfFӆ"k~ }CćNwKh!xL*l3'YzȟU$+_|"!ÇCcMY Cc>TI@s@d熠%/ `ݻ Z.^0ULf @] L`@g @)ZWaԄK 5X/ &jV?k!,0o.&P_Ty{L%ٹryIENDB`checkbox_mixed_focus.png000066400000000000000000000004241323676556600334220ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDRagAMA aIDAT8c`0v߯F&33?Ll_ 5 =pWxAf = @\ qUiîj`hhWX Q?`L4 ;H<_~98R R (mgC@j@jAz@PƸf =A)hXdIENDB`checkbox_mixed_focus@2x.png000066400000000000000000000007611323676556600340000ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDR szzgAMA aIDATX W;N@5cY h (@pЀBr 8\"44,ACnH|Nd+xgA;I*+*>@qZ}Z,iDՆDV(7z _M&qmn]HD-OZ%^d{ ]׈;o tLp7d4VIENDB`checkbox_mixed_hover@2x.png000066400000000000000000000015761323676556600340110ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDR szzgAMA a5IDATX W1ka}{39cFP !hcMBW!A4B C9Ϡ&:oݹۻ#3;f.tq-ĵ4"ܨEXHs81=õ%"b S\ǻ0[_aUVoEaD_ ONWOFa+6J,QiVwx ,V{6N[ˈL:qĈqQzf<2NA""9r0yݔ`^5|'A"6/K0<dz_1Os7aJ>-xŸ &)7} ?Q)["Vdb}ؠhhSNS,כs%~C' HDq|\FLh8M`\j ˸+cK ?Noo8k)e-(SXf8NJ?VE:$RBhY'}qFe\8Щ1a+y|~ħg@MՌ^ /}q.}t>(_ #",ELe)?(P-m~-h6j؋^+($8O[PqL\̧f"?Κj"p{Kt tp9iw ņI YzR$L`xsSmm˹tUCO[g7ͳ:A=^MDɢ)[o`d[:fM4dX~uKJaKAJB}6͡he 2n`\ nϐ^:djkTcӞDǘRo"D4M7D7(@ݷ %4qk yib!ۚw g Zo'XPoe1FCu9NM[n <˃[^z).>WsuB#b|S PT:_YI&jמy z\X<˧ȅiQ!Z.n #P޸0nNta[ sÑz<(ХpBć=s9  zsCD`=;: _x|f@VY[%b[ ̎@zèm〮YmiDh" ɜ .4Z|@$ 񼧽 "⪡x,+hi@<5?dP\ǁS^"Obޗ/ ]? 0|ywiBSď(JA|`Hgh ugVގܸkwM <Zεtn7{Wklq/_b&k$G cO6l;%/ `ݻ Z.^0ULf @] L`@g @)ZWaԄKXFũ߿uPP$ OHӗcH H-P/(?0P-3 # ySIENDB`checkbox_unchecked@2x.png000066400000000000000000000006411323676556600334210ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDR szzgAMA aXIDATX Oj@Ƨ]h).^Y!r6@ko*HV2twΞmCIENDB`checkbox_unchecked_hover@2x.png000066400000000000000000000015341323676556600346260ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDR szzgAMA aIDATX W1kaܙh&)`6 6;`ge+iCeJP kAēC9π&fnNB#{ff.|4[n%HjH))&$)i 7ԠWI1]|&Lئ%Eݪ䰑f,j W}Pkx@mӴn3&N} **_l7뙖i26L |]/$> !Hsy>&kMy -\$3€3٠?kuNpڢ2Uc, Aq,Ud4=S2e /Ӽ1vp؀)DuF 2\0cӢ8+AEȺυ%݁Y>=/ܛfTu(11rN]8) T*g5pїذa,GPe>D*$2bxh6@ݯYֹc^@>zR/3bՌ"7P#'G34?,?_tyVs* -~G&-s '?*H<(F GK-G{ i<71TPX̷0*a6>|GMPW$'A-&t좇akh+zti h7p Ci{{/>M5X2]2wv'i5lKIENDB`checkbox_unchecked_insensitive.png000066400000000000000000000003461323676556600354710ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDRagAMA aIDAT8c`0B3ii b.P-? .; 5 = 0$A ]s ACՂ 38G ``N<f_@ĽteY&qFoUU22ip"D 9wx8~|x5)A*[`⡥(p̑dؙ%/y+ nf ]oqX#(AQGC~@oƙjo;PFm 6 qkyqGJXmMyy 7YD>94_o.(G>>hnmT'<O)bc8|WSx9֦U"MNUZ1 *?bb݀tb8S߁\gm 43_Ƕջ8"|WEí;Ht~_ I*HX ba[G)Z#HZ_'ښHp"l^:NҠԄB"]yD2G6Jp0Q0#&7f4&z22|"'@r!O=6<+gVn9B2?yد`aN΅1YbvMߺgw2[k5ﭭ-zbx7s31cgMmכ.J{ޟs l_ r"KX,[|lPvwvv/mN7Nfm ؖ-/2G`(Xn_.J`){1h -MOORP D"cΌLm]Đ1DyVSN4lU*95$0eYշ~ YQ4+psnkcR):& +@JlU[ؘ}[Ăp*@*l% ۫ VNllL/qAHR2XUye4^5K)bA%[~}}hpV6LhRPsnE1K@V/}}2$d#MmMĂvnBcx fffhuujQӡ) H$(Ll\.v|kx-ҵ_FGL6s\aLX6S?ZFLrqormkF$ "M+}ZʟV jt0_bXʣ6M.FvL\iT-52IENDB`radio_checked_focus.png000066400000000000000000000006151323676556600332140ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDRagAMA aDIDAT8S-O@8 A9j8U G%A N)(ץo4]H:N߾ۙ [pgVYqLxЋ!,/GUcFCEzc6imlwT '0ʛIj9{x8SG`p-ۉ>'8B&_S j) Cr]r`pL({LTq$]e |b1+s*$y1xEDyZŘ[6MQ異>* =BQA6RV py &/Ozr8IENDB`radio_checked_focus@2x.png000066400000000000000000000017241323676556600335700ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDR szzgAMA aIDATX WKTAFJDIԋX զd7 O)V AB_R`Z>D;VϰWgk >ԁe9w~u,c,1*Kna!k%ԢP|w7Qq#h))ŲJQ98gkhU*uhzwረkف=U`+Kg ~*{JK\m'֑Rfи/o]iB8=Vfp^;o+?}Uy.فDdq=xAp\,Uuen,&)ƹϹ赑0, qW̜%7F=W y%oyn1.X\Ɛi{eۙtÌ!jā\ }\,`bb$LPq՞)ilhhMMM`l544\Q/.P2+ 2 qm1V+8A,ɠA l !/v|3ap!C@#(#idxx& JD6_`>CD6#zUϭ?* 92W?:s5s}tIZO) b.vb9gwnG%^9J4&^^)r07ɮY=Μզ|biNaxK.MTBZ^![A H47)c' +T7G>C,jܡqw+ulDk /_}[y& ү#ݭM#D#AE;ZE%N2oONHIENDB`radio_checked_hover@2x.png000066400000000000000000000027511323676556600335750ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDR szzgAMA aIDATX VKlUt)tBcy15DlxMM,PDݸbA  FcZ`1,0&"-% G->}f:uʓ=u{u5oexan 6G ͷRWFqa|&YHa~@QgaS)t[5܊WӨAJr`iEE`nsrd`p̢A`dќ^lmF_>" |Wo>Nr@b{C?p)gśؼ~Ensi JT2Z2P)J/S[`$E"'e:܃iR?8b `BN6&۾B5 Kve;Q#ϟXjr e".Ekk-gr L"Coccl㜨ņ:.,0/~rWKiv )ǁvM Ӷ0ҟl2'Ij a'/czB朸t]D63;eRޅG ZL5'0 XVgIV;p:#&J]$1o"?]B(հBLiK V8NpqTÑxDzݡ|ԌMxc4eLLmN1 N"Lr_nEǻdSؿ幇z< h$Is׼$+5홤F< H-ϑH5,C7M".)O3IENDB`radio_checked_insensitive.png000066400000000000000000000007231323676556600344350ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDRagAMA aIDAT8Sj`hEJ34]Rtsķ7gWW /G(hPD7R=8E?Ja*ɮI_H!&M2f~8>0ωw+ d2)O$Nj:[,a+\ m_/bn'WP{9'A R.xܳ\._Dip#iۢx:z1: ^RzD"fxx8}xxx\*`X.S0(O1rez\0Bd7P bɽh!Emvvv|hhhLNNiر(YS )7jznLRj+Y__7$"Yx)O?{os8 λ |RCV,ʬ0zAڃ\smłP  Sqo+kK:Yp~ʷ?_@24lNUX熮Sqo+E}pAbNE?0N! #]QW®bfS5 t_vvA9e пPq"ǰ4}O@竫}^U,@B_e՞qN`vvlһ}ZWʮdkLty tMRIIENDB`radio_checked_press.png000066400000000000000000000011061323676556600332250ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDRagAMA aIDAT8R1KA}3KN4"Ę$$.PIڥ$),- hZ l 1A XXewfvgw7s2MOjSx,_\/``bG'ӈE++9Ye5ӷ[(u VEܝ_svN)NPY!70q)6!#PϞb@LF 8Ȗ;qaƨbe&?ƀ81q\,6Ltdvi>$3Bl2JFxxoSv?x/V&:`B9(WZ]t<~lĹ@(_Db>%O0naf.w;hZD̚nkݓE8 -sxpzq ըa*jNۏV')d BW!WθQC5k_7ykg_짙'5qU@\rg%(,8KΊ`þ4d IENDB`radio_checked_press@2x.png000066400000000000000000000026701323676556600336060ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDR szzgAMA aoIDATX WMh]Us^SĚ"vUTDTэ. ĕ WRpFԍPRTŠ ԶRkS6i!!$}swkNfo9?ވNdW]~ob<P/_JU2=n&)R)-LLdɏqE^ ոe't}Gy/P0`, Թ/y]찛 ZwAq&'}]zJ\345Y9Ĵ1"'Jlםϣb)%bUN6Ylac K4bIJy":]vvgAX. LIrL3xnY˜|GI@&Lm´R1S7rb4Ln Z@[ـ`r,cYd#[VܺwY}b mt)Je[sp)ZJxw=AS=[D^,2ХrzFd70-%C9-ߛ[_.y&6"4MDO` y*pxh4 J@kahm'!ÉEh[6Kުs!yܰP,O/5kƦН {Z!V'۳\M ؔ"-aN5Mq1W ]!0_G[0&Hm?b̬n.~_8v29U[׮! )Uk2Bd7g,Xm=9#6D-ʥ(@*_/f09zVdVgCTWn1=A hږ 005á00ô4 Ib،û Au#m"⮷uoK| ϼ[BF>3 ?<}͐űPӺK`%(npPx1Zb,@sSxD꥟FbӜ+TGB`FB(.ǩ>!t*u^?{ru_EH!Z1Sh߅ nO]t,-Riu5ܹp.&bAV5O{e畎f.(B%83مFu\߰mKNbn *\rvvԫ/>x'/b@6Ė<̜,#|V5J[ -0B:M̧E@Gw }=cEAmtRtskgGϗ&p112{6m~j+4}6oxM[Ǧ 2!p܊ CxyYIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkbox/radio_mixed.png000066400000000000000000000004431323676556600316130ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8c`0bbu ʿ7aSܹsǏA+Pj|8H i RR =pr"L!Gn #OBa @= @ȨBIZp @`hhWXCn̝;HPG#$)FRRfDA!;3!CmsWtCIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkbox/radio_mixed@2x.png000066400000000000000000000013341323676556600321650ustar00rootroot00000000000000PNG  IHDR szzgAMA aIDATX WAC [XK$7\a %W@e ʿ䢕9@.zhb(\w|޷/0x U@!~),h;`{  q=r$* JrT*dGTgt:vhd;l~aSs0`r9}us ǒx 8@ cjc]_Uqjo~q?Fr ]~m25u¥&d2uLj\FM"kپgr'~In(X7*ɰ nE 3͹E!NN[ϯ5 n@"x<籺cNsF~303Aj@jAz@0Aζ` pZ ?҄.R d@Z`花j1v.CCCb teʟ.PhZ?/LxFR JXp@) HʰRR ҃"OnB8)r p$I JFcIENDB`radio_mixed_focus@2x.png000066400000000000000000000015241323676556600333060ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDR szzgAMA a IDATX ;OTAgސUcAQCVĄD11])ZSS런(q[I,ĠX 4JF3~agg/r)syw/JIe.<^25s3fL+}(uY7ʬyF/.]ˍ%`d2a6ƜZZMLFf͐etexK8kuV2 /?z1؞/^fiIVU~wJ] L3Yby]{Q4ԷTMnh/5n2[lyyfDjt?ݩ{R_7>yuUko0_y%ɳtQgu2熗]i]/C~ 0p`6Tvp9#wt &5*p{]fh7,^2r9jv &lbY - 95y/9L6}Ykrʤs*l'Bn^%˶ș ^%˶~+˪X,mppPJ}qSE^%-dcM&xi_Bc?aЋ5=cw~F!9Oj sa5Y`&xmr߅MfE=O* ư<6 'Hb%` 'F ILG}ak&KMԒYijJ8ܞr+1i7NwIMLКy+ mXzGIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkbox/radio_mixed_hover.png000066400000000000000000000011341323676556600330140ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8RAKTQ73錠3aD0 ~Dp'HѪMZ%nvU &PԱ4rfIw\gm;}9 f~_F"c8Ũt\Wm#_#. &ПnLJ$R=I㒅.y`=#ܟU(-nbEn/Iu , b9̪|J#u\)+|Ví~URTOBR]q1@rdz.bLPopO3WQ;!CiQ[IGbl<3kӉ?Yd]0ON}K00~꫊_i@-9e;sU">~1m*'"{?7{b0Ã*|/2u@;n+C!<]U{fUGp1=9O%^jB™L,R>1s<#X Q6xjo`t oǧ;^o68=DZ~)yTqL,-tIENDB`radio_mixed_hover@2x.png000066400000000000000000000026341323676556600333150ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDR szzgAMA aSIDATX V]k\U]$$L&1 I!jĀ"ID}"DЧ>hMED,1V҇6iFeL:I&=u3Lon9gnfּ6z\m5y]b7[ŵ]g7i݂m.@ߚā:y&>n-wqn3!qj ;qAU] ƄAmU85ōEi`y-n1 KaۂqV[\ER9-tImq\BP@4 8Yo7HHoQiI֩8 81i3[끖p-,%P"-GLF Dȟ둬0eW2\X~ hw#=Y8GF0A# rU`;MŸ3ԺGb.M'}N˕pEBӢfoXEo9?rb3E@N. ŋmzI؅%b--br=ٗuؿ+M#W9HV"+u $SPOlr]`yf5Y^ }藛4x+=cʫqRa>aK_TR@$r}" =_NwŪ RX/¾'яضp",~L&0"+Tp;1gg9Ë&fy(#:a$nf<]64 v1<܌/hb:@ƋEgzVM;ïL'9gh%11-"8&[L;m3Liwbs-!l>INPF)2.A Cq5$Wܝ5U+8̅:μ8 &%3Wʍآ"GC@.a29.# Y4( ήjUEW!B|QJ.(!3pD,߮]؈bIENDB`radio_mixed_insensitive.png000066400000000000000000000006401323676556600341530ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDRagAMA aWIDAT8SAjP)iЍBJEh7n[>ƍ;.r%J$* -q7@aoޛ9挾L49'ؾjcAx^|QDqDx&sT` IR ϝn=!*ϙٲ0 [:PqTS_.pl6\u{i xҴvt:=@˲y XO&Me+^BMg"ѿ0 S!IENDB`radio_mixed_insensitive@2x.png000066400000000000000000000014541323676556600345310ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDR szzgAMA aIDATX WoA~%\9h8GpHLq?gz!h &ĤQZ) K%K^g|3 u7@_/pWkw:o0>ki3{#R>n"|>3H;^W4NhjM*ʷpHw JS$jx<KghۣcM85 /$2Z>xLbG2+Xdn¤*9d&LrCnInBuHRPH4 S?Ab\/g繋W!NcckߑK59Lg+V_"RXx[=~Ԫ aD<*O c06z^FA}߸TLp \X,,?=^Xy!!{XL$=pr] 4r^3pV 'VʥTWk.Y][ Lp=A. IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkbox/radio_mixed_press.png000066400000000000000000000010411323676556600330220ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8R=OTA=36nAH06|X #-\k5;DMtl@ :caavf8gfg٬νs9޷o\f^s+h:g::PDTg-pɌpIENDB`radio_mixed_press@2x.png000066400000000000000000000026041323676556600333230ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDR szzgAMA a;IDATX WMhU>w~^SVkE+.F VFwvw.*EP"EAp*ET Ň"$)67;sϼ=p{ϹLD!?dwμ|$t]=uWk)m9wr9 L dB=}rU5ovL{/O!C`g(c7ʾ_q|Mr߶ғS&5Ylo|Ȝ|RX?Z>{}} 2r)?K&Yl#.9 p@.mH宵`t"y `XL`Z$CM<21wړ51JL譕%W)`y$$Zlc1f7ڳ- +n+yޡ͂fm:t"/kyV_j}tPe+; ~9.j -!TCd:"|{!4MWo.?y+P+ ĺ(nPA.z_pYFa94Z^iJ[*C3c:ÍKƌ[c~]1FD{( Ok":(FS!Ȍgfx2Uk97Nf5,Q@1} 4j M"?ALʙ"*?N#(8D22E"-\k3d)g³Iᣅ؀Z!Wpm'hl_?—2d<ģ"̠7sxd>(;Cɝ=4v;1R' cYk"& G\be,b1m39|xrc|D0'` pĥ b=8zȪ7ǧRT" .`z:ǧ <@(nxԸˍTZ^N@p~1g!ngNdY]sgq 5L@Ȝ\9ybLE'sFwNd髷ڣoWv%`'sG9kxSDk_xgYXrPО1YWwmG<~ˎLt@+MPi2m {-\7X:C~Sa/ٸK8luRκˋ'{?›O_3&ƫ9Y2hRfz7dg\:64u Nbi'"1O{NIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkbox/radio_unchecked.png000066400000000000000000000005001323676556600324300ustar00rootroot00000000000000PNG  IHDRagAMA aIDAT8S1@Dk- c|F;J7H Q;MrԘH*GLHpe73ܠi'0#ga/Pygbaj3UUh Zo8><$EHm"sM!,8M,=9HU,65SE4MOHO4U Øz!.fI\Ȳ"|I&;VGmf]WUzb plD`[svES _lP&+."q*3TW$^w؞!vFT%ФG̐Q=lV _l#JFy gm3ɭ\.P_l tl6{*͔ZVQ :k6RFG:RNC[Gy9 4nγl!1'.cfDIHmNI$Δ03Aa!L ӏ_RL, 1\ZFJ@j0gLbť ]p e~Ft UF6Z`/Uݽ @jakkH qu|( G_ JPT"OLB:%!aMʠ4 *PRr))g`Nκf; ApWfIS5}VIENDB`radio_unchecked_focus@2x.png000066400000000000000000000016641323676556600341360ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDR szzgAMA akIDATX W[OAĠb$EhD" QGOF&hqQڥ9β--P3{v;ߜo ꅦN'*(N^d lS~&ޑzedk"P&iX 0(imPEE=qQv>Ȥ| fSG D\d| 3t4fuSBJH#j='KI1!;+tTg fb1Qgl# ٟ vlp"l×-%75w&Ӳqv ue/ժa;;Ѯ-` OND`.92x5/3i&SKU(rnS1v\h̗=\/ O XT nasjB?61Gl]r1 l0&,d $-,o¶Mr2j*rrpqZ٪oeI3_/| dx40] |6E }$mo!!b[5j? 5nPFM 2[bb[  E}8cn^͆yV`D6Rj0fOիxq((W  !#n AUQ1޻NIAyݒL0TQ*H$1l ^ mY.H`i&NԟfӐK&ic=A=*IENDB`radio_unchecked_hover.png000066400000000000000000000011331323676556600335570ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDRagAMA aIDAT8SAOSAfyڂmAbMDxЄx׋'E.^<Ћ!ƅMDH fRDcXhjyoj8vfwlgSybİ; ˝Gd7nWq[-d piJĶ.C|Nd@RhBryROBAY&!=6IENDB`radio_unchecked_hover@2x.png000066400000000000000000000026561323676556600341440ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDR szzgAMA aeIDATX VYlU,Rf:@i(-Y1BB! &#DA 1&Cb0&ꃚW5PhKM|(y`OAҖeweB/{r;bkcp♸ cMƢBgǻqNC&@b݂ ^Kx;> 6ԯքϬ3M 2I\[\N;|ׅ޿wY1$rpTF ?wYGĘ?~Ɨ7c<c'"U5euMTZK?%^Jn8xQVxr$VGRL"'@zMd\OHc.BFKHH-0.cZ&PX]X "  m F$YD$6HXQӁ$riWplfq}ֆ^"xUQoBbGƚ{|V'\kE,iER7Fl>p@~ࡍ%s,٘+^:eoF̨f9Y4 OrLR uVkr%=f e`LhhRI8ҍ A׀9`q,BJd4ljK0p'5Z'G l*4N/At XrM>R"DнC׀7oYkۗ8]_M׃P)ƭ5Y l>Z85% xᨃf|K -PJ&TKl&-WNB'+k-$nרdRfh8Xt_@'٬@! 8f"vF?\6/'x "^.Hi 6OzX1:9ODēоێvmv`k0E5P^ qw*i ~b1 ugxuŒb0R RR~h;upD-ٗ<}lMnPĊ9aaEnmەc("Ly#gh3q<yTh_ -|-Yތ[=CRFjp 9r[>8ev =y~މ$ZI$zGl}10'ԒIa:|E,z9<-0Hlt;b`C:CW+=G.rS1sgo= +6+ \2V= 4D\uc?mӮy\kBd|${"A"u{+Hd G2g$͒RѹIӾLIENDB`radio_unchecked_insensitive.png000066400000000000000000000006111323676556600347740ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDRagAMA a@IDAT8Sj@)i˒KJE^^zx<'॒ A ڠNA6 ~}?3+7 [ | rwkI^]&I7Ms0fxQm5ME"AG0vY%K˔xDkyqi@ V,5yl͹}(oF Nycg ޸\ 0K $7t&f: 5rӷ4jj|?üTe!Cugz,PM Ɵ>]yHLJIENDB`radio_unchecked_insensitive@2x.png000066400000000000000000000014001323676556600353430ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDR szzgAMA aIDATX =Q]TmHƠ5TTj~ %7!h &4&QW<י]@f?`'yso3}{=U79oDpwe _5"]A5_SwB@x_pC`q\._d2{XV$Qf9L>wi:qǎoZi qՊ_~8ύ^7)GE,͒K|>l6ph5LY*^qc^ D؛HEZ JZV{ V,̓` tž`*@cHB˗Cr'Ҋ3RTt4}mMrm-,m평-!k\2%ο IENDB`radio_unchecked_press.png000066400000000000000000000010541323676556600335720ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDRagAMA aIDAT8SJ\A=uM&A\I>@r$DBN,!D$ʅ32$0 $љ;:u*e*tW:9dbUT0TN̾Mr4QvqPZXESLɏ͢8C R%(~,s`eLU42;9CrBgU!`E[Uf{)5YBó=E< Ӣ̦L>DUfP$I8l{s}֘_|*/Et'q=ovA;kk283uv@jo6vI:çd579l-Ǿs<~&X,XNqvL y^nwh>%m* LFBfYlRC߬ѱaRՔ_.~1FnEx->oK1Bs"O ?\VIENDB`radio_unchecked_press@2x.png000066400000000000000000000026321323676556600341470ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/checkboxPNG  IHDR szzgAMA aQIDATX WMhU>wfkbhB41e AW.\ nܴ]tEpcɦ]QWH S+BĘ[mkZ5i23;sϼDSns9̫uy'2V yxs2~62y񰻈~#7R?˖^FAAl7˗Mnho,"O3 &ԤucIz>~<䮙9s-rW[2Us,&5Of#oY{ɹMN\x՝da]Wdr#%ı:8]* >R7ȗFSjliPh4ae4bLb`|= u)o<.jHQ1"^J\ZP@  x2P ݗ3uN@) t)TEBfJ pyhdI&C`5!, z1&A^ڐEȯ$m|$$+Lj"#T[MA6{S!DmBŗH7IIK[I@8xR ]Y? XL1 |X6D,a˳ zy-I$Z9~E4;n $[`}r@j'(Z xVUf_"mǏ\0Quc:.q/tN{ "$1a5Ww~_2Ov"R3Wƶ{'&Cx8䧩ߏ^g$7FSN : C:#Qy=RCrXpӧFy01sܾ}Wt-w>t_ݎcD`VLODxdl2;XO]~`b51J=I!=c8Cg{z<#i2?\>xAҩEXB LAEp }`ϣ1fιADn[6YL'&CM΍%#ɉV!e}ȳ3.KhhVi@T:, XO8'y+ql#IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/header_arrow_down.png000066400000000000000000000002561323676556600312340ustar00rootroot00000000000000PNG  IHDR Vu\gAMA aeIDAT(c`FK 1L /(&eʁa @|ܹsK@|@iK5"+a MP`d " 0NIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/header_arrow_up.png000066400000000000000000000002721323676556600307070ustar00rootroot00000000000000PNG  IHDR Vu\gAMA aqIDAT(c`(y]RRR?~ Y bFF$ ҈ hRs- R $))yŋ7A61cbb dĠLx4 &OIENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/slider/000077500000000000000000000000001323676556600263145ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/slider/slider_handle_focus.svg000077500000000000000000000037131323676556600330400ustar00rootroot00000000000000 slider_handle_focus Created with Sketch. slider_handle_insensitive.svg000077500000000000000000000037171323676556600342060ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/slider slider_handle_insensitive Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/slider/slider_handle_normal.svg000077500000000000000000000036741323676556600332170ustar00rootroot00000000000000 slider_handle_normal Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/slider/slider_handle_press.svg000077500000000000000000000036601323676556600330560ustar00rootroot00000000000000 slider_handle_press Created with Sketch. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/slider/slider_point_handle.png000066400000000000000000000013471323676556600330350ustar00rootroot00000000000000PNG  IHDRw=sRGBIDATH U;Ql4Km$@ߡf !M( Vi B뢄`o䛽 &gΙ;/,n:w͛l;X,cpCdGm:kFNNsF@(nTѷFg|^t: ^ɤf?íwL@%_d%F] wOTz7 .srhDRl^aT.j-1Ձ]R(FkO\. =G*x{ノh^G-ohTWL ȗXD"n8~ r}V 'GTe-9]ҠP(gYIGkX2Ob:ekTw=H^.7J͡Ѭ@z%QE^7o;WpvF@JQ[~> 8UuLF(ɃuBL=ZE\\IENDB`slider_point_handle@2x.png000066400000000000000000000034501323676556600333250ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/sliderPNG  IHDR00WsRGBIDAThYIOdU@l%F;i;(alX1MoVv[ @#b"@hP3qrPē:{ޫ2eѐbE1^YT".-dMttԞ%[XX⃼`rbb`)Ya(<\XaUcn擉)cXy؆:^>>|ɓw>WQQq27ɔ&....899zff/-OE/: BCȱioo{%3U mkC'8VLX9&4zGTV"i!@1p͂} 6aKbu  Y$ g^J\LJ5`*0E9C*1w/SWc {|zi  zD7&Lig~W1I#DG|NF.V::E˅]g2 MQFҿ?cua:It+RP0v 3L]`Pr!q y>HkO19udXiB?v ŌIENDB`slider_point_handle_focus.png000066400000000000000000000016231323676556600341520ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/sliderPNG  IHDRw=sRGBMIDATH TKLQ'BcPBpKD++,tэĐ….pcDQnЅ,d݈"i;3:}36M{,D.٤PYӴǙ~dͶ-Ir\ޠ3^n1I4g? :9Ԁ&uV]:i,SX,-OupbWDsΫllt $ε:GM-0pJbޚ =e&jF64(aE)"U(6ő˄p_r!-sOP MCChz:Q@0l KBȉ"*$M1QSL7=@(r? ަZqWYwa `T}$"LKZÂp:Z`X aͿ+{o^_v#,Mo)!s6<1pV1eSˣ#\9J{aM͋\7i'usם u֊MRvѤ)ƀLġWbduis,tRda[_öC}ݯœ4Ȃ˖-3z? ]q1%>mK$ÐAh^*/,Gr q:UgϞ8qGA$CK>9 c#N#"Ur"6}",<~NM !B`8C݃i/$)ALJĒIBLd͕~~s(mܾz%w'`ۅ)H Yw-bF-"h ɛnx 9 #&8i]'=IVcL9Ot]atDXm([W30ҼR ͖ZXv 'H>$K>|M5?u~`Q1$u"I9וCk4-I8eO Oxz< xӎю"׽{#O6 KW^q~`n!JH\'-[S;]`(1BnaI@H B|)^ ]MKpHQL~d\'u$,.)"S "F"Fɹ}}N>XC.Tn/@JZ#o#q޳H^>N5ȅx-U$#9ͥ 3i5N ):!"FRD8$_+ 9Unƅ|*>(B=CN}]tYBM+-.iCS N`]Ns6EӼUv,<jA!d4[Nz.jMWjSJomƿO5i@wЍ>$?Ӕ"鵲<7 ֑znbM`m*^$g-u@IAdC`Zk8qA.Xmk:]pj*[-[!CDa pvqmy.[BPqܯiK򍨼108aTCZD{FFlF]}O_v#SS{4FMK̋ 5ԻeJ#a+{ iؘd*>8;X;簰QDy+֋jXc])|%8x x87d3*EgZ΋ 7K7+zx:G6{߃ M jinQ:kn0d`:`0oR~ ZHn}HҙF˂[֑7n.`)N|jNLs6.Lk;]~R9Jtvyâ{b7r7_D4϶zsqmP^7/\ovME̡ݗ>s]h/j(_dɯ3yM8xPɁf49azOv&@nw'y'` 4= ,P5qZR.Mm* KgDH6 YYF90`$f%4irٚaXF71Rļr^}$`^_C6Zַr ZTjRnt:[ 9Wrw d2i2fNtG L{DwVVVpu_iY6UO)7 fvAxM4"P5N|UzgY9ll󎭻)^U!`0\j1mH|h4~BAkC2EpB'-,k\8/?J rO$)% ~$;KֿTb&`bŋIENDB`slider_point_handle_insensitive@2x.png000066400000000000000000000031701323676556600357440ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/sliderPNG  IHDR00WsRGB2IDAThXJdGn[x 1B0!7gH$o$m//Qjw:NYUtk6T]{ڷmVcYb)}JW7O%եuW>̰2MTy.F,_=Py> PyuOy.k\a###_6۾z^NcCU%𤋮ǂ7WVV7@Z=,0y}aai:_l\vCNĂ-1v~ߚwwww= 3L\paI,#`y*N>2/Z3Nec"24dJC̃AvS,Lik\\f?bhu{8gD:R]`;E ſ}3::|̙3Unu:%q> D\s|¾jCe&A ٧t!l݋uLKrO٨r1Dcʉv1sӫ|k2h_W.Aiթ0!`ٌSE0NFuCc&TĪ7`yq_%V U Y|AiĠ0xi6Pʖb&un͍ & yЁTF<| G +szaA^"v͋GeSnK/lؙ=`@2/&<Y\F,[ @`H'N.//'Sި1̮Bz(r?6WǻɒC@n3MFtmZm=W;<<,#}>@ј%HBƐ[,M (!)\n<ËVDy 8q8.4 cb0Fn~&9:Voup|LN.ump-@7@7lfLiN}} &Ђ\]]= /Cg6:G>,W}tfgg1oColl|dF>n@;^ֵw$-[` mwtTV@ߪ"6QFhEy||| d$gE< 5:~pː.6JV;%P?n t &v7NYuՎ~fJ>}1( #D-?6J ?LktWEqSSS(mtfL'We챐Om`!#)OY)jƞ 7=!9@=ig@h*'$cv²8Su;br`Ę@jOtIENDB`slider_point_handle_press.png000066400000000000000000000015171323676556600341710ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/sliderPNG  IHDRw=sRGB IDATH TKQ?Օ]ɯ"?0m§50 ^ W7SJ˰֯Zw{g;̮م;{~ܙ!=HvߑPLgA?D$jp$Q J7 nZx%Bn S%sb .%LÍ DyV^{ҕgcojN &""LVq5]{ug4PYV~G$y>۾CC :1N?;}ĹcESIk΂nܤĞ`#dĮwSa mxXD9Er1vf :5Xw*eG]"fHb\[#0?p| 5nаx9Vՠih9wӾʗg/cѯ{Wڜp hAT,~\@KA0{ćHc̴IƵSI퉷F+gZ.ow4 k4u55M⪖ $D=/δVElٟ^ծ:޼oszrGo) fݢ Ow` ;1~ `1z6~?qy{IFbqYXVVfy X,e*ean}]%r{Nf%O7g-_yə[WW"YPBw0v4^o*YAkR4\4Ag;#ƚ2.XVSa=/x4IENDB`slider_point_handle_press@2x.png000066400000000000000000000041531323676556600345420ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets/semilight/sliderPNG  IHDR00WsRGB%IDAThYoU?glExPD 1'F-! &}0x!T/%bȥ@mi;̷v:3ۢdw3V-]e, ,+7l"/-<^ccq|e(LӺ6ichѽspGu{n8P K\JDaTI$%39BB\ƼE#汓OG0N&V'D78y@d$Au@ڏCTeX( 84^|d*M'3WPJX})WrrM*$.iI1%G\CquN{cKNfgy !KZbh(&beD'!$>’ ݥ`>rv߹XR䑔cӿPAhYZ^*h2b'dn ZU|8 ii @vuf]J-R(O_O%NsЍl¶ҙEԠ{_  '< %5Ò1z&% fuJfeh JW!:4~C-s.>ig5-ix'M`<1W_ GЍNu=u2h6%ϴyƛj>Ҿ-q Aeֽ6[1ՙ$&|jcM6USCgzCPNAwKw,0=Yj}G+ׇ-ityF,/íUō&Ԡ[*&i8Lۛˏ}^C=?i:VsG(n٠ ƕd6`@b'i@&j|([ځ`VLSƘHC'γpK&nMԃ ԅh\7(q憣C7n.`B}g#A1/5|K咵 眰IENDB`dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets_dark.qrc000066400000000000000000000161001323676556600245530ustar00rootroot00000000000000 assets/dark/check_disabled.png assets/dark/check_selected.png assets/dark/check_normal.png assets/dark/checkbox/checkbox_checked_insensitive.png assets/dark/checkbox/checkbox_checked_insensitive@2x.png assets/dark/checkbox/checkbox_checked_focus.png assets/dark/checkbox/checkbox_checked_focus@2x.png assets/dark/checkbox/checkbox_mixed_insensitive.png assets/dark/checkbox/checkbox_mixed_insensitive@2x.png assets/dark/checkbox/checkbox_mixed_focus.png assets/dark/checkbox/checkbox_mixed_focus@2x.png assets/dark/checkbox/checkbox_unchecked_insensitive.png assets/dark/checkbox/checkbox_unchecked_insensitive@2x.png assets/dark/checkbox/checkbox_checked.png assets/dark/checkbox/checkbox_checked@2x.png assets/dark/checkbox/checkbox_checked_hover.png assets/dark/checkbox/checkbox_checked_hover@2x.png assets/dark/checkbox/checkbox_checked_press.png assets/dark/checkbox/checkbox_checked_press@2x.png assets/dark/checkbox/checkbox_mixed.png assets/dark/checkbox/checkbox_mixed@2x.png assets/dark/checkbox/checkbox_mixed_hover.png assets/dark/checkbox/checkbox_mixed_hover@2x.png assets/dark/checkbox/checkbox_mixed_press.png assets/dark/checkbox/checkbox_mixed_press@2x.png assets/dark/checkbox/checkbox_unchecked.png assets/dark/checkbox/checkbox_unchecked@2x.png assets/dark/checkbox/checkbox_unchecked_focus.png assets/dark/checkbox/checkbox_unchecked_focus@2x.png assets/dark/checkbox/checkbox_unchecked_hover.png assets/dark/checkbox/checkbox_unchecked_hover@2x.png assets/dark/checkbox/checkbox_unchecked_press.png assets/dark/checkbox/checkbox_unchecked_press@2x.png assets/dark/checkbox/radio_checked_insensitive.png assets/dark/checkbox/radio_checked_insensitive@2x.png assets/dark/checkbox/radio_mixed_insensitive.png assets/dark/checkbox/radio_mixed_insensitive@2x.png assets/dark/checkbox/radio_unchecked_insensitive.png assets/dark/checkbox/radio_unchecked_insensitive@2x.png assets/dark/checkbox/radio_checked.png assets/dark/checkbox/radio_checked@2x.png assets/dark/checkbox/radio_checked_focus.png assets/dark/checkbox/radio_checked_focus@2x.png assets/dark/checkbox/radio_checked_hover.png assets/dark/checkbox/radio_checked_hover@2x.png assets/dark/checkbox/radio_checked_press.png assets/dark/checkbox/radio_checked_press@2x.png assets/dark/checkbox/radio_mixed.png assets/dark/checkbox/radio_mixed@2x.png assets/dark/checkbox/radio_mixed_focus.png assets/dark/checkbox/radio_mixed_focus@2x.png assets/dark/checkbox/radio_mixed_hover.png assets/dark/checkbox/radio_mixed_hover@2x.png assets/dark/checkbox/radio_mixed_press.png assets/dark/checkbox/radio_mixed_press@2x.png assets/dark/checkbox/radio_unchecked.png assets/dark/checkbox/radio_unchecked@2x.png assets/dark/checkbox/radio_unchecked_focus.png assets/dark/checkbox/radio_unchecked_focus@2x.png assets/dark/checkbox/radio_unchecked_hover_dark.png assets/dark/checkbox/radio_unchecked_hover_dark@2x.png assets/dark/checkbox/radio_unchecked_press_dark.png assets/dark/checkbox/radio_unchecked_press_dark@2x.png assets/dark/header_arrow_down.png assets/dark/header_arrow_up.png assets/dark/spinbox/spinbutton_minus_hover.png assets/dark/spinbox/spinbutton_minus_insensitive.png assets/dark/spinbox/spinbutton_minus_normal.png assets/dark/spinbox/spinbutton_minus_press.png assets/dark/spinbox/spinbutton_plus_hover.png assets/dark/spinbox/spinbutton_plus_insensitive.png assets/dark/spinbox/spinbutton_plus_normal.png assets/dark/spinbox/spinbutton_plus_press.png assets/dark/spinbox/spinbutton_down_hover.png assets/dark/spinbox/spinbutton_down_insensitive.png assets/dark/spinbox/spinbutton_down_normal.png assets/dark/spinbox/spinbutton_down_press.png assets/dark/spinbox/spinbutton_up_hover.png assets/dark/spinbox/spinbutton_up_insensitive.png assets/dark/spinbox/spinbutton_up_normal.png assets/dark/spinbox/spinbutton_up_press.png assets/dark/slider/slider_handle_focus.svg assets/dark/slider/slider_handle_insensitive.svg assets/dark/slider/slider_handle_normal.svg assets/dark/slider/slider_handle_press.svg assets/dark/slider/slider_point_handle_focus.png assets/dark/slider/slider_point_handle_focus@2x.png assets/dark/slider/slider_point_handle_insensitive.png assets/dark/slider/slider_point_handle_insensitive@2x.png assets/dark/slider/slider_point_handle_press.png assets/dark/slider/slider_point_handle_press@2x.png assets/dark/slider/slider_point_handle.png assets/dark/slider/slider_point_handle@2x.png assets/dark/tabbar/add_hover.svg assets/dark/tabbar/add_normal.svg assets/dark/tabbar/add_press.svg assets/dark/tabbar/pagedown_hover.svg assets/dark/tabbar/pagedown_insensitive.svg assets/dark/tabbar/pagedown_normal.svg assets/dark/tabbar/pagedown_press.svg assets/dark/tabbar/pageup_hover.svg assets/dark/tabbar/pageup_insensitive.svg assets/dark/tabbar/pageup_normal.svg assets/dark/tabbar/pageup_press.svg assets/dark/tabbar/tab_close_hover.svg assets/dark/tabbar/tab_close_normal.svg assets/dark/tabbar/tab_close_press.svg dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets_light.qrc000066400000000000000000000165061323676556600247530ustar00rootroot00000000000000 assets/light/arrow-right_disabled.svg assets/light/arrow-right_selected.svg assets/light/arrow-right_normal.svg assets/light/check_disabled.svg assets/light/check_selected.svg assets/light/check_normal.svg assets/light/checkbox/checkbox_checked_insensitive.png assets/light/checkbox/checkbox_checked_insensitive@2x.png assets/light/checkbox/checkbox_checked_focus.png assets/light/checkbox/checkbox_checked_focus@2x.png assets/light/checkbox/checkbox_mixed_insensitive.png assets/light/checkbox/checkbox_mixed_insensitive@2x.png assets/light/checkbox/checkbox_mixed_focus.png assets/light/checkbox/checkbox_mixed_focus@2x.png assets/light/checkbox/checkbox_unchecked_insensitive.png assets/light/checkbox/checkbox_unchecked_insensitive@2x.png assets/light/checkbox/checkbox_checked.png assets/light/checkbox/checkbox_checked@2x.png assets/light/checkbox/checkbox_checked_hover.png assets/light/checkbox/checkbox_checked_hover@2x.png assets/light/checkbox/checkbox_checked_press.png assets/light/checkbox/checkbox_checked_press@2x.png assets/light/checkbox/checkbox_mixed.png assets/light/checkbox/checkbox_mixed@2x.png assets/light/checkbox/checkbox_mixed_hover.png assets/light/checkbox/checkbox_mixed_hover@2x.png assets/light/checkbox/checkbox_mixed_press.png assets/light/checkbox/checkbox_mixed_press@2x.png assets/light/checkbox/checkbox_unchecked.png assets/light/checkbox/checkbox_unchecked@2x.png assets/light/checkbox/checkbox_unchecked_focus.png assets/light/checkbox/checkbox_unchecked_focus@2x.png assets/light/checkbox/checkbox_unchecked_hover.png assets/light/checkbox/checkbox_unchecked_hover@2x.png assets/light/checkbox/checkbox_unchecked_press.png assets/light/checkbox/checkbox_unchecked_press@2x.png assets/light/checkbox/radio_checked_insensitive.png assets/light/checkbox/radio_checked_insensitive@2x.png assets/light/checkbox/radio_mixed_insensitive.png assets/light/checkbox/radio_mixed_insensitive@2x.png assets/light/checkbox/radio_unchecked_insensitive.png assets/light/checkbox/radio_unchecked_insensitive@2x.png assets/light/checkbox/radio_checked.png assets/light/checkbox/radio_checked@2x.png assets/light/checkbox/radio_checked_focus.png assets/light/checkbox/radio_checked_focus@2x.png assets/light/checkbox/radio_checked_hover.png assets/light/checkbox/radio_checked_hover@2x.png assets/light/checkbox/radio_checked_press.png assets/light/checkbox/radio_checked_press@2x.png assets/light/checkbox/radio_mixed.png assets/light/checkbox/radio_mixed@2x.png assets/light/checkbox/radio_mixed_focus.png assets/light/checkbox/radio_mixed_focus@2x.png assets/light/checkbox/radio_mixed_hover.png assets/light/checkbox/radio_mixed_hover@2x.png assets/light/checkbox/radio_mixed_press.png assets/light/checkbox/radio_mixed_press@2x.png assets/light/checkbox/radio_unchecked.png assets/light/checkbox/radio_unchecked@2x.png assets/light/checkbox/radio_unchecked_focus.png assets/light/checkbox/radio_unchecked_focus@2x.png assets/light/checkbox/radio_unchecked_hover.png assets/light/checkbox/radio_unchecked_hover@2x.png assets/light/checkbox/radio_unchecked_press.png assets/light/checkbox/radio_unchecked_press@2x.png assets/light/header_arrow_down.png assets/light/header_arrow_up.png assets/light/spinbox/spinbutton_minus_hover.png assets/light/spinbox/spinbutton_minus_insensitive.png assets/light/spinbox/spinbutton_minus_normal.png assets/light/spinbox/spinbutton_minus_press.png assets/light/spinbox/spinbutton_plus_hover.png assets/light/spinbox/spinbutton_plus_insensitive.png assets/light/spinbox/spinbutton_plus_normal.png assets/light/spinbox/spinbutton_plus_press.png assets/light/spinbox/spinbutton_down_hover.png assets/light/spinbox/spinbutton_down_insensitive.png assets/light/spinbox/spinbutton_down_normal.png assets/light/spinbox/spinbutton_down_press.png assets/light/spinbox/spinbutton_up_hover.png assets/light/spinbox/spinbutton_up_insensitive.png assets/light/spinbox/spinbutton_up_normal.png assets/light/spinbox/spinbutton_up_press.png assets/light/slider/slider_handle_focus.svg assets/light/slider/slider_handle_insensitive.svg assets/light/slider/slider_handle_normal.svg assets/light/slider/slider_handle_press.svg assets/light/slider/slider_point_handle_focus.png assets/light/slider/slider_point_handle_focus@2x.png assets/light/slider/slider_point_handle_insensitive.png assets/light/slider/slider_point_handle_insensitive@2x.png assets/light/slider/slider_point_handle_press.png assets/light/slider/slider_point_handle_press@2x.png assets/light/slider/slider_point_handle.png assets/light/slider/slider_point_handle@2x.png assets/light/tabbar/add_hover.svg assets/light/tabbar/add_normal.svg assets/light/tabbar/add_press.svg assets/light/tabbar/pagedown_hover.svg assets/light/tabbar/pagedown_insensitive.svg assets/light/tabbar/pagedown_normal.svg assets/light/tabbar/pagedown_press.svg assets/light/tabbar/pageup_hover.svg assets/light/tabbar/pageup_insensitive.svg assets/light/tabbar/pageup_normal.svg assets/light/tabbar/pageup_press.svg assets/light/tabbar/tab_close_hover.svg assets/light/tabbar/tab_close_normal.svg assets/light/tabbar/tab_close_press.svg dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets_semidark.qrc000066400000000000000000000127661323676556600254470ustar00rootroot00000000000000 assets/semidark/check_disabled.png assets/semidark/check_selected.png assets/semidark/check_normal.png assets/semidark/checkbox/checkbox_checked_insensitive.png assets/semidark/checkbox/checkbox_checked_insensitive@2x.png assets/semidark/checkbox/checkbox_checked_focus.png assets/semidark/checkbox/checkbox_checked_focus@2x.png assets/semidark/checkbox/checkbox_mixed_insensitive.png assets/semidark/checkbox/checkbox_mixed_insensitive@2x.png assets/semidark/checkbox/checkbox_mixed_focus.png assets/semidark/checkbox/checkbox_mixed_focus@2x.png assets/semidark/checkbox/checkbox_unchecked_insensitive.png assets/semidark/checkbox/checkbox_unchecked_insensitive@2x.png assets/semidark/checkbox/checkbox_checked.png assets/semidark/checkbox/checkbox_checked@2x.png assets/semidark/checkbox/checkbox_checked_hover.png assets/semidark/checkbox/checkbox_checked_hover@2x.png assets/semidark/checkbox/checkbox_checked_press.png assets/semidark/checkbox/checkbox_checked_press@2x.png assets/semidark/checkbox/checkbox_mixed.png assets/semidark/checkbox/checkbox_mixed@2x.png assets/semidark/checkbox/checkbox_mixed_hover.png assets/semidark/checkbox/checkbox_mixed_hover@2x.png assets/semidark/checkbox/checkbox_mixed_press.png assets/semidark/checkbox/checkbox_mixed_press@2x.png assets/semidark/checkbox/checkbox_unchecked.png assets/semidark/checkbox/checkbox_unchecked@2x.png assets/semidark/checkbox/checkbox_unchecked_focus.png assets/semidark/checkbox/checkbox_unchecked_focus@2x.png assets/semidark/checkbox/checkbox_unchecked_hover.png assets/semidark/checkbox/checkbox_unchecked_hover@2x.png assets/semidark/checkbox/checkbox_unchecked_press.png assets/semidark/checkbox/checkbox_unchecked_press@2x.png assets/semidark/checkbox/radio_checked_insensitive.png assets/semidark/checkbox/radio_checked_insensitive@2x.png assets/semidark/checkbox/radio_mixed_insensitive.png assets/semidark/checkbox/radio_mixed_insensitive@2x.png assets/semidark/checkbox/radio_unchecked_insensitive.png assets/semidark/checkbox/radio_unchecked_insensitive@2x.png assets/semidark/checkbox/radio_checked.png assets/semidark/checkbox/radio_checked@2x.png assets/semidark/checkbox/radio_checked_focus.png assets/semidark/checkbox/radio_checked_focus@2x.png assets/semidark/checkbox/radio_checked_hover.png assets/semidark/checkbox/radio_checked_hover@2x.png assets/semidark/checkbox/radio_checked_press.png assets/semidark/checkbox/radio_checked_press@2x.png assets/semidark/checkbox/radio_mixed.png assets/semidark/checkbox/radio_mixed@2x.png assets/semidark/checkbox/radio_mixed_focus.png assets/semidark/checkbox/radio_mixed_focus@2x.png assets/semidark/checkbox/radio_mixed_hover.png assets/semidark/checkbox/radio_mixed_hover@2x.png assets/semidark/checkbox/radio_mixed_press.png assets/semidark/checkbox/radio_mixed_press@2x.png assets/semidark/checkbox/radio_unchecked.png assets/semidark/checkbox/radio_unchecked@2x.png assets/semidark/checkbox/radio_unchecked_focus.png assets/semidark/checkbox/radio_unchecked_focus@2x.png assets/semidark/checkbox/radio_unchecked_hover_dark.png assets/semidark/checkbox/radio_unchecked_hover_dark@2x.png assets/semidark/checkbox/radio_unchecked_press_dark.png assets/semidark/checkbox/radio_unchecked_press_dark@2x.png assets/semidark/header_arrow_down.png assets/semidark/header_arrow_up.png assets/semidark/slider/slider_handle_focus.svg assets/semidark/slider/slider_handle_insensitive.svg assets/semidark/slider/slider_handle_normal.svg assets/semidark/slider/slider_handle_press.svg assets/semidark/slider/slider_point_handle_focus.png assets/semidark/slider/slider_point_handle_focus@2x.png assets/semidark/slider/slider_point_handle_insensitive.png assets/semidark/slider/slider_point_handle_insensitive@2x.png assets/semidark/slider/slider_point_handle_press.png assets/semidark/slider/slider_point_handle_press@2x.png assets/semidark/slider/slider_point_handle.png assets/semidark/slider/slider_point_handle@2x.png dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/assets_semilight.qrc000066400000000000000000000133521323676556600256250ustar00rootroot00000000000000 assets/semilight/arrow-right_disabled.png assets/semilight/arrow-right_selected.png assets/semilight/arrow-right_normal.png assets/semilight/check_disabled.png assets/semilight/check_selected.png assets/semilight/check_normal.png assets/semilight/checkbox/checkbox_checked_insensitive.png assets/semilight/checkbox/checkbox_checked_insensitive@2x.png assets/semilight/checkbox/checkbox_checked_focus.png assets/semilight/checkbox/checkbox_checked_focus@2x.png assets/semilight/checkbox/checkbox_mixed_insensitive.png assets/semilight/checkbox/checkbox_mixed_insensitive@2x.png assets/semilight/checkbox/checkbox_mixed_focus.png assets/semilight/checkbox/checkbox_mixed_focus@2x.png assets/semilight/checkbox/checkbox_unchecked_insensitive.png assets/semilight/checkbox/checkbox_unchecked_insensitive@2x.png assets/semilight/checkbox/checkbox_checked.png assets/semilight/checkbox/checkbox_checked@2x.png assets/semilight/checkbox/checkbox_checked_hover.png assets/semilight/checkbox/checkbox_checked_hover@2x.png assets/semilight/checkbox/checkbox_checked_press.png assets/semilight/checkbox/checkbox_checked_press@2x.png assets/semilight/checkbox/checkbox_mixed.png assets/semilight/checkbox/checkbox_mixed@2x.png assets/semilight/checkbox/checkbox_mixed_hover.png assets/semilight/checkbox/checkbox_mixed_hover@2x.png assets/semilight/checkbox/checkbox_mixed_press.png assets/semilight/checkbox/checkbox_mixed_press@2x.png assets/semilight/checkbox/checkbox_unchecked.png assets/semilight/checkbox/checkbox_unchecked@2x.png assets/semilight/checkbox/checkbox_unchecked_focus.png assets/semilight/checkbox/checkbox_unchecked_focus@2x.png assets/semilight/checkbox/checkbox_unchecked_hover.png assets/semilight/checkbox/checkbox_unchecked_hover@2x.png assets/semilight/checkbox/checkbox_unchecked_press.png assets/semilight/checkbox/checkbox_unchecked_press@2x.png assets/semilight/checkbox/radio_checked_insensitive.png assets/semilight/checkbox/radio_checked_insensitive@2x.png assets/semilight/checkbox/radio_mixed_insensitive.png assets/semilight/checkbox/radio_mixed_insensitive@2x.png assets/semilight/checkbox/radio_unchecked_insensitive.png assets/semilight/checkbox/radio_unchecked_insensitive@2x.png assets/semilight/checkbox/radio_checked.png assets/semilight/checkbox/radio_checked@2x.png assets/semilight/checkbox/radio_checked_focus.png assets/semilight/checkbox/radio_checked_focus@2x.png assets/semilight/checkbox/radio_checked_hover.png assets/semilight/checkbox/radio_checked_hover@2x.png assets/semilight/checkbox/radio_checked_press.png assets/semilight/checkbox/radio_checked_press@2x.png assets/semilight/checkbox/radio_mixed.png assets/semilight/checkbox/radio_mixed@2x.png assets/semilight/checkbox/radio_mixed_focus.png assets/semilight/checkbox/radio_mixed_focus@2x.png assets/semilight/checkbox/radio_mixed_hover.png assets/semilight/checkbox/radio_mixed_hover@2x.png assets/semilight/checkbox/radio_mixed_press.png assets/semilight/checkbox/radio_mixed_press@2x.png assets/semilight/checkbox/radio_unchecked.png assets/semilight/checkbox/radio_unchecked@2x.png assets/semilight/checkbox/radio_unchecked_focus.png assets/semilight/checkbox/radio_unchecked_focus@2x.png assets/semilight/checkbox/radio_unchecked_hover.png assets/semilight/checkbox/radio_unchecked_hover@2x.png assets/semilight/checkbox/radio_unchecked_press.png assets/semilight/checkbox/radio_unchecked_press@2x.png assets/semilight/header_arrow_down.png assets/semilight/header_arrow_up.png assets/semilight/slider/slider_handle_focus.svg assets/semilight/slider/slider_handle_insensitive.svg assets/semilight/slider/slider_handle_normal.svg assets/semilight/slider/slider_handle_press.svg assets/semilight/slider/slider_point_handle_focus.png assets/semilight/slider/slider_point_handle_focus@2x.png assets/semilight/slider/slider_point_handle_insensitive.png assets/semilight/slider/slider_point_handle_insensitive@2x.png assets/semilight/slider/slider_point_handle_press.png assets/semilight/slider/slider_point_handle_press@2x.png assets/semilight/slider/slider_point_handle.png assets/semilight/slider/slider_point_handle@2x.png dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/brushchemes.qrc000066400000000000000000000003631323676556600245640ustar00rootroot00000000000000 brushschemes/dlight.css brushschemes/ddark.css brushschemes/dsemidark.css brushschemes/dsemilight.css dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/brushschemes/000077500000000000000000000000001323676556600242365ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/brushschemes/ddark.css000066400000000000000000000223071323676556600260410ustar00rootroot00000000000000QPalette { Base: transparent; Text: rgb(255,255,255); Window: "#202020"; WindowText: rgb(255,255,255); Highlight: "#61b5f8"; HighlightedText: rgb(255,255,255); Button: rgba(255, 255, 255, 0.15); ButtonText: "#dcdcdc"; } QPalette:disabled { Text: rgba(255, 255, 255, 0.4); WindowText: rgba(255, 255, 255, 0.4); Highlight: "#8ccfff"; HighlightedText: rgba(255,255,255, 0.4); } Slider { GrooveColor: rgba(255, 255, 255, 0.2); GrooveHighlightColor: "#2ca7f8"; HandleBrush: url(:/assets/dark/slider/slider_handle_normal.svg); VernierHandleBrush: url(:/assets/dark/slider/slider_point_handle.png); HandleBorderColor: transparent; TickmarkColor: rgba(255,255,255,0.6); } Slider:focus { HandleBrush: url(:/assets/dark/slider/slider_handle_focus.svg); VernierHandleBrush: url(:/assets/dark/slider/slider_point_handle_focus.png); HandleBorderColor: "#2ca7f8"; } Slider:disabled { GrooveColor: rgba(255, 255, 255, 0.08); GrooveHighlightColor: "#0d4265"; HandleBrush: url(:/assets/dark/slider/slider_handle_insensitive.svg); VernierHandleBrush: url(:/assets/dark/slider/slider_point_handle_insensitive.png); HandleBorderColor: rgba(0, 0, 0, 0.1); } Slider:pressed { HandleBrush: url(:/assets/dark/slider/slider_handle_press.svg); VernierHandleBrush: url(:/assets/dark/slider/slider_point_handle_press.png); } PushButton { BackgroundBrush: rgba(255, 255, 255, 0.15); TextColor: "#dcdcdc"; SuggestTextColor: rgba(0, 132, 255, 1); BorderBrush: transparent; SuggestButtonColor: rgba(0, 132, 255, 0.4); } PushButton:disabled { BackgroundBrush: rgba(255, 255, 255, 0.06); TextColor: "#40dcdcdc"; SuggestTextColor: "#40dcdcdc"; BorderBrush: transparent; SuggestTextColor: transparent; } PushButton:hover { BackgroundBrush: rgba(255, 255, 255, 0.3); TextColor: white; SuggestTextColor: white; BorderBrush: transparent; SuggestTextColor: transparent; } PushButton:pressed { BackgroundBrush: rgba(255,255,255,0.1); TextColor: "#2ca7f8"; SuggestTextColor: "#2ca7f8"; BorderBrush: transparent; SuggestTextColor: transparent; } PushButton:focus { BorderBrush: "#2ca7f8"; SuggestButtonColor: rgba(0, 132, 255, 0.4); } PushButton:flat { TextColor: "#0082fa"; SuggestTextColor: "#0082fa"; } PushButton:flat:disabled { TextColor: "#0060b9"; SuggestTextColor: "#0060b9"; } PushButton:flat:hover { TextColor: "#16b8ff"; SuggestTextColor: "#16b8ff"; } LineEdit { BackgroundBrush: rgba(255,255,255,0.15); BorderBrush: transparent; } LineEdit:disabled { BackgroundBrush: rgba(255,255,255,0.04); } LineEdit:focus { BackgroundBrush: rgba(255,255,255,0.05); BorderBrush: rgba(43,167,248,0.6); } ScrollBar { HandleBrush: rgba(255, 255, 255, 0.2); HandleBroderBrush: rgba(255, 255, 255, 0.05); } ScrollBar:hover { HandleBrush: rgba(255, 255, 255, 0.4); HandleBroderBrush: rgba(255, 255, 255, 0.1); } ScrollBar:pressed { HandleBrush: rgba(96, 96, 96, 0.3); } ScrollBar:focus { HandleBroderBrush: "#2ca7f8"; } Menu { BackgroundBrush: "#313131"; SeparatorColor: rgba(255, 255, 255, 0.1); BorderColor: rgba(0, 0, 0, 0.1); } CheckBox { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_unchecked.png); } CheckBox:disabled { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_unchecked_insensitive.png); } CheckBox:focus { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_unchecked_focus.png); } CheckBox:hover { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_unchecked_hover.png); } CheckBox:pressed { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_unchecked_press.png); } CheckBox:checked { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_checked.png); } CheckBox:checked:disabled { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_checked_insensitive.png); } CheckBox:checked:focus { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_checked_focus.png); } CheckBox:checked:hover { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_checked_hover.png); } CheckBox:checked:pressed { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_checked_press.png); } CheckBox:indeterminate { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_mixed.png); } CheckBox:indeterminate:disabled { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_mixed_insensitive.png); } CheckBox:indeterminate:focus { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_mixed_focus.png); } CheckBox:indeterminate:hover { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_mixed_hover.png); } CheckBox:indeterminate:pressed { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_mixed_press.png); } RadioButton { BackgroundBrush: url(:/assets/dark/checkbox/radio_unchecked.png); } RadioButton:disabled { BackgroundBrush: url(:/assets/dark/checkbox/radio_unchecked_insensitive.png); } RadioButton:focus { BackgroundBrush: url(:/assets/dark/checkbox/radio_unchecked_focus.png); } RadioButton:hover { BackgroundBrush: url(:/assets/dark/checkbox/radio_unchecked_hover.png); } RadioButton:pressed { BackgroundBrush: url(:/assets/dark/checkbox/radio_unchecked_press.png); } RadioButton:checked { BackgroundBrush: url(:/assets/dark/checkbox/radio_checked.png); } RadioButton:checked:disabled { BackgroundBrush: url(:/assets/dark/checkbox/radio_checked_insensitive.png); } RadioButton:checked:focus { BackgroundBrush: url(:/assets/dark/checkbox/radio_checked_focus.png); } RadioButton:checked:hover { BackgroundBrush: url(:/assets/dark/checkbox/radio_checked_hover.png); } RadioButton:checked:pressed { BackgroundBrush: url(:/assets/dark/checkbox/radio_checked_press.png); } RadioButton:indeterminate { BackgroundBrush: url(:/assets/dark/checkbox/radio_mixed.png); } RadioButton:indeterminate:disabled { BackgroundBrush: url(:/assets/dark/checkbox/radio_mixed_insensitive.png); } RadioButton:indeterminate:focus { BackgroundBrush: url(:/assets/dark/checkbox/radio_mixed_focus.png); } RadioButton:indeterminate:hover { BackgroundBrush: url(:/assets/dark/checkbox/radio_mixed_hover.png); } RadioButton:indeterminate:pressed { BackgroundBrush: url(:/assets/dark/checkbox/radio_mixed_press.png); } RubberBand { BackgroundBrush: rgba(43, 167, 248, 0.3); BorderBrush: rgba(30, 126, 255, 0.2); } HeaderView { ArrowIndicatorUpIcon: url(:/assets/dark/header_arrow_up.png); ArrowIndicatorDownIcon: url(:/assets/dark/header_arrow_down.png); } SpinBox { MinusBrush: url(:/assets/dark/spinbox/spinbutton_minus_normal.png); PlusBrush: url(:/assets/dark/spinbox/spinbutton_plus_normal.png); DownBrush: url(:/assets/dark/spinbox/spinbutton_down_normal.png); UpBrush: url(:/assets/dark/spinbox/spinbutton_up_normal.png); BorderColor: black; } SpinBox:disabled { MinusBrush: url(:/assets/dark/spinbox/spinbutton_minus_insensitive.png); PlusBrush: url(:/assets/dark/spinbox/spinbutton_plus_insensitive.png); DownBrush: url(:/assets/dark/spinbox/spinbutton_down_insensitive.png); UpBrush: url(:/assets/dark/spinbox/spinbutton_up_insensitive.png); BorderColor: black; } SpinBox:focus { BorderColor: rgba(43,167,248,0.6); } SpinBox:pressed { MinusBrush: url(:/assets/dark/spinbox/spinbutton_minus_press.png); PlusBrush: url(:/assets/dark/spinbox/spinbutton_plus_press.png); DownBrush: url(:/assets/dark/spinbox/spinbutton_down_press.png); UpBrush: url(:/assets/dark/spinbox/spinbutton_up_press.png); } SpinBox:hover { MinusBrush: url(:/assets/dark/spinbox/spinbutton_minus_hover.png); PlusBrush: url(:/assets/dark/spinbox/spinbutton_plus_hover.png); DownBrush: url(:/assets/dark/spinbox/spinbutton_down_hover.png); UpBrush: url(:/assets/dark/spinbox/spinbutton_up_hover.png); } TabBarScrollButton { BackgroundBrush: transparent; UpIcon: url(:/assets/dark/tabbar/pageup_normal.svg); DownIcon: url(:/assets/dark/tabbar/pagedown_normal.svg); } TabBarScrollButton:disabled { UpIcon: url(:/assets/dark/tabbar/pageup_insensitive.svg); DownIcon: url(:/assets/dark/tabbar/pagedown_insensitive.svg); } TabBarScrollButton:pressed { UpIcon: url(:/assets/dark/tabbar/pageup_press.svg); DownIcon: url(:/assets/dark/tabbar/pagedown_press.svg); } TabBarScrollButton:hover { UpIcon: url(:/assets/dark/tabbar/pageup_hover.svg); DownIcon: url(:/assets/dark/tabbar/pagedown_hover.svg); } TabBarAddButton { BackgroundBrush: transparent; Icon: url(:/assets/dark/tabbar/add_normal.svg); } TabBarAddButton:pressed { Icon: url(:/assets/dark/tabbar/add_press.svg); } TabBarAddButton:hover { Icon: url(:/assets/dark/tabbar/add_hover.svg); } TabBarTab { TextColor: "#c0c0c0"; BackgroundBrush: transparent; BorderBrush: rgba(0,0,0,0.1); ActiveColor: "#2ca7f8"; CloseIcon: url(:/assets/dark/tabbar/tab_close_normal.svg); CloseIconBackground: "#2a2a2a"; } TabBarTab:disabled { TextColor: "#949494"; } TabBarTab:pressed { CloseIcon: url(:/assets/dark/tabbar/tab_close_press.svg); } TabBarTab:hover { BackgroundBrush: rgba(255, 255, 255, 0.05); CloseIcon: url(:/assets/dark/tabbar/tab_close_hover.svg); } TabBarTab:selected { TextColor: "#2ca7f8"; } dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/brushschemes/dlight.css000066400000000000000000000231211323676556600262220ustar00rootroot00000000000000QPalette { Base: transparent; Text: rgb(25,25,25); Window: rgb(255,255,255); WindowText: rgb(25,25,25); Highlight: "#2ca7f8"; HighlightedText: rgb(255,255,255); Button: qlineargradient(x1:0, y1:0 x2:0, y2:1, stop:0 "#fff", stop:1 "#fdfdfd"); ButtonText: "#000"; } QPalette:disabled { Text: rgba(0, 0, 0, 0.4); WindowText: rgba(0, 0, 0, 0.4); Highlight: rgba(44, 167, 248, 0.4); HighlightedText: rgba(255,255,255, 0.4); } Slider { GrooveColor: "#a4a4a4"; GrooveHighlightColor: "#2ca7f8"; HandleBrush: url(:/assets/light/slider/slider_handle_normal.svg); VernierHandleBrush: url(:/assets/light/slider/slider_point_handle.png); HandleBorderColor: lightgray; TickmarkColor: rgba(0,0,0,0.6); } Slider:focus { HandleBrush: url(:/assets/light/slider/slider_handle_focus.svg); VernierHandleBrush: url(:/assets/light/slider/slider_point_handle_focus.png); HandleBorderColor: "#2ca7f8"; } Slider:disabled { GrooveColor: rgba(163, 163, 163, 0.4); GrooveHighlightColor: "#aedfff"; HandleBrush: url(:/assets/light/slider/slider_handle_insensitive.svg); VernierHandleBrush: url(:/assets/light/slider/slider_point_handle_insensitive.png); HandleBorderColor: rgba(0, 0, 0, 0.1); } Slider:pressed { HandleBrush: url(:/assets/light/slider/slider_handle_press.svg); VernierHandleBrush: url(:/assets/light/slider/slider_point_handle_press.png); } PushButton { BackgroundBrush: qlineargradient(x1:0, y1:0 x2:0, y2:1, stop:0 "#fff", stop:1 "#fdfdfd"); TextColor: "#000"; SuggestTextColor: rgba(0, 132, 255, 1); BorderBrush: rgba(0,0,0,0.1); SuggestButtonColor: rgba(0, 132, 255, 0.4); } PushButton:disabled { BackgroundBrush: qlineargradient(x1: 0, y1: 0 x2: 0, y2: 1, stop:0 rgba(255, 255, 255, 0.4), stop:1 rgba(253, 253, 253, 0.4)); TextColor: "#AEAEAE"; SuggestTextColor: "#AEAEAE"; BorderBrush: rgba(0,0,0,0.04); SuggestButtonColor: rgba(0,0,0,0.04); } PushButton:hover { BackgroundBrush: qlineargradient(x1: 0, y1: 0 x2: 0, y2: 1, stop:0 "#8ccfff", stop:1 "#4bb8ff"); TextColor: "#fff"; SuggestTextColor: "#fff"; BorderBrush: rgba(0, 117, 243, 0.2); SuggestButtonColor: rgba(0, 117, 243, 0.2); } PushButton:pressed { BackgroundBrush: qlineargradient(x1: 0, y1: 0 x2: 0, y2: 1, stop:0 "#0b8cff", stop:1 "#0aa1ff"); TextColor: "#fff"; SuggestTextColor: "#fff"; BorderBrush: rgba(29, 129, 255, 0.3); SuggestButtonColor: rgba(29, 129, 255, 0.3); } PushButton:focus { BorderBrush: "#2ca7f8"; SuggestButtonColor: rgba(0, 132, 255, 0.4); } PushButton:flat { TextColor: "#0082fa"; SuggestTextColor: "#0082fa"; } PushButton:flat:disabled { TextColor: "#0060b9"; SuggestTextColor: "#0060b9"; } PushButton:flat:hover { TextColor: "#16b8ff"; SuggestTextColor: "#16b8ff"; } PushButton:flat:pressed { TextColor: "#0082fa"; SuggestTextColor: "#0082fa"; } LineEdit { BackgroundBrush: rgb(255,255,255); BorderBrush: rgba(0,0,0,0.1); } LineEdit:disabled { BackgroundBrush: rgb(255,255,255); BorderBrush: rgba(0,0,0,0.04); } LineEdit:focus { BackgroundBrush: rgb(255,255,255); BorderBrush: rgb(44,167,248); } ScrollBar { HandleBrush: rgba(16, 16, 16, 0.5); } ScrollBar:hover { HandleBrush: rgba(16, 16, 16, 0.5); } ScrollBar:pressed { HandleBrush: rgba(16, 16, 16, 0.55); } ScrollBar:focus { HandleBorderBrush: "#2ca7f8"; } Menu { SeparatorColor: rgba(0, 0, 0, 0.1); BorderColor: rgba(0, 0, 0, 0.1); BackgroundBrush: rgb(255,255,255); } CheckBox { BackgroundBrush: url(:/assets/light/checkbox/checkbox_unchecked.png); } CheckBox:disabled { BackgroundBrush: url(:/assets/light/checkbox/checkbox_unchecked_insensitive.png); } CheckBox:focus { BackgroundBrush: url(:/assets/light/checkbox/checkbox_unchecked_focus.png); } CheckBox:hover { BackgroundBrush: url(:/assets/light/checkbox/checkbox_unchecked_hover.png); } CheckBox:pressed { BackgroundBrush: url(:/assets/light/checkbox/checkbox_unchecked_press.png); } CheckBox:checked { BackgroundBrush: url(:/assets/light/checkbox/checkbox_checked.png); } CheckBox:checked:disabled { BackgroundBrush: url(:/assets/light/checkbox/checkbox_checked_insensitive.png); } CheckBox:checked:focus { BackgroundBrush: url(:/assets/light/checkbox/checkbox_checked_focus.png); } CheckBox:checked:hover { BackgroundBrush: url(:/assets/light/checkbox/checkbox_checked_hover.png); } CheckBox:checked:pressed { BackgroundBrush: url(:/assets/light/checkbox/checkbox_checked_press.png); } CheckBox:indeterminate { BackgroundBrush: url(:/assets/light/checkbox/checkbox_mixed.png); } CheckBox:indeterminate:disabled { BackgroundBrush: url(:/assets/light/checkbox/checkbox_mixed_insensitive.png); } CheckBox:indeterminate:focus { BackgroundBrush: url(:/assets/light/checkbox/checkbox_mixed_focus.png); } CheckBox:indeterminate:hover { BackgroundBrush: url(:/assets/light/checkbox/checkbox_mixed_hover.png); } CheckBox:indeterminate:pressed { BackgroundBrush: url(:/assets/light/checkbox/checkbox_mixed_press.png); } RadioButton { BackgroundBrush: url(:/assets/light/checkbox/radio_unchecked.png); } RadioButton:disabled { BackgroundBrush: url(:/assets/light/checkbox/radio_unchecked_insensitive.png); } RadioButton:focus { BackgroundBrush: url(:/assets/light/checkbox/radio_unchecked_focus.png); } RadioButton:hover { BackgroundBrush: url(:/assets/light/checkbox/radio_unchecked_hover.png); } RadioButton:pressed { BackgroundBrush: url(:/assets/light/checkbox/radio_unchecked_press.png); } RadioButton:checked { BackgroundBrush: url(:/assets/light/checkbox/radio_checked.png); } RadioButton:checked:disabled { BackgroundBrush: url(:/assets/light/checkbox/radio_checked_insensitive.png); } RadioButton:checked:focus { BackgroundBrush: url(:/assets/light/checkbox/radio_checked_focus.png); } RadioButton:checked:hover { BackgroundBrush: url(:/assets/light/checkbox/radio_checked_hover.png); } RadioButton:checked:pressed { BackgroundBrush: url(:/assets/light/checkbox/radio_checked_press.png); } RadioButton:indeterminate { BackgroundBrush: url(:/assets/light/checkbox/radio_mixed.png); } RadioButton:indeterminate:disabled { BackgroundBrush: url(:/assets/light/checkbox/radio_mixed_insensitive.png); } RadioButton:indeterminate:focus { BackgroundBrush: url(:/assets/light/checkbox/radio_mixed_focus.png); } RadioButton:indeterminate:hover { BackgroundBrush: url(:/assets/light/checkbox/radio_mixed_hover.png); } RadioButton:indeterminate:pressed { BackgroundBrush: url(:/assets/light/checkbox/radio_mixed_press.png); } RubberBand { BackgroundBrush: rgba(43, 167, 248, 0.3); BorderBrush: rgba(30, 126, 255, 0.2); } HeaderView { ArrowIndicatorUpIcon: url(:/assets/light/header_arrow_up.png); ArrowIndicatorDownIcon: url(:/assets/light/header_arrow_down.png); } SpinBox { MinusBrush: url(:/assets/light/spinbox/spinbutton_minus_normal.png); PlusBrush: url(:/assets/light/spinbox/spinbutton_plus_normal.png); DownBrush: url(:/assets/light/spinbox/spinbutton_down_normal.png); UpBrush: url(:/assets/light/spinbox/spinbutton_up_normal.png); BorderColor: rgba(0,0,0,0.1); } SpinBox:disabled { MinusBrush: url(:/assets/light/spinbox/spinbutton_minus_insensitive.png); PlusBrush: url(:/assets/light/spinbox/spinbutton_plus_insensitive.png); DownBrush: url(:/assets/light/spinbox/spinbutton_down_insensitive.png); UpBrush: url(:/assets/light/spinbox/spinbutton_up_insensitive.png); BorderColor: rgba(0,0,0,0.04); } SpinBox:focus { BorderColor: rgb(44,167,248); } SpinBox:pressed { MinusBrush: url(:/assets/light/spinbox/spinbutton_minus_press.png); PlusBrush: url(:/assets/light/spinbox/spinbutton_plus_press.png); DownBrush: url(:/assets/light/spinbox/spinbutton_down_press.png); UpBrush: url(:/assets/light/spinbox/spinbutton_up_press.png); } SpinBox:hover { MinusBrush: url(:/assets/light/spinbox/spinbutton_minus_hover.png); PlusBrush: url(:/assets/light/spinbox/spinbutton_plus_hover.png); DownBrush: url(:/assets/light/spinbox/spinbutton_down_hover.png); UpBrush: url(:/assets/light/spinbox/spinbutton_up_hover.png); } TabBarScrollButton { BackgroundBrush: transparent; UpIcon: url(:/assets/light/tabbar/pageup_normal.svg); DownIcon: url(:/assets/light/tabbar/pagedown_normal.svg); } TabBarScrollButton:disabled { UpIcon: url(:/assets/light/tabbar/pageup_insensitive.svg); DownIcon: url(:/assets/light/tabbar/pagedown_insensitive.svg); } TabBarScrollButton:pressed { UpIcon: url(:/assets/light/tabbar/pageup_press.svg); DownIcon: url(:/assets/light/tabbar/pagedown_press.svg); } TabBarScrollButton:hover { UpIcon: url(:/assets/light/tabbar/pageup_hover.svg); DownIcon: url(:/assets/light/tabbar/pagedown_hover.svg); } TabBarAddButton { BackgroundBrush: transparent; Icon: url(:/assets/light/tabbar/add_normal.svg); } TabBarAddButton:pressed { Icon: url(:/assets/light/tabbar/add_press.svg); } TabBarAddButton:hover { Icon: url(:/assets/light/tabbar/add_hover.svg); } TabBarTab { BackgroundBrush: transparent; BorderBrush: rgba(0,0,0,0.1); TextColor: black; ActiveColor: "#2ca7f8"; CloseIcon: url(:/assets/light/tabbar/tab_close_normal.svg); CloseIconBackground: "#f3f3f3"; } TabBarTab:disabled { TextColor: "#949494"; } TabBarTab:pressed { CloseIcon: url(:/assets/light/tabbar/tab_close_press.svg); } TabBarTab:hover { BackgroundBrush: rgba(0, 0, 0, 0.05); CloseIcon: url(:/assets/light/tabbar/tab_close_hover.svg); } TabBarTab:selected { TextColor: "#2ca7f8"; } dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/brushschemes/dsemidark.css000066400000000000000000000222571323676556600267230ustar00rootroot00000000000000QPalette { Base: transparent; Text: rgb(255,255,255); Window: "#202020"; WindowText: rgb(255,255,255); Highlight: rgba(44, 167, 248, 0.8); HighlightedText: rgba(255,255,255, 0.8); Button: rgba(255, 255, 255, 0.15); ButtonText: "#dcdcdc"; } QPalette:disabled { Text: rgba(255,255,255, 0.4); WindowText: rgba(255,255,255, 0.4); Highlight: rgba(44, 167, 248, 0.4); HighlightedText: rgba(255,255,255, 0.4); } Slider { GrooveColor: rgba(255, 255, 255, 0.2); GrooveHighlightColor: white; HandleBrush: url(:/assets/semidark/slider/slider_handle_normal.svg); VernierHandleBrush: url(:/assets/semidark/slider/slider_point_handle.png); HandleBorderColor: transparent; TickmarkColor: rgba(255,255,255,0.6); } Slider:focus { HandleBrush: url(:/assets/semidark/slider/slider_handle_focus.svg); VernierHandleBrush: url(:/assets/semidark/slider/slider_point_handle_focus.png); HandleBorderColor: "#2ca7f8"; } Slider:disabled { GrooveColor: rgba(255, 255, 255, 0.08); GrooveHighlightColor: "#0d4265"; HandleBrush: url(:/assets/semidark/slider/slider_handle_insensitive.svg); VernierHandleBrush: url(:/assets/semidark/slider/slider_point_handle_insensitive.png); HandleBorderColor: rgba(0, 0, 0, 0.1); } Slider:pressed { HandleBrush: url(:/assets/semidark/slider/slider_handle_press.svg); VernierHandleBrush: url(:/assets/semidark/slider/slider_point_handle_press.png); } PushButton { BackgroundBrush: rgba(255, 255, 255, 0.15); TextColor: "white"; SuggestTextColor: rgba(0, 132, 255, 1); BorderBrush: transparent; SuggestButtonColor: rgba(0, 132, 255, 0.4); } PushButton:disabled { BackgroundBrush: rgba(255, 255, 255, 0.06); TextColor: "#40dcdcdc"; SuggestTextColor: "#40dcdcdc"; BorderBrush: transparent; SuggestButtonColor: transparent; } PushButton:hover { BackgroundBrush: rgba(255, 255, 255, 0.3); TextColor: white; SuggestTextColor: white; BorderBrush: transparent; SuggestButtonColor: transparent; } PushButton:pressed { BackgroundBrush: rgba(255,255,255,0.1); TextColor: "#2ca7f8"; SuggestTextColor: "#2ca7f8"; BorderBrush: transparent; SuggestButtonColor: transparent; } PushButton:focus { BorderBrush: "#2ca7f8"; SuggestButtonColor: rgba(0, 132, 255, 0.4); } PushButton:flat { TextColor: "#0082fa"; SuggestTextColor: "#0082fa"; } PushButton:flat:disabled { TextColor: "#0060b9"; SuggestTextColor: "#0060b9"; } PushButton:flat:hover { TextColor: "#16b8ff"; SuggestTextColor: "#16b8ff"; } LineEdit { BackgroundBrush: rgba(255,255,255,0.15); BorderBrush: transparent; } LineEdit:disabled { BackgroundBrush: rgba(255,255,255,0.04); } LineEdit:focus { BackgroundBrush: rgba(255,255,255,0.05); BorderBrush: rgba(43,167,248,0.6); } ScrollBar { HandleBrush: rgba(255, 255, 255, 0.2); HandleBroderBrush: rgba(255, 255, 255, 0.05); } ScrollBar:hover { HandleBrush: rgba(255, 255, 255, 0.4); HandleBroderBrush: rgba(255, 255, 255, 0.1); } ScrollBar:pressed { HandleBrush: rgba(96, 96, 96, 0.3); } ScrollBar:focus { HandleBroderBrush: "#2ca7f8"; } Menu { BackgroundBrush: "#313131"; SeparatorColor: rgba(255, 255, 255, 0.1); BorderColor: rgba(0, 0, 0, 0.1); } CheckBox { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_unchecked.png); } CheckBox:disabled { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_unchecked_insensitive.png); } CheckBox:focus { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_unchecked_focus.png); } CheckBox:hover { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_unchecked_hover.png); } CheckBox:pressed { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_unchecked_press.png); } CheckBox:checked { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_checked.png); } CheckBox:checked:disabled { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_checked_insensitive.png); } CheckBox:checked:focus { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_checked_focus.png); } CheckBox:checked:hover { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_checked_hover.png); } CheckBox:checked:pressed { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_checked_press.png); } CheckBox:indeterminate { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_mixed.png); } CheckBox:indeterminate:disabled { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_mixed_insensitive.png); } CheckBox:indeterminate:focus { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_mixed_focus.png); } CheckBox:indeterminate:hover { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_mixed_hover.png); } CheckBox:indeterminate:pressed { BackgroundBrush: url(:/assets/dark/checkbox/checkbox_mixed_press.png); } RadioButton { BackgroundBrush: url(:/assets/dark/checkbox/radio_unchecked.png); } RadioButton:disabled { BackgroundBrush: url(:/assets/dark/checkbox/radio_unchecked_insensitive.png); } RadioButton:focus { BackgroundBrush: url(:/assets/dark/checkbox/radio_unchecked_focus.png); } RadioButton:hover { BackgroundBrush: url(:/assets/dark/checkbox/radio_unchecked_hover.png); } RadioButton:pressed { BackgroundBrush: url(:/assets/dark/checkbox/radio_unchecked_press.png); } RadioButton:checked { BackgroundBrush: url(:/assets/dark/checkbox/radio_checked.png); } RadioButton:checked:disabled { BackgroundBrush: url(:/assets/dark/checkbox/radio_checked_insensitive.png); } RadioButton:checked:focus { BackgroundBrush: url(:/assets/dark/checkbox/radio_checked_focus.png); } RadioButton:checked:hover { BackgroundBrush: url(:/assets/dark/checkbox/radio_checked_hover.png); } RadioButton:checked:pressed { BackgroundBrush: url(:/assets/dark/checkbox/radio_checked_press.png); } RadioButton:indeterminate { BackgroundBrush: url(:/assets/dark/checkbox/radio_mixed.png); } RadioButton:indeterminate:disabled { BackgroundBrush: url(:/assets/dark/checkbox/radio_mixed_insensitive.png); } RadioButton:indeterminate:focus { BackgroundBrush: url(:/assets/dark/checkbox/radio_mixed_focus.png); } RadioButton:indeterminate:hover { BackgroundBrush: url(:/assets/dark/checkbox/radio_mixed_hover.png); } RadioButton:indeterminate:pressed { BackgroundBrush: url(:/assets/dark/checkbox/radio_mixed_press.png); } RubberBand { BackgroundBrush: rgba(43, 167, 248, 0.3); BorderBrush: rgba(30, 126, 255, 0.2); } HeaderView { ArrowIndicatorUpIcon: url(:/assets/dark/header_arrow_up.png); ArrowIndicatorDownIcon: url(:/assets/dark/header_arrow_down.png); } SpinBox { MinusBrush: url(:/assets/dark/spinbox/spinbutton_minus_normal.png); PlusBrush: url(:/assets/dark/spinbox/spinbutton_plus_normal.png); DownBrush: url(:/assets/dark/spinbox/spinbutton_down_normal.png); UpBrush: url(:/assets/dark/spinbox/spinbutton_up_normal.png); BorderColor: black; } SpinBox:disabled { MinusBrush: url(:/assets/dark/spinbox/spinbutton_minus_insensitive.png); PlusBrush: url(:/assets/dark/spinbox/spinbutton_plus_insensitive.png); DownBrush: url(:/assets/dark/spinbox/spinbutton_down_insensitive.png); UpBrush: url(:/assets/dark/spinbox/spinbutton_up_insensitive.png); BorderColor: black; } SpinBox:focus { BorderColor: rgba(43,167,248,0.6); } SpinBox:pressed { MinusBrush: url(:/assets/dark/spinbox/spinbutton_minus_press.png); PlusBrush: url(:/assets/dark/spinbox/spinbutton_plus_press.png); DownBrush: url(:/assets/dark/spinbox/spinbutton_down_press.png); UpBrush: url(:/assets/dark/spinbox/spinbutton_up_press.png); } SpinBox:hover { MinusBrush: url(:/assets/dark/spinbox/spinbutton_minus_hover.png); PlusBrush: url(:/assets/dark/spinbox/spinbutton_plus_hover.png); DownBrush: url(:/assets/dark/spinbox/spinbutton_down_hover.png); UpBrush: url(:/assets/dark/spinbox/spinbutton_up_hover.png); } TabBarScrollButton { BackgroundBrush: transparent; UpIcon: url(:/assets/dark/tabbar/pageup_normal.svg); DownIcon: url(:/assets/dark/tabbar/pagedown_normal.svg); } TabBarScrollButton:disabled { UpIcon: url(:/assets/dark/tabbar/pageup_insensitive.svg); DownIcon: url(:/assets/dark/tabbar/pagedown_insensitive.svg); } TabBarScrollButton:pressed { UpIcon: url(:/assets/dark/tabbar/pageup_press.svg); DownIcon: url(:/assets/dark/tabbar/pagedown_press.svg); } TabBarScrollButton:hover { UpIcon: url(:/assets/dark/tabbar/pageup_hover.svg); DownIcon: url(:/assets/dark/tabbar/pagedown_hover.svg); } TabBarAddButton { BackgroundBrush: transparent; Icon: url(:/assets/dark/tabbar/add_normal.svg); } TabBarAddButton:pressed { Icon: url(:/assets/dark/tabbar/add_press.svg); } TabBarAddButton:hover { Icon: url(:/assets/dark/tabbar/add_hover.svg); } TabBarTab { TextColor: "#c0c0c0"; BackgroundBrush: transparent; BorderBrush: rgba(0,0,0,0.1); ActiveColor: "#2ca7f8"; CloseIcon: url(:/assets/dark/tabbar/tab_close_normal.svg); } TabBarTab:disabled { TextColor: "#949494"; } TabBarTab:pressed { CloseIcon: url(:/assets/dark/tabbar/tab_close_press.svg); } TabBarTab:hover { BackgroundBrush: rgba(255, 255, 255, 0.05); CloseIcon: url(:/assets/dark/tabbar/tab_close_hover.svg); } dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/brushschemes/dsemilight.css000066400000000000000000000230121323676556600270770ustar00rootroot00000000000000QPalette { Base: transparent; Text: rgb(25,25,25); Window: rgb(255,255,255); WindowText: rgb(25,25,25); Highlight: rgba(44, 167, 248, 0.8); HighlightedText: rgba(255,255,255, 0.8); Button: qlineargradient(x1:0, y1:0 x2:0, y2:1, stop:0 "#fff", stop:1 "#fdfdfd"); ButtonText: "#000"; } QPalette:disabled { Text: rgba(0, 0, 0, 0.4); WindowText: rgba(0, 0, 0, 0.4); Highlight: rgba(44, 167, 248, 0.4); HighlightedText: rgba(255, 255, 255, 0.4); } Slider { GrooveColor: "#a4a4a4"; GrooveHighlightColor: "#2ca7f8"; HandleBrush: url(:/assets/semilight/slider/slider_handle_normal.svg); VernierHandleBrush: url(:/assets/semilight/slider/slider_point_handle.png); HandleBorderColor: lightgray; TickmarkColor: rgba(0,0,0,0.6); } Slider:focus { HandleBrush: url(:/assets/semilight/slider/slider_handle_focus.svg); VernierHandleBrush: url(:/assets/semilight/slider/slider_point_handle_focus.png); HandleBorderColor: "#2ca7f8"; } Slider:disabled { GrooveColor: rgba(163, 163, 163, 0.4); GrooveHighlightColor: "#aedfff"; HandleBrush: url(:/assets/semilight/slider/slider_handle_insensitive.svg); VernierHandleBrush: url(:/assets/semilight/slider/slider_point_handle_insensitive.png); HandleBorderColor: rgba(0, 0, 0, 0.1); } Slider:pressed { HandleBrush: url(:/assets/semilight/slider/slider_handle_press.svg); VernierHandleBrush: url(:/assets/semilight/slider/slider_point_handle_press.png); } PushButton { BackgroundBrush: qlineargradient(x1:0, y1:0 x2:0, y2:1, stop:0 "#fff", stop:1 "#fdfdfd"); TextColor: "#000"; SuggestTextColor: rgba(0, 132, 255, 1); BorderBrush: rgba(0,0,0,0.1); SuggestButtonColor: rgba(0, 132, 255, 0.4); } PushButton:disabled { BackgroundBrush: qlineargradient(x1: 0, y1: 0 x2: 0, y2: 1, stop:0 rgba(255, 255, 255, 0.4), stop:1 rgba(253, 253, 253, 0.4)); TextColor: "#AEAEAE"; SuggestTextColor: "#AEAEAE"; BorderBrush: rgba(0,0,0,0.04); SuggestButtonColor: rgba(0,0,0,0.04); } PushButton:hover { BackgroundBrush: qlineargradient(x1: 0, y1: 0 x2: 0, y2: 1, stop:0 "#8ccfff", stop:1 "#4bb8ff"); TextColor: "#fff"; SuggestTextColor: "#fff"; BorderBrush: rgba(0, 117, 243, 0.2); SuggestButtonColor: rgba(0, 117, 243, 0.2); } PushButton:pressed { BackgroundBrush: qlineargradient(x1: 0, y1: 0 x2: 0, y2: 1, stop:0 "#0b8cff", stop:1 "#0aa1ff"); TextColor: "#fff"; SuggestTextColor: "#fff"; BorderBrush: rgba(29, 129, 255, 0.3); SuggestButtonColor: rgba(29, 129, 255, 0.3); } PushButton:focus { BorderBrush: "#2ca7f8"; SuggestButtonColor: rgba(0, 132, 255, 0.4); } PushButton:flat { TextColor: "#0082fa"; SuggestTextColor: "#0082fa"; } PushButton:flat:disabled { TextColor: "#0060b9"; SuggestTextColor: "#0060b9"; } PushButton:flat:hover { TextColor: "#16b8ff"; SuggestTextColor: "#16b8ff"; } PushButton:flat:pressed { TextColor: "#0082fa"; SuggestTextColor: "#0082fa"; } LineEdit { BackgroundBrush: rgb(255,255,255); BorderBrush: rgba(0,0,0,0.1); } LineEdit:disabled { BackgroundBrush: rgb(255,255,255); BorderBrush: rgba(0,0,0,0.04); } LineEdit:focus { BackgroundBrush: rgb(255,255,255); BorderBrush: rgb(44,167,248); } ScrollBar { HandleBrush: rgba(16, 16, 16, 0.5); } ScrollBar:hover { HandleBrush: rgba(16, 16, 16, 0.5); } ScrollBar:pressed { HandleBrush: rgba(16, 16, 16, 0.55); } ScrollBar:focus { HandleBorderBrush: "#2ca7f8"; } Menu { SeparatorColor: rgba(0, 0, 0, 0.1); BorderColor: rgba(0, 0, 0, 0.1); } CheckBox { BackgroundBrush: url(:/assets/light/checkbox/checkbox_unchecked.png); } CheckBox:disabled { BackgroundBrush: url(:/assets/light/checkbox/checkbox_unchecked_insensitive.png); } CheckBox:focus { BackgroundBrush: url(:/assets/light/checkbox/checkbox_unchecked_focus.png); } CheckBox:hover { BackgroundBrush: url(:/assets/light/checkbox/checkbox_unchecked_hover.png); } CheckBox:pressed { BackgroundBrush: url(:/assets/light/checkbox/checkbox_unchecked_press.png); } CheckBox:checked { BackgroundBrush: url(:/assets/light/checkbox/checkbox_checked.png); } CheckBox:checked:disabled { BackgroundBrush: url(:/assets/light/checkbox/checkbox_checked_insensitive.png); } CheckBox:checked:focus { BackgroundBrush: url(:/assets/light/checkbox/checkbox_checked_focus.png); } CheckBox:checked:hover { BackgroundBrush: url(:/assets/light/checkbox/checkbox_checked_hover.png); } CheckBox:checked:pressed { BackgroundBrush: url(:/assets/light/checkbox/checkbox_checked_press.png); } CheckBox:indeterminate { BackgroundBrush: url(:/assets/light/checkbox/checkbox_mixed.png); } CheckBox:indeterminate:disabled { BackgroundBrush: url(:/assets/light/checkbox/checkbox_mixed_insensitive.png); } CheckBox:indeterminate:focus { BackgroundBrush: url(:/assets/light/checkbox/checkbox_mixed_focus.png); } CheckBox:indeterminate:hover { BackgroundBrush: url(:/assets/light/checkbox/checkbox_mixed_hover.png); } CheckBox:indeterminate:pressed { BackgroundBrush: url(:/assets/light/checkbox/checkbox_mixed_press.png); } RadioButton { BackgroundBrush: url(:/assets/light/checkbox/radio_unchecked.png); } RadioButton:disabled { BackgroundBrush: url(:/assets/light/checkbox/radio_unchecked_insensitive.png); } RadioButton:focus { BackgroundBrush: url(:/assets/light/checkbox/radio_unchecked_focus.png); } RadioButton:hover { BackgroundBrush: url(:/assets/light/checkbox/radio_unchecked_hover.png); } RadioButton:pressed { BackgroundBrush: url(:/assets/light/checkbox/radio_unchecked_press.png); } RadioButton:checked { BackgroundBrush: url(:/assets/light/checkbox/radio_checked.png); } RadioButton:checked:disabled { BackgroundBrush: url(:/assets/light/checkbox/radio_checked_insensitive.png); } RadioButton:checked:focus { BackgroundBrush: url(:/assets/light/checkbox/radio_checked_focus.png); } RadioButton:checked:hover { BackgroundBrush: url(:/assets/light/checkbox/radio_checked_hover.png); } RadioButton:checked:pressed { BackgroundBrush: url(:/assets/light/checkbox/radio_checked_press.png); } RadioButton:indeterminate { BackgroundBrush: url(:/assets/light/checkbox/radio_mixed.png); } RadioButton:indeterminate:disabled { BackgroundBrush: url(:/assets/light/checkbox/radio_mixed_insensitive.png); } RadioButton:indeterminate:focus { BackgroundBrush: url(:/assets/light/checkbox/radio_mixed_focus.png); } RadioButton:indeterminate:hover { BackgroundBrush: url(:/assets/light/checkbox/radio_mixed_hover.png); } RadioButton:indeterminate:pressed { BackgroundBrush: url(:/assets/light/checkbox/radio_mixed_press.png); } RubberBand { BackgroundBrush: rgba(43, 167, 248, 0.3); BorderBrush: rgba(30, 126, 255, 0.2); } HeaderView { ArrowIndicatorUpIcon: url(:/assets/light/header_arrow_up.png); ArrowIndicatorDownIcon: url(:/assets/light/header_arrow_down.png); } SpinBox { MinusBrush: url(:/assets/light/spinbox/spinbutton_minus_normal.png); PlusBrush: url(:/assets/light/spinbox/spinbutton_plus_normal.png); DownBrush: url(:/assets/light/spinbox/spinbutton_down_normal.png); UpBrush: url(:/assets/light/spinbox/spinbutton_up_normal.png); BorderColor: rgba(0,0,0,0.1); } SpinBox:disabled { MinusBrush: url(:/assets/light/spinbox/spinbutton_minus_insensitive.png); PlusBrush: url(:/assets/light/spinbox/spinbutton_plus_insensitive.png); DownBrush: url(:/assets/light/spinbox/spinbutton_down_insensitive.png); UpBrush: url(:/assets/light/spinbox/spinbutton_up_insensitive.png); BorderColor: rgba(0,0,0,0.04); } SpinBox:focus { BorderColor: rgb(44,167,248); } SpinBox:pressed { MinusBrush: url(:/assets/light/spinbox/spinbutton_minus_press.png); PlusBrush: url(:/assets/light/spinbox/spinbutton_plus_press.png); DownBrush: url(:/assets/light/spinbox/spinbutton_down_press.png); UpBrush: url(:/assets/light/spinbox/spinbutton_up_press.png); } SpinBox:hover { MinusBrush: url(:/assets/light/spinbox/spinbutton_minus_hover.png); PlusBrush: url(:/assets/light/spinbox/spinbutton_plus_hover.png); DownBrush: url(:/assets/light/spinbox/spinbutton_down_hover.png); UpBrush: url(:/assets/light/spinbox/spinbutton_up_hover.png); } TabBarScrollButton { BackgroundBrush: transparent; UpIcon: url(:/assets/light/tabbar/pageup_normal.svg); DownIcon: url(:/assets/light/tabbar/pagedown_normal.svg); } TabBarScrollButton:disabled { UpIcon: url(:/assets/light/tabbar/pageup_insensitive.svg); DownIcon: url(:/assets/light/tabbar/pagedown_insensitive.svg); } TabBarScrollButton:pressed { UpIcon: url(:/assets/light/tabbar/pageup_press.svg); DownIcon: url(:/assets/light/tabbar/pagedown_press.svg); } TabBarScrollButton:hover { UpIcon: url(:/assets/light/tabbar/pageup_hover.svg); DownIcon: url(:/assets/light/tabbar/pagedown_hover.svg); } TabBarAddButton { BackgroundBrush: transparent; Icon: url(:/assets/light/tabbar/add_normal.svg); } TabBarAddButton:pressed { Icon: url(:/assets/light/tabbar/add_press.svg); } TabBarAddButton:hover { Icon: url(:/assets/light/tabbar/add_hover.svg); } TabBarTab { BackgroundBrush: transparent; BorderBrush: rgba(0,0,0,0.1); TextColor: black; ActiveColor: "#2ca7f8"; CloseIcon: url(:/assets/light/tabbar/tab_close_normal.svg); } TabBarTab:disabled { TextColor: "#949494"; } TabBarTab:pressed { CloseIcon: url(:/assets/light/tabbar/tab_close_press.svg); } TabBarTab:hover { BackgroundBrush: rgba(0, 0, 0, 0.05); CloseIcon: url(:/assets/light/tabbar/tab_close_hover.svg); } dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/checkboxhelper.cpp000066400000000000000000000020661323676556600252410ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "style.h" #include "paletteextended.h" #include #include #include namespace dstyle { bool Style::drawIndicatorCheckBoxPrimitive(const QStyleOption *opt, QPainter *p, const QWidget *widget) const { Q_UNUSED(widget) fillBrush(p, opt->rect, m_palette->brush(PaletteExtended::CheckBox_BackgroundBrush, opt)); return true; } } dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/colorutils.cpp000066400000000000000000000016571323676556600244570ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "colorutils.h" namespace dstyle { QColor ColorUtils::alphaColor(QColor color, qreal alpha) { if( alpha >= 0 && alpha < 1.0 ) { color.setAlphaF( alpha*color.alphaF() ); } return color; } } // end namespace dstyle. dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/colorutils.h000066400000000000000000000016551323676556600241220ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef COLORUTILS_H #define COLORUTILS_H #include namespace dstyle { class ColorUtils { public: //* add alpha channel multiplier to color static QColor alphaColor( QColor color, qreal alpha ); }; } #endif // COLORUTILS_H dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/comboboxhelper.cpp000066400000000000000000000204641323676556600252650ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "style.h" #include #include #include #include #include #include "paletteextended.h" #include "geometryutils.h" namespace dstyle { void Style::drawComboBoxPopupFramePrimitive(const QStyleOption *option, QPainter *painter) const { const QRect rect( option->rect ); painter->setRenderHints(painter->renderHints() | QPainter::Antialiasing); painter->setPen(m_palette->brush(PaletteExtended::Menu_BorderColor).color()); painter->setBrush(option->palette.brush(QPalette::Background)); painter->drawRoundedRect(rect, 4, 4); } bool Style::drawComboBox(const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget) const { // cast option and check const QStyleOptionComboBox* comboBoxOption( qstyleoption_cast( option ) ); if( !comboBoxOption ) return true; // rect and palette const QRect& rect( option->rect ); const QPalette& palette( option->palette ); // state const bool editable( comboBoxOption->editable ); bool flat( !comboBoxOption->frame ); // frame if( option->subControls & SC_ComboBoxFrame ) { if( editable ) { flat |= ( rect.height() <= 2*Metrics::Frame_FrameWidth + Metrics::MenuButton_IndicatorWidth ); if ( flat ) { const QColor background( palette.color( QPalette::Base ) ); painter->setBrush( background ); painter->setPen( Qt::NoPen ); painter->drawRect( rect ); } else { proxy()->drawPrimitive( PE_FrameLineEdit, option, painter, widget ); } } else { if( flat ) { } else { // TODO(hualet): update button color from palette in case button is default const QColor shadow( Qt::transparent ); const QBrush outline(m_palette->brush(PaletteExtended::PushButton_BorderBrush, option)); const QBrush background(m_palette->brush(PaletteExtended::PushButton_BackgroundBrush, option)); // render drawPushButtonFrame(painter, rect, QBrush(background), QBrush(outline), shadow); } } } if (option->subControls & SC_ComboBoxArrow) { QBrush brush = m_palette->brush(PaletteExtended::HeaderView_ArrowIndicatorDownIcon); if (brush.style() != Qt::TexturePattern) return false; // arrow rect QRect arrowRect( proxy()->subControlRect( CC_ComboBox, option, SC_ComboBoxArrow, widget ) ); fillBrush(painter, arrowRect, brush); } return option->subControls & (SC_ComboBoxFrame | SC_ComboBoxArrow); } QRect Style::comboBoxSubControlRect(const QStyleOptionComplex *opt, QStyle::SubControl sc, const QWidget *widget) const { Q_UNUSED(widget); if (const QStyleOptionComboBox *cb = qstyleoption_cast(opt)) { QRect ret; int x = cb->rect.x(), y = cb->rect.y(), wi = cb->rect.width(), he = cb->rect.height(); int xpos = x; int margin = cb->frame ? 3 : 0; int bmarg = cb->frame ? 2 : 0; xpos += wi - bmarg - 16; switch (sc) { case SC_ComboBoxFrame: ret = cb->rect; break; case SC_ComboBoxArrow: ret.setRect(xpos, y + bmarg, 16, he - 2*bmarg); break; case SC_ComboBoxEditField: ret.setRect(x + margin, y + margin, wi - 2 * margin - 16, he - 2 * margin); break; case SC_ComboBoxListBoxPopup: ret = cb->rect; break; default: break; } return visualRect(cb->direction, cb->rect, ret); } return opt->rect; } bool Style::drawComboBoxLabelControl(const QStyleOption *option, QPainter *painter, const QWidget *widget) const { // cast option and check const QStyleOptionComboBox* cb( qstyleoption_cast( option ) ); if( !cb ) return false; // copy rect and palette const QRect& rect( option->rect.adjusted(0, 0, -20, 0) ); // state const QStyle::State& state( option->state ); const bool enabled( state & QStyle::State_Enabled ); const bool sunken( state & (QStyle::State_On | QStyle::State_Sunken) ); const bool mouseOver(option->state & QStyle::State_MouseOver); const bool hasFocus(option->state & QStyle::State_HasFocus); const bool flat(!cb->frame); // content const bool hasText( !cb->currentText.isEmpty() ); const bool hasIcon( ( flat || !hasText ) && !cb->currentIcon.isNull() ); // contents QRect contentsRect( rect ); if( sunken && !flat ) contentsRect.translate( 1, 1 ); // icon size QSize iconSize; if( hasIcon ) { iconSize = cb->iconSize; if( !iconSize.isValid() ) { const int metric( widget->style()->pixelMetric( QStyle::PM_SmallIconSize, option, widget ) ); iconSize = QSize( metric, metric ); } } // text size int textFlags( Qt::AlignVCenter | Qt::AlignLeft ); const QSize textSize( option->fontMetrics.size( textFlags, cb->currentText ) ); if (styleHint(SH_UnderlineShortcut, cb, widget)) textFlags |= Qt::TextShowMnemonic; else textFlags |= Qt::TextHideMnemonic; // adjust text and icon rect based on options QRect iconRect; QRect textRect; if( hasText && !hasIcon ) textRect = contentsRect; else if( hasIcon && !hasText ) iconRect = contentsRect; else { const int contentsWidth( iconSize.width() + textSize.width() + Metrics::Button_ItemSpacing ); iconRect = QRect( QPoint( contentsRect.left() + (contentsRect.width() - contentsWidth )/2, contentsRect.top() + (contentsRect.height() - iconSize.height())/2 ), iconSize ); textRect = QRect( QPoint( iconRect.right() + Metrics::ToolButton_ItemSpacing + 1, contentsRect.top() + (contentsRect.height() - textSize.height())/2 ), textSize ); } // handle right to left if( iconRect.isValid() ) iconRect = widget->style()->visualRect( option->direction, option->rect, iconRect ); if( textRect.isValid() ) textRect = widget->style()->visualRect( option->direction, option->rect, textRect ); // make sure there is enough room for icon if( iconRect.isValid() ) iconRect = GeometryUtils::centerRect( iconRect, iconSize ); // render icon if( hasIcon && iconRect.isValid() ) { // icon state and mode const QIcon::State iconState( sunken ? QIcon::On : QIcon::Off ); QIcon::Mode iconMode; if( !enabled ) iconMode = QIcon::Disabled; else if( !flat && hasFocus ) iconMode = QIcon::Selected; else if( mouseOver && flat ) iconMode = QIcon::Active; else iconMode = QIcon::Normal; const QPixmap pixmap = cb->currentIcon.pixmap( iconSize, iconMode, iconState ); widget->style()->drawItemPixmap( painter, iconRect, Qt::AlignCenter, pixmap ); } // render text if( hasText && textRect.isValid() ) { textRect.setLeft(textRect.left() + Metrics::Layout_ChildMarginWidth); painter->setPen(m_palette->brush(PaletteExtended::PushButton_TextColor, option).color()); painter->drawText(textRect, textFlags, cb->currentText); } return true; } bool Style::widgetIsComboBoxPopupFramePrimitive(const QWidget *w) { if (!w) return false; // combo box drop-list. // line edit completer drop-list return w->inherits("QComboBoxListView") || w->inherits("QComboBoxPrivateContainer") || (w->inherits("QAbstractItemView") && w->isTopLevel()); } } dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/common.h000066400000000000000000000105471323676556600232130ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef COMMON_H #define COMMON_H #include namespace dstyle { enum StyleType { StyleDark, StyleLight, StyleSemiDark, StyleSemiLight }; enum Metrics { // painter Painter_PenWidth = 1, // frames Frame_FrameWidth = 2, Frame_FrameRadius = 4, // layout Layout_TopLevelMarginWidth = 10, Layout_ChildMarginWidth = 4, Layout_DefaultSpacing = 6, // line editors LineEdit_FrameWidth = 2, LineEdit_LeftMargin = 3, // combobox ComboBox_FrameWidth = 6, // spinbox SpinBox_FrameWidth = LineEdit_FrameWidth, SpinBox_ArrowButtonWidth = 20, // groupbox title margin GroupBox_TitleMarginWidth = 4, // buttons Button_MinWidth = 80, Button_MarginWidth = 6, Button_ItemSpacing = 4, // tool buttons ToolButton_MarginWidth = 6, ToolButton_ItemSpacing = 4, ToolButton_InlineIndicatorWidth = 12, // checkboxes and radio buttons CheckBox_Size = 20, CheckBox_FocusMarginWidth = 2, CheckBox_ItemSpacing = 4, // menu Menu_ItemHMargin = 0, Menu_ItemVMargin = -1, Menu_ArrowHMargin = 6, Menu_CheckMarkWidth = 12, Menu_RightBorder = 10, Menu_ItemFrameWidth = 2, Menu_ItemHTextMargin = 3, Menu_ItemVTextMargin = 8, Menu_FrameWidth = 0, Menu_HMargin = 0, Menu_VMargin = 4, Menu_SeparatorItemHMargin = 5, Menu_PanelRightPadding = 10, MenuItem_MarginWidth = 3, MenuItem_ItemSpacing = 4, MenuItem_AcceleratorSpace = 16, MenuButton_IndicatorWidth = 20, // menu bar MenuBar_ItemSpacing = 6, MenuBarItem_MarginWidth = 10, MenuBarItem_MarginHeight = 6, // scrollbars ScrollBar_Extend = 8, ScrollBar_SliderWidth = 15, ScrollBar_MinSliderHeight = 40, ScrollBar_NoButtonHeight = (ScrollBar_Extend-ScrollBar_SliderWidth)/2, ScrollBar_SingleButtonHeight = ScrollBar_Extend, ScrollBar_DoubleButtonHeight = 2*ScrollBar_Extend, // toolbars ToolBar_FrameWidth = 2, ToolBar_HandleExtent = 10, ToolBar_HandleWidth = 6, ToolBar_SeparatorWidth = 8, ToolBar_ExtensionWidth = 20, ToolBar_ItemSpacing = 0, // progressbars ProgressBar_BusyIndicatorSize = 14, ProgressBar_ItemSpacing = 4, // mdi title bar TitleBar_MarginWidth = 4, // sliders Slider_TickLength = 10, Slider_TickMarginWidth = 6, Slider_GrooveThickness = 2, Slider_ControlThickness = 24, // tabbar TabBar_TabMarginHeight = 4, TabBar_TabMarginWidth = 8, TabBar_TabMinWidth = 80, TabBar_TabMinHeight = 28, TabBar_TabItemSpacing = 8, TabBar_TabOverlap = 1, TabBar_BaseOverlap = 2, // tab widget TabWidget_MarginWidth = 4, // toolbox ToolBox_TabMinWidth = 80, ToolBox_TabItemSpacing = 4, ToolBox_TabMarginWidth = 8, // tooltips ToolTip_FrameWidth = 3, // list headers Header_MarginWidth = 6, Header_ItemSpacing = 4, Header_ArrowSize = 12, // tree view ItemView_ArrowSize = 10, ItemView_ItemMarginWidth = 3, SidePanel_ItemMarginWidth = 4, // splitter Splitter_SplitterWidth = 1, // shadow dimensions Shadow_Overlap = 2, // group box GroupBox_TopMargin = 3 }; //* corners enum Corner { CornerTopLeft = 0x1, CornerTopRight = 0x2, CornerBottomLeft = 0x4, CornerBottomRight = 0x8, CornersTop = CornerTopLeft|CornerTopRight, CornersBottom = CornerBottomLeft|CornerBottomRight, CornersLeft = CornerTopLeft|CornerBottomLeft, CornersRight = CornerTopRight|CornerBottomRight, AllCorners = CornerTopLeft|CornerTopRight|CornerBottomLeft|CornerBottomRight }; Q_DECLARE_FLAGS(Corners, Corner) } Q_DECLARE_OPERATORS_FOR_FLAGS(dstyle::Corners) #endif // COMMON_H dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/commonhelper.cpp000066400000000000000000000052471323676556600247470ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include "style.h" #include "commonhelper.h" #include "geometryutils.h" namespace dstyle { void CommonHelper::renderFrame(QPainter *painter, const QRect &rect, const QBrush &brush, const QBrush &outline) { painter->setRenderHint( QPainter::Antialiasing ); QRectF frameRect( rect ); qreal radius( GeometryUtils::frameRadius() ); // set pen if( outline.style() != Qt::NoBrush ) { painter->setPen( QPen(outline, Metrics::Painter_PenWidth) ); } else { painter->setPen( Qt::NoPen ); } // set brush painter->setBrush( brush ); // render painter->drawRoundedRect( frameRect, radius, radius ); } Style *CommonHelper::widgetStyle(const QWidget *widget) { if (!widget) return Q_NULLPTR; Style *style (Q_NULLPTR); style = qobject_cast(widget->style()); if (!style) { // FIXME(hualet): why qobject_cast won't work and cause the whole plugin // to stop loading. if (widget->style()->metaObject()->className() != QLatin1String("QStyleSheetStyle")) return Q_NULLPTR; QStyleSheetStyle * sstyle = static_cast(widget->style()); // FIXME(hualet): don't know why QStyleSheetStyle::base can be empty sometime, // and also don't know why QStyleSheetStyle::baseStyle is not exported or something, // causing the program to crash if I use baseStyle() instead of base directly here. // Basically below 9 lines are copied from QStyleSheetStyle::baseStyle implementation. QStyle *base ( Q_NULLPTR ); if (sstyle->base) { base = sstyle->base; } else if (qApp->style()->metaObject()->className() == QLatin1String("QStyleSheetStyle")) { base = static_cast(qApp->style())->base; } else { base = qApp->style(); } style = qobject_cast(base); } return style; } } dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/commonhelper.h000066400000000000000000000020021323676556600243760ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef COMMONHELPER_H #define COMMONHELPER_H #include namespace dstyle { class Style; class CommonHelper { public: static void renderFrame(QPainter* painter, const QRect& rect, const QBrush &brush, const QBrush &outline); static Style *widgetStyle(const QWidget *widget); }; } #endif // COMMONHELPER_H dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/config.tests/000077500000000000000000000000001323676556600241515ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/config.tests/dtkwidget/000077500000000000000000000000001323676556600261375ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/config.tests/dtkwidget/dtkwidget.pro000066400000000000000000000001161323676556600306450ustar00rootroot00000000000000CONFIG += qt c++11 link_pkgconfig PKGCONFIG += dtkwidget SOURCES += main.cpp dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/config.tests/dtkwidget/main.cpp000066400000000000000000000015731323676556600275750ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include int main() { QWindow *w = new QWindow(); DPlatformWindowHandle handle(w); handle.setEnableBlurWindow(true); return 0; } dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/dstyleanimation.cpp000066400000000000000000000210131323676556600254500ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (C) 2015 The Qt Company Ltd. ** Contact: http://www.qt.io/licensing/ ** ** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL21$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see http://www.qt.io/terms-conditions. For further ** information use the contact form at http://www.qt.io/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 or version 3 as published by the Free ** Software Foundation and appearing in the file LICENSE.LGPLv21 and ** LICENSE.LGPLv3 included in the packaging of this file. Please review the ** following information to ensure the GNU Lesser General Public License ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** As a special exception, The Qt Company gives you certain additional ** rights. These rights are described in The Qt Company LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "dstyleanimation.h" #ifndef QT_NO_ANIMATION #include #include #include namespace dstyle { static const qreal ScrollBarFadeOutDuration = 200.0; static const qreal ScrollBarFadeOutDelay = 450.0; DStyleAnimation::DStyleAnimation(QObject *target) : QAbstractAnimation(target), _delay(0), _duration(-1), _startTime(QTime::currentTime()), _fps(ThirtyFps), _skip(0) { } DStyleAnimation::~DStyleAnimation() { } QObject *DStyleAnimation::target() const { return parent(); } int DStyleAnimation::duration() const { return _duration; } void DStyleAnimation::setDuration(int duration) { _duration = duration; } int DStyleAnimation::delay() const { return _delay; } void DStyleAnimation::setDelay(int delay) { _delay = delay; } QTime DStyleAnimation::startTime() const { return _startTime; } void DStyleAnimation::setStartTime(const QTime &time) { _startTime = time; } DStyleAnimation::FrameRate DStyleAnimation::frameRate() const { return _fps; } void DStyleAnimation::setFrameRate(FrameRate fps) { _fps = fps; } void DStyleAnimation::updateTarget() { QEvent event(QEvent::StyleAnimationUpdate); event.setAccepted(false); QCoreApplication::sendEvent(target(), &event); if (!event.isAccepted()) stop(); } void DStyleAnimation::start() { _skip = 0; QAbstractAnimation::start(DeleteWhenStopped); } bool DStyleAnimation::isUpdateNeeded() const { return currentTime() > _delay; } void DStyleAnimation::updateCurrentTime(int) { if (++_skip >= _fps) { _skip = 0; if (target() && isUpdateNeeded()) updateTarget(); } } DProgressStyleAnimation::DProgressStyleAnimation(int speed, QObject *target) : DStyleAnimation(target), _speed(speed), _step(-1) { } int DProgressStyleAnimation::animationStep() const { return currentTime() / (1000.0 / _speed); } int DProgressStyleAnimation::progressStep(int width) const { int step = animationStep(); int progress = (step * width / _speed) % width; if (((step * width / _speed) % (2 * width)) >= width) progress = width - progress; return progress; } int DProgressStyleAnimation::speed() const { return _speed; } void DProgressStyleAnimation::setSpeed(int speed) { _speed = speed; } bool DProgressStyleAnimation::isUpdateNeeded() const { if (DStyleAnimation::isUpdateNeeded()) { int current = animationStep(); if (_step == -1 || _step != current) { _step = current; return true; } } return false; } DNumberStyleAnimation::DNumberStyleAnimation(QObject *target) : DStyleAnimation(target), _start(0.0), _end(1.0), _prev(0.0) { setDuration(250); } qreal DNumberStyleAnimation::startValue() const { return _start; } void DNumberStyleAnimation::setStartValue(qreal value) { _start = value; } qreal DNumberStyleAnimation::endValue() const { return _end; } void DNumberStyleAnimation::setEndValue(qreal value) { _end = value; } qreal DNumberStyleAnimation::currentValue() const { qreal step = qreal(currentTime() - delay()) / (duration() - delay()); return _start + qMax(qreal(0), step) * (_end - _start); } bool DNumberStyleAnimation::isUpdateNeeded() const { if (DStyleAnimation::isUpdateNeeded()) { qreal current = currentValue(); if (!qFuzzyCompare(_prev, current)) { _prev = current; return true; } } return false; } DBlendStyleAnimation::DBlendStyleAnimation(Type type, QObject *target) : DStyleAnimation(target), _type(type) { setDuration(250); } QImage DBlendStyleAnimation::startImage() const { return _start; } void DBlendStyleAnimation::setStartImage(const QImage& image) { _start = image; } QImage DBlendStyleAnimation::endImage() const { return _end; } void DBlendStyleAnimation::setEndImage(const QImage& image) { _end = image; } QImage DBlendStyleAnimation::currentImage() const { return _current; } /*! \internal A helper function to blend two images. The result consists of ((alpha)*startImage) + ((1-alpha)*endImage) */ static QImage blendedImage(const QImage &start, const QImage &end, float alpha) { if (start.isNull() || end.isNull()) return QImage(); QImage blended; const int a = qRound(alpha*256); const int ia = 256 - a; const int sw = start.width(); const int sh = start.height(); const int bpl = start.bytesPerLine(); switch (start.depth()) { case 32: { blended = QImage(sw, sh, start.format()); blended.setDevicePixelRatio(start.devicePixelRatio()); uchar *mixed_data = blended.bits(); const uchar *back_data = start.bits(); const uchar *front_data = end.bits(); for (int sy = 0; sy < sh; sy++) { quint32* mixed = (quint32*)mixed_data; const quint32* back = (const quint32*)back_data; const quint32* front = (const quint32*)front_data; for (int sx = 0; sx < sw; sx++) { quint32 bp = back[sx]; quint32 fp = front[sx]; mixed[sx] = qRgba ((qRed(bp)*ia + qRed(fp)*a)>>8, (qGreen(bp)*ia + qGreen(fp)*a)>>8, (qBlue(bp)*ia + qBlue(fp)*a)>>8, (qAlpha(bp)*ia + qAlpha(fp)*a)>>8); } mixed_data += bpl; back_data += bpl; front_data += bpl; } } default: break; } return blended; } void DBlendStyleAnimation::updateCurrentTime(int time) { DStyleAnimation::updateCurrentTime(time); float alpha = 1.0; if (duration() > 0) { if (_type == Pulse) { time = time % duration() * 2; if (time > duration()) time = duration() * 2 - time; } alpha = time / static_cast(duration()); if (_type == Transition && time > duration()) { alpha = 1.0; stop(); } } else if (time > 0) { stop(); } _current = blendedImage(_start, _end, alpha); } DScrollbarStyleAnimation::DScrollbarStyleAnimation(Mode mode, QObject *target) : DNumberStyleAnimation(target), _mode(mode), _active(false) { switch (mode) { case Activating: setDuration(ScrollBarFadeOutDuration); setStartValue(0.0); setEndValue(1.0); break; case Deactivating: setDuration(ScrollBarFadeOutDelay + ScrollBarFadeOutDuration); setDelay(ScrollBarFadeOutDelay); setStartValue(1.0); setEndValue(0.0); break; } } DScrollbarStyleAnimation::Mode DScrollbarStyleAnimation::mode() const { return _mode; } bool DScrollbarStyleAnimation::wasActive() const { return _active; } void DScrollbarStyleAnimation::setActive(bool active) { _active = active; } } // end namespace dstyle #endif //QT_NO_ANIMATION dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/dstyleanimation.h000066400000000000000000000107121323676556600251210ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (C) 2015 The Qt Company Ltd. ** Contact: http://www.qt.io/licensing/ ** ** This file is part of the QtWidgets module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL21$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see http://www.qt.io/terms-conditions. For further ** information use the contact form at http://www.qt.io/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 or version 3 as published by the Free ** Software Foundation and appearing in the file LICENSE.LGPLv21 and ** LICENSE.LGPLv3 included in the packaging of this file. Please review the ** following information to ensure the GNU Lesser General Public License ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** As a special exception, The Qt Company gives you certain additional ** rights. These rights are described in The Qt Company LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef QSTYLEANIMATION #define QSTYLEANIMATION #include "qabstractanimation.h" #include "qdatetime.h" #include "qimage.h" namespace dstyle { #ifndef QT_NO_ANIMATION // // W A R N I N G // ------------- // // This file is not part of the Qt API. It exists for the convenience of // qcommonstyle.cpp. This header file may change from version to version // without notice, or even be removed. // // We mean it. // class DStyleAnimation : public QAbstractAnimation { Q_OBJECT public: DStyleAnimation(QObject *target); virtual ~DStyleAnimation(); QObject *target() const; int duration() const Q_DECL_OVERRIDE; void setDuration(int duration); int delay() const; void setDelay(int delay); QTime startTime() const; void setStartTime(const QTime &time); enum FrameRate { DefaultFps, SixtyFps, ThirtyFps, TwentyFps }; FrameRate frameRate() const; void setFrameRate(FrameRate fps); void updateTarget(); public Q_SLOTS: void start(); protected: virtual bool isUpdateNeeded() const; virtual void updateCurrentTime(int time) Q_DECL_OVERRIDE; private: int _delay; int _duration; QTime _startTime; FrameRate _fps; int _skip; }; class DProgressStyleAnimation : public DStyleAnimation { Q_OBJECT public: DProgressStyleAnimation(int speed, QObject *target); int animationStep() const; int progressStep(int width) const; int speed() const; void setSpeed(int speed); protected: bool isUpdateNeeded() const Q_DECL_OVERRIDE; private: int _speed; mutable int _step; }; class DNumberStyleAnimation : public DStyleAnimation { Q_OBJECT public: DNumberStyleAnimation(QObject *target); qreal startValue() const; void setStartValue(qreal value); qreal endValue() const; void setEndValue(qreal value); qreal currentValue() const; protected: bool isUpdateNeeded() const Q_DECL_OVERRIDE; private: qreal _start; qreal _end; mutable qreal _prev; }; class DBlendStyleAnimation : public DStyleAnimation { Q_OBJECT public: enum Type { Transition, Pulse }; DBlendStyleAnimation(Type type, QObject *target); QImage startImage() const; void setStartImage(const QImage& image); QImage endImage() const; void setEndImage(const QImage& image); QImage currentImage() const; protected: virtual void updateCurrentTime(int time) Q_DECL_OVERRIDE; private: Type _type; QImage _start; QImage _end; QImage _current; }; class DScrollbarStyleAnimation : public DNumberStyleAnimation { Q_OBJECT public: enum Mode { Activating, Deactivating }; DScrollbarStyleAnimation(Mode mode, QObject *target); Mode mode() const; bool wasActive() const; void setActive(bool active); private: Mode _mode; bool _active; }; #endif // QT_NO_ANIMATION } // end namespace dstyle #endif // QSTYLEANIMATION_P dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/dstyleplugin.cpp000066400000000000000000000025201323676556600247710ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dstyleplugin.h" #include "style.h" DStylePlugin::DStylePlugin(QObject *parent) : QStylePlugin(parent) { } QStyle *DStylePlugin::create(const QString &key) { if (key == "ddark") { return new dstyle::Style(dstyle::StyleDark); } else if (key == "dlight") { return new dstyle::Style(dstyle::StyleLight); } else if (key == "dsemidark") { return new dstyle::Style(dstyle::StyleSemiDark); } else if (key == "dsemilight") { return new dstyle::Style(dstyle::StyleSemiLight); } return nullptr; } #if QT_VERSION < 0x050000 Q_EXPORT_PLUGIN2(DStylePlugin, DStylePlugin) #endif // QT_VERSION < 0x050000 dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/dstyleplugin.h000066400000000000000000000021331323676556600244360ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DStylePlugin_H #define DStylePlugin_H #include class DStylePlugin : public QStylePlugin { Q_OBJECT #if QT_VERSION >= 0x050000 Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QStyleFactoryInterface" FILE "dstyleplugin.json") #endif // QT_VERSION >= 0x050000 public: DStylePlugin(QObject *parent = 0); QStyle* create(const QString &key) Q_DECL_OVERRIDE; }; #endif // DStylePlugin_H dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/dstyleplugin.json000066400000000000000000000001001323676556600251500ustar00rootroot00000000000000{ "Keys" : ["ddark", "dlight", "dsemidark", "dsemilight"] } dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/dstyleplugin.pro000066400000000000000000000031661323676556600250160ustar00rootroot00000000000000#------------------------------------------------- # # Project created by QtCreator 2016-10-18T17:21:21 # #------------------------------------------------- QT += core gui widgets widgets-private core-private gui-private CONFIG += link_pkgconfig c++11 PKGCONFIG += dtkwidget TARGET = dstyleplugin TEMPLATE = lib CONFIG += plugin SOURCES += dstyleplugin.cpp \ style.cpp \ sliderhelper.cpp \ colorutils.cpp \ geometryutils.cpp \ paletteextended.cpp \ pushbuttonhelper.cpp \ framehelper.cpp \ lineedithelper.cpp \ commonhelper.cpp \ scrollbarhelper.cpp \ painterhelper.cpp \ menuhelper.cpp \ dstyleanimation.cpp \ progressbarhelper.cpp \ checkboxhelper.cpp \ rubberbandhelper.cpp \ headerviewhelper.cpp \ comboboxhelper.cpp \ toolbuttonhelper.cpp \ tabwidgethelper.cpp \ spinboxhelper.cpp \ hidpihelper.cpp \ tabbarhelper.cpp HEADERS += dstyleplugin.h \ style.h \ common.h \ colorutils.h \ geometryutils.h \ paletteextended.h \ commonhelper.h \ painterhelper.h \ dstyleanimation.h \ hidpihelper.h DISTFILES += dstyleplugin.json DESTDIR = $$_PRO_FILE_PWD_/../bin/plugins/styles/ unix { target.path = $$[QT_INSTALL_PLUGINS]/styles/ INSTALLS += target } RESOURCES += \ brushchemes.qrc \ assets_light.qrc \ assets_dark.qrc \ assets_semidark.qrc \ assets_semilight.qrc \ assets.qrc load(configure) qtCompileTest(dtkwidget) { DEFINES += DTK_SUPPORT_BLUR_WINDOW message(The libdtkwidget support blur window) } else { warning(The libdtkwidget can not support blur window) } dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/framehelper.cpp000066400000000000000000000030241323676556600245400ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "style.h" #include #include #include namespace dstyle { bool Style::drawFramePrimitive(const QStyleOption *option, QPainter *painter, const QWidget *widget) const { // combo box drop-list. // line edit completer drop-list if (widgetIsComboBoxPopupFramePrimitive(widget)) { drawComboBoxPopupFramePrimitive(option, painter); return true; } return true; } bool Style::drawFrameFocusRectPrimitive(const QStyleOption *option, QPainter *painter, const QWidget *widget) const { Q_UNUSED(option) Q_UNUSED(painter) Q_UNUSED(widget) // draw nothing return true; } bool Style::drawShapedFrameControl(const QStyleOption *option, QPainter *painter, const QWidget *widget) const { Q_UNUSED(option) Q_UNUSED(painter) Q_UNUSED(widget) return false; } } dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/geometryutils.cpp000066400000000000000000000025601323676556600251660ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "geometryutils.h" namespace dstyle { QRect GeometryUtils::centerRect(const QRect &rect, const QSize &size) { return centerRect( rect, size.width(), size.height() ); } QRect GeometryUtils::centerRect(const QRect &rect, int width, int height) { QRect newRect = rect; newRect.setWidth(width); newRect.setHeight(height); newRect.moveCenter(rect.center()); return newRect; } QRect GeometryUtils::insideMargin(const QRect &r, int margin) { return insideMargin( r, margin, margin ); } QRect GeometryUtils::insideMargin(const QRect &r, int marginWidth, int marginHeight) { return r.adjusted( marginWidth, marginHeight, -marginWidth, -marginHeight ); } } dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/geometryutils.h000066400000000000000000000025771323676556600246430ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef GEOMETRYUTILS_H #define GEOMETRYUTILS_H #include #include "common.h" namespace dstyle { class GeometryUtils { public: static QRect centerRect(const QRect &rect, const QSize& size ); static QRect centerRect(const QRect &rect, int width, int height); static QRect insideMargin( const QRect& r, int margin ); static QRect insideMargin( const QRect& r, int marginWidth, int marginHeight ); static qreal frameRadius( qreal bias = 0 ) { return qMax( qreal( Metrics::Frame_FrameRadius ) - 0.5 + bias, 0.0 ); } static QRectF shadowRect( const QRectF& rect ) { return rect.adjusted( 0.5, 0.5, -0.5, -0.5 ).translated( 0.5, 0.5 ); } }; } #endif // GEOMETRYUTILS_H dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/headerviewhelper.cpp000066400000000000000000000043461323676556600256010ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "style.h" #include "paletteextended.h" namespace dstyle { bool Style::drawIndicatorHeaderArrowPrimitive(const QStyleOption *option, QPainter *painter, const QWidget *widget) const { Q_UNUSED(widget) if (const QStyleOptionHeader *header = qstyleoption_cast(option)) { QBrush brush; if (header->sortIndicator & QStyleOptionHeader::SortUp) { brush = m_palette->brush(PaletteExtended::HeaderView_ArrowIndicatorDownIcon); } else if (header->sortIndicator & QStyleOptionHeader::SortDown) { brush = m_palette->brush(PaletteExtended::HeaderView_ArrowIndicatorUpIcon); } if (brush.style() != Qt::TexturePattern) return false; fillBrush(painter, option->rect, brush); } return true; } QRect Style::headerArrowRect(const QStyleOption *opt, const QWidget *widget) const { QRect r; int h = opt->rect.height(); int w = opt->rect.width(); int x = opt->rect.x(); int y = opt->rect.y(); int margin = proxy()->pixelMetric(QStyle::PM_HeaderMargin, opt, widget); if (opt->state & State_Horizontal) { int horiz_size = Metrics::Header_ArrowSize; r.setRect(x + w - margin * 2 - horiz_size, y + (h - horiz_size) / 2, horiz_size, horiz_size); } else { int vert_size = Metrics::Header_ArrowSize; r.setRect(x + (w - vert_size) / 2, y + h - margin * 2 - vert_size, vert_size, vert_size); } r = visualRect(opt->direction, opt->rect, r); return r; } } dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/hidpihelper.cpp000066400000000000000000000015571323676556600245540ustar00rootroot00000000000000#include "hidpihelper.h" #include #include #include namespace dstyle { QPixmap HiDPIHelper::loadPixmap(const QString &fileName, qreal devicePixelRatio) { if (qFuzzyCompare(devicePixelRatio, 0)) devicePixelRatio = qGuiApp->devicePixelRatio(); qreal sourceDevicePixelRatio = 1.0; QPixmap pixmap; if (!qFuzzyCompare(sourceDevicePixelRatio, devicePixelRatio)) { QImageReader reader; reader.setFileName(qt_findAtNxFile(fileName, devicePixelRatio, &sourceDevicePixelRatio)); if (reader.canRead()) { reader.setScaledSize(reader.size() * (devicePixelRatio / sourceDevicePixelRatio)); pixmap = QPixmap::fromImage(reader.read()); pixmap.setDevicePixelRatio(devicePixelRatio); } } else { pixmap.load(fileName); } return pixmap; } } dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/hidpihelper.h000066400000000000000000000003441323676556600242120ustar00rootroot00000000000000#ifndef HIDPIHELPER_H #define HIDPIHELPER_H #include namespace dstyle { class HiDPIHelper { public: static QPixmap loadPixmap(const QString &fileName, qreal devicePixelRatio = 0); }; } #endif // HIDPIHELPER_H dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/lineedithelper.cpp000066400000000000000000000024361323676556600252510ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "commonhelper.h" #include "common.h" #include "style.h" #include "paletteextended.h" namespace dstyle { bool Style::drawFrameLineEditPrimitive(const QStyleOption *option, QPainter *painter, const QWidget *widget) const { Q_UNUSED(widget) const QRect& rect( option->rect ); // render const QBrush background(m_palette->brush(PaletteExtended::LineEdit_BackgroundBrush, option) ); const QBrush outline(m_palette->brush(PaletteExtended::LineEdit_BorderBrush, option) ); CommonHelper::renderFrame( painter, rect, background, outline ); return true; } }// end namespace dstyle dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/menuhelper.cpp000066400000000000000000000331401323676556600244140ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "style.h" #include "commonhelper.h" #include "paletteextended.h" #include #include #include #include #include #include #include #include DWIDGET_USE_NAMESPACE namespace dstyle { bool Style::isVisibleMenuShortText() const { DApplication *app = qobject_cast(qApp); if (!app) { return true; } const QVariant propertyValue = app->property("visibleMenuShortcutText").toBool(); return propertyValue.isValid() ? propertyValue.toBool() : false; } bool Style::isVisibleMenuCheckBox() const { DApplication *app = qobject_cast(qApp); if (!app) { return true; } const QVariant propertyValue = app->property("visibleMenuCheckboxWidget").toBool(); return propertyValue.isValid() ? propertyValue.toBool() : false; } bool Style::isVisibleMenuIcon() const { DApplication *app = qobject_cast(qApp); if (!app) { return true; } const QVariant propertyValue = app->property("visibleMenuIcon").toBool(); return propertyValue.isValid() ? propertyValue.toBool() : false; } bool isEdit(const QWidget *widget) { return qobject_cast(widget) || qobject_cast(widget) || qobject_cast(widget); } bool Style::drawMenuItemControl(const QStyleOption *option, QPainter *painter, const QWidget *widget) const { Q_D(const Style); painter->save(); // Draws one item in a popup menu. if (const QStyleOptionMenuItem *menuItem = qstyleoption_cast(option)) { // QColor highlightOutline = d->highlightedOutline(option->palette); QColor highlight = option->palette.highlight().color(); if (menuItem->menuItemType == QStyleOptionMenuItem::Separator) { int w = 0; if (!menuItem->text.isEmpty()) { painter->setFont(menuItem->font); proxy()->drawItemText(painter, menuItem->rect.adjusted(Menu_SeparatorItemHMargin, 0, -Menu_SeparatorItemHMargin, 0), Qt::AlignLeft | Qt::AlignVCenter, menuItem->palette, menuItem->state & State_Enabled, menuItem->text, QPalette::Text); w = menuItem->fontMetrics.width(menuItem->text) + Menu_SeparatorItemHMargin; } painter->setPen(m_palette->brush(PaletteExtended::Menu_SeparatorColor, option).color()); bool reverse = menuItem->direction == Qt::RightToLeft; painter->drawLine(menuItem->rect.left() + Menu_SeparatorItemHMargin + (reverse ? 0 : w), menuItem->rect.center().y(), menuItem->rect.right() - Menu_SeparatorItemHMargin - (reverse ? w : 0), menuItem->rect.center().y()); painter->restore(); return true; } bool selected = menuItem->state & State_Selected && menuItem->state & State_Enabled; if (selected) { QRect r = option->rect; painter->fillRect(r, highlight); // painter->setPen(QPen(highlightOutline)); // painter->drawRect(QRectF(r)); } bool checkable = menuItem->checkType != QStyleOptionMenuItem::NotCheckable; bool checked = menuItem->checked; // bool sunken = menuItem->state & State_Sunken; // bool enabled = menuItem->state & State_Enabled; bool ignoreCheckMark = false; int checkcol = qMax(menuItem->maxIconWidth, 20); if (qobject_cast(widget) || (option->styleObject && option->styleObject->property("_q_isComboBoxPopupItem").toBool())) ignoreCheckMark = true; //ignore the checkmarks provided by the QComboMenuDelegate if (!ignoreCheckMark) { // Check QRect checkRect(option->rect.left() + 10, option->rect.center().y() - 4, 14, 14); checkRect = visualRect(menuItem->direction, menuItem->rect, checkRect); if (checkable) { if (!isVisibleMenuCheckBox() || (menuItem->checkType & QStyleOptionMenuItem::Exclusive)) { // Radio button if (checked/* || sunken*/) { QStyleOptionMenuItem newMI = *menuItem; newMI.rect = checkRect; drawDeepinStyleIcon("check", &newMI, painter, widget); } } else { // Check box if (menuItem->icon.isNull()) { QStyleOptionButton box; box.QStyleOption::operator=(*option); box.rect = checkRect; if (checked) box.state |= State_On; proxy()->drawPrimitive(PE_IndicatorCheckBox, &box, painter, widget); } } } } else { //ignore checkmark if (menuItem->icon.isNull()) checkcol = 0; else checkcol = menuItem->maxIconWidth; } // Text and icon, ripped from windows style bool dis = !(menuItem->state & State_Enabled); bool act = menuItem->state & State_Selected; const QStyleOption *opt = option; const QStyleOptionMenuItem *menuitem = menuItem; QPainter *p = painter; QRect vCheckRect = visualRect(opt->direction, menuitem->rect, QRect(menuitem->rect.x() + 4, menuitem->rect.y(), checkcol, menuitem->rect.height())); // NOTE: If widget is QLineEdit and qApp is DApplication, will hide menu icon if (!menuItem->icon.isNull() && (!isEdit(widget) || isVisibleMenuIcon())) { QIcon::Mode mode = dis ? QIcon::Disabled : QIcon::Normal; if (act && !dis) mode = QIcon::Active; QPixmap pixmap; int smallIconSize = proxy()->pixelMetric(PM_SmallIconSize, option, widget); QSize iconSize(smallIconSize, smallIconSize); if (const QComboBox *combo = qobject_cast(widget)) iconSize = combo->iconSize(); if (checked) pixmap = menuItem->icon.pixmap(iconSize, mode, QIcon::On); else pixmap = menuItem->icon.pixmap(iconSize, mode); const int pixw = pixmap.width() / pixmap.devicePixelRatio(); const int pixh = pixmap.height() / pixmap.devicePixelRatio(); QRect pmr(0, 0, pixw, pixh); pmr.moveCenter(vCheckRect.center()); painter->setPen(menuItem->palette.text().color()); if (!ignoreCheckMark && checkable && checked) { QStyleOption opt = *option; if (act) { QColor activeColor = mergedColors(option->palette.background().color(), option->palette.highlight().color()); opt.palette.setBrush(QPalette::Button, activeColor); } opt.state |= State_Sunken; opt.rect = vCheckRect; proxy()->drawPrimitive(PE_PanelButtonCommand, &opt, painter, widget); } painter->drawPixmap(pmr.topLeft(), pixmap); } if (selected) { painter->setPen(menuItem->palette.highlightedText().color()); } else { painter->setPen(menuItem->palette.text().color()); } int x, y, w, h; menuitem->rect.getRect(&x, &y, &w, &h); int tab = menuitem->tabWidth; QColor discol; if (dis) { discol = menuitem->palette.brush(QPalette::Disabled, QPalette::Text).color(); p->setPen(discol); } int xm = Menu_ItemFrameWidth + checkcol + Menu_ItemHTextMargin + 2; int xpos = menuitem->rect.x() + xm; QRect textRect(xpos, y + Menu_ItemVTextMargin, w - xm - Menu_PanelRightPadding - tab + 1, h - 2 * Menu_ItemVTextMargin); QRect vTextRect = visualRect(opt->direction, menuitem->rect, textRect); QString s = menuitem->text; if (!s.isEmpty()) { // draw text p->save(); QFont font = menuitem->font; // font may not have any "hard" flags set. We override // the point size so that when it is resolved against the device, this font will win. // This is mainly to handle cases where someone sets the font on the window // and then the combo inherits it and passes it onward. At that point the resolve mask // is very, very weak. This makes it stonger. font.setPointSizeF(QFontInfo(menuItem->font).pointSizeF()); if (menuitem->menuItemType == QStyleOptionMenuItem::DefaultItem) font.setBold(true); p->setFont(font); int t = s.indexOf(QLatin1Char('\t')); int text_flags = Qt::AlignVCenter | Qt::TextShowMnemonic | Qt::TextDontClip | Qt::TextSingleLine; if (!styleHint(SH_UnderlineShortcut, menuitem, widget)) text_flags |= Qt::TextHideMnemonic; text_flags |= Qt::AlignLeft; // NOTE: hide short text if (t >= 0 && isVisibleMenuShortText()) { QRect vShortcutRect = visualRect(opt->direction, menuitem->rect, QRect(textRect.topRight(), QPoint(menuitem->rect.right(), textRect.bottom()))); if (dis && !act && proxy()->styleHint(SH_EtchDisabledText, option, widget)) { p->setPen(menuitem->palette.light().color()); p->drawText(vShortcutRect.adjusted(1, 1, 1, 1), text_flags, s.mid(t + 1)); p->setPen(discol); } p->drawText(vShortcutRect, text_flags, s.mid(t + 1)); s = s.left(t); } if (dis && !act && proxy()->styleHint(SH_EtchDisabledText, option, widget)) { p->setPen(menuitem->palette.light().color()); p->drawText(vTextRect.adjusted(1, 1, 1, 1), text_flags, s.left(t)); p->setPen(discol); } p->drawText(vTextRect, text_flags, s.left(t)); p->restore(); } // Arrow if (menuItem->menuItemType == QStyleOptionMenuItem::SubMenu) {// draw sub menu arrow int dim = (menuItem->rect.height() - 4) / 2; // PrimitiveElement arrow; // arrow = option->direction == Qt::RightToLeft ? PE_IndicatorArrowLeft : PE_IndicatorArrowRight; int xpos = menuItem->rect.left() + menuItem->rect.width() - 3 - dim; QRect vSubMenuRect = visualRect(option->direction, menuItem->rect, QRect(xpos, menuItem->rect.top() + menuItem->rect.height() / 2 - dim / 2, dim, dim)); QStyleOptionMenuItem newMI = *menuItem; newMI.rect = vSubMenuRect; if (selected) newMI.palette.setColor(QPalette::Foreground, newMI.palette.highlightedText().color()); drawDeepinStyleIcon("arrow-right", &newMI, painter, widget); } } painter->restore(); return true; } bool Style::drawMenuBarItemControl(const QStyleOption *option, QPainter *painter, const QWidget *widget) const { Style *style = CommonHelper::widgetStyle(widget); if (!style) return false; const bool enabled(option->state & QStyle::State_Enabled); const bool mouseOver(option->state & QStyle::State_MouseOver); const bool sunken((option->state | QStyle::State_Sunken) == option->state); if (mouseOver || sunken) { const QColor shadow( Qt::transparent ); const QBrush outline(style->m_palette->brush(PaletteExtended::PushButton_BorderBrush, option)); const QBrush background(style->m_palette->brush(PaletteExtended::PushButton_BackgroundBrush, option)); // render drawPushButtonFrame(painter, option->rect, background, outline, shadow ); } if (const QStyleOptionMenuItem *mbi = qstyleoption_cast(option)) { uint alignment = Qt::AlignCenter | Qt::TextShowMnemonic | Qt::TextDontClip | Qt::TextSingleLine; if (!proxy()->styleHint(SH_UnderlineShortcut, mbi, widget)) alignment |= Qt::TextHideMnemonic; int iconExtent = proxy()->pixelMetric(PM_SmallIconSize); QPixmap pix = mbi->icon.pixmap(qt_getWindow(widget), QSize(iconExtent, iconExtent), (enabled) ? (mouseOver ? QIcon::Active : QIcon::Normal) : QIcon::Disabled); if (!pix.isNull()) proxy()->drawItemPixmap(painter, mbi->rect, alignment, pix); else proxy()->drawItemText(painter, mbi->rect, alignment, mbi->palette, enabled, mbi->text, QPalette::ButtonText); } return true; } } // end namespace dstyle dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/painterhelper.cpp000066400000000000000000000101771323676556600251170ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "painterhelper.h" #include #include namespace dstyle { namespace PainterHelper { void drawRect(QPainter *painter, const QRectF &rect, const QBrush &background, qreal borderWidth, const QBrush &border) { painter->fillRect(rect, background); if (qFuzzyIsNull(borderWidth) || background == border) return; painter->save(); painter->setBrush(background); painter->setPen(QPen(border, borderWidth)); painter->drawRect(rect.adjusted(0, 0, -1, -1)); painter->restore(); } void drawRoundedRect(QPainter *painter, const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode, const QBrush &background, qreal borderWidth, const QBrush &border) { QPainterPath path; path.addRoundedRect(rect, xRadius, yRadius, mode); drawPath(painter, path, background, borderWidth, border); } void drawEllipse(QPainter *painter, const QRectF &rect, const QBrush &background, qreal borderWidth, const QBrush &border) { QPainterPath path; path.addEllipse(rect); drawPath(painter, path, background, borderWidth, border); } void drawPath(QPainter *painter, const QPainterPath &path, const QBrush &background, qreal borderWidth, const QBrush &border) { painter->fillPath(path, background); if (qFuzzyIsNull(borderWidth) || background == border) return; painter->save(); painter->setBrush(background); painter->setPen(QPen(border, borderWidth)); painter->drawPath(path); painter->restore(); } QPainterPath roundedPath(const QRectF &rect, Corners corners, qreal radius) { QPainterPath path; // simple cases if( corners == 0 ) { path.addRect( rect ); return path; } if( corners == AllCorners ) { path.addRoundedRect( rect, radius, radius ); return path; } const QSizeF cornerSize( 2*radius, 2*radius ); // rotate counterclockwise // top left corner if( corners & CornerTopLeft ) { path.moveTo( rect.topLeft() + QPointF( radius, 0 ) ); path.arcTo( QRectF( rect.topLeft(), cornerSize ), 90, 90 ); } else path.moveTo( rect.topLeft() ); // bottom left corner if( corners & CornerBottomLeft ) { path.lineTo( rect.bottomLeft() - QPointF( 0, radius ) ); path.arcTo( QRectF( rect.bottomLeft() - QPointF( 0, 2*radius ), cornerSize ), 180, 90 ); } else path.lineTo( rect.bottomLeft() ); // bottom right corner if( corners & CornerBottomRight ) { path.lineTo( rect.bottomRight() - QPointF( radius, 0 ) ); path.arcTo( QRectF( rect.bottomRight() - QPointF( 2*radius, 2*radius ), cornerSize ), 270, 90 ); } else path.lineTo( rect.bottomRight() ); // top right corner if( corners & CornerTopRight ) { path.lineTo( rect.topRight() + QPointF( 0, radius ) ); path.arcTo( QRectF( rect.topRight() - QPointF( 2*radius, 0 ), cornerSize ), 0, 90 ); } else path.lineTo( rect.topRight() ); path.closeSubpath(); return path; } QColor colorBlend(const QColor &color1, const QColor &color2) { QColor c2 = color2.toRgb(); if (c2.alpha() >= 255) return c2; QColor c1 = color1.toRgb(); qreal c1_weight = 1 - c2.alphaF(); int r = c1_weight * c1.red() + c2.alphaF() * c2.red(); int g = c1_weight * c1.green() + c2.alphaF() * c2.green(); int b = c1_weight * c1.blue() + c2.alphaF() * c2.blue(); return QColor(r, g, b); } } // end namespace PainterHelper } // end namespace dtyle dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/painterhelper.h000066400000000000000000000034111323676556600245550ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef PAINTERHELPER_H #define PAINTERHELPER_H #include #include "common.h" QT_BEGIN_NAMESPACE class QPainter; class QPainterPath; QT_END_NAMESPACE namespace dstyle { namespace PainterHelper { void drawRect(QPainter *painter, const QRectF &rect, const QBrush &background, qreal borderWidth = 0, const QBrush &border = Qt::NoBrush); void drawRoundedRect(QPainter *painter, const QRectF &rect, qreal xRadius, qreal yRadius, Qt::SizeMode mode, const QBrush &background, qreal borderWidth = 0, const QBrush &border = Qt::NoBrush); void drawEllipse(QPainter *painter, const QRectF &rect, const QBrush &background, qreal borderWidth = 0, const QBrush &border = Qt::NoBrush); void drawPath(QPainter *painter, const QPainterPath &path, const QBrush &background, qreal borderWidth = 0, const QBrush &border = Qt::NoBrush); QPainterPath roundedPath( const QRectF& rect, Corners corners, qreal radius ); QColor colorBlend(const QColor &color1, const QColor &color2); } // end namespace PainterHelper } // end namespace dtyle #endif // PAINTERHELPER_H dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/paletteextended.cpp000066400000000000000000000246241323676556600254360ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "paletteextended.h" #include #include #include #include #include #include #include #include #include #include #include "hidpihelper.h" QT_BEGIN_NAMESPACE QDebug operator<<(QDebug deg, const QCss::Value &value) { deg << value.toString(); return deg; } QDebug operator<<(QDebug deg, const QCss::Selector &selector) { deg << "specificity:" << selector.specificity() << ", pseudoClass:"<< selector.pseudoClass() << ", pseudoElement:" << selector.pseudoElement(); return deg; } QT_END_NAMESPACE namespace dstyle { QList PaletteExtended::styleTypeToPaletteList; PaletteExtended::PaletteExtended(StyleType type, QObject *parent) : QObject(parent) , m_brushScheme(new QCss::StyleSheet) { init(type); } PaletteExtended *PaletteExtended::instance(StyleType type) { foreach (PaletteExtended *p, styleTypeToPaletteList) { if (p->m_type == type) return p; } PaletteExtended *p = new PaletteExtended(type); styleTypeToPaletteList << p; return p; } PaletteExtended::~PaletteExtended() { delete m_brushScheme; styleTypeToPaletteList.removeOne(this); } static quint64 preprocessClass(qint64 classs) { if (classs & PaletteExtended::PseudoClass_On) classs |= PaletteExtended::PseudoClass_Checked; if (classs & PaletteExtended::PseudoClass_Checked) classs |= PaletteExtended::PseudoClass_On; if (classs & PaletteExtended::PseudoClass_Off) classs |= PaletteExtended::PseudoClass_Unchecked; if (classs & PaletteExtended::PseudoClass_Unchecked) classs |= PaletteExtended::PseudoClass_Off; if (!(classs & PaletteExtended::PseudoClass_Horizontal)) classs |= PaletteExtended::PseudoClass_Vertical; // if (!(classs & PaletteExtended::PseudoClass_Open)) // classs |= PaletteExtended::PseudoClass_Closed; if (!(classs & PaletteExtended::PseudoClass_Disabled)) classs |= PaletteExtended::PseudoClass_Enabled; return classs; } QBrush PaletteExtended::brush(const QWidget *widget, PaletteExtended::BrushName name, quint64 type, const QBrush &defaultBrush) const { const QPair &key = qMakePair(name, type); if (m_brushCache.contains(key)) return m_brushCache.value(key); #if QT_VERSION < QT_VERSION_CHECK(5, 5, 0) QMetaEnum metaEnum = metaObject()->enumerator(0); #else QMetaEnum metaEnum = QMetaEnum::fromType(); #endif QString colorName = metaEnum.valueToKey(name); const QStringList &path = colorName.split("_"); foreach (const QCss::StyleRule &rule, m_brushScheme->nameIndex.values(path.first())) { bool eligible = false; QList pseudoClassList; for (int i = 0; i < rule.selectors.count(); ++i) { const QCss::Selector &selector = rule.selectors.at(i); quint64 pseudoClass = selector.pseudoClass(); pseudoClassList.append(pseudoClass); if (preprocessClass(pseudoClass) == type || pseudoClass == type) { eligible = true; break; } } if (!eligible) { for (int i = pseudoClassList.count() - 1; i >= 0; --i) { quint64 pseudoClass = pseudoClassList.at(i); if ((pseudoClass | type) == type) { eligible = true; break; } } } if (!eligible) continue; foreach (const QCss::Declaration &declaration, rule.declarations) { if (declaration.d->property == path.last()) { QBrush brush = declaration.brushValue(); if (brush.style() == Qt::NoBrush) { const QString &uri = declaration.uriValue(); if (!uri.isEmpty()) { brush.setTexture(HiDPIHelper::loadPixmap(uri, widget ? widget->devicePixelRatioF() : 0)); } } m_brushCache[key] = brush; return brush; } } } m_brushCache[key] = defaultBrush; return defaultBrush; } static quint64 pseudoClass(QStyle::State state) { quint64 pc = 0; if (state & QStyle::State_Enabled) { pc |= PaletteExtended::PseudoClass_Enabled; } // if (state & QStyle::State_Active) // pc |= PaletteExtended::PseudoClass_Active; if (state & QStyle::State_Window) pc |= PaletteExtended::PseudoClass_Window; if (state & QStyle::State_On) pc |= (PaletteExtended::PseudoClass_On | PaletteExtended::PseudoClass_Checked); if (state & QStyle::State_Off) pc |= (PaletteExtended::PseudoClass_Off | PaletteExtended::PseudoClass_Unchecked); if (state & QStyle::State_NoChange) pc |= PaletteExtended::PseudoClass_Indeterminate; if (state & QStyle::State_Selected) pc |= PaletteExtended::PseudoClass_Selected; if (state & QStyle::State_Horizontal) pc |= PaletteExtended::PseudoClass_Horizontal; else pc |= PaletteExtended::PseudoClass_Vertical; // if (state & (QStyle::State_Open | QStyle::State_On | QStyle::State_Sunken)) // pc |= PaletteExtended::PseudoClass_Open; // else // pc |= PaletteExtended::PseudoClass_Closed; if (state & QStyle::State_Children) pc |= PaletteExtended::PseudoClass_Children; if (state & QStyle::State_Sibling) pc |= PaletteExtended::PseudoClass_Sibling; if (state & QStyle::State_ReadOnly) pc |= PaletteExtended::PseudoClass_ReadOnly; if (state & QStyle::State_Item) pc |= PaletteExtended::PseudoClass_Item; #ifdef QT_KEYPAD_NAVIGATION if (state & QStyle::State_HasEditFocus) pc |= PaletteExtended::PseudoClass_EditFocus; #endif return pc; } #define RETURN_BRUSH(Type) {\ const QBrush &d = brush(widget, name, PseudoClass_##Type, normal);\ return extraTypes ? brush(widget, name, PseudoClass_##Type | extraTypes, d) : d;\ } QBrush PaletteExtended::brush(const QWidget *widget, PaletteExtended::BrushName name, const QStyleOption *option, quint64 extraTypes, const QBrush &defaultBrush) const { QBrush normal = brush(widget, name, PseudoClass_Unspecified, defaultBrush); if (extraTypes) normal = brush(widget, name, extraTypes, normal); extraTypes |= pseudoClass(option->state); if (const QStyleOptionButton* buttonOption = qstyleoption_cast(option)) { if (buttonOption->features & QStyleOptionButton::Flat) extraTypes |= PseudoClass_Flat; if (buttonOption->features & QStyleOptionButton::DefaultButton) extraTypes |= PseudoClass_Default; } if (extraTypes) normal = brush(widget, name, extraTypes, normal); if (!(option->state & QStyle::State_Enabled)) RETURN_BRUSH(Disabled) else if (option->state & QStyle::State_Sunken) RETURN_BRUSH(Pressed) else if (option->state & QStyle::State_MouseOver) RETURN_BRUSH(Hover) else if (option->state & QStyle::State_HasFocus) RETURN_BRUSH(Focus) return normal; } QBrush PaletteExtended::brush(PaletteExtended::BrushName name, quint64 type, const QBrush &defaultBrush) const { return brush(0, name, type, defaultBrush); } QBrush PaletteExtended::brush(PaletteExtended::BrushName name, const QStyleOption *option, quint64 extraTypes, const QBrush &defaultBrush) const { return brush(0, name, option, extraTypes, defaultBrush); } void PaletteExtended::polish(QPalette &p) { p.setBrush(QPalette::Base, brush(QPalette_Base)); p.setBrush(QPalette::Text, brush(QPalette_Text)); p.setBrush(QPalette::Window, brush(QPalette_Window)); p.setBrush(QPalette::WindowText, brush(QPalette_WindowText)); p.setBrush(QPalette::Highlight, brush(QPalette_Highlight)); p.setBrush(QPalette::HighlightedText, brush(QPalette_HighlightedText)); p.setBrush(QPalette::Button, brush(QPalette_Button)); p.setBrush(QPalette::ButtonText, brush(QPalette_ButtonText)); p.setBrush(QPalette::Disabled, QPalette::Base, brush(QPalette_Base, PseudoClass_Disabled, p.brush(QPalette::Base))); p.setBrush(QPalette::Disabled, QPalette::Text, brush(QPalette_Text, PseudoClass_Disabled, p.brush(QPalette::Text))); p.setBrush(QPalette::Disabled, QPalette::Window, brush(QPalette_Window, PseudoClass_Disabled, p.brush(QPalette::Window))); p.setBrush(QPalette::Disabled, QPalette::WindowText, brush(QPalette_WindowText, PseudoClass_Disabled, p.brush(QPalette::WindowText))); p.setBrush(QPalette::Disabled, QPalette::Highlight, brush(QPalette_Highlight, PseudoClass_Disabled, p.brush(QPalette::Highlight))); p.setBrush(QPalette::Disabled, QPalette::HighlightedText, brush(QPalette_HighlightedText, PseudoClass_Disabled, p.brush(QPalette::HighlightedText))); p.setBrush(QPalette::Disabled, QPalette::Button, brush(QPalette_Button, PseudoClass_Disabled, p.brush(QPalette::Button))); p.setBrush(QPalette::Disabled, QPalette::ButtonText, brush(QPalette_ButtonText, PseudoClass_Disabled, p.brush(QPalette::ButtonText))); } void PaletteExtended::init(StyleType type) { m_type = type; QFile file; if (type == StyleType::StyleDark) { file.setFileName(":/brushschemes/ddark.css"); } else if (type == StyleType::StyleLight) { file.setFileName(":/brushschemes/dlight.css"); } else if (type == StyleType::StyleSemiDark) { file.setFileName(":/brushschemes/dsemidark.css"); } else if (type == StyleType::StyleSemiLight) { file.setFileName(":/brushschemes/dsemilight.css"); } if (!file.open(QIODevice::ReadOnly)) return; QCss::Parser parser(QString::fromLocal8Bit(file.readAll())); parser.parse(m_brushScheme); } } dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/paletteextended.h000066400000000000000000000162021323676556600250740ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef PALETTEEXTENDED_H #define PALETTEEXTENDED_H #include #include #include #include #include "common.h" QT_BEGIN_NAMESPACE class QStyleOption; QT_END_NAMESPACE namespace QCss { struct StyleSheet; } namespace dstyle { class PaletteExtended : public QObject { Q_OBJECT public: static PaletteExtended *instance(StyleType type); ~PaletteExtended(); enum BrushName { //TODO(hualet): Color Group support. QPalette_Base, QPalette_Text, QPalette_Window, QPalette_WindowText, QPalette_Highlight, QPalette_HighlightedText, QPalette_Button, QPalette_ButtonText, ScrollBar_HandleBrush, ScrollBar_HandleBorderBrush, Slider_GrooveColor, Slider_GrooveHighlightColor, Slider_HandleBrush, Slider_VernierHandleBrush, Slider_HandleBorderColor, Slider_TickmarkColor, PushButton_BackgroundBrush, PushButton_TextColor, PushButton_BorderBrush, PushButton_SuggestButtonColor, PushButton_SuggestTextColor, LineEdit_BorderBrush, LineEdit_BackgroundBrush, Menu_SeparatorColor, Menu_BorderColor, Menu_BackgroundBrush, CheckBox_BackgroundBrush, RadioButton_BackgroundBrush, RubberBand_BackgroundBrush, RubberBand_BorderBrush, HeaderView_ArrowIndicatorUpIcon, HeaderView_ArrowIndicatorDownIcon, SpinBox_MinusBrush, SpinBox_PlusBrush, SpinBox_DownBrush, SpinBox_UpBrush, SpinBox_BorderColor, TabBar_BackgroundBrush, TabBar_BorderBrush, TabBarTab_BackgroundBrush, TabBarTab_BorderBrush, TabBarTab_TextColor, TabBarTab_ActiveColor, TabBarTab_CloseIcon, TabBarTab_CloseIconBackground, TabBarScrollButton_BackgroundBrush, TabBarScrollButton_UpIcon, TabBarScrollButton_DownIcon, TabBarAddButton_BackgroundBrush, TabBarAddButton_Icon }; #if QT_VERSION < QT_VERSION_CHECK(5, 5, 0) Q_ENUMS(BrushName) #else Q_ENUM(BrushName) #endif enum PseudoClassType { PseudoClass_Unknown = Q_UINT64_C(0x0000000000000000), PseudoClass_Enabled = Q_UINT64_C(0x0000000000000001), PseudoClass_Disabled = Q_UINT64_C(0x0000000000000002), PseudoClass_Pressed = Q_UINT64_C(0x0000000000000004), PseudoClass_Focus = Q_UINT64_C(0x0000000000000008), PseudoClass_Hover = Q_UINT64_C(0x0000000000000010), PseudoClass_Checked = Q_UINT64_C(0x0000000000000020), PseudoClass_Unchecked = Q_UINT64_C(0x0000000000000040), PseudoClass_Indeterminate = Q_UINT64_C(0x0000000000000080), PseudoClass_Unspecified = Q_UINT64_C(0x0000000000000100), PseudoClass_Selected = Q_UINT64_C(0x0000000000000200), PseudoClass_Horizontal = Q_UINT64_C(0x0000000000000400), PseudoClass_Vertical = Q_UINT64_C(0x0000000000000800), PseudoClass_Window = Q_UINT64_C(0x0000000000001000), PseudoClass_Children = Q_UINT64_C(0x0000000000002000), PseudoClass_Sibling = Q_UINT64_C(0x0000000000004000), PseudoClass_Default = Q_UINT64_C(0x0000000000008000), PseudoClass_First = Q_UINT64_C(0x0000000000010000), PseudoClass_Last = Q_UINT64_C(0x0000000000020000), PseudoClass_Middle = Q_UINT64_C(0x0000000000040000), PseudoClass_OnlyOne = Q_UINT64_C(0x0000000000080000), PseudoClass_PreviousSelected = Q_UINT64_C(0x0000000000100000), PseudoClass_NextSelected = Q_UINT64_C(0x0000000000200000), PseudoClass_Flat = Q_UINT64_C(0x0000000000400000), PseudoClass_Left = Q_UINT64_C(0x0000000000800000), PseudoClass_Right = Q_UINT64_C(0x0000000001000000), PseudoClass_Top = Q_UINT64_C(0x0000000002000000), PseudoClass_Bottom = Q_UINT64_C(0x0000000004000000), PseudoClass_Exclusive = Q_UINT64_C(0x0000000008000000), PseudoClass_NonExclusive = Q_UINT64_C(0x0000000010000000), PseudoClass_Frameless = Q_UINT64_C(0x0000000020000000), PseudoClass_ReadOnly = Q_UINT64_C(0x0000000040000000), PseudoClass_Active = Q_UINT64_C(0x0000000080000000), PseudoClass_Closable = Q_UINT64_C(0x0000000100000000), PseudoClass_Movable = Q_UINT64_C(0x0000000200000000), PseudoClass_Floatable = Q_UINT64_C(0x0000000400000000), PseudoClass_Minimized = Q_UINT64_C(0x0000000800000000), PseudoClass_Maximized = Q_UINT64_C(0x0000001000000000), PseudoClass_On = Q_UINT64_C(0x0000002000000000), PseudoClass_Off = Q_UINT64_C(0x0000004000000000), PseudoClass_Editable = Q_UINT64_C(0x0000008000000000), PseudoClass_Item = Q_UINT64_C(0x0000010000000000), PseudoClass_Closed = Q_UINT64_C(0x0000020000000000), PseudoClass_Open = Q_UINT64_C(0x0000040000000000), PseudoClass_EditFocus = Q_UINT64_C(0x0000080000000000), PseudoClass_Alternate = Q_UINT64_C(0x0000100000000000), // The Any specifier is never generated, but can be used as a wildcard in searches. PseudoClass_Any = Q_UINT64_C(0x0000ffffffffffff) }; QBrush brush(const QWidget *widget, BrushName name, quint64 type = PseudoClass_Unspecified, const QBrush &defaultBrush = Qt::NoBrush) const; QBrush brush(const QWidget *widget, BrushName name, const QStyleOption *option, quint64 extraTypes = PseudoClass_Unknown, const QBrush &defaultBrush = Qt::NoBrush) const; QBrush brush(BrushName name, quint64 type = PseudoClass_Unspecified, const QBrush &defaultBrush = Qt::NoBrush) const; QBrush brush(BrushName name, const QStyleOption *option, quint64 extraTypes = PseudoClass_Unknown, const QBrush &defaultBrush = Qt::NoBrush) const; void polish(QPalette &p); private: void init(StyleType type); PaletteExtended(StyleType type, QObject *parent = 0); StyleType m_type; QCss::StyleSheet *m_brushScheme; mutable QHash, QBrush> m_brushCache; static QList styleTypeToPaletteList; }; } #endif // PALETTEEXTENDED_H dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/progressbarhelper.cpp000066400000000000000000000232311323676556600260010ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "style.h" #include #include #include #include #include #include "geometryutils.h" #include "paletteextended.h" namespace dstyle { bool Style::drawProgressBarControl(const QStyleOption *option, QPainter *painter, const QWidget *widget) const { const QStyleOptionProgressBar* progressBarOption( qstyleoption_cast( option ) ); if( !progressBarOption ) return false; // render groove QStyleOptionProgressBarV2 progressBarOption2 = *progressBarOption; progressBarOption2.rect = subElementRect( SE_ProgressBarGroove, progressBarOption, widget ); drawControl( CE_ProgressBarGroove, &progressBarOption2, painter, widget ); // render contents progressBarOption2.rect = subElementRect( SE_ProgressBarContents, progressBarOption, widget ); drawControl( CE_ProgressBarContents, &progressBarOption2, painter, widget ); // render text const bool textVisible( progressBarOption->textVisible ); const bool busy( progressBarOption->minimum == 0 && progressBarOption->maximum == 0 ); if( textVisible && !busy ) { progressBarOption2.rect = subElementRect( SE_ProgressBarLabel, progressBarOption, widget ); drawControl( CE_ProgressBarLabel, &progressBarOption2, painter, widget ); } return true; } bool Style::drawProgressBarContentsControl(const QStyleOption *option, QPainter *painter, const QWidget *widget) const { // QStyleSheetStyle won't draw progress bar groove which is necessary for us. if (widget && widget->style() && widget->style()->metaObject() && widget->style()->metaObject()->className() == QLatin1String("QStyleSheetStyle")) { drawProgressBarGrooveControl(option, painter, widget); } const QStyleOptionProgressBar* progressBarOption( qstyleoption_cast( option ) ); if( !progressBarOption ) return false; const bool horizontal( !progressBarOption || progressBarOption->orientation == Qt::Horizontal ); // copy rect and palette const QPalette& palette( option->palette ); const qreal radius( GeometryUtils::frameRadius() ); // get progress and steps const qreal progress( progressBarOption->progress - progressBarOption->minimum ); const int steps( qMax( progressBarOption->maximum - progressBarOption->minimum, 1 ) ); //Calculate width fraction const qreal widthFrac = qMin( qreal(1), progress/steps ); QRect rect( option->rect ); // convert the pixel width const int indicatorSize( widthFrac*( horizontal ? rect.width():rect.height() ) ); rect.setWidth(indicatorSize); QPainterPath path; path.addRoundedRect(rect, radius, radius); painter->save(); painter->setRenderHints(painter->renderHints() | QPainter::Antialiasing); painter->setClipPath(path); painter->fillRect(rect, palette.highlight()); painter->restore(); return true; } bool Style::drawProgressBarGrooveControl(const QStyleOption *option, QPainter *painter, const QWidget *widget) const { Q_UNUSED(widget) const QRect rect( option->rect ); const qreal radius( GeometryUtils::frameRadius() ); const PaletteExtended *plExt = m_palette; const QBrush brush( plExt->brush(PaletteExtended::PushButton_BackgroundBrush, option) ); QPainterPath path; path.addRoundedRect(rect, radius, radius); painter->save(); painter->setRenderHints(painter->renderHints() | QPainter::Antialiasing); painter->setClipPath(path); painter->fillRect(rect, brush); painter->restore(); return true; } bool Style::drawProgressBarLabelControl(const QStyleOption *option, QPainter *painter, const QWidget *) const { // cast option and check const QStyleOptionProgressBar* progressBarOption( qstyleoption_cast( option ) ); if( !progressBarOption ) return true; // get direction and check const QStyleOptionProgressBarV2* progressBarOption2( qstyleoption_cast( option ) ); const bool horizontal = !progressBarOption2 || progressBarOption2->orientation == Qt::Horizontal; if( !horizontal ) return true; // store rect and palette const QRect& rect( option->rect ); const QPalette& palette( option->palette ); // store state and direction const State& state( option->state ); const bool enabled( state & State_Enabled ); // define text rect Qt::Alignment hAlign( ( progressBarOption->textAlignment == Qt::AlignLeft ) ? Qt::AlignHCenter : progressBarOption->textAlignment ); drawItemText( painter, rect, Qt::AlignVCenter | hAlign, palette, enabled, progressBarOption->text, QPalette::WindowText ); return true; } QRect Style::progressBarGrooveRect(const QStyleOption *option, const QWidget *widget) const { // cast option and check const QStyleOptionProgressBar* progressBarOption( qstyleoption_cast( option ) ); if( !progressBarOption ) return option->rect; // get flags and orientation const bool textVisible( progressBarOption->textVisible ); const bool busy( progressBarOption->minimum == 0 && progressBarOption->maximum == 0 ); const QStyleOptionProgressBarV2* progressBarOption2( qstyleoption_cast( option ) ); const bool horizontal( !progressBarOption2 || progressBarOption2->orientation == Qt::Horizontal ); // copy rectangle and adjust QRect rect( option->rect ); const int frameWidth( pixelMetric( PM_DefaultFrameWidth, option, widget ) ); if( horizontal ) rect = GeometryUtils::insideMargin( rect, frameWidth, 0 ); else rect = GeometryUtils::insideMargin( rect, 0, frameWidth ); if( textVisible && !busy && horizontal ) { QRect textRect( subElementRect( SE_ProgressBarLabel, option, widget ) ); textRect = visualRect( option->direction, option->rect, textRect ); rect = visualRect( option->direction, option->rect, rect ); } return rect; } QRect Style::progressBarContentsRect(const QStyleOption *option, const QWidget *widget) const { // cast option and check const QStyleOptionProgressBar* progressBarOption( qstyleoption_cast( option ) ); if( !progressBarOption ) return QRect(); // get groove rect const QRect rect( progressBarGrooveRect( option, widget ) ); // in busy mode, grooveRect is used const bool busy( progressBarOption->minimum == 0 && progressBarOption->maximum == 0 ); if( busy ) return rect; // get orientation const QStyleOptionProgressBarV2* progressBarOption2( qstyleoption_cast( option ) ); const bool horizontal( !progressBarOption2 || progressBarOption2->orientation == Qt::Horizontal ); // check inverted appearance const bool inverted( progressBarOption2 ? progressBarOption2->invertedAppearance : false ); // get progress and steps const qreal progress( progressBarOption->progress - progressBarOption->minimum ); const int steps( qMax( progressBarOption->maximum - progressBarOption->minimum, 1 ) ); //Calculate width fraction const qreal widthFrac = qMin( qreal(1), progress/steps ); // convert the pixel width const int indicatorSize( widthFrac*( horizontal ? rect.width():rect.height() ) ); QRect indicatorRect; if( horizontal ) { indicatorRect = QRect( inverted ? ( rect.right() - indicatorSize + 1):rect.left(), rect.y(), indicatorSize, rect.height() ); indicatorRect = visualRect( option->direction, rect, indicatorRect ); } else indicatorRect = QRect( rect.x(), inverted ? rect.top() : (rect.bottom() - indicatorSize + 1), rect.width(), indicatorSize ); return indicatorRect; } QRect Style::progressBarLabelRect(const QStyleOption *option, const QWidget *) const { // cast option and check const QStyleOptionProgressBar* progressBarOption( qstyleoption_cast( option ) ); if( !progressBarOption ) return QRect(); // get flags and check const bool textVisible( progressBarOption->textVisible ); const bool busy( progressBarOption->minimum == 0 && progressBarOption->maximum == 0 ); if( !textVisible || busy ) return QRect(); // get direction and check const QStyleOptionProgressBarV2* progressBarOption2( qstyleoption_cast( option ) ); const bool horizontal( !progressBarOption2 || progressBarOption2->orientation == Qt::Horizontal ); if( !horizontal ) return QRect(); int textWidth = qMax( option->fontMetrics.size( Qt::TextHideMnemonic, progressBarOption->text ).width(), option->fontMetrics.size( Qt::TextHideMnemonic, QStringLiteral( "100%" ) ).width() ); int textHeight = option->fontMetrics.size( Qt::TextHideMnemonic, QStringLiteral( "100%" ) ).height(); QRect rect( GeometryUtils::insideMargin( option->rect, Metrics::Frame_FrameWidth, 0 ) ); return GeometryUtils::centerRect(rect, QSize(textWidth, textHeight)); } } dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/pushbuttonhelper.cpp000066400000000000000000000221161323676556600256640ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "common.h" #include "geometryutils.h" #include "style.h" #include "commonhelper.h" #include "painterhelper.h" #include "paletteextended.h" #include #ifdef DTKWIDGET_CLASS_DSuggestButton #include #include #endif #include #include namespace dstyle { bool Style::drawPushButtonBevel(const QStyleOption *option, QPainter *painter, const QWidget *widget) const { // cast option and check const QStyleOptionButton* buttonOption( qstyleoption_cast< const QStyleOptionButton* >( option ) ); if( !buttonOption ) return true; // rect and palette const QRect& rect( option->rect ); // button state const bool flat( buttonOption->features & QStyleOptionButton::Flat ); // update animation state // mouse over takes precedence over focus if( flat ) { // just draw text on flat button. // const QColor color( getFlatButtonColor(enabled, mouseOver, hasFocus, sunken) ); // drawFlatButtonFrame( painter, rect, color, sunken ); } else { // TODO(hualet): update button color from palette in case button is default const QColor shadow( Qt::transparent ); const QBrush outline( #ifdef DTKWIDGET_CLASS_DSuggestButton (buttonOption->features & DStyleOptionSuggestButton::SuggestButton) ? m_palette->brush(PaletteExtended::PushButton_SuggestButtonColor, option) : m_palette->brush(PaletteExtended::PushButton_BorderBrush, option) #else m_palette->brush(PaletteExtended::PushButton_BorderBrush, option) #endif ); const QBrush background(m_palette->brush(PaletteExtended::PushButton_BackgroundBrush, option)); // render drawPushButtonFrame(painter, rect, background, outline, shadow, widget); } if (buttonOption->features & QStyleOptionButton::HasMenu) { int mbi = proxy()->pixelMetric(PM_MenuButtonIndicator, buttonOption, widget); QRect ir = buttonOption->rect; QStyleOptionButton newBtn = *buttonOption; newBtn.rect = QRect(ir.right() - mbi + 2, ir.height()/2 - mbi/2 + 3, mbi - 6, mbi - 6); proxy()->drawPrimitive(PE_IndicatorArrowDown, &newBtn, painter, widget); } return true; } bool Style::drawPushButtonLabel(const QStyleOption *option, QPainter *painter, const QWidget *widget) const { // cast option and check const QStyleOptionButton* buttonOption( qstyleoption_cast( option ) ); if( !buttonOption ) return true; // copy rect and palette const QRect& rect( option->rect ); // state const QStyle::State& state( option->state ); const bool enabled( state & QStyle::State_Enabled ); const bool sunken( state & (QStyle::State_On | QStyle::State_Sunken) ); const bool mouseOver(option->state & QStyle::State_MouseOver); const bool hasFocus(option->state & QStyle::State_HasFocus); const bool flat( buttonOption->features & QStyleOptionButton::Flat ); const bool suggest( #ifdef DTKWIDGET_CLASS_DSuggestButton buttonOption->features & DStyleOptionSuggestButton::SuggestButton #else false #endif ); // content const bool hasText( !buttonOption->text.isEmpty() ); const bool hasIcon( ( flat || !hasText ) && !buttonOption->icon.isNull() ); // contents QRect contentsRect( rect ); if( sunken && !flat ) contentsRect.translate( 1, 1 ); // menu arrow /* if( buttonOption->features & QStyleOptionButton::HasMenu ) { // define rect QRect arrowRect( contentsRect ); arrowRect.setLeft( contentsRect.right() - Metrics::MenuButton_IndicatorWidth + 1 ); arrowRect = GeometryUtils::centerRect( arrowRect, Metrics::MenuButton_IndicatorWidth, Metrics::MenuButton_IndicatorWidth ); contentsRect.setRight( arrowRect.left() - Metrics::Button_ItemSpacing - 1 ); contentsRect.adjust( Metrics::Button_MarginWidth, 0, 0, 0 ); arrowRect = widget->style()->visualRect( option->direction, option->rect, arrowRect ); // define color const QColor arrowColor( _helper->arrowColor( palette, textRole ) ); _helper->renderArrow( painter, arrowRect, arrowColor, ArrowDown ); } */ // icon size QSize iconSize; if( hasIcon ) { iconSize = buttonOption->iconSize; if( !iconSize.isValid() ) { const int metric( proxy()->pixelMetric( QStyle::PM_SmallIconSize, option, widget ) ); iconSize = QSize( metric, metric ); } } // text size int textFlags( Qt::AlignCenter ); const QSize textSize( option->fontMetrics.size( textFlags, buttonOption->text ) ); if (styleHint(SH_UnderlineShortcut, buttonOption, widget)) textFlags |= Qt::TextShowMnemonic; else textFlags |= Qt::TextHideMnemonic; // adjust text and icon rect based on options QRect iconRect; QRect textRect; if( hasText && !hasIcon ) textRect = contentsRect; else if( hasIcon && !hasText ) iconRect = contentsRect; else { const int contentsWidth( iconSize.width() + textSize.width() + Metrics::Button_ItemSpacing ); iconRect = QRect( QPoint( contentsRect.left() + (contentsRect.width() - contentsWidth )/2, contentsRect.top() + (contentsRect.height() - iconSize.height())/2 ), iconSize ); textRect = QRect( QPoint( iconRect.right() + Metrics::ToolButton_ItemSpacing + 1, contentsRect.top() + (contentsRect.height() - textSize.height())/2 ), textSize ); } // handle right to left if( iconRect.isValid() ) iconRect = proxy()->visualRect( option->direction, option->rect, iconRect ); if( textRect.isValid() ) textRect = proxy()->visualRect( option->direction, option->rect, textRect ); // make sure there is enough room for icon if( iconRect.isValid() ) iconRect = GeometryUtils::centerRect( iconRect, iconSize ); // render icon if( hasIcon && iconRect.isValid() ) { // icon state and mode const QIcon::State iconState( sunken ? QIcon::On : QIcon::Off ); QIcon::Mode iconMode; if( !enabled ) iconMode = QIcon::Disabled; else if( !flat && hasFocus ) iconMode = QIcon::Selected; else if( mouseOver && flat ) iconMode = QIcon::Active; else iconMode = QIcon::Normal; const QPixmap pixmap = buttonOption->icon.pixmap( iconSize, iconMode, iconState ); widget->style()->drawItemPixmap( painter, iconRect, Qt::AlignCenter, pixmap ); } // render text if( hasText && textRect.isValid() ) { if (suggest) { painter->setPen(m_palette->brush(PaletteExtended::PushButton_SuggestTextColor, option).color()); } else { painter->setPen(m_palette->brush(PaletteExtended::PushButton_TextColor, option).color()); } if (buttonOption->features & QStyleOptionButton::HasMenu) textRect = textRect.adjusted(0, 0, -proxy()->pixelMetric(PM_MenuButtonIndicator, buttonOption, widget), 0); painter->drawText(textRect, textFlags, buttonOption->text); } return true; } bool Style::drawPushButtonFrame( QPainter* painter, const QRect& rect, const QBrush& brush, const QBrush& outline, const QColor& shadow, const QWidget *widget) const { Q_UNUSED(shadow) // setup painter painter->setRenderHint( QPainter::Antialiasing, true ); const qreal radius( GeometryUtils::frameRadius() ); QPainterPath path; path.addRoundedRect(QRectF(rect).adjusted(0.5, 0.5, -0.5, -0.5), radius, radius); // ButtonTuples are QPushButton groups that needs to be taken care of, // the right corners of the LeftButton are not rounded, and the left // corners of the RightButton are not rounded either. if (widget) { const QString className = widget->metaObject()->className(); if (className == "dcc::widgets::LeftButton") { QPainterPath rightHalf; rightHalf.addRect(rect.x() + rect.width() / 2, rect.y(), rect.width(), rect.height()); path = path.united(rightHalf); } else if (className == "dcc::widgets::RightButton") { QPainterPath leftHalf; leftHalf.addRect(rect.x(), rect.y(), rect.width() / 2, rect.height()); path = path.united(leftHalf); } } PainterHelper::drawPath(painter, path, brush, Metrics::Painter_PenWidth, outline); return true; } }// end namespace dstyle dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/rubberbandhelper.cpp000066400000000000000000000024671323676556600255660ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "style.h" #include "painterhelper.h" #include "paletteextended.h" #include "common.h" namespace dstyle { bool Style::drawRubberBandControl(const QStyleOption *option, QPainter *painter, const QWidget *widget) const { Q_UNUSED(widget) const QBrush &backgroundBrush = m_palette->brush(PaletteExtended::RubberBand_BackgroundBrush, option); const QBrush &borderBrush = m_palette->brush(PaletteExtended::RubberBand_BorderBrush, option); PainterHelper::drawRect(painter, option->rect.adjusted(1, 1, -1, -1), backgroundBrush, Metrics::Painter_PenWidth, borderBrush); return true; } } dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/scrollbarhelper.cpp000066400000000000000000000242321323676556600254350ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "commonhelper.h" #include "paletteextended.h" #include "style.h" #include "painterhelper.h" #include "geometryutils.h" #include "dstyleanimation.h" #include #include #include #include namespace dstyle { QRect Style::scrollbarSubControlRect(const QStyleOptionComplex *opt, QStyle::SubControl sc, const QWidget *widget) const { QRect ret(0, 0, 0, 0); if (const QStyleOptionSlider *scrollbar = qstyleoption_cast(opt)) { const bool enabled(opt->state & QStyle::State_Enabled); const bool mouseOver(opt->state & QStyle::State_MouseOver); const QRect scrollBarRect = scrollbar->rect; int sbextent = 0; if (!proxy()->styleHint(SH_ScrollBar_Transient, scrollbar, widget)) sbextent = proxy()->pixelMetric(PM_ScrollBarExtent, scrollbar, widget); int maxlen = ((scrollbar->orientation == Qt::Horizontal) ? scrollBarRect.width() : scrollBarRect.height()); int sliderlen; // calculate slider length if (scrollbar->maximum != scrollbar->minimum) { uint range = scrollbar->maximum - scrollbar->minimum; sliderlen = (qint64(scrollbar->pageStep) * maxlen) / (range + scrollbar->pageStep); int slidermin = proxy()->pixelMetric(PM_ScrollBarSliderMin, scrollbar, widget); if (sliderlen < slidermin || range > INT_MAX / 2) sliderlen = slidermin; if (sliderlen > maxlen) sliderlen = maxlen; } else { sliderlen = maxlen; } int sliderstart = sliderPositionFromValue(scrollbar->minimum, scrollbar->maximum, scrollbar->sliderPosition, maxlen - sliderlen, scrollbar->upsideDown); switch (sc) { case SC_ScrollBarSubLine: // top/left button if (scrollbar->orientation == Qt::Horizontal) { int buttonWidth = qMin(scrollBarRect.width() / 2, sbextent); ret.setRect(0, 0, buttonWidth, scrollBarRect.height()); } else { int buttonHeight = qMin(scrollBarRect.height() / 2, sbextent); ret.setRect(0, 0, scrollBarRect.width(), buttonHeight); } break; case SC_ScrollBarAddLine: // bottom/right button if (scrollbar->orientation == Qt::Horizontal) { int buttonWidth = qMin(scrollBarRect.width()/2, sbextent); ret.setRect(scrollBarRect.width() - buttonWidth, 0, buttonWidth, scrollBarRect.height()); } else { int buttonHeight = qMin(scrollBarRect.height()/2, sbextent); ret.setRect(0, scrollBarRect.height() - buttonHeight, scrollBarRect.width(), buttonHeight); } break; case SC_ScrollBarSubPage: // between top/left button and slider if (scrollbar->orientation == Qt::Horizontal) ret.setRect(sbextent, 0, sliderstart - sbextent, scrollBarRect.height()); else ret.setRect(0, sbextent, scrollBarRect.width(), sliderstart - sbextent); break; case SC_ScrollBarAddPage: // between bottom/right button and slider if (scrollbar->orientation == Qt::Horizontal) ret.setRect(sliderstart + sliderlen, 0, maxlen - sliderstart - sliderlen + sbextent, scrollBarRect.height()); else ret.setRect(0, sliderstart + sliderlen, scrollBarRect.width(), maxlen - sliderstart - sliderlen + sbextent); break; case SC_ScrollBarGroove: if (scrollbar->orientation == Qt::Horizontal) ret.setRect(sbextent, 0, scrollBarRect.width() - sbextent * 2, scrollBarRect.height()); else ret.setRect(0, sbextent, scrollBarRect.width(), scrollBarRect.height() - sbextent * 2); break; case SC_ScrollBarSlider: if (scrollbar->orientation == Qt::Horizontal) { if (mouseOver && enabled) ret.setRect(sliderstart, 1, sliderlen, scrollBarRect.height() - 2); else ret.setRect(sliderstart, scrollBarRect.height() / 4, sliderlen, scrollBarRect.height() / 2); } else { if (mouseOver && enabled) ret.setRect(1, sliderstart, scrollBarRect.width() - 2, sliderlen); else ret.setRect(scrollBarRect.width() / 4, sliderstart, scrollBarRect.width() / 2, sliderlen); } break; default: break; } ret = visualRect(scrollbar->direction, scrollBarRect, ret); } return ret; } bool Style::drawScrollBarSliderControl(const QStyleOption *option, QPainter *painter, const QWidget *widget) const { const QStyleOptionSlider *scrollBar = qstyleoption_cast(option); QObject *styleObject = option->styleObject; bool wasActive = false; if (styleObject && styleObject && proxy()->styleHint(SH_ScrollBar_Transient, option, widget)) { Q_D(const Style); qreal opacity = 0.0; bool shouldExpand = false; int oldPos = styleObject->property("_q_stylepos").toInt(); int oldMin = styleObject->property("_q_stylemin").toInt(); int oldMax = styleObject->property("_q_stylemax").toInt(); QRect oldRect = styleObject->property("_q_stylerect").toRect(); int oldState = styleObject->property("_q_stylestate").toInt(); uint oldActiveControls = styleObject->property("_q_stylecontrols").toUInt(); // a scrollbar is transient when the the scrollbar itself and // its sibling are both inactive (ie. not pressed/hovered/moved) bool transient = !scrollBar->activeSubControls && !(option->state & State_On); if (!transient || oldPos != scrollBar->sliderPosition || oldMin != scrollBar->minimum || oldMax != scrollBar->maximum || oldRect != scrollBar->rect || oldState != scrollBar->state || oldActiveControls != scrollBar->activeSubControls) { // if the scrollbar is transient or its attributes, geometry or // state has changed, the opacity is reset back to 100% opaque opacity = 1.0; styleObject->setProperty("_q_stylepos", scrollBar->sliderPosition); styleObject->setProperty("_q_stylemin", scrollBar->minimum); styleObject->setProperty("_q_stylemax", scrollBar->maximum); styleObject->setProperty("_q_stylerect", scrollBar->rect); styleObject->setProperty("_q_stylestate", static_cast(scrollBar->state)); styleObject->setProperty("_q_stylecontrols", static_cast(scrollBar->activeSubControls)); #ifndef QT_NO_ANIMATION DScrollbarStyleAnimation *anim = qobject_cast(d->animation(styleObject)); if (transient) { if (!anim) { anim = new DScrollbarStyleAnimation(DScrollbarStyleAnimation::Deactivating, styleObject); d->startAnimation(anim); } else if (anim->mode() == DScrollbarStyleAnimation::Deactivating) { // the scrollbar was already fading out while the // state changed -> restart the fade out animation anim->setCurrentTime(0); } } else if (anim && anim->mode() == DScrollbarStyleAnimation::Deactivating) { d->stopAnimation(styleObject); } #endif // !QT_NO_ANIMATION } #ifndef QT_NO_ANIMATION DScrollbarStyleAnimation *anim = qobject_cast(d->animation(styleObject)); if (anim && anim->mode() == DScrollbarStyleAnimation::Deactivating) { // once a scrollbar was active (hovered/pressed), it retains // the active look even if it's no longer active while fading out if (oldActiveControls) anim->setActive(true); wasActive = anim->wasActive(); opacity = anim->currentValue(); } shouldExpand = (scrollBar->activeSubControls || wasActive); if (shouldExpand) { if (!anim && !oldActiveControls) { // Start expand animation only once and when entering anim = new DScrollbarStyleAnimation(DScrollbarStyleAnimation::Activating, styleObject); d->startAnimation(anim); } } painter->setOpacity(opacity); #endif // !QT_NO_ANIMATION } if (qFuzzyIsNull(painter->opacity())) return true; painter->setRenderHint(QPainter::Antialiasing); QRectF rect = option->rect; if (option->state & QStyle::State_Sunken) rect.adjust(0.5, 0.5, 0, 0); const QBrush &background = m_palette->brush(PaletteExtended::ScrollBar_HandleBrush, option, 0, Qt::lightGray); const QBrush &border = m_palette->brush(PaletteExtended::ScrollBar_HandleBorderBrush, option, 0, background); PainterHelper::drawRoundedRect(painter, rect, 3, 3, Qt::AbsoluteSize, background, Metrics::Painter_PenWidth, border); return true; } }// end namespace dstyle dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/sliderhelper.cpp000066400000000000000000000271421323676556600247370ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "style.h" #include "common.h" #include "colorutils.h" #include "geometryutils.h" #include "paletteextended.h" #include "commonhelper.h" #include "painterhelper.h" #include #include #include namespace dstyle { static const char *SliderTickmarkPositionsProp = "tickmarkPositions"; #define SliderHandleTypeNormal "Normal" #define SliderHandleTypeVernier "Vernier" #define SliderHandleTypeNone "None" QRect Style::sliderSubControlRect(const QStyleOptionComplex *option, QStyle::SubControl subControl, const QWidget *widget) const { // cast option and check const QStyleOptionSlider* sliderOption( qstyleoption_cast( option ) ); if( !sliderOption ) return QCommonStyle::subControlRect( CC_Slider, option, subControl, widget ); switch( subControl ) { case SC_SliderGroove: { // direction const bool horizontal( sliderOption->orientation == Qt::Horizontal ); // get base class rect QRect grooveRect( QCommonStyle::subControlRect( CC_Slider, option, subControl, widget ) ); grooveRect = GeometryUtils::insideMargin( grooveRect, pixelMetric( PM_DefaultFrameWidth, option, widget ) ); // centering if( horizontal ) { grooveRect = GeometryUtils::centerRect( grooveRect, grooveRect.width(), Metrics::Slider_GrooveThickness ); } else { grooveRect = GeometryUtils::centerRect( grooveRect, Metrics::Slider_GrooveThickness, grooveRect.height() ); } return grooveRect; } default: return QCommonStyle::subControlRect( CC_Slider, option, subControl, widget ); } } bool Style::drawSlider(const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget) const { // cast option and check const QStyleOptionSlider *sliderOption( qstyleoption_cast( option ) ); if( !sliderOption ) return true; const PaletteExtended *plExt = m_palette; // copy rect and palette const QRect& rect( option->rect ); // const QPalette& palette( option->palette ); // copy state const QStyle::State& state( option->state ); const bool enabled( state & QStyle::State_Enabled ); // const bool mouseOver( enabled && ( state & QStyle::State_MouseOver ) ); // const bool hasFocus( enabled && ( state & QStyle::State_HasFocus ) ); // direction const bool horizontal( sliderOption->orientation == Qt::Horizontal ); // tickmarks if( sliderOption->subControls & QStyle::SC_SliderTickmarks ) { const bool upsideDown( sliderOption->upsideDown ); const int tickPosition( sliderOption->tickPosition ); const int available( pixelMetric( QStyle::PM_SliderSpaceAvailable, option, widget ) ); int interval = sliderOption->tickInterval; if( interval < 1 ) interval = sliderOption->pageStep; if( interval >= 1 ) { const int fudge( pixelMetric( QStyle::PM_SliderLength, option, widget ) / 2 ); int current( sliderOption->minimum ); // store tick lines const QRect grooveRect( subControlRect( QStyle::CC_Slider, sliderOption, QStyle::SC_SliderGroove, widget ) ); QList tickLines; if( horizontal ) { if( tickPosition & QSlider::TicksAbove ) tickLines.append( QLine( rect.left(), grooveRect.top() - Metrics::Slider_TickMarginWidth, rect.left(), grooveRect.top() - Metrics::Slider_TickMarginWidth - Metrics::Slider_TickLength ) ); if( tickPosition & QSlider::TicksBelow ) tickLines.append( QLine( rect.left(), grooveRect.bottom() + Metrics::Slider_TickMarginWidth, rect.left(), grooveRect.bottom() + Metrics::Slider_TickMarginWidth + Metrics::Slider_TickLength ) ); } else { if( tickPosition & QSlider::TicksAbove ) tickLines.append( QLine( grooveRect.left() - Metrics::Slider_TickMarginWidth, rect.top(), grooveRect.left() - Metrics::Slider_TickMarginWidth - Metrics::Slider_TickLength, rect.top() ) ); if( tickPosition & QSlider::TicksBelow ) tickLines.append( QLine( grooveRect.right() + Metrics::Slider_TickMarginWidth, rect.top(), grooveRect.right() + Metrics::Slider_TickMarginWidth + Metrics::Slider_TickLength, rect.top() ) ); } QList tickmarkPositions; while( current <= sliderOption->maximum ) { // adjust pen painter->setPen( QPen(plExt->brush(PaletteExtended::Slider_TickmarkColor), Metrics::Painter_PenWidth) ); // calculate positions and draw lines int position( sliderPositionFromValue( sliderOption->minimum, sliderOption->maximum, current, available ) + fudge ); tickmarkPositions.append(position); foreach( const QLine& tickLine, tickLines ) { if( horizontal ) painter->drawLine( tickLine.translated( upsideDown ? (rect.width() - position) : position, 0 ) ); else painter->drawLine( tickLine.translated( 0, upsideDown ? (rect.height() - position):position ) ); } // go to next position current += interval; } QWidget *volatileWidget = const_cast(widget); // Tickmark positions are valuable to both drawing annotations and tickmark magnetic, // so we record it here to its properties. volatileWidget->setProperty(SliderTickmarkPositionsProp, tickmarkPositions); } } // groove if( sliderOption->subControls & QStyle::SC_SliderGroove ) { // retrieve groove rect QRect grooveRect( subControlRect( QStyle::CC_Slider, sliderOption, QStyle::SC_SliderGroove, widget ) ); // NOTE(hualet): adjust(cut) the grooveRect here, so later groove drawing will not // result in groove both ends are extended too far from the minimum tickmark and the maximum tickmark. const float adjustSize = pixelMetric(PM_SliderLength) / 2.0 * 0.5; if (sliderOption->orientation == Qt::Horizontal) grooveRect.adjust(adjustSize, 0, -adjustSize, 0); else grooveRect.adjust(0, adjustSize, 0, -adjustSize); // base brush const QBrush grooveBrush( plExt->brush(PaletteExtended::Slider_GrooveColor) ); if( !enabled ) drawSliderGroove( painter, grooveRect, grooveBrush ); else { const bool upsideDown( sliderOption->upsideDown ); // handle rect QRect handleRect( subControlRect( QStyle::CC_Slider, sliderOption, QStyle::SC_SliderHandle, widget ) ); // highlight brush const QBrush highlight( plExt->brush(PaletteExtended::Slider_GrooveHighlightColor) ); if( sliderOption->orientation == Qt::Horizontal ) { QRect leftRect( grooveRect ); leftRect.setRight( handleRect.right() - Metrics::Slider_ControlThickness/2 ); drawSliderGroove( painter, leftRect, upsideDown ? grooveBrush:highlight ); QRect rightRect( grooveRect ); rightRect.setLeft( handleRect.left() + Metrics::Slider_ControlThickness/2 ); drawSliderGroove( painter, rightRect, upsideDown ? highlight:grooveBrush ); } else { QRect topRect( grooveRect ); topRect.setBottom( handleRect.bottom() - Metrics::Slider_ControlThickness/2 ); drawSliderGroove( painter, topRect, upsideDown ? grooveBrush:highlight ); QRect bottomRect( grooveRect ); bottomRect.setTop( handleRect.top() + Metrics::Slider_ControlThickness/2 ); drawSliderGroove( painter, bottomRect, upsideDown ? highlight:grooveBrush ); } } } // handle if( sliderOption->subControls & QStyle::SC_SliderHandle ) { // get rect and center QRect handleRect( subControlRect( QStyle::CC_Slider, sliderOption, QStyle::SC_SliderHandle, widget ) ); // render const QString handleType = widget->property("handleType").toString(); drawSliderHandle( painter, sliderOption, handleRect, handleType); } return true; } void Style::drawSliderGroove(QPainter *painter, const QRect &rect, const QBrush &brush) const { // setup painter painter->setRenderHint( QPainter::Antialiasing, true ); const QRectF baseRect( rect ); const qreal radius( 0.5*Metrics::Slider_GrooveThickness ); // content if( brush.style() != Qt::NoBrush ) { painter->setPen( Qt::NoPen ); painter->setBrush( brush ); painter->drawRoundedRect( baseRect, radius, radius ); } return; } void Style::drawSliderHandle(QPainter* painter, const QStyleOptionSlider *option, const QRect& rect, const QString &type) const { // setup painter painter->setRenderHint( QPainter::Antialiasing, true ); // copy rect // QRectF frameRect( rect ); // frameRect.adjust( 1, 1, -1, -1 ); // shadow // if( shadow.isValid() && !sunken ) // { // painter->setPen( QPen( shadow, 2 ) ); // painter->setBrush( Qt::NoBrush ); // painter->drawEllipse( frameRect ); // } if (type == SliderHandleTypeNone) { return; // draw no handle } else if (type == SliderHandleTypeVernier) { // draw vernier handle fillBrush(painter, rect, m_palette->brush(PaletteExtended::Slider_VernierHandleBrush, option)); } else { // draw circle handle fillBrush(painter, rect, m_palette->brush(PaletteExtended::Slider_HandleBrush, option)); } } bool Style::drawSliderTickmarkLabels(const QStyleOption *option, QPainter *painter, const QWidget *widget) const { QRect rect( option->rect ); QVariantList labels = widget->property("tickmarkLabels").toList(); if (labels.length() == 0) return false; QWidget *parent = widget->parentWidget(); if (parent && parent->inherits("dcc::widgets::DCCSliderAnnotated")) { QSlider *slider = parent->findChild(); if (slider) { QList positions = slider->property(SliderTickmarkPositionsProp).toList(); PaletteExtended *plExt = m_palette; painter->setPen(QPen(plExt->brush(PaletteExtended::Slider_TickmarkColor), Metrics::Painter_PenWidth)); for (int i = 0; i < positions.length() && i < labels.length(); i++) { const QString text = labels.at(i).toString(); const int rWidth = option->fontMetrics.width(text); const int deltaX = slider->x() - widget->x(); const int x = positions.at(i).toInt() + deltaX; const int rX = qMax(0.0, qMin(rect.width() - rWidth / 1.0, x - rWidth / 2.0)); QRect r ( rX, rect.y(), rWidth, rect.height() ); painter->drawText(r, Qt::AlignTop, text); } } } return true; } } // end namespace dstyle dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/spinboxhelper.cpp000066400000000000000000000140131323676556600251300ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "style.h" #include "paletteextended.h" #include #include #include namespace dstyle { bool Style::drawSpinBoxComplexControl( const QStyleOptionComplex* option, QPainter* painter, const QWidget* widget ) const { const QStyleOptionSpinBox *sb( qstyleoption_cast( option ) ); if( !sb ) return true; // store palette and rect const QPalette& palette( option->palette ); const QRect& rect( option->rect ); if( option->subControls & SC_SpinBoxFrame ) { // detect flat spinboxes bool flat( !sb->frame ); flat |= ( rect.height() < 2*Metrics::Frame_FrameWidth + Metrics::SpinBox_ArrowButtonWidth ); if( flat ) { const QColor background( palette.color( QPalette::Base ) ); painter->setBrush( background ); painter->setPen( Qt::NoPen ); painter->drawRect( rect ); } else { drawPrimitive( PE_FrameLineEdit, option, painter, widget ); } } QStyleOptionSpinBox copy = *sb; PrimitiveElement pe; // int fw = -Metrics::Painter_PenWidth; if (sb->subControls & SC_SpinBoxUp) { copy.subControls = SC_SpinBoxUp; if (!(sb->stepEnabled & QAbstractSpinBox::StepUpEnabled)) { copy.state &= ~State_Enabled; } if (sb->activeSubControls == SC_SpinBoxUp && (sb->state & State_Sunken)) { copy.state |= State_On; copy.state |= State_Sunken; } else { copy.state |= State_Raised; copy.state &= ~State_Sunken; } pe = (sb->buttonSymbols == QAbstractSpinBox::PlusMinus ? PE_IndicatorSpinPlus : PE_IndicatorSpinUp); copy.rect = proxy()->subControlRect(CC_SpinBox, sb, SC_SpinBoxUp, widget); // copy.rect.adjust(0, -fw, 0, fw); // fillBrush(painter, copy.rect, m_palette->brush(PaletteExtended::SpinBox_PlusBrush, ©)); // painter->setPen(QPen(m_palette->brush(PaletteExtended::SpinBox_BorderColor, option), Metrics::Painter_PenWidth)); // painter->drawLine(copy.rect.topLeft(), copy.rect.bottomLeft()); proxy()->drawPrimitive(pe, ©, painter, widget); } if (sb->subControls & SC_SpinBoxDown) { copy.subControls = SC_SpinBoxDown; copy.state = sb->state; QPalette pal2 = sb->palette; if (!(sb->stepEnabled & QAbstractSpinBox::StepDownEnabled)) { pal2.setCurrentColorGroup(QPalette::Disabled); copy.state &= ~State_Enabled; } copy.palette = pal2; if (sb->activeSubControls == SC_SpinBoxDown && (sb->state & State_Sunken)) { copy.state |= State_On; copy.state |= State_Sunken; } else { copy.state |= State_Raised; copy.state &= ~State_Sunken; } pe = (sb->buttonSymbols == QAbstractSpinBox::PlusMinus ? PE_IndicatorSpinMinus : PE_IndicatorSpinDown); copy.rect = proxy()->subControlRect(CC_SpinBox, sb, SC_SpinBoxDown, widget); // copy.rect.adjust(0, -fw, 0, fw); // fillBrush(painter, copy.rect, m_palette->brush(PaletteExtended::SpinBox_MinusBrush, ©)); // painter->setPen(QPen(m_palette->brush(PaletteExtended::SpinBox_BorderColor, option), Metrics::Painter_PenWidth)); // painter->drawLine(copy.rect.topLeft(), copy.rect.bottomLeft()); proxy()->drawPrimitive(pe, ©, painter, widget); } painter->setPen(QPen(m_palette->brush(PaletteExtended::SpinBox_BorderColor, option), Metrics::Painter_PenWidth)); QRect lineEditRect = proxy()->subControlRect(CC_SpinBox, sb, SC_SpinBoxEditField, widget).adjusted(0, -1, 0, 1); painter->drawLine(lineEditRect.topRight(), lineEditRect.bottomRight()); return true; } QRect Style::spinboxSubControlRect(const QStyleOptionComplex *opt, QStyle::SubControl sc, const QWidget *widget) const { Q_UNUSED(widget) QRect ret; if (const QStyleOptionSpinBox *spinbox = qstyleoption_cast(opt)) { QSize bs; int fw = 0; bs.setHeight(spinbox->rect.height() - 2 * fw); // 1.6 -approximate golden mean bs.setWidth(bs.height()); bs = bs.expandedTo(QApplication::globalStrut()); int y = fw; int x, lx, rx; x = spinbox->rect.right() - fw - bs.width(); lx = fw; rx = x - fw - bs.width(); switch (sc) { case SC_SpinBoxUp: if (spinbox->buttonSymbols == QAbstractSpinBox::NoButtons) return QRect(); ret = QRect(x, y, bs.width(), bs.height()); break; case SC_SpinBoxDown: if (spinbox->buttonSymbols == QAbstractSpinBox::NoButtons) return QRect(); ret = QRect(x - bs.width(), y, bs.width(), bs.height()); break; case SC_SpinBoxEditField: if (spinbox->buttonSymbols == QAbstractSpinBox::NoButtons) { ret = QRect(lx, fw, spinbox->rect.width() - 2*fw, spinbox->rect.height() - 2*fw); } else { ret = QRect(lx, fw, rx, spinbox->rect.height() - 2*fw); } break; case SC_SpinBoxFrame: ret = spinbox->rect; default: break; } ret = visualRect(spinbox->direction, spinbox->rect, ret); } return ret; } } dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/style.cpp000066400000000000000000001473441323676556600234240ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "style.h" #include "common.h" #include "geometryutils.h" #include "paletteextended.h" #include "commonhelper.h" #include "dstyleanimation.h" #include "hidpihelper.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef DTKWIDGET_CLASS_DTabBar #include #endif DWIDGET_USE_NAMESPACE namespace dstyle { QColor StylePrivate::outline(const QPalette &pal) const { if (pal.window().style() == Qt::TexturePattern) return QColor(0, 0, 0, 160); return pal.background().color().darker(140); } QColor StylePrivate::buttonColor(const QPalette &pal) const { QColor buttonColor = pal.button().color(); int val = qGray(buttonColor.rgb()); buttonColor = buttonColor.lighter(100 + qMax(1, (180 - val)/6)); buttonColor.setHsv(buttonColor.hue(), buttonColor.saturation() * 0.75, buttonColor.value()); return buttonColor; } QColor StylePrivate::highlight(const QPalette &pal) const { return pal.color(QPalette::Highlight); } QColor StylePrivate::highlightedOutline(const QPalette &pal) const { QColor highlightedOutline = highlight(pal).darker(125); if (highlightedOutline.value() > 160) highlightedOutline.setHsl(highlightedOutline.hue(), highlightedOutline.saturation(), 160); return highlightedOutline; } QColor StylePrivate::backgroundColor(const QPalette &pal, const QWidget *widget) const { if (qobject_cast(widget) && widget->parent() && qobject_cast(widget->parent()->parent())) return widget->parentWidget()->parentWidget()->palette().color(QPalette::Base); return pal.color(QPalette::Base); } #ifndef QT_NO_ANIMATION DStyleAnimation *StylePrivate::animation(const QObject *target) const { return animations.value(target); } void StylePrivate::startAnimation(DStyleAnimation *animation) const { Q_Q(const Style); stopAnimation(animation->target()); q->connect(animation, SIGNAL(destroyed()), SLOT(_q_removeAnimation()), Qt::UniqueConnection); animations.insert(animation->target(), animation); animation->start(); } void dstyle::StylePrivate::stopAnimation(const QObject *target) const { DStyleAnimation *animation = animations.take(target); if (animation) { animation->stop(); delete animation; } } void StylePrivate::_q_removeAnimation() { Q_Q(Style); QObject *animation = q->sender(); if (animation) animations.remove(animation->parent()); } #endif void StylePrivate::_q_updateAppFont() { if (qApp->desktopSettingsAware()) { qApp->setFont(QGuiApplication::font()); for (QWidget *w : qApp->allWidgets()) { if (!w->isWindow() && w->testAttribute(Qt::WA_StyleSheet)) { QEvent e(QEvent::ApplicationFontChange); qApp->sendEvent(w, &e); } } } } Style::Style(StyleType style) : QCommonStyle(*new StylePrivate()) , m_type(style) { m_palette = PaletteExtended::instance(style); } Style::~Style() { } void Style::polish(QPalette &p) { QCommonStyle::polish(p); m_palette->polish(p); } void Style::polish(QWidget *w) { QCommonStyle::polish(w); if (qobject_cast(w) || qobject_cast(w) || qobject_cast(w) || qobject_cast(w) || qobject_cast(w) || qobject_cast(w) || qobject_cast(w) || qobject_cast(w) || isTabBarToolButton(w)) w->setAttribute(Qt::WA_Hover, true); if (qobject_cast(w)) { w->setAttribute(Qt::WA_OpaquePaintEvent, false); } if (w->inherits("dcc::widgets::SliderAnnotation")) { QFont font = w->font(); font.setPointSizeF(qApp->font().pointSizeF() - 1); w->setFont(font); } if (DApplication::isDXcbPlatform() && (!w->windowHandle() || DPlatformWindowHandle::isEnabledDXcb(w))) { if (qobject_cast(w)) { DPlatformWindowHandle handle(w); const QColor &color = m_palette->brush(PaletteExtended::Menu_BorderColor).color(); if (color.isValid()) handle.setBorderColor(color); handle.setShadowOffset(QPoint(0, 4)); handle.setShadowRadius(15); handle.setShadowColor(QColor(0, 0, 0, 100)); #ifdef DTK_SUPPORT_BLUR_WINDOW handle.setEnableBlurWindow(true); #endif handle.setTranslucentBackground(true); w->setAttribute(Qt::WA_TranslucentBackground); } else if (w->inherits("QTipLabel")) { DPlatformWindowHandle handle(w); handle.setShadowOffset(QPoint(0, 2)); handle.setShadowRadius(4); w->setAttribute(Qt::WA_TranslucentBackground); } } QPalette palette = w->palette(); if (w->testAttribute(Qt::WA_SetStyle)) { polish(palette); } // combo box drop-list. // line edit completer drop-list if (widgetIsComboBoxPopupFramePrimitive(w)) { polish(palette); palette.setBrush(QPalette::Background, m_palette->brush(PaletteExtended::Menu_BackgroundBrush, PaletteExtended::PseudoClass_Unspecified, palette.brush(QPalette::Background))); } w->setPalette(palette); } static QObject *themeSettings() { return reinterpret_cast(qvariant_cast(qApp->property("_d_theme_settings_object"))); } void Style::polish(QApplication *app) { if (QObject *obj = themeSettings()) { connect(obj, SIGNAL(systemFontChanged(QString)), this, SLOT(_q_updateAppFont())); connect(obj, SIGNAL(systemFontPointSizeChanged(qreal)), this, SLOT(_q_updateAppFont())); } QCommonStyle::polish(app); } void Style::unpolish(QWidget *w) { if (qobject_cast(w) || qobject_cast(w) || qobject_cast(w) || qobject_cast(w) || qobject_cast(w) || qobject_cast(w) || qobject_cast(w) || qobject_cast(w) || isTabBarToolButton(w)) w->setAttribute(Qt::WA_Hover, false); if (qobject_cast(w)) { w->setAttribute(Qt::WA_OpaquePaintEvent, true); } if (w->inherits("dcc::widgets::SliderAnnotation")) { QFont font = w->font(); font.setPointSizeF(qApp->font().pointSizeF()); w->setFont(font); w->setAttribute(Qt::WA_SetFont, false); } } void Style::unpolish(QApplication *app) { if (QObject *obj = themeSettings()) { disconnect(obj, SIGNAL(systemFontChanged(QString)), this, SLOT(_q_updateAppFont())); disconnect(obj, SIGNAL(systemFontPointSizeChanged(qreal)), this, SLOT(_q_updateAppFont())); } QCommonStyle::unpolish(app); } int Style::pixelMetric(QStyle::PixelMetric metric, const QStyleOption *option, const QWidget *widget) const { // handle special cases switch( metric ) { // frame width case PM_DefaultFrameWidth: { if( qobject_cast( widget ) ) return Metrics::Menu_FrameWidth; if( qobject_cast( widget ) ) return Metrics::LineEdit_FrameWidth; // fallback return Metrics::Frame_FrameWidth; } case PM_ComboBoxFrameWidth: { const QStyleOptionComboBox* comboBoxOption( qstyleoption_cast< const QStyleOptionComboBox*>( option ) ); return comboBoxOption && comboBoxOption->editable ? Metrics::LineEdit_FrameWidth : Metrics::ComboBox_FrameWidth; } case PM_SpinBoxFrameWidth: return Metrics::SpinBox_FrameWidth; case PM_ToolBarFrameWidth: return Metrics::ToolBar_FrameWidth; case PM_ToolTipLabelFrameWidth: return Metrics::ToolTip_FrameWidth; case PM_LayoutHorizontalSpacing: return Metrics::Layout_DefaultSpacing; case PM_LayoutVerticalSpacing: return Metrics::Layout_DefaultSpacing; // buttons case PM_ButtonMargin: { // needs special case for kcalc buttons, to prevent the application to set too small margins if( widget && widget->inherits( "KCalcButton" ) ) return Metrics::Button_MarginWidth + 4; else return Metrics::Button_MarginWidth; } case PM_ButtonDefaultIndicator: return 0; case PM_ButtonShiftHorizontal: return 0; case PM_ButtonShiftVertical: return 0; //menu case PM_MenuHMargin: return Menu_HMargin; case PM_MenuVMargin: return Menu_VMargin; // menubars case PM_MenuBarPanelWidth: return 0; case PM_MenuBarHMargin: return 0; case PM_MenuBarVMargin: return 0; case PM_MenuBarItemSpacing: return Metrics::MenuBar_ItemSpacing; case PM_MenuDesktopFrameWidth: return 0; // menu buttons case PM_MenuButtonIndicator: return Metrics::MenuButton_IndicatorWidth; // toolbars case PM_ToolBarHandleExtent: return Metrics::ToolBar_HandleExtent; case PM_ToolBarSeparatorExtent: return Metrics::ToolBar_SeparatorWidth; case PM_ToolBarExtensionExtent: return pixelMetric( PM_SmallIconSize, option, widget ) + 2*Metrics::ToolButton_MarginWidth; case PM_ToolBarItemMargin: return 0; case PM_ToolBarItemSpacing: return Metrics::ToolBar_ItemSpacing; // tabbars case PM_TabBarTabShiftVertical: return 0; case PM_TabBarTabShiftHorizontal: return 0; case PM_TabBarTabOverlap: return Metrics::TabBar_TabOverlap; case PM_TabBarBaseOverlap: return Metrics::TabBar_BaseOverlap; case PM_TabBarTabHSpace: return 2*Metrics::TabBar_TabMarginWidth; case PM_TabBarTabVSpace: return 2*Metrics::TabBar_TabMarginHeight; case PM_TabCloseIndicatorWidth: case PM_TabCloseIndicatorHeight: return pixelMetric( PM_SmallIconSize, option, widget ); // scrollbars case PM_ScrollBarExtent: return Metrics::ScrollBar_Extend; case PM_ScrollBarSliderMin: return Metrics::ScrollBar_MinSliderHeight; // title bar case PM_TitleBarHeight: return 2*Metrics::TitleBar_MarginWidth + pixelMetric( PM_SmallIconSize, option, widget ); // sliders case PM_SliderThickness: return Metrics::Slider_ControlThickness; case PM_SliderControlThickness: return Metrics::Slider_ControlThickness; case PM_SliderLength: return Metrics::Slider_ControlThickness; // checkboxes and radio buttons case PM_IndicatorWidth: return Metrics::CheckBox_Size; case PM_IndicatorHeight: return Metrics::CheckBox_Size; case PM_ExclusiveIndicatorWidth: return Metrics::CheckBox_Size; case PM_ExclusiveIndicatorHeight: return Metrics::CheckBox_Size; // list heaaders case PM_HeaderMarkSize: return Metrics::Header_ArrowSize; case PM_HeaderMargin: return Metrics::Header_MarginWidth; // dock widget // return 0 here, since frame is handled directly in polish case PM_DockWidgetFrameWidth: return 0; case PM_DockWidgetTitleMargin: return Metrics::Frame_FrameWidth; case PM_DockWidgetTitleBarButtonMargin: return Metrics::ToolButton_MarginWidth; case PM_SplitterWidth: return Metrics::Splitter_SplitterWidth; case PM_DockWidgetSeparatorExtent: return Metrics::Splitter_SplitterWidth; #ifdef DTKWIDGET_CLASS_DTabBar case PM_TabBarScrollButtonWidth: { if (qobject_cast(widget->parent())) { return 0; } } #endif // fallback default: return QCommonStyle::pixelMetric( metric, option, widget ); } } QRect Style::subControlRect(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QStyle::SubControl sc, const QWidget *w) const { // SubControlRectFunc fn = nullptr; switch (cc) { case CC_Slider: return sliderSubControlRect(opt, sc, w); case CC_ScrollBar: return scrollbarSubControlRect(opt, sc, w); #ifndef QT_NO_COMBOBOX case CC_ComboBox: return comboBoxSubControlRect(opt, sc, w); #endif // case CC_SpinBox: return spinboxSubControlRect(opt, sc, w); default: break; } // if (fn) { // QRect rect = fn(opt, sc, w); // if (!rect.isEmpty()) { // return rect; // } // } return QCommonStyle::subControlRect(cc, opt, sc, w); } QRect Style::subElementRect(QStyle::SubElement r, const QStyleOption *opt, const QWidget *widget) const { switch (r) { case SE_ProgressBarGroove: return progressBarGrooveRect( opt, widget ); case SE_ProgressBarContents: return progressBarContentsRect( opt, widget ); case SE_ProgressBarLabel: return progressBarLabelRect( opt, widget ); case SE_HeaderArrow: return headerArrowRect( opt, widget ); case SE_LineEditContents: return QCommonStyle::subElementRect(r, opt, widget).adjusted(LineEdit_LeftMargin, 0, 0, 0); default: break; } return QCommonStyle::subElementRect(r, opt, widget); } void Style::drawControl(QStyle::ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const { DrawControlFunc fcn(Q_NULLPTR); switch( element ) { case CE_PushButtonBevel: fcn = &Style::drawPushButtonBevel; break; case CE_PushButtonLabel: fcn = &Style::drawPushButtonLabel; break; // case CE_CheckBoxLabel: fcn = &Style::drawCheckBoxLabelControl; break; // case CE_RadioButtonLabel: fcn = &Style::drawCheckBoxLabelControl; break; case CE_ToolButtonLabel: fcn = &Style::drawToolButtonLabelControl; break; case CE_ComboBoxLabel: fcn = &Style::drawComboBoxLabelControl; break; case CE_MenuBarEmptyArea: return; case CE_MenuBarItem: fcn = &Style::drawMenuBarItemControl; break; case CE_MenuItem: fcn = &Style::drawMenuItemControl; break; // case CE_ToolBar: fcn = &Style::emptyControl; break; case CE_ProgressBar: fcn = &Style::drawProgressBarControl; break; case CE_ProgressBarContents: fcn = &Style::drawProgressBarContentsControl; break; case CE_ProgressBarGroove: fcn = &Style::drawProgressBarGrooveControl; break; case CE_ProgressBarLabel: fcn = &Style::drawProgressBarLabelControl; break; case CE_ScrollBarSlider: fcn = &Style::drawScrollBarSliderControl; break; // case CE_ScrollBarAddLine: fcn = &Style::drawScrollBarAddLineControl; break; // case CE_ScrollBarSubLine: fcn = &Style::drawScrollBarSubLineControl; break; // case CE_ScrollBarAddPage: fcn = &Style::emptyControl; break; // case CE_ScrollBarSubPage: fcn = &Style::emptyControl; break; case CE_ShapedFrame: fcn = &Style::drawShapedFrameControl; break; case CE_RubberBand: fcn = &Style::drawRubberBandControl; break; // case CE_SizeGrip: fcn = &Style::emptyControl; break; // case CE_HeaderSection: fcn = &Style::drawHeaderSectionControl; break; // case CE_HeaderEmptyArea: fcn = &Style::drawHeaderEmptyAreaControl; break; case CE_TabBarTabLabel: fcn = &Style::drawTabBarTabLabelControl; break; case CE_TabBarTabShape: fcn = &Style::drawTabBarTabShapeControl; break; case CE_CustomBase + 1: fcn = &Style::drawTabBarAddButtonControl; break; // case CE_ToolBoxTabLabel: fcn = &Style::drawToolBoxTabLabelControl; break; // case CE_ToolBoxTabShape: fcn = &Style::drawToolBoxTabShapeControl; break; // case CE_DockWidgetTitle: fcn = &Style::drawDockWidgetTitleControl; break; // case CE_CapacityBar: fcn = &Style::drawProgressBarControl; break; // fallback default: { // TODO: move this bare number comparison to some more human friendly form. if ((unsigned int)(element) == QStyle::CE_CustomBase + 1024) { fcn = &Style::drawSliderTickmarkLabels; } } } painter->save(); // call function if implemented if( !( fcn && (this->*fcn)( option, painter, widget ) ) ) { QCommonStyle::drawControl( element, option, painter, widget ); } painter->restore(); } void Style::drawComplexControl(QStyle::ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *w) const { DrawComplexControlFunc fn = nullptr; switch (cc) { case CC_Slider: fn = &Style::drawSlider; break; #ifndef QT_NO_COMBOBOX case CC_ComboBox: fn = &Style::drawComboBox; break; #endif case CC_SpinBox: fn = &Style::drawSpinBoxComplexControl; break; default: break; } if (fn && (this->*fn)(opt, p, w)) { return; } return QCommonStyle::drawComplexControl(cc, opt, p, w); } void Style::drawPrimitive(QStyle::PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const { DrawPrimitiveFunc fcn( nullptr ); switch( element ) { // case PE_PanelButtonCommand: fcn = &Style::drawPanelButtonCommandPrimitive; break; case PE_PanelButtonTool: fcn = &Style::drawPanelButtonToolPrimitive; break; // case PE_PanelScrollAreaCorner: fcn = &Style::drawPanelScrollAreaCornerPrimitive; break; case PE_PanelMenu: { QBrush menu_background_brush = m_palette->brush(PaletteExtended::Menu_BackgroundBrush, PaletteExtended::PseudoClass_Unspecified, option->palette.brush(QPalette::Background)); #ifdef DTK_SUPPORT_BLUR_WINDOW QColor menu_background_color = menu_background_brush.color(); if (DPlatformWindowHandle::isEnabledDXcb(widget) && menu_background_color.isValid()) { DPlatformWindowHandle handle(const_cast(widget)); if (handle.enableBlurWindow()) { menu_background_color.setAlphaF(DWindowManagerHelper::instance()->hasBlurWindow() ? 0.6 : menu_background_color.alphaF()); } menu_background_brush.setColor(menu_background_color); } #endif return painter->fillRect(option->rect, menu_background_brush); } case PE_PanelTipLabel: /*fcn = &Style::drawPanelTipLabelPrimitive; break;*/ { painter->fillRect(option->rect, Qt::white); return; } // case PE_PanelItemViewItem: fcn = &Style::drawPanelItemViewItemPrimitive; break; case PE_IndicatorCheckBox: fcn = &Style::drawIndicatorCheckBoxPrimitive; break; case PE_IndicatorRadioButton: fillBrush(painter, option->rect, m_palette->brush(PaletteExtended::RadioButton_BackgroundBrush, option)); return; // case PE_IndicatorButtonDropDown: fcn = &Style::drawIndicatorButtonDropDownPrimitive; break; case PE_IndicatorTabClose: fcn = &Style::drawIndicatorTabClosePrimitive; break; // case PE_IndicatorTabTear: fcn = &Style::drawIndicatorTabTearPrimitive; break; case PE_IndicatorArrowDown: if (isTabBarToolButton(widget)) { QStyleOptionToolButton sotb; sotb.QStyleOption::operator =(*option); sotb.arrowType = Qt::DownArrow; if (Q_LIKELY(drawScrollButtonLabelControl(&sotb, painter, widget))) return; } return drawStandardIcon(QStyle::SP_ArrowDown, option, painter, widget); case PE_IndicatorArrowLeft: if (isTabBarToolButton(widget)) { QStyleOptionToolButton sotb; sotb.QStyleOption::operator =(*option); sotb.arrowType = Qt::LeftArrow; if (Q_LIKELY(drawScrollButtonLabelControl(&sotb, painter, widget))) return; } return drawStandardIcon(QStyle::SP_ArrowLeft, option, painter, widget); case PE_IndicatorArrowRight: if (isTabBarToolButton(widget)) { QStyleOptionToolButton sotb; sotb.QStyleOption::operator =(*option); sotb.arrowType = Qt::RightArrow; if (Q_LIKELY(drawScrollButtonLabelControl(&sotb, painter, widget))) return; } return drawStandardIcon(QStyle::SP_ArrowRight, option, painter, widget); case PE_IndicatorArrowUp: if (isTabBarToolButton(widget)) { QStyleOptionToolButton sotb; sotb.QStyleOption::operator =(*option); sotb.arrowType = Qt::UpArrow; if (Q_LIKELY(drawScrollButtonLabelControl(&sotb, painter, widget))) return; } return drawStandardIcon(QStyle::SP_ArrowUp, option, painter, widget); case PE_IndicatorHeaderArrow: fcn = &Style::drawIndicatorHeaderArrowPrimitive; break; case PE_IndicatorSpinDown: case PE_IndicatorSpinMinus: fillBrush(painter, option->rect, m_palette->brush(PaletteExtended::SpinBox_DownBrush, option)); return; case PE_IndicatorSpinPlus: case PE_IndicatorSpinUp: fillBrush(painter, option->rect, m_palette->brush(PaletteExtended::SpinBox_UpBrush, option)); return; // case PE_IndicatorToolBarHandle: fcn = &Style::drawIndicatorToolBarHandlePrimitive; break; // case PE_IndicatorToolBarSeparator: fcn = &Style::drawIndicatorToolBarSeparatorPrimitive; break; // case PE_IndicatorBranch: fcn = &Style::drawIndicatorBranchPrimitive; break; // case PE_FrameStatusBar: fcn = &Style::emptyPrimitive; break; case PE_Frame: fcn = &Style::drawFramePrimitive; break; // case PE_FrameMenu: fcn = &Style::drawFrameMenuPrimitive; break; case PE_FrameLineEdit: fcn = &Style::drawFrameLineEditPrimitive; break; // case PE_FrameGroupBox: fcn = &Style::drawFrameGroupBoxPrimitive; break; case PE_FrameTabWidget: fcn = &Style::drawFrameTabWidgetPrimitive; break; case PE_FrameTabBarBase: fcn = &Style::drawFrameTabBarBasePrimitive; break; // case PE_FrameWindow: fcn = &Style::drawFrameWindowPrimitive; break; case PE_FrameFocusRect: fcn = &Style::drawFrameFocusRectPrimitive; break; // fallback default: break; } painter->save(); // call function if implemented if( !( fcn && (this->*fcn)( option, painter, widget ) ) ) { QCommonStyle::drawPrimitive( element, option, painter, widget ); } painter->restore(); } int Style::styleHint(QStyle::StyleHint sh, const QStyleOption *opt, const QWidget *w, QStyleHintReturn *shret) const { switch (sh) { case SH_ScrollBar_Transient: return true; case SH_ComboBox_ListMouseTracking: return true; case SH_MenuBar_MouseTracking: return true; case SH_Menu_MouseTracking: return true; case SH_Menu_SubMenuPopupDelay: return 100; case QStyle::SH_Menu_Scrollable: return true; case SH_Menu_SloppySubMenus: return true; #if QT_VERSION >= QT_VERSION_CHECK(5, 5, 0) case SH_Menu_SubMenuUniDirection: return 1000; #endif case SH_Slider_AbsoluteSetButtons: return Qt::LeftButton; case SH_Slider_PageSetButtons: return Qt::MidButton; #if QT_VERSION >= QT_VERSION_CHECK(5, 2, 0) case SH_Widget_Animate: return true; #endif case QStyle::SH_ItemView_ShowDecorationSelected: return true; case SH_RubberBand_Mask: return 0; case SH_ComboBox_Popup: return true; default: break; } return QCommonStyle::styleHint(sh, opt, w, shret); } QSize Style::sizeFromContents(QStyle::ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const { QSize newSize = QCommonStyle::sizeFromContents(type, option, size, widget); switch (type) { case CT_PushButton: if (const QStyleOptionButton *btn = qstyleoption_cast(option)) { const bool flat = btn->features & QStyleOptionButton::Flat; const bool semiTransparent = m_type == StyleSemiDark || m_type == StyleSemiLight; if (!btn->text.isEmpty() && !flat) { if (newSize.width() < 80) newSize.setWidth(80); // QPushButton should be set a minimum height 36 in d-semi-transparent style. if (semiTransparent && newSize.height() < 36) newSize.setHeight(36); } if (!btn->icon.isNull() && btn->iconSize.height() > 16) newSize -= QSize(0, 2); } break; case CT_GroupBox: if (option) { int topMargin = qMax(pixelMetric(PM_ExclusiveIndicatorHeight), option->fontMetrics.height()) + GroupBox_TopMargin; newSize += QSize(10, topMargin); // Add some space below the groupbox } break; case CT_RadioButton: case CT_CheckBox: newSize += QSize(0, 1); break; case CT_ToolButton: newSize += QSize(2, 2); break; case CT_SpinBox: newSize += QSize(0, -3); break; case CT_ComboBox: // newSize += QSize(2, 4); break; case CT_LineEdit: newSize += QSize(0, 4); break; case CT_MenuBarItem: newSize += QSize(8, 5); break; case CT_MenuItem: if (const QStyleOptionMenuItem *menuItem = qstyleoption_cast(option)) { int w = newSize.width(); bool hideShortcutText = !isVisibleMenuShortText(); if (hideShortcutText) { w -= menuItem->tabWidth; int t = menuItem->text.indexOf(QLatin1Char('\t')); if (t != -1) { int textWidth = option->fontMetrics.width(menuItem->text.mid(t + 1)); if (menuItem->tabWidth == 0) w -= textWidth; } } int maxpmw = menuItem->maxIconWidth; int tabSpacing = 20; if (menuItem->text.contains(QLatin1Char('\t'))) { if (!hideShortcutText) w += tabSpacing; } else { if (menuItem->menuItemType == QStyleOptionMenuItem::SubMenu) { w += 2 * Menu_ArrowHMargin; } else if (menuItem->menuItemType == QStyleOptionMenuItem::DefaultItem) { QFontMetrics fm(menuItem->font); QFont fontBold = menuItem->font; fontBold.setBold(true); QFontMetrics fmBold(fontBold); w += fmBold.width(menuItem->text) - fm.width(menuItem->text); } } int checkcol = qMax(maxpmw, Menu_CheckMarkWidth); // Windows always shows a check column w += checkcol; w += Menu_RightBorder + 10; newSize.setWidth(w); if (menuItem->menuItemType == QStyleOptionMenuItem::Separator) { if (!menuItem->text.isEmpty()) { newSize.setHeight(menuItem->fontMetrics.height()); } else { newSize.setHeight(newSize.height() + 4); } } else if (!menuItem->icon.isNull()) { if (const QComboBox *combo = qobject_cast(widget)) { newSize.setHeight(qMax(combo->iconSize().height() + 2, newSize.height())); } } newSize.setWidth(newSize.width() + 12); newSize.setWidth(qMax(newSize.width(), 100)); } newSize.setWidth(newSize.width() + Menu_ItemHMargin * 2); newSize.setHeight(newSize.height() + Menu_ItemVMargin * 2 + 1); break; case CT_SizeGrip: newSize += QSize(4, 4); break; case CT_MdiControls: if (const QStyleOptionComplex *styleOpt = qstyleoption_cast(option)) { int width = 0; if (styleOpt->subControls & SC_MdiMinButton) width += 19 + 1; if (styleOpt->subControls & SC_MdiNormalButton) width += 19 + 1; if (styleOpt->subControls & SC_MdiCloseButton) width += 19 + 1; newSize = QSize(width, 19); } else { newSize = QSize(60, 19); } break; default: break; } return newSize; } QIcon Style::standardIcon(QStyle::StandardPixmap standardIcon, const QStyleOption *opt, const QWidget *widget) const { QIcon icon; const bool rtl = (opt && opt->direction == Qt::RightToLeft) || (!opt && QApplication::isRightToLeft()); QString themeType = m_type == StyleLight ? "light" : "dark"; if (QApplication::desktopSettingsAware() && !QIcon::themeName().isEmpty() && false) { switch (standardIcon) { case SP_DirHomeIcon: icon = QIcon::fromTheme(QLatin1String("user-home")); break; case SP_MessageBoxInformation: icon = QIcon::fromTheme(QLatin1String("dialog-information")); break; case SP_MessageBoxWarning: icon = QIcon::fromTheme(QLatin1String("dialog-warning")); break; case SP_MessageBoxCritical: icon = QIcon::fromTheme(QLatin1String("dialog-error")); break; case SP_MessageBoxQuestion: icon = QIcon::fromTheme(QLatin1String("dialog-question")); break; case SP_DialogOpenButton: case SP_DirOpenIcon: icon = QIcon::fromTheme(QLatin1String("folder-open")); break; case SP_DialogSaveButton: icon = QIcon::fromTheme(QLatin1String("document-save")); break; case SP_DialogApplyButton: icon = QIcon::fromTheme(QLatin1String("dialog-ok-apply")); break; case SP_DialogYesButton: case SP_DialogOkButton: icon = QIcon::fromTheme(QLatin1String("dialog-ok")); break; case SP_DialogDiscardButton: icon = QIcon::fromTheme(QLatin1String("edit-delete")); break; case SP_DialogResetButton: icon = QIcon::fromTheme(QLatin1String("edit-clear")); break; case SP_DialogHelpButton: icon = QIcon::fromTheme(QLatin1String("help-contents")); break; case SP_FileIcon: icon = QIcon::fromTheme(QLatin1String("text-x-generic")); break; case SP_DirClosedIcon: case SP_DirIcon: icon = QIcon::fromTheme(QLatin1String("folder")); break; case SP_DriveFDIcon: icon = QIcon::fromTheme(QLatin1String("floppy_unmount")); break; case SP_ComputerIcon: icon = QIcon::fromTheme(QLatin1String("computer"), QIcon::fromTheme(QLatin1String("system"))); break; case SP_DesktopIcon: icon = QIcon::fromTheme(QLatin1String("user-desktop")); break; case SP_TrashIcon: icon = QIcon::fromTheme(QLatin1String("user-trash")); break; case SP_DriveCDIcon: case SP_DriveDVDIcon: icon = QIcon::fromTheme(QLatin1String("media-optical")); break; case SP_DriveHDIcon: icon = QIcon::fromTheme(QLatin1String("drive-harddisk")); break; case SP_FileDialogToParent: icon = QIcon::fromTheme(QLatin1String("go-up")); break; case SP_FileDialogNewFolder: icon = QIcon::fromTheme(QLatin1String("folder-new")); break; case SP_ArrowUp: icon = QIcon::fromTheme(QLatin1String("go-up")); break; case SP_ArrowDown: icon = QIcon::fromTheme(QLatin1String("go-down")); break; case SP_ArrowRight: icon = QIcon::fromTheme(QLatin1String("go-next")); break; case SP_ArrowLeft: icon = QIcon::fromTheme(QLatin1String("go-previous")); break; case SP_DialogCancelButton: icon = QIcon::fromTheme(QLatin1String("dialog-cancel"), QIcon::fromTheme(QLatin1String("process-stop"))); break; case SP_DialogCloseButton: icon = QIcon::fromTheme(QLatin1String("window-close")); break; case SP_FileDialogDetailedView: icon = QIcon::fromTheme(QLatin1String("view-list-details")); break; case SP_FileDialogListView: icon = QIcon::fromTheme(QLatin1String("view-list-icons")); break; case SP_BrowserReload: icon = QIcon::fromTheme(QLatin1String("view-refresh")); break; case SP_BrowserStop: icon = QIcon::fromTheme(QLatin1String("process-stop")); break; case SP_MediaPlay: icon = QIcon::fromTheme(QLatin1String("media-playback-start")); break; case SP_MediaPause: icon = QIcon::fromTheme(QLatin1String("media-playback-pause")); break; case SP_MediaStop: icon = QIcon::fromTheme(QLatin1String("media-playback-stop")); break; case SP_MediaSeekForward: icon = QIcon::fromTheme(QLatin1String("media-seek-forward")); break; case SP_MediaSeekBackward: icon = QIcon::fromTheme(QLatin1String("media-seek-backward")); break; case SP_MediaSkipForward: icon = QIcon::fromTheme(QLatin1String("media-skip-forward")); break; case SP_MediaSkipBackward: icon = QIcon::fromTheme(QLatin1String("media-skip-backward")); break; case SP_MediaVolume: icon = QIcon::fromTheme(QLatin1String("audio-volume-medium")); break; case SP_MediaVolumeMuted: icon = QIcon::fromTheme(QLatin1String("audio-volume-muted")); break; case SP_ArrowForward: if (rtl) return Style::standardIcon(SP_ArrowLeft, opt, widget); return Style::standardIcon(SP_ArrowRight, opt, widget); case SP_ArrowBack: if (rtl) return Style::standardIcon(SP_ArrowRight, opt, widget); return Style::standardIcon(SP_ArrowLeft, opt, widget); case SP_FileLinkIcon: { QIcon linkIcon = QIcon::fromTheme(QLatin1String("emblem-symbolic-link")); if (!linkIcon.isNull()) { QIcon baseIcon = Style::standardIcon(SP_FileIcon, opt, widget); const QList sizes = baseIcon.availableSizes(QIcon::Normal, QIcon::Off); for (int i = 0 ; i < sizes.size() ; ++i) { int size = sizes[i].width(); QPixmap basePixmap = baseIcon.pixmap(qt_getWindow(widget), QSize(size, size)); QPixmap linkPixmap = linkIcon.pixmap(qt_getWindow(widget), QSize(size / 2, size / 2)); QPainter painter(&basePixmap); painter.drawPixmap(size/2, size/2, linkPixmap); icon.addPixmap(basePixmap); } } } break; case SP_DirLinkIcon: { QIcon linkIcon = QIcon::fromTheme(QLatin1String("emblem-symbolic-link")); if (!linkIcon.isNull()) { QIcon baseIcon = Style::standardIcon(SP_DirIcon, opt, widget); const QList sizes = baseIcon.availableSizes(QIcon::Normal, QIcon::Off); for (int i = 0 ; i < sizes.size() ; ++i) { int size = sizes[i].width(); QPixmap basePixmap = baseIcon.pixmap(qt_getWindow(widget), QSize(size, size)); QPixmap linkPixmap = linkIcon.pixmap(qt_getWindow(widget), QSize(size / 2, size / 2)); QPainter painter(&basePixmap); painter.drawPixmap(size/2, size/2, linkPixmap); icon.addPixmap(basePixmap); } } } break; default: break; } } // if (QApplication::desktopSettingsAware() && !QIcon::themeName().isEmpty()) if (!icon.isNull()) return icon; switch (standardIcon) { case SP_FileDialogNewFolder: break; case SP_FileDialogBack: return Style::standardIcon(SP_ArrowBack, opt, widget); case SP_FileDialogToParent: return Style::standardIcon(SP_ArrowUp, opt, widget); case SP_FileDialogDetailedView: break; case SP_FileDialogInfoView: break; case SP_FileDialogContentsView: break; case SP_FileDialogListView: break; case SP_DialogOkButton: case SP_DialogYesButton: icon.addFile(QLatin1String(":/assets/icons/dialog-apply.png")); break; case SP_DialogCancelButton: case SP_DialogNoButton: icon.addFile(QLatin1String(":/assets/icons/button-cancel.png")); break; case SP_DialogHelpButton: icon.addFile(QLatin1String(":/assets/icons/help-faq.png")); break; case SP_DialogOpenButton: break; case SP_DialogSaveButton: break; case SP_DialogCloseButton: return Style::standardIcon(SP_TitleBarCloseButton, opt, widget); case SP_DialogApplyButton: icon.addFile(QLatin1String(":/assets/icons/dialog-apply.png")); break; case SP_DialogResetButton: break; case SP_DialogDiscardButton: break; case SP_ArrowForward: if (rtl) return Style::standardIcon(SP_ArrowLeft, opt, widget); return Style::standardIcon(SP_ArrowRight, opt, widget); case SP_ArrowBack: if (rtl) return Style::standardIcon(SP_ArrowRight, opt, widget); return Style::standardIcon(SP_ArrowLeft, opt, widget); case SP_ArrowLeft: icon.addFile(QLatin1String(":/assets/icons/arrow-left.png")); break; case SP_ArrowRight: icon.addFile(QLatin1String(":/assets/icons/arrow-right.png")); break; case SP_ArrowUp: icon.addFile(QLatin1String(":/assets/icons/arrow-up.png")); break; case SP_ArrowDown: icon.addFile(QLatin1String(":/assets/icons/arrow-down.png")); break; case SP_DirHomeIcon: icon.addFile(QLatin1String(":/assets/icons/user-home.svg")); break; case SP_DirIcon: icon.addFile(QLatin1String(":/assets/icons/folder.svg")); break; case SP_DirOpenIcon: icon.addFile(QLatin1String(":/assets/icons/folder-open.svg")); break; case SP_DirLinkIcon: { QIcon linkIcon(":/assets/icons/emblem-symbolic-link.png"); QIcon baseIcon = Style::standardIcon(SP_DirIcon, opt, widget); QList sizes; sizes << QSize(128, 128); for (int i = 0 ; i < sizes.size() ; ++i) { int size = sizes[i].width(); QPixmap basePixmap = baseIcon.pixmap(qt_getWindow(widget), QSize(size, size)); QPixmap linkPixmap = linkIcon.pixmap(qt_getWindow(widget), QSize(size / 2, size / 2)); QPainter painter(&basePixmap); painter.drawPixmap(size/1.5, size/1.5, linkPixmap); icon.addPixmap(basePixmap); } break; } case SP_DirLinkOpenIcon: { QIcon linkIcon(":/assets/icons/emblem-symbolic-link.png"); QIcon baseIcon = Style::standardIcon(SP_DirOpenIcon, opt, widget); QList sizes; sizes << QSize(128, 128); for (int i = 0 ; i < sizes.size() ; ++i) { int size = sizes[i].width(); QPixmap basePixmap = baseIcon.pixmap(qt_getWindow(widget), QSize(size, size)); QPixmap linkPixmap = linkIcon.pixmap(qt_getWindow(widget), QSize(size / 2, size / 2)); QPainter painter(&basePixmap); painter.drawPixmap(size/1.5, size/1.5, linkPixmap); icon.addPixmap(basePixmap); } break; } case SP_DriveCDIcon: case SP_DriveDVDIcon: icon.addFile(QLatin1String(":/assets/icons/media-optical.png")); break; case SP_DriveHDIcon: icon.addFile(QLatin1String(":/assets/icons/drive-harddisk.png")); break; case SP_FileIcon: icon.addFile(QLatin1String(":/assets/icons/text-x-generic.svg")); break; case SP_FileLinkIcon: { QIcon linkIcon(":/assets/icons/emblem-symbolic-link.png"); QIcon baseIcon = Style::standardIcon(SP_FileIcon, opt, widget); QList sizes; sizes << QSize(128, 128); for (int i = 0 ; i < sizes.size() ; ++i) { int size = sizes[i].width(); QPixmap basePixmap = baseIcon.pixmap(qt_getWindow(widget), QSize(size, size)); QPixmap linkPixmap = linkIcon.pixmap(qt_getWindow(widget), QSize(size / 2, size / 2)); QPainter painter(&basePixmap); painter.drawPixmap(size/1.5, size/1.5, linkPixmap); icon.addPixmap(basePixmap); } break; } case SP_TrashIcon: icon.addFile(QLatin1String(":/assets/icons/user-trash.svg")); break; case SP_BrowserReload: icon.addFile(QLatin1String(":/assets/icons/view-refresh.png")); break; case SP_BrowserStop: icon.addFile(QLatin1String(":/assets/icons/process-stop.png")); break; case SP_MediaPlay: break; case SP_MediaPause: break; case SP_MediaStop: break; case SP_MediaSeekForward: break; case SP_MediaSeekBackward: break; case SP_MediaSkipForward: break; case SP_MediaSkipBackward: break; case SP_MediaVolume: break; case SP_MediaVolumeMuted: break; case SP_DockWidgetCloseButton: case SP_TitleBarCloseButton: icon.addFile(QString(":/assets/icons/window_close_normal_%1.png").arg(themeType)); icon.addFile(QString(":/assets/icons/window_close_hover_%1.png").arg(themeType), QSize(), QIcon::Active); icon.addFile(QString(":/assets/icons/window_close_press_%1.png").arg(themeType), QSize(), QIcon::Active, QIcon::On); break; case SP_TitleBarMaxButton: icon.addFile(QString(":/assets/icons/window_max_normal_%1.png").arg(themeType)); icon.addFile(QString(":/assets/icons/window_max_hover_%1.png").arg(themeType), QSize(), QIcon::Active); icon.addFile(QString(":/assets/icons/window_max_press_%1.png").arg(themeType), QSize(), QIcon::Active, QIcon::On); break; case SP_TitleBarNormalButton: icon.addFile(QString(":/assets/icons/window_unmax_normal_%1.png").arg(themeType)); icon.addFile(QString(":/assets/icons/window_unmax_hover_%1.png").arg(themeType), QSize(), QIcon::Active); icon.addFile(QString(":/assets/icons/window_unmax_press_%1.png").arg(themeType), QSize(), QIcon::Active, QIcon::On); break; case SP_TitleBarMinButton: icon.addFile(QString(":/assets/icons/window_min_normal_%1.png").arg(themeType)); icon.addFile(QString(":/assets/icons/window_min_hover_%1.png").arg(themeType), QSize(), QIcon::Active); icon.addFile(QString(":/assets/icons/window_min_press_%1.png").arg(themeType), QSize(), QIcon::Active, QIcon::On); break; case SP_TitleBarMenuButton: icon.addFile(QString(":/assets/icons/window_option_normal_%1.png").arg(themeType)); icon.addFile(QString(":/assets/icons/window_option_hover_%1.png").arg(themeType), QSize(), QIcon::Active); icon.addFile(QString(":/assets/icons/window_option_press_%1.png").arg(themeType), QSize(), QIcon::Active, QIcon::On); break; case SP_LineEditClearButton: icon.addFile(QLatin1String(":/assets/icons/input_clear_normal.svg")); icon.addFile(QLatin1String(":/assets/icons/input_clear_hover.svg"), QSize(), QIcon::Active); icon.addFile(QLatin1String(":/assets/icons/input_clear_press.svg"), QSize(), QIcon::Active, QIcon::On); break; default: break; } if (!icon.isNull()) return icon; return QCommonStyle::standardIcon(standardIcon, opt, widget); } void Style::drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, const QPixmap &pixmap) const { if (!qFuzzyCompare(pixmap.devicePixelRatio(), 1.0)) { if (!painter->testRenderHint(QPainter::SmoothPixmapTransform)) { painter->setRenderHint(QPainter::SmoothPixmapTransform); QCommonStyle::drawItemPixmap(painter, rect, alignment, pixmap); painter->setRenderHint(QPainter::SmoothPixmapTransform, false); return; } } QCommonStyle::drawItemPixmap(painter, rect, alignment, pixmap); } bool Style::isTabBarToolButton(const QWidget *button) const { if (Q_UNLIKELY(!button)) return false; if (Q_UNLIKELY(qobject_cast(button->parent()) #ifdef DTKWIDGET_CLASS_DTabBar || qobject_cast(button->parent()) #endif )) { if (auto *b = qobject_cast(button)) { if (b->arrowType() != Qt::NoArrow && b->icon().isNull()) return true; #ifdef DTKWIDGET_CLASS_DTabBar if (qobject_cast(button->parent()) && button->objectName() == "AddButton") return true; #endif } } return false; } void Style::drawStandardIcon(QStyle::StandardPixmap sp, const QStyleOption *opt, QPainter *p, const QWidget *widget) const { if (opt->rect.width() <= 1 || opt->rect.height() <= 1) return; QRect r = opt->rect; int size = qMin(r.height(), r.width()); const bool enabled(opt->state & QStyle::State_Enabled); const bool mouseOver(opt->state & QStyle::State_MouseOver); const bool hasFocus((opt->state & QStyle::State_HasFocus ) && !( widget && widget->focusProxy())); const bool sunken((opt->state | QStyle::State_Sunken) == opt->state); QIcon::Mode mode = QIcon::Normal; if (!enabled) mode = QIcon::Disabled; else if (mouseOver) mode = QIcon::Active; else if (hasFocus) mode = QIcon::Selected; QPixmap pixmap = standardIcon(sp, opt, widget).pixmap(widget ? widget->window()->windowHandle() : 0, QSize(size, size), mode, sunken ? QIcon::On : QIcon::Off); int xOffset = r.x() + (r.width() - size)/2; int yOffset = r.y() + (r.height() - size)/2; p->drawPixmap(xOffset, yOffset, pixmap); } void Style::drawDeepinStyleIcon(const QString &name, const QStyleOption *opt, QPainter *p, const QWidget *widget) const { if (opt->rect.width() <= 1 || opt->rect.height() <= 1) return; QRect r = opt->rect; int size = qMin(r.height(), r.width()); const bool enabled(opt->state & QStyle::State_Enabled); const bool mouseOver(opt->state & QStyle::State_MouseOver); const bool hasFocus((opt->state & QStyle::State_HasFocus ) && !( widget && widget->focusProxy())); const bool selected(opt->state & QStyle::State_Selected); QString icon_state = "_normal"; if (!enabled) icon_state = "_disabled"; else if (mouseOver) icon_state = "_hover"; else if (selected) icon_state = "_selected"; else if (hasFocus) icon_state = "_active"; QString style_name = "light"; if (m_type == StyleDark) style_name = "dark"; else if (m_type == StyleSemiDark) style_name = "semidark"; else if (m_type == StyleSemiLight) style_name = "semilight"; const QStringList formatList = QStringList() << "png" << "svg"; QPixmap pixmap; foreach (const QString &format, formatList) { pixmap = HiDPIHelper::loadPixmap(":/assets/" + style_name + "/" + name + icon_state + "." + format); if (!pixmap.isNull()) break; pixmap = HiDPIHelper::loadPixmap(":/assets/" + style_name + "/" + name + "_normal." + format); if (!pixmap.isNull()) break; } if (pixmap.isNull()) return; int xOffset = r.x() + (r.width() - size)/2; int yOffset = r.y() + (r.height() - size)/2; p->drawPixmap(xOffset, yOffset, pixmap); } QWindow *Style::qt_getWindow(const QWidget *widget) { return widget ? widget->window()->windowHandle() : 0; } QColor Style::mergedColors(const QColor &colorA, const QColor &colorB, int factor) { const int maxFactor = 100; QColor tmp = colorA; tmp.setRed((tmp.red() * factor) / maxFactor + (colorB.red() * (maxFactor - factor)) / maxFactor); tmp.setGreen((tmp.green() * factor) / maxFactor + (colorB.green() * (maxFactor - factor)) / maxFactor); tmp.setBlue((tmp.blue() * factor) / maxFactor + (colorB.blue() * (maxFactor - factor)) / maxFactor); return tmp; } QPixmap Style::colorizedImage(const QString &fileName, const QColor &color, int rotation) { QString pixmapName = QLatin1String("$qt_ia-") % fileName % HexString(color.rgba()) % QString::number(rotation); QPixmap pixmap; if (!QPixmapCache::find(pixmapName, pixmap)) { QImage image(fileName); if (image.format() != QImage::Format_ARGB32_Premultiplied) image = image.convertToFormat( QImage::Format_ARGB32_Premultiplied); int width = image.width(); int height = image.height(); int source = color.rgba(); unsigned char sourceRed = qRed(source); unsigned char sourceGreen = qGreen(source); unsigned char sourceBlue = qBlue(source); for (int y = 0; y < height; ++y) { QRgb *data = (QRgb*) image.scanLine(y); for (int x = 0 ; x < width ; x++) { QRgb col = data[x]; unsigned int colorDiff = (qBlue(col) - qRed(col)); unsigned char gray = qGreen(col); unsigned char red = gray + qt_div_255(sourceRed * colorDiff); unsigned char green = gray + qt_div_255(sourceGreen * colorDiff); unsigned char blue = gray + qt_div_255(sourceBlue * colorDiff); unsigned char alpha = qt_div_255(qAlpha(col) * qAlpha(source)); data[x] = qRgba(std::min(alpha, red), std::min(alpha, green), std::min(alpha, blue), alpha); } } if (rotation != 0) { QTransform transform; transform.translate(-image.width()/2, -image.height()/2); transform.rotate(rotation); transform.translate(image.width()/2, image.height()/2); image = image.transformed(transform); } pixmap = QPixmap::fromImage(image); QPixmapCache::insert(pixmapName, pixmap); } return pixmap; } void Style::fillBrush(QPainter *p, const QRect &rect, const QBrush &brush, qreal rotate) { if (brush.style() == Qt::TexturePattern) { QPixmap pixmap = brush.texture(); qreal device_ratio = pixmap.devicePixelRatio(); if (!qFuzzyCompare(rotate, 0)) { pixmap = pixmap.transformed(QTransform().rotate(rotate)); pixmap.setDevicePixelRatio(device_ratio); } QRectF r = rect; QSizeF pixmap_size = QSizeF(pixmap.size()); if (pixmap_size.width() > rect.width() * device_ratio || pixmap_size.height() > rect.height() * device_ratio) { p->setRenderHint(QPainter::SmoothPixmapTransform); pixmap_size.scale(rect.size() * device_ratio, Qt::KeepAspectRatio); } r.setSize(pixmap_size / device_ratio); r.moveCenter(QRectF(rect).center()); p->drawPixmap(r, pixmap, QRectF(QPointF(0, 0), pixmap.size())); } else { p->fillRect(rect, brush); } } #include "moc_style.cpp" } dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/style.h000066400000000000000000000237531323676556600230660ustar00rootroot00000000000000/* * Copyright (C) 2016 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef STYLE_H #define STYLE_H #include #include #include "common.h" namespace dstyle { class PaletteExtended; class StylePrivate; class Style : public QCommonStyle { Q_OBJECT public: explicit Style(StyleType type); ~Style(); void polish(QPalette &p) Q_DECL_OVERRIDE; void polish(QWidget *w) Q_DECL_OVERRIDE; void polish(QApplication *app) Q_DECL_OVERRIDE; void unpolish(QWidget *w) Q_DECL_OVERRIDE; void unpolish(QApplication *app) Q_DECL_OVERRIDE; int pixelMetric(PixelMetric m, const QStyleOption *opt = Q_NULLPTR, const QWidget *widget = Q_NULLPTR) const Q_DECL_OVERRIDE; QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc, const QWidget *w) const Q_DECL_OVERRIDE; QRect subElementRect(SubElement r, const QStyleOption *opt, const QWidget *widget) const Q_DECL_OVERRIDE; void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p, const QWidget *w) const Q_DECL_OVERRIDE; void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, const QWidget *w) const Q_DECL_OVERRIDE; void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p, const QWidget *w) const Q_DECL_OVERRIDE; int styleHint(StyleHint sh, const QStyleOption *opt = Q_NULLPTR, const QWidget *w = Q_NULLPTR, QStyleHintReturn *shret = Q_NULLPTR) const Q_DECL_OVERRIDE; QSize sizeFromContents(ContentsType type, const QStyleOption *option, const QSize &size, const QWidget *widget) const Q_DECL_OVERRIDE; QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *opt, const QWidget *widget) const Q_DECL_OVERRIDE; void drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, const QPixmap &pixmap) const Q_DECL_OVERRIDE; // some function type alias. // using SubControlRectFunc = QRect(*)(const QStyleOptionComplex *opt, SubControl sc, const QWidget *w); using DrawComplexControlFunc = bool(Style::*)(const QStyleOptionComplex *, QPainter *, const QWidget *) const; using DrawPrimitiveFunc = bool(Style::*)(const QStyleOption*, QPainter*, const QWidget* ) const; using DrawControlFunc = bool(Style::*)(const QStyleOption*, QPainter*, const QWidget*) const; private: bool isTabBarToolButton(const QWidget *button) const; // frame bool drawFramePrimitive(const QStyleOption *option, QPainter *painter, const QWidget *widget) const; bool drawFrameFocusRectPrimitive(const QStyleOption *option, QPainter *painter, const QWidget *widget) const; bool drawShapedFrameControl(const QStyleOption *option, QPainter *painter, const QWidget *widget) const; // push button bool drawPushButtonBevel(const QStyleOption*, QPainter*, const QWidget*) const; bool drawPushButtonLabel(const QStyleOption *, QPainter *, const QWidget *) const; bool drawPushButtonFrame(QPainter* painter, const QRect& rect, const QBrush &color, const QBrush &outline, const QColor& shadow, const QWidget *widget = nullptr) const; // scroll bar QRect scrollbarSubControlRect(const QStyleOptionComplex *opt, SubControl sc, const QWidget *widget ) const; bool drawScrollBarSliderControl(const QStyleOption *option, QPainter *painter, const QWidget *widget) const; // menu bool drawMenuItemControl(const QStyleOption *option, QPainter *painter, const QWidget *widget) const; bool isVisibleMenuShortText() const; bool isVisibleMenuIcon() const; bool isVisibleMenuCheckBox() const; // menu bar bool drawMenuBarItemControl(const QStyleOption *option, QPainter *painter, const QWidget *widget) const; // slider QRect sliderSubControlRect(const QStyleOptionComplex *option, SubControl subControl, const QWidget *widget ) const; bool drawSlider(const QStyleOptionComplex *opt, QPainter *p, const QWidget *w) const; void drawSliderGroove(QPainter*, const QRect&, const QBrush & brush) const; void drawSliderHandle(QPainter* painter, const QStyleOptionSlider *option, const QRect& rect, const QString &type) const; bool drawSliderTickmarkLabels(const QStyleOption*, QPainter*, const QWidget*) const; // check box bool drawIndicatorCheckBoxPrimitive(const QStyleOption*, QPainter*, const QWidget*widget) const; // line edit bool drawFrameLineEditPrimitive(const QStyleOption *option, QPainter *painter, const QWidget *widget) const; // indicator void drawStandardIcon(QStyle::StandardPixmap sp, const QStyleOption *opt, QPainter *p, const QWidget *widget) const; void drawDeepinStyleIcon(const QString &name, const QStyleOption *opt, QPainter *p, const QWidget *widget) const; static QWindow *qt_getWindow(const QWidget *widget); static QColor mergedColors(const QColor &colorA, const QColor &colorB, int factor = 50); static QPixmap colorizedImage(const QString &fileName, const QColor &color, int rotation = 0); static void fillBrush(QPainter *p, const QRect &rect, const QBrush &brush, qreal rotate = 0); // progress bar bool drawProgressBarControl(const QStyleOption *option, QPainter *painter, const QWidget *widget) const; bool drawProgressBarContentsControl(const QStyleOption *option, QPainter *painter, const QWidget *widget) const; bool drawProgressBarGrooveControl(const QStyleOption *option, QPainter *painter, const QWidget *widget) const; bool drawProgressBarLabelControl(const QStyleOption *option, QPainter *painter, const QWidget *widget) const; QRect progressBarLabelRect(const QStyleOption *opt, const QWidget *widget) const; QRect progressBarGrooveRect(const QStyleOption *opt, const QWidget *widget) const; QRect progressBarContentsRect(const QStyleOption *opt, const QWidget *widget) const; // rubber band bool drawRubberBandControl(const QStyleOption *option, QPainter *painter, const QWidget *widget) const; // header view bool drawIndicatorHeaderArrowPrimitive(const QStyleOption *option, QPainter *painter, const QWidget *widget) const; QRect headerArrowRect(const QStyleOption *opt, const QWidget *widget) const; // combobox void drawComboBoxPopupFramePrimitive(const QStyleOption *option, QPainter *painter) const; bool drawComboBox(const QStyleOptionComplex *option, QPainter *painter, const QWidget *widget) const; QRect comboBoxSubControlRect(const QStyleOptionComplex *opt, SubControl sc, const QWidget *widget ) const; bool drawComboBoxLabelControl(const QStyleOption *option, QPainter *painter, const QWidget *) const; static bool widgetIsComboBoxPopupFramePrimitive(const QWidget *w); // tool button bool drawToolButtonLabelControl( const QStyleOption* option, QPainter* painter, const QWidget* widget ) const; bool drawPanelButtonToolPrimitive( const QStyleOption* option, QPainter* painter, const QWidget* widget ) const; // tab widget bool drawFrameTabWidgetPrimitive( const QStyleOption* option, QPainter* painter, const QWidget* widget ) const; // tab bar bool drawFrameTabBarBasePrimitive( const QStyleOption* option, QPainter* painter, const QWidget* widget ) const; bool drawTabBarTabLabelControl(const QStyleOption* option, QPainter* p, const QWidget* widget) const; bool drawTabBarTabShapeControl(const QStyleOption* option, QPainter* painter, const QWidget* widget) const; bool drawTabBarAddButtonControl(const QStyleOption* option, QPainter* painter, const QWidget* widget) const; bool drawIndicatorTabClosePrimitive(const QStyleOption *opt, QPainter *p, const QWidget *widget) const; bool drawScrollButtonPrimitive( const QStyleOption* option, QPainter* painter, const QWidget* widget ) const; bool drawScrollButtonLabelControl( const QStyleOption* option, QPainter* painter, const QWidget* widget ) const; // spin box bool drawSpinBoxComplexControl( const QStyleOptionComplex* option, QPainter* painter, const QWidget* widget ) const; QRect spinboxSubControlRect(const QStyleOptionComplex *opt, SubControl sc, const QWidget *widget) const; StyleType m_type; PaletteExtended *m_palette = Q_NULLPTR; friend class SliderHelper; friend class PushButtonHelper; friend class LineEditHelper; friend class FrameHelper; friend class ScrollBarHelper; Q_PRIVATE_SLOT(d_func(), void _q_removeAnimation()) Q_PRIVATE_SLOT(d_func(), void _q_updateAppFont()) Q_DECLARE_PRIVATE(Style) }; class DStyleAnimation; class StylePrivate : public QCommonStylePrivate { public: QColor outline(const QPalette &pal) const; QColor buttonColor(const QPalette &pal) const; QColor highlight(const QPalette &pal) const; QColor highlightedOutline(const QPalette &pal) const; QColor backgroundColor(const QPalette &pal, const QWidget* widget) const; inline QColor innerContrastLine() const { return QColor(255, 255, 255, 30); } inline QColor lightShade() const { return QColor(255, 255, 255, 90); } inline QColor darkShade() const { return QColor(0, 0, 0, 60); } #ifndef QT_NO_ANIMATION DStyleAnimation *animation(const QObject *target) const; void startAnimation(DStyleAnimation *animation) const; void stopAnimation(const QObject *target) const; void _q_removeAnimation(); #endif void _q_updateAppFont(); Q_DECLARE_PUBLIC(Style) private: mutable QHash animations; }; } #endif // STYLE_H dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/tabbarhelper.cpp000066400000000000000000000406101323676556600247030ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * Author: zccrs * * Maintainer: zccrs * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "style.h" #include "paletteextended.h" #include "painterhelper.h" #include #ifdef DTKWIDGET_CLASS_DTabBar #include DWIDGET_USE_NAMESPACE #endif #include #include #include #include #include #include namespace dstyle { static void tabLayout(const QStyle *proxyStyle, const QStyleOptionTab *opt, const QWidget *widget, QRect *textRect, QRect *iconRect) { Q_ASSERT(textRect); Q_ASSERT(iconRect); QRect tr = opt->rect; bool verticalTabs = opt->shape == QTabBar::RoundedEast || opt->shape == QTabBar::RoundedWest || opt->shape == QTabBar::TriangularEast || opt->shape == QTabBar::TriangularWest; if (verticalTabs) tr.setRect(0, 0, tr.height(), tr.width()); //0, 0 as we will have a translate transform int verticalShift = proxyStyle->pixelMetric(QStyle::PM_TabBarTabShiftVertical, opt, widget); int horizontalShift = proxyStyle->pixelMetric(QStyle::PM_TabBarTabShiftHorizontal, opt, widget); int hpadding = proxyStyle->pixelMetric(QStyle::PM_TabBarTabHSpace, opt, widget) / 2; int vpadding = proxyStyle->pixelMetric(QStyle::PM_TabBarTabVSpace, opt, widget) / 2; if (opt->shape == QTabBar::RoundedSouth || opt->shape == QTabBar::TriangularSouth) verticalShift = -verticalShift; tr.adjust(hpadding, verticalShift - vpadding, horizontalShift - hpadding, vpadding); bool selected = opt->state & QStyle::State_Selected; if (selected) { tr.setTop(tr.top() - verticalShift); tr.setRight(tr.right() - horizontalShift); } // left widget if (!opt->leftButtonSize.isEmpty()) { tr.setLeft(tr.left() + 4 + (verticalTabs ? opt->leftButtonSize.height() : opt->leftButtonSize.width())); } // right widget if (!opt->rightButtonSize.isEmpty()) { tr.setRight(tr.right() - 4 - (verticalTabs ? opt->rightButtonSize.height() : opt->rightButtonSize.width())); } // icon if (!opt->icon.isNull()) { QSize iconSize = opt->iconSize; if (!iconSize.isValid()) { int iconExtent = proxyStyle->pixelMetric(QStyle::PM_SmallIconSize); iconSize = QSize(iconExtent, iconExtent); } QSize tabIconSize = opt->icon.actualSize(iconSize, (opt->state & QStyle::State_Enabled) ? QIcon::Normal : QIcon::Disabled, (opt->state & QStyle::State_Selected) ? QIcon::On : QIcon::Off ); // High-dpi icons do not need adjustmet; make sure tabIconSize is not larger than iconSize tabIconSize = QSize(qMin(tabIconSize.width(), iconSize.width()), qMin(tabIconSize.height(), iconSize.height())); *iconRect = QRect(tr.left(), tr.center().y() - tabIconSize.height() / 2, tabIconSize.width(), tabIconSize .height()); if (!verticalTabs) *iconRect = proxyStyle->visualRect(opt->direction, opt->rect, *iconRect); tr.setLeft(tr.left() + tabIconSize.width() + 4); } if (!verticalTabs) tr = proxyStyle->visualRect(opt->direction, opt->rect, tr); *textRect = tr; } bool Style::drawFrameTabBarBasePrimitive( const QStyleOption* option, QPainter* painter, const QWidget* widget ) const { Q_UNUSED(widget) auto opt = static_cast(option); PainterHelper::drawRect(painter, opt->tabBarRect, m_palette->brush(PaletteExtended::TabBar_BackgroundBrush, option), 1, m_palette->brush(PaletteExtended::TabBar_BorderBrush, option)); return true; } bool Style::drawTabBarTabLabelControl(const QStyleOption *opt, QPainter *p, const QWidget *widget) const { auto tab = static_cast(opt); QRect tr = tab->rect; bool verticalTabs = tab->shape == QTabBar::RoundedEast || tab->shape == QTabBar::RoundedWest || tab->shape == QTabBar::TriangularEast || tab->shape == QTabBar::TriangularWest; int alignment = Qt::AlignCenter | Qt::TextShowMnemonic; if (!proxy()->styleHint(SH_UnderlineShortcut, opt, widget)) alignment |= Qt::TextHideMnemonic; if (verticalTabs) { p->save(); int newX, newY, newRot; if (tab->shape == QTabBar::RoundedEast || tab->shape == QTabBar::TriangularEast) { newX = tr.width() + tr.x(); newY = tr.y(); newRot = 90; } else { newX = tr.x(); newY = tr.y() + tr.height(); newRot = -90; } QTransform m = QTransform::fromTranslate(newX, newY); m.rotate(newRot); p->setTransform(m, true); } QRect iconRect; tabLayout(proxy(), tab, widget, &tr, &iconRect); tr = proxy()->subElementRect(SE_TabBarTabText, opt, widget); //we compute tr twice because the style may override subElementRect if (!tab->icon.isNull()) { QPixmap tabIcon = tab->icon.pixmap(qt_getWindow(widget), tab->iconSize, (tab->state & State_Enabled) ? QIcon::Normal : QIcon::Disabled, (tab->state & State_Selected) ? QIcon::On : QIcon::Off); p->drawPixmap(iconRect.x(), iconRect.y(), tabIcon); } p->setPen(QPen(m_palette->brush(PaletteExtended::TabBarTab_TextColor, opt), 1)); p->drawText(tr, alignment, tab->text); if (verticalTabs) p->restore(); if (tab->state & State_HasFocus) { const int OFFSET = 1 + pixelMetric(PM_DefaultFrameWidth); int x1, x2; x1 = tab->rect.left(); x2 = tab->rect.right() - 1; QStyleOptionFocusRect fropt; fropt.QStyleOption::operator=(*tab); fropt.rect.setRect(x1 + 1 + OFFSET, tab->rect.y() + OFFSET, x2 - x1 - 2*OFFSET, tab->rect.height() - 2*OFFSET); drawPrimitive(PE_FrameFocusRect, &fropt, p, widget); } return true; } bool Style::drawTabBarTabShapeControl(const QStyleOption *opt, QPainter *p, const QWidget *widget) const { auto tab = static_cast(opt); p->save(); QRect rect(tab->rect); bool selected = tab->state & State_Selected; bool onlyOne = tab->position == QStyleOptionTab::OnlyOneTab; int tabOverlap = onlyOne ? 0 : proxy()->pixelMetric(PM_TabBarTabOverlap, opt, widget); if (!selected) { switch (tab->shape) { case QTabBar::TriangularNorth: rect.adjust(0, 0, 0, -tabOverlap); if(!selected) rect.adjust(1, 1, -1, 0); break; case QTabBar::TriangularSouth: rect.adjust(0, tabOverlap, 0, 0); if(!selected) rect.adjust(1, 0, -1, -1); break; case QTabBar::TriangularEast: rect.adjust(tabOverlap, 0, 0, 0); if(!selected) rect.adjust(0, 1, -1, -1); break; case QTabBar::TriangularWest: rect.adjust(0, 0, -tabOverlap, 0); if(!selected) rect.adjust(1, 1, 0, -1); break; default: break; } } p->setPen(QPen(m_palette->brush(PaletteExtended::TabBarTab_BorderBrush, opt), 0)); p->setBrush(m_palette->brush(PaletteExtended::TabBarTab_BackgroundBrush, opt)); // if (selected) { // p->setBrush(tab->palette.base()); // } else { // if (widget && widget->parentWidget()) // p->setBrush(widget->parentWidget()->palette().background()); // else // p->setBrush(tab->palette.background()); // } int y; int x; QPolygon a(10); switch (tab->shape) { case QTabBar::TriangularNorth: case QTabBar::TriangularSouth: { a.setPoint(0, 0, -1); a.setPoint(1, 0, 0); y = rect.height() - 2; x = y / 3; a.setPoint(2, x++, y - 1); ++x; a.setPoint(3, x++, y++); a.setPoint(4, x, y); int i; int right = rect.width() - 1; for (i = 0; i < 5; ++i) a.setPoint(9 - i, right - a.point(i).x(), a.point(i).y()); if (tab->shape == QTabBar::TriangularNorth) for (i = 0; i < 10; ++i) a.setPoint(i, a.point(i).x(), rect.height() - 1 - a.point(i).y()); a.translate(rect.left(), rect.top()); p->setRenderHint(QPainter::Antialiasing); p->translate(0, 0.5); QPainterPath path; path.addPolygon(a); p->drawPath(path); break; } case QTabBar::TriangularEast: case QTabBar::TriangularWest: { a.setPoint(0, -1, 0); a.setPoint(1, 0, 0); x = rect.width() - 2; y = x / 3; a.setPoint(2, x - 1, y++); ++y; a.setPoint(3, x++, y++); a.setPoint(4, x, y); int i; int bottom = rect.height() - 1; for (i = 0; i < 5; ++i) a.setPoint(9 - i, a.point(i).x(), bottom - a.point(i).y()); if (tab->shape == QTabBar::TriangularWest) for (i = 0; i < 10; ++i) a.setPoint(i, rect.width() - 1 - a.point(i).x(), a.point(i).y()); a.translate(rect.left(), rect.top()); p->setRenderHint(QPainter::Antialiasing); p->translate(0.5, 0); QPainterPath path; path.addPolygon(a); p->drawPath(path); break; } case QTabBar::RoundedNorth: case QTabBar::RoundedSouth: { const QRect &border_rect = tab->rect.adjusted(0, 0, 1, 1); p->fillRect(tab->rect, p->brush()); if (tab->position != QStyleOptionTab::Beginning && tab->position != QStyleOptionTab::OnlyOneTab) { p->drawLine(border_rect.topLeft(), border_rect.bottomLeft()); } if (Q_UNLIKELY(selected)) { QRect active_rect = tab->rect; if (Q_LIKELY(tab->shape == QTabBar::RoundedNorth)) { active_rect.setTop(active_rect.bottom() - qMin(3, active_rect.height() / 10) + 1); } else { active_rect.setBottom(active_rect.top() + qMin(3, active_rect.height() / 10) + 1); } p->fillRect(active_rect, m_palette->brush(PaletteExtended::TabBarTab_ActiveColor, opt)); } break; } case QTabBar::RoundedEast: case QTabBar::RoundedWest: { const QRect &border_rect = tab->rect.adjusted(0, 0, 1, 1); p->fillRect(tab->rect, p->brush()); if (tab->position != QStyleOptionTab::Beginning && tab->position != QStyleOptionTab::OnlyOneTab) { p->drawLine(border_rect.topLeft(), border_rect.topRight()); } if (Q_UNLIKELY(selected)) { QRect active_rect = tab->rect; if (Q_LIKELY(tab->shape == QTabBar::RoundedWest)) { active_rect.setLeft(active_rect.right() - qMin(3, active_rect.width() / 10) + 1); } else { active_rect.setRight(active_rect.left() + qMin(3, active_rect.width() / 10) + 1); } p->fillRect(active_rect, m_palette->brush(PaletteExtended::TabBarTab_ActiveColor, opt)); } break; } } p->restore(); return true; } bool Style::drawTabBarAddButtonControl(const QStyleOption *option, QPainter *painter, const QWidget *widget) const { painter->fillRect(option->rect, m_palette->brush(PaletteExtended::TabBarAddButton_BackgroundBrush, option)); fillBrush(painter, option->rect, m_palette->brush(widget, PaletteExtended::TabBarAddButton_Icon, option)); #ifdef DTKWIDGET_CLASS_DTabBar if (const DTabBar *tb = qobject_cast(widget->parent())) { painter->setPen(QPen(m_palette->brush(PaletteExtended::TabBarTab_BorderBrush, option), 1)); QRectF rect = QRectF(option->rect).adjusted(0.5, 0.5, 1, 1); switch (tb->shape()) { case QTabBar::RoundedNorth: case QTabBar::RoundedSouth: painter->drawLine(rect.topLeft(), rect.bottomLeft()); break; case QTabBar::RoundedEast: case QTabBar::RoundedWest: painter->drawLine(rect.topLeft(), rect.topRight()); break; default: break; } } #endif return true; } class DQTabBar : public QTabBar { friend class Style; }; bool Style::drawIndicatorTabClosePrimitive(const QStyleOption *opt, QPainter *p, const QWidget *widget) const { const QTabBar *tb = qobject_cast(widget->parent()); if (!tb) { if (const QWidget *w = dynamic_cast(p->device())) widget = w; tb = qobject_cast(widget->parent()); } if (Q_UNLIKELY(!tb)) return false; int index = -1; for (int i = 0; i < tb->count(); ++i) { if (Q_LIKELY(tb->tabButton(i, QTabBar::LeftSide) != widget && tb->tabButton(i, QTabBar::RightSide) != widget)) { continue; } index = i; break; } if (Q_UNLIKELY(index < 0)) return true; QStyleOptionTab tab; static_cast(tb)->initStyleOption(&tab, index); if (Q_LIKELY((tab.state | QStyle::State_MouseOver) != tab.state)) { return true; } p->fillRect(opt->rect, m_palette->brush(PaletteExtended::TabBarTab_CloseIconBackground, opt)); fillBrush(p, opt->rect, m_palette->brush(PaletteExtended::TabBarTab_CloseIcon, opt)); return true; } bool Style::drawScrollButtonPrimitive(const QStyleOption *option, QPainter *painter, const QWidget *widget) const { fillBrush(painter, option->rect, m_palette->brush(PaletteExtended::TabBarScrollButton_BackgroundBrush, option)); #ifdef DTKWIDGET_CLASS_DTabBar if (const DTabBar *tb = qobject_cast(widget->parent())) { if (const QToolButton *button = qobject_cast(widget)) { if (button->arrowType() == Qt::LeftArrow || button->arrowType() == Qt::UpArrow) return true; } else { return true; } painter->setPen(QPen(m_palette->brush(PaletteExtended::TabBarTab_BorderBrush, option), 1)); QRectF rect = QRectF(option->rect).adjusted(0.5, 0.5, 0, 0); switch (tb->shape()) { case QTabBar::RoundedNorth: case QTabBar::RoundedSouth: painter->drawLine(rect.topRight(), rect.bottomRight()); break; case QTabBar::RoundedEast: case QTabBar::RoundedWest: painter->drawLine(rect.bottomLeft(), rect.bottomRight()); break; default: break; } } #endif return true; } bool Style::drawScrollButtonLabelControl(const QStyleOption *option, QPainter *painter, const QWidget *widget) const { const QStyleOptionToolButton* toolButtonOption( qstyleoption_cast(option) ); switch( toolButtonOption->arrowType ) { case Qt::LeftArrow: fillBrush(painter, option->rect, m_palette->brush(widget, PaletteExtended::TabBarScrollButton_UpIcon, option)); break; case Qt::RightArrow: fillBrush(painter, option->rect, m_palette->brush(widget, PaletteExtended::TabBarScrollButton_DownIcon, option)); break; case Qt::UpArrow: fillBrush(painter, option->rect, m_palette->brush(widget, PaletteExtended::TabBarScrollButton_UpIcon, option), 90); break; case Qt::DownArrow: fillBrush(painter, option->rect, m_palette->brush(widget, PaletteExtended::TabBarScrollButton_DownIcon, option), 90); break; default: break; } return true; } } dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/tabwidgethelper.cpp000066400000000000000000000127701323676556600254300ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "style.h" #include "geometryutils.h" #include "painterhelper.h" #include #include #include namespace dstyle { bool Style::drawFrameTabWidgetPrimitive( const QStyleOption* option, QPainter* painter, const QWidget* widget ) const { Q_UNUSED(widget) // cast option and check const QStyleOptionTabWidgetFrameV2* tabOption( qstyleoption_cast( option ) ); if( !tabOption ) return true; // do nothing if tabbar is hidden const bool isQtQuickControl( false ); if( tabOption->tabBarSize.isEmpty() && !isQtQuickControl ) return true; // adjust rect to handle overlaps QRect rect( option->rect ); const QRect tabBarRect( tabOption->tabBarRect ); const QSize tabBarSize( tabOption->tabBarSize ); Corners corners = AllCorners; // adjust corners to deal with oversized tabbars switch( tabOption->shape ) { case QTabBar::RoundedNorth: case QTabBar::TriangularNorth: if( isQtQuickControl ) rect.adjust( -1, -1, 1, 0 ); if( tabBarSize.width() >= rect.width() - 2*Metrics::Frame_FrameRadius ) corners &= ~CornersTop; if( tabBarRect.left() < rect.left() + Metrics::Frame_FrameRadius ) corners &= ~CornerTopLeft; if( tabBarRect.right() > rect.right() - Metrics::Frame_FrameRadius ) corners &= ~CornerTopRight; break; case QTabBar::RoundedSouth: case QTabBar::TriangularSouth: if( isQtQuickControl ) rect.adjust( -1, 0, 1, 1 ); if( tabBarSize.width() >= rect.width()-2*Metrics::Frame_FrameRadius ) corners &= ~CornersBottom; if( tabBarRect.left() < rect.left() + Metrics::Frame_FrameRadius ) corners &= ~CornerBottomLeft; if( tabBarRect.right() > rect.right() - Metrics::Frame_FrameRadius ) corners &= ~CornerBottomRight; break; case QTabBar::RoundedWest: case QTabBar::TriangularWest: if( isQtQuickControl ) rect.adjust( -1, 0, 0, 0 ); if( tabBarSize.height() >= rect.height()-2*Metrics::Frame_FrameRadius ) corners &= ~CornersLeft; if( tabBarRect.top() < rect.top() + Metrics::Frame_FrameRadius ) corners &= ~CornerTopLeft; if( tabBarRect.bottom() > rect.bottom() - Metrics::Frame_FrameRadius ) corners &= ~CornerBottomLeft; break; case QTabBar::RoundedEast: case QTabBar::TriangularEast: if( isQtQuickControl ) rect.adjust( 0, 0, 1, 0 ); if( tabBarSize.height() >= rect.height()-2*Metrics::Frame_FrameRadius ) corners &= ~CornersRight; if( tabBarRect.top() < rect.top() + Metrics::Frame_FrameRadius ) corners &= ~CornerTopRight; if( tabBarRect.bottom() > rect.bottom() - Metrics::Frame_FrameRadius ) corners &= ~CornerBottomRight; break; default: break; } // define colors // const QPalette& palette( option->palette ); const QColor background; const QColor outline( Qt::gray ); painter->setRenderHint( QPainter::Antialiasing ); QRectF frameRect( rect.adjusted( 1, 1, -1, -1 ) ); qreal radius( GeometryUtils::frameRadius() ); // set pen if( outline.isValid() ) { painter->setPen( outline ); frameRect.adjust( 0.5, 0.5, -0.5, -0.5 ); radius = qMax( radius-1, qreal( 0.0 ) ); } else painter->setPen( Qt::NoPen ); // set brush if( background.isValid() ) painter->setBrush( background ); else painter->setBrush( Qt::NoBrush ); // render QPainterPath path( PainterHelper::roundedPath( frameRect, corners, radius ) ); QWidget *current_widget = qobject_cast(widget)->currentWidget(); QColor fill_color = painter->pen().color(); fill_color.setAlphaF(0.2); fill_color = PainterHelper::colorBlend(option->palette.color(QPalette::Window), fill_color); if (current_widget) { painter->fillPath(path, fill_color); QPainterPath inside_path; QRectF rect = current_widget->parentWidget()->geometry(); inside_path.addRoundedRect(rect.adjusted(5.5, 5.5, -5.5, -5.5), radius, radius); painter->fillPath(inside_path, option->palette.color(QPalette::Window)); painter->drawPath(inside_path); } QRectF selectedTabRect = QRectF(tabOption->selectedTabRect).adjusted(1.5, 0.5, -0.5, -0.5); QPainterPath selectedtabBarButtonPath(PainterHelper::roundedPath(selectedTabRect, CornerTopLeft | CornerTopRight, radius)); QPainterPath tabBarButtonPath; tabBarButtonPath.addRoundedRect(tabOption->tabBarRect.adjusted(1, 0, -1, 0), radius, radius); painter->fillPath(tabBarButtonPath, Qt::gray); painter->drawPath( path ); painter->fillPath(selectedtabBarButtonPath, fill_color); painter->drawPath(selectedtabBarButtonPath); painter->setPen(fill_color); selectedTabRect.adjust(1, 0, -1, 0); painter->drawLine(selectedTabRect.bottomLeft(), selectedTabRect.bottomRight()); return true; } } dde-qt5integration-0.2.8.3+git20180208/dstyleplugin/toolbuttonhelper.cpp000066400000000000000000000166771323676556600257010ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "style.h" #include "paletteextended.h" #include #include namespace dstyle { //* centering QRect centerRect(const QRect &rect, int width, int height) { return QRect(rect.left() + (rect.width() - width)/2, rect.top() + (rect.height() - height)/2, width, height); } QRect centerRect(const QRect &rect, const QSize& size ) { return centerRect( rect, size.width(), size.height() ); } bool Style::drawToolButtonLabelControl( const QStyleOption* option, QPainter* painter, const QWidget* widget ) const { if (isTabBarToolButton(widget)) { return drawScrollButtonLabelControl(option, painter, widget); } // cast option and check const QStyleOptionToolButton* toolButtonOption( qstyleoption_cast(option) ); // copy rect and palette const QRect& rect = option->rect; const QPalette& palette = option->palette; // state const State& state( option->state ); const bool enabled( state & State_Enabled ); const bool sunken( state & (State_On | State_Sunken) ); const bool mouseOver( enabled && (option->state & State_MouseOver) ); const bool flat( state & State_AutoRaise ); // focus flag is set to match the background color in either renderButtonFrame or renderToolButtonFrame bool hasFocus( false ); if( flat ) hasFocus = enabled && !mouseOver && (option->state & State_HasFocus); else hasFocus = enabled && !mouseOver && (option->state & (State_HasFocus|State_Sunken) ); const bool hasArrow( toolButtonOption->features & QStyleOptionToolButton::Arrow ); const bool hasIcon( !( hasArrow || toolButtonOption->icon.isNull() ) ); const bool hasText( !toolButtonOption->text.isEmpty() ); // contents QRect contentsRect( rect ); if( sunken && !flat ) contentsRect.translate( 1, 1 ); // icon size const QSize iconSize( toolButtonOption->iconSize ); // text size int textFlags( Qt::TextHideMnemonic ); const QSize textSize( option->fontMetrics.size( textFlags, toolButtonOption->text ) ); // adjust text and icon rect based on options QRect iconRect; QRect textRect; if( hasText && ( !(hasArrow||hasIcon) || toolButtonOption->toolButtonStyle == Qt::ToolButtonTextOnly ) ) { // text only textRect = contentsRect; textFlags |= Qt::AlignCenter; } else if( (hasArrow||hasIcon) && (!hasText || toolButtonOption->toolButtonStyle == Qt::ToolButtonIconOnly ) ) { // icon only iconRect = contentsRect; } else if( toolButtonOption->toolButtonStyle == Qt::ToolButtonTextUnderIcon ) { const int contentsHeight( iconSize.height() + textSize.height() + Metrics::ToolButton_ItemSpacing ); iconRect = QRect( QPoint( contentsRect.left() + (contentsRect.width() - iconSize.width())/2, contentsRect.top() + (contentsRect.height() - contentsHeight)/2 ), iconSize ); textRect = QRect( QPoint( contentsRect.left() + (contentsRect.width() - textSize.width())/2, iconRect.bottom() + Metrics::ToolButton_ItemSpacing + 1 ), textSize ); textFlags |= Qt::AlignCenter; } else { const int contentsWidth( iconSize.width() + textSize.width() + Metrics::ToolButton_ItemSpacing ); iconRect = QRect( QPoint( contentsRect.left() + (contentsRect.width() - contentsWidth )/2, contentsRect.top() + (contentsRect.height() - iconSize.height())/2 ), iconSize ); textRect = QRect( QPoint( iconRect.right() + Metrics::ToolButton_ItemSpacing + 1, contentsRect.top() + (contentsRect.height() - textSize.height())/2 ), textSize ); // handle right to left layouts iconRect = visualRect( option->direction, option->rect, iconRect ); textRect = visualRect( option->direction, option->rect, textRect ); textFlags |= Qt::AlignLeft | Qt::AlignVCenter; } // make sure there is enough room for icon if( iconRect.isValid() ) iconRect = centerRect( iconRect, iconSize ); // render arrow or icon if( hasArrow && iconRect.isValid() ) { QStyleOptionToolButton copy( *toolButtonOption ); copy.rect = iconRect; switch( toolButtonOption->arrowType ) { case Qt::LeftArrow: drawPrimitive( PE_IndicatorArrowLeft, ©, painter, widget ); break; case Qt::RightArrow: drawPrimitive( PE_IndicatorArrowRight, ©, painter, widget ); break; case Qt::UpArrow: drawPrimitive( PE_IndicatorArrowUp, ©, painter, widget ); break; case Qt::DownArrow: drawPrimitive( PE_IndicatorArrowDown, ©, painter, widget ); break; default: break; } } else if( hasIcon && iconRect.isValid() ) { // icon state and mode const QIcon::State iconState( sunken ? QIcon::On : QIcon::Off ); QIcon::Mode iconMode; if( !enabled ) iconMode = QIcon::Disabled; else if( !flat && hasFocus ) iconMode = QIcon::Selected; else if( mouseOver && flat ) iconMode = QIcon::Active; else iconMode = QIcon::Normal; const QPixmap pixmap = toolButtonOption->icon.pixmap( iconSize, iconMode, iconState ); drawItemPixmap( painter, iconRect, Qt::AlignCenter, pixmap ); } // render text if( hasText && textRect.isValid() ) { QPalette::ColorRole textRole( QPalette::ButtonText ); if( flat ) textRole = (hasFocus&&sunken&&!mouseOver) ? QPalette::HighlightedText: QPalette::WindowText; else if( mouseOver ) textRole = QPalette::HighlightedText; painter->setFont(toolButtonOption->font); drawItemText( painter, textRect, textFlags, palette, enabled, toolButtonOption->text, textRole ); } return true; } bool Style::drawPanelButtonToolPrimitive(const QStyleOption *option, QPainter *painter, const QWidget *widget) const { if (isTabBarToolButton(widget)) { return drawScrollButtonPrimitive(option, painter, widget); } // rect and palette const QRect& rect( option->rect ); // update animation state // mouse over takes precedence over focus // TODO(hualet): update button color from palette in case button is default const QColor shadow( Qt::transparent ); const QBrush outline(m_palette->brush(PaletteExtended::PushButton_BorderBrush, option)); const QBrush background(m_palette->brush(PaletteExtended::PushButton_BackgroundBrush, option)); // render drawPushButtonFrame(painter, rect, background, outline, shadow, widget); // if (buttonOption->features & QStyleOptionButton::HasMenu) { // int mbi = proxy()->pixelMetric(PM_MenuButtonIndicator, buttonOption, widget); // QRect ir = buttonOption->rect; // QStyleOption newBtn = *option; // newBtn.rect = QRect(ir.right() - mbi + 2, ir.height()/2 - mbi/2 + 3, mbi - 6, mbi - 6); // proxy()->drawPrimitive(PE_IndicatorArrowDown, &newBtn, painter, widget); // } return true; } } dde-qt5integration-0.2.8.3+git20180208/iconengineplugins/000077500000000000000000000000001323676556600225405ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/iconengineplugins/iconengines.pro000066400000000000000000000000551323676556600255630ustar00rootroot00000000000000TEMPLATE = subdirs SUBDIRS += svgiconengine dde-qt5integration-0.2.8.3+git20180208/iconengineplugins/svgiconengine/000077500000000000000000000000001323676556600253765ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/iconengineplugins/svgiconengine/main.cpp000066400000000000000000000054011323676556600270260ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the plugins of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 3 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL3 included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 3 requirements ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 2.0 or (at your option) the GNU General ** Public license version 3 or any later version approved by the KDE Free ** Qt Foundation. The licenses are as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-2.0.html and ** https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include #include #include "qsvgiconengine.h" #include #include #include QT_BEGIN_NAMESPACE class QSvgIconPlugin : public QIconEnginePlugin { Q_OBJECT Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QIconEngineFactoryInterface" FILE "qsvgiconengine.json") public: QStringList keys() const; QIconEngine *create(const QString &filename = QString()); }; QStringList QSvgIconPlugin::keys() const { QStringList keys(QLatin1String("svg")); #ifndef QT_NO_COMPRESS keys << QLatin1String("svgz") << QLatin1String("svg.gz"); #endif return keys; } QIconEngine *QSvgIconPlugin::create(const QString &file) { QSvgIconEngine *engine = new QSvgIconEngine; if (!file.isNull()) engine->addFile(file, QSize(), QIcon::Normal, QIcon::Off); return engine; } QT_END_NAMESPACE #include "main.moc" dde-qt5integration-0.2.8.3+git20180208/iconengineplugins/svgiconengine/qsvgiconengine.cpp000066400000000000000000000272771323676556600311400ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the plugins of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 3 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL3 included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 3 requirements ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 2.0 or (at your option) the GNU General ** Public license version 3 or any later version approved by the KDE Free ** Qt Foundation. The licenses are as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-2.0.html and ** https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "qsvgiconengine.h" #ifndef QT_NO_SVGRENDERER #include "qpainter.h" #include "qpixmap.h" #include "qpixmapcache.h" #include "qfileinfo.h" #include #include #include #include "qdebug.h" #include #include DWIDGET_USE_NAMESPACE QT_BEGIN_NAMESPACE class QSvgIconEnginePrivate : public QSharedData { public: QSvgIconEnginePrivate() : svgBuffers(0), addedPixmaps(0) { stepSerialNum(); } ~QSvgIconEnginePrivate() { delete addedPixmaps; delete svgBuffers; } static int hashKey(QIcon::Mode mode, QIcon::State state) { return (((mode)<<4)|state); } QString pmcKey(const QSize &size, QIcon::Mode mode, QIcon::State state) { return QLatin1String("$qt_svgicon_") + QString::number(serialNum, 16).append(QLatin1Char('_')) + QString::number((((((qint64(size.width()) << 11) | size.height()) << 11) | mode) << 4) | state, 16); } void stepSerialNum() { serialNum = lastSerialNum.fetchAndAddRelaxed(1); } void loadDataForModeAndState(DSvgRenderer *renderer, QIcon::Mode mode, QIcon::State state); QHash svgFiles; QHash *svgBuffers; QHash *addedPixmaps; int serialNum; static QAtomicInt lastSerialNum; }; QAtomicInt QSvgIconEnginePrivate::lastSerialNum; QSvgIconEngine::QSvgIconEngine() : d(new QSvgIconEnginePrivate) { } QSvgIconEngine::QSvgIconEngine(const QSvgIconEngine &other) : QIconEngine(other), d(new QSvgIconEnginePrivate) { d->svgFiles = other.d->svgFiles; if (other.d->svgBuffers) d->svgBuffers = new QHash(*other.d->svgBuffers); if (other.d->addedPixmaps) d->addedPixmaps = new QHash(*other.d->addedPixmaps); } QSvgIconEngine::~QSvgIconEngine() { } QSize QSvgIconEngine::actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state) { if (d->addedPixmaps) { QPixmap pm = d->addedPixmaps->value(d->hashKey(mode, state)); if (!pm.isNull() && pm.size() == size) return size; } QPixmap pm = pixmap(size, mode, state); if (pm.isNull()) return QSize(); return pm.size(); } void QSvgIconEnginePrivate::loadDataForModeAndState(DSvgRenderer *renderer, QIcon::Mode mode, QIcon::State state) { QByteArray buf; const QIcon::State oppositeState = state == QIcon::Off ? QIcon::On : QIcon::Off; if (svgBuffers) { buf = svgBuffers->value(hashKey(mode, state)); if (buf.isEmpty()) buf = svgBuffers->value(hashKey(QIcon::Normal, state)); if (buf.isEmpty()) buf = svgBuffers->value(hashKey(QIcon::Normal, oppositeState)); } if (!buf.isEmpty()) { #ifndef QT_NO_COMPRESS buf = qUncompress(buf); #endif renderer->load(buf); } else { QString svgFile = svgFiles.value(hashKey(mode, state)); if (svgFile.isEmpty()) svgFile = svgFiles.value(hashKey(QIcon::Normal, state)); if (svgFile.isEmpty()) svgFile = svgFiles.value(hashKey(QIcon::Normal, oppositeState)); if (!svgFile.isEmpty()) renderer->load(svgFile); } } QPixmap QSvgIconEngine::pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state) { QPixmap pm; QString pmckey(d->pmcKey(size, mode, state)); if (QPixmapCache::find(pmckey, pm)) return pm; if (d->addedPixmaps) { pm = d->addedPixmaps->value(d->hashKey(mode, state)); if (!pm.isNull() && pm.size() == size) return pm; } DSvgRenderer renderer; d->loadDataForModeAndState(&renderer, mode, state); if (!renderer.isValid()) return pm; QSize actualSize = renderer.defaultSize(); if (!actualSize.isNull()) actualSize.scale(size, Qt::KeepAspectRatio); if (actualSize.isEmpty()) return QPixmap(); QImage img(actualSize, QImage::Format_ARGB32_Premultiplied); img.fill(0x00000000); QPainter p(&img); renderer.render(&p); p.end(); pm = QPixmap::fromImage(img); if (qobject_cast(QCoreApplication::instance())) { const QPixmap generated = QGuiApplicationPrivate::instance()->applyQIconStyleHelper(mode, pm); if (!generated.isNull()) pm = generated; } if (!pm.isNull()) QPixmapCache::insert(pmckey, pm); return pm; } void QSvgIconEngine::addPixmap(const QPixmap &pixmap, QIcon::Mode mode, QIcon::State state) { if (!d->addedPixmaps) d->addedPixmaps = new QHash; d->stepSerialNum(); d->addedPixmaps->insert(d->hashKey(mode, state), pixmap); } enum FileType { OtherFile, SvgFile, CompressedSvgFile }; static FileType fileType(const QFileInfo &fi) { const QString &abs = fi.absoluteFilePath(); if (abs.endsWith(QLatin1String(".svg"), Qt::CaseInsensitive)) return SvgFile; if (abs.endsWith(QLatin1String(".svgz"), Qt::CaseInsensitive) || abs.endsWith(QLatin1String(".svg.gz"), Qt::CaseInsensitive)) { return CompressedSvgFile; } #ifndef QT_NO_MIMETYPE const QString &mimeTypeName = QMimeDatabase().mimeTypeForFile(fi).name(); if (mimeTypeName == QLatin1String("image/svg+xml")) return SvgFile; if (mimeTypeName == QLatin1String("image/svg+xml-compressed")) return CompressedSvgFile; #endif // !QT_NO_MIMETYPE return OtherFile; } void QSvgIconEngine::addFile(const QString &fileName, const QSize &, QIcon::Mode mode, QIcon::State state) { if (!fileName.isEmpty()) { const QFileInfo fi(fileName); const QString abs = fi.absoluteFilePath(); const FileType type = fileType(fi); #ifndef QT_NO_COMPRESS if (type == SvgFile || type == CompressedSvgFile) { #else if (type == SvgFile) { #endif DSvgRenderer renderer(abs); if (renderer.isValid()) { d->stepSerialNum(); d->svgFiles.insert(d->hashKey(mode, state), abs); } } else if (type == OtherFile) { QPixmap pm(abs); if (!pm.isNull()) addPixmap(pm, mode, state); } } } void QSvgIconEngine::paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) { QSize pixmapSize = rect.size(); if (painter->device()) pixmapSize *= painter->device()->devicePixelRatioF(); painter->drawPixmap(rect, pixmap(pixmapSize, mode, state)); } QString QSvgIconEngine::key() const { return QLatin1String("svg"); } QIconEngine *QSvgIconEngine::clone() const { return new QSvgIconEngine(*this); } bool QSvgIconEngine::read(QDataStream &in) { d = new QSvgIconEnginePrivate; d->svgBuffers = new QHash; if (in.version() >= QDataStream::Qt_4_4) { int isCompressed; QHash fileNames; // For memoryoptimization later in >> fileNames >> isCompressed >> *d->svgBuffers; #ifndef QT_NO_COMPRESS if (!isCompressed) { for (auto it = d->svgBuffers->begin(), end = d->svgBuffers->end(); it != end; ++it) it.value() = qCompress(it.value()); } #else if (isCompressed) { qWarning("QSvgIconEngine: Can not decompress SVG data"); d->svgBuffers->clear(); } #endif int hasAddedPixmaps; in >> hasAddedPixmaps; if (hasAddedPixmaps) { d->addedPixmaps = new QHash; in >> *d->addedPixmaps; } } else { QPixmap pixmap; QByteArray data; uint mode; uint state; int num_entries; in >> data; if (!data.isEmpty()) { #ifndef QT_NO_COMPRESS data = qUncompress(data); #endif if (!data.isEmpty()) d->svgBuffers->insert(d->hashKey(QIcon::Normal, QIcon::Off), data); } in >> num_entries; for (int i=0; i> pixmap; in >> mode; in >> state; // The pm list written by 4.3 is buggy and/or useless, so ignore. //addPixmap(pixmap, QIcon::Mode(mode), QIcon::State(state)); } } return true; } bool QSvgIconEngine::write(QDataStream &out) const { if (out.version() >= QDataStream::Qt_4_4) { int isCompressed = 0; #ifndef QT_NO_COMPRESS isCompressed = 1; #endif QHash svgBuffers; if (d->svgBuffers) svgBuffers = *d->svgBuffers; for (auto it = d->svgFiles.cbegin(), end = d->svgFiles.cend(); it != end; ++it) { QByteArray buf; QFile f(it.value()); if (f.open(QIODevice::ReadOnly)) buf = f.readAll(); #ifndef QT_NO_COMPRESS buf = qCompress(buf); #endif svgBuffers.insert(it.key(), buf); } out << d->svgFiles << isCompressed << svgBuffers; if (d->addedPixmaps) out << (int)1 << *d->addedPixmaps; else out << (int)0; } else { QByteArray buf; if (d->svgBuffers) buf = d->svgBuffers->value(d->hashKey(QIcon::Normal, QIcon::Off)); if (buf.isEmpty()) { QString svgFile = d->svgFiles.value(d->hashKey(QIcon::Normal, QIcon::Off)); if (!svgFile.isEmpty()) { QFile f(svgFile); if (f.open(QIODevice::ReadOnly)) buf = f.readAll(); } } #ifndef QT_NO_COMPRESS buf = qCompress(buf); #endif out << buf; // 4.3 has buggy handling of added pixmaps, so don't write any out << (int)0; } return true; } QT_END_NAMESPACE #endif // QT_NO_SVGRENDERER dde-qt5integration-0.2.8.3+git20180208/iconengineplugins/svgiconengine/qsvgiconengine.h000066400000000000000000000056251323676556600305760ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the plugins of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 3 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL3 included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 3 requirements ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 2.0 or (at your option) the GNU General ** Public license version 3 or any later version approved by the KDE Free ** Qt Foundation. The licenses are as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-2.0.html and ** https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef QSVGICONENGINE_H #define QSVGICONENGINE_H #include #include QT_BEGIN_NAMESPACE class QSvgIconEnginePrivate; class QSvgIconEngine : public QIconEngine { public: QSvgIconEngine(); QSvgIconEngine(const QSvgIconEngine &other); ~QSvgIconEngine(); void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state); QSize actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state); QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state); void addPixmap(const QPixmap &pixmap, QIcon::Mode mode, QIcon::State state); void addFile(const QString &fileName, const QSize &size, QIcon::Mode mode, QIcon::State state); QString key() const; QIconEngine *clone() const; bool read(QDataStream &in); bool write(QDataStream &out) const; private: QSharedDataPointer d; }; QT_END_NAMESPACE #endif dde-qt5integration-0.2.8.3+git20180208/iconengineplugins/svgiconengine/qsvgiconengine.json000066400000000000000000000000541323676556600313070ustar00rootroot00000000000000{ "Keys": [ "svg", "svgz", "svg.gz" ] } dde-qt5integration-0.2.8.3+git20180208/iconengineplugins/svgiconengine/svgiconengine.pro000066400000000000000000000006021323676556600307540ustar00rootroot00000000000000TARGET = dsvgicon TEMPLATE = lib CONFIG += plugin HEADERS += qsvgiconengine.h SOURCES += main.cpp \ qsvgiconengine.cpp OTHER_FILES += qsvgiconengine.json CONFIG += c++11 link_pkgconfig PKGCONFIG += dtkwidget QT += gui-private DESTDIR = $$_PRO_FILE_PWD_/../../bin/plugins/iconengines/ unix { target.path = $$[QT_INSTALL_PLUGINS]/iconengines/ INSTALLS += target } dde-qt5integration-0.2.8.3+git20180208/imageformatplugins/000077500000000000000000000000001323676556600227155ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/imageformatplugins/imageformats.pro000066400000000000000000000000431323676556600261120ustar00rootroot00000000000000TEMPLATE = subdirs SUBDIRS += svg dde-qt5integration-0.2.8.3+git20180208/imageformatplugins/svg/000077500000000000000000000000001323676556600235145ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/imageformatplugins/svg/main.cpp000066400000000000000000000062741323676556600251550ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the plugins of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 3 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL3 included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 3 requirements ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 2.0 or (at your option) the GNU General ** Public license version 3 or any later version approved by the KDE Free ** Qt Foundation. The licenses are as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-2.0.html and ** https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include #include #if !defined(QT_NO_SVGRENDERER) #include "qsvgiohandler.h" #include #include #include QT_BEGIN_NAMESPACE class QSvgPlugin : public QImageIOPlugin { Q_OBJECT Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QImageIOHandlerFactoryInterface" FILE "svg.json") public: QStringList keys() const; Capabilities capabilities(QIODevice *device, const QByteArray &format) const; QImageIOHandler *create(QIODevice *device, const QByteArray &format = QByteArray()) const; }; QStringList QSvgPlugin::keys() const { return QStringList() << QLatin1String("svg") << QLatin1String("svgz"); } QImageIOPlugin::Capabilities QSvgPlugin::capabilities(QIODevice *device, const QByteArray &format) const { if (format == "svg" || format == "svgz") return Capabilities(CanRead); if (!format.isEmpty()) return 0; Capabilities cap; if (device->isReadable() && QSvgIOHandler::canRead(device)) cap |= CanRead; return cap; } QImageIOHandler *QSvgPlugin::create(QIODevice *device, const QByteArray &format) const { QSvgIOHandler *hand = new QSvgIOHandler(); hand->setDevice(device); hand->setFormat(format); return hand; } QT_END_NAMESPACE #include "main.moc" #endif // !QT_NO_IMAGEFORMATPLUGIN dde-qt5integration-0.2.8.3+git20180208/imageformatplugins/svg/qsvgiohandler.cpp000066400000000000000000000161651323676556600270770ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the plugins of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 3 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL3 included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 3 requirements ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 2.0 or (at your option) the GNU General ** Public license version 3 or any later version approved by the KDE Free ** Qt Foundation. The licenses are as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-2.0.html and ** https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "qsvgiohandler.h" #ifndef QT_NO_SVGRENDERER #include "qimage.h" #include "qpixmap.h" #include "qpainter.h" #include "qvariant.h" #include "qbuffer.h" #include "qdebug.h" #include DWIDGET_USE_NAMESPACE QT_BEGIN_NAMESPACE class QSvgIOHandlerPrivate { public: QSvgIOHandlerPrivate(QSvgIOHandler *qq) : q(qq), loaded(false), readDone(false), backColor(Qt::transparent) {} bool load(QIODevice *device); QSvgIOHandler *q; DSvgRenderer r; QSize defaultSize; QRect clipRect; QSize scaledSize; QRect scaledClipRect; bool loaded; bool readDone; QColor backColor; }; bool QSvgIOHandlerPrivate::load(QIODevice *device) { if (loaded) return true; if (q->format().isEmpty()) q->canRead(); // # The SVG renderer doesn't handle trailing, unrelated data, so we must // assume that all available data in the device is to be read. bool res = false; QBuffer *buf = qobject_cast(device); if (buf) { const QByteArray &ba = buf->data(); res = r.load(QByteArray::fromRawData(ba.constData() + buf->pos(), ba.size() - buf->pos())); buf->seek(ba.size()); } else if (q->format() == "svgz") { res = r.load(device->readAll()); } else { res = r.load(device->readAll()); } if (res) { defaultSize = QSize(r.viewBox().width(), r.viewBox().height()); loaded = true; } return loaded; } QSvgIOHandler::QSvgIOHandler() : d(new QSvgIOHandlerPrivate(this)) { } QSvgIOHandler::~QSvgIOHandler() { delete d; } bool QSvgIOHandler::canRead() const { if (!device()) return false; if (d->loaded && !d->readDone) return true; // Will happen if we have been asked for the size QByteArray buf = device()->peek(8); if (buf.startsWith("\x1f\x8b")) { setFormat("svgz"); return true; } else if (buf.contains("readDone && d->load(device())) { bool xform = (d->clipRect.isValid() || d->scaledSize.isValid() || d->scaledClipRect.isValid()); QSize finalSize = d->defaultSize; QRectF bounds; if (xform && !d->defaultSize.isEmpty()) { bounds = QRectF(QPointF(0,0), QSizeF(d->defaultSize)); QPoint tr1, tr2; QSizeF sc(1, 1); if (d->clipRect.isValid()) { tr1 = -d->clipRect.topLeft(); finalSize = d->clipRect.size(); } if (d->scaledSize.isValid()) { sc = QSizeF(qreal(d->scaledSize.width()) / finalSize.width(), qreal(d->scaledSize.height()) / finalSize.height()); finalSize = d->scaledSize; } if (d->scaledClipRect.isValid()) { tr2 = -d->scaledClipRect.topLeft(); finalSize = d->scaledClipRect.size(); } QTransform t; t.translate(tr2.x(), tr2.y()); t.scale(sc.width(), sc.height()); t.translate(tr1.x(), tr1.y()); bounds = t.mapRect(bounds); } *image = QImage(finalSize, QImage::Format_ARGB32_Premultiplied); if (!finalSize.isEmpty()) { image->fill(d->backColor.rgba()); QPainter p(image); d->r.render(&p, bounds); p.end(); } d->readDone = true; return true; } return false; } QVariant QSvgIOHandler::option(ImageOption option) const { switch(option) { case ImageFormat: return QImage::Format_ARGB32_Premultiplied; break; case Size: d->load(device()); return d->defaultSize; break; case ClipRect: return d->clipRect; break; case ScaledSize: return d->scaledSize; break; case ScaledClipRect: return d->scaledClipRect; break; case BackgroundColor: return d->backColor; break; default: break; } return QVariant(); } void QSvgIOHandler::setOption(ImageOption option, const QVariant & value) { switch(option) { case ClipRect: d->clipRect = value.toRect(); break; case ScaledSize: d->scaledSize = value.toSize(); break; case ScaledClipRect: d->scaledClipRect = value.toRect(); break; case BackgroundColor: d->backColor = value.value(); break; default: break; } } bool QSvgIOHandler::supportsOption(ImageOption option) const { switch(option) { case ImageFormat: case Size: case ClipRect: case ScaledSize: case ScaledClipRect: case BackgroundColor: return true; default: break; } return false; } bool QSvgIOHandler::canRead(QIODevice *device) { QByteArray buf = device->peek(8); return buf.startsWith("\x1f\x8b") || buf.contains(" #ifndef QT_NO_SVGRENDERER QT_BEGIN_NAMESPACE class QImage; class QByteArray; class QIODevice; class QVariant; class QSvgIOHandlerPrivate; class QSvgIOHandler : public QImageIOHandler { public: QSvgIOHandler(); ~QSvgIOHandler(); virtual bool canRead() const; virtual QByteArray name() const; virtual bool read(QImage *image); static bool canRead(QIODevice *device); virtual QVariant option(ImageOption option) const; virtual void setOption(ImageOption option, const QVariant & value); virtual bool supportsOption(ImageOption option) const; private: QSvgIOHandlerPrivate *d; }; QT_END_NAMESPACE #endif // QT_NO_SVGRENDERER #endif // QSVGIOHANDLER_H dde-qt5integration-0.2.8.3+git20180208/imageformatplugins/svg/svg.json000066400000000000000000000001101323676556600251760ustar00rootroot00000000000000{ "Keys": [ "svg", "svgz" ], "MimeTypes": [ "image/svg+xml" ] } dde-qt5integration-0.2.8.3+git20180208/imageformatplugins/svg/svg.pro000066400000000000000000000005411323676556600250350ustar00rootroot00000000000000TARGET = dsvg TEMPLATE = lib CONFIG += plugin HEADERS += qsvgiohandler.h SOURCES += main.cpp \ qsvgiohandler.cpp OTHER_FILES += svg.json CONFIG += c++11 link_pkgconfig PKGCONFIG += dtkwidget DESTDIR = $$_PRO_FILE_PWD_/../../bin/plugins/imageformats/ unix { target.path = $$[QT_INSTALL_PLUGINS]/imageformats/ INSTALLS += target } dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/000077500000000000000000000000001323676556600231065ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/deepin.json000066400000000000000000000000361323676556600252440ustar00rootroot00000000000000{ "Keys" : [ "deepin" ] } dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/diconproxyengine.cpp000066400000000000000000000031031323676556600271730ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "diconproxyengine.h" DIconProxyEngine::DIconProxyEngine(const QIcon &proxyIcon) : QIconEngine() , m_proxyIcon(proxyIcon) { } void DIconProxyEngine::paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) { m_proxyIcon.paint(painter, rect, Qt::AlignCenter, mode, state); } QPixmap DIconProxyEngine::pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state) { return m_proxyIcon.pixmap(size, mode, state); } QSize DIconProxyEngine::actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state) { return m_proxyIcon.actualSize(size, mode, state); } QIconEngine *DIconProxyEngine::clone() const { return new DIconProxyEngine(m_proxyIcon); } bool DIconProxyEngine::read(QDataStream &in) { in << m_proxyIcon.name(); return true; } bool DIconProxyEngine::write(QDataStream &out) const { Q_UNUSED(out) return false; } dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/diconproxyengine.h000066400000000000000000000025701323676556600266470ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DICONPROXYENGINE_H #define DICONPROXYENGINE_H #include class DIconProxyEngine : public QIconEngine { public: explicit DIconProxyEngine(const QIcon &proxyIcon); void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) Q_DECL_OVERRIDE; QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state) Q_DECL_OVERRIDE; QSize actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state) Q_DECL_OVERRIDE; QIconEngine *clone() const Q_DECL_OVERRIDE; bool read(QDataStream &in) Q_DECL_OVERRIDE; bool write(QDataStream &out) const Q_DECL_OVERRIDE; private: QIcon m_proxyIcon; }; #endif // DICONPROXYENGINE_H dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/dthemesettings.cpp000066400000000000000000000110021323676556600266330ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * Author: zccrs * * Maintainer: zccrs * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "dthemesettings.h" #include #include #include #define ICON_THEME_NAME QStringLiteral("IconThemeName") #define F_ICON_THEME_NAME QStringLiteral("FallBackIconThemeName") #define STYLE_NAMES QStringLiteral("StyleNames") #define SYSTEM_FONT QStringLiteral("Font") #define SYSTEM_FIXED_FONT QStringLiteral("MonoFont") #define SYSTEM_FONT_POINT_SIZE QStringLiteral("FontSize") DCORE_USE_NAMESPACE DThemeSettings::DThemeSettings(QObject *parent) : QObject(parent) , settings(QSettings::IniFormat, QSettings::UserScope, "deepin", "qt-theme") { settings.setIniCodec("utf-8"); settings.beginGroup("Theme"); QStringList list; list << settings.fileName(); list << QSettings(QSettings::IniFormat, QSettings::SystemScope, "deepin", "qt-theme").fileName(); DFileWatcherManager *watcher = new DFileWatcherManager(this); for (const QString &path : list) { QFile file(path); if (!file.exists()) { file.open(QFile::WriteOnly); file.close(); } if (QFile::exists(path)) watcher->add(path); } connect(watcher, &DFileWatcherManager::fileModified, this, &DThemeSettings::onConfigChanged); } bool DThemeSettings::contains(const QString &key) const { return settings.contains(key); } QVariant DThemeSettings::value(const QString &key, const QVariant &defaultValue) const { return settings.value(key, defaultValue); } bool DThemeSettings::isSetIconThemeName() const { return contains(ICON_THEME_NAME); } QString DThemeSettings::iconThemeName() const { return value(ICON_THEME_NAME).toString(); } bool DThemeSettings::isSetFallbackIconThemeName() const { return contains(F_ICON_THEME_NAME); } QString DThemeSettings::fallbackIconThemeName() const { return value(F_ICON_THEME_NAME).toString(); } bool DThemeSettings::isSetSystemFont() const { return contains(SYSTEM_FONT); } QString DThemeSettings::systemFont() const { return value(SYSTEM_FONT).toString(); } bool DThemeSettings::isSetStyleNames() const { return contains(STYLE_NAMES); } QStringList DThemeSettings::styleNames() const { return value(STYLE_NAMES).toStringList(); } bool DThemeSettings::isSetSystemFontPixelSize() const { return contains(SYSTEM_FONT_POINT_SIZE); } qreal DThemeSettings::systemFontPointSize() const { return value(SYSTEM_FONT_POINT_SIZE, 9.0).toDouble(); } bool DThemeSettings::isSetSystemFixedFont() const { return contains(SYSTEM_FIXED_FONT); } QString DThemeSettings::systemFixedFont() const { return value(SYSTEM_FIXED_FONT).toString(); } void DThemeSettings::onConfigChanged() { QVariantMap config; for (const QString &v : settings.allKeys()) { config[v] = settings.value(v); } settings.sync(); for (const QString &v : settings.allKeys()) { const QVariant &old_value = config.value(v); const QVariant &new_value = settings.value(v); if (old_value != new_value) { if (v == ICON_THEME_NAME) emit iconThemeNameChanged(new_value.toString()); else if (v == F_ICON_THEME_NAME) emit fallbackIconThemeNameChanged(new_value.toString()); else if (v == SYSTEM_FONT) emit systemFontChanged(new_value.toString()); else if (v == STYLE_NAMES) emit styleNamesChanged(new_value.toStringList()); else if (v == SYSTEM_FIXED_FONT) emit systemFixedFontChanged(new_value.toString()); else if (v == SYSTEM_FONT_POINT_SIZE) emit systemFontPointSizeChanged(new_value.toInt()); emit valueChanged(v, old_value, new_value); } } } dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/dthemesettings.h000066400000000000000000000051521323676556600263110ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * Author: zccrs * * Maintainer: zccrs * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DTHEMESETTINGS_H #define DTHEMESETTINGS_H #include #include class DThemeSettings : public QObject { Q_OBJECT Q_PROPERTY(QString iconThemeName READ iconThemeName NOTIFY iconThemeNameChanged) Q_PROPERTY(QString fallbackIconThemeName READ fallbackIconThemeName NOTIFY fallbackIconThemeNameChanged) Q_PROPERTY(QString systemFont READ systemFont NOTIFY systemFontChanged) Q_PROPERTY(QString systemFixedFont READ systemFixedFont NOTIFY systemFixedFontChanged) Q_PROPERTY(qreal systemFontPointSize READ systemFontPointSize NOTIFY systemFontPointSizeChanged) Q_PROPERTY(QStringList styleNames READ styleNames NOTIFY styleNamesChanged) public: explicit DThemeSettings(QObject *parent = 0); bool contains(const QString &key) const; QVariant value(const QString &key, const QVariant &defaultValue = QVariant()) const; bool isSetIconThemeName() const; QString iconThemeName() const; bool isSetFallbackIconThemeName() const; QString fallbackIconThemeName() const; bool isSetSystemFont() const; QString systemFont() const; bool isSetStyleNames() const; QStringList styleNames() const; bool isSetSystemFontPixelSize() const; qreal systemFontPointSize() const; bool isSetSystemFixedFont() const; QString systemFixedFont() const; signals: void valueChanged(const QString &key, const QVariant &oldValue, const QVariant &newValue); void iconThemeNameChanged(QString iconThemeName); void fallbackIconThemeNameChanged(QString fallbackIconThemeName); void systemFontChanged(QString systemFont); void styleNamesChanged(QStringList styleNames); void systemFixedFontChanged(QString systemFixedFont); void systemFontPointSizeChanged(qreal systemFontPointSize); private: QSettings settings; void onConfigChanged(); }; #endif // DTHEMESETTINGS_H dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/images/000077500000000000000000000000001323676556600243535ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/images/README000066400000000000000000000002131323676556600252270ustar00rootroot00000000000000All images under this directory are made by Wuhan Deepin Technology Co., Ltd. Licensed under GNU GENERAL PUBLIC LICENSE Version 3 or later.dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/images/arrow-light-hover.png000066400000000000000000000002461323676556600304430ustar00rootroot00000000000000PNG  IHDR /3gAMA a]IDATc`hdw@"C'Q,0파k:@ܥ &?@,ro@\M Y@al 7NKIENDB`dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/images/arrow-light-inactive.png000066400000000000000000000003321323676556600311160ustar00rootroot00000000000000PNG  IHDR /3gAMA aIDATc`Pf xXccc  FFk, 6ٳgeee?^ZZ0"k755U33&d &&_ ann./w3ϟ@v?\a*Ap@?IfIENDB`dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/images/arrow-light.png000066400000000000000000000003011323676556600273120ustar00rootroot00000000000000PNG  IHDR /3gAMA axIDATc`P6 n߾ Y%%%JHHs  ȹd%$@0􉑑/c066v344tD ~As*?ia4e.}IENDB`dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/images/check_dark_hover.png000066400000000000000000000003151323676556600303410ustar00rootroot00000000000000PNG  IHDR  gAMA aIDATc`Ċx@Z3T _@lO2P{ .+rxX&dsE ^ @i@|y@@z1_ኁ@|q1budPBo1#a dC*t/IENDB`dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/images/check_dark_inactive.png000066400000000000000000000003321323676556600310170ustar00rootroot00000000000000PNG  IHDR  gAMA aIDAT} @w@`!SY "R Z`Xvw3$谖2V[huȲF1)"U!T (()Gx!5StNjѫ4L=mo/:-)=.Hj:+h[55QIENDB`dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/images/check_dark_normal.png000066400000000000000000000003251323676556600305070ustar00rootroot00000000000000PNG  IHDR  gAMA aIDATc`" %Lxԁ8:>Ob5|D & L @ ـL ȸ&;sA1@$S@\@V1@ m@^iTT M@<Pex@@& .H"xIENDB`dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/images/check_light_hover.png000066400000000000000000000003151323676556600305270ustar00rootroot00000000000000PNG  IHDR  gAMA aIDATc`Ċx@Z3T _@lO2P{ .+rxX&dsE ^ @i@|y@@z1_ኁ@|q1budPBo1#a dC*t/IENDB`dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/images/check_light_inactive.png000066400000000000000000000004171323676556600312110ustar00rootroot00000000000000PNG  IHDR  gAMA aIDATc`hnnRˆG)##* &233o={s&l&*rdbb:RRä/7OΝ;w &asOcccVO4 Lf:ׯ_5lIII [ϟ? H3?ʺ*@顋m@Xu~IENDB`dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/images/check_light_normal.png000066400000000000000000000004101323676556600306700ustar00rootroot00000000000000PNG  IHDR  gAMA aIDATcf}x1022hTgddkhh p*266Vښh<ˑ#Gރw7.\Srl/_;88;H$hF>M 4̙37Q8@2ՁCΟ?Y \EGBjSaIENDB`dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/main.cpp000066400000000000000000000027101323676556600245360ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include "qdeepintheme.h" #include QT_BEGIN_NAMESPACE void updateXdgIconSystemTheme() { XdgIconLoader::instance()->updateSystemTheme(); } class QDeepinThemePlugin : public QPlatformThemePlugin { Q_OBJECT Q_PLUGIN_METADATA(IID QPlatformThemeFactoryInterface_iid FILE "deepin.json") public: QPlatformTheme *create(const QString &key, const QStringList ¶ms) Q_DECL_OVERRIDE; }; QPlatformTheme *QDeepinThemePlugin::create(const QString &key, const QStringList ¶ms) { Q_UNUSED(params); if (!key.compare(QLatin1String(QDeepinTheme::name), Qt::CaseInsensitive)) return new QDeepinTheme; return 0; } QT_END_NAMESPACE #include "main.moc" dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/menu.qss000066400000000000000000000032671323676556600246120ustar00rootroot00000000000000QMenu { background-color: white; padding-top: 4px; padding-bottom: 4px; border-radius: 4px; } QMenu::item { padding: 2px 25px 2px 20px; border: none; /* reserve space for selection border */ } QMenu::item:selected { background: #2CA7F8; color: white; } QMenu::icon { margin-left: 5px; width: 13px; height: 13px; } QMenu::icon:checked { /* appearance of a 'checked' icon */ background: gray; border: 1px inset gray; position: absolute; top: 1px; right: 1px; bottom: 1px; left: 1px; } QMenu::separator { height: 1px; background: rgba(0, 0, 0, 0.1); margin: 2px 6px 2px 6px; } QMenu::indicator { margin-left: 5px; width: 13px; height: 13px; } /* non-exclusive indicator = check box style indicator (see QActionGroup::setExclusive) */ QMenu::indicator:non-exclusive:unchecked { image: url(:/images/check_light_normal.png); } QMenu::indicator:non-exclusive:unchecked:selected { image: url(:/images/check_light_hover.png); } QMenu::indicator:non-exclusive:checked { image: url(:/images/check_light_inactive.png); } QMenu::indicator:non-exclusive:checked:selected { image: url(:/images/check_light_hover.png); } /* exclusive indicator = radio button style indicator (see QActionGroup::setExclusive) */ /*QMenu::indicator:exclusive:unchecked { image: url(:/images/radiobutton_unchecked.png); } QMenu::indicator:exclusive:unchecked:selected { image: url(:/images/radiobutton_unchecked_hover.png); } QMenu::indicator:exclusive:checked { image: url(:/images/radiobutton_checked.png); } QMenu::indicator:exclusive:checked:selected { image: url(:/images/radiobutton_checked_hover.png); }*/ dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/qdeepinfiledialoghelper.cpp000066400000000000000000000273531323676556600304710ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "qdeepinfiledialoghelper.h" #include "qdeepintheme.h" #include "filedialogmanager_interface.h" #include "filedialog_interface.h" #include #include #include #include #include #include #include #if QT_VERSION < QT_VERSION_CHECK(5, 4, 0) #include #else #include #endif #include #include QT_BEGIN_NAMESPACE #define DIALOG_SERVICE "com.deepin.filemanager.filedialog" #define DIALOG_CALL(Fun) ({if(nativeDialog) nativeDialog->Fun; else qtDialog->Fun;}) QList stringList2UrlList(const QStringList &list) { QList urlList; for (const QString str : list) urlList << str; return urlList; } QStringList urlList2StringList(const QList &list) { QStringList stringList; for (const QUrl &url : list) stringList << url.toString(); return stringList; } DFileDialogManager *QDeepinFileDialogHelper::manager = Q_NULLPTR; QDeepinFileDialogHelper::QDeepinFileDialogHelper() { } QDeepinFileDialogHelper::~QDeepinFileDialogHelper() { DIALOG_CALL(deleteLater()); if (auxiliaryWindow) auxiliaryWindow->deleteLater(); if (nativeDialog) nativeDialog->deleteLater(); } bool QDeepinFileDialogHelper::show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent) { ensureDialog(); applyOptions(); if (nativeDialog) { if (parent) activeWindow = parent; else activeWindow = QGuiApplication::focusWindow(); nativeDialog->setParent(parent); auxiliaryWindow->setParent(parent); auxiliaryWindow->setFlags(flags); auxiliaryWindow->setModality(modality); if (modality != Qt::NonModal) { QGuiApplicationPrivate::showModalWindow(auxiliaryWindow); if (modality == Qt::ApplicationModal) { connect(qApp, &QGuiApplication::applicationStateChanged, this, [this] (Qt::ApplicationState state) { if (state == Qt::ApplicationActive) nativeDialog->activateWindow(); }); connect(nativeDialog, &DFileDialogHandle::windowActiveChanged, this, [this] { if (qApp->platformName() != "dxcb" && !qApp->property("_d_isDxcb").toBool()) return; QWindow *focus_window = qApp->focusWindow(); if (!focus_window) return; if (focus_window->type() != Qt::Widget && focus_window->type() != Qt::Window && focus_window->type() != Qt::Dialog) { return; } if (!nativeDialog->windowActive() && qApp->applicationState() == Qt::ApplicationActive) { nativeDialog->activateWindow(); } }); } } Qt::WindowFlags nd_flags = static_cast(nativeDialog->windowFlags()); Qt::WindowFlags need_flags = Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint | Qt::WindowContextHelpButtonHint | Qt::WindowStaysOnTopHint | Qt::WindowTransparentForInput | Qt::WindowDoesNotAcceptFocus | Qt::WindowStaysOnBottomHint | Qt::WindowCloseButtonHint; if (flags & need_flags) nativeDialog->setWindowFlags(nd_flags | (flags & need_flags)); } else { qtDialog->setAttribute(Qt::WA_NativeWindow); if (parent) { if (parent->inherits("QWidgetWindow")) { qtDialog->setParent(static_cast(parent)->widget()); } else { qtDialog->windowHandle()->setParent(parent); } } qtDialog->setWindowModality(modality); qtDialog->setWindowFlags(flags | qtDialog->windowFlags()); } DIALOG_CALL(show()); if (nativeDialog && parent) { XSetTransientForHint(QX11Info::display(), nativeDialog->winId(), parent->winId()); } return true; } void QDeepinFileDialogHelper::exec() { qDebug() << "exec"; ensureDialog(); applyOptions(); if (nativeDialog) { // block input to the window, allow input to other GTK dialogs QEventLoop loop; connect(this, SIGNAL(accept()), &loop, SLOT(quit())); connect(this, SIGNAL(reject()), &loop, SLOT(quit())); loop.exec(); } else { QWindow *modalWindow = qApp->modalWindow(); if (Q_LIKELY(modalWindow->inherits("QWidgetWindow") && qobject_cast(static_cast(modalWindow)->widget()))) { QGuiApplicationPrivate::hideModalWindow(modalWindow); } qtDialog->exec(); } } void QDeepinFileDialogHelper::hide() { qDebug() << "hide"; ensureDialog(); DIALOG_CALL(hide()); if (auxiliaryWindow) { QGuiApplicationPrivate::hideModalWindow(auxiliaryWindow); if (activeWindow) { activeWindow->requestActivate(); activeWindow.clear(); } } } bool QDeepinFileDialogHelper::defaultNameFilterDisables() const { qDebug() << __FUNCTION__; return true; } void QDeepinFileDialogHelper::setDirectory(const QUrl &directory) { qDebug() << __FUNCTION__ << directory; ensureDialog(); DIALOG_CALL(setDirectoryUrl(directory.toString())); } QUrl QDeepinFileDialogHelper::directory() const { qDebug() << __FUNCTION__; ensureDialog(); if (nativeDialog) return QUrl(nativeDialog->directoryUrl()); return qtDialog->directoryUrl(); } void QDeepinFileDialogHelper::selectFile(const QUrl &fileUrl) { qDebug() << __FUNCTION__ << fileUrl; ensureDialog(); if (nativeDialog) nativeDialog->selectUrl(fileUrl.toString()); else qtDialog->selectUrl(fileUrl); } QList QDeepinFileDialogHelper::selectedFiles() const { qDebug() << __FUNCTION__; ensureDialog(); if (nativeDialog) return stringList2UrlList(nativeDialog->selectedUrls()); return qtDialog->selectedUrls(); } void QDeepinFileDialogHelper::setFilter() { qDebug() << __FUNCTION__; ensureDialog(); DIALOG_CALL(setFilter(options()->filter())); } void QDeepinFileDialogHelper::selectNameFilter(const QString &filter) { qDebug() << __FUNCTION__ << filter; ensureDialog(); DIALOG_CALL(selectNameFilter(filter)); } QString QDeepinFileDialogHelper::selectedNameFilter() const { qDebug() << __FUNCTION__; ensureDialog(); if (nativeDialog) return nativeDialog->selectedNameFilter(); return qtDialog->selectedNameFilter(); } void QDeepinFileDialogHelper::initDBusFileDialogManager() { if (manager) return; if (QDBusConnection::sessionBus().interface()->isServiceRegistered(DIALOG_SERVICE).value() || QFile::exists("/usr/bin/dde-file-manager")) { manager = new DFileDialogManager(DIALOG_SERVICE, "/com/deepin/filemanager/filedialogmanager", QDBusConnection::sessionBus()); } } void QDeepinFileDialogHelper::ensureDialog() const { if (nativeDialog || qtDialog) return; if (manager) { QDBusPendingReply reply = manager->createDialog(QString()); reply.waitForFinished(); const QString &path = reply.value().path(); if (path.isEmpty()) { qWarning("Can not create native dialog, Will be use QFileDialog"); } else { nativeDialog = new DFileDialogHandle(DIALOG_SERVICE, path, QDBusConnection::sessionBus()); auxiliaryWindow = new QWindow(); connect(nativeDialog, &QObject::destroyed, auxiliaryWindow, &QWindow::deleteLater); connect(nativeDialog, &QObject::destroyed, nativeDialog, &DFileDialogHandle::deleteLater); connect(nativeDialog, &DFileDialogHandle::destroyed, nativeDialog, &QObject::deleteLater); connect(nativeDialog, &DFileDialogHandle::accepted, this, &QDeepinFileDialogHelper::accept); connect(nativeDialog, &DFileDialogHandle::rejected, this, &QDeepinFileDialogHelper::reject); connect(nativeDialog, &DFileDialogHandle::destroyed, this, &QDeepinFileDialogHelper::reject); QTimer *heartbeatTimer = new QTimer(nativeDialog); connect(heartbeatTimer, &QTimer::timeout, this, [this, heartbeatTimer] { QDBusPendingReply<> reply = nativeDialog->makeHeartbeat(); reply.waitForFinished(); if (reply.isError()) { qWarning() << "Make heartbeat is failed:" << reply.error(); if (reply.error().type() == QDBusError::UnknownMethod) { qWarning() << "Make heartbeat is't support for current dbus file dialog, Will be stop heartbeat timer."; heartbeatTimer->stop(); return; } nativeDialog->QObject::deleteLater(); const_cast(this)->reject(); } }); int heartbeatInterval = nativeDialog->heartbeatInterval(); heartbeatTimer->setInterval(qMax(1 * 1000, qMin(int(heartbeatInterval / 1.5), heartbeatInterval - 5 * 1000))); heartbeatTimer->start(); } } if (!nativeDialog) { QDeepinTheme::m_usePlatformNativeDialog = false; qtDialog = new QFileDialog(); QDeepinTheme::m_usePlatformNativeDialog = true; connect(qtDialog, &QFileDialog::accepted, this, &QDeepinFileDialogHelper::accept); connect(qtDialog, &QFileDialog::rejected, this, &QDeepinFileDialogHelper::reject); } } void QDeepinFileDialogHelper::applyOptions() { QFileDialogOptions *options = this->options().data(); for (int i = 0; i < QFileDialogOptions::DialogLabelCount; ++i) { if (options->isLabelExplicitlySet((QFileDialogOptions::DialogLabel)i)) { if (nativeDialog) nativeDialog->setLabelText(i, options->labelText((QFileDialogOptions::DialogLabel)i)); else qtDialog->setLabelText((QFileDialog::DialogLabel)i, options->labelText((QFileDialogOptions::DialogLabel)i)); } } DIALOG_CALL(setFilter(options->filter())); DIALOG_CALL(setWindowTitle(options->windowTitle())); DIALOG_CALL(setViewMode((QFileDialog::ViewMode)options->viewMode())); DIALOG_CALL(setFileMode((QFileDialog::FileMode)options->fileMode())); DIALOG_CALL(setAcceptMode((QFileDialog::AcceptMode)options->acceptMode())); DIALOG_CALL(setNameFilters(options->nameFilters())); DIALOG_CALL(setOptions((QFileDialog::Options)(int)options->options())); setDirectory(options->initialDirectory()); foreach (const QUrl &filename, options->initiallySelectedFiles()) selectFile(filename); selectNameFilter(options->initiallySelectedNameFilter()); } QT_END_NAMESPACE dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/qdeepinfiledialoghelper.h000066400000000000000000000043471323676556600301340ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef QDEEPINFILEDIALOGHELPER_H #define QDEEPINFILEDIALOGHELPER_H #include #include QT_BEGIN_NAMESPACE class QFileDialog; class ComDeepinFilemanagerFiledialogInterface; typedef ComDeepinFilemanagerFiledialogInterface DFileDialogHandle; class ComDeepinFilemanagerFiledialogmanagerInterface; typedef ComDeepinFilemanagerFiledialogmanagerInterface DFileDialogManager; class QDeepinFileDialogHelper : public QPlatformFileDialogHelper { public: QDeepinFileDialogHelper(); ~QDeepinFileDialogHelper(); bool show(Qt::WindowFlags flags, Qt::WindowModality modality, QWindow *parent) Q_DECL_OVERRIDE; void exec() Q_DECL_OVERRIDE; void hide() Q_DECL_OVERRIDE; bool defaultNameFilterDisables() const Q_DECL_OVERRIDE; void setDirectory(const QUrl &directory) Q_DECL_OVERRIDE; QUrl directory() const Q_DECL_OVERRIDE; void selectFile(const QUrl &filename) Q_DECL_OVERRIDE; QList selectedFiles() const Q_DECL_OVERRIDE; void setFilter() Q_DECL_OVERRIDE; void selectNameFilter(const QString &filter) Q_DECL_OVERRIDE; QString selectedNameFilter() const Q_DECL_OVERRIDE; static void initDBusFileDialogManager(); private: mutable QPointer nativeDialog; mutable QPointer auxiliaryWindow; mutable QPointer qtDialog; QPointer activeWindow; static DFileDialogManager *manager; void ensureDialog() const; void applyOptions(); friend class QDeepinTheme; }; QT_END_NAMESPACE #endif // QDEEPINFILEDIALOGHELPER_H dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/qdeepintheme.cpp000066400000000000000000000174501323676556600262710ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "qdeepintheme.h" #include "qdeepinfiledialoghelper.h" #include "diconproxyengine.h" #include "filedialogmanager_interface.h" #include "dthemesettings.h" #include #include #include #include #include #include #undef signals #include #include QT_BEGIN_NAMESPACE const char *QDeepinTheme::name = "deepin"; bool QDeepinTheme::m_usePlatformNativeDialog = true; QMimeDatabase QDeepinTheme::m_mimeDatabase; DThemeSettings *QDeepinTheme::m_settings = 0; static QString gtkSetting(const gchar *propertyName) { GtkSettings *settings = gtk_settings_get_default(); gchararray value; g_object_get(settings, propertyName, &value, NULL); QString str = QString::fromUtf8(value); g_free(value); return str; } extern void updateXdgIconSystemTheme(); static void gtkIconThemeSetCallback() { QIconLoader::instance()->updateSystemTheme(); updateXdgIconSystemTheme(); if (qApp->inherits("Dtk::Widget::DApplication")) { // emit the signal: DApplication::iconThemeChanged qApp->metaObject()->invokeMethod(qApp, QT_STRINGIFY(iconThemeChanged)); } } QDeepinTheme::QDeepinTheme() { // gtk_init will reset the Xlib error handler, and that causes // Qt applications to quit on X errors. Therefore, we need to manually restore it. int (*oldErrorHandler)(Display *, XErrorEvent *) = XSetErrorHandler(NULL); gtk_init(0, 0); XSetErrorHandler(oldErrorHandler); static GtkSettings *settings = Q_NULLPTR; if (!settings) { settings = gtk_settings_get_default(); if (settings) { g_signal_connect(settings, "notify::gtk-icon-theme-name", G_CALLBACK(gtkIconThemeSetCallback), 0); } } } QDeepinTheme::~QDeepinTheme() { if (QDeepinFileDialogHelper::manager) { QDeepinFileDialogHelper::manager->deleteLater(); QDeepinFileDialogHelper::manager = Q_NULLPTR; } } bool QDeepinTheme::usePlatformNativeDialog(DialogType type) const { if (type == FileDialog) { if (qgetenv("_d_disableDBusFileDialog") == "true") return false; static bool dbusDialogManagerInitialized = false; if (!dbusDialogManagerInitialized) { dbusDialogManagerInitialized = true; QDeepinFileDialogHelper::initDBusFileDialogManager(); } return m_usePlatformNativeDialog && QDeepinFileDialogHelper::manager && QDeepinFileDialogHelper::manager->isUseFileChooserDialog(); } return QGenericUnixTheme::usePlatformNativeDialog(type); } QPlatformDialogHelper *QDeepinTheme::createPlatformDialogHelper(DialogType type) const { if (type == FileDialog && usePlatformNativeDialog(type)) return new QDeepinFileDialogHelper(); return QGenericUnixTheme::createPlatformDialogHelper(type); } QIconEngine *QDeepinTheme::createIconEngine(const QString &iconName) const { QIcon icon = XdgIcon::fromTheme(iconName); if (icon.availableSizes().isEmpty()) return QGenericUnixTheme::createIconEngine(iconName); return icon.data_ptr()->engine->clone(); } QPixmap QDeepinTheme::standardPixmap(QPlatformTheme::StandardPixmap sp, const QSizeF &size) const { switch (sp) { case ArrowRight: return QPixmap(":/images/arrow-light.png"); default: break; } return QGenericUnixTheme::standardPixmap(sp, size); } #if QT_VERSION >= QT_VERSION_CHECK(5, 8, 0) QIcon QDeepinTheme::fileIcon(const QFileInfo &fileInfo, QPlatformTheme::IconOptions iconOptions) const { Q_UNUSED(iconOptions); return XdgIcon::fromTheme(m_mimeDatabase.mimeTypeForFile(fileInfo).iconName()); } #else QPixmap QDeepinTheme::fileIconPixmap(const QFileInfo &fileInfo, const QSizeF &size, QPlatformTheme::IconOptions iconOptions) const { Q_UNUSED(iconOptions); return XdgIcon::fromTheme(m_mimeDatabase.mimeTypeForFile(fileInfo).iconName()).pixmap(size.toSize()); } #endif QVariant QDeepinTheme::themeHint(QPlatformTheme::ThemeHint hint) const { switch (hint) { case QPlatformTheme::StyleNames: { if (settings()->isSetStyleNames() && !settings()->styleNames().isEmpty()) return settings()->styleNames(); QStringList styleNames; // TODO(hualet): Make ddark&dlight styles ready! // styleNames << QStringLiteral("dlight"); #ifndef QT_NO_STYLE_GTK styleNames << QStringLiteral("gtk2"); styleNames << QStringLiteral("GTK+"); #endif styleNames << QStringLiteral("fusion"); return QVariant(styleNames); } case QPlatformTheme::SystemIconThemeName: if (settings()->isSetIconThemeName()) return settings()->iconThemeName(); return QVariant(gtkSetting("gtk-icon-theme-name")); case QPlatformTheme::SystemIconFallbackThemeName: if (settings()->isSetFallbackIconThemeName()) return settings()->fallbackIconThemeName(); return QVariant(gtkSetting("gtk-fallback-icon-theme")); case QPlatformTheme::IconThemeSearchPaths: return QVariant(QGenericUnixTheme::xdgIconThemePaths() << QDir::homePath() + "/.local/share/icons"); case UseFullScreenForPopupMenu: return true; default: break; } return QGenericUnixTheme::themeHint(hint); } const QFont *QDeepinTheme::font(QPlatformTheme::Font type) const { if (!qApp->desktopSettingsAware()) return QGenericUnixTheme::font(type); switch (type) { case SystemFont: if (settings()->isSetSystemFont()) { static QFont *system_font = new QFont(""); if (!settings()->systemFont().isEmpty()) { system_font->setFamily(settings()->systemFont()); system_font->setPointSizeF(settings()->systemFontPointSize()); } return system_font; } break; case FixedFont: if (settings()->isSetSystemFixedFont()) { static QFont *fixed_font = new QFont(""); if (!settings()->systemFixedFont().isEmpty()) { fixed_font->setFamily(settings()->systemFixedFont()); fixed_font->setPointSizeF(settings()->systemFontPointSize()); } return fixed_font; } break; default: break; } return QGenericUnixTheme::font(type); } DThemeSettings *QDeepinTheme::settings() const { if (!m_settings) { m_settings = new DThemeSettings(); qApp->setProperty("_d_theme_settings_object", (quintptr)m_settings); if (qApp->inherits("Dtk::Widget::DApplication")) { QObject::connect(m_settings, SIGNAL(iconThemeNameChanged(QString)), qApp, SLOT(iconThemeChanged()), Qt::UniqueConnection); } auto updateSystemFont = [this] { qApp->setFont(*font(QPlatformTheme::SystemFont)); }; QObject::connect(m_settings, &DThemeSettings::systemFontChanged, m_settings, updateSystemFont, Qt::UniqueConnection); QObject::connect(m_settings, &DThemeSettings::systemFontPointSizeChanged, m_settings, updateSystemFont, Qt::UniqueConnection); } return m_settings; } QT_END_NAMESPACE dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/qdeepintheme.h000066400000000000000000000041301323676556600257250ustar00rootroot00000000000000/* * Copyright (C) 2017 ~ 2018 Deepin Technology Co., Ltd. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef QDEEPINTHEME_H #define QDEEPINTHEME_H #include #include #include #include class DThemeSettings; class QDeepinTheme : public QGenericUnixTheme { public: QDeepinTheme(); ~QDeepinTheme(); bool usePlatformNativeDialog(DialogType type) const Q_DECL_OVERRIDE; QPlatformDialogHelper *createPlatformDialogHelper(DialogType type) const Q_DECL_OVERRIDE; QIconEngine *createIconEngine(const QString &iconName) const Q_DECL_OVERRIDE; QPixmap standardPixmap(StandardPixmap sp, const QSizeF &size) const Q_DECL_OVERRIDE; #if QT_VERSION >= QT_VERSION_CHECK(5, 8, 0) QIcon fileIcon(const QFileInfo &fileInfo, QPlatformTheme::IconOptions iconOptions = 0) const Q_DECL_OVERRIDE; #else QPixmap fileIconPixmap(const QFileInfo &fileInfo, const QSizeF &size, QPlatformTheme::IconOptions iconOptions = 0) const Q_DECL_OVERRIDE; #endif QVariant themeHint(ThemeHint hint) const Q_DECL_OVERRIDE; const QFont *font(Font type) const Q_DECL_OVERRIDE; DThemeSettings *settings() const; static const char *name; private: static bool m_usePlatformNativeDialog; static QMimeDatabase m_mimeDatabase; static DThemeSettings *m_settings; friend class QDeepinFileDialogHelper; friend class QDeepinPlatformMenu; }; #endif // QDEEPINTHEME_H dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/qt5deepintheme-plugin.pro000066400000000000000000000036431323676556600300530ustar00rootroot00000000000000#------------------------------------------------- # # Project created by QtCreator 2016-08-09T14:24:29 # #------------------------------------------------- QT += dbus x11extras QT += core-private gui-private greaterThan(QT_MAJOR_VERSION, 4) { QT += widgets widgets-private # Qt >= 5.8 greaterThan(QT_MAJOR_VERSION, 5)|greaterThan(QT_MINOR_VERSION, 7): QT += theme_support-private else: QT += platformsupport-private } TARGET = qdeepin TEMPLATE = lib CONFIG += plugin link_pkgconfig c++11 PKGCONFIG += mtdev Qt5Xdg gtk+-2.0 x11 Qt5XdgIconLoader dtkcore PLUGIN_TYPE = platformthemes PLUGIN_EXTENDS = - PLUGIN_CLASS_NAME = QDeepinTheme DESTDIR = $$_PRO_FILE_PWD_/../bin/plugins/platformthemes SOURCES += qdeepintheme.cpp \ main.cpp \ qdeepinfiledialoghelper.cpp \ diconproxyengine.cpp \ dthemesettings.cpp HEADERS += qdeepintheme.h \ qdeepinfiledialoghelper.h \ diconproxyengine.h \ dthemesettings.h DISTFILES += \ deepin.json unix { target.path = $$[QT_INSTALL_PLUGINS]/platformthemes INSTALLS += target } RESOURCES += \ theme.qrc CONFIG(release, debug|release) { DEFINES += QT_NO_DEBUG_OUTPUT } #dbus_interface_filedialogmanager = /usr/share/dbus-1/interfaces/com.deepin.filemanager.filedialogmanager.xml #dbus_interface_filedialog = /usr/share/dbus-1/interfaces/com.deepin.filemanager.filedialog.xml #!exists($$dbus_interface_filedialogmanager) { # warning(Not found $$dbus_interface_filedialogmanager) dbus_interface_filedialogmanager = $$PWD/xmls/com.deepin.filemanager.filedialogmanager.xml #} #message(Will be use $$dbus_interface_filedialogmanager) #!exists($$dbus_interface_filedialog) { # warning(Not found $$dbus_interface_filedialog) dbus_interface_filedialog = $$PWD/xmls/com.deepin.filemanager.filedialog.xml #} #message(Will be use $$dbus_interface_filedialog) DBUS_INTERFACES += $$dbus_interface_filedialogmanager $$dbus_interface_filedialog dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/theme.qrc000066400000000000000000000010331323676556600247140ustar00rootroot00000000000000 menu.qss images/arrow-light-hover.png images/arrow-light.png images/check_dark_hover.png images/check_light_hover.png images/check_dark_normal.png images/arrow-light-inactive.png images/check_dark_inactive.png images/check_light_normal.png images/check_light_inactive.png dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/xmls/000077500000000000000000000000001323676556600240715ustar00rootroot00000000000000com.deepin.filemanager.filedialog.xml000066400000000000000000000056751323676556600331410ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/xmls com.deepin.filemanager.filedialogmanager.xml000066400000000000000000000014341323676556600344610ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/platformthemeplugin/xmls dde-qt5integration-0.2.8.3+git20180208/qt5integration.pro000066400000000000000000000004211323676556600225140ustar00rootroot00000000000000TEMPLATE = subdirs SUBDIRS += \ dstyleplugin\ platformthemeplugin/qt5deepintheme-plugin.pro \ iconengineplugins/iconengines.pro \ imageformatplugins/imageformats.pro CONFIG(debug, debug|release) { SUBDIRS += styles styles.depends += dstyleplugin } dde-qt5integration-0.2.8.3+git20180208/styles/000077500000000000000000000000001323676556600203435ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/styles/images/000077500000000000000000000000001323676556600216105ustar00rootroot00000000000000dde-qt5integration-0.2.8.3+git20180208/styles/images/woodbackground.png000066400000000000000000000170131323676556600253300ustar00rootroot00000000000000PNG  IHDR``F pHYsHHFk>PLTEVDbDfdaKfLgdhZJ4P\Z8_Ob@gLhWjŸGtlߴC7Lɡ*rKEwmI3Ȳr J6]f;i{^BO*"]T v^*g$L,imJmfbi0!?ǰ a^߬ =!+$1a2:pQw6M QAqY`:u=o8 lTy#WP|0:k"锲cę׻,*P҉T c&rW)V*Fm4A˃,$#rJy#g~LJgd"JoJ\25+e@;W[ i 0i0dž8J|ܴ0¤>3Ÿ>,rB1Ef$+7ƪkTp/V/I< `VmCMccc5G; N# 8f vQsr(\@bj|}0C:X0a(B:E !nvhQ ~s\퍆2".:EAg0v)b}nwdTRMdzRnVlSKh:-pxV{]f/?e2ɔ:lػv? 9^6+DZ:Fl_˲N7_{5 5]36yq,B7#̀%i:9~t]#q!aͺEAd{0ggrq"nNF_W#dP'9mss1m?i;z2kX%/_>jCb0U: .yyx>3|ZۣA8FGUwMhh,F BմB ˽{頜WHv/T&&SG:aڿݘ5r¢|*SOٟHŋY;.Gi}{39b-O*,Y&޷7fkjg< {@lnx}EEذawGwAT*i|U'IkhnzǷ(T碦 zC/YxSo5"XumCwn{(.H8mFҗ3#[j8V;: v=3Й0f˗yZo=ѻ&`ڜjG/$Kˣ/9  *Y/ xz^QcϨ@E v޸tBlqϞLpv@ m*)8~q7ralo$Ⱦf0U:/`ޙ>7O6_ٱ^d01Nep}y=u0ħJt`lrL}]^anM"t0#u&ioׇCW+jc{ OLFSJ|9v;s&Q/Ub8VoO?3jl :2tǯ힒*&[RybѥJvB?'e]sܡGRl!̦Xvjeks15lsF]+3i._~X+HNgx񏽭J!i/is9r Qq (?&f%W ?P1nHS+϶ ojJ&A+o"CUhG3jڷk)~0B*o0XHDj_6?}HD|KZC} ywZ'JYQCt$ed'vl$n윀Sß@ߢu)8N9ഭR*_qk_8䍓?cgo3qzHp2h,GMIfpF' w?ةM`! @@::k.Rݫ0[[(GǙEU>KC=9qbxW}ܷ̆w]NObyˑʳ^8 UpgHc)aӳe!9il=hɅ/ؽ,~'z[aܡi /͕nj@\ [97f$3= fԸbW?XՃ ^= c ÑMY%?( Q `qת4DV|UklFx^;\Wn-c1_'7ڧQFIc;Bv Z+E< ƭ08g=Қu7md9j*?Qh'>_ֳN?$~e`V[%RHmH;Nj\||;/ރ {8c "KGsG_ޓzX&C;ήJ˪*vZ#9zPJݘBʹ3=?WY,g~?&EY)в$a ƇZ(.A`*.+pЁT)9Ecg>!},G%oE%<~w)/EO)"{R^[i[6S[w+! mAR#8Sw r7nhj&ܥEm7TOP1N]?xv0gH˓c%0®UeǮm v|ܹ7.B&!!\1҈ue{Ftz? ~xK$@__uWT( E EhV4z]m״1u_:Re%d~_<,?(9ycWv`U2k]۵yG4sLm`a:kb[ar.jhɃ-*rZ]|=qNaPV[Lʠ{K#fɭ:7#L Ic};vLMc1P7Rs|p`[=rO@; "~e(JnL~}:O3/i]tygWW-652[<3[[5B FGFW"=x;jݎudL+Ϋn!Ci/D|@Th{j L6F*U,(#/:)kŰPVL_0r*dn_܋1[SO+eiq&IN];wv*ݤdT-;?kEb1G0C3=g*Ԅ{xtv=f N+U6JTT.\M2\E_qWT+yHMh cT[dsvVvBJ~dny5*p-I(=QqI[8]O]fCns;8"28?}zlXV[4]N;T|ً?;EKK#{8Ўh8f޻w I7%:&q2(^ٶ"(_l}b8ٳov_kZd~?~㷼&̺`tsVۍlĥWTEjwS%-UkߔOK_y KefV^;?F*~*!Gk`ɺ&c&(M!~t:.2ؾy^w<.EfUY'8~*볫t篯n a+.փy 3Yݠݿ/a(+(˖ӯ.6]~ywdF7dPgџwdHu Rŵ]h8o_j1TE~^A우'δr+"ps]y>,9ilqo$|Qoy?&w{w݃p³If:$ψk0/@yR ĵ,ȧ,jBJn#rh߿%HXqcɮ0ܡKͯ߰ouA* ЅnRV51!9yO:P,0tE߇s39 _1R5:d},~(}ISN8>#XU׎vH+ʪ1:߈=gݹ@gmYdOpla_6=Y)r]сQτ/_Plg0$aSy?mr#If`{~zsavTeyJFܘc(.ZFhnʫՕb5O׽eU@AVQuAhW\o=":{+Ha LƓ[&7)`+>#C rvIoBY]p^kM:]i ؃5,Wt Ly {_ik*e, m+ raHyNqcMa5Fy\Zwgn[@m׹?1;WOQ2G:;[RYGƯ4VC;(|t[x{fHtYc4(DY˿o,ǶWvW %2N]zJ*@[yBE+,&ق73Q=>p,'"M{;ޘgI)|Tߕ3R+x0_}dZ3<8e)y5UJ!t+z!A/̃Ng\M 9${ ['^{u @;WEY]aJiF%m0G'Sh "60SU9Ab̚HEm^} `@E%(7$xz($^Ih sE,BǮUF}.Y?@^ï+I% OMA|DV07‡<./ۋ"z d gEk;vDB/| gCrz/5e WhSi ? r[h'N&uq Qc5AZ~(?A2#ݕ0"BrcGy3Wď?dzYttyfad-ڍyY[u6~p4y4#/FPUֆ:涠f~B,y6IENDB`dde-qt5integration-0.2.8.3+git20180208/styles/images/woodbutton.png000066400000000000000000000170111323676556600245220ustar00rootroot00000000000000PNG  IHDR``F pHYsHHFk>PLTEC+NKR+MIN0S?T124EGH3P$R;T0X@Z ^b_#aCk09?3DMM!R+R6[9_*bCk.s>uKm:iF<CF1KKKNP6Q-R"THY,Z7a^` `RaEb!e/e:i kCl:p.t"uHy6K ^-GN(EIDATߏ$IboDFdUwOWWUVedVfVwL,]z{l |@X~'$̃@$d #9A6|vfw5w;=3#2#z2#2χ<ӷ?rx; Ξ^w_^ڤ;;\)G+۳{sq)C͆rj5 \ 7b!tMW_a>T@\Va dZƷJe5; [F3k!pIZ@S}@@NS,J; T{OІo-rjFl⭝|2q2sdcVȽj淭O+q{$WF7>Μ @: @ @r3KiTsog],dx|y00h^]FeԬ+>H%S:eU{!{ '{@nssw>hWf}xPUwq4+1 HTPjЖz U;="8p ueVAbrBK$m8hTJf4@+lnj<[OXrzus0ъhR'GgVmܾ0@`9}o0CdeI.He!1{> ղJMu:'KtN'GAj_Í~uҴb@|`A,hu 'μBcBIlփܐ",qLr=ިP1 ,+OWhP9 7MzBm> {-3 BgX/'JMc"/b<׍qM:}yȔv קѕY*g<<Rqh deaU{jYS:8mcKAv>-b3* ^/GWLʗ[|ߚ=zrfuzMYЊ~kƠ5v`0f鍦x_GڣqB@ ȝ7)p'q"@'o:C3t*`~)6;]$xq.ʝ je  Љ%%b'lD27.T@<7B'_Gxjȼ̻ho;\eeQ7L!Aԭ:|*؆[9ž2PXRc7Xd%c#PDFs=')g.m|[9vR`Hl>2Qjj^9^y<pmUm]JW2v)sO;9oS2vg=L7ȳRW=& @1kw@;s-fvPa=Pփyt.Vh=q ~1Óf6R+E.}nqtȀIDi #I#A1:^e&`(m. 3F -AgR[C1tE p7Թ)=j\>W<g~A8_$jBԑ{IA8f`ĵWT#;k+|nLg|1<b-Rcx|?_@n7[&p0}dF?"(The^t.}cam;tLfP!_eK'+P.ǗV+ѱwz4?J[-.5C[O;gJCN[oG<_TDO*!UKj1M>M=e'$|+D+ǧ5 s+ܢ-d7pus`Wf@5Sda0ѣyJv@ȅoW Z"wɨD/Zcy*? Sdv o9xt:F!02(|8uoRn;u<`H" F]o@˚2o fyRC[8܁/{ҚCڹ o;!Zs `t\n9eԄN^tEZ#VGjXޠ/`nb| m(* ɘXrINkx1( ~5iI[&@藫֒OyŹ XbK*>#!B <KT8״۷1>  (`g"NOmwbDP^! ^ df?O&zzSyQu>Ab{[|`Y%|#Ѫ{\j~Jo/mMo։\ Վ N?WNqTNZ)RQ (^%H^ ܐ-0w "ܧ\XyKuʦ5 w1+9n[k5X FCS5 68ʎ jqҳ8:(ٯlۯ! 6w%< G4mL'8+ŀLpܶ)peN20A+:|ܧr-ޡO>:8$?㵪&7LwxxV;/_?|պ*n^bl[j17/7˧>y:sV<ԚYz,o{7ɕc~YxV8`3rWFzy9]0C1 yu]v2@L))@6nP`5H@ H|**TM.|y3\ʊ*P*=U`]s@-`0 ?DC*pp5/ 0w1_w\r s@u3` BՋWOnWՀod97YR8yҮ-Ptq4ȤW6aA-ƣˁ~|z̕k5&n@br^ab6` OH0G:XEEfɒ*iHP}_E`8}nP(:C00~D0hJ!00lQI)x+͒@ X>8KLZ_X?@W~9P_/& wO疽t.-+SuZݙg_T ϖw@Ygx_C,HUFr(3dT#%nzF7@#huj+{^f?p{街`R :oǧב{6_(p=N}gYp{{Ozs^uXA;ϗymbTJ q/ \C!)hub}>)7?bj9XUTY%蓯A` @*80@G'FJ2ihqAm >Rh@ĺ3 x?}9/\Q;7>2]\/T2x+mp^] rQк1>FJ*SVpܚh^"sB"ە@j)P.Zΰ}@/ҷn8:Հ_%! 栶9sۣޏP>4޳Mo 88߼v~;6={>sD|_L&xՌ?5 nI0ʧFܴF>w9o# `o冁<&4@:;f''-?hi} xY4aѳl`QeJ !PƈKlB֘GDotր,! !n/,6{u)5=P<$ A<8^,RsvQk[5Ɓb 1tu01t^f-weU441Lͱ#vhkjrUZق@qoT ^ xހS3cX"X%Jzl:@aP\yeHT]l"3b=&ZXm1N5 QI}`L1ƹ͂EWO v4w_aOz_f[_m^Sey˹z}M;!yl{Sd_gƳl s$Kjw/h fG(P[ʀDgЙ\V@P3 QHk 9ָiS#  sRYE(2NFXƺU`cb Hqdh=@`ig84ztHɌemP`]`aKAʚh`&$^nvâqϬ***F"٘m1:y6_녨:)7ʐs1Xk{K|4`oO> XQqS[* \9f,~ɓ9_fuH P&̤#OL k>IprѪ^w?ydH)$bi;iߏs?OYX+?]t3V4C,=c׮#g{?|aɽ +k#C'Қ^P+B˘Ĩ4nS`UmʭT b.3 4@ a&t/mcgwyxIJZŐߩHTr =6( i^*&Q#@a=O|$H))[A@{@z\1`0^jٔO@Аr-{кA&d`,.-a])Q33PL~ѷ :*9V +Y9/.4YzݑTWt1@cƩ1X$B:# dRH7+m !#EtE&,&l(yI@ESxjL$I5S+ojhԡ^[uZ;aGV҅5wO;ۉY 54 ")`Xݏ2Y?5,i%~wȺp=ÿƝb#eOVs/~bEgtkY[P`퓓tDoZ,LڐB'iH{7[jcQpPo ^ae 2-AsA ,o_A59+e2椉46he{ ZgS<3+8#|q,kuibQ!ak?fx$$pYn#IF͉. Jwg[!!o а@LZP-3UXh~ta|5N>4hcpehʡ˄RҌ~=. yj6jqc' T@I~6RYv@/kA\k}WVۨ6Fa Q >Z!Wnd$gxPVUbK+t ̳8;R<;m[d.7d[J!#dXӻlq(fD Mנ*0Va8}9ƻYUOkmbNIo<w@`ZJ8,ѲCgIENDB`dde-qt5integration-0.2.8.3+git20180208/styles/main.cpp000066400000000000000000000045351323676556600220020ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (C) 2015 The Qt Company Ltd. ** Contact: http://www.qt.io/licensing/ ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of The Qt Company Ltd nor the names of its ** contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include #include #include #include "widgetgallery.h" int main(int argc, char *argv[]) { Q_INIT_RESOURCE(styles); QStringList paths = QApplication::libraryPaths(); paths.prepend(QFileInfo(QString::fromUtf8(argv[0])).path() + "/plugins/"); QApplication::setLibraryPaths(paths); QApplication app(argc, argv); WidgetGallery gallery; gallery.show(); return app.exec(); } dde-qt5integration-0.2.8.3+git20180208/styles/norwegianwoodstyle.cpp000066400000000000000000000254061323676556600250210ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (C) 2015 The Qt Company Ltd. ** Contact: http://www.qt.io/licensing/ ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of The Qt Company Ltd nor the names of its ** contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include #include "norwegianwoodstyle.h" NorwegianWoodStyle::NorwegianWoodStyle() : QProxyStyle(QStyleFactory::create("windows")) { } //! [0] void NorwegianWoodStyle::polish(QPalette &palette) { QColor brown(212, 140, 95); QColor beige(236, 182, 120); QColor slightlyOpaqueBlack(0, 0, 0, 63); QPixmap backgroundImage(":/images/woodbackground.png"); QPixmap buttonImage(":/images/woodbutton.png"); QPixmap midImage = buttonImage; QPainter painter; painter.begin(&midImage); painter.setPen(Qt::NoPen); painter.fillRect(midImage.rect(), slightlyOpaqueBlack); painter.end(); //! [0] //! [1] palette = QPalette(brown); palette.setBrush(QPalette::BrightText, Qt::white); palette.setBrush(QPalette::Base, beige); palette.setBrush(QPalette::Highlight, Qt::darkGreen); setTexture(palette, QPalette::Button, buttonImage); setTexture(palette, QPalette::Mid, midImage); setTexture(palette, QPalette::Window, backgroundImage); QBrush brush = palette.background(); brush.setColor(brush.color().dark()); palette.setBrush(QPalette::Disabled, QPalette::WindowText, brush); palette.setBrush(QPalette::Disabled, QPalette::Text, brush); palette.setBrush(QPalette::Disabled, QPalette::ButtonText, brush); palette.setBrush(QPalette::Disabled, QPalette::Base, brush); palette.setBrush(QPalette::Disabled, QPalette::Button, brush); palette.setBrush(QPalette::Disabled, QPalette::Mid, brush); } //! [1] //! [3] void NorwegianWoodStyle::polish(QWidget *widget) //! [3] //! [4] { if (qobject_cast(widget) || qobject_cast(widget)) widget->setAttribute(Qt::WA_Hover, true); } //! [4] //! [5] void NorwegianWoodStyle::unpolish(QWidget *widget) //! [5] //! [6] { if (qobject_cast(widget) || qobject_cast(widget)) widget->setAttribute(Qt::WA_Hover, false); } //! [6] //! [7] int NorwegianWoodStyle::pixelMetric(PixelMetric metric, //! [7] //! [8] const QStyleOption *option, const QWidget *widget) const { switch (metric) { case PM_ComboBoxFrameWidth: return 8; case PM_ScrollBarExtent: return QProxyStyle::pixelMetric(metric, option, widget) + 4; default: return QProxyStyle::pixelMetric(metric, option, widget); } } //! [8] //! [9] int NorwegianWoodStyle::styleHint(StyleHint hint, const QStyleOption *option, //! [9] //! [10] const QWidget *widget, QStyleHintReturn *returnData) const { switch (hint) { case SH_DitherDisabledText: return int(false); case SH_EtchDisabledText: return int(true); default: return QProxyStyle::styleHint(hint, option, widget, returnData); } } //! [10] //! [11] void NorwegianWoodStyle::drawPrimitive(PrimitiveElement element, //! [11] //! [12] const QStyleOption *option, QPainter *painter, const QWidget *widget) const { switch (element) { case PE_PanelButtonCommand: { int delta = (option->state & State_MouseOver) ? 64 : 0; QColor slightlyOpaqueBlack(0, 0, 0, 63); QColor semiTransparentWhite(255, 255, 255, 127 + delta); QColor semiTransparentBlack(0, 0, 0, 127 - delta); int x, y, width, height; option->rect.getRect(&x, &y, &width, &height); //! [12] //! [13] QPainterPath roundRect = roundRectPath(option->rect); //! [13] //! [14] int radius = qMin(width, height) / 2; //! [14] //! [15] QBrush brush; //! [15] //! [16] bool darker; const QStyleOptionButton *buttonOption = qstyleoption_cast(option); if (buttonOption && (buttonOption->features & QStyleOptionButton::Flat)) { brush = option->palette.background(); darker = (option->state & (State_Sunken | State_On)); } else { if (option->state & (State_Sunken | State_On)) { brush = option->palette.mid(); darker = !(option->state & State_Sunken); } else { brush = option->palette.button(); darker = false; //! [16] //! [17] } //! [17] //! [18] } //! [18] //! [19] painter->save(); //! [19] //! [20] painter->setRenderHint(QPainter::Antialiasing, true); //! [20] //! [21] painter->fillPath(roundRect, brush); //! [21] //! [22] if (darker) //! [22] //! [23] painter->fillPath(roundRect, slightlyOpaqueBlack); //! [23] //! [24] int penWidth; //! [24] //! [25] if (radius < 10) penWidth = 3; else if (radius < 20) penWidth = 5; else penWidth = 7; QPen topPen(semiTransparentWhite, penWidth); QPen bottomPen(semiTransparentBlack, penWidth); if (option->state & (State_Sunken | State_On)) qSwap(topPen, bottomPen); //! [25] //! [26] int x1 = x; int x2 = x + radius; int x3 = x + width - radius; int x4 = x + width; if (option->direction == Qt::RightToLeft) { qSwap(x1, x4); qSwap(x2, x3); } QPolygon topHalf; topHalf << QPoint(x1, y) << QPoint(x4, y) << QPoint(x3, y + radius) << QPoint(x2, y + height - radius) << QPoint(x1, y + height); painter->setClipPath(roundRect); painter->setClipRegion(topHalf, Qt::IntersectClip); painter->setPen(topPen); painter->drawPath(roundRect); //! [26] //! [32] QPolygon bottomHalf = topHalf; bottomHalf[0] = QPoint(x4, y + height); painter->setClipPath(roundRect); painter->setClipRegion(bottomHalf, Qt::IntersectClip); painter->setPen(bottomPen); painter->drawPath(roundRect); painter->setPen(option->palette.foreground().color()); painter->setClipping(false); painter->drawPath(roundRect); painter->restore(); } break; //! [32] //! [33] default: //! [33] //! [34] QProxyStyle::drawPrimitive(element, option, painter, widget); } } //! [34] //! [35] void NorwegianWoodStyle::drawControl(ControlElement element, //! [35] //! [36] const QStyleOption *option, QPainter *painter, const QWidget *widget) const { switch (element) { case CE_PushButtonLabel: { QStyleOptionButton myButtonOption; const QStyleOptionButton *buttonOption = qstyleoption_cast(option); if (buttonOption) { myButtonOption = *buttonOption; if (myButtonOption.palette.currentColorGroup() != QPalette::Disabled) { if (myButtonOption.state & (State_Sunken | State_On)) { myButtonOption.palette.setBrush(QPalette::ButtonText, myButtonOption.palette.brightText()); } } } QProxyStyle::drawControl(element, &myButtonOption, painter, widget); } break; default: QProxyStyle::drawControl(element, option, painter, widget); } } //! [36] //! [37] void NorwegianWoodStyle::setTexture(QPalette &palette, QPalette::ColorRole role, //! [37] //! [38] const QPixmap &pixmap) { for (int i = 0; i < QPalette::NColorGroups; ++i) { QColor color = palette.brush(QPalette::ColorGroup(i), role).color(); palette.setBrush(QPalette::ColorGroup(i), role, QBrush(color, pixmap)); } } //! [38] //! [39] QPainterPath NorwegianWoodStyle::roundRectPath(const QRect &rect) //! [39] //! [40] { int radius = qMin(rect.width(), rect.height()) / 2; int diam = 2 * radius; int x1, y1, x2, y2; rect.getCoords(&x1, &y1, &x2, &y2); QPainterPath path; path.moveTo(x2, y1 + radius); path.arcTo(QRect(x2 - diam, y1, diam, diam), 0.0, +90.0); path.lineTo(x1 + radius, y1); path.arcTo(QRect(x1, y1, diam, diam), 90.0, +90.0); path.lineTo(x1, y2 - radius); path.arcTo(QRect(x1, y2 - diam, diam, diam), 180.0, +90.0); path.lineTo(x1 + radius, y2); path.arcTo(QRect(x2 - diam, y2 - diam, diam, diam), 270.0, +90.0); path.closeSubpath(); return path; } //! [40] dde-qt5integration-0.2.8.3+git20180208/styles/norwegianwoodstyle.h000066400000000000000000000061771323676556600244720ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (C) 2015 The Qt Company Ltd. ** Contact: http://www.qt.io/licensing/ ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of The Qt Company Ltd nor the names of its ** contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef NORWEGIANWOODSTYLE_H #define NORWEGIANWOODSTYLE_H #include #include QT_BEGIN_NAMESPACE class QPainterPath; QT_END_NAMESPACE //! [0] class NorwegianWoodStyle : public QProxyStyle { Q_OBJECT public: NorwegianWoodStyle(); void polish(QPalette &palette) Q_DECL_OVERRIDE; void polish(QWidget *widget) Q_DECL_OVERRIDE; void unpolish(QWidget *widget) Q_DECL_OVERRIDE; int pixelMetric(PixelMetric metric, const QStyleOption *option, const QWidget *widget) const Q_DECL_OVERRIDE; int styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const Q_DECL_OVERRIDE; void drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const Q_DECL_OVERRIDE; void drawControl(ControlElement control, const QStyleOption *option, QPainter *painter, const QWidget *widget) const Q_DECL_OVERRIDE; private: static void setTexture(QPalette &palette, QPalette::ColorRole role, const QPixmap &pixmap); static QPainterPath roundRectPath(const QRect &rect); }; //! [0] #endif dde-qt5integration-0.2.8.3+git20180208/styles/styles.pro000066400000000000000000000005531323676556600224130ustar00rootroot00000000000000QT += widgets HEADERS = norwegianwoodstyle.h \ widgetgallery.h SOURCES = main.cpp \ norwegianwoodstyle.cpp \ widgetgallery.cpp RESOURCES = styles.qrc DESTDIR = $$_PRO_FILE_PWD_/../bin/ CONFIG += c++11 # install # target.path = $$[QT_INSTALL_EXAMPLES]/widgets/widgets/styles # INSTALLS += target dde-qt5integration-0.2.8.3+git20180208/styles/styles.qrc000066400000000000000000000002241323676556600223730ustar00rootroot00000000000000 images/woodbutton.png images/woodbackground.png dde-qt5integration-0.2.8.3+git20180208/styles/widgetgallery.cpp000066400000000000000000000227211323676556600237160ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (C) 2015 The Qt Company Ltd. ** Contact: http://www.qt.io/licensing/ ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of The Qt Company Ltd nor the names of its ** contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include #include "norwegianwoodstyle.h" #include "widgetgallery.h" //! [0] WidgetGallery::WidgetGallery(QWidget *parent) : QMainWindow(parent) { originalPalette = QApplication::palette(); styleComboBox = new QComboBox; styleComboBox->addItem("NorwegianWood"); styleComboBox->addItems(QStyleFactory::keys()); styleComboBox->setToolTip("Hello"); styleLabel = new QLabel(tr("&Style:")); styleLabel->setBuddy(styleComboBox); useStylePaletteCheckBox = new QCheckBox(tr("&Use style's standard palette")); useStylePaletteCheckBox->setChecked(true); disableWidgetsCheckBox = new QCheckBox(tr("&Disable widgets")); createTopLeftGroupBox(); createTopRightGroupBox(); createBottomLeftTabWidget(); createBottomRightGroupBox(); createProgressBar(); //! [0] //! [1] connect(styleComboBox, SIGNAL(activated(QString)), //! [1] //! [2] this, SLOT(changeStyle(QString))); connect(useStylePaletteCheckBox, SIGNAL(toggled(bool)), this, SLOT(changePalette())); connect(disableWidgetsCheckBox, SIGNAL(toggled(bool)), topLeftGroupBox, SLOT(setDisabled(bool))); connect(disableWidgetsCheckBox, SIGNAL(toggled(bool)), topRightGroupBox, SLOT(setDisabled(bool))); connect(disableWidgetsCheckBox, SIGNAL(toggled(bool)), bottomLeftTabWidget, SLOT(setDisabled(bool))); connect(disableWidgetsCheckBox, SIGNAL(toggled(bool)), bottomRightGroupBox, SLOT(setDisabled(bool))); //! [2] //! [3] QWidget *mainWidget = new QWidget(); QHBoxLayout *topLayout = new QHBoxLayout; //! [3] //! [4] topLayout->addWidget(styleLabel); topLayout->addWidget(styleComboBox); topLayout->addStretch(1); topLayout->addWidget(useStylePaletteCheckBox); topLayout->addWidget(disableWidgetsCheckBox); QGridLayout *mainLayout = new QGridLayout(mainWidget); mainLayout->addLayout(topLayout, 0, 0, 1, 2); mainLayout->addWidget(topLeftGroupBox, 1, 0); mainLayout->addWidget(topRightGroupBox, 1, 1); mainLayout->addWidget(bottomLeftTabWidget, 2, 0); mainLayout->addWidget(bottomRightGroupBox, 2, 1); mainLayout->addWidget(progressBar, 3, 0, 1, 2); mainLayout->setRowStretch(1, 1); mainLayout->setRowStretch(2, 1); mainLayout->setColumnStretch(0, 1); mainLayout->setColumnStretch(1, 1); setWindowTitle(tr("Styles")); changeStyle("NorwegianWood"); setCentralWidget(mainWidget); menuBar()->addAction("breeze"); menuBar()->addAction("dlight"); menuBar()->addAction("ddark"); menuBar()->addAction("dsemidark"); menuBar()->addAction("dsemilight"); connect(menuBar(), &QMenuBar::triggered, this, [this](const QAction *action) { changeStyle(action->text()); }); } //! [4] //! [5] void WidgetGallery::changeStyle(const QString &styleName) //! [5] //! [6] { if (styleName == "NorwegianWood") { QApplication::setStyle(new NorwegianWoodStyle); } else { QApplication::setStyle(QStyleFactory::create(styleName)); } changePalette(); } //! [6] //! [7] void WidgetGallery::changePalette() //! [7] //! [8] { if (useStylePaletteCheckBox->isChecked()) QApplication::setPalette(QApplication::style()->standardPalette()); else QApplication::setPalette(originalPalette); } //! [8] //! [9] void WidgetGallery::advanceProgressBar() //! [9] //! [10] { int curVal = progressBar->value(); int maxVal = progressBar->maximum(); progressBar->setValue(curVal + (maxVal - curVal) / 100); } //! [10] //! [11] void WidgetGallery::createTopLeftGroupBox() //! [11] //! [12] { topLeftGroupBox = new QGroupBox(tr("Group 1")); radioButton1 = new QRadioButton(tr("Radio button 1")); radioButton2 = new QRadioButton(tr("Radio button 2")); radioButton3 = new QRadioButton(tr("Radio button 3")); radioButton1->setChecked(true); checkBox = new QCheckBox(tr("Tri-state check box")); checkBox->setTristate(true); checkBox->setCheckState(Qt::PartiallyChecked); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(radioButton1); layout->addWidget(radioButton2); layout->addWidget(radioButton3); layout->addWidget(checkBox); layout->addStretch(1); topLeftGroupBox->setLayout(layout); } //! [12] void WidgetGallery::createTopRightGroupBox() { topRightGroupBox = new QGroupBox(tr("Group 2")); defaultPushButton = new QPushButton(tr("Default Push Button")); defaultPushButton->setDefault(true); togglePushButton = new QPushButton(tr("Toggle Push Button")); togglePushButton->setCheckable(true); togglePushButton->setChecked(true); flatPushButton = new QPushButton(tr("Flat Push Button")); flatPushButton->setFlat(true); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(defaultPushButton); layout->addWidget(togglePushButton); layout->addWidget(flatPushButton); layout->addStretch(1); topRightGroupBox->setLayout(layout); } void WidgetGallery::createBottomLeftTabWidget() { bottomLeftTabWidget = new QTabWidget; bottomLeftTabWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Ignored); QWidget *tab1 = new QWidget; tableWidget = new QTableWidget(10, 10); QHBoxLayout *tab1hbox = new QHBoxLayout; tab1hbox->setMargin(5); tab1hbox->addWidget(tableWidget); tab1->setLayout(tab1hbox); QWidget *tab2 = new QWidget; textEdit = new QTextEdit; textEdit->setPlainText(tr("Twinkle, twinkle, little star,\n" "How I wonder what you are.\n" "Up above the world so high,\n" "Like a diamond in the sky.\n" "Twinkle, twinkle, little star,\n" "How I wonder what you are!\n")); QHBoxLayout *tab2hbox = new QHBoxLayout; tab2hbox->setMargin(5); tab2hbox->addWidget(textEdit); tab2->setLayout(tab2hbox); bottomLeftTabWidget->addTab(tab1, tr("&Table")); bottomLeftTabWidget->addTab(tab2, tr("Text &Edit")); } void WidgetGallery::createBottomRightGroupBox() { bottomRightGroupBox = new QGroupBox(tr("Group 3")); bottomRightGroupBox->setCheckable(true); bottomRightGroupBox->setChecked(true); lineEdit = new QLineEdit("s3cRe7"); lineEdit->setEchoMode(QLineEdit::Password); spinBox = new QSpinBox(bottomRightGroupBox); spinBox->setValue(50); dateTimeEdit = new QDateTimeEdit(bottomRightGroupBox); dateTimeEdit->setDateTime(QDateTime::currentDateTime()); slider = new QSlider(Qt::Horizontal, bottomRightGroupBox); slider->setRange(0, 100); slider->setTickInterval(10); slider->setTickPosition(QSlider::TicksBelow); slider->setValue(40); scrollBar = new QScrollBar(Qt::Horizontal, bottomRightGroupBox); scrollBar->setValue(60); dial = new QDial(bottomRightGroupBox); dial->setValue(30); dial->setNotchesVisible(true); QGridLayout *layout = new QGridLayout; layout->addWidget(lineEdit, 0, 0, 1, 2); layout->addWidget(spinBox, 1, 0, 1, 2); layout->addWidget(dateTimeEdit, 2, 0, 1, 2); layout->addWidget(slider, 3, 0); layout->addWidget(scrollBar, 4, 0); layout->addWidget(dial, 3, 1, 2, 1); layout->setRowStretch(5, 1); bottomRightGroupBox->setLayout(layout); } //! [13] void WidgetGallery::createProgressBar() { progressBar = new QProgressBar; progressBar->setRange(0, 10000); progressBar->setValue(0); QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(advanceProgressBar())); timer->start(1000); } //! [13] dde-qt5integration-0.2.8.3+git20180208/styles/widgetgallery.h000066400000000000000000000067551323676556600233740ustar00rootroot00000000000000/**************************************************************************** ** ** Copyright (C) 2015 The Qt Company Ltd. ** Contact: http://www.qt.io/licensing/ ** ** This file is part of the examples of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of The Qt Company Ltd nor the names of its ** contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef WIDGETGALLERY_H #define WIDGETGALLERY_H #include QT_BEGIN_NAMESPACE class QCheckBox; class QComboBox; class QDateTimeEdit; class QDial; class QGroupBox; class QLabel; class QLineEdit; class QProgressBar; class QPushButton; class QRadioButton; class QScrollBar; class QSlider; class QSpinBox; class QTabWidget; class QTableWidget; class QTextEdit; QT_END_NAMESPACE //! [0] class WidgetGallery : public QMainWindow { Q_OBJECT public: WidgetGallery(QWidget *parent = 0); private slots: void changeStyle(const QString &styleName); void changePalette(); void advanceProgressBar(); private: void createTopLeftGroupBox(); void createTopRightGroupBox(); void createBottomLeftTabWidget(); void createBottomRightGroupBox(); void createProgressBar(); QPalette originalPalette; QLabel *styleLabel; QComboBox *styleComboBox; QCheckBox *useStylePaletteCheckBox; QCheckBox *disableWidgetsCheckBox; //! [0] QGroupBox *topLeftGroupBox; QRadioButton *radioButton1; QRadioButton *radioButton2; QRadioButton *radioButton3; QCheckBox *checkBox; QGroupBox *topRightGroupBox; QPushButton *defaultPushButton; QPushButton *togglePushButton; QPushButton *flatPushButton; QTabWidget *bottomLeftTabWidget; QTableWidget *tableWidget; QTextEdit *textEdit; QGroupBox *bottomRightGroupBox; QLineEdit *lineEdit; QSpinBox *spinBox; QDateTimeEdit *dateTimeEdit; QSlider *slider; QScrollBar *scrollBar; QDial *dial; QProgressBar *progressBar; //! [1] }; //! [1] #endif