Compare commits
758 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 90ad08a6f9 | |||
| 819e680222 | |||
| 6697bd04f1 | |||
| 2a6e9046e7 | |||
| 460d965ac1 | |||
| 2b929f8a06 | |||
| f2cafe0567 | |||
| 564966daef | |||
| 668e5dc28d | |||
| 7ae592776d | |||
| 6f3980e6cb | |||
| e2a0079c6e | |||
| 73f84a2861 | |||
| 8218080f40 | |||
| 264b0ba8da | |||
| b114db583b | |||
| 832b53dfc9 | |||
| 244f58ecce | |||
| 470666cf41 | |||
| 4abfc19399 | |||
| e3e8684f18 | |||
|
|
c60399df0b | ||
|
|
9036140ceb | ||
|
|
da7e8ea9fc | ||
| a158966e2d | |||
| 105c7f3751 | |||
|
|
aa3f2fbce4 | ||
| 1ab8da0e1a | |||
| 072be29804 | |||
| 8e7aa445cf | |||
| f5faebe91e | |||
| 5bcf2ce4f5 | |||
| 992d1e7023 | |||
| 86f8a3b501 | |||
| 46a1daeafc | |||
| 0566d546df | |||
| b3eb13ada5 | |||
| 19bfd4031c | |||
| d2844b8b8a | |||
| f02c279c8a | |||
|
|
6fa0e11927 | ||
| f0830822c7 | |||
| 7c9b503b0e | |||
|
|
5a248859ec | ||
| f03e032a1b | |||
| 9657c13106 | |||
| a3355516cf | |||
|
|
eb88fc85c5 | ||
|
|
5dc0d52530 | ||
| c8cbaa9c8b | |||
| 11d7073905 | |||
| 5e55607dbf | |||
|
|
761f67f02c | ||
| 97755980bc | |||
| beaa19e9e5 | |||
| 8cfd219d67 | |||
| b153edf8dc | |||
| 90ed903197 | |||
| 4c59762086 | |||
| a49c35dbcb | |||
| b6f57c727b | |||
| d0dec1b3b0 | |||
| b125993336 | |||
| 5a37f24145 | |||
| a7b32db9b5 | |||
| b7d9ea9358 | |||
| e2118a471f | |||
| 8d06c37e96 | |||
| 0d3431b616 | |||
| b2fc02d145 | |||
| 102c0831af | |||
| 8dc1854f2e | |||
| b778e351b3 | |||
| 85a7790932 | |||
| 09bc7f2867 | |||
| 81aa00ff01 | |||
| 4b72d091e5 | |||
| a159a11807 | |||
| d86efc642a | |||
| 4c05c18198 | |||
| 09c1d50bd2 | |||
| ef36a92c7c | |||
| 8a93d4dd06 | |||
|
|
29ddef300f | ||
| 5bd6ad9399 | |||
| 32c74bc5a0 | |||
| ce34fc763f | |||
| 85823fdc23 | |||
| 5f12494b95 | |||
| 8be23ff5f4 | |||
| b060000028 | |||
| ed3db29806 | |||
| 81ab122d6b | |||
| bab1b1cb0a | |||
| 15e826898b | |||
| 7c1e44010c | |||
| 4bb389e378 | |||
| 22ea57c263 | |||
|
|
019f20dcba | ||
|
|
f4fa07d589 | ||
| 44d04c5bcb | |||
| e7d15f903d | |||
| fb01686527 | |||
| 7ad606bbd4 | |||
| 723475ca9c | |||
| 6fee032bd1 | |||
| f3a690d9ae | |||
| 120793dbcc | |||
| 39a2f74f2e | |||
|
|
b49ea2c71f | ||
| 3647d80037 | |||
| b292c6cbf2 | |||
| 267eae076e | |||
| adbb2f2b11 | |||
| 568bfe3417 | |||
| e67c4b435b | |||
| 5b018a4696 | |||
| 8113eaf1e7 | |||
| 9e7e957f4f | |||
| 94f555bfa6 | |||
| 0380bc4a05 | |||
| 0ac6c90629 | |||
| 84d8ac7c9f | |||
| 7b228cf100 | |||
| b8c1914406 | |||
| abb8f4ee54 | |||
| 61455a67be | |||
| 5a8e57a56f | |||
| da32087a72 | |||
| 1087ad6dd3 | |||
| c2a9bb8207 | |||
| a3c4066d61 | |||
| 87b206ffc0 | |||
| 0b0bbefd88 | |||
| 5e051794dd | |||
|
|
e2c55a0861 | ||
| 63b39a9fe3 | |||
| 798fd4ba27 | |||
| e01510e92c | |||
| 358df6d852 | |||
| 28f3931436 | |||
| 64cd2a074f | |||
| 76e969714d | |||
| 58cd3d6b96 | |||
| 031ef20d8c | |||
| 466ad7f782 | |||
| 75f69703ef | |||
| 4f8e91b971 | |||
| d8e7883137 | |||
| 43528f4533 | |||
| a6da148d3a | |||
| f956aaaf2d | |||
| 1176978dbe | |||
| 14e87c9141 | |||
| 768222f6b7 | |||
| 5f3ca00671 | |||
| d0f32387b5 | |||
| dee1850337 | |||
| 5d63f7a3b7 | |||
| 65f9c8be9b | |||
| 3843d6c5b6 | |||
| 1238d0d5b7 | |||
| 8bc93fda5d | |||
| 33d0d71feb | |||
| 962d20e7bf | |||
| f6885e9792 | |||
| c8759e8284 | |||
| 85ce641fef | |||
| d56300fc51 | |||
| d85f93b923 | |||
| 863bb61c6f | |||
|
|
2688b8b418 | ||
|
|
b2883e4fec | ||
| 8f3fb38485 | |||
| 07fa8d3a83 | |||
| 28bd302506 | |||
| 8aa1a40b41 | |||
| 6f4fe1a823 | |||
| 506ead11f9 | |||
| 21a5636a07 | |||
| 4fd1458471 | |||
| 5592f90cf8 | |||
| 92c351494c | |||
|
|
8125cc627e | ||
|
|
a26d1d8ffd | ||
|
|
5c11af9ce6 | ||
|
|
b7bc8008f3 | ||
|
|
874ffd5822 | ||
|
|
8d8783502c | ||
|
|
bc410f33d7 | ||
|
|
92fa8e552d | ||
|
|
fa488c0a9d | ||
|
|
d03b047492 | ||
| c5e2ea040d | |||
| 38d592d7e3 | |||
| a92c22f205 | |||
| 249b0c7a02 | |||
| 2ffd360df7 | |||
| 883476827b | |||
| ddcac0cf18 | |||
| 1fe6980a80 | |||
| 8777d9d3c4 | |||
| 0387b6f20f | |||
| e701f5e18c | |||
| 5d29af4dc8 | |||
| 1d8cca19c0 | |||
|
|
bf8eaf5680 | ||
|
|
2d1ca2463e | ||
| d6bc2a96a7 | |||
| ff0e893726 | |||
| facbaa0f40 | |||
| 30cd9c0181 | |||
| b4386d35bd | |||
| 94c0ca9f6d | |||
| fcba7d93c9 | |||
| 486d9912b8 | |||
| ecc6da2533 | |||
| e04f770aa6 | |||
| 1b97df0071 | |||
| 91977c8892 | |||
| c160dc6300 | |||
| a62f180da6 | |||
| a05c01b382 | |||
| d103225d92 | |||
| 35b4cdabd0 | |||
| b38c040029 | |||
| dceb796ce9 | |||
| 07cdeb1e40 | |||
| 96f22384e2 | |||
| 1447e9eb16 | |||
| 1c6302d01c | |||
| 91d64dc9ed | |||
| bc11d6a514 | |||
|
|
463b8a7c0d | ||
| 61b56346b8 | |||
| a20454b92c | |||
| 6426a3c12a | |||
| 42fa1b5340 | |||
| 10320e99eb | |||
| b2120411e5 | |||
| 9c219e5e89 | |||
| 021283e240 | |||
| 74513723e9 | |||
| 3664a80c55 | |||
| 0bd8bab7eb | |||
| 4c565cda6c | |||
| 7484ee8438 | |||
| c22f13a271 | |||
| e0a62a88d9 | |||
| 804db2e623 | |||
|
|
89f7696704 | ||
|
|
18e13e4525 | ||
| 230b208fcb | |||
| c9354e6d27 | |||
| bad522e40a | |||
| ffac75eab7 | |||
| e2497116bf | |||
| 99fae1bb3f | |||
| 59e4da7b40 | |||
| 609a301ecc | |||
| f0a8b141b4 | |||
| 4d35438bf0 | |||
| 4863850195 | |||
|
|
d379f2ad63 | ||
| 0ac0f97688 | |||
|
|
6c606806a1 | ||
| 363c38cb8f | |||
| c039fd52a7 | |||
| 83540e1c55 | |||
| b54c797ce5 | |||
| f60d125920 | |||
| fa00f9aaf7 | |||
| 76808cc2f5 | |||
| eaa335cc04 | |||
| 6768058358 | |||
| 09c2d41118 | |||
| c9e7ef20ec | |||
| 6e55244776 | |||
| b7e2571789 | |||
|
|
e9a52da098 | ||
| 37057306bb | |||
| fe3a2b2e3b | |||
|
|
0c4f5dacca | ||
|
|
62e23facfb | ||
| a9264b8cb9 | |||
| 78f81e0498 | |||
| c055e9bbb4 | |||
| 080cd44229 | |||
| 52f42447b4 | |||
| 5947d7124e | |||
| f8d4f2f51a | |||
| 3c923f33b3 | |||
| 6b27c5d7b1 | |||
| 78810b1a22 | |||
| 0bc0d13036 | |||
| 406e4d5400 | |||
| 60daeae2f5 | |||
| 08d9c12793 | |||
| 7d81ba5be7 | |||
| 6df9804f02 | |||
| a93dd6ec6f | |||
| 6b83cc48a9 | |||
| 9ebc6eb3d3 | |||
| d47fdea23f | |||
| 8b4ae51459 | |||
| 6563221947 | |||
| 7ac6cb4072 | |||
| 6b154c3aad | |||
| fa3270e401 | |||
| 63e6b0e6f6 | |||
| c2daaad86c | |||
| c5d3dadbbb | |||
| 397d941f2f | |||
| 0f7b79f49e | |||
| 1d7fb7b0d0 | |||
| 73e4bb1685 | |||
| 7f23300b9e | |||
|
|
99bdb1f958 | ||
| 3ffaaee174 | |||
|
|
9c977dfc5d | ||
| 2efd9dc170 | |||
| 321e6b3dfe | |||
| 9f1f21c2b6 | |||
| 5136984343 | |||
| a8d82480e7 | |||
| efac507fed | |||
| 22532e0436 | |||
| 4de6b167da | |||
| 7bde95a65c | |||
| 9a47b5515c | |||
| 0db7fad640 | |||
| 1a98dae4f8 | |||
| 5cb1cff0ca | |||
| 8d4874d553 | |||
| c00d62c010 | |||
| 831bef8233 | |||
| 20e1763929 | |||
| 35218a917b | |||
| e5a2fd2d94 | |||
| 6946f20d64 | |||
| 3f9200bf01 | |||
| b2fc80215d | |||
| 74d4cc05d9 | |||
|
|
a7d86d9120 | ||
| fb21620880 | |||
| 985e7d829e | |||
| 5ceb8d78cb | |||
| dfce427891 | |||
| c72885ff55 | |||
| beba54925c | |||
| aba67f19b4 | |||
| 9708db56d6 | |||
| 1ee5b412b8 | |||
| a14613018b | |||
| 086c490bb7 | |||
| 3db4cd8a62 | |||
| 104f8b798f | |||
| 5ede18a8d3 | |||
| 375a520a14 | |||
| d41364c063 | |||
| a6cd981a51 | |||
| 9660eaafd3 | |||
| 1cc9d3bdd6 | |||
| 6790283ace | |||
| 735e99d891 | |||
| 9b4dae382d | |||
| c1ccf51258 | |||
| 61a28b1d73 | |||
| 2a5e1280f9 | |||
| 72d1374503 | |||
| c791ad4afb | |||
| 1037330324 | |||
| 7acd2edbcc | |||
| 8392fbb64e | |||
| 24dbed8864 | |||
| 4330abdf0b | |||
| 72d8bf883b | |||
| d33c85b5e6 | |||
| f557a0d341 | |||
| 56692bbdc3 | |||
| def03de995 | |||
| ebef968a65 | |||
| d832df6efd | |||
| cc3561777e | |||
| d085f3de73 | |||
| 407ec6b573 | |||
| 2803d4b8da | |||
| 48028076a8 | |||
| e435cf66dc | |||
| 766b7cd178 | |||
| 5d4ac6f523 | |||
| 29869dbb9d | |||
| d07f2a5fa4 | |||
| 708d8866ac | |||
| 2115b1fb11 | |||
| 0e810cea87 | |||
|
|
9f32a02f35 | ||
|
|
9f23c2b381 | ||
| 1f98c8df7c | |||
| da9f84d78a | |||
| 88cc3eb921 | |||
| f04130f902 | |||
| e7e810ea2b | |||
| 1de46a8296 | |||
| 5ece2b2034 | |||
| 460dcfebed | |||
| fb257212b6 | |||
| 1436e35a49 | |||
| a16248f8a4 | |||
| 7b49732405 | |||
| 1b6e02c5bf | |||
| 4d228fd331 | |||
| f6ac9752d1 | |||
| 716344cf68 | |||
| 79e0ef2b7b | |||
| 779b62a12f | |||
| 6427a32c31 | |||
| 1f8d237d40 | |||
| 04732f61c0 | |||
| 63147b2ca3 | |||
| d1d1e54022 | |||
| d175fc497e | |||
| e073764a80 | |||
| 5cf8b587ee | |||
| b715f1c54b | |||
|
|
7513667c6e | ||
|
|
0edf87c95c | ||
| 22a54cd0ed | |||
| d4fbd1b386 | |||
| 87a71fe3b3 | |||
| c7e48ae01d | |||
| cb66f5e903 | |||
| 842f0893b3 | |||
| f5a35a332a | |||
| 0ba0587e17 | |||
| c65eea12a6 | |||
| d6e01a5803 | |||
| 04aeac62f8 | |||
| 9b1b432e7c | |||
| cfafc04628 | |||
| 8450e6afa6 | |||
| 2a4d33e73f | |||
| 8c2a10ebbc | |||
| 2bec2de456 | |||
| 90dea4ed2e | |||
| 06ca1b7a97 | |||
| f9e2cea98e | |||
| 1bbf7027d3 | |||
| 90ec030f8b | |||
| 347c8ed093 | |||
| d987c840c7 | |||
| 88a28c5658 | |||
| 484a82b00b | |||
| 1506b74b01 | |||
| 09b880fff8 | |||
| c6d3742daa | |||
| 917527cbe6 | |||
| faad17470a | |||
| 9f53c2eaa6 | |||
| 6d1d4e9f23 | |||
| 753945228e | |||
| 2f409c7082 | |||
| 728fc5866c | |||
| ace24914f4 | |||
| 8b9bf53e4e | |||
| 453d3963dd | |||
| dff869cec8 | |||
| 17a6b22e55 | |||
| cb66e8a0bd | |||
| 001ce7e4e8 | |||
| 351bbc0fc1 | |||
| 824ffbca2b | |||
| d6082be71f | |||
| 6b807b24e2 | |||
| 3679e8d6eb | |||
| 335996b7d0 | |||
| aa3b102fdd | |||
| 5394e5cc57 | |||
| d2544795f5 | |||
| 06c7664a37 | |||
| 2d09b549af | |||
| 2e807c36e7 | |||
| 0a1a6e73f0 | |||
| fea69319de | |||
| 6519053648 | |||
| ef41110632 | |||
| 30cdeb89b1 | |||
| 512df973f9 | |||
| d3b71fbacc | |||
| e8f13693be | |||
| 6bd05655d6 | |||
| ebe78f0937 | |||
| abae11a30e | |||
| f8ea89a069 | |||
| 496d20d536 | |||
| 369a7801ab | |||
| 0478df3b49 | |||
| d8909b1424 | |||
| ab707c8c2b | |||
| 13d6965558 | |||
| 22cb1f6058 | |||
| 8e560805b2 | |||
| 8475623135 | |||
| e865431411 | |||
| ab8faa487e | |||
| f0e3b6b687 | |||
| 5de20aa19d | |||
| b5ae73fbeb | |||
| 28326b37c7 | |||
| 12a114450c | |||
| 768ed38ace | |||
| 19f7e3fa0e | |||
| 6d65b445dd | |||
| 2867cf0500 | |||
| 07eaebf483 | |||
| 2d116ae6c1 | |||
| ceb43da10b | |||
| 710cd9fa5c | |||
| c6688e47fb | |||
| e04b2545a9 | |||
| 9b4c3aa2ce | |||
| e6561e0a07 | |||
| 9616deb4b6 | |||
| 96d2ea6669 | |||
| d57c43a2b7 | |||
| 40eadaca35 | |||
| 21bcb67a73 | |||
| 890718fdbb | |||
| 1613825b7c | |||
| bcb399dc30 | |||
| cd581d4de9 | |||
| 41ef63ec4a | |||
| 02419bfdcb | |||
| b67fd11fd5 | |||
| 9a7a80223a | |||
| aa85ee53a8 | |||
| ac45f5eec9 | |||
| 84cc4a9208 | |||
| 795a6ca709 | |||
| dab4606e9b | |||
| 1954196ba1 | |||
| fc0edab44c | |||
| a04cf4e6d9 | |||
| e85576e5f0 | |||
| efba72002a | |||
| 4bdcb2cf3c | |||
| 8ff46e554f | |||
| 57db01aeaf | |||
| 0ceb99e121 | |||
| 83b539e7da | |||
| ce6c0a4613 | |||
| cf59aeb4eb | |||
| 17ca13cf00 | |||
|
|
b99225bd3c | ||
| 8f39710cdb | |||
| 7ec6be1969 | |||
| d9ee17c9b1 | |||
| 1543d75339 | |||
| 77eb0d84c7 | |||
| 68ddb3ffcc | |||
| 58ea0249d8 | |||
| eb01bf253e | |||
| c22ce6290b | |||
| 1f7608bf77 | |||
| 16115a455b | |||
| ce680d54f9 | |||
| a90699163f | |||
| 3edf39b4ef | |||
| f5c879b369 | |||
| 2bd9c4a440 | |||
| f494f15922 | |||
| d5df4057e9 | |||
| dc07b7cb02 | |||
| 1bb0bf7d71 | |||
| cf00d54355 | |||
| 1ea7067379 | |||
| 29ad3cc72d | |||
| dfe57bf2c3 | |||
| b37f8d7f7e | |||
| b51b248566 | |||
| 21baf598d7 | |||
| 2c6d706c58 | |||
| 1b1f7578d0 | |||
| 9275425bdf | |||
| 22b1d66c07 | |||
| a3e1d19ac3 | |||
| 762caae49f | |||
| 4e4ee205de | |||
| 9d4e19e606 | |||
| 4d142ec614 | |||
| 80cf746f90 | |||
| 3b83b335be | |||
| 1f0a0e48ff | |||
| 432215e040 | |||
| 1a65386c6b | |||
|
|
757dced302 | ||
|
|
854caafd6b | ||
| 1332107642 | |||
|
|
4825417de8 | ||
| 0001df153b | |||
| f88b38dd39 | |||
| 3f2404ec1c | |||
| 5b822194fa | |||
| 33ea9ee065 | |||
| d742e85332 | |||
|
|
8dfb1fbe2f | ||
| 4114b51d87 | |||
|
|
deec70f14b | ||
| ee0d3f87ec | |||
| 80adfd5dc1 | |||
| e81c846432 | |||
| 03d60d74f1 | |||
| 4f2c5f1bdc | |||
|
|
da03261cbb | ||
|
|
48d551424a | ||
|
|
ab6c3d37d2 | ||
| de2db98324 | |||
|
|
66d1aacbbe | ||
| 57f1b69663 | |||
|
|
cb093dcc2b | ||
| eaf268a10d | |||
|
|
1074e941a6 | ||
|
|
05cb318737 | ||
| 4ce19e25e5 | |||
| 17c152ce8b | |||
|
|
9275074e10 | ||
| e69eaa6296 | |||
| 35bc1efbad | |||
| 9420959023 | |||
| 7a16b5c52f | |||
| 24519e6560 | |||
| 2104b99208 | |||
|
|
cf549c540d | ||
|
|
4b40e3caca | ||
| 1a89c2a1a6 | |||
| b1fd1a3c3c | |||
| 50e895938b | |||
| 18d2b1edbb | |||
|
|
f91ee56d97 | ||
| 41a6a3fc04 | |||
| 1266b16d83 | |||
| 4359a9c58d | |||
| c243a30dec | |||
| f629dca03c | |||
| f2e1219a83 | |||
| e2f27c7746 | |||
| 72ba481180 | |||
| 8d41966d67 | |||
| f2a4ce3b25 | |||
| 0b2290344b | |||
| a7cb44348d | |||
| 384d4b300d | |||
| 19a1ba4289 | |||
| c160f4105d | |||
| 682a6e38d6 | |||
| e4a3a974b5 | |||
| eb38f2af05 | |||
| 7163f8ee80 | |||
| a934373f1e | |||
| ce6ded25f2 | |||
| f707fef65b | |||
| 721e6580c9 | |||
| e20572b28d | |||
| 05a6af8f86 | |||
| d4e84344c3 | |||
| f856060d3d | |||
| 49829f8d3c | |||
| 4cd3ca56e0 | |||
| 0538777ceb | |||
| d3b303c66c | |||
| 98c4e8a699 | |||
| 69b7cbe472 | |||
| 539a21ccec | |||
| eb40a32cc2 | |||
| 440b7ea88d | |||
| 36d273dd5e | |||
| 6bdc1ee51c | |||
| ecfa9a166d | |||
| 199700495c | |||
| 0bafab7f94 | |||
| dd4deff19d | |||
| 8b88573283 | |||
| 2717cf695c | |||
| 385803754f | |||
| 8ba377cf0b | |||
| c21d4dac96 | |||
| a85200338c | |||
| 5d34dd6413 | |||
| bd3daeba75 | |||
|
|
8b2a61e4b2 | ||
| 116f14845e | |||
| 77bf544c59 | |||
| f809d7c15d | |||
| 1f7f3edbba | |||
| 90f6b6a574 | |||
| 3e51ce8381 | |||
| b7df4a5801 | |||
| 980e4a17d9 | |||
| d5248f4c1b | |||
|
|
c169622806 | ||
|
|
cc54014b29 | ||
|
|
c636e0882b | ||
|
|
4120af7e24 | ||
| 09a5789c26 | |||
| fc658f324d | |||
| 2861b0573b | |||
| 2ab4ebc0e3 | |||
| e344b16aa0 | |||
| 30b65350ca | |||
| 0db8c8b1bb | |||
| 9e25584bdc | |||
| ee6d6f145f | |||
| 347f6e918f | |||
| 0fcbd15ab4 | |||
| 6bdac50059 | |||
| f45b2af260 | |||
| d744c1d978 | |||
| 0544761094 | |||
| e645c5e526 | |||
| d75fdd9f80 | |||
| 30f74db0dc | |||
| 2d0069ce18 | |||
| 48b91d1887 | |||
| 32cb3d7453 | |||
|
|
ba3071d62b | ||
|
|
dca80a3fbb | ||
| f99c0839dd | |||
| 8850cfd4a3 | |||
| bec8a14baf | |||
| 1b9c925183 | |||
| 09221bc2e9 | |||
| 98da0c22fc | |||
| cadbb351fb | |||
| 2de237ce83 | |||
| 511fbaa0b0 | |||
| a6d85b6ade | |||
| 5889ac3045 | |||
| c1ba14bbd0 | |||
| 7bdccc7783 | |||
|
|
3a54cba3e5 | ||
| 79463246fb | |||
| cc8ff5eff2 | |||
| 613327b2cc | |||
| 8b31db843c | |||
| fd4fdbe970 | |||
| 89a3ab0b4c | |||
| 0179c2f04f | |||
| 8918e63484 | |||
| 6d1fb80f0f | |||
| 4add78c6d7 | |||
|
|
89c32013bf | ||
|
|
8f7ce54584 | ||
| 65f3114078 | |||
| 00386c7aeb | |||
|
|
3a89394838 | ||
| a3f3a9153a | |||
| cc582da96b | |||
| d5877ffe00 |
@@ -7,7 +7,7 @@ import json
|
||||
sha = os.getenv("GIT_COMMIT")
|
||||
# sha = '48fed26c51a8c42554e45f72f43e49703e04c97f'
|
||||
#get sha from environment
|
||||
url = "https://gitee.com/api/v5/repos/deepin-community-store/spark-store/commits/{}/comments".format(sha)
|
||||
url = "https://gitee.com/api/v5/repos/spark-store-project/spark-store/commits/{}/comments".format(sha)
|
||||
|
||||
token = os.getenv("gitee_token")
|
||||
|
||||
|
||||
13
.github/workflows/program-builder.yml
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
name: Building Program
|
||||
run-name: Building ${{ GITHUB.REPOSITORY }}
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
tags:
|
||||
- "*"
|
||||
|
||||
jobs:
|
||||
call:
|
||||
uses: GXDE-OS/GXDE/.github/workflows/building-deb.yml@master
|
||||
secrets: inherit
|
||||
2
.gitignore
vendored
@@ -52,3 +52,5 @@ debian/files
|
||||
debian/*.substvars
|
||||
debian/spark-store
|
||||
|
||||
.vscode/*
|
||||
src/spark-store
|
||||
|
||||
@@ -32,8 +32,7 @@ stages:
|
||||
- cd ..
|
||||
- rm -rf dtk-old-bundle
|
||||
- 'mk-build-deps --install --tool "apt-get -o Debug::pkgProblemResolver=yes -y" '
|
||||
- sed -i 's/-j$(JOBS)/-j2/g' debian/rules
|
||||
- dpkg-buildpackage -b -us -uc
|
||||
- dpkg-buildpackage -j2 -b -us -uc
|
||||
- cd ..
|
||||
- ls -all
|
||||
- pwd
|
||||
|
||||
@@ -2,7 +2,7 @@ version: '1.0'
|
||||
name: dtk-build-release-tag-20220425
|
||||
displayName: dtk-build-release-tag
|
||||
triggers:
|
||||
trigger: auto
|
||||
trigger: manual
|
||||
push:
|
||||
tags:
|
||||
prefix:
|
||||
@@ -18,23 +18,28 @@ stages:
|
||||
name: execute_by_docker
|
||||
displayName: 基于镜像的DTK构建
|
||||
certificate: ''
|
||||
image: docker.io/debian:buster
|
||||
image: docker.jianmuhub.com/library/debian:buster
|
||||
command:
|
||||
- sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
|
||||
- '# 换源'
|
||||
- apt update
|
||||
- export DEBIAN_FRONTEND=noninteractive
|
||||
- echo "安装git devscripts equivs curl..."
|
||||
- 'apt install git devscripts equivs curl -y '
|
||||
- echo "安装依赖..."
|
||||
- 'apt install libgsettings-qt-dev -y '
|
||||
- 'apt install debhelper git curl fakeroot qtbase5-dev zlib1g-dev qt5-default -y '
|
||||
- git clone https://gitlink.org.cn/shenmo7192/dtk-old-bundle.git
|
||||
- cd dtk-old-bundle
|
||||
- apt install ./*.deb -y
|
||||
- cd ..
|
||||
- rm -rf dtk-old-bundle
|
||||
- ''
|
||||
- 'mk-build-deps --install --tool "apt-get -o Debug::pkgProblemResolver=yes -y" '
|
||||
- sed -i 's/-j$(JOBS)/-j2/g' debian/rules
|
||||
- dpkg-buildpackage -b -us -uc
|
||||
- '#mk-build-deps --install --tool "apt-get -o Debug::pkgProblemResolver=yes -y" '
|
||||
- apt build-dep . -y
|
||||
- strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
|
||||
- uname -a
|
||||
- sed -i 's/dh \$@ --parallel/dh \$@/' debian/rules
|
||||
- '# Gitee的配置太低了'
|
||||
- dpkg-buildpackage -b -us -uc
|
||||
- cd ..
|
||||
- ls -all
|
||||
- pwd
|
||||
|
||||
48
.workflow/pipeline-dtk-build-aarch64.yml
Normal file
@@ -0,0 +1,48 @@
|
||||
version: '1.0'
|
||||
name: pipeline-dtk-build-aarch64
|
||||
displayName: dtk-build-aarch64
|
||||
triggers:
|
||||
trigger: manual
|
||||
push:
|
||||
tags:
|
||||
prefix:
|
||||
- ''
|
||||
stages:
|
||||
- name: stage-2c12cce1
|
||||
displayName: 编译
|
||||
strategy: naturally
|
||||
trigger: auto
|
||||
executor: []
|
||||
steps:
|
||||
- step: execute@docker
|
||||
name: execute_by_docker
|
||||
displayName: 基于镜像的脚本执行
|
||||
certificate: ''
|
||||
image: docker.io/debian:buster
|
||||
command:
|
||||
- '# 请在此输入您想执行的脚本'
|
||||
- sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
|
||||
- apt update
|
||||
- export DEBIAN_FRONTEND=noninteractive
|
||||
- echo "安装wget qemu-user-static"
|
||||
- apt install git wget qemu-user-static xz-utils binfmt-support -y
|
||||
- mkdir ../spark-store-git
|
||||
- mv * ../spark-store-git
|
||||
- git clone https://gitlink.org.cn/shenmo7192/debian-container-aarch64.git
|
||||
- mv debian-container-aarch64/DEBIANARM.tar.xz .
|
||||
- rm -rf debian-container-aarch64
|
||||
- tar -xf DEBIANARM.tar.xz
|
||||
- mkdir -p DEBIAN/root/build-spark
|
||||
- mv ../spark-store-git DEBIAN/root/build-spark/spark-store
|
||||
- wget https://gitee.com/spark-store-project/repo_auto_update_script/raw/master/spark-build-aarch64.sh && mv spark-build-aarch64.sh DEBIAN/root
|
||||
- mv /usr/bin/qemu-aarch64-static DEBIAN/
|
||||
- chroot DEBIAN /qemu-aarch64-static /bin/bash /root/spark-build-aarch64.sh
|
||||
- ''
|
||||
- ''
|
||||
artifacts:
|
||||
- name: BUILD_ARTIFACT
|
||||
path:
|
||||
- ./DEBIAN/root/build-spark/target
|
||||
notify: []
|
||||
strategy:
|
||||
retry: '0'
|
||||
@@ -1,328 +0,0 @@
|
||||
|
||||
#### 说明
|
||||
|
||||
当前服务器线路列表(项目中包含):
|
||||
|
||||
```
|
||||
https://d.store.deepinos.org.cn/
|
||||
https://store.deepinos.org.cn/
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# 星火应用商店文档
|
||||
|
||||
# 目录结构
|
||||
几个目录结构
|
||||
```
|
||||
/
|
||||
/icons 图标文件夹
|
||||
/tags 首页图标
|
||||
/tras 多语言翻译
|
||||
```
|
||||
|
||||
主要的文件分析
|
||||
```js
|
||||
spark-store.pro Qt工程配置文件
|
||||
ssinstall 调用包安装器的脚本
|
||||
icons.qrc 图标资源文件
|
||||
main.cpp 入口文件
|
||||
widget.h widget.cpp widget.ui 主要窗口控件
|
||||
downloadlist.h downloadlist.cpp downloadlist.ui 单个软件的下载安装展示控件
|
||||
progressload.h progressload.cpp 网页加载显示? 得在deepin上编译运行才能搞清楚
|
||||
workerthreads.h workerthreads.cpp 应用信息加载线程
|
||||
image_show.h image_show.cpp 应用页面截图预览控件
|
||||
big_image.h big_image.cpp 大图查看控件
|
||||
```
|
||||
|
||||
# 使用的开源库及第三方工具
|
||||
* GDebi 一个 Ubuntu 软件中心的轻量级替代品 https://linux.cn/article-4982-1.html
|
||||
* libnotify 系统通知 https://developer.gnome.org/libnotify/unstable/
|
||||
|
||||
|
||||
# 源码分析
|
||||
## 应用的组成部分
|
||||
左侧应用分类菜单
|
||||
主窗口的下拉菜单
|
||||
应用列表页面
|
||||
应用详情页面
|
||||
应用首页,有几个链接跳转
|
||||
商店设置页面
|
||||
下载列表页面
|
||||
|
||||
## 应用初始化,及主控件加载
|
||||
初始化 `DApplication` 进入事件循环。
|
||||
设置关于我们弹窗 `DAboutDialog`。
|
||||
主控件 Widget 根据不同屏幕大小自适应。
|
||||
首页打开webview页面,如果传入了`spk://`参数,会打开应用详情页。
|
||||
```cpp
|
||||
// main.cpp
|
||||
QString arg1=argv[1];
|
||||
if(arg1.left(6)=="spk://"){
|
||||
w.openUrl(QUrl(argv[1]));
|
||||
}
|
||||
|
||||
// widget.cpp
|
||||
void Widget::openUrl(QUrl u)
|
||||
{
|
||||
QString app=serverUrl + "store"+u.path()+"/app.json";
|
||||
ui->webEngineView->setUrl(app); // 会触发 webEngineView 的
|
||||
}
|
||||
|
||||
```
|
||||
## Tags处理方式
|
||||
|
||||
**Tags处理方式**
|
||||
```cpp
|
||||
// widget.cpp
|
||||
QString tags=json["Tags"].toString(); //Read the Tags
|
||||
QStringList tagList=tags.split(";");
|
||||
for (int i=0;i<tagList.size();i++) {
|
||||
if(tagList[i]=="community")
|
||||
ui->tag_community->show();//Tags icon shows like this
|
||||
if(tagList[i]=="ubuntu")
|
||||
ui->tag_ubuntu->show();
|
||||
if(tagList[i]=="deepin")
|
||||
ui->tag_deepin->show();
|
||||
if(tagList[i]=="uos")
|
||||
ui->tag_uos->show();
|
||||
if(tagList[i]=="dtk5")
|
||||
ui->tag_dtk5->show();
|
||||
if(tagList[i]=="dwine2")
|
||||
ui->tag_dwine2->show();
|
||||
if(tagList[i]=="dwine5")
|
||||
ui->tag_dwine5->show();
|
||||
if(tagList[i]=="a2d")
|
||||
ui->tag_a2d->show();
|
||||
}
|
||||
```
|
||||
|
||||
**Widget 初始化**
|
||||
```cpp
|
||||
void Widget::initConfig()
|
||||
{
|
||||
...
|
||||
// 读取服务器URL并初始化菜单项的链接
|
||||
QSettings readConfig(QDir::homePath()+"/.config/spark-store/config.ini",QSettings::IniFormat);
|
||||
if(readConfig.value("server/choose").toString()!=""){
|
||||
ui->comboBox_server->setCurrentText(readConfig.value("server/choose").toString());
|
||||
appinfoLoadThread.setServer(serverUrl=readConfig.value("server/choose").toString());
|
||||
}else {
|
||||
appinfoLoadThread.setServer(serverUrl="http://sucdn.jerrywang.top/"); // 默认URL
|
||||
}
|
||||
configCanSave=true; // 防止触发保存配置信号
|
||||
menuUrl[0]=serverUrl + "store/#/"; // 首页
|
||||
// 下面是各个应用分类页面,直接加载的webview的
|
||||
// 每个连接对应一个左侧的菜单项,在构造函数用连接到 chooseLeftMenu 槽函数
|
||||
menuUrl[1]=serverUrl + "store/#/network";
|
||||
...
|
||||
menuUrl[12]=serverUrl + "store/#/others";
|
||||
...
|
||||
ui->webfoot->hide();
|
||||
|
||||
//初始化首页
|
||||
ui->webEngineView->setUrl(menuUrl[0]);
|
||||
}
|
||||
/**
|
||||
* 菜单切换逻辑
|
||||
*
|
||||
*/
|
||||
void Widget::chooseLeftMenu(int index)
|
||||
{
|
||||
nowMenu=index;
|
||||
updateUI();
|
||||
left_list[index]->setStyleSheet("color:#FFFFFF;background-color:"+main_color.name()+";border-radius:8;border:0px");
|
||||
// index <=12 加载某个分类的应用列表的webviejw
|
||||
// index == 13 加载下载列表页面
|
||||
if(index<=12){
|
||||
if(themeIsDark){
|
||||
darkurl = 夜间模式的URL
|
||||
ui->webEngineView->setUrl(darkurl);
|
||||
}else {
|
||||
ui->webEngineView->setUrl(menuUrl[index]);
|
||||
}
|
||||
ui->stackedWidget->setCurrentIndex(0);
|
||||
}else if (index==13) {
|
||||
ui->stackedWidget->setCurrentIndex(1);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 应用下载安装卸载分析
|
||||
**应用详情页面加载**
|
||||
```cpp
|
||||
/**
|
||||
* 加载单个应用的信息
|
||||
*/
|
||||
void Widget::on_webEngineView_urlChanged(const QUrl &arg1)
|
||||
{
|
||||
//分析出服务器中的分类名称
|
||||
...
|
||||
//如果是app.json就打开详情页
|
||||
if(arg1.path().right(8)=="app.json"){
|
||||
...
|
||||
// 读取相应的应用信息
|
||||
appinfoLoadThread.requestInterruption();
|
||||
appinfoLoadThread.wait(100);
|
||||
appinfoLoadThread.setUrl(arg1);
|
||||
appinfoLoadThread.start();
|
||||
}
|
||||
}
|
||||
// 设置详情页的APP信息
|
||||
SpkAppInfoLoaderThread::requestSetAppInformation() -> Widget::sltAppinfoDetails()
|
||||
// 设置详情页的APP图标
|
||||
SpkAppInfoLoaderThread::finishedIconLoad() -> Widget::sltAppinfoIcon()
|
||||
// 设置详情页的APP截图
|
||||
SpkAppInfoLoaderThread::finishedScreenshotLoad() -> Widget::sltAppinfoScreenshot()
|
||||
|
||||
// 下载APP详情信息线程
|
||||
void SpkAppInfoLoaderThread::run()
|
||||
{
|
||||
QProcess get_json;
|
||||
get_json.start("curl -o app.json " + targetUrl.toString());
|
||||
QFile app_json("app.json");
|
||||
读取 app.json 里的信息,提取应用名、描述、图标、截图
|
||||
处理完毕后发射相应的信号
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
**应用下载**
|
||||
Widget::on_pushButton_download_clicked() 是点击下载的安装方法。
|
||||
最终使用的是 `QNetwrokAccessManager` 进行GET请求获取数据写入文件。
|
||||
```cpp
|
||||
void Widget::on_pushButton_download_clicked()
|
||||
{
|
||||
if(!isBusy){
|
||||
file = new QFile(fileName);
|
||||
...
|
||||
nowDownload+=1;
|
||||
startRequest(urList.at(nowDownload-1)); // 进行链接请求
|
||||
}
|
||||
}
|
||||
void Widget::startRequest(QUrl url)
|
||||
{
|
||||
reply = manager->get(QNetworkRequest(url));
|
||||
// 请求响应完成,关闭文件,清理下载队列
|
||||
connect(reply,SIGNAL(finished()),this,SLOT(httpFinished()));
|
||||
// 接收应用下载数据
|
||||
connect(reply,SIGNAL(readyRead()),this,SLOT(httpReadyRead()));
|
||||
// 更新应用下载进度
|
||||
connect(reply,SIGNAL(downloadProgress(qint64,qint64)),this,SLOT(updateDataReadProgress(qint64,qint64)));
|
||||
}
|
||||
```
|
||||
|
||||
使用 QSettings 来读取配置,更换服务源
|
||||
```cpp
|
||||
void Widget::on_comboBox_server_currentIndexChanged(const QString &arg1)
|
||||
{
|
||||
appinfoLoadThread.setServer(arg1); // 服务器信息更新
|
||||
if(configCanSave){
|
||||
ui->label_setting1->show();
|
||||
QSettings *setConfig=new QSettings(QDir::homePath()+"/.config/spark-store/config.ini",QSettings::IniFormat);
|
||||
setConfig->setValue("server/choose",arg1);
|
||||
}
|
||||
}
|
||||
```
|
||||
使用 `QProcess` 来调用各种小文件下载、包安装卸载的命令。
|
||||
|
||||
**应用安装**
|
||||
```cpp
|
||||
void Widget::httpFinished() // 完成下载
|
||||
{
|
||||
...清理资源
|
||||
download_list[nowDownload-1].readyInstall();
|
||||
download_list[nowDownload-1].free=true;
|
||||
if(nowDownload<allDownload){ // 如果有排队则下载下一个
|
||||
...队列的下一个下载请求
|
||||
}
|
||||
}
|
||||
void downloadlist::readyInstall()
|
||||
{
|
||||
...将安装按钮设置为允许点击
|
||||
ui->pushButton_install->setEnabled(true);
|
||||
ui->pushButton_install->show();
|
||||
ui->pushButton_2->hide();
|
||||
Widget::sendNotification(tr("Finished downloading %1, awaiting to install").arg(ui->label->text()), 5000,
|
||||
"/tmp/spark-store/icon_"+QString::number(num).toUtf8()+".png");
|
||||
}
|
||||
void downloadlist::on_pushButton_install_clicked()
|
||||
{
|
||||
//弹出菜单
|
||||
menu_install->exec(cursor().pos());
|
||||
}
|
||||
在 downloadlist 构造函数里将三种安装方式的按钮按条件放入了 menu_install 菜单里
|
||||
用户点击时,downloadlist::install() 方法
|
||||
三种安装方式为: gdebi, dpkg, deepin-deb-installer
|
||||
void downloadlist::install(int t)
|
||||
{
|
||||
QtConcurrent::run([=](){
|
||||
QProcess installer;
|
||||
installer.start("pkexec gdebi -n /tmp/spark-store/"+ui->label_filename->text().toUtf8());
|
||||
installer.start("pkexec ssinstall /tmp/spark-store/"+ui->label_filename->text().toUtf8());
|
||||
installer.start("deepin-deb-installer /tmp/spark-store/"+ui->label_filename->text().toUtf8());
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
**应用卸载**
|
||||
```cpp
|
||||
void Widget::on_pushButton_uninstall_clicked()
|
||||
{
|
||||
QtConcurrent::run([=](){
|
||||
uninstall.start("pkexec apt purge -y "+pkgName);
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
**仓库源更新**
|
||||
```cpp
|
||||
// 更新源列表
|
||||
void Widget::on_pushButton_updateServer_clicked()
|
||||
{
|
||||
QtConcurrent::run([=](){
|
||||
...
|
||||
QFile::remove(QDir::homePath().toUtf8()+"/.config/spark-store/server.list");
|
||||
system("curl -o "+QDir::homePath().toUtf8()+"/.config/spark-store/server.list http://dcstore.shenmo.tech/store/server.list");
|
||||
server.open(QDir::homePath().toUtf8()+"/.config/spark-store/server.list",std::ios::in);
|
||||
...
|
||||
while (getline(server,lineTmp)) {
|
||||
ui->comboBox_server->addItem(QString::fromStdString(lineTmp));
|
||||
}
|
||||
});
|
||||
}
|
||||
// 更新星火商店apt源
|
||||
void Widget::on_pushButton_updateApt_clicked()
|
||||
{
|
||||
QtConcurrent::run([=](){
|
||||
读取 comboBox_server 的内容,写入 /tmp/spark-store/sparkstore.list 文件
|
||||
创建bash脚本,内容为将 sparkstore.list 移动到 /etc/apt/sources.list.d/ 目录下
|
||||
使用QProcess 执行命令 pkexec update.sh
|
||||
}):
|
||||
}
|
||||
```
|
||||
|
||||
## 发送系统通知
|
||||
```cpp
|
||||
#include <libnotify/notify.h>
|
||||
|
||||
static NotifyNotification *_notify = nullptr; // 初始化
|
||||
notify_init(tr("Spark\\ Store").toLocal8Bit()); // 构造函数初始化
|
||||
notify_uninit(); // 析构函数调用
|
||||
|
||||
void Widget::sendNotification(const QString &message, const int msTimeout, const QString &icon)
|
||||
{
|
||||
if(_notify == nullptr)
|
||||
{
|
||||
_notify = notify_notification_new(tr("Spark\\ Store").toLocal8Bit(), message.toLocal8Bit(), icon.toLocal8Bit());
|
||||
notify_notification_set_timeout(_notify, msTimeout);
|
||||
}
|
||||
else
|
||||
notify_notification_update(_notify, tr("Spark\\ Store").toLocal8Bit(), message.toLocal8Bit(), icon.toLocal8Bit());
|
||||
|
||||
notify_notification_show(_notify, nullptr);
|
||||
}
|
||||
```
|
||||
48
DOCS/json-api-doc.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# 基本格式
|
||||
0. 应用信息
|
||||
|
||||
例子:https://cdn.d.store.deepinos.org.cn/store/tools/spark-store/app.json
|
||||
|
||||
```json
|
||||
{
|
||||
"Name": "星火应用商店",
|
||||
"Version": "4.2.7.1",
|
||||
"Filename": "spark-store_4.2.7.1_amd64.deb",
|
||||
"Torrent_address": "spark-store_4.2.7.1_amd64.deb.torrent",
|
||||
"Pkgname": "spark-store",
|
||||
"Author": "shenmo <shenmo@spark-app.store>",
|
||||
"Contributor": "shenmo <jifengshenmo@outlook.com>",
|
||||
"Website": "https://www.spark-app.store/",
|
||||
"Update": "2023-09-01 23:22:23",
|
||||
"Size": "590.5 KB",
|
||||
"More": "* 修复:aptss加锁失败现在会正常报错\n * 新增:在aptss的特定操作时添加了提示\n * 新增:在aptss提示加粗\n * 调整:ssinstall验证支持使用cdn.d.获取",
|
||||
"Tags": "community;ubuntu;deepin;uos;dtk5",
|
||||
"img_urls": "[\"https://examine-spark.oss-cn-shanghai.aliyuncs.com/images/2023/09/01/411c32fd691544bb985ecba87d151ea0.png\",\"https://examine-spark.oss-cn-shanghai.aliyuncs.com/images/2023/09/01/f44b3c2242c045e28f1161980d805e0d.png\",\"https://examine-spark.oss-cn-shanghai.aliyuncs.com/images/2023/09/01/00263ba857894667bd99240558bec69c.png\",\"https://examine-spark.oss-cn-shanghai.aliyuncs.com/images/2023/09/01/6fd248ad9eea4ef18c9c4acc2a9d372d.png\"]",
|
||||
"icons": "https://examine-spark.oss-cn-shanghai.aliyuncs.com/icons/2023/09/01/a88dd18cc1734396a02e7e3c6be59718.png"
|
||||
}
|
||||
```
|
||||
|
||||
*注意:img_urls和icons的信息不保证有效!大部分是有效的,少部分app.json可能缺失此项目!*
|
||||
|
||||
**对于icon和截图的获取需求请参考第三点**
|
||||
|
||||
1. 对于某分类下的所有应用信息
|
||||
`{SOURCE_URL}/{ARCH}/{CATOGARY}/applist.json`
|
||||
说明:SOURCE_URL:线路链接,目前推荐 https://cdn.d.store.deepinos.org.cn,你也可以使用其他的星火线路
|
||||
ARCH:架构文件夹 x86是store或amd64-store,arm是aarch64-store。特别的,如果你使用非https://cdn.d.store.deepinos.org.cn的线路,你可能会发现amd64-store会返回404,因为不是所有的服务器都支持软连接
|
||||
CATOGARY:分类目录。参考 https://gitee.com/spark-store-project/spark-store/blob/dev/DOCS/spk-doc.md 中 store 直达的对应关系
|
||||
|
||||
例子:https://cdn.d.store.deepinos.org.cn/aarch64-store/tools/applist.json
|
||||
|
||||
2. 对于单个应用的应用信息
|
||||
`{SOURCE_URL}/{ARCH}/{CATOGARY}/{Package Name}/app.json`
|
||||
Package Name是包名。可从上级的applist.json读取
|
||||
|
||||
例子:https://cdn.d.store.deepinos.org.cn/store/tools/spark-store/app.json
|
||||
|
||||
3. 对应用截图和icon的获取
|
||||
|
||||
`{SOURCE_URL}/{ARCH}/{CATOGARY}/{Package Name}/icon.png`
|
||||
`{SOURCE_URL}/{ARCH}/{CATOGARY}/{Package Name}/screen_n.png`(n=1-5)(至少为1,不是所有的都有到5. 404是正常的)
|
||||
|
||||
|
||||
@@ -1,25 +1,34 @@
|
||||
#### 调用参数(spk规则)
|
||||
|
||||
参数只有一个Url,该url应当遵循这种格式:`spk://<任意合法字符>/web分类/包名`
|
||||
* store直达
|
||||
|
||||
该url应当遵循这种格式:`spk://store/web分类/包名`
|
||||
|
||||
|
||||
|
||||
例如:
|
||||
|
||||
[spk://abcdefg/games/store.spark-app.hmcl](spk://abcdefg/games/store.spark-app.hmcl)
|
||||
[spk://store/games/store.spark-app.hmcl](spk://store/games/store.spark-app.hmcl)
|
||||
|
||||
|
||||
可选的web分类:
|
||||
|
||||
| 分类名称 | web分类 |
|
||||
| -------- | -------------- |
|
||||
| 网络应用 | network |
|
||||
| 社交沟通 | chat |
|
||||
| 音乐欣赏 | music |
|
||||
| 视频播放 | video |
|
||||
| 图形图像 | graphics |
|
||||
| 游戏娱乐 | games |
|
||||
| 办公学习 | office |
|
||||
| 阅读翻译 | reading |
|
||||
| 编程开发 | development |
|
||||
| 系统工具 | tools |
|
||||
| 主题美化 | beautify |
|
||||
| 其他应用 | others |
|
||||
| 网络 | network |
|
||||
| 社交 | chat |
|
||||
| 音乐 | music |
|
||||
| 视频 | video |
|
||||
| 图像 | image_graphics |
|
||||
| 游戏 | games |
|
||||
| 办公 | office |
|
||||
| 阅读 | reading |
|
||||
| 开发 | development |
|
||||
| 工具 | tools |
|
||||
| 主题 | themes |
|
||||
| 其他 | others |
|
||||
|
||||
|
||||
* search搜索
|
||||
|
||||
spk://search/pkgname
|
||||
|
||||
7
DOCS/内网部署.md
Normal file
@@ -0,0 +1,7 @@
|
||||
需要修改的内容:商店默认源位置,aptss获取apt-fast.conf和sparkstore.list的地址,ssinstall做安装检查的源位置
|
||||
|
||||
服务器使用update.sh进行同步。
|
||||
|
||||
为方便使用(其实是早期屎山使然),请将仓库放置于 `/home/ftp/spark-store`
|
||||
|
||||
仓库管理相关代码请移步 [这里](https://gitee.com/spark-store-project/repo_auto_update_script),update.sh请联系 @shenmo 获取
|
||||
41
EULA
Normal file
@@ -0,0 +1,41 @@
|
||||
星火开源软件协议(Spark Opensource LICENSE)
|
||||
|
||||
版权所有 (C) 2023 星火社区
|
||||
|
||||
根据 GNU 通用公共许可证第三版(GPL v3),本软件是自由软件,您可以修改和再发布它。但是,为了维护原作者的权益并保护社区用户的权益,请遵守以下条款:
|
||||
|
||||
1. 对本仓库下的所有文件生效:本许可证适用于本仓库(或项目)下的所有文件。任何使用、修改或再发布本软件的个人或组织都必须遵守本许可证。
|
||||
2. 版权声明和许可证文件:您不得移除、隐藏或更改本软件中包含的原作者的版权声明和许可证文件。保留原作者的权益信息对于维护开源软件生态系统至关重要。
|
||||
3. 版本标注: 如果您对本软件做出修改并再发布,您必须在醒目位置标注此版本并非星火社区官方提供。这样可以避免误导使用者认为该软件为星火社区官方提供的版本。此软件仅授权用于个人非盈利用途,任何将其用于商业目的或在盈利性组织中使用的行为均需事先获得星火社区的书面许可。
|
||||
4. 商标使用:您不得在再发布版本中使用“星火应用商店”、“Spark Store”或星火应用商店的Logo等可能误导使用者此软件由星火社区官方提供的信息。
|
||||
5. 服务条款:您使用星火商店软件的行为将被视为您同意星火在不侵犯您隐私的前提下搜集版本、日志等信息,以便于星火社区更好地为您提供服务。
|
||||
6. 仓库版权条款:为了更好的提供持续性服务,星火仅对个人用户免费开放服务仓库,如您或您的组织需要提供商业服务或者您的组织为盈利性组织,请联系星火社区获取商业授权。
|
||||
7. 禁止恶意行为和批量爬取: 用户或组织在使用本软件时,严禁进行任何形式的恶意行为,包括但不限于恶意攻击、滥用、破坏、批量爬取软件仓库等。恶意行为的定义由星火社区自行判断,违反者将被追究法律责任。
|
||||
8. 分发与再分发权利: 星火社区保留对其制作的软件包的分发权利。未经明确授权,禁止任何个人或组织将星火社区软件包用于商业目的或在未获得星火社区许可的情况下进行再分发。此条款旨在确保开源精神的同时,维护星火社区的知识产权。
|
||||
9. 商业应用限制:您不得使用本软件的代码开发商业应用,也不得在商业应用中使用本软件的代码,除非获得星火社区和火穗(沈阳)计算机软件开发有限公司的书面许可。
|
||||
10. 其他条款:除上述约定外,若您使用了星火商店的主程序或其部分代码,您应遵守 GPL v3 的所有其他条款和要求。若本协议条款的内容与GPL V3中的内容不同的,以本协议条款为准
|
||||
11. 其他约定:本许可以简体中文版本为最准确释义
|
||||
|
||||
GPLV3许可证的完整文本可以在以下链接找到:https://www.gnu.org/licenses/gpl-3.0.html
|
||||
|
||||
---------------------------------------------------------------------------------------------------------------------------------
|
||||
|
||||
Spark Opensource LICENSE
|
||||
|
||||
Copyright (C) 2023 The Spark Community
|
||||
|
||||
This software is free software; you can modify and redistribute it under the terms of the GNU General Public License version 3 (GPL v3). However, to protect the rights of the original authors and the interests of the community users, please adhere to the following terms:
|
||||
|
||||
1. Applicability to all files in this repository: This license applies to all files in this repository (or project). Any individuals or organizations that use, modify, or redistribute this software must comply with this license.
|
||||
2. Copyright notice and license files: You must not remove, hide, or modify the copyright notice and license files of the original authors included in this software. Preserving the rights information of the original authors is essential for maintaining the open-source software ecosystem.
|
||||
3. Version annotation: If you modify and redistribute this software, you must mark in a prominent position that this version is not officially provided by the Spark community. This avoids misleading users into thinking that the software is an official version provided by the Spark community. This software is licensed for personal, non-profit use only, and any use of it for commercial purposes or in for-profit organizations requires the prior written permission of the Spark Community.
|
||||
4. Trademark usage: You are not allowed to use terms such as "Spark App Store," "Spark Store," or the logo of Spark App Store in redistributed versions, as they may mislead users into believing that the software is provided by the official Spark community.
|
||||
5. Terms of Service: Your use of the software of Spark Store will be deemed as your consent to collect version, log and other information on the premise of not violating your privacy, so as to facilitate the Spark community to provide you with better services.
|
||||
6. Warehouse copyright terms: In order to better provide continuous services, Spark is only free for individual users to open the service warehouse, if you or your organization needs to provide commercial services or your organization is a for-profit organization, please contact Spark community to obtain commercial authorization.
|
||||
7. Prohibited malicious behavior and mass crawling: Users or organizations are strictly prohibited to engage in any form of malicious behavior when using the software, including but not limited to malicious attacks, abuse, destruction, and mass crawling of software warehouses. The definition of malicious behavior is judged by the Spark community, and violators will be held legally responsible.
|
||||
8. Distribution and redistribution rights: Spark Community reserves the right to distribute the software packages it produces. Any person or organization is prohibited from using the Spark Community software package for commercial purposes or redistributing it without the express authorization of the Spark Community. This clause is intended to ensure the spirit of open source while safeguarding the intellectual property rights of the Spark community.
|
||||
9. Business Application Restriction: You are not permitted to utilize the code of this software for developing commercial applications, nor are you allowed to integrate the code of this software into commercial applications without obtaining written consent from both the Spark Community and Flamescion (Shenyang) Computer Software Development Co., Ltd.
|
||||
10. Other Terms: In addition to the above provisions, if you use the main program or any part of the code of Spark Store, you must comply with all other terms and requirements of GPL v3. In case of any inconsistency between the terms of this agreement and those of GPL v3, the terms of this agreement shall prevail.
|
||||
11. Additional Agreements: This license shall be interpreted most accurately in its Simplified Chinese version.
|
||||
|
||||
You can find the full text of GPLV3 license at: https://www.gnu.org/licenses/gpl-3.0.html
|
||||
91
FAQ.md
Normal file
@@ -0,0 +1,91 @@
|
||||
# FAQ
|
||||
## Spark App Store FAQ and Support Guide
|
||||
|
||||
### Introduction
|
||||
The Spark App Store is an application store aimed at Linux users and supports multiple Linux distributions. Below are some commonly asked questions and solutions. Please note that this document is primarily intended for ordinary users who are not familiar with Linux and the APT package management system.
|
||||
|
||||
---
|
||||
|
||||
### Communication and Feedback
|
||||
**Q: Where can I join the community group?**
|
||||
**A:** You can click [here](https://bbs.spark-app.store/) to enter the main communication platform of the Spark Store.
|
||||
> ⚠️ If the above link doesn't work, you can also join our QQ groups as an alternative. The group numbers are 872690351 and 865927727. We also offer forums for communication.
|
||||
|
||||
#### Differences Between arm64 and amd64
|
||||
|
||||
arm64
|
||||
|
||||
* Full Name: Advanced RISC Machine 64-bit
|
||||
* Main Use: Primarily used in mobile devices, embedded systems, and some new servers and desktop computers.
|
||||
* Advantages: Low power consumption, high efficiency, suitable for battery-driven and heat-sensitive devices.
|
||||
* Main Manufacturers: Apple, Qualcomm, HiSilicon, Phytium, etc.
|
||||
|
||||
amd64
|
||||
|
||||
* Full Name: AMD 64-bit, also known as x86_64
|
||||
* Main Use: Primarily used in desktop computers, laptops, and servers.
|
||||
* Advantages: High performance, suitable for computation-intensive applications.
|
||||
* Main Manufacturers: Intel and AMD.
|
||||
* The main differences between the two are in the instruction sets and application scenarios. amd64 is usually used for high-performance computers and servers, while arm64 is more commonly used in power-sensitive settings.
|
||||
|
||||
#### How to Check:
|
||||
|
||||
Linux:
|
||||
|
||||
- Open the terminal.
|
||||
- Type `uname -m` or `arch` and press Enter.
|
||||
- You will see your processor architecture (possibly x86_64, aarch64, etc.).
|
||||
|
||||
---
|
||||
|
||||
### Domestic Architecture Support
|
||||
**Q: I use a domestic chip architecture, how can I get applications?**
|
||||
**A:** Currently, Spark Store supports **arm** architecture for domestic chips. You can download deb packages suitable for arm64 architecture.
|
||||
> ⚠️ Please note that this is experimental support. If you encounter any issues, please provide feedback via Spark's communication platform, QQ group, or forums.
|
||||
|
||||
---
|
||||
|
||||
### Dependency Issues
|
||||
**Q: I get errors when installing dependencies**
|
||||
**A:** If you are using UOS or deepin, please do not install the dependency packages. For Kali Linux/Kdeneon etc., temporary support is not available, please compile and install yourself.
|
||||
> 💡 If errors occur, try running `sudo apt update` before attempting the installation again. If the issue persists, refer to the first question and seek help on the community platform.
|
||||
|
||||
---
|
||||
|
||||
### Submission and App Updates
|
||||
**Q: Where can I submit applications?**
|
||||
**A:** You can find the "Submit Application" option in the upper-right corner menu of the app store interface.
|
||||
|
||||
---
|
||||
|
||||
### Support for Non-deepin/UOS Users
|
||||
**Q: I'm not a deepin/UOS user; can I use the Spark App Store?**
|
||||
**A:** Yes, you can directly install if you're using Ubuntu 22.04. For Ubuntu 20.04/Debian10/Debian11, please install the dependencies first.
|
||||
|
||||
---
|
||||
|
||||
### Installation Methods
|
||||
**Q: Can I use dpkg -i for installation?**
|
||||
**A:** No! Use `sudo apt install ./xxxx.deb` to install, or use graphical installers like gdebi.
|
||||
> ⚠️ Using dpkg directly will not handle software dependencies, which is a common mistake.
|
||||
|
||||
---
|
||||
|
||||
### System Updates
|
||||
**Q: Will the Spark Store affect normal system updates?**
|
||||
**A:** No, the Spark Store has separated its application sources from system sources and will not affect regular system updates.
|
||||
|
||||
---
|
||||
|
||||
### Reporting Issues and Removing Apps
|
||||
**Q: Some apps are outdated or inactive, and I want them removed**
|
||||
**A:** You can report issues [here](https://gitee.com/spark-store-project/software_-issue).
|
||||
|
||||
---
|
||||
|
||||
### Installing Spark App Store
|
||||
If you wish to install the Spark App Store, please visit the [Release page](https://gitee.com/spark-store-project/spark-store/releases), find the latest version, and choose the package suitable for your current system.
|
||||
|
||||
> ⚠️ Special Note: If you are using Debian10/Debian11 or Ubuntu 20.04, you may need to download additional dependency packages. After downloading, unzip multiple times until you see the software user guide. For operating systems later than Ubuntu 22.04, you do not need to install dependency packages. Just follow the steps above to install the main program directly.
|
||||
|
||||
---
|
||||
90
FAQ.zh.md
Normal file
@@ -0,0 +1,90 @@
|
||||
# FAQ
|
||||
## 星火应用商店FAQ与支持指南
|
||||
|
||||
### 简介
|
||||
星火应用商店是一个面向 Linux 用户的应用商店,支持多种不同的 Linux 发行版。以下是一些常见问题及解决方案。请注意,该文档主要面向对 Linux 和 APT 软件包管理系统不熟悉的普通用户。
|
||||
|
||||
---
|
||||
|
||||
### 交流与反馈
|
||||
**Q: 在哪进交流群?**
|
||||
**A:** 你可以点击[这里](https://bbs.spark-app.store/)进入星火商店的主交流平台。
|
||||
> ⚠️ 如果上面的链接无法使用,你还可以加入我们的 QQ 群作为备选方案,群号是 872690351 和 865927727。我们还提供论坛作为交流平台。
|
||||
|
||||
arm64与amd64的区别
|
||||
|
||||
arm64
|
||||
|
||||
* 全称: Advanced RISC Machine 64-bit
|
||||
* 主要用途: 主要应用于移动设备、嵌入式系统以及一些新型的服务器和桌面计算机。
|
||||
* 优势: 低功耗、高效率,适合用在电池驱动和热敏感的设备。
|
||||
* 主要生产商: 苹果、高通、海思、飞腾等。
|
||||
|
||||
amd64
|
||||
|
||||
* 全称: AMD 64-bit, 也被称为 x86_64
|
||||
* 主要用途: 主要应用于桌面计算机、笔记本以及服务器。
|
||||
* 优势: 高性能,适用于计算密集型应用。
|
||||
* 主要生产商: Intel和AMD。
|
||||
* 两者最主要的不同在于指令集和应用场景。amd64通常用于高性能需求的计算机和服务器,而arm64则更多应用于功耗要求更严格的场合。
|
||||
|
||||
查看方法:
|
||||
|
||||
Linux:
|
||||
|
||||
- 打开终端。
|
||||
- 输入 uname -m 或 arch 并按回车。
|
||||
- 你将看到你的处理器架构(可能是 x86_64, aarch64 等)。
|
||||
---
|
||||
|
||||
### 国产架构支持
|
||||
**Q: 我是国产架构,怎么获取应用?**
|
||||
**A:** 目前,星火商店支持**arm**架构的国产芯片。你可以下载适用于 arm64 架构的deb包(软件安装包)。
|
||||
> ⚠️ 请注意,这是实验性的支持。如果遇到问题,请在星火交流平台、QQ群或论坛向我们反馈。
|
||||
|
||||
---
|
||||
|
||||
### 安装依赖问题
|
||||
**Q: 安装依赖包出现错误**
|
||||
**A:** 如果你使用UOS或deepin,请不要安装依赖包。对于Kali Linux/Kdeneon等,暂时不支持,请自行编译安装。
|
||||
> 💡 出现错误时,尝试运行 `sudo apt update` 后再尝试安装。如果问题仍然存在,请参考第一条,进入交流平台寻求帮助。
|
||||
|
||||
---
|
||||
|
||||
### 投稿与应用更新
|
||||
**Q: 在哪里投稿?**
|
||||
**A:** 你可以在应用商店界面的右上角菜单找到“投递应用”的选项。
|
||||
|
||||
---
|
||||
|
||||
### 非deepin/UOS用户支持
|
||||
**Q: 我不是deepin/UOS用户,可以使用星火应用商店吗?**
|
||||
**A:** 可以,如果你是使用 Ubuntu 22.04,请直接安装。对于 Ubuntu 20.04/Debian10/Debian11,请先安装依赖包。
|
||||
|
||||
---
|
||||
|
||||
### 安装方法
|
||||
**Q: 我可以用dpkg -i安装吗?**
|
||||
**A:** 不可以!使用 `sudo apt install ./xxxx.deb` 来安装,或者使用gdebi等图形化的安装器。
|
||||
> ⚠️ 直接使用dpkg是不会处理软件依赖的,这是一个常见的错误。
|
||||
|
||||
---
|
||||
|
||||
### 系统更新
|
||||
**Q: 星火商店会影响系统正常更新吗?**
|
||||
**A:** 不会,星火商店已经将应用源与系统源分开,不会影响系统的正常更新。
|
||||
|
||||
---
|
||||
|
||||
### 报告问题和应用下架
|
||||
**Q: 有些应用已经过时或者失效了,我想让他下架**
|
||||
**A:** 你可以前往 [这里](https://gitee.com/spark-store-project/software_-issue) 报告问题。
|
||||
|
||||
---
|
||||
|
||||
### 安装星火应用商店
|
||||
如果你想安装星火应用商店,请打开[Release页面](https://gitee.com/spark-store-project/spark-store/releases),找到最新版本,并选择适用于当前系统的安装包下载。
|
||||
|
||||
> ⚠️ 特别提示: 如果你在使用 Debian10/Debian11 或 Ubuntu 20.04,你可能额外下载依赖补充包。您需要在下载完依赖包后,解压多次一直到看到内部的软件使用说明,对于 Ubuntu22.04 以后的操作系统版本,您无需安装依赖包,您需要按照上面的操作直接安装本体程序。
|
||||
|
||||
---
|
||||
73
README.en.md
@@ -1,73 +0,0 @@
|
||||
# Spark App Store
|
||||
[](https://gitee.com/deepin-community-store/spark-store/stargazers) [](https://gitee.com/deepin-community-store/spark-store/members)
|
||||
|
||||
Spark Store aims to collect Linux apps for the convieniece of Linux new comers
|
||||
|
||||
The collecting process needs everyone's help
|
||||
|
||||
We set up this APP Store and collect APPs/tools that everyone need widely. Also we pack Windows apps with wine.
|
||||
|
||||
All packages will be shared in our repository for users to get freely.
|
||||
|
||||
Distrobution supported:Deepin 20 ; Ubuntu 22.04 LTS / Ubuntu 20.04 LTS(May stop support in the future) ; UniontechOS Home 21
|
||||
|
||||
*About OpenKylin and deepin 23*
|
||||
|
||||
The adaptation work is scheduled after their official release.
|
||||
|
||||
You can track our Issue resoving progress here https://gitee.com/deepin-community-store/spark-store/board
|
||||
|
||||
|
||||
We hope people who see here can also join our team,development help or submit applications are welcomed
|
||||
|
||||
If you want to submit an APP to share with others,Please [Click here](https://upload.deepinos.org/index)
|
||||
|
||||
|
||||
## 🙌 A simple start
|
||||
|
||||
If you simply want to install the Spark Store,just enter the [Release] page, find the version you want and install.
|
||||
|
||||
If you are using Debian11/Ubuntu 20.04, you will need extra dependency package. Available [here](https://code.gitlink.org.cn/shenmo7192/spark-store-dependencies/raw/branch/master/spark-store-dependencies-kylin.zip)
|
||||
|
||||
---
|
||||
#### Compile and developement
|
||||
|
||||
|
||||
For Deepin V20/UOS 21/ Debian 11
|
||||
|
||||
```shell
|
||||
sudo apt install git qt5-default debhelper pkg-config qtchooser libqt5core5a libqt5gui5 libqt5widgets5 libqt5network5 libqt5concurrent5 libdtkcore-dev libdtkgui-dev libdtkwidget-dev qttools5-private-dev libnotify-dev qtwebengine5-dev
|
||||
|
||||
```
|
||||
|
||||
Ubuntu 22.04
|
||||
```shell
|
||||
sudo apt install git qtbase5-dev debhelper pkg-config qtchooser libqt5core5a libqt5gui5 libqt5widgets5 libqt5network5 libqt5concurrent5 libdtkcore-dev libdtkgui-dev libdtkwidget-dev qttools5-private-dev libnotify-dev qtwebengine5-dev
|
||||
|
||||
```
|
||||
|
||||
Then
|
||||
|
||||
```shell
|
||||
git clone https://gitee.com/deepin-community-store/spark-store.git
|
||||
cd spark-store
|
||||
dpkg-buildpackage
|
||||
```
|
||||
|
||||
|
||||
|
||||
## 🚀 Coorperation
|
||||
|
||||
We use Gitee as our code hosting platform. Please click here to contact us.
|
||||
|
||||
https://gitee.com/deepin-community-store/spark-store
|
||||
|
||||
### Rocket Chat
|
||||
|
||||
https://chat.shenmo.tech/
|
||||
|
||||
PWA Client:
|
||||
|
||||
spk://store/chat/store.spark-app.feedback
|
||||
|
||||
(Copy and paste to search bar or in browser address bar after installing Spark Store)
|
||||
185
README.md
@@ -1,68 +1,167 @@
|
||||
# 星火应用商店
|
||||
[](https://gitee.com/deepin-community-store/spark-store/stargazers) [](https://gitee.com/deepin-community-store/spark-store/members)
|
||||
# Spark App Store
|
||||
[](https://gitee.com/spark-store-project/spark-store/stargazers) [](https://gitee.com/spark-store-project/spark-store/members)
|
||||
|
||||
众所周知,国内的Linux应用比较少,wine应用难以获取,优质工具分散在民间各大论坛,无法形成合力,难以改善生态
|
||||
## Introduction
|
||||
|
||||
生态构建需要的不是某一方的单打独斗,而是人人行动起来,汇聚星火,产生燎原之势
|
||||
Welcome to the Spark App Store! This is an app store designed for Linux users, aiming to solve the problem of dispersed and difficult-to-obtain applications in the Linux ecosystem. No matter what type of Linux distribution you are using, you may find suitable software packages here.
|
||||
|
||||
我们创建了这个应用商店,广泛收录大家需要的软件包,搜集优质小工具,主动适配wine应用,存放到储存库供大家获取
|
||||
我们支持:Deepin 20 ; Ubuntu 22.04 LTS / Ubuntu 20.04 LTS(将会逐渐停止支持) ; UOS Home 21
|
||||
The number of Linux applications is relatively limited, and the availability of Wine software is also quite challenging. Excellent development and tool resources are scattered across various communities and forums, making it difficult for the entire ecosystem to improve comprehensively.
|
||||
|
||||
## 关于协作:分支相关的文档见 [这里](https://deepin-community-store.gitee.io/spark-wiki/#/Dev/Spark-Store-Git-Repo)
|
||||
The construction of the ecosystem is not dependent on the isolated efforts of individuals but requires the participation of the entire community. Only when everyone's "sparks" gather together can they ignite a "prairie fire."
|
||||
|
||||
*关于OpenKylin和deepin 23*
|
||||
To improve this situation, we have launched this app store. We have broadly included various user-demand software packages, gathered high-quality tools, and actively adapted Wine applications, all stored in our software library for easy user access.
|
||||
|
||||
支持计划将会在对应系统发布正式版之后开始评估和执行
|
||||
**Currently supported Linux distributions include:**
|
||||
|
||||
希望看到这里的人也可以加入我们的队伍,开发或者投递应用都很欢迎,共同构建Linux应用生态
|
||||
- **amd64 architecture:** deepin 20 / deepin 23 / Ubuntu 20.04 / Ubuntu 22.04 / UOS Home Edition 20
|
||||
- **arm64 architecture:** UOS Professional Edition 1060 / Ubuntu 22.04 / deepin 23
|
||||
- **loong64 architecture:** deepin 23
|
||||
|
||||
在这里追踪我们的Issue处理情况 https://gitee.com/deepin-community-store/spark-store/board
|
||||
> Special Note: We also support all versions of Ubuntu operating systems higher than Ubuntu 22.04, such as Ubuntu 22.10, 23.04, 23.10, etc.
|
||||
|
||||
如果有想要提交的软件包,请 [在这里投稿](https://upload.deepinos.org/index)
|
||||
**Important Notice:** This software does not provide any form of warranty. If you plan to use it on UOS Professional Edition, please make sure to understand and enable Developer Mode. Make sure you have basic troubleshooting capabilities. It should be clear that we have not conducted extensive testing on the UOS operating system. Therefore, using the Spark client may lead to a series of issues like failed system updates, data loss, etc., all risks to be borne by the user.
|
||||
|
||||
## Team Collaboration: For detailed documentation related to branch management, please see [this link](https://wiki.spark-app.store/#/Dev/Spark-Store-Git-Repo).
|
||||
|
||||
## 🙌 简单的开始
|
||||
We warmly welcome you to join our development team. Whether you want to participate in development or submit applications, you can find your place here to jointly promote the development of the Linux application ecosystem.
|
||||
|
||||
如果想安装 `星火应用商店` ,请打开右侧的 [Release] 页面,找到最新版本,并选择适用于当前系统的安装包下载。
|
||||
You can track our Issue handling status in real-time through the following link: [Issue Board](https://gitee.com/spark-store-project/spark-store/board).
|
||||
|
||||
如果你在使用 `Debian 11/Ubuntu 20.04`,你需要额外下载[依赖补充包](https://code.gitlink.org.cn/shenmo7192/spark-store-dependencies/raw/branch/master/spark-store-dependencies-kylin.zip)
|
||||
If you have a software package you'd like to submit, please [click here to submit](https://upload.deepinos.org.cn/index).
|
||||
|
||||
## Contents
|
||||
|
||||
- [Read the copyright](#read-the-copyright)
|
||||
- [Determine your system architecture](#determine-your-system-architecture)
|
||||
- [System support and installation guide](#system-support-and-installation-guide)
|
||||
- [For Deepin / UOS Users](#for-deepin-users)
|
||||
- [For Ubuntu Users](#for-ubuntu-users)
|
||||
- [For Debian Users](#for-debian-users)
|
||||
- [Frequently Asked Questions (FAQ)](#frequently-asked-questions-faq)
|
||||
- [Contact and Feedback](#contact-and-feedback)
|
||||
|
||||
---
|
||||
#### 编译安装
|
||||
|
||||
|
||||
Deepin V20/UOS 21 系统下, 安装依赖
|
||||
|
||||
```shell
|
||||
sudo apt install git qt5-default debhelper pkg-config qtchooser libqt5core5a libqt5gui5 libqt5widgets5 libqt5network5 libqt5concurrent5 libdtkcore-dev libdtkgui-dev libdtkwidget-dev qttools5-private-dev libnotify-dev qtwebengine5-dev fakeroot
|
||||
|
||||
```
|
||||
|
||||
Ubuntu 22.04 系统下, 安装依赖
|
||||
```shell
|
||||
sudo apt install git qtbase5-dev debhelper pkg-config qtchooser libqt5core5a libqt5gui5 libqt5widgets5 libqt5network5 libqt5concurrent5 libdtkcore-dev libdtkgui-dev libdtkwidget-dev qttools5-private-dev libnotify-dev qtwebengine5-dev
|
||||
|
||||
```
|
||||
|
||||
然后
|
||||
```shell
|
||||
git clone https://gitee.com/deepin-community-store/spark-store.git
|
||||
cd spark-store
|
||||
dpkg-buildpackage
|
||||
```
|
||||
## Read [the copyright](LICENSE)
|
||||
|
||||
|
||||
|
||||
## 🚀 协作
|
||||
## Determine your system architecture
|
||||
|
||||
非常感谢有兴趣的开发者或爱好者参与 `星火应用商店` 项目,分享你的见解与思路。
|
||||
Before installing any software, you need to know what architecture your computer runs on (such as x86_64/amd64 or aarch64/arm64).
|
||||
|
||||
### 交流平台
|
||||
**How to check:**
|
||||
|
||||
https://chat.shenmo.tech/
|
||||
1. Open a Linux terminal.
|
||||
2. Type `uname -m` or `arch` and press Enter.
|
||||
|
||||
客户端PWA:
|
||||
You will see an output, and that's your system architecture.
|
||||
|
||||
spk://store/chat/store.spark-app.feedback
|
||||
- If you see `x86_64`, your system is AMD64 architecture.
|
||||
- If you see `aarch64`, your system is ARM64 architecture.
|
||||
|
||||
(安装星火商店后在浏览器打开或复制到搜索栏打开)
|
||||
---
|
||||
|
||||
## System support and installation guide
|
||||
|
||||
### For Deepin Users
|
||||
|
||||
#### For Deepin Users
|
||||
|
||||
1. **Download and Install**
|
||||
|
||||
You can directly search for Spark App Store in the Deepin Store to install, or copy this link to open and install in your browser:
|
||||
|
||||
> appstore://deepin-home-appstore-client?app_detail_info/spark-store
|
||||
|
||||
To use the latest version, please visit the [Spark App Store Release page](https://gitee.com/spark-store-project/spark-store/releases) and download the latest version suitable for Deepin. Install to use.
|
||||
|
||||
Assuming you've downloaded to the `Downloads` folder in your user directory, we recommend you use the APT tool to install:
|
||||
|
||||
```shell
|
||||
cd ~/Downloads
|
||||
sudo apt install ./spark-store*.deb
|
||||
```
|
||||
|
||||
### For Ubuntu Users
|
||||
|
||||
#### For Ubuntu 20.04 Users
|
||||
|
||||
1. **Download Dependencies**
|
||||
* Please visit the [Spark App Store Dependency Download page](https://gitee.com/spark-store-project/spark-store-dependencies/releases) and download the latest dependency package.
|
||||
* Unzip the dependency package multiple times until you see multiple installation packages ending with `.deb`.
|
||||
* Follow the instructions in the dependency package to install all the dependencies at once.
|
||||
|
||||
2. **Download and Install**
|
||||
|
||||
Visit the [Spark App Store Release page](https://gitee.com/spark-store-project/spark-store/releases), download the installation package that matches your computer's architecture, and install it.
|
||||
|
||||
Assuming you've downloaded to the `Downloads` folder in your user directory, we recommend you use the APT tool to install:
|
||||
|
||||
```shell
|
||||
cd ~/Downloads
|
||||
sudo apt install ./spark-store*.deb
|
||||
```
|
||||
|
||||
#### For Ubuntu 22.04 and Higher Version Users
|
||||
|
||||
1. **No Need to Install Dependencies**
|
||||
|
||||
2. **Download and Install**
|
||||
|
||||
Visit the [Spark App Store Release page](https://gitee.com/spark-store-project/spark-store/releases), download the installation package that matches your computer's architecture, and install it.
|
||||
|
||||
Assuming you've downloaded to the `Downloads` folder in your user directory, we recommend you use the APT tool to install:
|
||||
|
||||
```shell
|
||||
cd ~/Downloads
|
||||
sudo apt install ./spark-store*.deb
|
||||
```
|
||||
|
||||
### For Debian Users
|
||||
|
||||
#### For Debian 11 Users
|
||||
|
||||
1. **Download Dependencies**
|
||||
* Please visit the [Spark App Store Dependency Download page](https://gitee.com/spark-store-project/spark-store-dependencies/releases) and download the latest dependency package.
|
||||
* Unzip the dependency package multiple times until you see multiple installation packages ending with `.deb`.
|
||||
* Follow the instructions in the dependency package to install all the dependencies at once.
|
||||
|
||||
2. **Download and Install**
|
||||
|
||||
Please visit the [Spark App Store Release page](https://gitee.com/spark-store-project/spark-store/releases) and download. Install to use.
|
||||
|
||||
#### For Debian 12+ Users
|
||||
|
||||
1. **No Need to Install Dependencies**
|
||||
|
||||
2. **Download and Install**
|
||||
|
||||
Please visit the [Spark App Store Release page](https://gitee.com/spark-store-project/spark-store/releases), download the installation package that matches your computer's architecture, and install it.
|
||||
|
||||
Assuming you've downloaded to the `Downloads` folder in your user directory, we recommend you use the APT tool to install:
|
||||
|
||||
```shell
|
||||
cd ~/Downloads
|
||||
sudo apt install ./spark-store*.deb
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Frequently Asked Questions (FAQ)
|
||||
|
||||
Please refer to the [Spark App Store FAQ and Support Guide](https://gitee.com/spark-store-project/spark-store/blob/dev/FAQ.md).
|
||||
|
||||
To customly configure aptss, refer to [aptss](https://gitee.com/GXDE-OS/aptss)
|
||||
|
||||
---
|
||||
|
||||
## Contact and Feedback
|
||||
|
||||
- If you have any questions or suggestions, please submit them via email or on our [Issue Page](https://gitee.com/spark-store-project/spark-store/issues).
|
||||
- If you want to follow our development progress, you can go to the [Spark App Store Board](https://gitee.com/spark-store-project/spark-store/board) for more information.
|
||||
- Our [Forum](https://bbs.spark-app.store/)
|
||||
- Our [QQ Group](https://blog.shenmo.tech/post/%E6%95%85%E9%9A%9C%E5%85%AC%E5%91%8A/)
|
||||
- For commercial support, please leave your issue~
|
||||
|
||||
---
|
||||
190
README.zh.md
Normal file
@@ -0,0 +1,190 @@
|
||||
# 星火应用商店
|
||||
[](https://gitee.com/spark-store-project/spark-store/stargazers) [](https://gitee.com/spark-store-project/spark-store/members)
|
||||
|
||||
|
||||
|
||||
## 简介
|
||||
|
||||
欢迎来到星火应用商店!这是一个为Linux用户设计的应用商店,旨在解决Linux生态下应用分散、难以获取的问题。无论你是使用什么类型的Linux发行版,这里都有可能找到适合你的软件包。
|
||||
|
||||
|
||||
Linux 应用的数量相对有限,Wine 软件的可获得性也颇为困难。优秀的开发和工具资源散布在各大社区和论坛之间,这种分散化让整个生态系统难以得到全面的提升。
|
||||
|
||||
生态系统的构建并非依赖个体的孤立努力,而需要全社区共同参与。只有当大家的“星火”聚集一处,方可引发“燎原之势”。
|
||||
|
||||
为了改善这一现状,我们推出了这个应用商店。我们广泛地收录了各种用户需求的软件包,汇集了高质量的小工具,并主动对 Wine 应用进行了适配,一切都储存在我们的软件库中,使得用户可以方便地获取这些应用。
|
||||
|
||||
**当前支持的Linux发行版包括:**
|
||||
|
||||
- **amd64架构:** deepin 20 / deepin 23 / Ubuntu 20.04 / Ubuntu 22.04 / UOS家庭版20
|
||||
- **arm64架构:** UOS专业版1060 / Ubuntu 22.04 / deepin 23
|
||||
- **loong64架构:** deepin 23
|
||||
|
||||
> 特别说明:我们还支持所有版本高于Ubuntu 22.04的Ubuntu操作系统,例如Ubuntu 22.10、23.04、23.10等。
|
||||
|
||||
**重要须知:** 本软件不提供任何形式的保证。若您计划在UOS专业版上使用,请务必了解并启用开发者模式。请确保您具备基础的故障排查能力。需要明确的是,我们没有在UOS操作系统上进行广泛的测试。因此,使用星火客户端可能会导致一系列问题,如系统更新失败、数据丢失等,所有风险需由用户自行承担。
|
||||
|
||||
|
||||
|
||||
## 关于团队协作
|
||||
|
||||
组织仓库链接:
|
||||
https://gitee.com/spark-store-project/spark-store
|
||||
|
||||
https://gitcode.com/spark-store-project/spark-store
|
||||
|
||||
https://github.com/spark-store-project/spark-store
|
||||
|
||||
分支管理相关的详细文档可参见 [此链接](https://wiki.spark-app.store/#/Dev/Spark-Store-Git-Repo)。
|
||||
|
||||
我们热忱欢迎您加入我们的开发团队。无论您是想参与开发,还是想提交应用,都能在这里找到属于您的一席之地,共同推动Linux应用生态的发展。
|
||||
|
||||
您可以通过以下链接,实时跟踪我们的Issue处理状态:[Issue看板](https://gitee.com/spark-store-project/spark-store/board)。
|
||||
|
||||
若您有软件包想要提交,敬请 [点击此处进行投稿](https://wiki.spark-app.store/#/Submit/Submit)。
|
||||
|
||||
|
||||
|
||||
|
||||
## 目录
|
||||
|
||||
- [阅读版权声明](#阅读版权声明)
|
||||
- [确定你的系统架构](#确定你的系统架构)
|
||||
- [系统支持与安装指引](#系统支持与安装指引)
|
||||
- [对于 Deepin / UOS 用户](#对于deepin用户)
|
||||
- [对于 Ubuntu 用户](#对于ubuntu用户)
|
||||
- [对于 Debian 用户](#对于debian用户)
|
||||
- [常见问题(FAQ)](#常见问题faq)
|
||||
- [联系与反馈](#联系与反馈)
|
||||
|
||||
---
|
||||
|
||||
## 阅读[版权声明](LICENSE)
|
||||
|
||||
|
||||
## 确定你的系统架构
|
||||
|
||||
在安装任何软件之前,你需要知道你的计算机运行的是哪种架构(如x86_64/amd64或aarch64/arm64)。
|
||||
|
||||
**如何检查:**
|
||||
|
||||
1. 打开Linux终端。
|
||||
2. 输入 `uname -m` 或 `arch` 并按回车。
|
||||
|
||||
你会看到一个输出,这就是你的系统架构。
|
||||
|
||||
- 如果看到 `x86_64`,你的系统是AMD64架构。
|
||||
- 如果看到 `aarch64`,你的系统是ARM64架构。
|
||||
|
||||
---
|
||||
|
||||
## 系统支持与安装指引
|
||||
|
||||
根据你的Linux发行版和系统架构,以下是安装星火应用商店的详细步骤。
|
||||
|
||||
### 对于 Deepin 用户
|
||||
|
||||
#### 对于 Deepin 用户
|
||||
|
||||
1. **下载并安装**
|
||||
|
||||
您可直接在深度商店搜索 星火应用商店 安装,或复制此链接到浏览器打开安装
|
||||
|
||||
> appstore://deepin-home-appstore-client?app_detail_info/spark-store
|
||||
|
||||
|
||||
若要使用最新版本,请访问[星火应用商店的Release页面](https://gitee.com/spark-store-project/spark-store/releases)或[Gitcode的Release页面](https://gitcode.com/spark-store-project/spark-store/releases)并下载适用于Deepin的最新版本。安装后即可使用。
|
||||
|
||||
假设您下载到用户目录下的 Downloads 文件夹, 我们推荐您使用 APT 工具安装:
|
||||
|
||||
```shell
|
||||
cd ~/Downloads
|
||||
sudo apt install ./spark-store*.deb
|
||||
```
|
||||
|
||||
### 对于 Ubuntu 用户
|
||||
|
||||
#### 对于 Ubuntu 20.04 用户
|
||||
|
||||
1. **下载依赖包**
|
||||
* 请访问[星火应用商店依赖包下载页面](https://gitee.com/spark-store-project/spark-store-dependencies/releases), 下载最新的依赖包。
|
||||
* 请多次解压依赖包,直到你可以看到诸多以 deb 结尾的安装包。
|
||||
* 依据依赖包内的说明,一次性安装所有的依赖包。
|
||||
|
||||
|
||||
2. **下载并安装**
|
||||
|
||||
请访问[星火应用商店的Release页面](https://gitee.com/spark-store-project/spark-store/releases)或[Gitcode的Release页面](https://gitcode.com/spark-store-project/spark-store/releases),下载和您电脑相同架构的安装包并安装。
|
||||
|
||||
假设您下载到用户目录下的 Downloads 文件夹, 我们推荐您使用 APT 工具安装:
|
||||
|
||||
```shell
|
||||
cd ~/Downloads
|
||||
sudo apt install ./spark-store*.deb
|
||||
```
|
||||
|
||||
#### 对于 Ubuntu 22.04 及更高版本的 Ubuntu 用户
|
||||
1. **无需安装依赖包**
|
||||
|
||||
|
||||
2. **下载并安装**
|
||||
|
||||
请访问[星火应用商店的Release页面](https://gitee.com/spark-store-project/spark-store/releases)或[Gitcode的Release页面](https://gitcode.com/spark-store-project/spark-store/releases),下载和您电脑相同架构的安装包并安装。
|
||||
|
||||
假设您下载到用户目录下的 Downloads 文件夹, 我们推荐您使用 APT 工具安装:
|
||||
|
||||
```shell
|
||||
cd ~/Downloads
|
||||
sudo apt install ./spark-store*.deb
|
||||
```
|
||||
|
||||
### 对于 Debian 用户
|
||||
|
||||
#### 对于 Debian 11 用户
|
||||
|
||||
1. **下载依赖包**
|
||||
* 请访问[星火应用商店依赖包下载页面](https://gitee.com/spark-store-project/spark-store-dependencies/releases), 下载最新的依赖包。
|
||||
* 请多次解压依赖包,直到你可以看到诸多以 deb 结尾的安装包。
|
||||
* 依据依赖包内的说明,一次性安装所有的依赖包。
|
||||
|
||||
2. **下载并安装**
|
||||
|
||||
请访问[星火应用商店的Release页面](https://gitee.com/spark-store-project/spark-store/releases)或[Gitcode的Release页面](https://gitcode.com/spark-store-project/spark-store/releases)并下载,安装后即可使用。
|
||||
|
||||
|
||||
#### 对于 Debian 12+ 用户
|
||||
|
||||
1. **无需安装依赖包**
|
||||
|
||||
|
||||
2. **下载并安装**
|
||||
|
||||
请访问[星火应用商店的Release页面](https://gitee.com/spark-store-project/spark-store/releases)或[Gitcode的Release页面](https://gitcode.com/spark-store-project/spark-store/releases),下载和您电脑相同架构的安装包并安装。
|
||||
|
||||
假设您下载到用户目录下的 Downloads 文件夹, 我们推荐您使用 APT 工具安装:
|
||||
|
||||
```shell
|
||||
cd ~/Downloads
|
||||
sudo apt install ./spark-store*.deb
|
||||
```
|
||||
---
|
||||
|
||||
## 常见问题(FAQ)
|
||||
|
||||
请参见[星火应用商店FAQ与支持指南](https://gitee.com/spark-store-project/spark-store/blob/dev/FAQ.zh.md)。
|
||||
|
||||
自定义配置 aptss config 请参阅 [aptss](https://gitee.com/GXDE-OS/aptss)
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 联系与反馈
|
||||
|
||||
- 如果您有任何问题或建议,请通过邮件或在[Issue 页面](https://gitee.com/spark-store-project/spark-store/issues)上提交问题。
|
||||
- 如果你想关注我们的开发进度,可以跳转[星火应用商店Board](https://gitee.com/spark-store-project/spark-store/board)获取更多信息。
|
||||
- 我们的[论坛](https://bbs.spark-app.store/)
|
||||
- 我们的QQ群 872690351
|
||||
- 商业支持请留言咨询~
|
||||
|
||||
---
|
||||
24
build_and_install.sh
Executable file
@@ -0,0 +1,24 @@
|
||||
|
||||
# Deepin V20/UOS 21 系统下, 安装依赖
|
||||
|
||||
# ```shell
|
||||
# sudo apt install git qt5-default debhelper pkg-config qtchooser libqt5core5a libqt5gui5 libqt5widgets5 libqt5network5 libqt5concurrent5 libdtkcore-dev libdtkgui-dev libdtkwidget-dev qttools5-private-dev libnotify-dev qtwebengine5-dev fakeroot qtwayland5 qtwayland5-dev-tools dde-qt5wayland-plugin
|
||||
|
||||
# ```
|
||||
|
||||
# Ubuntu 22.04 系统下, 安装依赖
|
||||
# ```shell
|
||||
# sudo apt install git qtbase5-dev debhelper pkg-config qtchooser libqt5core5a libqt5gui5 libqt5widgets5 libqt5network5 libqt5concurrent5 libdtkcore-dev libdtkgui-dev libdtkwidget-dev qttools5-private-dev libnotify-dev qtwebengine5-dev qtwayland5 qtwayland5-dev-tools
|
||||
|
||||
# ```
|
||||
|
||||
echo "Deepin V20/UOS 21 系统下, 安装依赖"
|
||||
echo "sudo apt install git qt5-default debhelper pkg-config qtchooser libqt5core5a libqt5gui5 libqt5widgets5 libqt5network5 libqt5concurrent5 libdtkcore-dev libdtkgui-dev libdtkwidget-dev qttools5-private-dev libnotify-dev qtwebengine5-dev fakeroot qtwayland5 qtwayland5-dev-tools dde-qt5wayland-plugin"
|
||||
|
||||
echo "Ubuntu 22.04 系统下, 安装依赖"
|
||||
echo "sudo apt install git qtbase5-dev debhelper pkg-config qtchooser libqt5core5a libqt5gui5 libqt5widgets5 libqt5network5 libqt5concurrent5 libdtkcore-dev libdtkgui-dev libdtkwidget-dev qttools5-private-dev libnotify-dev qtwebengine5-dev qtwayland5 qtwayland5-dev-tools"
|
||||
|
||||
dpkg-buildpackage -j$(cat /proc/cpuinfo | grep processor | wc -l)
|
||||
sudo apt reinstall ../spark-store_*.deb
|
||||
|
||||
rm ../spark-store_*
|
||||
903
debian/changelog
vendored
49
debian/control
vendored
@@ -5,41 +5,32 @@ Priority: optional
|
||||
Build-Depends:
|
||||
debhelper (>= 9),
|
||||
pkg-config,
|
||||
qtchooser (>= 55-gc9562a1-1~),
|
||||
libqt5core5a,
|
||||
libqt5gui5,
|
||||
libqt5widgets5,
|
||||
libqt5network5,
|
||||
libqt5concurrent5,
|
||||
libdtkcore-dev(>=5.0),
|
||||
libdtkgui-dev(>=5.0),
|
||||
libdtkwidget-dev(>=5.0),
|
||||
qttools5-private-dev,
|
||||
qtwebengine5-dev
|
||||
Standards-Version: 3.0
|
||||
qtchooser (>= 55-gc9562a1-1~) | qt5-default,
|
||||
qtbase5-dev,
|
||||
libqt5svg5-dev,
|
||||
qttools5-dev-tools,
|
||||
qtwebengine5-dev,
|
||||
libdtkcore-dev (>= 5.0),
|
||||
libdtkgui-dev (>= 5.0),
|
||||
libdtkwidget-dev (>= 5.0)
|
||||
Standards-Version: 4.1.7
|
||||
Homepage: https://www.spark-app.store/
|
||||
|
||||
|
||||
Package: spark-store
|
||||
Architecture: any
|
||||
Depends:${shlibs:Depends}, ${misc:Depends},
|
||||
libqt5core5a,
|
||||
libqt5gui5,
|
||||
libqt5widgets5,
|
||||
libqt5network5,
|
||||
libqt5concurrent5,
|
||||
libdtkcore5,
|
||||
libdtkgui5,
|
||||
libdtkwidget5,
|
||||
Provides: spark-store-console-in-container
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends},
|
||||
dde-qt5integration,
|
||||
curl,
|
||||
openssl,
|
||||
libssl-dev,
|
||||
dde-qt5integration,
|
||||
bubblewrap,
|
||||
aria2,
|
||||
gcc,
|
||||
g++,
|
||||
zenity
|
||||
gnupg,
|
||||
zenity,
|
||||
policykit-1 | pkexec,
|
||||
libnotify-bin,
|
||||
qtwayland5,
|
||||
desktop-file-utils,
|
||||
dpkg-dev,
|
||||
lsb-release,
|
||||
Description: Spark Store
|
||||
A community powered app store, based on DTK.
|
||||
Recommends: apt-fast
|
||||
|
||||
2
debian/copyright
vendored
@@ -1,6 +1,6 @@
|
||||
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: spark-store
|
||||
Source: https://gitee.com/deepin-community-store/spark-store
|
||||
Source: https://gitee.com/spark-store-project/spark-store
|
||||
|
||||
Files: *
|
||||
Copyright: The Spark Project Developers
|
||||
|
||||
30
debian/rules
vendored
@@ -1,37 +1,41 @@
|
||||
#!/usr/bin/make -f
|
||||
|
||||
export QT_SELECT=5
|
||||
export QT_SELECT = qt5
|
||||
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
|
||||
include /usr/share/dpkg/default.mk
|
||||
|
||||
DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH)
|
||||
DH_AUTO_ARGS = --parallel --buildsystem=qmake
|
||||
DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
|
||||
|
||||
# Use realtime timestamp instead of the latest entry in debian/changelog
|
||||
SOURCE_DATE_EPOCH := $(shell date +%s)
|
||||
|
||||
# Uncomment this to turn on verbose mode.
|
||||
#export DH_VERBOSE=1
|
||||
#export DH_VERBOSE = 1
|
||||
|
||||
%:
|
||||
dh $@ --parallel
|
||||
|
||||
override_dh_auto_clean:
|
||||
rm -rf $(CURDIR)/build
|
||||
rm -rf $(CURDIR)/build-$(DEB_HOST_MULTIARCH)
|
||||
|
||||
override_dh_auto_configure:
|
||||
mkdir -p $(CURDIR)/build
|
||||
|
||||
dh_auto_configure MAKEFLAGS=-j$(JOBS) -- spark-store-project.pro \
|
||||
-spec linux-g++ CONFIG+=qtquickcompiler \
|
||||
-o $(CURDIR)/build/
|
||||
mkdir -p $(CURDIR)/build-$(DEB_HOST_MULTIARCH)
|
||||
|
||||
qmake BUILD_VERSION=$(DEB_VERSION_UPSTREAM) spark-store-project.pro \
|
||||
-spec linux-g++ CONFIG+=force_debug_info \
|
||||
-o $(CURDIR)/build-$(DEB_HOST_MULTIARCH)/
|
||||
|
||||
override_dh_auto_build:
|
||||
make -C $(CURDIR)/build -j$(JOBS)
|
||||
make -C $(CURDIR)/build-$(DEB_HOST_MULTIARCH) -j$(JOBS)
|
||||
|
||||
override_dh_auto_install:
|
||||
make -C $(CURDIR)/build install \
|
||||
make -C $(CURDIR)/build-$(DEB_HOST_MULTIARCH) install \
|
||||
INSTALL_ROOT=$(CURDIR)/debian/spark-store
|
||||
|
||||
|
||||
# Ignore the dpkg-shlibdeps: warning (it uses none of the library's symbols)
|
||||
# Qt Mutidedia lib will ref to network libraray.
|
||||
override_dh_shlibdeps:
|
||||
dh_shlibdeps --dpkg-shlibdeps-params=--warnings=0
|
||||
dh_shlibdeps --dpkg-shlibdeps-params=--warnings=0 --exclude=opt/durapps/spark-store/bin/ss-feedback/
|
||||
override_dh_strip:
|
||||
dh_strip --exclude=opt/durapps/spark-store/bin/ss-feedback/
|
||||
2
debian/source/format
vendored
@@ -1 +1 @@
|
||||
1.0
|
||||
3.0 (native)
|
||||
78
debian/spark-store.postinst
vendored
@@ -1,59 +1,62 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
case "$1" in
|
||||
configure)
|
||||
|
||||
# Enable i386 arch
|
||||
echo "Enable i386 arch..."
|
||||
dpkg --add-architecture i386
|
||||
case `arch` in
|
||||
x86_64)
|
||||
echo "Enabling i386 arch..."
|
||||
dpkg --add-architecture i386
|
||||
;;
|
||||
|
||||
# config for aptss
|
||||
mkdir -p /etc/aptss/sources.list.d
|
||||
ln -s -f /etc/apt/sources.list /etc/aptss/sources.list
|
||||
aarch64)
|
||||
echo "Will not enable armhf since 4271"
|
||||
;;
|
||||
loongarch64)
|
||||
echo "Nope we DO NOT WANT ABI1 now"
|
||||
dpkg --remove-architecture loongarch64
|
||||
;;
|
||||
|
||||
# Remove the sources.list file
|
||||
if [ -e /etc/apt/sources.list.d/sparkstore.list ];then
|
||||
rm /etc/apt/sources.list.d/sparkstore.list
|
||||
fi
|
||||
|
||||
*)
|
||||
echo "Unknown architecture, skip enable 32-bit arch"
|
||||
;;
|
||||
esac
|
||||
|
||||
mkdir -p /var/lib/aptss/lists
|
||||
|
||||
# Remove the sources.list file
|
||||
rm -f /etc/apt/sources.list.d/sparkstore.list
|
||||
|
||||
# Check if /usr/local/bin existed
|
||||
mkdir -p /usr/local/bin
|
||||
|
||||
## I hate /usr/local/bin. We will abandon them later
|
||||
# Create symbol links for binary files
|
||||
ln -s -f /opt/durapps/spark-store/bin/ussinstall /usr/local/bin/ussinstall
|
||||
ln -s -f /opt/durapps/spark-store/bin/ussremove /usr/local/bin/ussremove
|
||||
ln -s -f /opt/durapps/spark-store/bin/spark-store /usr/local/bin/spark-store
|
||||
ln -s -f /opt/durapps/spark-store/bin/ssinstall /usr/local/bin/ssinstall
|
||||
ln -s -f /opt/durapps/spark-store/bin/ssaudit /usr/local/bin/ssaudit
|
||||
ln -s -f /opt/durapps/spark-store/bin/ssinstall /usr/bin/ssinstall
|
||||
ln -s -f /opt/durapps/spark-store/bin/ssaudit /usr/bin/ssaudit
|
||||
ln -s -f /opt/durapps/spark-store/bin/spark-dstore-patch /usr/local/bin/spark-dstore-patch
|
||||
ln -s -f /opt/durapps/spark-store/bin/spark-dstore-patch /usr/bin/spark-dstore-patch
|
||||
ln -s -f /opt/durapps/spark-store/bin/aptss /usr/local/bin/ss-apt-fast
|
||||
|
||||
ln -s -f /opt/durapps/spark-store/bin/aptss /usr/bin/aptss
|
||||
|
||||
# Create symbol links for SSINSTALL
|
||||
ln -s -f /opt/durapps/spark-store/bin/auto-install-policy/store.spark-app.ssinstall.policy /usr/share/polkit-1/actions/store.spark-app.ssinstall.policy
|
||||
ln -s -f /opt/durapps/spark-store/bin/aptss /usr/bin/aptss
|
||||
|
||||
echo "Compiling the Sender module..."
|
||||
|
||||
gcc /opt/durapps/spark-store/bin/ss-feedback/sender-d.sh.c -o /opt/durapps/spark-store/bin/ss-feedback/sender-d
|
||||
|
||||
# Install key
|
||||
mkdir -p /tmp/spark-store-install/
|
||||
cp -f /opt/durapps/spark-store/bin/spark-store.asc /tmp/spark-store-install/spark-store.asc
|
||||
cp -f /opt/durapps/spark-store/bin/spark-store.asc /tmp/spark-store-install/spark-store.asc
|
||||
gpg --dearmor /tmp/spark-store-install/spark-store.asc
|
||||
cp -f /tmp/spark-store-install/spark-store.asc.gpg /etc/apt/trusted.gpg.d/spark-store.gpg
|
||||
|
||||
|
||||
|
||||
# Run apt update to avoid users being fucked up by the non-exist dependency problem
|
||||
# Now abandoned as aptss now run ssupdate everytime
|
||||
#aptss ssupdate
|
||||
|
||||
|
||||
# Start upgrade detect service
|
||||
systemctl daemon-reload
|
||||
systemctl enable spark-update-notifier
|
||||
service spark-update-notifier start
|
||||
|
||||
systemctl start spark-update-notifier
|
||||
|
||||
|
||||
# Update certain caches
|
||||
update-icon-caches /usr/share/icons/hicolor || true
|
||||
@@ -62,27 +65,14 @@ case "$1" in
|
||||
update-mime-database /usr/share/mime || true
|
||||
|
||||
# Send email for statistics
|
||||
# /tmp/spark-store-install/feedback.sh
|
||||
#/tmp/spark-store-install/feedback.sh
|
||||
|
||||
# Remove temp dir
|
||||
rm -rf /tmp/spark-store-install
|
||||
|
||||
|
||||
;;
|
||||
|
||||
triggered)
|
||||
# Quit if deepin-app-store-tool existed
|
||||
if [ -x "/usr/bin/deepin-app-store-tool" ] ; then
|
||||
exit 0
|
||||
fi
|
||||
spark-dstore-patch
|
||||
|
||||
# Trigger for UOS debs installation
|
||||
echo '--------检测到Uniontech标准软件包,运行补丁以修正安装--------'
|
||||
if [ -x "/usr/local/bin/spark-dstore-patch" ] ; then
|
||||
/usr/local/bin/spark-dstore-patch
|
||||
echo '-----------spark-dstore-patch补丁工具已运行完毕-----------'
|
||||
else
|
||||
echo '------------spark-dstore-patch补丁工具运行失败------------'
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
2
debian/spark-store.postrm
vendored
Normal file → Executable file
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
# Update certain caches
|
||||
update-icon-caches /usr/share/icons/hicolor || true
|
||||
|
||||
89
debian/spark-store.prerm
vendored
@@ -1,47 +1,64 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
if [ "$1" = "remove" ] || [ "$1" = "purge" ];then
|
||||
# Remove residual symbol links
|
||||
rm /usr/local/bin/spark-store
|
||||
rm /usr/local/bin/ssinstall
|
||||
rm /usr/local/bin/spark-dstore-patch
|
||||
rm /usr/local/bin/ussinstall
|
||||
rm /usr/local/bin/ussremove
|
||||
rm /usr/local/bin/ss-apt-fast
|
||||
rm /usr/bin/aptss
|
||||
function notify-send()
|
||||
{
|
||||
# Detect the user using such display
|
||||
local user=$(who | awk '{print $1}' | head -n 1)
|
||||
|
||||
rm -rf /etc/aptss/
|
||||
# Detect the id of the user
|
||||
local uid=$(id -u $user)
|
||||
|
||||
# Remove Sender module
|
||||
rm /opt/durapps/spark-store/bin/ss-feedback/sender-d
|
||||
sudo -u $user DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$uid/bus notify-send "$@"
|
||||
}
|
||||
|
||||
# Remove residual symbol links to stop upgrade detect if exist
|
||||
if [ -e /etc/xdg/autostart/spark-update-notifier.desktop ];then
|
||||
rm /etc/xdg/autostart/spark-update-notifier.desktop
|
||||
fi
|
||||
if [ "$1" = "remove" -o "$1" = "purge" ] ; then
|
||||
echo "$1"
|
||||
echo "卸载操作,进行配置清理"
|
||||
|
||||
# Shutdown services
|
||||
service spark-update-notifier stop
|
||||
# Remove residual symbol links
|
||||
unlink /usr/local/bin/spark-store
|
||||
unlink /usr/local/bin/ssinstall
|
||||
unlink /usr/local/bin/ssaudit
|
||||
unlink /usr/bin/ssinstall
|
||||
unlink /usr/bin/ssaudit
|
||||
unlink /usr/local/bin/spark-dstore-patch
|
||||
unlink /usr/bin/spark-dstore-patch
|
||||
unlink /usr/local/bin/ss-apt-fast
|
||||
unlink /usr/bin/aptss
|
||||
|
||||
# Stop update detect service
|
||||
systemctl disable spark-update-notifier
|
||||
rm -rf /etc/aptss/
|
||||
rm -rf /var/lib/aptss/
|
||||
|
||||
# Remove residual symbol links to stop upgrade detect
|
||||
rm -f /etc/xdg/autostart/spark-update-notifier.desktop
|
||||
# Remove config files
|
||||
for username in `ls /home`
|
||||
do
|
||||
echo /home/$username
|
||||
if [ -d /home/$username/.config/spark-union/spark-store ]
|
||||
then
|
||||
rm -rf /home/$username/.config/spark-union/spark-store
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
# Shutdown services
|
||||
systemctl stop spark-update-notifier
|
||||
# Stop update detect service
|
||||
systemctl disable spark-update-notifier
|
||||
|
||||
|
||||
|
||||
# Clean the auto install polkit file if exist
|
||||
if [ -f "/usr/share/polkit-1/actions/store.spark-app.ssinstall.policy" ] ; then
|
||||
rm /usr/share/polkit-1/actions/store.spark-app.ssinstall.policy
|
||||
fi
|
||||
|
||||
# Remove gpg key file
|
||||
if [ -f "/etc/apt/trusted.gpg.d/spark-store.gpg" ] ; then
|
||||
rm /etc/apt/trusted.gpg.d/spark-store.gpg
|
||||
fi
|
||||
|
||||
apt-key del '9D9A A859 F750 24B1 A1EC E16E 0E41 D354 A29A 440C'
|
||||
|
||||
# Remove gpg key file
|
||||
rm -f /etc/apt/trusted.gpg.d/spark-store.gpg
|
||||
apt-key del '9D9A A859 F750 24B1 A1EC E16E 0E41 D354 A29A 440C' || true
|
||||
else
|
||||
|
||||
echo "非卸载操作,不进行配置清理"
|
||||
|
||||
|
||||
if [ ! -z "`pidof spark-store`" ] ; then
|
||||
echo "关闭已有 spark-store.."
|
||||
notify-send "正在升级星火商店" "请在升级结束后重启星火商店" -i spark-store
|
||||
killall spark-store
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
|
||||
1
debian/spark-store.triggers
vendored
@@ -1 +1,2 @@
|
||||
interest-noawait /opt/apps
|
||||
|
||||
|
||||
44
patchs/README.md
Normal file
@@ -0,0 +1,44 @@
|
||||
# 补丁操作说明
|
||||
|
||||
- 克隆与构建本项目
|
||||
|
||||
> 用于 zinface-community-cmake-build-system.patch 补丁化构建方式
|
||||
|
||||
```shell
|
||||
git clone https://gitee.com/spark-store-project/spark-store
|
||||
cd spark-store
|
||||
git am < patchs/zinface-community-cmake-build-system.patch
|
||||
make package
|
||||
sudo dpkg -i build/*.deb
|
||||
```
|
||||
|
||||
|
||||
- 在应用补丁时,并对补丁进行的更新操作
|
||||
|
||||
```shell
|
||||
# 切换到一个新的分支,即可开始进行补丁内的更新提交
|
||||
git checkout -b cmake-build-system
|
||||
|
||||
# origin/dev 表示本仓库的 dev 开发分支
|
||||
# 在应用过补丁,并产生了新的提交,即可在当前所在补丁更新分支内
|
||||
# 相对基于 origin/dev 为参考,目前所包含的所有最新提交内容将生成为一个补丁文件(其中尾部为增量更新)
|
||||
git format-patch --stdout origin/dev > patchs/zinface-community-cmake-build-system.patch
|
||||
|
||||
# 最后,回到你的原 dev 分支,将被改变的补丁文件进行提交
|
||||
# 在推送完成后,即可放弃你在 cmake-build-system 分支中所有产生的内容(因为都已经进入补丁)
|
||||
```
|
||||
|
||||
- 一些注意事项
|
||||
|
||||
```shell
|
||||
# 在不了解补丁时,你需要认识一下补丁,但补丁与补丁之间有着不同的用法
|
||||
# 本 patchs/zinface-community-cmake-build-system.patch 补丁为 cmake 化构建
|
||||
|
||||
# 关于补丁的一些方面
|
||||
# 1. 首先你需要了解 git 是什么,以及简单的使用
|
||||
# 2. 你需要了解补丁是什么,以及简单的使用(应用补丁)
|
||||
# 3. 你需要了解如何创建一个补丁,最基本的就是相对于旧目标分支,将本分区新增的提交进行导出为补丁
|
||||
# 4. 你可能只会将单个提交、或多个提交导出为补丁,但这还不够,你需要具有绝对的对于补丁的理解
|
||||
# 5. 对于不同的目的补丁,应该是多个 patch 文件存在的形式
|
||||
# 6. 最后,不管在什么时候,你在应用补丁前,你应该考虑是否应用到当前分支?为什么不切换到一个新的分支呢?
|
||||
```
|
||||
@@ -1 +0,0 @@
|
||||
deb [by-hash=force] https://d.store.deepinos.org.cn /
|
||||
11
pkg/lib/systemd/system/spark-update-notifier.timer
Normal file
@@ -0,0 +1,11 @@
|
||||
[Unit]
|
||||
Description=Timer for Spark Update Notifier
|
||||
|
||||
[Timer]
|
||||
# 开机后第一次执行
|
||||
OnBootSec=1min
|
||||
# 每天执行一次
|
||||
OnUnitActiveSec=1d
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
@@ -2,13 +2,14 @@
|
||||
Description=Spark Store update notifier
|
||||
After=apt-daily.service network.target network-online.target systemd-networkd.service NetworkManager.service connman.service
|
||||
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
RemainAfterExit=yes
|
||||
RemainAfterExit=yes
|
||||
ExecStart=/opt/durapps/spark-store/bin/update-upgrade/ss-update-notifier.sh
|
||||
Restart=on-failure
|
||||
RestartSec=10
|
||||
RestartSec=15 # 可以设置为更长的重试间隔,比如 15 秒或 30 秒
|
||||
StartLimitIntervalSec=1h # 设置为 1 小时的时间窗口
|
||||
StartLimitBurst=3 # 最大允许失败次数为 3 次
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
WantedBy=multi-user.target
|
||||
|
||||
12
pkg/usr/share/applications/open-me-in-terminal.desktop
Normal file
@@ -0,0 +1,12 @@
|
||||
[Desktop Entry]
|
||||
Categories=Development;
|
||||
Encoding=UTF-8
|
||||
Exec=/opt/durapps/spark-store/bin/open-in-terminal/open-in-terminal %U
|
||||
Icon=open-me-in-terminal
|
||||
MimeType=application/x-desktop
|
||||
Name=Open me in terminal
|
||||
Name[zh_CN]=在终端中打开
|
||||
NoDisplay=true
|
||||
StartupWMClass=在终端中打开
|
||||
Terminal=true
|
||||
Type=Application
|
||||
5
pkg/usr/share/aptss/transhell/aptss_en_US.transhell
Normal file
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
TRANSHELL_CONTENT_RUNNING_IN_NOT_ROOT_USER="INFO:Running in non-root mode! If error occurs, please try to excute me as root."
|
||||
TRANSHELL_CONTENT_INFO_SOURCES_LIST_D_IS_EMPTY="INFO:sources.list.d directory is empty,will not try to sync"
|
||||
TRANSHELL_CONTENT_GETTING_SERVER_CONFIG_AND_MIRROR_LIST="Getting server and mirror lists..."
|
||||
TRANSHELL_CONTENT_PLEASE_USE_APTSS_INSTEAD_OF_APT="Please note: Although the error message suggests using \"apt\" (such as \"apt install --fix-broken\"), please use \"aptss\" instead of \"apt\" when troubleshooting errors (for example, change to \"aptss install --fix-broken\")."
|
||||
5
pkg/usr/share/aptss/transhell/aptss_zh_CN.transhell
Normal file
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
TRANSHELL_CONTENT_RUNNING_IN_NOT_ROOT_USER="信息:正在使用非root权限模式启动!若出现问题,请尝试使用root权限执行指令"
|
||||
TRANSHELL_CONTENT_INFO_SOURCES_LIST_D_IS_EMPTY="信息:sources.list.d文件夹是空的,将不会尝试同步"
|
||||
TRANSHELL_CONTENT_GETTING_SERVER_CONFIG_AND_MIRROR_LIST="从服务器获取配置和镜像列表..."
|
||||
TRANSHELL_CONTENT_PLEASE_USE_APTSS_INSTEAD_OF_APT="注意:尽管报错信息中提示使用apt(如apt install --fix-broken),请在排查错误的时候使用aptss而不是apt(对于例子,改为使用 aptss install --fix-broken)."
|
||||
@@ -40,7 +40,7 @@ _aptss()
|
||||
"list"
|
||||
"search"
|
||||
"show" "showsrc"
|
||||
"install" "remove" "purge" "autoremove"
|
||||
"install" "remove" "purge" "autoremove" "autopurge"
|
||||
"update"
|
||||
"upgrade" "full-upgrade" "dist-upgrade"
|
||||
"edit-sources"
|
||||
@@ -63,7 +63,7 @@ _aptss()
|
||||
# Complete a -t<SPACE><TAB>
|
||||
case $prev in
|
||||
-t|--target-release)
|
||||
COMPREPLY=( $( compgen -W "$( apt-cache policy -o Dir::Cache="/etc/aptss/" | egrep -o 'a=[^,]*|n=[^,]*' | cut -f2- -d= | sort -u)" -- "$cur" ) )
|
||||
COMPREPLY=( $( compgen -W "$( apt-cache policy -o Dir::Cache="/var/lib/aptss/" | egrep -o 'a=[^,]*|n=[^,]*' | cut -f2- -d= | sort -u)" -- "$cur" ) )
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
@@ -185,12 +185,12 @@ _aptss()
|
||||
return 0
|
||||
;;
|
||||
show|list|download|changelog|depends|rdepends)
|
||||
COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" -o Dir::Cache="/etc/aptss/" \
|
||||
COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" -o Dir::Cache="/var/lib/aptss/" \
|
||||
2> /dev/null ) )
|
||||
return 0
|
||||
;;
|
||||
install)
|
||||
COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" -o Dir::Cache="/etc/aptss/" \
|
||||
COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" -o Dir::Cache="/var/lib/aptss/" \
|
||||
2> /dev/null ) )
|
||||
if [[ "$cur" == ./* || "$cur" == /* ]]; then
|
||||
_filedir "deb"
|
||||
@@ -198,8 +198,8 @@ _aptss()
|
||||
return 0
|
||||
;;
|
||||
source|build-dep|showsrc|policy)
|
||||
COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" -o Dir::Cache="/etc/aptss/" \
|
||||
2> /dev/null ) $( apt-cache dumpavail -o Dir::Cache="/etc/aptss/" | \
|
||||
COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" -o Dir::Cache="/var/lib/aptss/" \
|
||||
2> /dev/null ) $( apt-cache dumpavail -o Dir::Cache="/var/lib/aptss/" | \
|
||||
command grep "^Source: $cur" | sort -u | cut -f2 -d" " ) )
|
||||
return 0
|
||||
;;
|
||||
|
||||
26
pkg/usr/share/dsg/org.deepin.dtkwidget.feature-display.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"magic": "dsg.config.meta",
|
||||
"version": "1.0",
|
||||
"contents": {
|
||||
"featureUpdated": {
|
||||
"value": false,
|
||||
"serial": 0,
|
||||
"flags": [],
|
||||
"name": "Whether the application has new feature updates",
|
||||
"name[zh_CN]": "配置应用的更新状态",
|
||||
"description": "Configure the update status of the application",
|
||||
"permissions": "readwrite",
|
||||
"visibility": "public"
|
||||
},
|
||||
"autoDisplayFeature": {
|
||||
"value": false,
|
||||
"serial": 0,
|
||||
"flags": [],
|
||||
"name": "The application automatically display new features once",
|
||||
"name[zh_CN]": "配置应用是否自动展示一次新特性",
|
||||
"description": "The application automatically display updated contents once",
|
||||
"permissions": "readwrite",
|
||||
"visibility": "public"
|
||||
}
|
||||
}
|
||||
}
|
||||
242
pkg/usr/share/fish/completions/aptss.fish
Normal file
@@ -0,0 +1,242 @@
|
||||
# 清除已有的 aptss 补全(如果有的话)
|
||||
complete -c aptss -e
|
||||
|
||||
# 禁用默认的文件补全(避免显示当前目录文件)
|
||||
complete -c aptss -f
|
||||
|
||||
########################################################################
|
||||
# aptss Fish 补全脚本(中文说明版,软件包补全显示简介)
|
||||
#
|
||||
# 说明:
|
||||
# 1. 子命令和选项的说明采用中文显示。
|
||||
# 2. 软件包补全部分不再调用 apt-cache,而是解析 aptss 自有的软件源索引文件,
|
||||
# 从 /var/lib/aptss/lists/*Packages(或 *Sources)中提取软件包名称及简介信息。
|
||||
#
|
||||
# 注意:如果你的 aptss 软件源索引文件位置或格式有变化,请相应修改下面的 awk 命令。
|
||||
########################################################################
|
||||
|
||||
### 辅助函数
|
||||
|
||||
# 解析 /var/lib/aptss/lists/*Packages 文件,输出符合当前输入前缀的“软件包<TAB>简介”
|
||||
function __fish_aptss_print_packages
|
||||
set cur (commandline -ct)
|
||||
# 将所有匹配的 Packages 文件拼接后,用 awk 分段解析(RS="" 表示以空行为分段)
|
||||
awk -v cur="$cur" '
|
||||
BEGIN { RS=""; FS="\n" }
|
||||
{
|
||||
pkg = ""; desc = "";
|
||||
for(i=1; i<=NF; i++){
|
||||
if($i ~ /^Package: /) { pkg = substr($i, 10) } # “Package: ”共9个字符
|
||||
else if($i ~ /^Description: /) { desc = substr($i, 14) } # “Description: ”共13个字符
|
||||
}
|
||||
if(pkg != "" && (cur == "" || pkg ~ ("^" cur))) {
|
||||
print pkg "\t" desc
|
||||
}
|
||||
}
|
||||
' /var/lib/aptss/lists/*Packages 2>/dev/null
|
||||
end
|
||||
|
||||
# 解析已安装软件包(这里仍使用 dpkg-query,如果需要使用 aptss 数据,可另外构造)
|
||||
function __fish_aptss_print_installed_packages
|
||||
set cur (commandline -ct)
|
||||
dpkg-query -W -f='${Package}\t${Description}\n' 2>/dev/null | grep -i "^$cur"
|
||||
end
|
||||
|
||||
# 解析 /var/lib/aptss/lists/*Sources 文件,输出源代码包信息(如果存在)
|
||||
function __fish_aptss_print_source_packages
|
||||
set cur (commandline -ct)
|
||||
awk -v cur="$cur" '
|
||||
BEGIN { RS=""; FS="\n" }
|
||||
{
|
||||
pkg = ""; desc = "";
|
||||
for(i=1; i<=NF; i++){
|
||||
if($i ~ /^Package: /) { pkg = substr($i, 10) }
|
||||
else if($i ~ /^Description: /) { desc = substr($i, 14) }
|
||||
}
|
||||
if(pkg != "" && (cur == "" || pkg ~ ("^" cur))) {
|
||||
print pkg "\t" desc
|
||||
}
|
||||
}
|
||||
' /var/lib/aptss/lists/*Sources 2>/dev/null
|
||||
end
|
||||
|
||||
# 翻译子命令为中文说明(用于补全时显示在括号内)
|
||||
function __fish_translate_aptss_cmd
|
||||
switch $argv[1]
|
||||
case ssupdate
|
||||
echo "更新软件源"
|
||||
case list
|
||||
echo "列出软件包"
|
||||
case search
|
||||
echo "搜索软件包"
|
||||
case show
|
||||
echo "显示软件包信息"
|
||||
case showsrc
|
||||
echo "显示源包信息"
|
||||
case install
|
||||
echo "安装软件包"
|
||||
case remove
|
||||
echo "移除软件包"
|
||||
case purge
|
||||
echo "彻底移除软件包"
|
||||
case autoremove
|
||||
echo "自动移除不必要的软件包"
|
||||
case update
|
||||
echo "更新软件包列表"
|
||||
case upgrade
|
||||
echo "升级软件包"
|
||||
case full-upgrade
|
||||
echo "完全升级(可能移除其他软件包)"
|
||||
case dist-upgrade
|
||||
echo "发行版升级"
|
||||
case edit-sources
|
||||
echo "编辑软件源列表"
|
||||
case help
|
||||
echo "显示帮助信息"
|
||||
case source
|
||||
echo "下载源代码包"
|
||||
case build-dep
|
||||
echo "安装构建依赖"
|
||||
case clean
|
||||
echo "清除软件包缓存"
|
||||
case autoclean
|
||||
echo "自动清理旧缓存"
|
||||
case download
|
||||
echo "下载软件包"
|
||||
case changelog
|
||||
echo "显示更新日志"
|
||||
case moo
|
||||
echo "彩蛋"
|
||||
case depends
|
||||
echo "显示软件包依赖"
|
||||
case rdepends
|
||||
echo "显示软件包逆向依赖"
|
||||
case policy
|
||||
echo "显示软件包策略"
|
||||
case '*'
|
||||
echo $argv[1]
|
||||
end
|
||||
end
|
||||
|
||||
### 定义各类子命令组
|
||||
|
||||
# 所有子命令列表
|
||||
set -g __aptss_commands ssupdate list search show showsrc install remove purge autoremove update upgrade full-upgrade dist-upgrade edit-sources help source build-dep clean autoclean download changelog moo depends rdepends policy
|
||||
|
||||
# 需要补全二进制软件包名称的子命令(例如 install、show、search、download、changelog、depends、rdepends)
|
||||
set -l __aptss_pkg_subcmds install show search download changelog depends rdepends
|
||||
|
||||
# 需要补全已安装软件包的子命令(例如 remove、purge、autoremove)
|
||||
set -l __aptss_installed_pkg_subcmds remove purge autoremove
|
||||
|
||||
# 需要补全源代码包的子命令(例如 source、build-dep、showsrc、policy)
|
||||
set -l __aptss_src_pkg_subcmds source build-dep showsrc policy
|
||||
|
||||
### 子命令补全
|
||||
# 未输入子命令时,显示所有候选子命令,并在括号中显示中文说明
|
||||
for cmd in $__aptss_commands
|
||||
set desc (__fish_translate_aptss_cmd $cmd)
|
||||
complete -c aptss -a $cmd -d "$desc" -n "not __fish_seen_subcommand_from $__aptss_commands"
|
||||
end
|
||||
|
||||
### 公共选项(适用于一组子命令)
|
||||
set -l group1 "install remove purge upgrade dist-upgrade full-upgrade autoremove"
|
||||
|
||||
complete -c aptss -n "__fish_seen_subcommand_from $group1" -l show-progress -d '显示进度'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from $group1" -l fix-broken -d '修复损坏的依赖'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from $group1" -l purge -d '清除配置文件'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from $group1" -l verbose-versions -d '显示详细版本'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from $group1" -l auto-remove -d '自动移除依赖'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from $group1" -s s -l simulate -d '模拟/试运行'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from $group1" -l download -d '下载软件包'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from $group1" -l fix-missing -d '修复丢失文件'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from $group1" -l fix-policy -d '修复策略'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from $group1" -l ignore-hold -d '忽略锁定'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from $group1" -l force-yes -d '强制确认'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from $group1" -l trivial-only -d '仅处理简单情况'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from $group1" -l reinstall -d '重新安装'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from $group1" -l solver -d '使用求解器'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from $group1" -s t -l target-release -d '目标版本'
|
||||
|
||||
# 附加的 GENERIC 选项
|
||||
complete -c aptss -n "__fish_seen_subcommand_from $group1" -s d -l download-only -d '仅下载'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from $group1" -s y -l assume-yes -d '默认确认'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from $group1" -l assume-no -d '默认否定'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from $group1" -s u -l show-upgraded -d '显示升级情况'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from $group1" -s m -l ignore-missing -d '忽略缺失'
|
||||
|
||||
### 针对各个子命令的专用选项
|
||||
|
||||
# update 命令
|
||||
complete -c aptss -n "__fish_seen_subcommand_from update" -l list-cleanup -d '清理列表'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from update" -l print-uris -d '显示 URI'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from update" -l allow-insecure-repositories -d '允许不安全的仓库'
|
||||
|
||||
# list 命令
|
||||
complete -c aptss -n "__fish_seen_subcommand_from list" -l installed -d '已安装的软件包'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from list" -l upgradable -d '可升级的软件包'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from list" -l manual-installed -d '手动安装的软件包'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from list" -s v -l verbose -d '详细模式'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from list" -s a -l all-versions -d '显示所有版本'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from list" -s t -l target-release -d '目标版本'
|
||||
|
||||
# show 命令
|
||||
complete -c aptss -n "__fish_seen_subcommand_from show" -s a -l all-versions -d '显示所有版本'
|
||||
|
||||
# depends 和 rdepends 命令(逐项添加各选项)
|
||||
for opt in i important installed pre-depends depends recommends suggests replaces breaks conflicts enhances recurse implicit
|
||||
complete -c aptss -n "__fish_seen_subcommand_from depends rdepends" -l $opt -d $opt
|
||||
end
|
||||
complete -c aptss -n "__fish_seen_subcommand_from depends rdepends" -s i -d '选项 -i'
|
||||
|
||||
# search 命令
|
||||
complete -c aptss -n "__fish_seen_subcommand_from search" -s n -l names-only -d '仅匹配名称'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from search" -s f -l full -d '全文搜索'
|
||||
|
||||
# showsrc 命令
|
||||
complete -c aptss -n "__fish_seen_subcommand_from showsrc" -l only-source -d '仅显示源代码'
|
||||
|
||||
# source 命令
|
||||
complete -c aptss -n "__fish_seen_subcommand_from source" -s s -l simulate -d '模拟'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from source" -s b -l compile -d '编译/构建'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from source" -s P -l build-profiles -d '构建配置'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from source" -l diff-only -d '仅显示差异'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from source" -l debian-only -d '仅限 Debian'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from source" -l tar-only -d '仅打包 tar'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from source" -l dsc-only -d '仅下载 DSC'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from source" -s t -l target-release -d '目标版本'
|
||||
|
||||
# build-dep 命令
|
||||
complete -c aptss -n "__fish_seen_subcommand_from build-dep" -s a -l host-architecture -d '主机架构'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from build-dep" -s s -l simulate -d '模拟'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from build-dep" -s P -l build-profiles -d '构建配置'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from build-dep" -s t -l target-release -d '目标版本'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from build-dep" -l purge -d '清除'
|
||||
complete -c aptss -n "__fish_seen_subcommand_from build-dep" -l solver -d '求解依赖'
|
||||
|
||||
# moo 命令
|
||||
complete -c aptss -n "__fish_seen_subcommand_from moo" -l color -d '彩蛋模式'
|
||||
|
||||
# clean 和 autoclean 命令
|
||||
complete -c aptss -n "__fish_seen_subcommand_from clean autoclean" -s s -l simulate -d '模拟'
|
||||
|
||||
### 针对 -t/--target-release 的特殊补全
|
||||
complete -c aptss -n '
|
||||
begin
|
||||
set -l prev (commandline -poc | string trim)
|
||||
test "$prev" = "-t" -o "$prev" = "--target-release"
|
||||
end
|
||||
' -a '(__fish_aptss_target_release)' -d '目标版本'
|
||||
|
||||
### 软件包补全
|
||||
# 对于需要二进制软件包名称的子命令,调用 __fish_aptss_print_packages,
|
||||
# 输出的每一行格式为 "包名<TAB>简介",Fish 会将 TAB 后内容显示为注释。
|
||||
complete -c aptss -n "__fish_seen_subcommand_from $__aptss_pkg_subcmds" -a '(__fish_aptss_print_packages)'
|
||||
|
||||
# 对于 remove、purge、autoremove 命令,补全已安装的软件包(使用 dpkg-query 输出)
|
||||
complete -c aptss -n "__fish_seen_subcommand_from $__aptss_installed_pkg_subcmds" -a '(__fish_aptss_print_installed_packages)' -d '已安装软件包'
|
||||
|
||||
# 对于 source、build-dep、showsrc、policy 命令,补全源代码包,
|
||||
# 如果存在对应的 Sources 索引文件,则调用 __fish_aptss_print_source_packages,
|
||||
# 否则可考虑默认使用二进制包的索引。
|
||||
complete -c aptss -n "__fish_seen_subcommand_from $__aptss_src_pkg_subcmds" -a '(__fish_aptss_print_source_packages)' -d '源代码包'
|
||||
|
After Width: | Height: | Size: 89 KiB |
@@ -1,6 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
@@ -10,12 +8,15 @@
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
inkscape:export-ydpi="127"
|
||||
inkscape:export-xdpi="127"
|
||||
inkscape:export-filename="/home/zhangtianyi/Desktop/deepin-community-store.png"
|
||||
width="200mm"
|
||||
height="200mm"
|
||||
viewBox="0 0 200 200"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
|
||||
inkscape:version="1.0 (4035a4f, 2020-05-01)"
|
||||
sodipodi:docname="deepin-community-store.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
@@ -170,17 +171,18 @@
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.35"
|
||||
inkscape:cx="120.33119"
|
||||
inkscape:cy="507.94585"
|
||||
inkscape:zoom="0.7"
|
||||
inkscape:cx="13.97476"
|
||||
inkscape:cy="371.76152"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:current-layer="layer2"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1040"
|
||||
inkscape:window-height="941"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:document-rotation="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
@@ -199,70 +201,54 @@
|
||||
id="layer1"
|
||||
transform="translate(0,-97)">
|
||||
<rect
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ebebeb;stroke-width:2.87003541;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter2201)"
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ebebeb;stroke-width:2.87004;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter2201)"
|
||||
id="rect2119"
|
||||
width="162.54665"
|
||||
height="170.16383"
|
||||
x="20.431099"
|
||||
y="112.51035"
|
||||
rx="30"
|
||||
ry="30" />
|
||||
<circle
|
||||
style="opacity:1;fill:#959595;fill-opacity:1;stroke:#e9e9e9;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path2121"
|
||||
cx="58.208336"
|
||||
cy="131.8244"
|
||||
r="6.0476193" />
|
||||
<circle
|
||||
style="opacity:1;fill:#9c9c9c;fill-opacity:1;stroke:#eaeaea;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path2121-5"
|
||||
cx="143.63095"
|
||||
cy="133.71429"
|
||||
r="6.0476193" />
|
||||
ry="30"
|
||||
transform="matrix(1.0253898,0,0,0.97932001,-4.2824724,3.4808454)" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="Layer 2">
|
||||
<path
|
||||
style="fill:#ffc344;fill-opacity:1;stroke:none;stroke-width:0.3091144px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 94.205599,42.389243 c 0,0 11.145081,-0.157476 22.599701,6.928753 11.45465,7.086223 18.11074,13.857508 20.27783,18.266716 2.16708,4.409209 9.28755,12.125332 9.13277,26.297795 -0.15488,14.172433 -3.40543,23.620763 -8.97797,31.494323 -5.57254,7.87359 -15.63405,13.85751 -27.70786,14.17247 -12.073829,0.31494 -19.813453,-7.55863 -22.444927,-11.96786 -2.631469,-4.4092 -3.715019,-13.85751 -0.464377,-20.62877 3.250645,-6.77132 8.358796,-6.77132 10.061513,-6.14141 1.702724,0.6299 2.167092,1.5747 3.095852,3.30689 0.928749,1.73219 1.547929,1.41726 2.941089,0.47243 1.39311,-0.94484 1.85748,-2.04715 1.54792,-3.46439 -0.30958,-1.417253 -2.16711,-3.149433 -3.71505,-3.621853 -1.547909,-0.47241 -3.715016,-1.88966 -6.810869,-1.41721 -3.095848,0.47238 -9.132757,2.04711 -14.240906,8.975843 -5.108153,6.92875 -4.488988,17.63684 -1.393134,22.67593 3.095849,5.0391 8.977962,14.48739 21.980539,17.79431 13.00259,3.30693 34.05435,-6.45633 41.32959,-21.57361 7.27524,-15.1173 7.43004,-22.20352 7.12048,-34.643764 C 148.22821,76.875544 137.23793,58.293884 125.00933,51.522601 112.78073,44.751315 103.64797,40.814522 94.205599,42.389243 Z"
|
||||
style="fill:#ffc344;fill-opacity:1;stroke:none;stroke-width:0.309114px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 94.205599,38.155907 c 0,0 11.145081,-0.157476 22.599701,6.928753 11.45465,7.086223 18.11074,13.857508 20.27783,18.266716 2.16708,4.409209 9.28755,12.125332 9.13277,26.297795 -0.15488,14.172409 -3.40543,23.620739 -8.97797,31.494299 -5.57254,7.87359 -15.63405,13.85751 -27.70786,14.17247 -12.073829,0.31494 -19.813453,-7.55863 -22.444927,-11.96786 -2.631469,-4.4092 -3.715019,-13.85751 -0.464377,-20.62877 3.250645,-6.771296 8.358796,-6.771296 10.061513,-6.141389 1.702724,0.629897 2.167092,1.574691 3.095852,3.306872 0.928749,1.732187 1.547929,1.417257 2.941089,0.472427 1.39311,-0.944834 1.85748,-2.047138 1.54792,-3.464372 -0.30958,-1.417247 -2.16711,-3.149427 -3.71505,-3.621847 -1.547909,-0.47241 -3.715016,-1.88966 -6.810869,-1.41721 -3.095848,0.47238 -9.132757,2.04711 -14.240906,8.975819 -5.108153,6.92875 -4.488988,17.63684 -1.393134,22.67593 3.095849,5.0391 8.977962,14.48739 21.980539,17.79431 13.00259,3.30693 34.05435,-6.45633 41.32959,-21.57361 7.27524,-15.1173 7.43004,-22.203505 7.12048,-34.64374 C 148.22821,72.642208 137.23793,54.060548 125.00933,47.289265 112.78073,40.517979 103.64797,36.581186 94.205599,38.155907 Z"
|
||||
id="path1002"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#f06767;fill-opacity:1;stroke:none;stroke-width:0.3091144px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 100.67541,105.29647 c 0,0 -3.06474,-2.8951 -5.801108,2.22698 -2.736373,5.12205 -4.049827,9.68737 -1.313459,15.25486 2.736367,5.56745 8.428007,8.90792 17.184447,8.79659 8.75636,-0.11148 15.21419,-2.22699 19.0451,-8.5739 3.83094,-6.34692 6.7862,-11.02357 7.11457,-13.36191 0.32839,-2.33835 2.07965,0.33404 1.53239,2.33834 -0.54728,2.00426 -0.43783,5.9015 1.09454,5.12204 1.53237,-0.77942 2.73637,-2.00427 2.95526,-1.44753 0.21893,0.55673 -1.75127,4.00859 -2.68162,5.73449 -0.93039,1.7259 -3.83094,5.90153 -5.5275,7.51607 -1.69652,1.61458 -4.04981,3.89724 -6.84092,5.56747 -2.79109,1.67024 -7.11454,3.61887 -9.52255,4.06427 -2.40801,0.44539 -7.22403,1.39184 -9.96042,1.2805 -2.73635,-0.11137 -6.23892,-0.61243 -10.124558,-2.56104 -3.885645,-1.94859 -8.099657,-4.95505 -9.741479,-7.96148 -1.641825,-3.00643 -4.159283,-5.73449 -3.61201,-13.30623 0.547277,-7.57175 3.010008,-11.46899 4.870741,-13.25056 1.860731,-1.7816 4.597103,-2.56105 6.403105,-2.17131 1.806004,0.38971 2.955282,1.44755 3.393102,2.22697 0.43781,0.77944 1.149279,2.22699 1.532369,2.50538 z"
|
||||
style="fill:#f06767;fill-opacity:1;stroke:none;stroke-width:0.309114px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 100.67541,101.06311 c 0,0 -3.06474,-2.895088 -5.801108,2.22698 -2.736373,5.12205 -4.049827,9.68737 -1.313459,15.25486 2.736367,5.56745 8.428007,8.90792 17.184447,8.79659 8.75636,-0.11148 15.21419,-2.22699 19.0451,-8.5739 3.83094,-6.34692 6.7862,-11.02357 7.11457,-13.36191 0.32839,-2.33835 2.07965,0.33404 1.53239,2.33834 -0.54728,2.00426 -0.43783,5.9015 1.09454,5.12204 1.53237,-0.77942 2.73637,-2.00427 2.95526,-1.44753 0.21893,0.55673 -1.75127,4.00859 -2.68162,5.73449 -0.93039,1.7259 -3.83094,5.90153 -5.5275,7.51607 -1.69652,1.61458 -4.04981,3.89724 -6.84092,5.56747 -2.79109,1.67024 -7.11454,3.61887 -9.52255,4.06427 -2.40801,0.44539 -7.22403,1.39184 -9.96042,1.2805 -2.73635,-0.11137 -6.23892,-0.61243 -10.124558,-2.56104 -3.885645,-1.94859 -8.099657,-4.95505 -9.741479,-7.96148 -1.641825,-3.00643 -4.159283,-5.73449 -3.61201,-13.30623 0.547277,-7.57175 3.010008,-11.46899 4.870741,-13.250551 1.860731,-1.781588 4.597103,-2.561035 6.403105,-2.171298 1.806004,0.38971 2.955282,1.447544 3.393102,2.226958 0.43781,0.779437 1.149279,2.226981 1.532369,2.505371 z"
|
||||
id="path1012"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#3f62eb;fill-opacity:1;stroke:none;stroke-width:0.3091144px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 128.47695,145.38219 c 0,0 13.13457,-7.6831 19.26404,-19.82016 6.12948,-12.13707 8.7564,-19.93152 7.99021,-31.84592 -0.76619,-11.914358 -2.62692,-6.012854 -0.54728,-11.134928 2.07964,-5.122074 -1.31345,-15.254857 0.10943,-15.922949 1.42292,-0.668097 4.48765,4.453971 5.3633,8.573903 0.87562,4.119922 4.70654,16.813721 1.64181,32.959394 -3.06472,16.14564 -10.28872,22.60391 -15.10475,26.94655 -4.81603,4.34261 -15.7615,11.91437 -17.40332,11.80302 -1.64183,-0.11148 -1.86073,-0.11148 -1.31348,-1.55891 z"
|
||||
style="fill:#3f62eb;fill-opacity:1;stroke:none;stroke-width:0.309114px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 132.18114,140.09049 c 0,0 13.13457,-7.6831 19.26404,-19.82016 6.12948,-12.13707 8.7564,-19.93152 7.99021,-31.84589 -0.76619,-11.914358 -2.62692,-6.012854 -0.54728,-11.134928 2.07964,-5.122074 -1.31345,-15.254857 0.10943,-15.922949 1.42292,-0.668097 4.48765,4.453971 5.3633,8.573903 0.87562,4.119922 4.70654,16.813721 1.64181,32.959364 -3.06472,16.14564 -10.28872,22.60391 -15.10475,26.94655 -4.81603,4.34261 -15.7615,11.91437 -17.40332,11.80302 -1.64183,-0.11148 -1.86073,-0.11148 -1.31348,-1.55891 z"
|
||||
id="path1014"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#fce102;fill-opacity:1;stroke:none;stroke-width:0.3091144px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 104.83471,121.99883 c 0,0 7.00512,1.5589 12.36838,-1.78156 5.3633,-3.3405 9.5226,-8.79661 10.17931,-10.91225 0.65672,-2.11564 0.76619,1.89294 1.53236,-0.11125 0.76618,-2.00432 3.83093,-6.01288 2.29855,-15.366239 -1.53237,-9.35333 -1.64182,-9.798747 -4.48762,-14.809463 -2.84586,-5.010719 -9.63207,-11.91437 -13.79134,-14.141359 -4.15927,-2.226986 -9.96037,-5.567464 -17.950594,-5.344766 -7.990202,0.222699 -5.363286,-0.334048 -13.025124,1.002146 -7.661836,1.336187 -14.557491,5.010717 -16.856041,7.015006 -2.298552,2.004286 -8.428023,7.460405 -10.61712,10.46684 -2.189098,3.00643 -8.209113,9.798741 -11.383303,19.263442 -3.174189,9.464683 -4.487646,10.466823 -4.706555,16.702393 -0.21891,6.23557 0.547274,7.90578 -0.766185,8.46256 -1.31346,0.55673 -1.094547,-4.67668 -0.985094,-8.35123 0.109463,-3.6745 0.109463,-13.25056 4.925468,-23.940084 4.816015,-10.689538 13.353489,-19.597489 18.169503,-22.826622 4.816009,-3.229128 10.398208,-7.571752 19.045135,-9.687392 8.646933,-2.115635 17.293863,-1.781586 22.65716,-0.779443 5.3633,1.002145 13.68187,4.453974 18.1695,7.905802 4.48766,3.45183 9.41314,7.683099 13.13459,14.586765 3.72146,6.903648 4.70654,15.700251 4.59709,19.374771 -0.10943,3.674543 -1.97019,12.137103 -4.81601,16.257013 -2.84583,4.11993 -6.67674,9.0193 -10.61711,10.80089 -3.94039,1.78157 -8.75642,2.33833 -12.69675,0.55674 -3.94039,-1.78161 -3.72147,-2.44969 -4.3782,-4.34263 z"
|
||||
style="fill:#fce102;fill-opacity:1;stroke:none;stroke-width:0.309114px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 104.83471,117.2363 c 0,0 7.00512,1.5589 12.36838,-1.78156 5.3633,-3.3405 9.5226,-8.79661 10.17931,-10.91225 0.65672,-2.11564 0.76619,1.89294 1.53236,-0.11125 0.76618,-2.00432 3.83093,-6.012871 2.29855,-15.366212 -1.53237,-9.35333 -1.64182,-9.798747 -4.48762,-14.809463 -2.84586,-5.010719 -9.63207,-11.91437 -13.79134,-14.141359 -4.15927,-2.226986 -9.96037,-5.567464 -17.950594,-5.344766 -7.990202,0.222699 -5.363286,-0.334048 -13.025124,1.002146 -7.661836,1.336187 -14.557491,5.010717 -16.856041,7.015006 -2.298552,2.004286 -8.428023,7.460405 -10.61712,10.46684 -2.189098,3.00643 -8.209113,9.798741 -11.383303,19.263442 -3.174189,9.464656 -4.487646,10.466796 -4.706555,16.702366 -0.21891,6.23557 0.547274,7.90578 -0.766185,8.46256 -1.31346,0.55673 -1.094547,-4.67668 -0.985094,-8.35123 0.109463,-3.6745 0.109463,-13.250536 4.925468,-23.940057 4.816015,-10.689538 13.353489,-19.597489 18.169503,-22.826622 4.816009,-3.229128 10.398208,-7.571752 19.045135,-9.687392 8.646933,-2.115635 17.293863,-1.781586 22.65716,-0.779443 5.3633,1.002145 13.68187,4.453974 18.1695,7.905802 4.48766,3.45183 9.41314,7.683099 13.13459,14.586765 3.72146,6.903648 4.70654,15.700251 4.59709,19.374771 -0.10943,3.674531 -1.97019,12.137076 -4.81601,16.256986 -2.84583,4.11993 -6.67674,9.0193 -10.61711,10.80089 -3.94039,1.78157 -8.75642,2.33833 -12.69675,0.55674 -3.94039,-1.78161 -3.72147,-2.44969 -4.3782,-4.34263 z"
|
||||
id="path1016"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#5ed938;fill-opacity:1;stroke:none;stroke-width:0.3091144px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 104.83471,121.99883 c 0,0 5.54674,1.56707 10.22918,-0.55878 4.68248,-2.12587 6.4239,-4.17301 7.54615,-5.3934 1.12223,-1.22042 3.25064,-3.50376 3.83112,-4.56669 0.58046,-1.06292 1.19962,-1.69282 1.19962,-2.08649 0,-0.39369 -1.08353,-1.33853 -0.0386,-3.62186 1.04482,-2.28333 1.97361,-7.519273 1.50922,-9.881333 -0.46438,-2.362073 -1.54792,-15.471616 -10.83547,-24.211303 -9.28753,-8.739678 -18.497709,-9.763242 -18.497709,-9.763242 0,0 14.705309,4.645415 21.593569,18.739134 6.88828,14.093741 4.64376,23.148344 0.23218,28.659854 -4.41158,5.51151 -10.68068,6.14141 -12.38342,4.72415 -1.70268,-1.41725 -5.2113,6.47164 -4.38574,7.95996 z"
|
||||
style="fill:#5ed938;fill-opacity:1;stroke:none;stroke-width:0.309114px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 104.83471,117.2363 c 0,0 5.54674,1.56707 10.22918,-0.55878 4.68248,-2.12587 6.4239,-4.17301 7.54615,-5.3934 1.12223,-1.22042 3.25064,-3.50376 3.83112,-4.56669 0.58046,-1.06292 1.19962,-1.69282 1.19962,-2.08649 0,-0.39369 -1.08353,-1.33853 -0.0386,-3.62186 1.04482,-2.283321 1.97361,-7.519246 1.50922,-9.881306 -0.46438,-2.362073 -1.54792,-15.471616 -10.83547,-24.211303 -9.28753,-8.739678 -18.497709,-9.763242 -18.497709,-9.763242 0,0 14.705309,4.645415 21.593569,18.739134 6.88828,14.093741 4.64376,23.148323 0.23218,28.659827 -4.41158,5.51151 -10.68068,6.14141 -12.38342,4.72415 -1.70268,-1.41725 -5.2113,6.47164 -4.38574,7.95996 z"
|
||||
id="path1018"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#8fdbe9;fill-opacity:1;stroke:none;stroke-width:0.3091144px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 86.930353,71.44277 c 0,0 -9.906718,-0.07875 -17.414156,4.881616 -7.507436,4.960371 -11.14506,8.975903 -13.23476,12.125332 -2.089697,3.149446 -4.488981,7.479909 -4.179395,7.401179 0.309585,-0.0788 9.055364,-12.2828 15.866229,-15.432236 6.81087,-3.149436 13.621741,-7.558644 22.986687,-4.330482 9.364952,3.228184 13.776542,7.716118 15.788842,6.613829 2.0123,-1.1023 2.3993,-2.440824 1.23835,-3.936804 -1.16094,-1.495979 -9.364961,-8.818417 -21.051797,-7.322434 z"
|
||||
style="fill:#8fdbe9;fill-opacity:1;stroke:none;stroke-width:0.309114px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 86.930353,66.680267 c 0,0 -9.906718,-0.07875 -17.414156,4.881616 -7.507436,4.960371 -11.14506,8.975903 -13.23476,12.125332 -2.089697,3.149446 -4.488981,7.479909 -4.179395,7.401179 0.309585,-0.0788 9.055364,-12.2828 15.866229,-15.432236 6.81087,-3.149436 13.621741,-7.558644 22.986687,-4.330482 9.364952,3.228184 13.776542,7.716118 15.788842,6.613829 2.0123,-1.1023 2.3993,-2.440824 1.23835,-3.936804 -1.16094,-1.495979 -9.364961,-8.818417 -21.051797,-7.322434 z"
|
||||
id="path1020"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#fd7aff;fill-opacity:1;stroke:none;stroke-width:0.3091144px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 72.107699,134.35862 c 0.65673,0.33404 5.58219,8.90795 9.522571,10.35548 3.940372,1.44755 6.567286,1.55888 7.005104,2.227 0.437821,0.66809 0.328367,4.00858 3.830921,5.45614 3.502555,1.44753 19.920785,6.01284 24.627325,6.45824 4.70658,0.4454 0.76621,3.22911 3.61202,4.23125 2.84584,1.00217 14.99532,1.5589 17.95061,0.33405 2.95527,-1.22483 2.95527,1.1135 -2.1891,3.1178 -5.14437,2.00427 -18.71677,6.79231 -27.58261,5.67882 -8.86586,-1.1135 -19.373526,-3.00644 -25.284086,-7.23772 -5.910565,-4.23126 -8.42802,-6.1242 -6.238924,-6.45824 2.189096,-0.33407 7.990199,5.9015 10.507662,6.56959 2.517463,0.66809 4.597103,0.66809 3.064735,-0.8908 -1.532366,-1.55888 -11.492755,-8.46253 -12.477849,-8.1285 -0.985092,0.33405 -3.064737,0.55674 -4.816012,-1.78159 -1.751278,-2.33832 -10.945484,-15.25485 -10.39821,-22.1585 0.547273,-6.90365 2.298552,-5.12208 4.378195,-2.56103 2.079641,2.56103 4.487648,4.78801 4.487648,4.78801 z"
|
||||
style="fill:#fd7aff;fill-opacity:1;stroke:none;stroke-width:0.309114px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 72.107699,130.12526 c 0.65673,0.33404 5.58219,8.90795 9.522571,10.35548 3.940372,1.44755 6.567286,1.55888 7.005104,2.227 0.437821,0.66809 0.328367,4.00858 3.830921,5.45614 3.502555,1.44753 19.920785,6.01284 24.627325,6.45824 4.70658,0.4454 0.76621,3.22911 3.61202,4.23125 2.84584,1.00217 14.99532,1.5589 17.95061,0.33405 2.95527,-1.22483 2.95527,1.1135 -2.1891,3.1178 -5.14437,2.00427 -18.71677,6.79231 -27.58261,5.67882 -8.86586,-1.1135 -19.373526,-3.00644 -25.284086,-7.23772 -5.910565,-4.23126 -8.42802,-6.1242 -6.238924,-6.45824 2.189096,-0.33407 7.990199,5.9015 10.507662,6.56959 2.517463,0.66809 4.597103,0.66809 3.064735,-0.8908 -1.532366,-1.55888 -11.492755,-8.46253 -12.477849,-8.1285 -0.985092,0.33405 -3.064737,0.55674 -4.816012,-1.78159 -1.751278,-2.33832 -10.945484,-15.25485 -10.39821,-22.1585 0.547273,-6.90365 2.298552,-5.12208 4.378195,-2.56103 2.079641,2.56103 4.487648,4.78801 4.487648,4.78801 z"
|
||||
id="path1022"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#939393;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 56.889259,34.981831 c 0,0 16.252976,26.08036 43.845241,26.83631 27.59226,0.75596 42.33333,-23.8125 42.33333,-23.8125"
|
||||
id="path2138"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
@@ -4,15 +4,15 @@
|
||||
<policyconfig>
|
||||
<vendor>Spark Store</vendor>
|
||||
<icon_name>x-package-repository</icon_name>
|
||||
<action id="store.spark-app.ss-do-upgrade-worker">
|
||||
<description>运行ss-do-upgrade-worker需要权限</description>
|
||||
<message>要使用ss-do-upgrade-worker需要权限</message>
|
||||
<action id="store.spark-app.ss-do-upgrade">
|
||||
<description>运行ss-do-upgrade需要权限</description>
|
||||
<message>要使用ss-do-upgrade需要权限</message>
|
||||
<defaults>
|
||||
<allow_any>yes</allow_any>
|
||||
<allow_inactive>yes</allow_inactive>
|
||||
<allow_active>yes</allow_active>
|
||||
</defaults>
|
||||
<annotate key="org.freedesktop.policykit.exec.path">/opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade-worker.sh</annotate>
|
||||
<annotate key="org.freedesktop.policykit.exec.path">/opt/durapps/spark-store/bin/update-upgrade/ss-do-upgrade.sh</annotate>
|
||||
<annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate>
|
||||
</action>
|
||||
</policyconfig>
|
||||
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
TRANSHELL_CONTENT_HASH_CHECK_FAILED="Failed in checking package hash! \nPossibly reason can be the package is broken, laggy in sync of Spark Store repository, or, there is a malware attempt to attack. \nIf you don't know what happend, please try install again after execute the command below\n sudo aptss update\n\nIf the problem still happen, please click APP Feedback button in the APP information page to feedback to us.\n\n If you are in the Audition Group,Please use ssaudit instead of ssinstall to audit APPs,for ssinstall is used for password-free install now.\nIf you want to install an app that is removed from Spark Store repository,you can also use ssaudit."
|
||||
TRANSHELL_CONTENT_PLEASE_RUN_AS_ROOT="Please run ssinstall as root"
|
||||
TRANSHELL_CONTENT_FILE_NOT_EXIST="File not exist"
|
||||
TRANSHELL_CONTENT_WILL_NOT_DELETE_DEB="No delete after install option given, will not delete the deb"
|
||||
TRANSHELL_CONTENT_DEB_IS_DELETED="--delete-after-install option is given and the installation is succeeded, delete the deb file."
|
||||
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
TRANSHELL_CONTENT_HASH_CHECK_FAILED="软件包校验失败!这不应该发生!\n可能是因为软件包已损坏,星火仓库未同步,或者最坏的情况:恶意软件尝试利用自动安装来入侵系统!\n如果你不清楚发生了什么,请执行 sudo aptss update 后再尝试安装。\n如果问题仍然存在,请在应用信息界面点击 应用反馈 来提交反馈给我们!\n\n 如果你是审核人员,请使用 ssaudit来替代ssinstall进行审核工作,因为现在ssinstall已经被用于免密安装。\n如果你正在尝试安装已经下架的星火应用,也可用ssaudit来替代ssinstall"
|
||||
TRANSHELL_CONTENT_PLEASE_RUN_AS_ROOT="请使用root启动ssinstall"
|
||||
TRANSHELL_CONTENT_FILE_NOT_EXIST="文件不存在"
|
||||
TRANSHELL_CONTENT_WILL_NOT_DELETE_DEB="未指定安装后删除或安装出错,不删除deb包"
|
||||
TRANSHELL_CONTENT_DEB_IS_DELETED="使用了--delete-after-install选项且安装未出错,删除deb包"
|
||||
@@ -10,16 +10,19 @@ TEMPLATE = subdirs
|
||||
CONFIG += ordered
|
||||
|
||||
SUBDIRS += \
|
||||
src/spark-dstore-patch \
|
||||
src/spark-store.pro
|
||||
|
||||
#TRANSLATIONS += \
|
||||
# translations/spark-store_fr.ts \
|
||||
# translations/spark-store_en.ts \
|
||||
# translations/spark-store_zh_CN.ts
|
||||
# https://wiki.debian.org/Hardening
|
||||
QMAKE_CFLAGS *= $(shell dpkg-buildflags --get CFLAGS)
|
||||
QMAKE_CPPFLAGS *= $(shell dpkg-buildflags --get CPPFLAGS)
|
||||
QMAKE_CXXFLAGS *= $(shell dpkg-buildflags --get CXXFLAGS)
|
||||
QMAKE_LFLAGS *= $(shell dpkg-buildflags --get LDFLAGS)
|
||||
|
||||
# Update translation files
|
||||
CONFIG(release, debug|release): system(bash $${PWD}/translate_generation.sh)
|
||||
CONFIG(release, debug | release) {
|
||||
system(bash $${PWD}/translate_update.sh)
|
||||
system(bash $${PWD}/translate_generation.sh)
|
||||
}
|
||||
|
||||
# Rules for deployment
|
||||
tool.files += tool/*
|
||||
@@ -37,18 +40,28 @@ qm.path = /usr/share/spark-store/translations
|
||||
bash_completion.files += pkg/usr/share/bash-completion/completions/aptss
|
||||
bash_completion.path = /usr/share/bash-completion/completions
|
||||
|
||||
desktop.files += pkg/usr/share/applications/spark-store.desktop
|
||||
fish_completion.files += pkg/usr/share/fish/completions/aptss.fish
|
||||
fish_completion.path = /usr/share/fish/completions/
|
||||
|
||||
desktop.files += pkg/usr/share/applications/*.desktop
|
||||
desktop.path = /usr/share/applications
|
||||
|
||||
service.files += pkg/usr/lib/systemd/system/spark-update-notifier.service
|
||||
service.path = /usr/lib/systemd/system/
|
||||
|
||||
polkit-1.files +=pkg/usr/share/polkit-1/actions/store.spark-app.ss-do-upgrade-worker.policy
|
||||
polkit-1.files += pkg/usr/share/polkit-1/actions/*
|
||||
polkit-1.path = /usr/share/polkit-1/actions/
|
||||
|
||||
icon.files += pkg/usr/share/icons/hicolor/scalable/apps/spark-store.svg
|
||||
icon.files += pkg/usr/share/icons/hicolor/scalable/apps/*.svg
|
||||
icon.files += pkg/usr/share/icons/hicolor/scalable/apps/*.png
|
||||
icon.path = /usr/share/icons/hicolor/scalable/apps
|
||||
|
||||
ssinstall-transhell.files += pkg/usr/share/ssinstall/transhell
|
||||
ssinstall-transhell.path = /usr/share/ssinstall/
|
||||
|
||||
aptss-transhell.files += pkg/usr/share/aptss/transhell
|
||||
aptss-transhell.path = /usr/share/aptss/
|
||||
|
||||
tmp.files += pkg/tmp/spark-store-install/feedback.sh
|
||||
tmp.path = /tmp/spark-store-install
|
||||
|
||||
@@ -57,10 +70,12 @@ INSTALLS += \
|
||||
qm \
|
||||
desktop \
|
||||
icon \
|
||||
# preferences \
|
||||
ssinstall-transhell \
|
||||
aptss-transhell \
|
||||
# sourceslist \
|
||||
tmp \
|
||||
service \
|
||||
bash_completion \
|
||||
fish_completion \
|
||||
polkit-1
|
||||
# 暂时不添加
|
||||
# 暂时不添加
|
||||
|
||||
232
src/application.cpp
Normal file
@@ -0,0 +1,232 @@
|
||||
#include "application.h"
|
||||
#include "mainwindow-dtk.h"
|
||||
#include "utils/utils.h"
|
||||
|
||||
#include <QDir>
|
||||
#include <QJsonArray>
|
||||
#include <DPlatformWindowHandle>
|
||||
#include <DLog>
|
||||
#include <DGuiApplicationHelper>
|
||||
#include <DAboutDialog>
|
||||
#if (DTK_VERSION >= DTK_VERSION_CHECK(5, 6, 4, 0))
|
||||
#include <DFeatureDisplayDialog>
|
||||
#endif
|
||||
|
||||
#include <QSettings>
|
||||
#include <QStandardPaths>
|
||||
#include <QTranslator>
|
||||
|
||||
DCORE_USE_NAMESPACE
|
||||
|
||||
Application::Application(int &argc, char **argv)
|
||||
: DApplication(argc, argv)
|
||||
{
|
||||
// Wayland 环境下使用,防止子控件 Native 化
|
||||
if (!DPlatformWindowHandle::pluginVersion().isEmpty()) {
|
||||
setAttribute(Qt::AA_DontCreateNativeWidgetSiblings, true);
|
||||
}
|
||||
setAttribute(Qt::AA_UseHighDpiPixmaps);
|
||||
|
||||
setQuitOnLastWindowClosed(false); // 启用托盘图标时,关闭窗口程序仍然运行
|
||||
|
||||
loadTranslator(); // 载入翻译
|
||||
|
||||
setOrganizationName("spark-union");
|
||||
setApplicationName("spark-store"); // 影响 ~/.config/spark-union ~/.local/share/spark-union 下文件夹名称
|
||||
setApplicationDisplayName(QObject::tr("Spark Store")); // 设置窗口显示标题 (Wayland 下会显示 Qt 原生标题栏)
|
||||
setProductName(QObject::tr("Spark Store"));
|
||||
setProductIcon(QIcon::fromTheme("spark-store"));
|
||||
setApplicationHomePage("https://gitee.com/spark-store-project");
|
||||
setApplicationDescription(
|
||||
QObject::tr(
|
||||
"<span style=' font-size:10pt;font-weight:60;'>An appstore powered by community</span><br/>"
|
||||
"<a href='https://www.spark-app.store/'>https://www.spark-app.store</a><br/>"
|
||||
"<span style=' font-size:12pt;'>Spark developers</span>"));
|
||||
setApplicationLicense(" <a href='https://gitee.com/spark-store-project/spark-store/blob/Flamescion/LICENSE'>Spark Opensource License</a> ");
|
||||
|
||||
// 检查 ~/.config/spark-union/spark-store 文件夹是否存在
|
||||
checkAppConfigLocation();
|
||||
|
||||
// 初始化日志模块 (默认日志位置 ~/.cache/spark-union/spark-store)
|
||||
DLogManager::registerConsoleAppender();
|
||||
DLogManager::registerFileAppender();
|
||||
|
||||
// 获取版本特性信息
|
||||
m_featuresJsonObj = Utils::parseFeatureJsonFile();
|
||||
}
|
||||
|
||||
void Application::handleAboutAction()
|
||||
{
|
||||
if (aboutDialog() && aboutDialog()->parent() == m_mainWindow) {
|
||||
DApplication::handleAboutAction();
|
||||
return;
|
||||
}
|
||||
|
||||
initAboutDialog();
|
||||
#if (DTK_VERSION >= DTK_VERSION_CHECK(5, 6, 4, 0))
|
||||
initFeatureDisplayDialog(); // 初始化版本特性对话框
|
||||
#endif
|
||||
DApplication::handleAboutAction();
|
||||
}
|
||||
|
||||
bool Application::notify(QObject *receiver, QEvent *event)
|
||||
{
|
||||
if (m_mainWindow) {
|
||||
m_mainWindow->notify(receiver, event);
|
||||
}
|
||||
|
||||
return DApplication::notify(receiver, event);
|
||||
}
|
||||
|
||||
void Application::checkAppConfigLocation()
|
||||
{
|
||||
QDir dir(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation));
|
||||
if (!dir.exists()) {
|
||||
qWarning() << "AppConfigLocation not existed, creating...";
|
||||
dir.mkpath(dir.absolutePath());
|
||||
}
|
||||
}
|
||||
|
||||
void Application::setBuildDateTime(const QString &buildDateTime)
|
||||
{
|
||||
QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat);
|
||||
if (config.value("build/version").toString() != QString(APP_VERSION)) {
|
||||
qDebug() << "Spark Store has been updated!";
|
||||
|
||||
config.setValue("build/version", QString(APP_VERSION));
|
||||
config.setValue("build/branch", QString(APP_BRANCH));
|
||||
config.setValue("build/time", buildDateTime);
|
||||
config.sync();
|
||||
}
|
||||
|
||||
setApplicationVersion(DApplication::buildVersion(QString(APP_VERSION) + "-" + QString(APP_BRANCH) + "-" + buildDateTime));
|
||||
}
|
||||
|
||||
void Application::setMainWindow(MainWindow *window)
|
||||
{
|
||||
m_mainWindow = window;
|
||||
if (aboutDialog() == nullptr || aboutDialog()->parent() != m_mainWindow)
|
||||
{
|
||||
initAboutDialog();
|
||||
}
|
||||
#if (DTK_VERSION >= DTK_VERSION_CHECK(5, 6, 4, 0))
|
||||
if (featureDisplayDialog() == nullptr || featureDisplayDialog()->parent() != m_mainWindow)
|
||||
{
|
||||
initFeatureDisplayDialog(); // 初始化版本特性对话框
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
MainWindow *Application::mainWindow()
|
||||
{
|
||||
return m_mainWindow;
|
||||
}
|
||||
|
||||
void Application::initAboutDialog()
|
||||
{
|
||||
if (m_mainWindow == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (aboutDialog())
|
||||
{
|
||||
aboutDialog()->deleteLater();
|
||||
setAboutDialog(nullptr);
|
||||
}
|
||||
|
||||
// 自定义 DAboutDialog
|
||||
DAboutDialog *dialog = new DAboutDialog(m_mainWindow);
|
||||
dialog->setProductName(productName());
|
||||
dialog->setProductIcon(productIcon());
|
||||
dialog->setVersion(translate("DAboutDialog", "Version: %1").arg(applicationVersion()));
|
||||
if (runtimeDtkVersion() >= DTK_VERSION_CHECK(5, 6, 4, 0)) {
|
||||
dialog->setVersion(applicationVersion());
|
||||
}
|
||||
// 根据 shenmo 要求,不显示组织 Logo
|
||||
// dialog->setCompanyLogo(QPixmap(":/icon/Logo-Spark.png"));
|
||||
dialog->setCompanyLogo(QPixmap());
|
||||
dialog->setWebsiteName(QObject::tr("Spark Project"));
|
||||
dialog->setWebsiteLink(applicationHomePage());
|
||||
dialog->setDescription(applicationDescription());
|
||||
dialog->setLicense(translate("DAboutDialog", "%1 is released under %2").arg(productName()).arg(applicationLicense()));
|
||||
|
||||
setAboutDialog(dialog);
|
||||
connect(aboutDialog(), &DAboutDialog::destroyed, this, [=]() {
|
||||
setAboutDialog(nullptr);
|
||||
});
|
||||
|
||||
dialog->hide();
|
||||
}
|
||||
|
||||
void Application::loadTranslator()
|
||||
{
|
||||
DApplication::loadTranslator();
|
||||
|
||||
if (QLocale::system().language() == QLocale::Chinese) {
|
||||
QTranslator *webengineTranslator = new QTranslator(this);
|
||||
webengineTranslator->load(QLocale(QLocale::Chinese), "qtwebengine", "_", ":/translations");
|
||||
installTranslator(webengineTranslator);
|
||||
}
|
||||
}
|
||||
|
||||
#if (DTK_VERSION >= DTK_VERSION_CHECK(5, 6, 4, 0))
|
||||
/**
|
||||
* @brief Application::initFeatureDisplayDialog 初始化版本特性对话框
|
||||
*/
|
||||
void Application::initFeatureDisplayDialog()
|
||||
{
|
||||
if (featureDisplayDialog())
|
||||
{
|
||||
featureDisplayDialog()->deleteLater();
|
||||
setFeatureDisplayDialog(nullptr);
|
||||
}
|
||||
|
||||
// 自定义 DFeatureDisplayDialog
|
||||
DFeatureDisplayDialog *dialog = new DFeatureDisplayDialog(m_mainWindow);
|
||||
// 标题
|
||||
dialog->setTitle(m_featuresJsonObj.value("title").toString());
|
||||
// NOTE: json 文件中支持多语言;考虑到维护性,不放入翻译文件处理
|
||||
if (m_featuresJsonObj.contains(QString("title[%1]").arg(QLocale::system().name())))
|
||||
{
|
||||
dialog->setTitle(m_featuresJsonObj.value(QString("title[%1]").arg(QLocale::system().name())).toString());
|
||||
}
|
||||
|
||||
// 特性项
|
||||
QList<DFeatureItem *> items;
|
||||
foreach (const QJsonValue &jsonValue, m_featuresJsonObj.value("items").toArray())
|
||||
{
|
||||
QJsonObject jsonObj = jsonValue.toObject();
|
||||
QString name = jsonObj.value("name").toString();
|
||||
if (jsonObj.contains(QString("name[%1]").arg(QLocale::system().name())))
|
||||
{
|
||||
name = jsonObj.value(QString("name[%1]").arg(QLocale::system().name())).toString();
|
||||
}
|
||||
QString description = jsonObj.value("description").toString();
|
||||
if (jsonObj.contains(QString("description[%1]").arg(QLocale::system().name())))
|
||||
{
|
||||
description = jsonObj.value(QString("description[%1]").arg(QLocale::system().name())).toString();
|
||||
}
|
||||
|
||||
DFeatureItem *item = new DFeatureItem(QIcon::fromTheme("spark-store"), name, description, dialog);
|
||||
items.append(item);
|
||||
}
|
||||
dialog->addItems(items); // NOTE: 也支持 addItem 依次添加单个 item
|
||||
|
||||
// “了解更多”链接按钮
|
||||
dialog->setLinkUrl(m_featuresJsonObj.value("linkUrl").toString());
|
||||
dialog->setLinkButtonVisible(m_featuresJsonObj.value("linkButtonVisible").toBool());
|
||||
|
||||
setFeatureDisplayDialog(dialog);
|
||||
connect(featureDisplayDialog(), &DFeatureDisplayDialog::destroyed, this, [=]() {
|
||||
setFeatureDisplayDialog(nullptr);
|
||||
});
|
||||
#if (DTK_VERSION >= DTK_VERSION_CHECK(5, 6, 4, 0))
|
||||
connect(aboutDialog(), &DAboutDialog::featureActivated, this, [=]() {
|
||||
featureDisplayDialog()->show();
|
||||
});
|
||||
#endif
|
||||
|
||||
dialog->hide();
|
||||
}
|
||||
#endif
|
||||
41
src/application.h
Normal file
@@ -0,0 +1,41 @@
|
||||
#ifndef APPLICATION_H
|
||||
#define APPLICATION_H
|
||||
|
||||
#include <DApplication>
|
||||
|
||||
#include <QJsonObject>
|
||||
|
||||
DWIDGET_USE_NAMESPACE
|
||||
|
||||
class MainWindow;
|
||||
class Application : public DApplication
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
Application(int &argc, char **argv);
|
||||
void handleAboutAction() override;
|
||||
bool notify(QObject *receiver, QEvent *event) override;
|
||||
|
||||
static void checkAppConfigLocation();
|
||||
|
||||
void setBuildDateTime(const QString &buildDateTime);
|
||||
|
||||
void setMainWindow(MainWindow *window);
|
||||
MainWindow *mainWindow();
|
||||
|
||||
private:
|
||||
void initAboutDialog();
|
||||
#if (DTK_VERSION >= DTK_VERSION_CHECK(5, 6, 4, 0))
|
||||
void initFeatureDisplayDialog();
|
||||
#endif
|
||||
|
||||
void loadTranslator();
|
||||
|
||||
private:
|
||||
QJsonObject m_featuresJsonObj;
|
||||
|
||||
MainWindow *m_mainWindow = nullptr;
|
||||
};
|
||||
|
||||
#endif // APPLICATION_H
|
||||
@@ -1,64 +1,77 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>icon/logo.svg</file>
|
||||
<file>tags/a2d-small.png</file>
|
||||
<file>tags/a2d.png</file>
|
||||
<file>tags/community-small.png</file>
|
||||
<file>tags/community.png</file>
|
||||
<file>tags/community.svg</file>
|
||||
<file>tags/deepin-small.png</file>
|
||||
<file>tags/deepin.svg</file>
|
||||
<file>tags/dtk-small.png</file>
|
||||
<file>tags/dwine2-small.png</file>
|
||||
<file>tags/dwine5-small.png</file>
|
||||
<file>tags/dwine5.svg</file>
|
||||
<file>tags/logo_icon.svg</file>
|
||||
<file>tags/ubuntu-small.png</file>
|
||||
<file>tags/ubuntu.png</file>
|
||||
<file>tags/uos-authorize.svg</file>
|
||||
<file>tags/uos-small.png</file>
|
||||
<file>tags/uos.svg</file>
|
||||
<file>icon/light/back.svg</file>
|
||||
<file>icon/light/download.svg</file>
|
||||
<file>icon/light/leftbutton_0.svg</file>
|
||||
<file>icon/light/leftbutton_1.svg</file>
|
||||
<file>icon/light/leftbutton_2.svg</file>
|
||||
<file>icon/light/leftbutton_3.svg</file>
|
||||
<file>icon/light/leftbutton_4.svg</file>
|
||||
<file>icon/light/leftbutton_5.svg</file>
|
||||
<file>icon/light/leftbutton_6.svg</file>
|
||||
<file>icon/light/leftbutton_7.svg</file>
|
||||
<file>icon/light/leftbutton_8.svg</file>
|
||||
<file>icon/light/leftbutton_9.svg</file>
|
||||
<file>icon/light/leftbutton_10.svg</file>
|
||||
<file>icon/light/leftbutton_11.svg</file>
|
||||
<file>icon/light/leftbutton_12.svg</file>
|
||||
<file>icon/light/box.svg</file>
|
||||
<file>icon/light/calendar.svg</file>
|
||||
<file>icon/light/globe.svg</file>
|
||||
<file>icon/light/folder.svg</file>
|
||||
<file>icon/light/text.svg</file>
|
||||
<file>icon/dark/back.svg</file>
|
||||
<file>icon/dark/box.svg</file>
|
||||
<file>icon/dark/calendar.svg</file>
|
||||
<file>icon/dark/download.svg</file>
|
||||
<file>icon/dark/folder.svg</file>
|
||||
<file>icon/dark/globe.svg</file>
|
||||
<file>icon/dark/leftbutton_0.svg</file>
|
||||
<file>icon/dark/leftbutton_1.svg</file>
|
||||
<file>icon/dark/leftbutton_2.svg</file>
|
||||
<file>icon/dark/leftbutton_3.svg</file>
|
||||
<file>icon/dark/leftbutton_4.svg</file>
|
||||
<file>icon/dark/leftbutton_5.svg</file>
|
||||
<file>icon/dark/leftbutton_6.svg</file>
|
||||
<file>icon/dark/leftbutton_7.svg</file>
|
||||
<file>icon/dark/leftbutton_8.svg</file>
|
||||
<file>icon/dark/leftbutton_9.svg</file>
|
||||
<file>icon/dark/leftbutton_10.svg</file>
|
||||
<file>icon/dark/leftbutton_11.svg</file>
|
||||
<file>icon/dark/leftbutton_12.svg</file>
|
||||
<file>icon/dark/text.svg</file>
|
||||
<file>icon/light/update.svg</file>
|
||||
<file>icon/dark/update.svg</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>icon/Logo-Spark.png</file>
|
||||
<file>icon/dark/back.svg</file>
|
||||
<file>icon/dark/box.svg</file>
|
||||
<file>icon/dark/calendar.svg</file>
|
||||
<file>icon/dark/download.svg</file>
|
||||
<file>icon/dark/folder.svg</file>
|
||||
<file>icon/dark/globe.svg</file>
|
||||
<file>icon/dark/leftbutton_0.svg</file>
|
||||
<file>icon/dark/leftbutton_1.svg</file>
|
||||
<file>icon/dark/leftbutton_2.svg</file>
|
||||
<file>icon/dark/leftbutton_3.svg</file>
|
||||
<file>icon/dark/leftbutton_4.svg</file>
|
||||
<file>icon/dark/leftbutton_5.svg</file>
|
||||
<file>icon/dark/leftbutton_6.svg</file>
|
||||
<file>icon/dark/leftbutton_7.svg</file>
|
||||
<file>icon/dark/leftbutton_8.svg</file>
|
||||
<file>icon/dark/leftbutton_9.svg</file>
|
||||
<file>icon/dark/leftbutton_10.svg</file>
|
||||
<file>icon/dark/leftbutton_11.svg</file>
|
||||
<file>icon/dark/leftbutton_12.svg</file>
|
||||
<file>icon/dark/text.svg</file>
|
||||
<file>icon/dark/update.svg</file>
|
||||
<file>icon/light/back.svg</file>
|
||||
<file>icon/light/download.svg</file>
|
||||
<file>icon/light/leftbutton_0.svg</file>
|
||||
<file>icon/light/leftbutton_1.svg</file>
|
||||
<file>icon/light/leftbutton_2.svg</file>
|
||||
<file>icon/light/leftbutton_3.svg</file>
|
||||
<file>icon/light/leftbutton_4.svg</file>
|
||||
<file>icon/light/leftbutton_5.svg</file>
|
||||
<file>icon/light/leftbutton_6.svg</file>
|
||||
<file>icon/light/leftbutton_7.svg</file>
|
||||
<file>icon/light/leftbutton_8.svg</file>
|
||||
<file>icon/light/leftbutton_9.svg</file>
|
||||
<file>icon/light/leftbutton_10.svg</file>
|
||||
<file>icon/light/leftbutton_11.svg</file>
|
||||
<file>icon/light/leftbutton_12.svg</file>
|
||||
<file>icon/light/box.svg</file>
|
||||
<file>icon/light/calendar.svg</file>
|
||||
<file>icon/light/globe.svg</file>
|
||||
<file>icon/light/folder.svg</file>
|
||||
<file>icon/light/text.svg</file>
|
||||
<file>icon/light/update.svg</file>
|
||||
<file>icon/logo.svg</file>
|
||||
<file>json/features.json</file>
|
||||
<file>tags/a2d_full.svg</file>
|
||||
<file>tags/a2d.png</file>
|
||||
<file>tags/a2d.svg</file>
|
||||
<file>tags/community_full.svg</file>
|
||||
<file>tags/community.png</file>
|
||||
<file>tags/community.svg</file>
|
||||
<file>tags/debian_full.svg</file>
|
||||
<file>tags/debian.png</file>
|
||||
<file>tags/debian.svg</file>
|
||||
<file>tags/deepin_full.svg</file>
|
||||
<file>tags/deepin.png</file>
|
||||
<file>tags/deepin.svg</file>
|
||||
<file>tags/dtk_full.svg</file>
|
||||
<file>tags/dtk.png</file>
|
||||
<file>tags/dtk.svg</file>
|
||||
<file>tags/dwine2_full.svg</file>
|
||||
<file>tags/dwine2.png</file>
|
||||
<file>tags/dwine2.svg</file>
|
||||
<file>tags/dwine5_full.svg</file>
|
||||
<file>tags/dwine5.png</file>
|
||||
<file>tags/dwine5.svg</file>
|
||||
<file>tags/ubuntu_full.svg</file>
|
||||
<file>tags/ubuntu.png</file>
|
||||
<file>tags/ubuntu.svg</file>
|
||||
<file>tags/uos_full.svg</file>
|
||||
<file>tags/uos.png</file>
|
||||
<file>tags/uos.svg</file>
|
||||
<file>translations/qtwebengine_zh.qm</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
|
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 11 KiB |
249
src/assets/icon/logo-no-border.svg
Normal file
@@ -0,0 +1,249 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
inkscape:export-ydpi="127"
|
||||
inkscape:export-xdpi="127"
|
||||
inkscape:export-filename="/home/zhangtianyi/Desktop/deepin-community-store.png"
|
||||
width="200mm"
|
||||
height="200mm"
|
||||
viewBox="0 0 200 200"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="1.3 (0e150ed, 2023-07-21)"
|
||||
sodipodi:docname="logo-no-border.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient1200">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0.1299435"
|
||||
offset="0"
|
||||
id="stop1196" />
|
||||
<stop
|
||||
style="stop-color:#dadada;stop-opacity:0.81960785"
|
||||
offset="1"
|
||||
id="stop1198" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient1138"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop1134"
|
||||
offset="0"
|
||||
style="stop-color:#99e7ea;stop-opacity:1" />
|
||||
<stop
|
||||
id="stop1136"
|
||||
offset="1"
|
||||
style="stop-color:#007ffc;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient1128">
|
||||
<stop
|
||||
style="stop-color:#99e7ea;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop1124" />
|
||||
<stop
|
||||
style="stop-color:#007ffc;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop1126" />
|
||||
</linearGradient>
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect960"
|
||||
is_visible="true"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1128"
|
||||
id="radialGradient1130"
|
||||
cx="100.35268"
|
||||
cy="199.86011"
|
||||
fx="100.35268"
|
||||
fy="199.86011"
|
||||
r="90.135414"
|
||||
gradientTransform="matrix(1,0,0,0.98112945,0,3.7714702)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1138"
|
||||
id="radialGradient1132"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.98112945,0,3.7714702)"
|
||||
cx="100.35268"
|
||||
cy="199.86011"
|
||||
fx="100.35268"
|
||||
fy="199.86011"
|
||||
r="90.135414" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1200"
|
||||
id="radialGradient1202"
|
||||
cx="100.35268"
|
||||
cy="199.86011"
|
||||
fx="100.35268"
|
||||
fy="199.86011"
|
||||
r="90.135414"
|
||||
gradientTransform="matrix(1,0,0,0.98112945,0,3.7714702)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<filter
|
||||
style="color-interpolation-filters:sRGB;"
|
||||
inkscape:label="Drop Shadow"
|
||||
id="filter1448">
|
||||
<feFlood
|
||||
flood-opacity="0.372549"
|
||||
flood-color="rgb(145,145,145)"
|
||||
result="flood"
|
||||
id="feFlood1438" />
|
||||
<feComposite
|
||||
in="flood"
|
||||
in2="SourceGraphic"
|
||||
operator="in"
|
||||
result="composite1"
|
||||
id="feComposite1440" />
|
||||
<feGaussianBlur
|
||||
in="composite1"
|
||||
stdDeviation="5.2918"
|
||||
result="blur"
|
||||
id="feGaussianBlur1442" />
|
||||
<feOffset
|
||||
dx="0"
|
||||
dy="0"
|
||||
result="offset"
|
||||
id="feOffset1444" />
|
||||
<feComposite
|
||||
in="SourceGraphic"
|
||||
in2="offset"
|
||||
operator="over"
|
||||
result="composite2"
|
||||
id="feComposite1446" />
|
||||
</filter>
|
||||
<filter
|
||||
style="color-interpolation-filters:sRGB;"
|
||||
inkscape:label="Drop Shadow"
|
||||
id="filter2201"
|
||||
x="-0.06449152"
|
||||
y="-0.061604632"
|
||||
width="1.128983"
|
||||
height="1.1232093">
|
||||
<feFlood
|
||||
flood-opacity="0.372549"
|
||||
flood-color="rgb(145,145,145)"
|
||||
result="flood"
|
||||
id="feFlood2191" />
|
||||
<feComposite
|
||||
in="flood"
|
||||
in2="SourceGraphic"
|
||||
operator="in"
|
||||
result="composite1"
|
||||
id="feComposite2193" />
|
||||
<feGaussianBlur
|
||||
in="composite1"
|
||||
stdDeviation="3.76995"
|
||||
result="blur"
|
||||
id="feGaussianBlur2195" />
|
||||
<feOffset
|
||||
dx="0"
|
||||
dy="0"
|
||||
result="offset"
|
||||
id="feOffset2197" />
|
||||
<feComposite
|
||||
in="SourceGraphic"
|
||||
in2="offset"
|
||||
operator="over"
|
||||
result="composite2"
|
||||
id="feComposite2199" />
|
||||
</filter>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.98994949"
|
||||
inkscape:cx="476.28692"
|
||||
inkscape:cy="375.77675"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="974"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:document-rotation="0"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-97)" />
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="Layer 2">
|
||||
<path
|
||||
style="fill:#ffc344;fill-opacity:1;stroke:none;stroke-width:0.309114px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 94.205599,38.155907 c 0,0 11.145081,-0.157476 22.599701,6.928753 11.45465,7.086223 18.11074,13.857508 20.27783,18.266716 2.16708,4.409209 9.28755,12.125332 9.13277,26.297795 -0.15488,14.172409 -3.40543,23.620739 -8.97797,31.494299 -5.57254,7.87359 -15.63405,13.85751 -27.70786,14.17247 -12.073829,0.31494 -19.813453,-7.55863 -22.444927,-11.96786 -2.631469,-4.4092 -3.715019,-13.85751 -0.464377,-20.62877 3.250645,-6.771296 8.358796,-6.771296 10.061513,-6.141389 1.702724,0.629897 2.167092,1.574691 3.095852,3.306872 0.928749,1.732187 1.547929,1.417257 2.941089,0.472427 1.39311,-0.944834 1.85748,-2.047138 1.54792,-3.464372 -0.30958,-1.417247 -2.16711,-3.149427 -3.71505,-3.621847 -1.547909,-0.47241 -3.715016,-1.88966 -6.810869,-1.41721 -3.095848,0.47238 -9.132757,2.04711 -14.240906,8.975819 -5.108153,6.92875 -4.488988,17.63684 -1.393134,22.67593 3.095849,5.0391 8.977962,14.48739 21.980539,17.79431 13.00259,3.30693 34.05435,-6.45633 41.32959,-21.57361 7.27524,-15.1173 7.43004,-22.203505 7.12048,-34.64374 C 148.22821,72.642208 137.23793,54.060548 125.00933,47.289265 112.78073,40.517979 103.64797,36.581186 94.205599,38.155907 Z"
|
||||
id="path1002"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#f06767;fill-opacity:1;stroke:none;stroke-width:0.309114px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 100.67541,101.06311 c 0,0 -3.06474,-2.895088 -5.801108,2.22698 -2.736373,5.12205 -4.049827,9.68737 -1.313459,15.25486 2.736367,5.56745 8.428007,8.90792 17.184447,8.79659 8.75636,-0.11148 15.21419,-2.22699 19.0451,-8.5739 3.83094,-6.34692 6.7862,-11.02357 7.11457,-13.36191 0.32839,-2.33835 2.07965,0.33404 1.53239,2.33834 -0.54728,2.00426 -0.43783,5.9015 1.09454,5.12204 1.53237,-0.77942 2.73637,-2.00427 2.95526,-1.44753 0.21893,0.55673 -1.75127,4.00859 -2.68162,5.73449 -0.93039,1.7259 -3.83094,5.90153 -5.5275,7.51607 -1.69652,1.61458 -4.04981,3.89724 -6.84092,5.56747 -2.79109,1.67024 -7.11454,3.61887 -9.52255,4.06427 -2.40801,0.44539 -7.22403,1.39184 -9.96042,1.2805 -2.73635,-0.11137 -6.23892,-0.61243 -10.124558,-2.56104 -3.885645,-1.94859 -8.099657,-4.95505 -9.741479,-7.96148 -1.641825,-3.00643 -4.159283,-5.73449 -3.61201,-13.30623 0.547277,-7.57175 3.010008,-11.46899 4.870741,-13.250551 1.860731,-1.781588 4.597103,-2.561035 6.403105,-2.171298 1.806004,0.38971 2.955282,1.447544 3.393102,2.226958 0.43781,0.779437 1.149279,2.226981 1.532369,2.505371 z"
|
||||
id="path1012"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#3f62eb;fill-opacity:1;stroke:none;stroke-width:0.309114px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 132.18114,140.09049 c 0,0 13.13457,-7.6831 19.26404,-19.82016 6.12948,-12.13707 8.7564,-19.93152 7.99021,-31.84589 -0.76619,-11.914358 -2.62692,-6.012854 -0.54728,-11.134928 2.07964,-5.122074 -1.31345,-15.254857 0.10943,-15.922949 1.42292,-0.668097 4.48765,4.453971 5.3633,8.573903 0.87562,4.119922 4.70654,16.813721 1.64181,32.959364 -3.06472,16.14564 -10.28872,22.60391 -15.10475,26.94655 -4.81603,4.34261 -15.7615,11.91437 -17.40332,11.80302 -1.64183,-0.11148 -1.86073,-0.11148 -1.31348,-1.55891 z"
|
||||
id="path1014"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#fce102;fill-opacity:1;stroke:none;stroke-width:0.309114px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 104.83471,117.2363 c 0,0 7.00512,1.5589 12.36838,-1.78156 5.3633,-3.3405 9.5226,-8.79661 10.17931,-10.91225 0.65672,-2.11564 0.76619,1.89294 1.53236,-0.11125 0.76618,-2.00432 3.83093,-6.012871 2.29855,-15.366212 -1.53237,-9.35333 -1.64182,-9.798747 -4.48762,-14.809463 -2.84586,-5.010719 -9.63207,-11.91437 -13.79134,-14.141359 -4.15927,-2.226986 -9.96037,-5.567464 -17.950594,-5.344766 -7.990202,0.222699 -5.363286,-0.334048 -13.025124,1.002146 -7.661836,1.336187 -14.557491,5.010717 -16.856041,7.015006 -2.298552,2.004286 -8.428023,7.460405 -10.61712,10.46684 -2.189098,3.00643 -8.209113,9.798741 -11.383303,19.263442 -3.174189,9.464656 -4.487646,10.466796 -4.706555,16.702366 -0.21891,6.23557 0.547274,7.90578 -0.766185,8.46256 -1.31346,0.55673 -1.094547,-4.67668 -0.985094,-8.35123 0.109463,-3.6745 0.109463,-13.250536 4.925468,-23.940057 4.816015,-10.689538 13.353489,-19.597489 18.169503,-22.826622 4.816009,-3.229128 10.398208,-7.571752 19.045135,-9.687392 8.646933,-2.115635 17.293863,-1.781586 22.65716,-0.779443 5.3633,1.002145 13.68187,4.453974 18.1695,7.905802 4.48766,3.45183 9.41314,7.683099 13.13459,14.586765 3.72146,6.903648 4.70654,15.700251 4.59709,19.374771 -0.10943,3.674531 -1.97019,12.137076 -4.81601,16.256986 -2.84583,4.11993 -6.67674,9.0193 -10.61711,10.80089 -3.94039,1.78157 -8.75642,2.33833 -12.69675,0.55674 -3.94039,-1.78161 -3.72147,-2.44969 -4.3782,-4.34263 z"
|
||||
id="path1016"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#5ed938;fill-opacity:1;stroke:none;stroke-width:0.309114px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 104.83471,117.2363 c 0,0 5.54674,1.56707 10.22918,-0.55878 4.68248,-2.12587 6.4239,-4.17301 7.54615,-5.3934 1.12223,-1.22042 3.25064,-3.50376 3.83112,-4.56669 0.58046,-1.06292 1.19962,-1.69282 1.19962,-2.08649 0,-0.39369 -1.08353,-1.33853 -0.0386,-3.62186 1.04482,-2.283321 1.97361,-7.519246 1.50922,-9.881306 -0.46438,-2.362073 -1.54792,-15.471616 -10.83547,-24.211303 -9.28753,-8.739678 -18.497709,-9.763242 -18.497709,-9.763242 0,0 14.705309,4.645415 21.593569,18.739134 6.88828,14.093741 4.64376,23.148323 0.23218,28.659827 -4.41158,5.51151 -10.68068,6.14141 -12.38342,4.72415 -1.70268,-1.41725 -5.2113,6.47164 -4.38574,7.95996 z"
|
||||
id="path1018"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#8fdbe9;fill-opacity:1;stroke:none;stroke-width:0.309114px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 86.930353,66.680267 c 0,0 -9.906718,-0.07875 -17.414156,4.881616 -7.507436,4.960371 -11.14506,8.975903 -13.23476,12.125332 -2.089697,3.149446 -4.488981,7.479909 -4.179395,7.401179 0.309585,-0.0788 9.055364,-12.2828 15.866229,-15.432236 6.81087,-3.149436 13.621741,-7.558644 22.986687,-4.330482 9.364952,3.228184 13.776542,7.716118 15.788842,6.613829 2.0123,-1.1023 2.3993,-2.440824 1.23835,-3.936804 -1.16094,-1.495979 -9.364961,-8.818417 -21.051797,-7.322434 z"
|
||||
id="path1020"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#fd7aff;fill-opacity:1;stroke:none;stroke-width:0.309114px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 72.107699,130.12526 c 0.65673,0.33404 5.58219,8.90795 9.522571,10.35548 3.940372,1.44755 6.567286,1.55888 7.005104,2.227 0.437821,0.66809 0.328367,4.00858 3.830921,5.45614 3.502555,1.44753 19.920785,6.01284 24.627325,6.45824 4.70658,0.4454 0.76621,3.22911 3.61202,4.23125 2.84584,1.00217 14.99532,1.5589 17.95061,0.33405 2.95527,-1.22483 2.95527,1.1135 -2.1891,3.1178 -5.14437,2.00427 -18.71677,6.79231 -27.58261,5.67882 -8.86586,-1.1135 -19.373526,-3.00644 -25.284086,-7.23772 -5.910565,-4.23126 -8.42802,-6.1242 -6.238924,-6.45824 2.189096,-0.33407 7.990199,5.9015 10.507662,6.56959 2.517463,0.66809 4.597103,0.66809 3.064735,-0.8908 -1.532366,-1.55888 -11.492755,-8.46253 -12.477849,-8.1285 -0.985092,0.33405 -3.064737,0.55674 -4.816012,-1.78159 -1.751278,-2.33832 -10.945484,-15.25485 -10.39821,-22.1585 0.547273,-6.90365 2.298552,-5.12208 4.378195,-2.56103 2.079641,2.56103 4.487648,4.78801 4.487648,4.78801 z"
|
||||
id="path1022"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 13 KiB |
@@ -1,268 +1,254 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="200mm"
|
||||
height="200mm"
|
||||
viewBox="0 0 200 200"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
|
||||
sodipodi:docname="deepin-community-store.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient1200">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0.1299435"
|
||||
offset="0"
|
||||
id="stop1196" />
|
||||
<stop
|
||||
style="stop-color:#dadada;stop-opacity:0.81960785"
|
||||
offset="1"
|
||||
id="stop1198" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient1138"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop1134"
|
||||
offset="0"
|
||||
style="stop-color:#99e7ea;stop-opacity:1" />
|
||||
<stop
|
||||
id="stop1136"
|
||||
offset="1"
|
||||
style="stop-color:#007ffc;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient1128">
|
||||
<stop
|
||||
style="stop-color:#99e7ea;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop1124" />
|
||||
<stop
|
||||
style="stop-color:#007ffc;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop1126" />
|
||||
</linearGradient>
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect960"
|
||||
is_visible="true"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1128"
|
||||
id="radialGradient1130"
|
||||
cx="100.35268"
|
||||
cy="199.86011"
|
||||
fx="100.35268"
|
||||
fy="199.86011"
|
||||
r="90.135414"
|
||||
gradientTransform="matrix(1,0,0,0.98112945,0,3.7714702)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1138"
|
||||
id="radialGradient1132"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.98112945,0,3.7714702)"
|
||||
cx="100.35268"
|
||||
cy="199.86011"
|
||||
fx="100.35268"
|
||||
fy="199.86011"
|
||||
r="90.135414" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1200"
|
||||
id="radialGradient1202"
|
||||
cx="100.35268"
|
||||
cy="199.86011"
|
||||
fx="100.35268"
|
||||
fy="199.86011"
|
||||
r="90.135414"
|
||||
gradientTransform="matrix(1,0,0,0.98112945,0,3.7714702)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<filter
|
||||
style="color-interpolation-filters:sRGB;"
|
||||
inkscape:label="Drop Shadow"
|
||||
id="filter1448">
|
||||
<feFlood
|
||||
flood-opacity="0.372549"
|
||||
flood-color="rgb(145,145,145)"
|
||||
result="flood"
|
||||
id="feFlood1438" />
|
||||
<feComposite
|
||||
in="flood"
|
||||
in2="SourceGraphic"
|
||||
operator="in"
|
||||
result="composite1"
|
||||
id="feComposite1440" />
|
||||
<feGaussianBlur
|
||||
in="composite1"
|
||||
stdDeviation="5.2918"
|
||||
result="blur"
|
||||
id="feGaussianBlur1442" />
|
||||
<feOffset
|
||||
dx="0"
|
||||
dy="0"
|
||||
result="offset"
|
||||
id="feOffset1444" />
|
||||
<feComposite
|
||||
in="SourceGraphic"
|
||||
in2="offset"
|
||||
operator="over"
|
||||
result="composite2"
|
||||
id="feComposite1446" />
|
||||
</filter>
|
||||
<filter
|
||||
style="color-interpolation-filters:sRGB;"
|
||||
inkscape:label="Drop Shadow"
|
||||
id="filter2201">
|
||||
<feFlood
|
||||
flood-opacity="0.372549"
|
||||
flood-color="rgb(145,145,145)"
|
||||
result="flood"
|
||||
id="feFlood2191" />
|
||||
<feComposite
|
||||
in="flood"
|
||||
in2="SourceGraphic"
|
||||
operator="in"
|
||||
result="composite1"
|
||||
id="feComposite2193" />
|
||||
<feGaussianBlur
|
||||
in="composite1"
|
||||
stdDeviation="3.76995"
|
||||
result="blur"
|
||||
id="feGaussianBlur2195" />
|
||||
<feOffset
|
||||
dx="0"
|
||||
dy="0"
|
||||
result="offset"
|
||||
id="feOffset2197" />
|
||||
<feComposite
|
||||
in="SourceGraphic"
|
||||
in2="offset"
|
||||
operator="over"
|
||||
result="composite2"
|
||||
id="feComposite2199" />
|
||||
</filter>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.35"
|
||||
inkscape:cx="120.33119"
|
||||
inkscape:cy="507.94585"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1040"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-97)">
|
||||
<rect
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ebebeb;stroke-width:2.87003541;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter2201)"
|
||||
id="rect2119"
|
||||
width="162.54665"
|
||||
height="170.16383"
|
||||
x="20.431099"
|
||||
y="112.51035"
|
||||
rx="30"
|
||||
ry="30" />
|
||||
<circle
|
||||
style="opacity:1;fill:#959595;fill-opacity:1;stroke:#e9e9e9;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path2121"
|
||||
cx="58.208336"
|
||||
cy="131.8244"
|
||||
r="6.0476193" />
|
||||
<circle
|
||||
style="opacity:1;fill:#9c9c9c;fill-opacity:1;stroke:#eaeaea;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path2121-5"
|
||||
cx="143.63095"
|
||||
cy="133.71429"
|
||||
r="6.0476193" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="Layer 2">
|
||||
<path
|
||||
style="fill:#ffc344;fill-opacity:1;stroke:none;stroke-width:0.3091144px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 94.205599,42.389243 c 0,0 11.145081,-0.157476 22.599701,6.928753 11.45465,7.086223 18.11074,13.857508 20.27783,18.266716 2.16708,4.409209 9.28755,12.125332 9.13277,26.297795 -0.15488,14.172433 -3.40543,23.620763 -8.97797,31.494323 -5.57254,7.87359 -15.63405,13.85751 -27.70786,14.17247 -12.073829,0.31494 -19.813453,-7.55863 -22.444927,-11.96786 -2.631469,-4.4092 -3.715019,-13.85751 -0.464377,-20.62877 3.250645,-6.77132 8.358796,-6.77132 10.061513,-6.14141 1.702724,0.6299 2.167092,1.5747 3.095852,3.30689 0.928749,1.73219 1.547929,1.41726 2.941089,0.47243 1.39311,-0.94484 1.85748,-2.04715 1.54792,-3.46439 -0.30958,-1.417253 -2.16711,-3.149433 -3.71505,-3.621853 -1.547909,-0.47241 -3.715016,-1.88966 -6.810869,-1.41721 -3.095848,0.47238 -9.132757,2.04711 -14.240906,8.975843 -5.108153,6.92875 -4.488988,17.63684 -1.393134,22.67593 3.095849,5.0391 8.977962,14.48739 21.980539,17.79431 13.00259,3.30693 34.05435,-6.45633 41.32959,-21.57361 7.27524,-15.1173 7.43004,-22.20352 7.12048,-34.643764 C 148.22821,76.875544 137.23793,58.293884 125.00933,51.522601 112.78073,44.751315 103.64797,40.814522 94.205599,42.389243 Z"
|
||||
id="path1002"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#f06767;fill-opacity:1;stroke:none;stroke-width:0.3091144px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 100.67541,105.29647 c 0,0 -3.06474,-2.8951 -5.801108,2.22698 -2.736373,5.12205 -4.049827,9.68737 -1.313459,15.25486 2.736367,5.56745 8.428007,8.90792 17.184447,8.79659 8.75636,-0.11148 15.21419,-2.22699 19.0451,-8.5739 3.83094,-6.34692 6.7862,-11.02357 7.11457,-13.36191 0.32839,-2.33835 2.07965,0.33404 1.53239,2.33834 -0.54728,2.00426 -0.43783,5.9015 1.09454,5.12204 1.53237,-0.77942 2.73637,-2.00427 2.95526,-1.44753 0.21893,0.55673 -1.75127,4.00859 -2.68162,5.73449 -0.93039,1.7259 -3.83094,5.90153 -5.5275,7.51607 -1.69652,1.61458 -4.04981,3.89724 -6.84092,5.56747 -2.79109,1.67024 -7.11454,3.61887 -9.52255,4.06427 -2.40801,0.44539 -7.22403,1.39184 -9.96042,1.2805 -2.73635,-0.11137 -6.23892,-0.61243 -10.124558,-2.56104 -3.885645,-1.94859 -8.099657,-4.95505 -9.741479,-7.96148 -1.641825,-3.00643 -4.159283,-5.73449 -3.61201,-13.30623 0.547277,-7.57175 3.010008,-11.46899 4.870741,-13.25056 1.860731,-1.7816 4.597103,-2.56105 6.403105,-2.17131 1.806004,0.38971 2.955282,1.44755 3.393102,2.22697 0.43781,0.77944 1.149279,2.22699 1.532369,2.50538 z"
|
||||
id="path1012"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#3f62eb;fill-opacity:1;stroke:none;stroke-width:0.3091144px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 128.47695,145.38219 c 0,0 13.13457,-7.6831 19.26404,-19.82016 6.12948,-12.13707 8.7564,-19.93152 7.99021,-31.84592 -0.76619,-11.914358 -2.62692,-6.012854 -0.54728,-11.134928 2.07964,-5.122074 -1.31345,-15.254857 0.10943,-15.922949 1.42292,-0.668097 4.48765,4.453971 5.3633,8.573903 0.87562,4.119922 4.70654,16.813721 1.64181,32.959394 -3.06472,16.14564 -10.28872,22.60391 -15.10475,26.94655 -4.81603,4.34261 -15.7615,11.91437 -17.40332,11.80302 -1.64183,-0.11148 -1.86073,-0.11148 -1.31348,-1.55891 z"
|
||||
id="path1014"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#fce102;fill-opacity:1;stroke:none;stroke-width:0.3091144px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 104.83471,121.99883 c 0,0 7.00512,1.5589 12.36838,-1.78156 5.3633,-3.3405 9.5226,-8.79661 10.17931,-10.91225 0.65672,-2.11564 0.76619,1.89294 1.53236,-0.11125 0.76618,-2.00432 3.83093,-6.01288 2.29855,-15.366239 -1.53237,-9.35333 -1.64182,-9.798747 -4.48762,-14.809463 -2.84586,-5.010719 -9.63207,-11.91437 -13.79134,-14.141359 -4.15927,-2.226986 -9.96037,-5.567464 -17.950594,-5.344766 -7.990202,0.222699 -5.363286,-0.334048 -13.025124,1.002146 -7.661836,1.336187 -14.557491,5.010717 -16.856041,7.015006 -2.298552,2.004286 -8.428023,7.460405 -10.61712,10.46684 -2.189098,3.00643 -8.209113,9.798741 -11.383303,19.263442 -3.174189,9.464683 -4.487646,10.466823 -4.706555,16.702393 -0.21891,6.23557 0.547274,7.90578 -0.766185,8.46256 -1.31346,0.55673 -1.094547,-4.67668 -0.985094,-8.35123 0.109463,-3.6745 0.109463,-13.25056 4.925468,-23.940084 4.816015,-10.689538 13.353489,-19.597489 18.169503,-22.826622 4.816009,-3.229128 10.398208,-7.571752 19.045135,-9.687392 8.646933,-2.115635 17.293863,-1.781586 22.65716,-0.779443 5.3633,1.002145 13.68187,4.453974 18.1695,7.905802 4.48766,3.45183 9.41314,7.683099 13.13459,14.586765 3.72146,6.903648 4.70654,15.700251 4.59709,19.374771 -0.10943,3.674543 -1.97019,12.137103 -4.81601,16.257013 -2.84583,4.11993 -6.67674,9.0193 -10.61711,10.80089 -3.94039,1.78157 -8.75642,2.33833 -12.69675,0.55674 -3.94039,-1.78161 -3.72147,-2.44969 -4.3782,-4.34263 z"
|
||||
id="path1016"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#5ed938;fill-opacity:1;stroke:none;stroke-width:0.3091144px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 104.83471,121.99883 c 0,0 5.54674,1.56707 10.22918,-0.55878 4.68248,-2.12587 6.4239,-4.17301 7.54615,-5.3934 1.12223,-1.22042 3.25064,-3.50376 3.83112,-4.56669 0.58046,-1.06292 1.19962,-1.69282 1.19962,-2.08649 0,-0.39369 -1.08353,-1.33853 -0.0386,-3.62186 1.04482,-2.28333 1.97361,-7.519273 1.50922,-9.881333 -0.46438,-2.362073 -1.54792,-15.471616 -10.83547,-24.211303 -9.28753,-8.739678 -18.497709,-9.763242 -18.497709,-9.763242 0,0 14.705309,4.645415 21.593569,18.739134 6.88828,14.093741 4.64376,23.148344 0.23218,28.659854 -4.41158,5.51151 -10.68068,6.14141 -12.38342,4.72415 -1.70268,-1.41725 -5.2113,6.47164 -4.38574,7.95996 z"
|
||||
id="path1018"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#8fdbe9;fill-opacity:1;stroke:none;stroke-width:0.3091144px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 86.930353,71.44277 c 0,0 -9.906718,-0.07875 -17.414156,4.881616 -7.507436,4.960371 -11.14506,8.975903 -13.23476,12.125332 -2.089697,3.149446 -4.488981,7.479909 -4.179395,7.401179 0.309585,-0.0788 9.055364,-12.2828 15.866229,-15.432236 6.81087,-3.149436 13.621741,-7.558644 22.986687,-4.330482 9.364952,3.228184 13.776542,7.716118 15.788842,6.613829 2.0123,-1.1023 2.3993,-2.440824 1.23835,-3.936804 -1.16094,-1.495979 -9.364961,-8.818417 -21.051797,-7.322434 z"
|
||||
id="path1020"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#fd7aff;fill-opacity:1;stroke:none;stroke-width:0.3091144px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 72.107699,134.35862 c 0.65673,0.33404 5.58219,8.90795 9.522571,10.35548 3.940372,1.44755 6.567286,1.55888 7.005104,2.227 0.437821,0.66809 0.328367,4.00858 3.830921,5.45614 3.502555,1.44753 19.920785,6.01284 24.627325,6.45824 4.70658,0.4454 0.76621,3.22911 3.61202,4.23125 2.84584,1.00217 14.99532,1.5589 17.95061,0.33405 2.95527,-1.22483 2.95527,1.1135 -2.1891,3.1178 -5.14437,2.00427 -18.71677,6.79231 -27.58261,5.67882 -8.86586,-1.1135 -19.373526,-3.00644 -25.284086,-7.23772 -5.910565,-4.23126 -8.42802,-6.1242 -6.238924,-6.45824 2.189096,-0.33407 7.990199,5.9015 10.507662,6.56959 2.517463,0.66809 4.597103,0.66809 3.064735,-0.8908 -1.532366,-1.55888 -11.492755,-8.46253 -12.477849,-8.1285 -0.985092,0.33405 -3.064737,0.55674 -4.816012,-1.78159 -1.751278,-2.33832 -10.945484,-15.25485 -10.39821,-22.1585 0.547273,-6.90365 2.298552,-5.12208 4.378195,-2.56103 2.079641,2.56103 4.487648,4.78801 4.487648,4.78801 z"
|
||||
id="path1022"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#939393;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 56.889259,34.981831 c 0,0 16.252976,26.08036 43.845241,26.83631 27.59226,0.75596 42.33333,-23.8125 42.33333,-23.8125"
|
||||
id="path2138"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
inkscape:export-ydpi="127"
|
||||
inkscape:export-xdpi="127"
|
||||
inkscape:export-filename="/home/zhangtianyi/Desktop/deepin-community-store.png"
|
||||
width="200mm"
|
||||
height="200mm"
|
||||
viewBox="0 0 200 200"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="1.0 (4035a4f, 2020-05-01)"
|
||||
sodipodi:docname="deepin-community-store.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient1200">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0.1299435"
|
||||
offset="0"
|
||||
id="stop1196" />
|
||||
<stop
|
||||
style="stop-color:#dadada;stop-opacity:0.81960785"
|
||||
offset="1"
|
||||
id="stop1198" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient1138"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop1134"
|
||||
offset="0"
|
||||
style="stop-color:#99e7ea;stop-opacity:1" />
|
||||
<stop
|
||||
id="stop1136"
|
||||
offset="1"
|
||||
style="stop-color:#007ffc;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient1128">
|
||||
<stop
|
||||
style="stop-color:#99e7ea;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop1124" />
|
||||
<stop
|
||||
style="stop-color:#007ffc;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop1126" />
|
||||
</linearGradient>
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect960"
|
||||
is_visible="true"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1128"
|
||||
id="radialGradient1130"
|
||||
cx="100.35268"
|
||||
cy="199.86011"
|
||||
fx="100.35268"
|
||||
fy="199.86011"
|
||||
r="90.135414"
|
||||
gradientTransform="matrix(1,0,0,0.98112945,0,3.7714702)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1138"
|
||||
id="radialGradient1132"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.98112945,0,3.7714702)"
|
||||
cx="100.35268"
|
||||
cy="199.86011"
|
||||
fx="100.35268"
|
||||
fy="199.86011"
|
||||
r="90.135414" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1200"
|
||||
id="radialGradient1202"
|
||||
cx="100.35268"
|
||||
cy="199.86011"
|
||||
fx="100.35268"
|
||||
fy="199.86011"
|
||||
r="90.135414"
|
||||
gradientTransform="matrix(1,0,0,0.98112945,0,3.7714702)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<filter
|
||||
style="color-interpolation-filters:sRGB;"
|
||||
inkscape:label="Drop Shadow"
|
||||
id="filter1448">
|
||||
<feFlood
|
||||
flood-opacity="0.372549"
|
||||
flood-color="rgb(145,145,145)"
|
||||
result="flood"
|
||||
id="feFlood1438" />
|
||||
<feComposite
|
||||
in="flood"
|
||||
in2="SourceGraphic"
|
||||
operator="in"
|
||||
result="composite1"
|
||||
id="feComposite1440" />
|
||||
<feGaussianBlur
|
||||
in="composite1"
|
||||
stdDeviation="5.2918"
|
||||
result="blur"
|
||||
id="feGaussianBlur1442" />
|
||||
<feOffset
|
||||
dx="0"
|
||||
dy="0"
|
||||
result="offset"
|
||||
id="feOffset1444" />
|
||||
<feComposite
|
||||
in="SourceGraphic"
|
||||
in2="offset"
|
||||
operator="over"
|
||||
result="composite2"
|
||||
id="feComposite1446" />
|
||||
</filter>
|
||||
<filter
|
||||
style="color-interpolation-filters:sRGB;"
|
||||
inkscape:label="Drop Shadow"
|
||||
id="filter2201">
|
||||
<feFlood
|
||||
flood-opacity="0.372549"
|
||||
flood-color="rgb(145,145,145)"
|
||||
result="flood"
|
||||
id="feFlood2191" />
|
||||
<feComposite
|
||||
in="flood"
|
||||
in2="SourceGraphic"
|
||||
operator="in"
|
||||
result="composite1"
|
||||
id="feComposite2193" />
|
||||
<feGaussianBlur
|
||||
in="composite1"
|
||||
stdDeviation="3.76995"
|
||||
result="blur"
|
||||
id="feGaussianBlur2195" />
|
||||
<feOffset
|
||||
dx="0"
|
||||
dy="0"
|
||||
result="offset"
|
||||
id="feOffset2197" />
|
||||
<feComposite
|
||||
in="SourceGraphic"
|
||||
in2="offset"
|
||||
operator="over"
|
||||
result="composite2"
|
||||
id="feComposite2199" />
|
||||
</filter>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.7"
|
||||
inkscape:cx="13.97476"
|
||||
inkscape:cy="371.76152"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer2"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="941"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:document-rotation="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-97)">
|
||||
<rect
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ebebeb;stroke-width:2.87004;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter2201)"
|
||||
id="rect2119"
|
||||
width="162.54665"
|
||||
height="170.16383"
|
||||
x="20.431099"
|
||||
y="112.51035"
|
||||
rx="30"
|
||||
ry="30"
|
||||
transform="matrix(1.0253898,0,0,0.97932001,-4.2824724,3.4808454)" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="Layer 2">
|
||||
<path
|
||||
style="fill:#ffc344;fill-opacity:1;stroke:none;stroke-width:0.309114px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 94.205599,38.155907 c 0,0 11.145081,-0.157476 22.599701,6.928753 11.45465,7.086223 18.11074,13.857508 20.27783,18.266716 2.16708,4.409209 9.28755,12.125332 9.13277,26.297795 -0.15488,14.172409 -3.40543,23.620739 -8.97797,31.494299 -5.57254,7.87359 -15.63405,13.85751 -27.70786,14.17247 -12.073829,0.31494 -19.813453,-7.55863 -22.444927,-11.96786 -2.631469,-4.4092 -3.715019,-13.85751 -0.464377,-20.62877 3.250645,-6.771296 8.358796,-6.771296 10.061513,-6.141389 1.702724,0.629897 2.167092,1.574691 3.095852,3.306872 0.928749,1.732187 1.547929,1.417257 2.941089,0.472427 1.39311,-0.944834 1.85748,-2.047138 1.54792,-3.464372 -0.30958,-1.417247 -2.16711,-3.149427 -3.71505,-3.621847 -1.547909,-0.47241 -3.715016,-1.88966 -6.810869,-1.41721 -3.095848,0.47238 -9.132757,2.04711 -14.240906,8.975819 -5.108153,6.92875 -4.488988,17.63684 -1.393134,22.67593 3.095849,5.0391 8.977962,14.48739 21.980539,17.79431 13.00259,3.30693 34.05435,-6.45633 41.32959,-21.57361 7.27524,-15.1173 7.43004,-22.203505 7.12048,-34.64374 C 148.22821,72.642208 137.23793,54.060548 125.00933,47.289265 112.78073,40.517979 103.64797,36.581186 94.205599,38.155907 Z"
|
||||
id="path1002"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#f06767;fill-opacity:1;stroke:none;stroke-width:0.309114px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 100.67541,101.06311 c 0,0 -3.06474,-2.895088 -5.801108,2.22698 -2.736373,5.12205 -4.049827,9.68737 -1.313459,15.25486 2.736367,5.56745 8.428007,8.90792 17.184447,8.79659 8.75636,-0.11148 15.21419,-2.22699 19.0451,-8.5739 3.83094,-6.34692 6.7862,-11.02357 7.11457,-13.36191 0.32839,-2.33835 2.07965,0.33404 1.53239,2.33834 -0.54728,2.00426 -0.43783,5.9015 1.09454,5.12204 1.53237,-0.77942 2.73637,-2.00427 2.95526,-1.44753 0.21893,0.55673 -1.75127,4.00859 -2.68162,5.73449 -0.93039,1.7259 -3.83094,5.90153 -5.5275,7.51607 -1.69652,1.61458 -4.04981,3.89724 -6.84092,5.56747 -2.79109,1.67024 -7.11454,3.61887 -9.52255,4.06427 -2.40801,0.44539 -7.22403,1.39184 -9.96042,1.2805 -2.73635,-0.11137 -6.23892,-0.61243 -10.124558,-2.56104 -3.885645,-1.94859 -8.099657,-4.95505 -9.741479,-7.96148 -1.641825,-3.00643 -4.159283,-5.73449 -3.61201,-13.30623 0.547277,-7.57175 3.010008,-11.46899 4.870741,-13.250551 1.860731,-1.781588 4.597103,-2.561035 6.403105,-2.171298 1.806004,0.38971 2.955282,1.447544 3.393102,2.226958 0.43781,0.779437 1.149279,2.226981 1.532369,2.505371 z"
|
||||
id="path1012"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#3f62eb;fill-opacity:1;stroke:none;stroke-width:0.309114px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 132.18114,140.09049 c 0,0 13.13457,-7.6831 19.26404,-19.82016 6.12948,-12.13707 8.7564,-19.93152 7.99021,-31.84589 -0.76619,-11.914358 -2.62692,-6.012854 -0.54728,-11.134928 2.07964,-5.122074 -1.31345,-15.254857 0.10943,-15.922949 1.42292,-0.668097 4.48765,4.453971 5.3633,8.573903 0.87562,4.119922 4.70654,16.813721 1.64181,32.959364 -3.06472,16.14564 -10.28872,22.60391 -15.10475,26.94655 -4.81603,4.34261 -15.7615,11.91437 -17.40332,11.80302 -1.64183,-0.11148 -1.86073,-0.11148 -1.31348,-1.55891 z"
|
||||
id="path1014"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#fce102;fill-opacity:1;stroke:none;stroke-width:0.309114px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 104.83471,117.2363 c 0,0 7.00512,1.5589 12.36838,-1.78156 5.3633,-3.3405 9.5226,-8.79661 10.17931,-10.91225 0.65672,-2.11564 0.76619,1.89294 1.53236,-0.11125 0.76618,-2.00432 3.83093,-6.012871 2.29855,-15.366212 -1.53237,-9.35333 -1.64182,-9.798747 -4.48762,-14.809463 -2.84586,-5.010719 -9.63207,-11.91437 -13.79134,-14.141359 -4.15927,-2.226986 -9.96037,-5.567464 -17.950594,-5.344766 -7.990202,0.222699 -5.363286,-0.334048 -13.025124,1.002146 -7.661836,1.336187 -14.557491,5.010717 -16.856041,7.015006 -2.298552,2.004286 -8.428023,7.460405 -10.61712,10.46684 -2.189098,3.00643 -8.209113,9.798741 -11.383303,19.263442 -3.174189,9.464656 -4.487646,10.466796 -4.706555,16.702366 -0.21891,6.23557 0.547274,7.90578 -0.766185,8.46256 -1.31346,0.55673 -1.094547,-4.67668 -0.985094,-8.35123 0.109463,-3.6745 0.109463,-13.250536 4.925468,-23.940057 4.816015,-10.689538 13.353489,-19.597489 18.169503,-22.826622 4.816009,-3.229128 10.398208,-7.571752 19.045135,-9.687392 8.646933,-2.115635 17.293863,-1.781586 22.65716,-0.779443 5.3633,1.002145 13.68187,4.453974 18.1695,7.905802 4.48766,3.45183 9.41314,7.683099 13.13459,14.586765 3.72146,6.903648 4.70654,15.700251 4.59709,19.374771 -0.10943,3.674531 -1.97019,12.137076 -4.81601,16.256986 -2.84583,4.11993 -6.67674,9.0193 -10.61711,10.80089 -3.94039,1.78157 -8.75642,2.33833 -12.69675,0.55674 -3.94039,-1.78161 -3.72147,-2.44969 -4.3782,-4.34263 z"
|
||||
id="path1016"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#5ed938;fill-opacity:1;stroke:none;stroke-width:0.309114px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 104.83471,117.2363 c 0,0 5.54674,1.56707 10.22918,-0.55878 4.68248,-2.12587 6.4239,-4.17301 7.54615,-5.3934 1.12223,-1.22042 3.25064,-3.50376 3.83112,-4.56669 0.58046,-1.06292 1.19962,-1.69282 1.19962,-2.08649 0,-0.39369 -1.08353,-1.33853 -0.0386,-3.62186 1.04482,-2.283321 1.97361,-7.519246 1.50922,-9.881306 -0.46438,-2.362073 -1.54792,-15.471616 -10.83547,-24.211303 -9.28753,-8.739678 -18.497709,-9.763242 -18.497709,-9.763242 0,0 14.705309,4.645415 21.593569,18.739134 6.88828,14.093741 4.64376,23.148323 0.23218,28.659827 -4.41158,5.51151 -10.68068,6.14141 -12.38342,4.72415 -1.70268,-1.41725 -5.2113,6.47164 -4.38574,7.95996 z"
|
||||
id="path1018"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#8fdbe9;fill-opacity:1;stroke:none;stroke-width:0.309114px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 86.930353,66.680267 c 0,0 -9.906718,-0.07875 -17.414156,4.881616 -7.507436,4.960371 -11.14506,8.975903 -13.23476,12.125332 -2.089697,3.149446 -4.488981,7.479909 -4.179395,7.401179 0.309585,-0.0788 9.055364,-12.2828 15.866229,-15.432236 6.81087,-3.149436 13.621741,-7.558644 22.986687,-4.330482 9.364952,3.228184 13.776542,7.716118 15.788842,6.613829 2.0123,-1.1023 2.3993,-2.440824 1.23835,-3.936804 -1.16094,-1.495979 -9.364961,-8.818417 -21.051797,-7.322434 z"
|
||||
id="path1020"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#fd7aff;fill-opacity:1;stroke:none;stroke-width:0.309114px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 72.107699,130.12526 c 0.65673,0.33404 5.58219,8.90795 9.522571,10.35548 3.940372,1.44755 6.567286,1.55888 7.005104,2.227 0.437821,0.66809 0.328367,4.00858 3.830921,5.45614 3.502555,1.44753 19.920785,6.01284 24.627325,6.45824 4.70658,0.4454 0.76621,3.22911 3.61202,4.23125 2.84584,1.00217 14.99532,1.5589 17.95061,0.33405 2.95527,-1.22483 2.95527,1.1135 -2.1891,3.1178 -5.14437,2.00427 -18.71677,6.79231 -27.58261,5.67882 -8.86586,-1.1135 -19.373526,-3.00644 -25.284086,-7.23772 -5.910565,-4.23126 -8.42802,-6.1242 -6.238924,-6.45824 2.189096,-0.33407 7.990199,5.9015 10.507662,6.56959 2.517463,0.66809 4.597103,0.66809 3.064735,-0.8908 -1.532366,-1.55888 -11.492755,-8.46253 -12.477849,-8.1285 -0.985092,0.33405 -3.064737,0.55674 -4.816012,-1.78159 -1.751278,-2.33832 -10.945484,-15.25485 -10.39821,-22.1585 0.547273,-6.90365 2.298552,-5.12208 4.378195,-2.56103 2.079641,2.56103 4.487648,4.78801 4.487648,4.78801 z"
|
||||
id="path1022"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
BIN
src/assets/icon/logo.xcf
Normal file
268
src/assets/icon/logo_old.svg
Normal file
@@ -0,0 +1,268 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="200mm"
|
||||
height="200mm"
|
||||
viewBox="0 0 200 200"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
|
||||
sodipodi:docname="deepin-community-store.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient1200">
|
||||
<stop
|
||||
style="stop-color:#000000;stop-opacity:0.1299435"
|
||||
offset="0"
|
||||
id="stop1196" />
|
||||
<stop
|
||||
style="stop-color:#dadada;stop-opacity:0.81960785"
|
||||
offset="1"
|
||||
id="stop1198" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="linearGradient1138"
|
||||
inkscape:collect="always">
|
||||
<stop
|
||||
id="stop1134"
|
||||
offset="0"
|
||||
style="stop-color:#99e7ea;stop-opacity:1" />
|
||||
<stop
|
||||
id="stop1136"
|
||||
offset="1"
|
||||
style="stop-color:#007ffc;stop-opacity:1" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
id="linearGradient1128">
|
||||
<stop
|
||||
style="stop-color:#99e7ea;stop-opacity:1"
|
||||
offset="0"
|
||||
id="stop1124" />
|
||||
<stop
|
||||
style="stop-color:#007ffc;stop-opacity:1"
|
||||
offset="1"
|
||||
id="stop1126" />
|
||||
</linearGradient>
|
||||
<inkscape:path-effect
|
||||
effect="bspline"
|
||||
id="path-effect960"
|
||||
is_visible="true"
|
||||
weight="33.333333"
|
||||
steps="2"
|
||||
helper_size="0"
|
||||
apply_no_weight="true"
|
||||
apply_with_weight="true"
|
||||
only_selected="false" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1128"
|
||||
id="radialGradient1130"
|
||||
cx="100.35268"
|
||||
cy="199.86011"
|
||||
fx="100.35268"
|
||||
fy="199.86011"
|
||||
r="90.135414"
|
||||
gradientTransform="matrix(1,0,0,0.98112945,0,3.7714702)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1138"
|
||||
id="radialGradient1132"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.98112945,0,3.7714702)"
|
||||
cx="100.35268"
|
||||
cy="199.86011"
|
||||
fx="100.35268"
|
||||
fy="199.86011"
|
||||
r="90.135414" />
|
||||
<radialGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#linearGradient1200"
|
||||
id="radialGradient1202"
|
||||
cx="100.35268"
|
||||
cy="199.86011"
|
||||
fx="100.35268"
|
||||
fy="199.86011"
|
||||
r="90.135414"
|
||||
gradientTransform="matrix(1,0,0,0.98112945,0,3.7714702)"
|
||||
gradientUnits="userSpaceOnUse" />
|
||||
<filter
|
||||
style="color-interpolation-filters:sRGB;"
|
||||
inkscape:label="Drop Shadow"
|
||||
id="filter1448">
|
||||
<feFlood
|
||||
flood-opacity="0.372549"
|
||||
flood-color="rgb(145,145,145)"
|
||||
result="flood"
|
||||
id="feFlood1438" />
|
||||
<feComposite
|
||||
in="flood"
|
||||
in2="SourceGraphic"
|
||||
operator="in"
|
||||
result="composite1"
|
||||
id="feComposite1440" />
|
||||
<feGaussianBlur
|
||||
in="composite1"
|
||||
stdDeviation="5.2918"
|
||||
result="blur"
|
||||
id="feGaussianBlur1442" />
|
||||
<feOffset
|
||||
dx="0"
|
||||
dy="0"
|
||||
result="offset"
|
||||
id="feOffset1444" />
|
||||
<feComposite
|
||||
in="SourceGraphic"
|
||||
in2="offset"
|
||||
operator="over"
|
||||
result="composite2"
|
||||
id="feComposite1446" />
|
||||
</filter>
|
||||
<filter
|
||||
style="color-interpolation-filters:sRGB;"
|
||||
inkscape:label="Drop Shadow"
|
||||
id="filter2201">
|
||||
<feFlood
|
||||
flood-opacity="0.372549"
|
||||
flood-color="rgb(145,145,145)"
|
||||
result="flood"
|
||||
id="feFlood2191" />
|
||||
<feComposite
|
||||
in="flood"
|
||||
in2="SourceGraphic"
|
||||
operator="in"
|
||||
result="composite1"
|
||||
id="feComposite2193" />
|
||||
<feGaussianBlur
|
||||
in="composite1"
|
||||
stdDeviation="3.76995"
|
||||
result="blur"
|
||||
id="feGaussianBlur2195" />
|
||||
<feOffset
|
||||
dx="0"
|
||||
dy="0"
|
||||
result="offset"
|
||||
id="feOffset2197" />
|
||||
<feComposite
|
||||
in="SourceGraphic"
|
||||
in2="offset"
|
||||
operator="over"
|
||||
result="composite2"
|
||||
id="feComposite2199" />
|
||||
</filter>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.35"
|
||||
inkscape:cx="120.33119"
|
||||
inkscape:cy="507.94585"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1040"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-97)">
|
||||
<rect
|
||||
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#ebebeb;stroke-width:2.87003541;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter2201)"
|
||||
id="rect2119"
|
||||
width="162.54665"
|
||||
height="170.16383"
|
||||
x="20.431099"
|
||||
y="112.51035"
|
||||
rx="30"
|
||||
ry="30" />
|
||||
<circle
|
||||
style="opacity:1;fill:#959595;fill-opacity:1;stroke:#e9e9e9;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path2121"
|
||||
cx="58.208336"
|
||||
cy="131.8244"
|
||||
r="6.0476193" />
|
||||
<circle
|
||||
style="opacity:1;fill:#9c9c9c;fill-opacity:1;stroke:#eaeaea;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path2121-5"
|
||||
cx="143.63095"
|
||||
cy="133.71429"
|
||||
r="6.0476193" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="Layer 2">
|
||||
<path
|
||||
style="fill:#ffc344;fill-opacity:1;stroke:none;stroke-width:0.3091144px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 94.205599,42.389243 c 0,0 11.145081,-0.157476 22.599701,6.928753 11.45465,7.086223 18.11074,13.857508 20.27783,18.266716 2.16708,4.409209 9.28755,12.125332 9.13277,26.297795 -0.15488,14.172433 -3.40543,23.620763 -8.97797,31.494323 -5.57254,7.87359 -15.63405,13.85751 -27.70786,14.17247 -12.073829,0.31494 -19.813453,-7.55863 -22.444927,-11.96786 -2.631469,-4.4092 -3.715019,-13.85751 -0.464377,-20.62877 3.250645,-6.77132 8.358796,-6.77132 10.061513,-6.14141 1.702724,0.6299 2.167092,1.5747 3.095852,3.30689 0.928749,1.73219 1.547929,1.41726 2.941089,0.47243 1.39311,-0.94484 1.85748,-2.04715 1.54792,-3.46439 -0.30958,-1.417253 -2.16711,-3.149433 -3.71505,-3.621853 -1.547909,-0.47241 -3.715016,-1.88966 -6.810869,-1.41721 -3.095848,0.47238 -9.132757,2.04711 -14.240906,8.975843 -5.108153,6.92875 -4.488988,17.63684 -1.393134,22.67593 3.095849,5.0391 8.977962,14.48739 21.980539,17.79431 13.00259,3.30693 34.05435,-6.45633 41.32959,-21.57361 7.27524,-15.1173 7.43004,-22.20352 7.12048,-34.643764 C 148.22821,76.875544 137.23793,58.293884 125.00933,51.522601 112.78073,44.751315 103.64797,40.814522 94.205599,42.389243 Z"
|
||||
id="path1002"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#f06767;fill-opacity:1;stroke:none;stroke-width:0.3091144px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 100.67541,105.29647 c 0,0 -3.06474,-2.8951 -5.801108,2.22698 -2.736373,5.12205 -4.049827,9.68737 -1.313459,15.25486 2.736367,5.56745 8.428007,8.90792 17.184447,8.79659 8.75636,-0.11148 15.21419,-2.22699 19.0451,-8.5739 3.83094,-6.34692 6.7862,-11.02357 7.11457,-13.36191 0.32839,-2.33835 2.07965,0.33404 1.53239,2.33834 -0.54728,2.00426 -0.43783,5.9015 1.09454,5.12204 1.53237,-0.77942 2.73637,-2.00427 2.95526,-1.44753 0.21893,0.55673 -1.75127,4.00859 -2.68162,5.73449 -0.93039,1.7259 -3.83094,5.90153 -5.5275,7.51607 -1.69652,1.61458 -4.04981,3.89724 -6.84092,5.56747 -2.79109,1.67024 -7.11454,3.61887 -9.52255,4.06427 -2.40801,0.44539 -7.22403,1.39184 -9.96042,1.2805 -2.73635,-0.11137 -6.23892,-0.61243 -10.124558,-2.56104 -3.885645,-1.94859 -8.099657,-4.95505 -9.741479,-7.96148 -1.641825,-3.00643 -4.159283,-5.73449 -3.61201,-13.30623 0.547277,-7.57175 3.010008,-11.46899 4.870741,-13.25056 1.860731,-1.7816 4.597103,-2.56105 6.403105,-2.17131 1.806004,0.38971 2.955282,1.44755 3.393102,2.22697 0.43781,0.77944 1.149279,2.22699 1.532369,2.50538 z"
|
||||
id="path1012"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#3f62eb;fill-opacity:1;stroke:none;stroke-width:0.3091144px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 128.47695,145.38219 c 0,0 13.13457,-7.6831 19.26404,-19.82016 6.12948,-12.13707 8.7564,-19.93152 7.99021,-31.84592 -0.76619,-11.914358 -2.62692,-6.012854 -0.54728,-11.134928 2.07964,-5.122074 -1.31345,-15.254857 0.10943,-15.922949 1.42292,-0.668097 4.48765,4.453971 5.3633,8.573903 0.87562,4.119922 4.70654,16.813721 1.64181,32.959394 -3.06472,16.14564 -10.28872,22.60391 -15.10475,26.94655 -4.81603,4.34261 -15.7615,11.91437 -17.40332,11.80302 -1.64183,-0.11148 -1.86073,-0.11148 -1.31348,-1.55891 z"
|
||||
id="path1014"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#fce102;fill-opacity:1;stroke:none;stroke-width:0.3091144px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 104.83471,121.99883 c 0,0 7.00512,1.5589 12.36838,-1.78156 5.3633,-3.3405 9.5226,-8.79661 10.17931,-10.91225 0.65672,-2.11564 0.76619,1.89294 1.53236,-0.11125 0.76618,-2.00432 3.83093,-6.01288 2.29855,-15.366239 -1.53237,-9.35333 -1.64182,-9.798747 -4.48762,-14.809463 -2.84586,-5.010719 -9.63207,-11.91437 -13.79134,-14.141359 -4.15927,-2.226986 -9.96037,-5.567464 -17.950594,-5.344766 -7.990202,0.222699 -5.363286,-0.334048 -13.025124,1.002146 -7.661836,1.336187 -14.557491,5.010717 -16.856041,7.015006 -2.298552,2.004286 -8.428023,7.460405 -10.61712,10.46684 -2.189098,3.00643 -8.209113,9.798741 -11.383303,19.263442 -3.174189,9.464683 -4.487646,10.466823 -4.706555,16.702393 -0.21891,6.23557 0.547274,7.90578 -0.766185,8.46256 -1.31346,0.55673 -1.094547,-4.67668 -0.985094,-8.35123 0.109463,-3.6745 0.109463,-13.25056 4.925468,-23.940084 4.816015,-10.689538 13.353489,-19.597489 18.169503,-22.826622 4.816009,-3.229128 10.398208,-7.571752 19.045135,-9.687392 8.646933,-2.115635 17.293863,-1.781586 22.65716,-0.779443 5.3633,1.002145 13.68187,4.453974 18.1695,7.905802 4.48766,3.45183 9.41314,7.683099 13.13459,14.586765 3.72146,6.903648 4.70654,15.700251 4.59709,19.374771 -0.10943,3.674543 -1.97019,12.137103 -4.81601,16.257013 -2.84583,4.11993 -6.67674,9.0193 -10.61711,10.80089 -3.94039,1.78157 -8.75642,2.33833 -12.69675,0.55674 -3.94039,-1.78161 -3.72147,-2.44969 -4.3782,-4.34263 z"
|
||||
id="path1016"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#5ed938;fill-opacity:1;stroke:none;stroke-width:0.3091144px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 104.83471,121.99883 c 0,0 5.54674,1.56707 10.22918,-0.55878 4.68248,-2.12587 6.4239,-4.17301 7.54615,-5.3934 1.12223,-1.22042 3.25064,-3.50376 3.83112,-4.56669 0.58046,-1.06292 1.19962,-1.69282 1.19962,-2.08649 0,-0.39369 -1.08353,-1.33853 -0.0386,-3.62186 1.04482,-2.28333 1.97361,-7.519273 1.50922,-9.881333 -0.46438,-2.362073 -1.54792,-15.471616 -10.83547,-24.211303 -9.28753,-8.739678 -18.497709,-9.763242 -18.497709,-9.763242 0,0 14.705309,4.645415 21.593569,18.739134 6.88828,14.093741 4.64376,23.148344 0.23218,28.659854 -4.41158,5.51151 -10.68068,6.14141 -12.38342,4.72415 -1.70268,-1.41725 -5.2113,6.47164 -4.38574,7.95996 z"
|
||||
id="path1018"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#8fdbe9;fill-opacity:1;stroke:none;stroke-width:0.3091144px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 86.930353,71.44277 c 0,0 -9.906718,-0.07875 -17.414156,4.881616 -7.507436,4.960371 -11.14506,8.975903 -13.23476,12.125332 -2.089697,3.149446 -4.488981,7.479909 -4.179395,7.401179 0.309585,-0.0788 9.055364,-12.2828 15.866229,-15.432236 6.81087,-3.149436 13.621741,-7.558644 22.986687,-4.330482 9.364952,3.228184 13.776542,7.716118 15.788842,6.613829 2.0123,-1.1023 2.3993,-2.440824 1.23835,-3.936804 -1.16094,-1.495979 -9.364961,-8.818417 -21.051797,-7.322434 z"
|
||||
id="path1020"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:#fd7aff;fill-opacity:1;stroke:none;stroke-width:0.3091144px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 72.107699,134.35862 c 0.65673,0.33404 5.58219,8.90795 9.522571,10.35548 3.940372,1.44755 6.567286,1.55888 7.005104,2.227 0.437821,0.66809 0.328367,4.00858 3.830921,5.45614 3.502555,1.44753 19.920785,6.01284 24.627325,6.45824 4.70658,0.4454 0.76621,3.22911 3.61202,4.23125 2.84584,1.00217 14.99532,1.5589 17.95061,0.33405 2.95527,-1.22483 2.95527,1.1135 -2.1891,3.1178 -5.14437,2.00427 -18.71677,6.79231 -27.58261,5.67882 -8.86586,-1.1135 -19.373526,-3.00644 -25.284086,-7.23772 -5.910565,-4.23126 -8.42802,-6.1242 -6.238924,-6.45824 2.189096,-0.33407 7.990199,5.9015 10.507662,6.56959 2.517463,0.66809 4.597103,0.66809 3.064735,-0.8908 -1.532366,-1.55888 -11.492755,-8.46253 -12.477849,-8.1285 -0.985092,0.33405 -3.064737,0.55674 -4.816012,-1.78159 -1.751278,-2.33832 -10.945484,-15.25485 -10.39821,-22.1585 0.547273,-6.90365 2.298552,-5.12208 4.378195,-2.56103 2.079641,2.56103 4.487648,4.78801 4.487648,4.78801 z"
|
||||
id="path1022"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#939393;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 56.889259,34.981831 c 0,0 16.252976,26.08036 43.845241,26.83631 27.59226,0.75596 42.33333,-23.8125 42.33333,-23.8125"
|
||||
id="path2138"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 14 KiB |
25
src/assets/json/features.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"title": "Features",
|
||||
"title[zh_CN]": "版本特性",
|
||||
"items": [
|
||||
{
|
||||
"icon": "/usr/share/icons/hicolor/scalable/apps/spark-store.svg",
|
||||
"name": "Feature 1",
|
||||
"name[zh_CN]": "特性 1",
|
||||
"description": "Please click the learn more button to check",
|
||||
"description[zh_CN]": "请点击 了解更多 按钮来获取特性"
|
||||
},
|
||||
{
|
||||
"icon": ":/icon/logo.svg",
|
||||
"name": "Feature 2",
|
||||
"description": "Feature 2 detailed description..."
|
||||
},
|
||||
{
|
||||
"icon": "spark-store",
|
||||
"name": "Fix 1",
|
||||
"description": "Fix 1 detailed description..."
|
||||
}
|
||||
],
|
||||
"linkUrl": "https://gitee.com/spark-store-project/spark-store/releases/",
|
||||
"linkButtonVisible": true
|
||||
}
|
||||
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 248 KiB After Width: | Height: | Size: 4.7 KiB |
1
src/assets/tags/a2d.svg
Normal file
|
After Width: | Height: | Size: 12 KiB |
1
src/assets/tags/a2d_full.svg
Normal file
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 178 KiB |
1
src/assets/tags/community_full.svg
Normal file
|
After Width: | Height: | Size: 738 KiB |
BIN
src/assets/tags/debian.png
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
1
src/assets/tags/debian.svg
Normal file
|
After Width: | Height: | Size: 26 KiB |
1
src/assets/tags/debian_full.svg
Normal file
|
After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
BIN
src/assets/tags/deepin.png
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 17 KiB |
1
src/assets/tags/deepin_full.svg
Normal file
|
After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 954 B |
BIN
src/assets/tags/dtk.png
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
1
src/assets/tags/dtk.svg
Normal file
|
After Width: | Height: | Size: 13 KiB |
1
src/assets/tags/dtk_full.svg
Normal file
|
After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 5.7 KiB |
BIN
src/assets/tags/dwine2.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
1
src/assets/tags/dwine2.svg
Normal file
|
After Width: | Height: | Size: 16 KiB |
1
src/assets/tags/dwine2_full.svg
Normal file
|
After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
BIN
src/assets/tags/dwine5.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 16 KiB |
1
src/assets/tags/dwine5_full.svg
Normal file
|
After Width: | Height: | Size: 17 KiB |
@@ -1,23 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<title>logo icon</title>
|
||||
<defs>
|
||||
<linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="linearGradient-1">
|
||||
<stop stop-color="#00F1FF" offset="0%"></stop>
|
||||
<stop stop-color="#008AFF" offset="100%"></stop>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g id="light" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||
<g id="1" transform="translate(-460.000000, -159.000000)">
|
||||
<g id="tittlebar" transform="translate(450.000000, 150.000000)">
|
||||
<g id="logo-icon" transform="translate(10.000000, 9.000000)">
|
||||
<g>
|
||||
<rect id="矩形" fill="url(#linearGradient-1)" x="0" y="0" width="32" height="32" rx="8"></rect>
|
||||
<path d="M23,25 L23,24.0002278 C21.6666667,24.0002278 21,24.0002278 21,24.0002278 L21,20 L22,20 L22,19 L21,19 L21,17 L20,17.5 L20,19 L19,19 L19,20 L20,20 L20,24.0002278 C20,24.0002278 20,24.0002278 20,24.0002278 C20,24.5523868 20.4476132,25 20.9997722,25 C20.9998481,25 20.9999241,25 21,25 L23,25 Z M24.0210414,23.9789586 L24.0210414,22.2215556 L24.0210414,22.2215556 L24.6565969,21.6226667 L27.2207674,25 L29.0052118,25 L25.6099302,20.7304444 L28.4678057,18.0074755 L26.6711391,18.0074755 L24.0210414,20.6204444 L24,15.5 L23,15 L23,25 C23.5639056,25 24.0210414,24.5428642 24.0210414,23.9789586 Z" id="tk" fill="#FFFFFF" fill-rule="nonzero"></path>
|
||||
<path d="M10.275,24 C13.175,24 15.35,23.2 16.85,21.6 C18.275,20.075 19,17.825 19,15 C19,12.15 18.275,10.05 16.85,8.55 C15.35,6.95 13.175,6 10.275,6 L4,6 L4,24 L10.275,24 Z M9.725,21 L7,21 L7,9 L9.725,9 C11.95,9 13.575,9.15 14.6,10.175 C15.6,11.175 16,12.75 16,15 C16,17.2 15.6,18.9 14.6,19.95 C13.575,20.975 11.95,21 9.725,21 Z" id="D" fill="#FFFFFF" fill-rule="nonzero"></path>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 2.0 KiB |
|
Before Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 5.0 KiB |
1
src/assets/tags/ubuntu.svg
Normal file
|
After Width: | Height: | Size: 19 KiB |
1
src/assets/tags/ubuntu_full.svg
Normal file
|
After Width: | Height: | Size: 31 KiB |
@@ -1,13 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20">
|
||||
<defs>
|
||||
<linearGradient id="uos-托盘1-a" x1="15.968%" x2="100%" y1="14.224%" y2="60.554%">
|
||||
<stop offset="0%" stop-color="#0071FF"/>
|
||||
<stop offset="48.72%" stop-color="#00E8FC"/>
|
||||
<stop offset="100%" stop-color="#00A2FF"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
<g fill="none" transform="translate(1 1)">
|
||||
<circle cx="9" cy="9" r="9" fill="url(#uos-托盘1-a)"/>
|
||||
<path fill="#FFF" d="M13,4.5 C13.5128358,4.5 13.9355072,4.88604019 13.9932723,5.38337887 L14,5.5 L14,9.5 C14,12.5 12,14.5 9,14.5 C6,14.5 4,12.5 4.0043492,9.70016408 L4,9.5 L4,5.5 C4,4.94771525 4.44771525,4.5 5,4.5 C5.51283584,4.5 5.93550716,4.88604019 5.99327227,5.38337887 L6,5.5 L6,9.5 C6,11.5 7.5,12.5 9,12.5 C10.5,12.5 12,11.5 12,9.5 L12,5.5 C12,4.94771525 12.4477153,4.5 13,4.5 Z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 873 B |
|
Before Width: | Height: | Size: 1.1 KiB |
BIN
src/assets/tags/uos.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 873 B After Width: | Height: | Size: 18 KiB |
1
src/assets/tags/uos_full.svg
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
src/assets/translations/qtwebengine_zh.qm
Normal file
305
src/assets/translations/qtwebengine_zh.ts
Normal file
@@ -0,0 +1,305 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.1" language="zh_CN" sourcelanguage="es">
|
||||
<context>
|
||||
<name>QWebEnginePage</name>
|
||||
<message>
|
||||
<source>Cut</source>
|
||||
<translation>剪切</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Back</source>
|
||||
<translation>后退</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy</source>
|
||||
<translation>复制</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Redo</source>
|
||||
<translation>恢复</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Stop</source>
|
||||
<translation>停止</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Undo</source>
|
||||
<translation>撤销</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Back</source>
|
||||
<translation>&后退</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Paste</source>
|
||||
<translation>粘贴</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy Image URL</source>
|
||||
<translation>复制图片地址</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open Link in This Window</source>
|
||||
<translation>在当前窗口中打开链接</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toggle Mute</source>
|
||||
<translation>切换静音</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Inspect Element</source>
|
||||
<translation>检查元素</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toggle Media Controls</source>
|
||||
<translation>切换媒体控制</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Reload</source>
|
||||
<translation>重新加载</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy Link URL</source>
|
||||
<translation>复制链接地址</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exit Full Screen Mode</source>
|
||||
<translation>退出全屏模式</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Paste and Match Style</source>
|
||||
<translation>Pegar y coincidir estilo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Follow Link</source>
|
||||
<translation>Seguir vínculo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open Link in New Tab</source>
|
||||
<translation>在新标签页中打开链接</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Reload and Bypass Cache</source>
|
||||
<translation>重新加载且绕过缓存</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select folder to upload</source>
|
||||
<translation>Seleccionar una carpeta para subir</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save Image</source>
|
||||
<translation>保存图片</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save Media</source>
|
||||
<translation>保存媒体</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toggle Looping</source>
|
||||
<translation>切换循环播放</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Close Page</source>
|
||||
<translation>关闭页面</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toggle Play/Pause</source>
|
||||
<translation>切换播放/暂停</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy Image</source>
|
||||
<translation>复制图片</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Reload</source>
|
||||
<translation>&重新加载</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select All</source>
|
||||
<translation>全选</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save Link</source>
|
||||
<translation>Guardar enlace</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy Media URL</source>
|
||||
<translation>复制媒体地址</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Forward</source>
|
||||
<translation>前进</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Forward</source>
|
||||
<translation>&前进</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open Link in New Window</source>
|
||||
<translation>在新窗口中打开链接</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Are you sure you want to leave this page?</source>
|
||||
<translation>您确定要离开当前页面吗?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QQuickWebEngineView</name>
|
||||
<message>
|
||||
<source>Back</source>
|
||||
<translation>后退</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy</source>
|
||||
<translation>复制</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy Image URL</source>
|
||||
<translation>复制图片地址</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toggle Mute</source>
|
||||
<translation>切换静音</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Inspect Element</source>
|
||||
<translation>检查元素</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toggle Media Controls</source>
|
||||
<translation>切换媒体控制</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Reload</source>
|
||||
<translation>重新加载</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy Link URL</source>
|
||||
<translation>复制链接地址</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Exit Full Screen Mode</source>
|
||||
<translation>退出全屏模式</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Follow Link</source>
|
||||
<translation>跳转链接</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save Image</source>
|
||||
<translation>保存图片</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save Media</source>
|
||||
<translation>保存媒体</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toggle Looping</source>
|
||||
<translation>切换循环播放</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Toggle Play/Pause</source>
|
||||
<translation>切换播放/暂停</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy Image</source>
|
||||
<translation>复制图片</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save Link</source>
|
||||
<translation>保存链接</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy Media URL</source>
|
||||
<translation>复制媒体地址</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Forward</source>
|
||||
<translation>前进</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QtWebEngineCore</name>
|
||||
<message>
|
||||
<source>Javascript Alert - %1</source>
|
||||
<translation>Javascript 警告 - %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Javascript Confirm - %1</source>
|
||||
<translation>Javascript 确认 - %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Javascript Prompt - %1</source>
|
||||
<translation>Javascript 提示 - %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Are you sure you want to leave this page?</source>
|
||||
<translation>您确定要离开当前页面吗?</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QtWebEnginePlugin</name>
|
||||
<message>
|
||||
<source>Cannot create a separate instance of WebEngineDownloadItem</source>
|
||||
<translation>无法创建一个 WebEngineDownloadItem 的独立实例</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot create separate instance of WebEngineLoadRequest</source>
|
||||
<translation>无法创建一个 WebEngineLoadRequest 的独立实例</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot create a separate instance of WebEngineSettings</source>
|
||||
<translation>无法创建一个 WebEngineSettings 的独立实例</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot create separate instance of WebEngineNavigationRequest</source>
|
||||
<translation>无法创建一个 WebEngineNavigationRequest 的独立实例</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot create separate instance of WebEngineNewViewRequest</source>
|
||||
<translation>无法创建一个 WebEngineNewViewRequest 的独立实例</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot create separate instance of WebEngineCertificateError</source>
|
||||
<translation>无法创建一个 WebEngineCertificateError 的独立实例</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot create a separate instance of FullScreenRequest</source>
|
||||
<translation>无法创建一个 FullScreenRequest 的独立实例</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot create a separate instance of NavigationHistory</source>
|
||||
<translation>无法创建一个 NavigationHistory 的独立实例</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QtWebEngineExperimentalPlugin</name>
|
||||
<message>
|
||||
<source>Cannot create a separate instance of WebEngineViewExperimental</source>
|
||||
<translation>无法创建一个 WebEngineViewExperimental 的独立实例</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot create a separate instance of WebEngineViewport</source>
|
||||
<translation>无法创建一个 WebEngineViewport 的独立实例</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>UIDelegatesManager</name>
|
||||
<message>
|
||||
<source>Enter username and password for "%1" at %2://%3</source>
|
||||
<translation>为在 %2://%3 的“%1”输入用户名和密码</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Connect to proxy "%1" using:</source>
|
||||
<translation>使用“%1”连接代理:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>QtWebEngineTestSupportPlugin</name>
|
||||
<message>
|
||||
<source>Cannot create a separate instance of WebEngineErrorPage</source>
|
||||
<translation>无法创建一个 WebEngineErrorPage 的独立实例</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
85
src/backend/DataCollectorAndUploader.cpp
Normal file
@@ -0,0 +1,85 @@
|
||||
#include "DataCollectorAndUploader.h"
|
||||
#include <QNetworkAccessManager>
|
||||
#include <QNetworkRequest>
|
||||
#include <QStandardPaths>
|
||||
#include <QNetworkReply>
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
#include <QSettings>
|
||||
#include <QProcess>
|
||||
#include <QDebug>
|
||||
|
||||
DataCollectorAndUploader::DataCollectorAndUploader(QObject *parent) : QObject(parent)
|
||||
{
|
||||
}
|
||||
|
||||
void DataCollectorAndUploader::collectAndUploadData()
|
||||
{
|
||||
collectData();
|
||||
}
|
||||
|
||||
void DataCollectorAndUploader::collectData()
|
||||
{
|
||||
QString distributor_id;
|
||||
QString release;
|
||||
QString architecture;
|
||||
|
||||
QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat);
|
||||
QString version = config.value("build/version").toString();
|
||||
QString uuid = config.value("info/uuid").toString();
|
||||
|
||||
|
||||
// Execute lsb_release --all and capture the output
|
||||
QProcess lsbProcess;
|
||||
lsbProcess.start("lsb_release", QStringList() << "--all");
|
||||
lsbProcess.waitForFinished();
|
||||
QString lsbOutput = lsbProcess.readAllStandardOutput();
|
||||
|
||||
QStringList lines = lsbOutput.split('\n');
|
||||
for (const QString &line : lines) {
|
||||
if (line.contains("Distributor ID:")) {
|
||||
distributor_id = line.split(":").last().trimmed();
|
||||
} else if (line.contains("Release:")) {
|
||||
release = line.split(":").last().trimmed();
|
||||
}
|
||||
}
|
||||
|
||||
// Execute uname -m to get the architecture
|
||||
QProcess unameProcess;
|
||||
unameProcess.start("uname", QStringList() << "-m");
|
||||
unameProcess.waitForFinished();
|
||||
architecture = unameProcess.readAllStandardOutput().trimmed();
|
||||
|
||||
// Create a JSON object
|
||||
QJsonObject json;
|
||||
json.insert("Distributor ID", distributor_id);
|
||||
json.insert("Release", release);
|
||||
json.insert("Architecture", architecture);
|
||||
json.insert("Store_Version", version);
|
||||
json.insert("UUID", uuid);
|
||||
|
||||
|
||||
|
||||
// Convert to byte array
|
||||
QJsonDocument doc(json);
|
||||
QByteArray jsonData = doc.toJson();
|
||||
|
||||
// Initialize a network request
|
||||
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
|
||||
QUrl url("https://status.deepinos.org.cn/upload");
|
||||
|
||||
QNetworkRequest request(url);
|
||||
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
|
||||
|
||||
// Send the POST request
|
||||
QNetworkReply *reply = manager->post(request, jsonData);
|
||||
|
||||
connect(reply, &QNetworkReply::finished, [=]() {
|
||||
if (reply->error() == QNetworkReply::NoError) {
|
||||
emit uploadSuccessful();
|
||||
} else {
|
||||
emit uploadFailed(reply->errorString());
|
||||
}
|
||||
reply->deleteLater();
|
||||
});
|
||||
}
|
||||
21
src/backend/DataCollectorAndUploader.h
Normal file
@@ -0,0 +1,21 @@
|
||||
#ifndef DATACOLLECTORANDUPLOADER_H
|
||||
#define DATACOLLECTORANDUPLOADER_H
|
||||
|
||||
#include <QObject>
|
||||
|
||||
class DataCollectorAndUploader : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit DataCollectorAndUploader(QObject *parent = nullptr);
|
||||
void collectAndUploadData();
|
||||
|
||||
signals:
|
||||
void uploadSuccessful();
|
||||
void uploadFailed(QString errorString);
|
||||
|
||||
private:
|
||||
void collectData();
|
||||
};
|
||||
|
||||
#endif // DATACOLLECTORANDUPLOADER_H
|
||||
147
src/backend/ThemeChecker.cpp
Executable file
@@ -0,0 +1,147 @@
|
||||
#include "ThemeChecker.h"
|
||||
|
||||
#include <QDBusConnection>
|
||||
#include <QDebug>
|
||||
|
||||
Q_GLOBAL_STATIC(ThemeChecker, m_instance)
|
||||
|
||||
constexpr char kFreedesktopPortalServiceName[] = "org.freedesktop.portal.Desktop";
|
||||
constexpr char kFreedesktopPortalServicePath[] = "/org/freedesktop/portal/desktop";
|
||||
constexpr char kFreedesktopPortalSettingsInterface[] = "org.freedesktop.portal.Settings";
|
||||
|
||||
ThemeChecker::ThemeChecker(QObject *parent)
|
||||
: QObject(parent)
|
||||
, m_paletteType(Dtk::Gui::DGuiApplicationHelper::instance()->paletteType())
|
||||
{
|
||||
m_interface = new QDBusInterface(kFreedesktopPortalServiceName,
|
||||
kFreedesktopPortalServicePath,
|
||||
kFreedesktopPortalSettingsInterface,
|
||||
QDBusConnection::sessionBus(),
|
||||
this);
|
||||
|
||||
initThemeType();
|
||||
initConnections();
|
||||
}
|
||||
|
||||
ThemeChecker *ThemeChecker::instance()
|
||||
{
|
||||
return m_instance;
|
||||
}
|
||||
|
||||
bool ThemeChecker::useDarkTheme()
|
||||
{
|
||||
if (m_paletteType == Dtk::Gui::DGuiApplicationHelper::ColorType::UnknownType) {
|
||||
return m_themeType == Dtk::Gui::DGuiApplicationHelper::ColorType::DarkType;
|
||||
} else {
|
||||
return m_paletteType == Dtk::Gui::DGuiApplicationHelper::ColorType::DarkType;
|
||||
}
|
||||
}
|
||||
|
||||
void ThemeChecker::initThemeType()
|
||||
{
|
||||
QVariantList args { "org.freedesktop.appearance", "color-scheme" };
|
||||
QDBusMessage msg = m_interface->callWithArgumentList(QDBus::Block, "Read", args);
|
||||
if (msg.type() != QDBusMessage::MessageType::ReplyMessage || msg.arguments().size() < 1) {
|
||||
qWarning().noquote() << "Init color-scheme from D-Bus failed:" << msg.errorName() << msg.errorMessage();
|
||||
m_themeType = Dtk::Gui::DGuiApplicationHelper::toColorType(Dtk::Gui::DGuiApplicationHelper::fetchPalette(Dtk::Gui::DGuiApplicationHelper::instance()->applicationTheme()));
|
||||
return;
|
||||
}
|
||||
|
||||
quint32 colorScheme = qvariant_cast<QDBusVariant>(qvariant_cast<QDBusVariant>(msg.arguments().first()).variant()).variant().toUInt();
|
||||
switch (colorScheme) {
|
||||
case 1:
|
||||
m_themeType = Dtk::Gui::DGuiApplicationHelper::ColorType::DarkType;
|
||||
break;
|
||||
case 2:
|
||||
m_themeType = Dtk::Gui::DGuiApplicationHelper::ColorType::LightType;
|
||||
break;
|
||||
default:
|
||||
qInfo().noquote() << QString("color-scheme: %1, fetching themeType according to QPalette::Window").arg(colorScheme);
|
||||
m_themeType = Dtk::Gui::DGuiApplicationHelper::toColorType(Dtk::Gui::DGuiApplicationHelper::fetchPalette(Dtk::Gui::DGuiApplicationHelper::instance()->applicationTheme()));
|
||||
break;
|
||||
}
|
||||
|
||||
if (m_paletteType == Dtk::Gui::DGuiApplicationHelper::ColorType::UnknownType) {
|
||||
Dtk::Gui::DGuiApplicationHelper::instance()->setApplicationPalette(Dtk::Gui::DGuiApplicationHelper::standardPalette(m_themeType));
|
||||
}
|
||||
}
|
||||
|
||||
void ThemeChecker::initConnections()
|
||||
{
|
||||
QDBusConnection::sessionBus().connect(kFreedesktopPortalServiceName,
|
||||
kFreedesktopPortalServicePath,
|
||||
kFreedesktopPortalSettingsInterface,
|
||||
"SettingChanged",
|
||||
this,
|
||||
SLOT(slotSettingChanged(const QString &, const QString &, const QDBusVariant &)));
|
||||
|
||||
connect(Dtk::Gui::DGuiApplicationHelper::instance()->applicationTheme(), &Dtk::Gui::DPlatformTheme::themeNameChanged, this, &ThemeChecker::slotThemeNameChanged);
|
||||
connect(Dtk::Gui::DGuiApplicationHelper::instance(), &Dtk::Gui::DGuiApplicationHelper::paletteTypeChanged, this, &ThemeChecker::slotPaletteTypeChanged);
|
||||
}
|
||||
|
||||
void ThemeChecker::slotSettingChanged(const QString &_namespace, const QString &key, const QDBusVariant &variant)
|
||||
{
|
||||
if (_namespace != "org.freedesktop.appearance" || key != "color-scheme") {
|
||||
return;
|
||||
}
|
||||
|
||||
Dtk::Gui::DGuiApplicationHelper::ColorType colorType = Dtk::Gui::DGuiApplicationHelper::ColorType::UnknownType;
|
||||
|
||||
quint32 colorScheme = variant.variant().toUInt();
|
||||
switch (colorScheme) {
|
||||
case 1:
|
||||
colorType = Dtk::Gui::DGuiApplicationHelper::ColorType::DarkType;
|
||||
break;
|
||||
case 2:
|
||||
colorType = Dtk::Gui::DGuiApplicationHelper::ColorType::LightType;
|
||||
break;
|
||||
default:
|
||||
qInfo().noquote() << QString("color-scheme: %1, fetching themeType according to QPalette::Window").arg(colorScheme);
|
||||
colorType = Dtk::Gui::DGuiApplicationHelper::toColorType(Dtk::Gui::DGuiApplicationHelper::fetchPalette(Dtk::Gui::DGuiApplicationHelper::instance()->applicationTheme()));
|
||||
break;
|
||||
}
|
||||
|
||||
if (m_paletteType != Dtk::Gui::DGuiApplicationHelper::ColorType::UnknownType) {
|
||||
m_themeType = colorType;
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_themeType != colorType) {
|
||||
Dtk::Gui::DGuiApplicationHelper::instance()->setApplicationPalette(Dtk::Gui::DGuiApplicationHelper::standardPalette(colorType));
|
||||
emit themeChanged(colorType == Dtk::Gui::DGuiApplicationHelper::ColorType::DarkType);
|
||||
m_themeType = colorType;
|
||||
}
|
||||
}
|
||||
|
||||
void ThemeChecker::slotThemeNameChanged(const QByteArray &theme)
|
||||
{
|
||||
Dtk::Gui::DGuiApplicationHelper::ColorType themeType = Dtk::Gui::DGuiApplicationHelper::ColorType::LightType;
|
||||
if (theme.endsWith("dark")) {
|
||||
themeType = Dtk::Gui::DGuiApplicationHelper::ColorType::DarkType;
|
||||
}
|
||||
|
||||
if (m_paletteType != Dtk::Gui::DGuiApplicationHelper::ColorType::UnknownType) {
|
||||
m_themeType = themeType;
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_themeType != themeType) {
|
||||
Dtk::Gui::DGuiApplicationHelper::instance()->setApplicationPalette(Dtk::Gui::DGuiApplicationHelper::standardPalette(themeType));
|
||||
emit themeChanged(themeType == Dtk::Gui::DGuiApplicationHelper::ColorType::DarkType);
|
||||
m_themeType = themeType;
|
||||
}
|
||||
}
|
||||
|
||||
void ThemeChecker::slotPaletteTypeChanged(Dtk::Gui::DGuiApplicationHelper::ColorType paletteType)
|
||||
{
|
||||
m_paletteType = paletteType;
|
||||
|
||||
if (m_paletteType != Dtk::Gui::DGuiApplicationHelper::ColorType::UnknownType) {
|
||||
Dtk::Gui::DGuiApplicationHelper::instance()->setApplicationPalette(Dtk::Gui::DGuiApplicationHelper::standardPalette(m_paletteType));
|
||||
emit themeChanged(m_paletteType == Dtk::Gui::DGuiApplicationHelper::ColorType::DarkType);
|
||||
return;
|
||||
}
|
||||
|
||||
Dtk::Gui::DGuiApplicationHelper::instance()->setApplicationPalette(Dtk::Gui::DGuiApplicationHelper::standardPalette(m_themeType));
|
||||
emit themeChanged(m_themeType == Dtk::Gui::DGuiApplicationHelper::ColorType::DarkType);
|
||||
}
|
||||
40
src/backend/ThemeChecker.h
Executable file
@@ -0,0 +1,40 @@
|
||||
#ifndef THEMECHECKER_H
|
||||
#define THEMECHECKER_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QDBusVariant>
|
||||
#include <QDBusInterface>
|
||||
|
||||
#include <DPlatformTheme>
|
||||
#include <DGuiApplicationHelper>
|
||||
|
||||
class ThemeChecker : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit ThemeChecker(QObject *parent = nullptr);
|
||||
static ThemeChecker *instance();
|
||||
|
||||
bool useDarkTheme();
|
||||
|
||||
private:
|
||||
void initThemeType();
|
||||
void initConnections();
|
||||
|
||||
signals:
|
||||
void themeChanged(bool isDark);
|
||||
|
||||
private slots:
|
||||
void slotSettingChanged(const QString &_namespace, const QString &key, const QDBusVariant &variant);
|
||||
void slotThemeNameChanged(const QByteArray &theme);
|
||||
void slotPaletteTypeChanged(Dtk::Gui::DGuiApplicationHelper::ColorType paletteType);
|
||||
|
||||
private:
|
||||
QDBusInterface *m_interface = nullptr;
|
||||
|
||||
Dtk::Gui::DGuiApplicationHelper::ColorType m_paletteType;
|
||||
Dtk::Gui::DGuiApplicationHelper::ColorType m_themeType;
|
||||
};
|
||||
|
||||
#endif // THEMECHECKER_H
|
||||
@@ -1,9 +1,12 @@
|
||||
#include "downloadworker.h"
|
||||
#include <QEventLoop>
|
||||
|
||||
#include <QProcess>
|
||||
#include <QRegularExpression>
|
||||
#include <QDir>
|
||||
#include <QtConcurrent>
|
||||
#include <QStandardPaths>
|
||||
|
||||
#define DEFAULTURL "d.store.deepinos.org.cn"
|
||||
#define MAXWAITTIME 200000
|
||||
|
||||
DownloadController::DownloadController(QObject *parent)
|
||||
{
|
||||
@@ -11,7 +14,7 @@ DownloadController::DownloadController(QObject *parent)
|
||||
|
||||
// 初始化默认域名
|
||||
domains.clear();
|
||||
domains.append("d.store.deepinos.org.cn");
|
||||
domains.append(DEFAULTURL);
|
||||
|
||||
/*
|
||||
domains = {
|
||||
@@ -30,7 +33,6 @@ void DownloadController::setFilename(QString filename)
|
||||
this->filename = filename;
|
||||
}
|
||||
|
||||
|
||||
bool checkMeatlink(QString metaUrl)
|
||||
{
|
||||
QFile metaStatus("/tmp/spark-store/metaStatus.txt");
|
||||
@@ -38,7 +40,8 @@ bool checkMeatlink(QString metaUrl)
|
||||
{
|
||||
metaStatus.remove();
|
||||
}
|
||||
system("curl -I -s --connect-timeout 5 " + metaUrl.toUtf8() + " -w %{http_code} |tail -n1 > /tmp/spark-store/metaStatus.txt");
|
||||
QString cmd = QString("curl -I -s --connect-timeout 5 %1 -w %{http_code} |tail -n1 > /tmp/spark-store/metaStatus.txt").arg(metaUrl);
|
||||
system(cmd.toUtf8().data());
|
||||
if (metaStatus.open(QFile::ReadOnly) && QString(metaStatus.readAll()).toUtf8() == "200")
|
||||
{
|
||||
metaStatus.remove();
|
||||
@@ -49,7 +52,7 @@ bool checkMeatlink(QString metaUrl)
|
||||
|
||||
void gennerateDomain(QVector<QString> &domains)
|
||||
{
|
||||
QFile serverList(QDir::homePath().toUtf8() + "/.config/spark-store/server.list");
|
||||
QFile serverList(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/server.list");
|
||||
if (serverList.open(QFile::ReadOnly))
|
||||
{
|
||||
QStringList list = QString(serverList.readAll()).trimmed().split("\n");
|
||||
@@ -69,9 +72,13 @@ void gennerateDomain(QVector<QString> &domains)
|
||||
}
|
||||
if (domains.size() == 0)
|
||||
{
|
||||
domains.append("d.store.deepinos.org.cn");
|
||||
domains.append(DEFAULTURL);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
domains.append(DEFAULTURL);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -88,44 +95,53 @@ void DownloadController::startDownload(const QString &url)
|
||||
}
|
||||
|
||||
QtConcurrent::run([=]()
|
||||
{
|
||||
{
|
||||
QString metaUrl = url + ".metalink";
|
||||
qDebug() << "metalink" << metaUrl;
|
||||
bool useMetalink = false;
|
||||
if (checkMeatlink(metaUrl)){
|
||||
if (checkMeatlink(metaUrl))
|
||||
{
|
||||
useMetalink = true;
|
||||
qDebug() << "useMetalink:" << useMetalink;
|
||||
}else{
|
||||
}
|
||||
else
|
||||
{
|
||||
gennerateDomain(domains);
|
||||
// qDebug() << domains << domains.size();
|
||||
}
|
||||
|
||||
QString aria2Command = "-d";
|
||||
QString aria2Urls = "";
|
||||
QString aria2Verbose = "--summary-interval=1";
|
||||
QString aria2SizePerThreads = "--min-split-size=1M";
|
||||
QString aria2NoConfig = "--no-conf";
|
||||
QString aria2NoSeeds = "--seed-time=0";
|
||||
QString aria2Command = "-d"; //下载目录
|
||||
QString aria2Urls = ""; //下载地址
|
||||
QString aria2Verbose = "--summary-interval=1"; //显示下载速度
|
||||
QString aria2SizePerThreads = "--min-split-size=1M"; //最小分片大小
|
||||
QString aria2NoConfig = "--no-conf"; //不使用配置文件
|
||||
QString aria2NoSeeds = "--seed-time=0"; //不做种
|
||||
QStringList command;
|
||||
QString downloadDir = "/tmp/spark-store/";
|
||||
QString aria2ConnectionPerServer = "--max-connection-per-server=1";
|
||||
QString aria2ConnectionMax = "--max-concurrent-downloads=16";
|
||||
QString aria2DNSCommand = "--async-dns-server=119.29.29.29,223.5.5.5";
|
||||
QString downloadDir = "/tmp/spark-store/"; //下载目录
|
||||
QString aria2ConnectionPerServer = "--max-connection-per-server=1"; //每个服务器最大连接数
|
||||
QString aria2ConnectionMax = "--max-concurrent-downloads=16"; //最大同时下载数
|
||||
QString aria2ConnectionTimeout = "--connect-timeout=5"; // 5 秒服务器连接超时
|
||||
QString aria2MaxRetry = "--max-tries=1"; //设置最大重试次数
|
||||
|
||||
if (useMetalink){
|
||||
|
||||
if (useMetalink) //如果是metalink
|
||||
{
|
||||
command.append(metaUrl.toUtf8());
|
||||
}
|
||||
else{
|
||||
for (int i = 0; i < domains.size(); i++)
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < domains.size(); i++) //遍历域名
|
||||
{
|
||||
command.append(replaceDomain(url, domains.at(i)).replace("+","%2B").toUtf8()); //对+进行转译,避免oss出错
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
qint64 downloadSizeRecord = 0;
|
||||
QString speedInfo = "";
|
||||
QString percentInfo = "";
|
||||
qint64 downloadSizeRecord = 0; //下载大小记录
|
||||
qint8 failDownloadTimes = 0; // 记录重试次数
|
||||
const qint8 maxRetryTimes = 3; //最大重试次数
|
||||
QString speedInfo = ""; //显示下载速度
|
||||
QString percentInfo = ""; //显示下载进度
|
||||
command.append(aria2Command.toUtf8());
|
||||
command.append(downloadDir.toUtf8());
|
||||
command.append(aria2Verbose.toUtf8());
|
||||
@@ -133,24 +149,47 @@ void DownloadController::startDownload(const QString &url)
|
||||
command.append(aria2SizePerThreads.toUtf8());
|
||||
command.append(aria2ConnectionPerServer.toUtf8());
|
||||
command.append(aria2ConnectionMax.toUtf8());
|
||||
command.append(aria2DNSCommand.toUtf8());
|
||||
if (useMetalink){
|
||||
command.append(aria2ConnectionTimeout.toUtf8());
|
||||
command.append(aria2MaxRetry.toUtf8());
|
||||
|
||||
if (useMetalink)
|
||||
{
|
||||
command.append(aria2NoSeeds.toUtf8());
|
||||
}
|
||||
qDebug() << command;
|
||||
auto cmd = new QProcess(this);
|
||||
cmd->setProcessChannelMode(QProcess::MergedChannels);
|
||||
cmd->setProgram("aria2c");
|
||||
cmd->setArguments(command);
|
||||
cmd->start();
|
||||
cmd->waitForStarted(); //等待启动完成
|
||||
|
||||
QObject::connect(cmd, &QProcess::readyReadStandardOutput,
|
||||
[&]()
|
||||
bool downloadSuccess = true;
|
||||
QProcess cmd;
|
||||
cmd.setProcessChannelMode(QProcess::MergedChannels);
|
||||
cmd.setProgram("aria2c");
|
||||
cmd.setArguments(command);
|
||||
cmd.start();
|
||||
cmd.waitForStarted(-1); //等待启动完成
|
||||
|
||||
// Timer
|
||||
QTimer *timeoutTimer = new QTimer(this);
|
||||
timeoutTimer->setSingleShot(true); // 单次触发
|
||||
connect(timeoutTimer, &QTimer::timeout, [&]() {
|
||||
if (failDownloadTimes < maxRetryTimes) {
|
||||
qDebug() << "Download timeout, restarting...";
|
||||
// 重新启动下载任务的代码
|
||||
restartDownload(cmd, command); // 调用重新启动下载任务的函数
|
||||
failDownloadTimes += 1;
|
||||
timeoutTimer->start(MAXWAITTIME); // 重新启动定时器
|
||||
} else{
|
||||
emit errorOccur(tr("Download Failed, please retry :(")); // 下载失败
|
||||
downloadSuccess = false;
|
||||
cmd.close();
|
||||
cmd.terminate(); // 终止当前的下载进程
|
||||
cmd.waitForFinished(); // 等待进程结束
|
||||
}
|
||||
});
|
||||
|
||||
connect(&cmd, &QProcess::readyReadStandardOutput, [&]()
|
||||
{
|
||||
timeoutTimer->start(MAXWAITTIME); // 重置超时计时器,15秒超时
|
||||
//通过读取输出计算下载速度
|
||||
QString message = cmd->readAllStandardOutput().data();
|
||||
// qDebug() << message;
|
||||
QString message = cmd.readAllStandardOutput().data();
|
||||
message = message.replace(" ", "");
|
||||
QStringList list;
|
||||
qint64 downloadSize = 0;
|
||||
@@ -173,10 +212,10 @@ void DownloadController::startDownload(const QString &url)
|
||||
speedInfo = message.mid(speedPlace1 + 3, speedPlace2 - speedPlace1 - 3);
|
||||
speedInfo += "/s";
|
||||
}
|
||||
// qDebug() << percentInfo << speedInfo;
|
||||
if (downloadSize >= downloadSizeRecord)
|
||||
{
|
||||
downloadSizeRecord = downloadSize;
|
||||
timeoutTimer->stop(); // 如果有进度,停止超时计时器
|
||||
}
|
||||
if (percentInfo == "OK")
|
||||
{
|
||||
@@ -189,18 +228,21 @@ void DownloadController::startDownload(const QString &url)
|
||||
emit downloadProcess(speedInfo, downloadSizeRecord, fileSize);
|
||||
}
|
||||
});
|
||||
QObject::connect(cmd, &QProcess::readyReadStandardError,
|
||||
[&]()
|
||||
connect(&cmd, &QProcess::readyReadStandardError, [&]()
|
||||
{
|
||||
emit errorOccur(cmd->readAllStandardError().data());
|
||||
return;
|
||||
emit errorOccur(cmd.readAllStandardError().data());
|
||||
downloadSuccess = false;
|
||||
cmd.close();
|
||||
});
|
||||
|
||||
auto pidNumber = cmd->processId();
|
||||
this->pidNumber = pidNumber;
|
||||
while (cmd->waitForFinished(-1))
|
||||
pidNumber = cmd.processId();
|
||||
|
||||
cmd.waitForFinished(-1);
|
||||
cmd.close();
|
||||
|
||||
if(!downloadSuccess)
|
||||
{
|
||||
continue;
|
||||
return;
|
||||
}
|
||||
|
||||
// 统计下载量
|
||||
@@ -210,10 +252,10 @@ void DownloadController::startDownload(const QString &url)
|
||||
* HD 70642 is a star with an exoplanetary companion in the southern constellation of Puppis.
|
||||
*/
|
||||
QProcess mailProcess;
|
||||
mailProcess.start(SenderdPath.toUtf8() + " " + metaUrl.toUtf8() + " " + "HD70642");
|
||||
mailProcess.start(SenderdPath.toUtf8(), QStringList() << metaUrl << "HD70642");
|
||||
mailProcess.waitForStarted();
|
||||
mailProcess.waitForFinished(3000);
|
||||
mailProcess.deleteLater();
|
||||
mailProcess.close();
|
||||
|
||||
emit downloadFinished(); });
|
||||
}
|
||||
@@ -223,15 +265,31 @@ void DownloadController::startDownload(const QString &url)
|
||||
*/
|
||||
void DownloadController::stopDownload()
|
||||
{
|
||||
if (pidNumber < 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// 实现下载进程退出
|
||||
QString killCmd = QString("kill -9 %1").arg(pidNumber);
|
||||
system(killCmd.toUtf8());
|
||||
qDebug() << "kill aria2!";
|
||||
pidNumber = -1;
|
||||
}
|
||||
|
||||
void DownloadController::restartDownload(QProcess &cmd, const QStringList &command)
|
||||
{
|
||||
cmd.terminate(); // 终止当前的下载进程
|
||||
cmd.waitForFinished(); // 等待进程结束
|
||||
cmd.setArguments(command); // 重新设置参数
|
||||
cmd.start(); // 重新启动下载
|
||||
cmd.waitForStarted(-1); // 等待启动完成
|
||||
}
|
||||
|
||||
qint64 DownloadController::getFileSize(const QString &url)
|
||||
{
|
||||
// 已经无需使用 qtnetwork 再获取 filesize,完全交给 aria2 来计算进度。 为保证兼容性,故保留此函数。
|
||||
qDebug() << "Begin download:" << url;
|
||||
qint64 fileSize = 10000;
|
||||
return fileSize;
|
||||
}
|
||||
|
||||
@@ -2,9 +2,8 @@
|
||||
#define DOWNLOADWORKER_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QList>
|
||||
#include <QFile>
|
||||
#include <QNetworkReply>
|
||||
#include <QVector>
|
||||
#include <QProcess>
|
||||
|
||||
class DownloadController : public QObject
|
||||
{
|
||||
@@ -16,26 +15,23 @@ public:
|
||||
void setFilename(QString filename);
|
||||
void startDownload(const QString &url);
|
||||
void stopDownload();
|
||||
void restartDownload(QProcess &cmd, const QStringList &command);
|
||||
qint64 getFileSize(const QString& url);
|
||||
QString replaceDomain(const QString& url, const QString domain);
|
||||
|
||||
private:
|
||||
int threadNum;
|
||||
int pidNumber;
|
||||
QString filename;
|
||||
qint64 fileSize;
|
||||
QVector<QPair<qint64, qint64>> ranges;
|
||||
QFile *file;
|
||||
bool finished = false;
|
||||
QVector<QString> domains;
|
||||
|
||||
|
||||
|
||||
signals:
|
||||
void errorOccur(const QString& msg);
|
||||
void downloadProcess(QString, qint64, qint64);
|
||||
void downloadFinished();
|
||||
|
||||
private:
|
||||
int threadNum;
|
||||
qint64 pidNumber = -1;
|
||||
QString filename;
|
||||
qint64 fileSize;
|
||||
QVector<QPair<qint64, qint64>> ranges;
|
||||
bool finished = false;
|
||||
QVector<QString> domains;
|
||||
};
|
||||
|
||||
#endif // FILEDOWNLOADWORKER_H
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
#include "image_show.h"
|
||||
|
||||
#include <QHBoxLayout>
|
||||
#include <QScreen> // Qt5 不再建议使用 QDesktopWidget
|
||||
#include <QScreen> // Qt5 不再建议使用 QDesktopWidget
|
||||
#include <QGuiApplication>
|
||||
|
||||
image_show::image_show(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
m_dialog(new big_image),
|
||||
m_label(new QLabel)
|
||||
image_show::image_show(QWidget *parent) : QWidget(parent),
|
||||
m_dialog(new big_image),
|
||||
m_label(new QLabel)
|
||||
{
|
||||
QHBoxLayout *layout = new QHBoxLayout;
|
||||
layout->addWidget(m_label);
|
||||
@@ -23,13 +22,13 @@ void image_show::setImage(QPixmap image)
|
||||
QImage re_screen1;
|
||||
QImage re_screen0 = screen0.scaled(QSize(400, 300), Qt::KeepAspectRatio, Qt::SmoothTransformation);
|
||||
|
||||
// 获取主屏幕尺寸
|
||||
desktop_w = QGuiApplication::primaryScreen()->geometry().width();
|
||||
desktop_h = QGuiApplication::primaryScreen()->geometry().height();
|
||||
// 获取当前app所在的主屏幕尺寸
|
||||
desktop_w = QGuiApplication::screenAt(QCursor().pos())->geometry().width();
|
||||
desktop_h = QGuiApplication::screenAt(QCursor().pos())->geometry().height();
|
||||
|
||||
if(screen0.width() > (desktop_w - 20) || screen0.height() > (desktop_h - 20))
|
||||
if (screen0.width() > int(desktop_w / 3 * 2) || screen0.height() > int(desktop_h / 3 * 2))
|
||||
{
|
||||
re_screen1 = screen0.scaled(QSize(desktop_w - 20, desktop_h - 20), Qt::KeepAspectRatio, Qt::SmoothTransformation);
|
||||
re_screen1 = screen0.scaled(QSize(int(desktop_w / 3 * 2), int(desktop_h / 3 * 2)), Qt::KeepAspectRatio, Qt::SmoothTransformation);
|
||||
m_image = QPixmap::fromImage(re_screen1);
|
||||
}
|
||||
else
|
||||
@@ -43,12 +42,13 @@ void image_show::setImage(QPixmap image)
|
||||
void image_show::mousePressEvent(QMouseEvent *)
|
||||
{
|
||||
m_dialog->setimage(m_image);
|
||||
m_dialog->showFullScreen();
|
||||
|
||||
// 识别主屏幕尺寸并设置 widget 大小
|
||||
m_dialog->setFixedSize(desktop_w, desktop_h);
|
||||
m_dialog->setFixedSize(qMin(desktop_w, m_image.width() + int(desktop_h / 16 * m_image.width() / m_image.height())), qMin(desktop_h, m_image.height() + int(desktop_h / 16)));
|
||||
|
||||
m_dialog->move(0,0);
|
||||
m_dialog->move(QGuiApplication::screenAt(QCursor().pos())->geometry().center() - m_dialog->rect().center());
|
||||
|
||||
m_dialog->show();
|
||||
}
|
||||
image_show::~image_show()
|
||||
{
|
||||
|
||||
@@ -1,74 +1,102 @@
|
||||
#include "sparkapi.h"
|
||||
|
||||
#include <QSettings>
|
||||
#include <QStandardPaths>
|
||||
#include <QDebug>
|
||||
|
||||
QString SparkAPI::serverUrl = "";
|
||||
#ifdef __x86_64__
|
||||
QString SparkAPI::serverUrlDir = "store";
|
||||
|
||||
#elif __aarch64__
|
||||
QString SparkAPI::serverUrlDir = "aarch64-store";
|
||||
#elif __loongarch__
|
||||
QString SparkAPI::serverUrlDir = "loong64-store";
|
||||
#endif
|
||||
|
||||
SparkAPI::SparkAPI(QObject *parent) : QObject(parent)
|
||||
{
|
||||
QSettings readConfig(QDir::homePath() + "/.config/spark-store/config.ini", QSettings::IniFormat);
|
||||
if(!readConfig.value("server/choose").toString().isEmpty() && readConfig.value("server/updated").toString() == "TRUE")
|
||||
QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat);
|
||||
if (!config.value("server/choose").toString().isEmpty() && config.value("server/updated").toBool())
|
||||
{
|
||||
SparkAPI::setServerUrl(readConfig.value("server/choose").toString());
|
||||
SparkAPI::setServerUrl(config.value("server/choose").toString());
|
||||
}
|
||||
}
|
||||
|
||||
void SparkAPI::get(QUrl url)
|
||||
{
|
||||
QNetworkRequest request;
|
||||
HttpRequest *httprequest=new HttpRequest;
|
||||
request.setUrl(QUrl(url.toString().replace("+","%2B")));
|
||||
connect(httprequest,&HttpRequest::finished,[=](QString data){
|
||||
HttpRequest *httprequest = new HttpRequest;
|
||||
request.setUrl(QUrl(url.toString().replace("+", "%2B")));
|
||||
request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);
|
||||
connect(httprequest, &HttpRequest::finished, [=](QString data)
|
||||
{
|
||||
QByteArray arr = data.toUtf8();
|
||||
//解析Json
|
||||
QJsonParseError error;
|
||||
if(QJsonDocument::fromJson(arr,&error).isArray())
|
||||
{
|
||||
auto doc = QJsonDocument::fromJson(arr,&error).array();
|
||||
emit finished(doc);
|
||||
}else {
|
||||
auto doc = QJsonDocument::fromJson(arr,&error).object();
|
||||
emit finishedObject(doc);
|
||||
}
|
||||
// 解析 Json
|
||||
QJsonParseError error;
|
||||
if(QJsonDocument::fromJson(arr,&error).isArray())
|
||||
{
|
||||
auto doc = QJsonDocument::fromJson(arr,&error).array();
|
||||
emit finished(doc);
|
||||
} else {
|
||||
auto doc = QJsonDocument::fromJson(arr,&error).object();
|
||||
emit finishedObject(doc);
|
||||
}
|
||||
|
||||
httprequest->deleteLater();
|
||||
httprequest->deleteLater();
|
||||
});
|
||||
|
||||
httprequest->getRequest(request);
|
||||
}
|
||||
|
||||
void SparkAPI::getRAW(QUrl url)
|
||||
{
|
||||
QNetworkRequest request;
|
||||
HttpRequest *httprequest=new HttpRequest;
|
||||
request.setUrl(QUrl(url.toString().replace("+","%2B")));
|
||||
connect(httprequest,&HttpRequest::finished,[=](QString data){
|
||||
HttpRequest *httprequest = new HttpRequest;
|
||||
request.setUrl(QUrl(url.toString().replace("+", "%2B")));
|
||||
request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);
|
||||
connect(httprequest, &HttpRequest::finished, [=](QString data)
|
||||
{
|
||||
emit finishedRAW(data);
|
||||
httprequest->deleteLater();
|
||||
});
|
||||
httprequest->deleteLater(); });
|
||||
httprequest->getRequest(request);
|
||||
}
|
||||
|
||||
void SparkAPI::getAppList(QString type)
|
||||
{
|
||||
get(QUrl(getServerUrl()+"store/"+type+"/applist.json"));
|
||||
get(QUrl(getServerUrl() + SparkAPI::serverUrlDir + "/" + type + "/applist.json"));
|
||||
}
|
||||
|
||||
void SparkAPI::getSearchList(QString keyword)
|
||||
{
|
||||
get(QUrl("https://search.deepinos.org.cn/appinfo/search?keyword="+keyword));
|
||||
get(QUrl("https://search.deepinos.org.cn/appinfo/search?keyword=" + keyword));
|
||||
}
|
||||
|
||||
void SparkAPI::getAppInfo(QUrl spk)
|
||||
{
|
||||
get(QUrl(getServerUrl()+"store"+spk.path().replace("+","%2B") + "/app.json"));
|
||||
get(QUrl(getServerUrl() + SparkAPI::serverUrlDir + spk.path().replace("+", "%2B") + "/app.json"));
|
||||
}
|
||||
|
||||
QString SparkAPI::getArchDir()
|
||||
{
|
||||
return SparkAPI::serverUrlDir;
|
||||
}
|
||||
|
||||
void SparkAPI::getAppDownloadTimes(QUrl spk)
|
||||
{
|
||||
getRAW(QUrl(getServerUrl()+"store"+spk.path().replace("+","%2B") + "/download-times.txt"));
|
||||
getRAW(QUrl(getServerUrl() + SparkAPI::serverUrlDir + spk.path().replace("+", "%2B") + "/download-times.txt"));
|
||||
}
|
||||
|
||||
QString SparkAPI::getServerUrl()
|
||||
{
|
||||
return SparkAPI::serverUrl;
|
||||
}
|
||||
|
||||
QString SparkAPI::getImgServerUrl()
|
||||
{
|
||||
return SparkAPI::serverUrl;
|
||||
}
|
||||
|
||||
void SparkAPI::setServerUrl(QString url)
|
||||
{
|
||||
SparkAPI::serverUrl = url;
|
||||
|
||||