Compare commits

...

275 Commits

Author SHA1 Message Date
dependabot[bot] 1354201440
Bump jmespath from 1.4.0 to 1.6.1 in /android (#65)
Bumps [jmespath](https://github.com/trevorrowe/jmespath.rb) from 1.4.0 to 1.6.1.
- [Release notes](https://github.com/trevorrowe/jmespath.rb/releases)
- [Changelog](https://github.com/jmespath/jmespath.rb/blob/main/CHANGELOG.md)
- [Commits](https://github.com/trevorrowe/jmespath.rb/compare/v1.4.0...v1.6.1)

---
updated-dependencies:
- dependency-name: jmespath
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-31 18:34:35 +08:00
stonegate 01a9641291
null safety & material you (#64)
* Migrate to null safety

*  update theme

* ♻️ code clean

* feat: update just audio

* feat: intgrate material you design

* fix: remove unused null check

* fix: remove unused null check

* feat: update setting pages to material you

* fix: update material you theme

*  support use wallpaper theme

* 🎨 code format

* fix: set boost valumn
2022-07-31 18:34:24 +08:00
stonegate d8577e2e8c
Merge pull request #60 from YoussefLasheen/master
docs: Minor README proof-reading update.
2022-06-04 17:47:26 +08:00
Youssef Lasheen 814d0d7efc Minor README proof-reading update. 2021-12-04 10:51:22 +02:00
stonegate ee5a0660ea
Merge pull request #58 from stonega/audio_service
Update to latest audio service
2021-10-06 18:50:52 +08:00
stonega b0d1639138 Update theme data 2021-10-06 18:47:43 +08:00
stonega ad7541d2fc Update audio state controller 2021-10-06 18:47:09 +08:00
stonega 8a128dc6ad Update just audio to latest version 2021-09-05 14:57:02 +08:00
stonegate 06f21e616a
Merge pull request #49 from stonega/dependabot/bundler/android/addressable-2.8.0
Bump addressable from 2.7.0 to 2.8.0 in /android
2021-08-21 17:26:35 +08:00
stonega f14f0f819c Bump deps and improve error hande 2021-08-21 17:25:52 +08:00
dependabot[bot] 9b76589802
Bump addressable from 2.7.0 to 2.8.0 in /android
Bumps [addressable](https://github.com/sporkmonger/addressable) from 2.7.0 to 2.8.0.
- [Release notes](https://github.com/sporkmonger/addressable/releases)
- [Changelog](https://github.com/sporkmonger/addressable/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sporkmonger/addressable/compare/addressable-2.7.0...addressable-2.8.0)

---
updated-dependencies:
- dependency-name: addressable
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-07-13 17:04:40 +00:00
stonega 9ff8f84892 Add new audio plugin. 2021-05-02 00:02:12 +08:00
stonegate 20bf421ba1
Merge pull request #44 from stonega/dependabot/bundler/android/rexml-3.2.5
Bump rexml from 3.2.4 to 3.2.5 in /android
2021-05-01 16:53:59 +08:00
stonega 7474afd7b8 Migrate to one isolate audio service. 2021-05-01 14:17:56 +08:00
dependabot[bot] 5a7522ddb5
Bump rexml from 3.2.4 to 3.2.5 in /android
Bumps [rexml](https://github.com/ruby/rexml) from 3.2.4 to 3.2.5.
- [Release notes](https://github.com/ruby/rexml/releases)
- [Changelog](https://github.com/ruby/rexml/blob/master/NEWS.md)
- [Commits](https://github.com/ruby/rexml/compare/v3.2.4...v3.2.5)

Signed-off-by: dependabot[bot] <support@github.com>
2021-04-30 22:08:26 +00:00
stonega 7312fdd10c Move audio service to one isolate branch. 2021-04-09 22:23:15 +08:00
stonega 03f50d7194 Update readme. 2021-03-28 21:40:05 +08:00
stonega 32b3298ea3 Add fdroid badge. 2021-03-28 20:16:27 +08:00
stonega d3f33e5d2b Update. 2021-03-15 23:08:34 +08:00
Stonegate 6c21b87b34 Update language. 2021-03-11 22:55:31 +08:00
Stonegate e0d7a8d60f Update to flutter2.0. 2021-03-10 00:23:23 +08:00
stonega 61312ab36a Update github action conf. 2021-02-27 02:14:31 +08:00
stonega 962b0a4e4b v0.6.0 Release 2021-02-27 02:00:29 +08:00
stonega 0bb7f78289 Remove fdroid conf. 2021-02-27 01:54:10 +08:00
stonega 97406a1ddb Minor change. 2021-02-17 23:25:23 +08:00
stonega 927907b78f Load local folder as playlist. 2021-02-17 23:25:05 +08:00
stonega b3e57be396 Minor change. 2021-02-17 00:57:20 +08:00
stonega 48922e65cc Option to always hide new mark for podcast. 2021-02-17 00:57:06 +08:00
stonega 522481ad93 Minor change. 2021-02-16 22:57:58 +08:00
stonega c4bf7fce60 Remove asset image, peformance boost. 2021-02-16 22:57:16 +08:00
stonega d5295db753 Add reddit link. 2021-02-16 22:56:39 +08:00
stonega 498e29aba3 Update 2021-02-16 22:56:28 +08:00
stonega 2b8174d79b Update skydroid conf. 2021-02-16 22:55:45 +08:00
stonega ee8f7f2246 Update skydroid conf. 2021-02-16 10:54:17 +08:00
stonega f11e572cec Update action conf. 2021-02-15 23:47:20 +08:00
stonega 7600defbc7 Update action conf. 2021-02-15 19:40:30 +08:00
stonega adc8b9e0c3 Update nkd version. 2021-02-15 14:41:23 +08:00
stonega 682c6181c5 Skydroid emerge. 2021-02-15 11:59:38 +08:00
stonega f2337178ac Update version in about page. 2021-02-11 13:34:58 +08:00
stonega df0855f511 Update fastlane screenshots. 2021-02-11 13:23:43 +08:00
stonega dbd1e9c94e v0.5.9 Release. 2021-02-11 13:23:20 +08:00
stonega 9a46e0fc47 Update translations. 2021-02-11 13:22:53 +08:00
stonega 26e74d34e5 Minor ui fix, 2021-02-11 13:02:39 +08:00
stonega c16729763a Minor change. 2021-02-11 12:46:19 +08:00
stonega 6d5ca4a6fb Fix rss feed parse error. 2021-02-11 12:45:59 +08:00
stonega b5b1ea1c97 Update ignore file. 2021-02-11 12:45:39 +08:00
stonega 54fc876676 Remove listennotes request under fdroid. 2021-02-11 12:45:26 +08:00
stonega 939699c892 Update fastlane description. 2021-02-10 23:51:01 +08:00
stonega a0d7147811 Upload fastlane file. 2021-02-10 20:45:18 +08:00
stonega ec1a4c3276 Update fastlane conf. 2021-02-10 18:33:38 +08:00
stonega 2376667869 Update fastlane configuration. 2021-02-10 17:19:23 +08:00
stonega b95e715af8 Update pubspec. 2021-02-10 13:49:31 +08:00
Stonegate d892f79863 Update lineicons. 2021-02-10 01:55:51 +08:00
Stonegate f208ab6925 Update readme. 2021-02-10 01:54:56 +08:00
Stonegate 07236fc2cb Change name. 2021-02-10 01:13:06 +08:00
Stonegate 8f47d00b06 Turkish lang support, thanks to Murat. 2021-02-10 01:03:35 +08:00
Stonegate cac57b47f6 Bug fix. 2021-02-10 01:03:08 +08:00
Stonegate 7442f7f34e v0.5.8 release. 2021-02-10 00:45:35 +08:00
Stonegate 5ef238df32 Minor change. 2021-02-10 00:40:24 +08:00
Stonegate 35b1e5c372 Play from search result. 2021-02-10 00:40:04 +08:00
Stonegate 7bbcb78fe0 Minor change. 2021-02-10 00:39:03 +08:00
Stonegate 67166178f4 Bug fix. 2021-02-09 15:36:56 +08:00
Stonegate 190f4b992d Play episode from search result. 2021-02-09 15:36:29 +08:00
Stonegate 5b2a95cd2d Minor change. 2021-02-08 00:32:17 +08:00
Stonegate 9ea2e59c71 Update chapter widget UI. 2021-02-08 00:31:30 +08:00
stonega 66e76752e2 Add splashradius to buttons. 2021-02-06 23:41:30 +08:00
stonega b2a2b53e66 Minor change. 2021-02-06 23:39:25 +08:00
stonega db5d038e62 Suport chapers in player panel. 2021-02-06 23:39:00 +08:00
stonega 9ae9a27206 Fix player panel height issue. 2021-02-06 23:38:01 +08:00
stonega b23fb3f38d Fdroid build, move fastlane position. 2021-02-06 02:21:26 +08:00
stonega 35d749564c Fix bug, '/' in episode title download fail. 2021-02-06 02:20:49 +08:00
stonega b7047f29fc Minor change. 2021-02-06 02:20:01 +08:00
stonega c1b72b53e0 Update player panel UI, 2021-02-06 02:19:37 +08:00
Stonegate b9b88feb42 Update player panel UI. 2021-02-05 00:08:31 +08:00
Stonegate 7c13058463 Minor change. 2021-02-05 00:08:16 +08:00
Stonegate 133cbcd65f Add launche.json 2021-02-04 23:08:13 +08:00
Stonegate 818069a18f iOS build. 2021-02-04 00:21:15 +08:00
stonega ba3347e31e Improve search page performance. 2021-01-31 22:26:54 +08:00
stonega 3405afce83 Verify gradle download. 2021-01-31 19:21:23 +08:00
stonega ca675639ef v0.5.7 release 2021-01-31 13:16:02 +08:00
stonega c708b563f1 Minor change. 2021-01-31 13:01:22 +08:00
stonega 77db78134b Fastlane support. 2021-01-31 12:35:00 +08:00
stonega f43a3cf4bc Minor change. 2021-01-31 12:34:19 +08:00
stonega f752f10a37 Minor change. 2021-01-30 17:21:04 +08:00
stonega c40be932db Fdroid publish. 2021-01-30 10:23:09 +08:00
Stonegate 51f96c3de7 Update builld script. 2021-01-29 00:50:32 +08:00
Stonegate 0bc1414a68 v0.5.6 release. 2021-01-29 00:33:55 +08:00
Stonegate f5b8564768 Minor change. 2021-01-29 00:32:21 +08:00
Stonegate d10a12678c FIx bug, podcast image save wrong name. 2021-01-29 00:32:02 +08:00
Stonegate 1ea63a8ba5 Build update. 2021-01-29 00:30:44 +08:00
Stonegate 7dee5738c9 Fdroid pub configuration. 2021-01-28 00:30:59 +08:00
Stonegate f378382aa1 Minor change. 2021-01-28 00:12:18 +08:00
stonega 61c9a9db07 v0.5.5 Release. 2021-01-25 00:23:14 +08:00
stonega fe04c8133c Change episode title max line to 2. 2021-01-25 00:16:59 +08:00
stonega 566ae0914f Add options to settings backup. 2021-01-24 22:49:58 +08:00
stonega 65769a2ec7 Minor ui update. 2021-01-24 22:39:02 +08:00
stonega 1d334b58b2 Add progress indicator on avatar. 2021-01-24 22:33:49 +08:00
stonega f219ac9d3f Bug fixs, playlist item was wrongly deleted 2021-01-24 22:00:32 +08:00
stonega 17c3fbdbb7 Minor change. 2021-01-24 19:17:44 +08:00
stonega 5f0d069ab9 Change launch screen ui. 2021-01-24 19:17:31 +08:00
stonega 2dac1a4fce Add time info in playlist page. 2021-01-24 19:10:09 +08:00
stonega 0ad1652448 Bug fix, last position not saved. 2021-01-24 16:49:14 +08:00
Stonegate af89f43469 iOS version build. 2021-01-17 23:02:30 +08:00
stonega dea320c7ae v0.5.4 released. 2021-01-09 18:16:58 +08:00
stonega a5d3315833 Remove print. 2021-01-09 18:09:20 +08:00
stonega 6eab636f98 Support podcast index new namespce funding. 2021-01-09 18:09:01 +08:00
stonega 98b6f2f829 Bug fix, custom rss read error. 2021-01-09 18:07:56 +08:00
stonega e97752bea5 Bug fix, refresh page after podcast update. 2021-01-09 13:27:21 +08:00
stonega ffead02039 Update plugins. 2021-01-09 13:26:44 +08:00
stonega c330bfe7b0 Add border to avatar. 2021-01-09 13:26:23 +08:00
Stonegate 2438803775 Update about page. 2021-01-07 21:52:09 +08:00
Stonegate ca251e2828 v0.5.3 release. 2021-01-07 21:44:54 +08:00
Stonegate 378bdd5ba5 Add remove new mark in podcast page. 2021-01-07 21:36:12 +08:00
Stonegate bcaab84b8f Support open podcasts page insteam of group page. 2021-01-07 00:29:24 +08:00
Stonegate 4fe335ff69 Open playlist page default. 2021-01-07 00:28:53 +08:00
Stonegate 747aa47772 Improve time tag UI in history tab. 2021-01-05 23:59:55 +08:00
Stonegate a9032aaef7 Language update. 2021-01-05 23:16:10 +08:00
stonega c35536759f Change icon to outlined. 2021-01-03 02:31:26 +08:00
stonega f848f73bbf Change tag font color to black. 2021-01-03 02:12:55 +08:00
stonega ee2b3ff889 0.5.2 changelog. 2021-01-03 01:49:29 +08:00
stonega 41bb9c0c4e Change bottom sheet title font style. 2021-01-03 01:34:25 +08:00
stonega ea611e9798 Bug fix. 2021-01-03 01:33:45 +08:00
stonega 54268cf8b9 Podcast page transition with fixed player. 2021-01-03 00:48:26 +08:00
stonega daaeb7c8c1 Update plugins version. 2021-01-02 23:09:36 +08:00
stonega b2c4a2050e Minor change. 2021-01-02 22:54:10 +08:00
stonega 17b45abe47 Update import. 2021-01-02 22:53:38 +08:00
stonega 2619787c8d Fix playlist init error. 2021-01-02 22:53:16 +08:00
stonega c2e0330cde Change appbar ui. 2021-01-02 22:52:49 +08:00
stonega b36d9f80be Change podcast setting ui. 2021-01-02 22:52:28 +08:00
stonega 7cf751fed0 Change header ui. 2021-01-02 22:51:45 +08:00
stonega 8be47b0ac0 Change sub_history. 2021-01-02 22:51:21 +08:00
stonega 15809fd90f Remove unsed import. 2021-01-02 22:50:44 +08:00
stonega 7bca695437 Remove dead episodes from playlist. 2021-01-02 22:50:19 +08:00
stonega a09718ca91 Remove unused statement. 2021-01-02 22:48:37 +08:00
Stonegate 774f39da1b Update podcast tile layout. 2021-01-02 20:38:51 +08:00
Stonegate ac2cace335 Minor change. 2021-01-02 20:38:30 +08:00
Stonegate 196f48e7a9 Improve queue reorder experience. 2021-01-02 18:49:17 +08:00
Stonegate 7a43dd9058 Minor ui update. 2021-01-02 18:48:55 +08:00
Stonegate 48ca171ada Minor change. 2021-01-02 18:47:40 +08:00
Stonegate 2413776b3c Update version to 0.5.2. 2021-01-02 18:47:24 +08:00
Stonegate 48b1d88fc9 Remove unused statements. 2021-01-02 16:47:05 +08:00
Stonegate 2e14835bd9 Change task mode to immunate. 2021-01-02 16:46:35 +08:00
Stonegate 656e5ccdea Improve custom playlist support. 2021-01-02 16:21:05 +08:00
Stonegate f36ae4f486 Chang rss and link layout. 2021-01-02 16:18:47 +08:00
Stonegate a34b9f3a8a Fix queue reorder eoor. 2021-01-02 16:18:22 +08:00
Stonegate c625e114ad Minor change. 2021-01-02 16:15:42 +08:00
Stonegate a9cca25e5c Typo fix. 2021-01-02 16:14:43 +08:00
Stonegate 91eff967fb Minor change. 2021-01-01 23:43:10 +08:00
Stonegate ccdfabeb3f Bug fix. 2021-01-01 23:42:59 +08:00
Stonegate 26353bb67b Change setting menu, remove playlist. 2021-01-01 23:42:32 +08:00
Stonegate dc40803a79 Change player panel radius. 2021-01-01 23:42:08 +08:00
Stonegate a9e370fbe7 Minor change. 2021-01-01 23:41:33 +08:00
Stonegate 850250efec Minor UI change. 2021-01-01 14:51:23 +08:00
Stonegate 0fdf9aac9d Merge branch 'master' of https://github.com/stonega/tsacdop 2021-01-01 02:23:19 +08:00
Stonegate a7a3fc7845 Minor change. 2021-01-01 02:08:46 +08:00
Stonegate b3e1d4cb42 Create playlists with new options. 2021-01-01 02:08:23 +08:00
Stonegate b25093583a Update sleep timer picker UI. 2021-01-01 02:08:03 +08:00
Stonegate d3d21f28e3 Add time picker in sleeper mode, custom playlist. 2021-01-01 00:52:11 +08:00
Stonegate bb4f26cd34 Add remove selected button, UI improved. 2020-12-31 23:23:12 +08:00
stonega 14ce9fc12e Minor change. 2020-12-29 18:17:06 +08:00
stonega 26d49b4da3 Refresh and remove new mark button 2020-12-28 22:08:52 +08:00
stonega 526eeb885b Minor change. 2020-12-28 22:05:37 +08:00
stonega f029a849a2 Languages update. 2020-12-28 22:05:18 +08:00
stonega 6039da8d80 Change refresh icon. 2020-12-28 21:39:05 +08:00
stonega 963415ded4 Custom playlist support. 2020-12-23 22:03:07 +08:00
stonega 1d8db22dde Custom playlist support (working) 2020-12-20 17:35:39 +08:00
stonega 0a8f622f85 Minor change. 2020-11-06 22:08:26 +08:00
stonega b5aad31c15 v0.5.1 changelog. 2020-11-06 22:08:07 +08:00
stonega b68d736d92 Fixed issue, notification skip next not work. 2020-11-06 22:04:08 +08:00
stonega f282d3288b Use fork audio service. 2020-11-04 01:55:49 +08:00
stonega b83853cb8c Fix notification skip to next issue. 2020-11-04 01:55:29 +08:00
stonega d394066634 Update playlist class. 2020-11-04 01:54:50 +08:00
stonega f801fb65f4 Minor change. 2020-11-04 01:54:29 +08:00
stonega 1e42cde733 Update playlist class. 2020-11-04 01:54:03 +08:00
stonega 085eb1d78e Fix listennotes search error. 2020-11-04 01:53:17 +08:00
stonega 109c83eb9f Change java version. 2020-10-30 20:47:50 +08:00
stonega e2aa75ee02 Minor change. 2020-10-30 20:35:02 +08:00
stonega fe36c06a38 Minor change. 2020-10-29 22:16:23 +08:00
stonega ee940dda5e Update bottom sheet UI. 2020-10-29 21:25:42 +08:00
stonega 074f31e7cd Add play next in popupmenu. 2020-10-29 21:05:58 +08:00
stonega 434609eaeb Improve menu button UI. 2020-10-29 16:20:51 +08:00
stonega 06ec6ee5a1 Add feed titile in episode page, tap avatar to open podcast page. 2020-10-29 01:32:29 +08:00
stonega e62c222efe Switch to fedora. 2020-10-28 20:10:43 +08:00
stonega aa3bbb2b4b Test 2020-10-28 20:08:45 +08:00
stonegate 42c93a6404 Minor change. 2020-10-14 15:39:25 +08:00
stonegate e340d996ac Update github action config. 2020-10-14 15:39:02 +08:00
stonegate 52b4e17200 Minor change. 2020-10-14 14:41:14 +08:00
stonegate 2a54c5cb7b Push back 3 seconds when paused, fixed bug load episode with position failed. 2020-10-14 14:40:58 +08:00
stonegate aed985a4bc Update github action config. 2020-10-14 11:52:01 +08:00
stonegate d794855892 Update github action config. 2020-10-14 01:02:52 +08:00
stonegate ae3e9050ac Update github action config. 2020-10-14 00:50:37 +08:00
stonegate b69e22a12e Release v0.5.0 2020-10-14 00:07:26 +08:00
stonegate 340aaf7173 Fixed bug. 2020-10-14 00:07:13 +08:00
stonegate cb86151caf Minor ui update. 2020-10-13 23:35:27 +08:00
stonegate 974c2af18e Improve route animation. 2020-10-13 23:35:15 +08:00
stonegate 24861bf588 Minor change. 2020-10-13 00:41:17 +08:00
stonegate 67d57c5334 Multi select for favorite page. 2020-10-13 00:40:51 +08:00
stonegate e8708535ee Update layout one UI, 2020-10-13 00:40:25 +08:00
stonegate bc69276541 Minor change. 2020-10-12 17:31:35 +08:00
stonegate c251791b48 Multi select support. 2020-10-12 17:31:19 +08:00
stonegate 2e0e65f41a Select before and select after. 2020-10-12 01:24:19 +08:00
stonegate 7f66ebd7e6 Minor change. 2020-10-11 20:28:20 +08:00
stonegate e8882a62b8 Auto delete downloads after played. 2020-10-11 20:28:10 +08:00
stonegate 7af2cb5a09 Language update. 2020-10-11 18:10:05 +08:00
stonegate e3ca2a6a32 Format update. 2020-10-11 18:09:53 +08:00
stonegate b31cc38fad Select all. 2020-10-11 18:09:36 +08:00
stonegate b1c778922b Update readme. 2020-10-11 02:44:03 +08:00
stonegate 10931f31a0 Update action config. 2020-10-11 02:25:48 +08:00
stonegate 7d3dd9824a Update github action config. 2020-10-11 02:11:28 +08:00
stonegate c97a838ea3 Update github config. 2020-10-11 02:00:56 +08:00
stonegate 3d9ec7e246 Update github action config. 2020-10-11 01:57:09 +08:00
stonegate 3287ac0f78 Udpate github action config. 2020-10-11 01:37:06 +08:00
stonegate 5888ce14a1 Update ndk version. 2020-10-11 01:25:45 +08:00
stonegate 2681385830 Update github action config. 2020-10-11 01:11:24 +08:00
stonegate 9437d37017 Add github action config. 2020-10-11 01:00:47 +08:00
stonegate f2eb81de76 Update ci config. 2020-10-11 00:26:39 +08:00
stonegate a825d1d97c Minor change. 2020-10-10 23:44:54 +08:00
stonegate 68ea9e32df
Delete gradlew 2020-10-10 22:47:14 +08:00
stonegate f2e16dd73d
Delete gradle-wrapper.jar 2020-10-10 22:38:07 +08:00
stonegate 6c2f78f9e4 Update ci config. 2020-10-10 22:34:31 +08:00
stonegate 05d5b76ca6 Change download position. 2020-10-10 21:43:59 +08:00
stonegate 88ce52dcae Minor change. 2020-10-10 21:43:45 +08:00
stonegate 5e6b5981c7 Updare ci config. 2020-10-10 18:26:10 +08:00
stonegate e8affb1c8b Update ci config. 2020-10-10 18:20:24 +08:00
stonegate 4b5d82305f Update ci config. 2020-10-10 18:18:17 +08:00
stonegate 3bfbc87d09 Update ci config. 2020-10-10 18:15:13 +08:00
stonegate ea8f453cf8 Update ci config. 2020-10-10 18:03:57 +08:00
stonegate 9099e81126 Fix gradle issue. 2020-10-10 17:44:12 +08:00
stonegate d8b80c2679 Update ci config. 2020-10-10 17:02:47 +08:00
stonegate 49fe839f5d Minor change. 2020-10-10 16:51:57 +08:00
stonegate da684480b3 Minor change. 2020-10-10 14:03:12 +08:00
stonegate 061fadbccc Change back button style. 2020-10-09 23:59:29 +08:00
stonegate 80e22ab24d Update plugins. 2020-10-09 12:21:09 +08:00
stonegate 9b6f7f05e2 Change sory by button style. 2020-10-09 12:20:54 +08:00
stonegate fddf9988a5 Update circle config. 2020-10-03 18:17:21 +08:00
stonegate daf90e0f6b Minor change. 2020-10-03 17:50:05 +08:00
stonegate 209403b50f Minor change. 2020-10-03 17:44:24 +08:00
stonegate 7f5286ba07 Update device_info version. 2020-10-03 17:27:06 +08:00
stonegate f860676f9e Release v0.4.20 2020-10-03 17:11:07 +08:00
stonegate 55d1a01168 Minor change. 2020-10-03 16:57:50 +08:00
stonegate 84c3a268dd Update about page UI. 2020-10-03 16:57:30 +08:00
stonegate 4aa53515e3 Fix pubdate parse error. 2020-10-03 16:57:11 +08:00
stonegate ec9836a432 Minor change. 2020-10-01 20:11:13 +08:00
stonegate 6dd8d37f77 Change default serach engine to podcastindex. 2020-10-01 19:42:52 +08:00
stonegate e9c0e7eae9 Minor change. 2020-10-01 18:02:48 +08:00
stonegate e7839f8249 Merge branch 'master' of https://github.com/stonega/tsacdop 2020-10-01 17:50:23 +08:00
stonegate e7b9104092 Minor change. 2020-10-01 17:47:25 +08:00
stonegate fa883a4722 Minor change. 2020-10-01 17:44:39 +08:00
stonegate 194f46eb14
Merge pull request #21 from stonega/imgbot
[ImgBot] Optimize images
2020-10-01 17:36:36 +08:00
stonegate 5dcdba41cd Release v0.4.19. 2020-10-01 17:32:58 +08:00
stonegate ca71aec1ca Minor change. 2020-10-01 17:32:39 +08:00
stonegate 67f3deeb59 Update language. 2020-10-01 16:51:45 +08:00
stonegate 80a4c9bc1b Fixed issue mark all listened failed. 2020-10-01 16:01:12 +08:00
ImgBotApp b508d61999
[ImgBot] Optimize images
*Total -- 268.13kb -> 202.91kb (24.32%)

/assets/podcastindex.png -- 21.52kb -> 7.79kb (63.79%)
/assets/avatar_backup.png -- 12.97kb -> 5.34kb (58.79%)
/assets/podcastindex_logo.png -- 10.09kb -> 6.98kb (30.81%)
/assets/listennotes_logo.png -- 189.11kb -> 153.64kb (18.76%)
/assets/gpodder.png -- 34.43kb -> 29.15kb (15.35%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
2020-10-01 07:37:40 +00:00
stonegate b5b947b988 Minor change. 2020-10-01 14:54:32 +08:00
stonegate 9b957c7b68 Language update, add italian support. 2020-10-01 14:54:14 +08:00
stonegate b3e59bc2c7 Option to hide podcast discovery 2020-10-01 14:53:27 +08:00
stonegate 36a23f2de5 Minor change. 2020-10-01 00:15:41 +08:00
stonegate a70103c3eb Podcastindex search support. 2020-09-30 01:25:44 +08:00
stonegate 8b57619960 Language update. 2020-09-27 16:05:44 +08:00
stonegate e1ef5bab10 Releas 0.4.18 2020-09-27 16:02:58 +08:00
stonegate acf6ada44b Minor change. 2020-09-27 14:11:53 +08:00
stonegate 6086db0f8c Minor change 2020-09-26 22:26:25 +08:00
stonegate 93ed9d3513 Improve gpodder sync. 2020-09-24 15:27:52 +08:00
stonegate d15f1c7b89 Fixed bug, podcast detail page layout setting failed. 2020-09-24 01:08:02 +08:00
stonegate 719d9c8cc0 Sync with gpodder.net. 2020-09-23 22:19:07 +08:00
stonegate 064d63350d Add Portuguese suppport. 2020-09-23 22:18:45 +08:00
stonegate e2ef6ea01b Change podcast list page long tap option, long tap See All in homepage to open podcast list. 2020-09-19 01:56:07 +08:00
stonegate b271965009 Update podcast setting menu, add skip seconds at end. 2020-09-18 23:01:00 +08:00
stonegate fb31758f50 Update FUNDING.yn, 2020-09-17 17:05:18 +08:00
stonegate 12127253e4
Create FUNDING.yml 2020-09-17 16:06:10 +08:00
stonegate 74468bf35c Improve group manage page animation. 2020-09-17 01:38:07 +08:00
stonegate 29f989e384 Minot change. 2020-09-16 17:32:32 +08:00
stonegate b8b72dc020 Release 0.4.17 2020-09-16 17:31:32 +08:00
stonegate ff719ff90b Stop audoio service after removed from recent. 2020-09-16 17:27:16 +08:00
231 changed files with 48137 additions and 33163 deletions

View File

@ -1,28 +0,0 @@
version: 2
jobs:
build:
docker:
- image: cirrusci/flutter:stable
branches:
only: master
steps:
- checkout
- run:
name: Run Flutter doctor
command: flutter doctor
- run:
name: Update package
command: flutter update-packages --force-upgrade
- run: echo $ENCODED_KEYSTORE | base64 -di > ${HOME}/keystore.jks
- run: echo 'export KEYSTORE=${HOME}/keystore.jks' >> $BASH_ENV
- run: dart tool/env.dart
- run:
name: Build the Android version
command: flutter build appbundle --obfuscate --split-debug-info=debug/
- run:
name: Build the Android apk
command: flutter build apk --split-per-abi --obfuscate --split-debug-info=debug/
- store_artifacts:
path: build/app/outputs/

12
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1,12 @@
# These are supported funding model platforms
github: # Replace with up to 4buy-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: stonegate # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: ["https://www.buymeacoffee.com/stonegate"] # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

43
.github/workflows/flutter_build.yml vendored Normal file
View File

@ -0,0 +1,43 @@
name: Flutter Build
on:
push:
branches:
- master
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/setup-java@v1
with:
java-version: "11.x"
- uses: subosito/flutter-action@v1
with:
channel: "stable" # 'dev', 'alpha', default to: 'stable'
- run: flutter pub get
- run: echo $ENCODED_KEYSTORE | base64 -di > android/app/keystore.jks
env:
ENCODED_KEYSTORE: ${{ secrets.ENCODED_KEYSTORE }}
- run: dart tool/env.dart
env:
API_KEY: ${{ secrets.API_KEY }}
PI_API_SECRET: ${{ secrets.PI_API_SECRET}}
PI_API_KEY: ${{ secrets.PI_API_KEY}}
- run: flutter build apk --split-per-abi --obfuscate --split-debug-info=debug/ --flavor=play
env:
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD}}
- run: flutter build appbundle --obfuscate --split-debug-info=debug/ --flavor=play
env:
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD}}
- uses: actions/upload-artifact@v2
with:
name: release-file
path: |
build/app/outputs/flutter-apk/*
build/app/outputs/bundle/playRelease/*

82
.gitignore vendored
View File

@ -1,41 +1,41 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/
# Flutter/Dart/Pub related
**/doc/api/
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/lib/.env.dart
/build/
pubspec.lock
.vscode
analysis_options.yaml
# Web related
lib/generated_plugin_registrant.dart
# Exceptions to above rules.
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
.vscode/settings.json
# Flutter/Dart/Pub related
**/doc/api/
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/lib/.env.dart
/build/
pubspec.lock
analysis_options.yaml
.fvm/
# Web related
lib/generated_plugin_registrant.dart
# Exceptions to above rules.
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages

View File

@ -1,10 +1,10 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.
version:
revision: 659dc8129d4edb9166e9a0d600439d135740933f
channel: beta
project_type: app
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.
version:
revision: 659dc8129d4edb9166e9a0d600439d135740933f
channel: beta
project_type: app

17
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,17 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Flutter",
"request": "launch",
"type": "dart",
"args": [
"--flavor",
"play"
]
}
]
}

6
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,6 @@
{
"cSpell.words": [
"cupertino",
"tsacdop"
]
}

View File

@ -1,262 +1,433 @@
# Tsacdop Changelog
## 0.4.16
Release date 2020/9/15
## New features
* Discovery feature in search page.
* Multi select in podcast page.
* Customize the speed options available.
## Bugs fixed
* Fix download error when podcast name includes /.
* Make the group name editable directly.
* Fixed shownote timestamp click error.
## Minor changes
* Update donate button UI.
## 0.4.15
Release date 2020/8/30
### New features
* Option to change notification panel layout.
* Option to change show notes font style.
* Option to hide listened default.
* Change skip next/previous to fastForward/rewind on headset click.
### Bugs fixed
* Download error when filename too long.
### Minor change
* Update download button style and downloaded indicator style.
* Add 1.1 to speed setting.
* Add 5s to skip seconds setting.
## 0.4.14
Release date 2020/8/20
Only for izzyonandroid.
## 0.4.13
Release date 2020/8/19
### Bugs fixed
* Downloaded episode play error, you might need to redownload the episode.
## 0.4.12
Release date 2020/8/15
### Bugs fixed
* Crash when reorder episodes or podcasts.
* Popup menu setting import bug.
* Default language failed to load.
### Minor changes
* Change language|feedback|podcast settings to button sheet.
* Add history in home playlist button.
* History page UI improved.
## 0.4.11
Release date 2020/8/12
### New features
* Boost volume. You can change boost level in settings.
* You can tap time stamp to skip instantly in shownote when the episode is playing.
* Add history list in playlist page.
* You can also mark not listened now.
### Minor change
* Improved time picker UI.
* Add episode setting page.
### Bugs fix
* Play record didn't saved after stop playing.
* Network error message didn't disapear after skip to next.
* Fireside avatar load error.
## 0.4.10
Release date 2020/8/6
### Bugs fixed
* Episdoe date parse error.
* Play from start after interrupt.
* Playlist in player unstable.
* Language setting not saved after restart app.
### Minor change
* Fast forward and rewind buttons UI changed.
## v0.4.9
Release date 2020/8/1
### New features
* Player UI redesign.
* Added player height setting.
* Added skip silence feature.
### Bugs fixed
* Language fixs. (Thanks to Atrate)
* Make app movable to SD card. (Thanks to Atrate)
### Minor change
* Episode page open animation improved.
* Podcast page load faster than before.
* Removed unnecessary scroll overlay effect.
* Episode page bottom menu hide when scroll down.
## v0.4.8
Release date 2020/7/25
### New features
* Filter in podcast detail page, you can also hide listened episodes.
* Search result ui improved, you can see more info for result.
* Update audio service to latest version.
* Support fast forward seconds and rewind seconds customize.
* Add Franch language support(beta).
* Add translators in about page.
### Bugs fixed
* Icon issue on below android 8 devices.
### Minor change
* Download button ui improved.
* Title changed to scrollable in episode detail page.
* Real dark theme improved.
* Add dot indicator in popup menu.
* Tap logo in homepage to toggle theme.
## v0.4.7
Release date 2020/7/18
### Bugs fixed
* Ompl files form other platform import error.
* Audio cache did't work.
## v0.4.6
Release date 2020/7/17
### Bugs fixed
* Mark listened not work.
* Recover subscribe wrong group.
## v0.4.5
Release date 2020/7/16
## New features
* OMPL backup file supports group.
* Add settings backup and restore.
* Enable R8 and dart obfuscate.
## Bugs fixed
* OMPL import not shown in group.
## Minor UI change
* Tap logo in homepage to toggle theme mode.
* Change subscribe button style.
* Improve history chart style.
## v0.4.0
Release date 2020/7/9
### New features
* Localization, changed all UI strings in app to support locale, support languages include en & zh right now.
* Changed episode popup menu UI, add a switch to tap to open popup men.
### Minor UI change
* Improve dropdown menu UI.
* Change icons color in setting page.
* Improve player panel animation.
* Add scroll bar in libraries page.
## v0.3.6
Release date 2020/6/30
### New feature
* Add sleep timer settings. include default time, auto start sleep timer, etc.
### Bug fixed
* Crash on stop player.
* Some download file didn't auto deleted.
## v0.3.5
Release date 2020/6/20
This is a energency release.
### Bugs fixed
* Crashed in download page or button after remove a podcast. Add episode check when load tasks from flutterdownloader.
### Minor UI change
* Add buy me a coffee in about page.
* Remove progress number in download list in failed task, change refresh icon color to red.
## v0.3.4
Release date 2020/6/16
### New Feature
* Support auto download new episodes, you can choose which podcast you want to auto download, you can also set if download using cellular data.
* Support auto delete downloaded episode, you can set days before delete.
* Support customize episode popup menu, you can add options you most want, **Like** | **Mark Listened** | **Download** newly added.
* Improved downloaded file manager, you can now sort downloads by date or size, you can also only view listened downloads.
### Minor UI Change
* Removed the listened indicator, increased the color difference for listened episodes.
* Add text in podcast manage page menu.
* Change episode shownote font to Martel.
### Bugs Fixed
* Auto play when receive notification.
* Lose podcast when import OMPL file.
### Other
* Add privacy policy.
# Tsacdop Changelog
## 0.6.0
Release date 2021/2/27
### New features
* Load local folder as playlist
* Option to always hide new mark for podcast.
* Memory use reduced a lot
* Add reddit link
## 0.5.9
Release date 2021/2/11
### Bug fix
* Some podcasts subscribe failed.
* Update fastlane screenshots.
## 0.5.8
Release date 2021/2/9
### New features
* Artwork shownotes and chapters in player panel.
* Play without subscription, inside search result directly.
### Bug fix
* Episode download failed with '/' in title.
## 0.5.7
Release date 2021/1.31
For frdoid
## 0.5.6
Release date 2021/1.28
### Bug fix
* Image saved wrongly after subscribe new podcast.
## 0.5.5
Release date 2021/1/25
### Bugs fix
* Position not saved after player stpoped.
* Wrongly remove episodes from playlist when get back from playlist page.
* Player crash on OP5T.
### Minor change
* Playlist page UI update.
## 0.5.4
Release date 2021/1/9
### New feature
* Support podcastindex namespace podcast:funding,
### Minor change
* Podcast detail page UI update.
### Bug fix
* Custom rss link subscribe error.
## 0.5.3
Release date 2021/1/7
### Minor change
* Option to open playlist page by default.
* Option to open podcast list page instead of group page.
* Add remove new mark buttong in podcast page.
## 0.5.2
Release date 2021/1/3
First release in 2021
### New features
* Custom playlist support.
* Playlist page redesign.
* Podcast detail page and group management page UI update.
* Add remove new mark button in recent tab antion bar.
* Support time setting in sleep mode.
### Minor change
* Remove add new to playlist button.
* Groups management perfomance improved.
* Podcast page opennning animation improved.
## 0.5.1
Release date 2020/11/1
### Bug fixed
* ListenNotes search error.
* Sync podcasts marked as never auto update.
* Download failed when network is busy.
### Minor change
* User can add episode to the top of playlist in popup menu.
* Show podcast name in episode detail page.
* Tap pocdast avatar in episode card to open podcast page.
## 0.5.0
Release date 2020/10/13
### New fewtures
* Support multi select on recent and favorite tab.
* Select all/ select before/ select after.
* Option to delete episode download file when played.
* OPtion to mark as listened after skipped.
### Bug fixed
* Feed pubdate parse error.
* Episodes load with initial position failed.
### Minor changes
* Single colume layout update.
* About page UI update.
* More smooth animation when open podcast detail page.
* Change sort by button style in podcast detail page.
* Auto rewind 3 seconds when resuming from paused state.
## 0.4.20
Release date 2020/10/3
### Bug fixed
* Rss feed parse error.
## 0.4.19
Release date 2020/10/1
### New features
* Set podcastindex as default search engine.
* Option to hide podcast discovery in search page.
* Italian translation support, thanks Edoardo.
### Bug fixed
* Mark all listened error.
## 0.4.18
Release date 2020/9/27
### New features
* Support gpodder.net sync.
* Portuguese translation, thanks Bruno.
* Turn off auto update for podcast.
* Pull to refresh in recent tab, supports group update.
### Minor changes
* Longpress 'see all' to open full podcast list.
## 0.4.17
Release date 2020/9/16
### Bug fixed
* Remove notification after app removed from recent.
## 0.4.16
Release date 2020/9/15
### New features
* Discovery feature in search page.
* Multi select in podcast page.
* Customize the speed options available.
### Bugs fixed
* Fix download error when podcast name includes /.
* Make the group name editable directly.
* Fixed shownote timestamp click error.
### Minor changes
* Update donate button UI.
## 0.4.15
Release date 2020/8/30
### New features
* Option to change notification panel layout.
* Option to change show notes font style.
* Option to hide listened default.
* Change skip next/previous to fastForward/rewind on headset click.
### Bugs fixed
* Download error when filename too long.
### Minor change
* Update download button style and downloaded indicator style.
* Add 1.1 to speed setting.
* Add 5s to skip seconds setting.
## 0.4.14
Release date 2020/8/20
Only for izzyonandroid.
## 0.4.13
Release date 2020/8/19
### Bugs fixed
* Downloaded episode play error, you might need to redownload the episode.
## 0.4.12
Release date 2020/8/15
### Bugs fixed
* Crash when reorder episodes or podcasts.
* Popup menu setting import bug.
* Default language failed to load.
### Minor changes
* Change language|feedback|podcast settings to button sheet.
* Add history in home playlist button.
* History page UI improved.
## 0.4.11
Release date 2020/8/12
### New features
* Boost volume. You can change boost level in settings.
* You can tap time stamp to skip instantly in shownote when the episode is playing.
* Add history list in playlist page.
* You can also mark not listened now.
### Minor change
* Improved time picker UI.
* Add episode setting page.
### Bugs fix
* Play record didn't saved after stop playing.
* Network error message didn't disapear after skip to next.
* Fireside avatar load error.
## 0.4.10
Release date 2020/8/6
### Bugs fixed
* Episdoe date parse error.
* Play from start after interrupt.
* Playlist in player unstable.
* Language setting not saved after restart app.
### Minor change
* Fast forward and rewind buttons UI changed.
## v0.4.9
Release date 2020/8/1
### New features
* Player UI redesign.
* Added player height setting.
* Added skip silence feature.
### Bugs fixed
* Language fixs. (Thanks to Atrate)
* Make app movable to SD card. (Thanks to Atrate)
### Minor change
* Episode page open animation improved.
* Podcast page load faster than before.
* Removed unnecessary scroll overlay effect.
* Episode page bottom menu hide when scroll down.
## v0.4.8
Release date 2020/7/25
### New features
* Filter in podcast detail page, you can also hide listened episodes.
* Search result ui improved, you can see more info for result.
* Update audio service to latest version.
* Support fast forward seconds and rewind seconds customize.
* Add Franch language support(beta).
* Add translators in about page.
### Bugs fixed
* Icon issue on below android 8 devices.
### Minor change
* Download button ui improved.
* Title changed to scrollable in episode detail page.
* Real dark theme improved.
* Add dot indicator in popup menu.
* Tap logo in homepage to toggle theme.
## v0.4.7
Release date 2020/7/18
### Bugs fixed
* Ompl files form other platform import error.
* Audio cache did't work.
## v0.4.6
Release date 2020/7/17
### Bugs fixed
* Mark listened not work.
* Recover subscribe wrong group.
## v0.4.5
Release date 2020/7/16
## New features
* OPML backup file supports group.
* Add settings backup and restore.
* Enable R8 and dart obfuscate.
## Bugs fixed
* OPML import not shown in group.
## Minor UI change
* Tap logo in homepage to toggle theme mode.
* Change subscribe button style.
* Improve history chart style.
## v0.4.0
Release date 2020/7/9
### New features
* Localization, changed all UI strings in app to support locale, support languages include en & zh right now.
* Changed episode popup menu UI, add a switch to tap to open popup men.
### Minor UI change
* Improve dropdown menu UI.
* Change icons color in setting page.
* Improve player panel animation.
* Add scroll bar in libraries page.
## v0.3.6
Release date 2020/6/30
### New feature
* Add sleep timer settings. include default time, auto start sleep timer, etc.
### Bug fixed
* Crash on stop player.
* Some download file didn't auto deleted.
## v0.3.5
Release date 2020/6/20
This is a energency release.
### Bugs fixed
* Crashed in download page or button after remove a podcast. Add episode check when load tasks from flutterdownloader.
### Minor UI change
* Add buy me a coffee in about page.
* Remove progress number in download list in failed task, change refresh icon color to red.
## v0.3.4
Release date 2020/6/16
### New Feature
* Support auto download new episodes, you can choose which podcast you want to auto download, you can also set if download using cellular data.
* Support auto delete downloaded episode, you can set days before delete.
* Support customize episode popup menu, you can add options you most want, **Like** | **Mark Listened** | **Download** newly added.
* Improved downloaded file manager, you can now sort downloads by date or size, you can also only view listened downloads.
### Minor UI Change
* Removed the listened indicator, increased the color difference for listened episodes.
* Add text in podcast manage page menu.
* Change episode shownote font to Martel.
### Bugs Fixed
* Auto play when receive notification.
* Lose podcast when import OMPL file.
### Other
* Add privacy policy.

1348
LICENSE

File diff suppressed because it is too large Load Diff

381
README.md
View File

@ -1,186 +1,195 @@
[![Tsacdop Banner][]][google play]
[![Build Status - Cirrus][]][build status]
[![GitHub Release][]][github release - recent]
[![Github Downloads][]][github release - recent]
[![Localizely][]][localizely - website]
[![style: effective dart][]][effective dart pub]
[![License badge][]][license]
## About
Enjoy podcasts with Tsacdop.
Tsacdop is a podcast player developed with Flutter, a clean, simply beautiful and friendly app, which is also free and open source.
Credit to Flutter team and all involved plugins, especially [webfeed](https://github.com/witochandra/webfeed) and [Just_Audio](https://pub.dev/packages/just_audio).
The podcast search engine is powered by [ListenNotes](https://listennotes.com).
## Features
* Podcast group management
* Playlist support
* Sleep timer / speed setting
* OMPL file export and import
* Auto syncing in background
* Listening and subscription history record
* Dark mode / accent color
* Download for offline play
* Auto download new episodes / auto delete outdated downloads
* Settings backup
* Skip silence
* Boost volume
More to come...
## Preview
| Home Page | Group | Podcast | Episode| Dark Mode |
| ----- | ----- | ----- | ------ | ----- |
|![][Homepage ScreenShot]|![][Group Screenshot] | ![][Podcast Screenshot] | ![][Episode Screenshot]| ![][Darkmode Screenshot] |
## Localization
Please [Email](mailto:<tsacdop.app@gmail.com>) me you'd like to contribute to support more languages!
Credit to [Localizely](https://localizely.com/) for kind support to open source projects.
### ![English]
### ![Chinese Simplified]
### ![French]
### ![Spanish]
## License
Tsacdop is licensed under the [GPL v3.0](https://github.com/stonega/tsacdop/blob/master/LICENSE) license.
## Build
1. If you don't have Flutter SDK installed, please visit offcial [Flutter][Flutter Install] site.
2. Fetch latest sorce code from master branch.
```
git clone https://github.com/stonega/tsacdop.git
```
3. Add api search api configure file.
Tsacdop uses ListenNotes API 1.0 pro to search for podcasts, which is not free, so I can not expose the API key in the repo.
If you want to build the app, you need to create a new file named `.env.dart` in lib folder. Add the following code to `.env.dart` .
You can get your own API key on [ListenNotes](https://www.listennotes.com/api/), remember that you need to get pro plan API, because basic plan dosen't provide rss link for serach result. If no api key is added, the search function in the app won't work. But you can still add podcasts by using an RSS link or importing an OMPL file.
``` dart
final environment = {"apiKey":"APIKEY"};
```
4. Run the app with Android Studio or Visual Studio. Or the command line.
```
flutter pub get
flutter run
```
## Contribute
If you have an issue or found a bug, please raise a GitHub issue. Pull requests are also welcome.
## Archetecture
### Plugins
* Local storage
+ sqflite
+ shared_preferences
* Audio
+ just_audio
+ audio_service
* State management
+ provider
* Download
+ flutter_downloader
* Background task
+ workmanager
### Directory Structure
```
UI
src
├──home
├──home.dart [Homepage]
├──searc_podcast.dart [Search Page]
└──playlist.dart [Playlist Page]
├──podcasts
├──podcast_manage.dart [Group Page]
└──podcast_detail.dart [Podcast Page]
├──episodes
└──episode_detail.dart [Episode Page]
├──settings
└──setting.dart [Setting Page]
STATE
src
├──state
├──audio_state.dart [Audio State]
├──download_state.dart [Episode Download]
├──podcast_group.dart [Podcast Groups]
├──refresh_podcast.dart [Episode Refresh]
└──setting_state.dart [Setting]
Service
src
├──service
├──api_service.dart [Podcast Search]
└──ompl_builde.dart [OMPL export]
```
## Known Issue
* Playlist is unstable
## Contact
You can reach out to me directly at [tsacdop.app@gmail.com](mailto:<tsacdop.app@gmail.com>).
Or you can join our [Telegram Group](https://t.me/joinchat/Bk3LkRpTHy40QYC78PK7Qg).
## Getting Started with Flutter
This project is a starting point for a Flutter application.
Here are a few resources to get you started if this is your first Flutter project:
* [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
* [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
For help getting started with Flutter, view our
[online documentation](https://flutter.dev/docs), which offers tutorials, samples, guidance on mobile development, and a full API reference.
[Flutter Install]: https://flutter.dev/docs/get-started/install
[tsacdop banner]: https://raw.githubusercontent.com/stonega/tsacdop/master/preview/banner.png
[build status - cirrus]: https://circleci.com/gh/stonega/tsacdop/tree/master.svg?style=shield
[build status]: https://circleci.com/gh/stonega/tsacdop/tree/master
[github release]: https://img.shields.io/github/v/release/stonega/tsacdop
[github release - recent]: https://github.com/stonega/tsacdop/releases
[github downloads]: https://img.shields.io/github/downloads/stonega/tsacdop/total?color=%230000d&label=downloads
[localizely]: https://img.shields.io/badge/dynamic/json?color=%2326c6da&label=localizely&query=%24.languages.length&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus
[English]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=English&query=%24.languages%5B0%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=%
[Chinese Simplified]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=Chinese%20Simplified&query=%24.languages%5B1%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=%
[French]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=French(ppp)&query=%24.languages%5B3%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=%
[Spanish]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=Spanish(Joel)&query=%24.languages%5B5%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=%
[localizely - website]: https://localizely.com/
[google play - icon]: https://img.shields.io/badge/google-playStore-%2323CCC6
[google play]: https://play.google.com/store/apps/details?id=com.stonegate.tsacdop
[Homepage ScreenShot]: https://raw.githubusercontent.com/stonega/tsacdop/master/preview/1585893838840.png
[Group Screenshot]: https://raw.githubusercontent.com/stonega/tsacdop/master/preview/1585894051734.png
[Podcast Screenshot]: https://raw.githubusercontent.com/stonega/tsacdop/master/preview/1585893877702.png
[Episode Screenshot]: https://raw.githubusercontent.com/stonega/tsacdop/master/preview/1585896237809.png
[Darkmode Screenshot]: https://raw.githubusercontent.com/stonega/tsacdop/master/preview/1585893920721.png
[style: effective dart]: https://img.shields.io/badge/style-effective_dart-40c4ff.svg
[effective dart pub]: https://pub.dev/packages/effective_dart
[license]: https://github.com/stonega/tsacdop/blob/master/LICENSE
[License badge]: https://img.shields.io/badge/license-GPLv3-yellow.svg
[![Tsacdop Banner][]][google play]
[![github action][]][github action link]
[![GitHub Release][]][github release - recent]
[![Github Downloads][]][github release - recent]
[![Localizely][]][localizely - website]
[![style: effective dart][]][effective dart pub]
[![License badge][]][license]
[![fdroid install][]][fdroid link]
## About
Enjoy podcasts with Tsacdop.
Tsacdop is a podcast player developed with Flutter, a clean, simply beautiful, and friendly app, which is also free and open source.
Credit to the Flutter team and all involved plugins, especially [webfeed](https://github.com/witochandra/webfeed), [Just_Audio](https://pub.dev/packages/just_audio), and [Provider](https://pub.dev/packages/provider).
The podcast search engine is powered by, [ListenNotes](https://listennotes.com) & [PodcastIndex](https://podcastindex.org/).
## Features
* Podcast group management
* Playlists support
* Sleep timer / speed setting
* OPML file export and import
* Auto-syncing in the background
* Listening and subscription history record
* Dark mode / accent color
* Download for offline play
* Auto-download new episodes / auto-delete outdated downloads
* Settings backup
* Skip silence
* Boost volume
More to come...
## Preview
| Home Page | Group | Podcast | Episode| Dark Mode |
| ----- | ----- | ----- | ------ | ----- |
|![][Homepage ScreenShot]|![][Group Screenshot] | ![][Podcast Screenshot] | ![][Episode Screenshot]| ![][Darkmode Screenshot] |
## Localization
Please [Email](mailto:<tsacdop.app@gmail.com>) me you'd like to contribute to support more languages!
Credit to [Localizely](https://localizely.com/) for kind support to open source projects.
### ![English]
### ![Chinese Simplified]
### ![French]
### ![Spanish]
### ![Portuguese]
## License
Tsacdop is licensed under the [GPL v3.0](https://github.com/stonega/tsacdop/blob/master/LICENSE) license.
## Build
1. If you don't have Flutter SDK installed; Please visit the official [Flutter][Flutter Install] site.
2. Fetch the latest source code from the master branch.
```
git clone https://github.com/stonega/tsacdop.git
```
3. Add api search api configure file.
Tsacdop uses the ListenNotes API 1.0 pro to search for podcasts, which is not free, so I can not expose the API key in the repo.
If you want to build the app, you need to create a new file named `.env.dart` in the lib folder. Add the following code to `.env.dart`. If you don't have a ListenNotes api key, keep the apiKey empty like ''. Then the app will only support the PodcastIndex search.
You can get your own ListenNotes API key on [ListenNotes](https://www.listennotes.com/api/). Remember that you need to get a pro plan API because the basic plan doesn't provide an rss link for the search result.
``` dart
final environment = {"apiKey":""};
```
4. Run the app with Android Studio or Visual Studio. Or the command line.
```
flutter pub get
flutter run
```
## Contribute
If you have an issue or found a bug, please raise a GitHub issue. Pull requests are also welcome.
## Architecture
### Plugins
* Local storage
+ sqflite
+ shared_preferences
* Audio
+ just_audio
+ audio_service
* State management
+ provider
* Download
+ flutter_downloader
* Background task
+ workmanager
### Directory Structure
```
UI
src
└──home
├──home.dart [Homepage]
├──searc_podcast.dart [Search Page]
└──playlist.dart [Playlist Page]
└──podcasts
├──podcast_manage.dart [Group Page]
└──podcast_detail.dart [Podcast Page]
└──episodes
└──episode_detail.dart [Episode Page]
└──settings
└──setting.dart [Setting Page]
STATE
src
└──state
├──audio_state.dart [Audio State]
├──download_state.dart [Episode Download]
├──podcast_group.dart [Podcast Groups]
├──refresh_podcast.dart [Episode Refresh]
└──setting_state.dart [Setting]
Service
src
└──service
├──api_service.dart [Podcast Search]
├──gpodder_api.dart [Gpodder intergate]
└──ompl_builde.dart [OMPL export]
```
## Known Issue
* Playlist is unstable
## Contact
You can reach out to me directly at [tsacdop.app@gmail.com](mailto:<tsacdop.app@gmail.com>).
Or you can join our [Telegram Group](https://t.me/joinchat/Bk3LkRpTHy40QYC78PK7Qg).
## Getting Started with Flutter
This project is a starting point for a Flutter application.
Here are a few resources to get you started if this is your first Flutter project:
* [Lab: Write your first Flutter app](https://flutter.dev/docs/get-started/codelab)
* [Cookbook: Useful Flutter samples](https://flutter.dev/docs/cookbook)
For help getting started with Flutter, view our
[online documentation](https://flutter.dev/docs), which offers tutorials, samples, guidance on mobile development, and a full API reference.
[Flutter Install]: https://flutter.dev/docs/get-started/install
[tsacdop banner]: https://raw.githubusercontent.com/stonega/tsacdop/master/preview/banner.png
[build status - cirrus]: https://circleci.com/gh/stonega/tsacdop/tree/master.svg?style=shield
[github action]: https://github.com/stonega/tsacdop/workflows/Flutter%20Build/badge.svg
[github action link]: https://github.com/stonega/tsacdop/actions
[build status ]: https://circleci.com/gh/stonega/tsacdop/tree/master
[github release]: https://img.shields.io/github/v/release/stonega/tsacdop
[github release - recent]: https://github.com/stonega/tsacdop/releases
[github downloads]: https://img.shields.io/github/downloads/stonega/tsacdop/total?color=%230000d&label=downloads
[fdroid install]: https://img.shields.io/f-droid/v/com.stonegate.tsacdop?include_prereleases
[fdroid link]: https://f-droid.org/en/packages/com.stonegate.tsacdop/
[localizely]: https://img.shields.io/badge/dynamic/json?color=%2326c6da&label=localizely&query=%24.languages.length&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus
[English]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=English&query=%24.languages%5B3%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=%
[Chinese Simplified]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=Chinese%20Simplified&query=%24.languages%5B2%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=%
[French]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=French(ppp)&query=%24.languages%5B5%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=%
[Spanish]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=Spanish(Joel)&query=%24.languages%5B7%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=%
[Portuguese]: https://img.shields.io/badge/dynamic/json?style=for-the-badge&color=%2323CCC6&label=portuguese(Bruno)&query=%24.languages%5B9%5D.reviewedProgress&url=https%3A%2F%2Fapi.localizely.com%2Fv1%2Fprojects%2Fbde4e9bd-4cb2-449b-9de2-18f231ddb47d%2Fstatus&suffix=%
[localizely - website]: https://localizely.com/
[google play - icon]: https://img.shields.io/badge/google-playStore-%2323CCC6
[google play]: https://play.google.com/store/apps/details?id=com.stonegate.tsacdop
[Homepage ScreenShot]: https://raw.githubusercontent.com/stonega/tsacdop/master/preview/1585893838840.png
[Group Screenshot]: https://raw.githubusercontent.com/stonega/tsacdop/master/preview/1585894051734.png
[Podcast Screenshot]: https://raw.githubusercontent.com/stonega/tsacdop/master/preview/1585893877702.png
[Episode Screenshot]: https://raw.githubusercontent.com/stonega/tsacdop/master/preview/1585896237809.png
[Darkmode Screenshot]: https://raw.githubusercontent.com/stonega/tsacdop/master/preview/1585893920721.png
[style: effective dart]: https://img.shields.io/badge/style-effective_dart-40c4ff.svg
[effective dart pub]: https://pub.dev/packages/effective_dart
[license]: https://github.com/stonega/tsacdop/blob/master/LICENSE
[License badge]: https://img.shields.io/badge/license-GPLv3-yellow.svg

14
android/.gitignore vendored
View File

@ -1,7 +1,7 @@
gradle-wrapper.jar
/.gradle
/captures/
/gradlew
/gradlew.bat
/local.properties
GeneratedPluginRegistrant.java
gradle-wrapper.jar
/.gradle
/captures/
/gradlew
/gradlew.bat
/local.properties
GeneratedPluginRegistrant.java

View File

@ -1,17 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>android</name>
<comment>Project android created by Buildship.</comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
</natures>
</projectDescription>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>android</name>
<comment>Project android created by Buildship.</comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
</natures>
<filteredResources>
<filter>
<id>1651309616208</id>
<name></name>
<type>30</type>
<matcher>
<id>org.eclipse.core.resources.regexFilterMatcher</id>
<arguments>node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
</matcher>
</filter>
</filteredResources>
</projectDescription>

View File

@ -1,13 +1,13 @@
arguments=
auto.sync=false
build.scans.enabled=false
connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)
connection.project.dir=app
eclipse.preferences.version=1
gradle.user.home=
java.home=C\:/Program Files/Java/jdk1.8.0_171
jvm.arguments=
offline.mode=false
override.workspace.settings=true
show.console.view=true
show.executions.view=true
arguments=
auto.sync=false
build.scans.enabled=false
connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)
connection.project.dir=
eclipse.preferences.version=1
gradle.user.home=
java.home=/usr/lib/jvm/java-17-openjdk-17.0.3.0.7-1.fc36.x86_64
jvm.arguments=
offline.mode=false
override.workspace.settings=true
show.console.view=true
show.executions.view=true

3
android/Gemfile Normal file
View File

@ -0,0 +1,3 @@
source "https://rubygems.org"
gem "fastlane"

201
android/Gemfile.lock Normal file
View File

@ -0,0 +1,201 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.3)
addressable (2.8.0)
public_suffix (>= 2.0.2, < 5.0)
artifactory (3.0.15)
atomos (0.1.3)
aws-eventstream (1.1.0)
aws-partitions (1.422.0)
aws-sdk-core (3.111.2)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.239.0)
aws-sigv4 (~> 1.1)
jmespath (~> 1.0)
aws-sdk-kms (1.41.0)
aws-sdk-core (~> 3, >= 3.109.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.87.0)
aws-sdk-core (~> 3, >= 3.109.0)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.1)
aws-sigv4 (1.2.2)
aws-eventstream (~> 1, >= 1.0.2)
babosa (1.0.4)
claide (1.0.3)
colored (1.2)
colored2 (3.1.2)
commander-fastlane (4.4.6)
highline (~> 1.7.2)
declarative (0.0.20)
declarative-option (0.1.0)
digest-crc (0.6.3)
rake (>= 12.0.0, < 14.0.0)
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
dotenv (2.7.6)
emoji_regex (3.2.1)
excon (0.78.1)
faraday (1.3.0)
faraday-net_http (~> 1.0)
multipart-post (>= 1.2, < 3)
ruby2_keywords
faraday-cookie_jar (0.0.7)
faraday (>= 0.8.0)
http-cookie (~> 1.0.0)
faraday-net_http (1.0.1)
faraday_middleware (1.0.0)
faraday (~> 1.0)
fastimage (2.2.2)
fastlane (2.172.0)
CFPropertyList (>= 2.3, < 4.0.0)
addressable (>= 2.3, < 3.0.0)
artifactory (~> 3.0)
aws-sdk-s3 (~> 1.0)
babosa (>= 1.0.3, < 2.0.0)
bundler (>= 1.12.0, < 3.0.0)
colored
commander-fastlane (>= 4.4.6, < 5.0.0)
dotenv (>= 2.1.1, < 3.0.0)
emoji_regex (>= 0.1, < 4.0)
excon (>= 0.71.0, < 1.0.0)
faraday (~> 1.0)
faraday-cookie_jar (~> 0.0.6)
faraday_middleware (~> 1.0)
fastimage (>= 2.1.0, < 3.0.0)
gh_inspector (>= 1.1.2, < 2.0.0)
google-api-client (>= 0.37.0, < 0.39.0)
google-cloud-storage (>= 1.15.0, < 2.0.0)
highline (>= 1.7.2, < 2.0.0)
json (< 3.0.0)
jwt (>= 2.1.0, < 3)
mini_magick (>= 4.9.4, < 5.0.0)
multipart-post (~> 2.0.0)
plist (>= 3.1.0, < 4.0.0)
rubyzip (>= 2.0.0, < 3.0.0)
security (= 0.1.3)
simctl (~> 1.6.3)
slack-notifier (>= 2.0.0, < 3.0.0)
terminal-notifier (>= 2.0.0, < 3.0.0)
terminal-table (>= 1.4.5, < 2.0.0)
tty-screen (>= 0.6.3, < 1.0.0)
tty-spinner (>= 0.8.0, < 1.0.0)
word_wrap (~> 1.0.0)
xcodeproj (>= 1.13.0, < 2.0.0)
xcpretty (~> 0.3.0)
xcpretty-travis-formatter (>= 0.0.3)
gh_inspector (1.1.3)
google-api-client (0.38.0)
addressable (~> 2.5, >= 2.5.1)
googleauth (~> 0.9)
httpclient (>= 2.8.1, < 3.0)
mini_mime (~> 1.0)
representable (~> 3.0)
retriable (>= 2.0, < 4.0)
signet (~> 0.12)
google-apis-core (0.2.1)
addressable (~> 2.5, >= 2.5.1)
googleauth (~> 0.14)
httpclient (>= 2.8.1, < 3.0)
mini_mime (~> 1.0)
representable (~> 3.0)
retriable (>= 2.0, < 4.0)
rexml
signet (~> 0.14)
webrick
google-apis-iamcredentials_v1 (0.1.0)
google-apis-core (~> 0.1)
google-apis-storage_v1 (0.1.0)
google-apis-core (~> 0.1)
google-cloud-core (1.5.0)
google-cloud-env (~> 1.0)
google-cloud-errors (~> 1.0)
google-cloud-env (1.4.0)
faraday (>= 0.17.3, < 2.0)
google-cloud-errors (1.0.1)
google-cloud-storage (1.30.0)
addressable (~> 2.5)
digest-crc (~> 0.4)
google-apis-iamcredentials_v1 (~> 0.1)
google-apis-storage_v1 (~> 0.1)
google-cloud-core (~> 1.2)
googleauth (~> 0.9)
mini_mime (~> 1.0)
googleauth (0.15.0)
faraday (>= 0.17.3, < 2.0)
jwt (>= 1.4, < 3.0)
memoist (~> 0.16)
multi_json (~> 1.11)
os (>= 0.9, < 2.0)
signet (~> 0.14)
highline (1.7.10)
http-cookie (1.0.3)
domain_name (~> 0.5)
httpclient (2.8.3)
jmespath (1.6.1)
json (2.5.1)
jwt (2.2.2)
memoist (0.16.2)
mini_magick (4.11.0)
mini_mime (1.0.2)
multi_json (1.15.0)
multipart-post (2.0.0)
nanaimo (0.3.0)
naturally (2.2.1)
os (1.1.1)
plist (3.6.0)
public_suffix (4.0.6)
rake (13.0.3)
representable (3.0.4)
declarative (< 0.1.0)
declarative-option (< 0.2.0)
uber (< 0.2.0)
retriable (3.1.2)
rexml (3.2.5)
rouge (2.0.7)
ruby2_keywords (0.0.4)
rubyzip (2.3.0)
security (0.1.3)
signet (0.14.1)
addressable (~> 2.3)
faraday (>= 0.17.3, < 2.0)
jwt (>= 1.5, < 3.0)
multi_json (~> 1.10)
simctl (1.6.8)
CFPropertyList
naturally
slack-notifier (2.3.2)
terminal-notifier (2.0.0)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
tty-cursor (0.7.1)
tty-screen (0.8.1)
tty-spinner (0.9.3)
tty-cursor (~> 0.7)
uber (0.1.0)
unf (0.1.4)
unf_ext
unf_ext (0.0.7.7)
unicode-display_width (1.7.0)
webrick (1.7.0)
word_wrap (1.0.0)
xcodeproj (1.19.0)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.3.0)
xcpretty (0.3.0)
rouge (~> 2.0.7)
xcpretty-travis-formatter (1.0.1)
xcpretty (~> 0.2, >= 0.0.7)
PLATFORMS
x86_64-linux
DEPENDENCIES
fastlane
BUNDLED WITH
2.2.7

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8/"/>
<classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer"/>
<classpathentry kind="output" path="bin/default"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8/"/>
<classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer"/>
<classpathentry kind="output" path="bin/default"/>
</classpath>

View File

@ -1,23 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>app</name>
<comment>Project app created by Buildship.</comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
</natures>
</projectDescription>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>app</name>
<comment>Project app created by Buildship.</comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
</natures>
</projectDescription>

View File

@ -1,13 +1,13 @@
arguments=
auto.sync=false
build.scans.enabled=false
connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.3))
connection.project.dir=
eclipse.preferences.version=1
gradle.user.home=
java.home=C\:/Program Files/Java/jdk1.8.0_171
jvm.arguments=
offline.mode=false
override.workspace.settings=true
show.console.view=true
show.executions.view=true
arguments=
auto.sync=false
build.scans.enabled=false
connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(6.3))
connection.project.dir=
eclipse.preferences.version=1
gradle.user.home=
java.home=C\:/Program Files/Java/jdk1.8.0_171
jvm.arguments=
offline.mode=false
override.workspace.settings=true
show.console.view=true
show.executions.view=true

View File

@ -1,4 +1,4 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.source=1.8
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.source=1.8

View File

@ -1,90 +1,110 @@
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
compileSdkVersion 29
ndkVersion "21.1.6352462"
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
lintOptions {
disable 'InvalidPackage'
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId "com.stonegate.tsacdop"
minSdkVersion 19
targetSdkVersion 29
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
signingConfigs {
release {
storeFile file(System.getenv("KEYSTORE") ?:"keystore.jks")
storePassword System.getenv("KEYSTORE_PASSWORD")
keyAlias System.getenv("KEY_ALIAS")
keyPassword System.getenv("KEY_PASSWORD")
// keyAlias keystoreProperties['keyAlias']
// keyPassword keystoreProperties['keyPassword']
// storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
// storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
shrinkResources false
}
}
}
flutter {
source '../..'
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
testImplementation 'junit:junit:4.13'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
def appcompat_version = "1.1.0"
implementation "androidx.appcompat:appcompat:$appcompat_version"
implementation "androidx.appcompat:appcompat-resources:$appcompat_version"
}
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localPropertiesFile.withReader('UTF-8') { reader ->
localProperties.load(reader)
}
}
def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '1'
}
def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0'
}
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
compileSdkVersion 31
ndkVersion "22.1.7171670"
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
}
lintOptions {
disable 'InvalidPackage'
checkReleaseBuilds false
}
defaultConfig {
applicationId "com.stonegate.tsacdop"
minSdkVersion 21
targetSdkVersion 29
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
signingConfigs {
release {
storeFile file(System.getenv("KEYSTORE") ?:"keystore.jks")
storePassword System.getenv("KEYSTORE_PASSWORD")
keyAlias System.getenv("KEY_ALIAS")
keyPassword System.getenv("KEY_PASSWORD")
// keyAlias keystoreProperties['keyAlias']
// keyPassword keystoreProperties['keyPassword']
// storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
// storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
shrinkResources false
}
}
flavorDimensions "deploy"
productFlavors {
play {
dimension "deploy"
signingConfig signingConfigs.release
}
fdroid {
dimension "deploy"
signingConfig null
}
}
// android.applicationVariants.all { variant ->
// if (variant.flavorName == "play") {
// variant.outputs.all { output ->
// output.outputFileName = "app-release.apk"
// }
// }
// }
}
flutter {
source '../..'
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
testImplementation 'junit:junit:4.13'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
def appcompat_version = "1.1.0"
implementation "androidx.appcompat:appcompat:$appcompat_version"
implementation "androidx.appcompat:appcompat-resources:$appcompat_version"
}

View File

@ -1,7 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.stonegate.tsacdop">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.stonegate.tsacdop">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

View File

@ -1,34 +1,33 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.stonegate.tsacdop" xmlns:tools="http://schemas.android.com/tools" android:installLocation="auto">
<!-- io.flutter.app.FlutterApplication is an android.app.Application that
calls FlutterMain.startInitialization(this); in its onCreate method.
In most cases you can leave this as-is, but you if you want to provide
additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here. -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application android:name="io.flutter.app.FlutterApplication" android:label="Tsacdop" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:networkSecurityConfig="@xml/network_security_config">
<activity android:name=".MainActivity" android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize">
<meta-data android:name="io.flutter.embedding.android.NormalTheme" android:resource="@style/LaunchTheme" />
<meta-data android:name="io.flutter.embedding.android.SplashScreenDrawable" android:resource="@drawable/normal_background" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- <meta-data android:name="io.flutter.embedding.android.SplashScreenUntilFirstFrame" android:value="true" /> -->
</activity>
<service android:name="com.ryanheise.audioservice.AudioService">
<intent-filter>
<action android:name="android.media.browse.MediaBrowserService" />
</intent-filter>
</service>
<receiver android:name="com.ryanheise.audioservice.MediaButtonReceiver">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data android:name="flutterEmbedding" android:value="2" />
</application>
</manifest>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.stonegate.tsacdop" xmlns:tools="http://schemas.android.com/tools" android:installLocation="auto">
<!-- io.flutter.app.FlutterApplication is an android.app.Application that
calls FlutterMain.startInitialization(this); in its onCreate method.
In most cases you can leave this as-is, but you if you want to provide
additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here. -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application android:name=".MainApplication" android:label="Tsacdop" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:networkSecurityConfig="@xml/network_security_config">
<activity android:name="com.ryanheise.audioservice.AudioServiceActivity" android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize">
<meta-data android:name="io.flutter.embedding.android.NormalTheme" android:resource="@style/LaunchTheme" />
<meta-data android:name="io.flutter.embedding.android.SplashScreenDrawable" android:resource="@drawable/normal_background" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name="com.ryanheise.audioservice.AudioService">
<intent-filter>
<action android:name="android.media.browse.MediaBrowserService" />
</intent-filter>
</service>
<receiver android:name="com.ryanheise.audioservice.MediaButtonReceiver">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data android:name="flutterEmbedding" android:value="2" />
</application>
</manifest>

View File

@ -1,39 +1,45 @@
package io.flutter.plugins;
import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.embedding.engine.plugins.shim.ShimPluginRegistry;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugins.pathprovider.PathProviderPlugin;
import com.tekartik.sqflite.SqflitePlugin;
import io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin;
import vn.hunghd.flutterdownloader.FlutterDownloaderPlugin;
/**
* Generated file. Do not edit. This file is generated by the Flutter tool based
* on the plugins that support the Android platform.
*/
@Keep
public final class IsolatePluginRegistrant {
public static void registerWith(PluginRegistry registry) {
if (alreadyRegisteredWith(registry)) {
return;
}
PathProviderPlugin.registerWith(registry.registrarFor("io.flutter.plugins.pathprovider.PathProviderPlugin"));
SqflitePlugin.registerWith(registry.registrarFor("com.tekartik.sqflite.SqflitePlugin"));
SharedPreferencesPlugin.registerWith(registry.registrarFor("io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin"));
FlutterDownloaderPlugin.registerWith(registry.registrarFor("vn.hunghd.flutterdownloader.FlutterDownloaderPlugin"));
}
private static boolean alreadyRegisteredWith(PluginRegistry registry) {
final String key = IsolatePluginRegistrant.class.getCanonicalName();
if (registry.hasPlugin(key)) {
return true;
}
registry.registrarFor(key);
return false;
}
package io.flutter.plugins;
import androidx.annotation.Keep;
import androidx.annotation.NonNull;
import io.flutter.Log;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.embedding.engine.plugins.shim.ShimPluginRegistry;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugins.pathprovider.PathProviderPlugin;
import com.tekartik.sqflite.SqflitePlugin;
import io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin;
import vn.hunghd.flutterdownloader.FlutterDownloaderPlugin;
@Keep
public final class IsolatePluginRegistrant {
private static final String TAG = "CustomPluginRegistrant";
public static void registerWith(@NonNull FlutterEngine flutterEngine) {
try {
flutterEngine.getPlugins().add(new vn.hunghd.flutterdownloader.FlutterDownloaderPlugin());
} catch(Exception e) {
Log.e(TAG, "Error registering plugin flutter_downloader, vn.hunghd.flutterdownloader.FlutterDownloaderPlugin", e);
}
try {
flutterEngine.getPlugins().add(new com.rmawatson.flutterisolate.FlutterIsolatePlugin());
} catch(Exception e) {
Log.e(TAG, "Error registering plugin flutter_isolate, com.rmawatson.flutterisolate.FlutterIsolatePlugin", e);
}
try {
flutterEngine.getPlugins().add(new io.flutter.plugins.pathprovider.PathProviderPlugin());
} catch(Exception e) {
Log.e(TAG, "Error registering plugin path_provider_android, io.flutter.plugins.pathprovider.PathProviderPlugin", e);
}
try {
flutterEngine.getPlugins().add(new io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin());
} catch(Exception e) {
Log.e(TAG, "Error registering plugin shared_preferences, io.flutter.plugins.sharedpreferences.SharedPreferencesPlugin", e);
}
try {
flutterEngine.getPlugins().add(new com.tekartik.sqflite.SqflitePlugin());
} catch(Exception e) {
Log.e(TAG, "Error registering plugin sqflite, com.tekartik.sqflite.SqflitePlugin", e);
}
}
}

View File

@ -1,28 +1,28 @@
package com.stonegate.tsacdop
import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.view.FlutterNativeView
import io.flutter.plugins.GeneratedPluginRegistrant
import io.flutter.plugins.IsolatePluginRegistrant
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugin.common.MethodChannel.MethodCallHandler
import io.flutter.plugin.common.MethodChannel.Result
import io.flutter.embedding.engine.dart.DartExecutor
import io.flutter.embedding.engine.dart.DartExecutor.DartCallback
import com.rmawatson.flutterisolate.FlutterIsolatePlugin
class MainActivity: FlutterActivity() {
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
FlutterIsolatePlugin.setCustomIsolateRegistrant(IsolatePluginRegistrant::class.java);
MethodChannel(flutterEngine.dartExecutor, "android_app_retain").apply {
setMethodCallHandler { method, result ->
if (method.method == "sendToBackground") {
moveTaskToBack(true)
}
}
}
}
}
package com.stonegate.tsacdop
import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.view.FlutterNativeView
import io.flutter.plugins.GeneratedPluginRegistrant
import io.flutter.plugins.IsolatePluginRegistrant
import io.flutter.plugin.common.MethodChannel
import io.flutter.plugin.common.MethodChannel.MethodCallHandler
import io.flutter.plugin.common.MethodChannel.Result
import io.flutter.embedding.engine.dart.DartExecutor
import io.flutter.embedding.engine.dart.DartExecutor.DartCallback
import com.rmawatson.flutterisolate.FlutterIsolatePlugin
class MainActivity: FlutterActivity() {
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
MethodChannel(flutterEngine.dartExecutor, "android_app_retain").apply {
setMethodCallHandler { method, result ->
if (method.method == "sendToBackground") {
moveTaskToBack(true)
}
}
}
}
}

View File

@ -0,0 +1,10 @@
package com.stonegate.tsacdop
import com.rmawatson.flutterisolate.FlutterIsolatePlugin
import io.flutter.app.FlutterApplication
import io.flutter.plugins.IsolatePluginRegistrant
public class MainApplication: FlutterApplication() {
public fun MainApplication() {
FlutterIsolatePlugin.setCustomIsolateRegistrant(IsolatePluginRegistrant::class.java);
}
}

View File

@ -1,17 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/blackGrey" />
<!-- You can insert your own image assets here -->
<item>
<bitmap
android:gravity="center"
android:tileMode="disabled"
android:src="@mipmap/ic_splash" />
</item>
<item android:bottom="100dp">
<bitmap
android:gravity="bottom"
android:src="@mipmap/text_light" />
</item>
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/blackGrey" />
<!-- You can insert your own image assets here -->
<item>
<bitmap
android:gravity="center"
android:tileMode="disabled"
android:src="@mipmap/ic_splash" />
</item>
<item android:bottom="100dp">
<bitmap
android:gravity="bottom"
android:src="@mipmap/text_light" />
</item>
</layer-list>

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/blackGrey" />
<!-- You can insert your own image assets here -->
<item android:bottom="100dp">
<bitmap android:gravity="bottom" android:src="@mipmap/text_light" />
</item>-->
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/blackGrey" />
<!-- You can insert your own image assets here -->
<item android:bottom="100dp">
<bitmap android:gravity="bottom" android:src="@mipmap/text_light" />
</item>-->
</layer-list>

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<item>
<bitmap android:gravity="center" android:tileMode="disabled" android:src="@mipmap/ic_splash" />
</item>
<item android:bottom="100dp">
<bitmap android:gravity="bottom" android:src="@mipmap/text" />
</item>
</layer-list>
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<item>
<bitmap android:gravity="center" android:tileMode="disabled" android:src="@mipmap/ic_splash" />
</item>
<item android:bottom="100dp">
<bitmap android:gravity="bottom" android:src="@mipmap/text" />
</item>
</layer-list>

View File

@ -1,12 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/blackGrey" />
<!-- You can insert your own image assets here -->
<item>
<bitmap android:gravity="center" android:tileMode="disabled" android:src="@mipmap/ic_splash" />
</item>
<item android:bottom="100dp">
<bitmap android:gravity="bottom" android:src="@mipmap/text_light" />
</item>
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/blackGrey" />
<!-- You can insert your own image assets here -->
<item>
<bitmap android:gravity="center" android:tileMode="disabled" android:src="@mipmap/ic_splash" />
</item>
<item android:bottom="100dp">
<bitmap android:gravity="bottom" android:src="@mipmap/text_light" />
</item>
</layer-list>

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<item android:bottom="100dp">
<bitmap android:gravity="bottom" android:src="@mipmap/text_light" />
</item>
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<item android:bottom="100dp">
<bitmap android:gravity="bottom" android:src="@mipmap/text_light" />
</item>
</layer-list>

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/blackGrey" />
<!-- You can insert your own image assets here -->
<item android:bottom="100dp">
<bitmap android:gravity="bottom" android:src="@mipmap/text_light" />
</item>
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/blackGrey" />
<!-- You can insert your own image assets here -->
<item android:bottom="100dp">
<bitmap android:gravity="bottom" android:src="@mipmap/text_light" />
</item>
</layer-list>

View File

@ -1,10 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="LaunchTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/launch_background_night</item>
<item name="android:navigationBarColor">@color/blackGrey</item>
<item name="android:statusBarColor">@color/blackGrey</item>
<item name="android:windowLightStatusBar">false</item>
<item name="android:windowLightNavigationBar">true</item>
</style>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="LaunchTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/launch_background_night</item>
<item name="android:navigationBarColor">@color/blackGrey</item>
<item name="android:statusBarColor">@color/blackGrey</item>
<item name="android:windowLightStatusBar">false</item>
<item name="android:windowLightNavigationBar">true</item>
</style>
<style name="NormalTheme" parent="Theme.AppCompat.NoActionBar">
<item name="android:windowBackground">@drawable/normal_background_night</item>
<item name="android:navigationBarColor">@color/blackGrey</item>
<item name="android:statusBarColor">@color/blackGrey</item>
<item name="android:windowLightStatusBar">false</item>
<item name="android:windowLightNavigationBar">true</item>
</style>
</resources>

View File

@ -1,12 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="LaunchTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
<item name="android:statusBarColor">@color/white</item>
<item name="android:navigationBarColor">@color/white</item>
<item name="android:windowLightStatusBar">true</item>
<item name="android:windowLightNavigationBar">false</item>
</style>
</resources>
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="LaunchTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Show a splash screen on the activity. Automatically removed when
Flutter draws its first frame -->
<item name="android:windowBackground">@drawable/launch_background</item>
<item name="android:statusBarColor">@color/white</item>
<item name="android:navigationBarColor">@color/white</item>
<item name="android:windowLightStatusBar">true</item>
<item name="android:windowLightNavigationBar">false</item>
</style>
<style name="NormalTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@drawable/normal_background</item>
<item name="android:statusBarColor">@color/white</item>
<item name="android:navigationBarColor">@color/white</item>
<item name="android:windowLightStatusBar">true</item>
<item name="android:windowLightNavigationBar">false</item>
</style>
</resources>

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>

View File

@ -1,7 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.stonegate.tsacdop">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.stonegate.tsacdop">
<!-- Flutter needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>

View File

@ -1,32 +1,32 @@
buildscript {
ext.kotlin_version = '1.3.70'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
jcenter()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
//subprojects {
// project.evaluationDependsOn(':app')
//}
task clean(type: Delete) {
delete rootProject.buildDir
}
buildscript {
ext.kotlin_version = '1.6.21'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.0.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
jcenter()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
//subprojects {
// project.evaluationDependsOn(':app')
//}
task clean(type: Delete) {
delete rootProject.buildDir
}

View File

@ -1,4 +1,4 @@
org.gradle.jvmargs=-Xmx1536M
android.enableR8=true
android.useAndroidX=true
android.enableJetifier=true
org.gradle.jvmargs=-Xmx1536M
android.enableR8=true
android.useAndroidX=true
android.enableJetifier=true

View File

@ -1,6 +1,7 @@
#Fri Mar 20 23:46:20 CST 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
#Fri Mar 20 23:46:20 CST 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
#distributionSha256Sum=abc10bcedb58806e8654210f96031db541bcd2d6fc3161e81cb0572d6a15e821

View File

@ -1,15 +1,15 @@
include ':app'
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
def plugins = new Properties()
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
if (pluginsFile.exists()) {
pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
}
plugins.each { name, path ->
def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
include ":$name"
project(":$name").projectDir = pluginDirectory
}
include ':app'
def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
def plugins = new Properties()
def pluginsFile = new File(flutterProjectRoot.toFile(), '.flutter-plugins')
if (pluginsFile.exists()) {
pluginsFile.withReader('UTF-8') { reader -> plugins.load(reader) }
}
plugins.each { name, path ->
def pluginDirectory = flutterProjectRoot.resolve(path).resolve('android').toFile()
include ":$name"
project(":$name").projectDir = pluginDirectory
}

View File

@ -1 +1 @@
include ':app'
include ':app'

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

BIN
assets/gpodder.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
assets/it.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 B

BIN
assets/listennotes_logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

BIN
assets/podcastindex.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

BIN
assets/pt.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

BIN
assets/tr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 879 B

2
fastlane/Appfile Normal file
View File

@ -0,0 +1,2 @@
json_key_file("/home/stone/Documents/api.json") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one
package_name("com.stonegate.tsacdop")

38
fastlane/Fastfile Normal file
View File

@ -0,0 +1,38 @@
# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
# https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
# https://docs.fastlane.tools/plugins/available-plugins
#
# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane
default_platform(:android)
platform :android do
desc "Runs all the tests"
lane :test do
gradle(task: "test")
end
desc "Submit a new Beta Build to Crashlytics Beta"
lane :beta do
gradle(task: "clean assembleRelease")
crashlytics
# sh "your_script.sh"
# You can also use other beta testing services here
end
desc "Deploy a new version to the Google Play"
lane :deploy do
gradle(task: "clean assembleRelease")
upload_to_play_store
end
end

View File

@ -0,0 +1,4 @@
Happy new year!
What's new in version 0.5.8
Shownotes with artwork and chapters in player panel (only work for podcasts support podcast:chapters namespace),
Play without subscription, inside search result directly.

View File

@ -0,0 +1,5 @@
New features
* Load local folder as playlist
* Option to always hide new mark for podcast.
* Memory use reduced a lot
* Add reddit link

View File

@ -0,0 +1,24 @@
Tsacdop is a clean, simply beautiful and friendly podcast app. which is also free and open source.
Why Tsacdop?
<b>Unique Design</b> With Tsacdop, you will get a totally different experience with any other podcast players. Tsacdop has a unique layout and good-looking material design.
<b>Group management</b> You can manage your podcasts with groups easily.
<b>Privacy Friendly</b> Tsacdop is a free and open sourced application, which won't upload your data to the server.
<b>Easy Search</b>The podcast is powered by ListenNotes(unavailable in fdroid version) and PodcastIndex, so you can search from more than 1 million podcasts.
Features:
* Podcasts group management
* Playlist support
* Sleep timer
* OPML file export and import
* Auto syncing in background
* Listening and subscription history data
* Dark theme / accent color
* Download for offline play
* Auto download / auto delete downloaded episodes
* Change play speed
* Skip silence
* Boost volume
More to come...
License
All this for FREE, and NO ADS. Tsacdop is an open source project licensed under GPL v3.0, you can star or fork it on GitHub: https://github.com/stonega/tsacdop
Contact
Tsacdop is still in the development stage, I am working hard on new features, if you have any issue or request any feature, please let me know by email or visit GitHub page.

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 538 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 759 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 560 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 370 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 554 KiB

View File

@ -0,0 +1 @@
Enjoy podcasts with Tsacdop! An open source podcast player built with flutter.

View File

@ -0,0 +1 @@
Tsacdop - Podcast Player

View File

@ -0,0 +1 @@
https://www.youtube.com/watch?v=noLsnlU-tEM

64
ios/.gitignore vendored
View File

@ -1,32 +1,32 @@
*.mode1v3
*.mode2v3
*.moved-aside
*.pbxuser
*.perspectivev3
**/*sync/
.sconsign.dblite
.tags*
**/.vagrant/
**/DerivedData/
Icon?
**/Pods/
**/.symlinks/
profile
xcuserdata
**/.generated/
Flutter/App.framework
Flutter/Flutter.framework
Flutter/Flutter.podspec
Flutter/Generated.xcconfig
Flutter/app.flx
Flutter/app.zip
Flutter/flutter_assets/
Flutter/flutter_export_environment.sh
ServiceDefinitions.json
Runner/GeneratedPluginRegistrant.*
# Exceptions to above rules.
!default.mode1v3
!default.mode2v3
!default.pbxuser
!default.perspectivev3
*.mode1v3
*.mode2v3
*.moved-aside
*.pbxuser
*.perspectivev3
**/*sync/
.sconsign.dblite
.tags*
**/.vagrant/
**/DerivedData/
Icon?
**/Pods/
**/.symlinks/
profile
xcuserdata
**/.generated/
Flutter/App.framework
Flutter/Flutter.framework
Flutter/Flutter.podspec
Flutter/Generated.xcconfig
Flutter/app.flx
Flutter/app.zip
Flutter/flutter_assets/
Flutter/flutter_export_environment.sh
ServiceDefinitions.json
Runner/GeneratedPluginRegistrant.*
# Exceptions to above rules.
!default.mode1v3
!default.mode2v3
!default.pbxuser
!default.perspectivev3

View File

@ -0,0 +1 @@
3f9db535fb03746a3e4609c07b3090c5

View File

@ -1,26 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>App</string>
<key>CFBundleIdentifier</key>
<string>io.flutter.flutter.app</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>App</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>8.0</string>
</dict>
</plist>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>App</string>
<key>CFBundleIdentifier</key>
<string>io.flutter.flutter.app</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>App</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>8.0</string>
</dict>
</plist>

View File

@ -1,2 +1,2 @@
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "Generated.xcconfig"
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "Generated.xcconfig"

View File

@ -1,2 +1,2 @@
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Generated.xcconfig"
#include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Generated.xcconfig"

View File

@ -1,9 +1,8 @@
# Uncomment this line to define a global platform for your project
platform :ios, '11.0'
# platform :ios, '9.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
source 'https://cdn.cocoapods.org/'
project 'Runner', {
'Debug' => :debug,
@ -11,78 +10,36 @@ project 'Runner', {
'Release' => :release,
}
def parse_KV_file(file, separator='=')
file_abs_path = File.expand_path(file)
if !File.exists? file_abs_path
return [];
def flutter_root
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
unless File.exist?(generated_xcode_build_settings_path)
raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end
generated_key_values = {}
skip_line_start_symbols = ["#", "/"]
File.foreach(file_abs_path) do |line|
next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
plugin = line.split(pattern=separator)
if plugin.length == 2
podname = plugin[0].strip()
path = plugin[1].strip()
podpath = File.expand_path("#{path}", file_abs_path)
generated_key_values[podname] = podpath
else
puts "Invalid plugin specification: #{line}"
end
File.foreach(generated_xcode_build_settings_path) do |line|
matches = line.match(/FLUTTER_ROOT\=(.*)/)
return matches[1].strip if matches
end
generated_key_values
raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
end
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
flutter_ios_podfile_setup
target 'Runner' do
use_frameworks!
use_modular_headers!
# Flutter Pod
copied_flutter_dir = File.join(__dir__, 'Flutter')
copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework')
copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec')
unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path)
# Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet.
# That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration.
# CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist.
generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig')
unless File.exist?(generated_xcode_build_settings_path)
raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end
generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path)
cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR'];
unless File.exist?(copied_framework_path)
FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir)
end
unless File.exist?(copied_podspec_path)
FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir)
end
end
# Keep pod path relative so it can be checked into Podfile.lock.
pod 'Flutter', :path => 'Flutter'
# Plugin Pods
# Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
# referring to absolute paths on developers' machines.
system('rm -rf .symlinks')
system('mkdir -p .symlinks/plugins')
plugin_pods = parse_KV_file('../.flutter-plugins')
plugin_pods.each do |name, path|
symlink = File.join('.symlinks', 'plugins', name)
File.symlink(path, symlink)
pod name, :path => File.join(symlink, 'ios')
end
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
end
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
end
flutter_additional_ios_build_settings(target)
end
end

View File

@ -1,46 +1,47 @@
PODS:
- audio_service (0.0.1):
- Flutter
- audio_session (0.0.1):
- Flutter
- connectivity (0.0.1):
- Flutter
- Reachability
- connectivity_macos (0.0.1):
- device_info (0.0.1):
- Flutter
- DKImagePickerController/Core (4.2.2):
- DKImagePickerController/Core (4.3.2):
- DKImagePickerController/ImageDataManager
- DKImagePickerController/Resource
- DKImagePickerController/ImageDataManager (4.2.2)
- DKImagePickerController/PhotoGallery (4.2.2):
- DKImagePickerController/ImageDataManager (4.3.2)
- DKImagePickerController/PhotoGallery (4.3.2):
- DKImagePickerController/Core
- DKPhotoGallery
- DKImagePickerController/Resource (4.2.2)
- DKPhotoGallery (0.0.14):
- DKPhotoGallery/Core (= 0.0.14)
- DKPhotoGallery/Model (= 0.0.14)
- DKPhotoGallery/Preview (= 0.0.14)
- DKPhotoGallery/Resource (= 0.0.14)
- DKImagePickerController/Resource (4.3.2)
- DKPhotoGallery (0.0.17):
- DKPhotoGallery/Core (= 0.0.17)
- DKPhotoGallery/Model (= 0.0.17)
- DKPhotoGallery/Preview (= 0.0.17)
- DKPhotoGallery/Resource (= 0.0.17)
- SDWebImage
- SDWebImageFLPlugin
- DKPhotoGallery/Core (0.0.14):
- SwiftyGif
- DKPhotoGallery/Core (0.0.17):
- DKPhotoGallery/Model
- DKPhotoGallery/Preview
- SDWebImage
- SDWebImageFLPlugin
- DKPhotoGallery/Model (0.0.14):
- SwiftyGif
- DKPhotoGallery/Model (0.0.17):
- SDWebImage
- SDWebImageFLPlugin
- DKPhotoGallery/Preview (0.0.14):
- SwiftyGif
- DKPhotoGallery/Preview (0.0.17):
- DKPhotoGallery/Model
- DKPhotoGallery/Resource
- SDWebImage
- SDWebImageFLPlugin
- DKPhotoGallery/Resource (0.0.14):
- SwiftyGif
- DKPhotoGallery/Resource (0.0.17):
- SDWebImage
- SDWebImageFLPlugin
- SwiftyGif
- file_picker (0.0.1):
- DKImagePickerController/PhotoGallery
- Flutter
- FLAnimatedImage (1.0.12)
- Flutter (1.0.0)
- flutter_downloader (0.0.1):
- Flutter
@ -48,8 +49,6 @@ PODS:
- Flutter
- flutter_isolate (0.0.1):
- Flutter
- flutter_plugin_android_lifecycle (0.0.1):
- Flutter
- fluttertoast (0.0.2):
- Flutter
- FMDB (2.7.5):
@ -59,76 +58,60 @@ PODS:
- Flutter
- path_provider (0.0.1):
- Flutter
- path_provider_macos (0.0.1):
- Flutter
- "permission_handler (5.0.0+hotfix.5)":
- "permission_handler (5.1.0+2)":
- Flutter
- Reachability (3.2)
- SDWebImage (5.7.4):
- SDWebImage/Core (= 5.7.4)
- SDWebImage/Core (5.7.4)
- SDWebImageFLPlugin (0.4.0):
- FLAnimatedImage (>= 1.0.11)
- SDWebImage/Core (~> 5.6)
- SDWebImage (5.10.2):
- SDWebImage/Core (= 5.10.2)
- SDWebImage/Core (5.10.2)
- shared_preferences (0.0.1):
- Flutter
- shared_preferences_macos (0.0.1):
- sqflite (0.0.2):
- Flutter
- shared_preferences_web (0.0.1):
- Flutter
- sqflite (0.0.1):
- Flutter
- FMDB (~> 2.7.2)
- FMDB (>= 2.7.5)
- SwiftyGif (5.3.0)
- url_launcher (0.0.1):
- Flutter
- url_launcher_macos (0.0.1):
- Flutter
- url_launcher_web (0.0.1):
- Flutter
- workmanager (0.0.1):
- wc_flutter_share (0.0.1):
- Flutter
DEPENDENCIES:
- audio_service (from `.symlinks/plugins/audio_service/ios`)
- audio_session (from `.symlinks/plugins/audio_session/ios`)
- connectivity (from `.symlinks/plugins/connectivity/ios`)
- connectivity_macos (from `.symlinks/plugins/connectivity_macos/ios`)
- device_info (from `.symlinks/plugins/device_info/ios`)
- file_picker (from `.symlinks/plugins/file_picker/ios`)
- Flutter (from `Flutter`)
- flutter_downloader (from `.symlinks/plugins/flutter_downloader/ios`)
- flutter_file_dialog (from `.symlinks/plugins/flutter_file_dialog/ios`)
- flutter_isolate (from `.symlinks/plugins/flutter_isolate/ios`)
- flutter_plugin_android_lifecycle (from `.symlinks/plugins/flutter_plugin_android_lifecycle/ios`)
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
- just_audio (from `.symlinks/plugins/just_audio/ios`)
- path_provider (from `.symlinks/plugins/path_provider/ios`)
- path_provider_macos (from `.symlinks/plugins/path_provider_macos/ios`)
- permission_handler (from `.symlinks/plugins/permission_handler/ios`)
- shared_preferences (from `.symlinks/plugins/shared_preferences/ios`)
- shared_preferences_macos (from `.symlinks/plugins/shared_preferences_macos/ios`)
- shared_preferences_web (from `.symlinks/plugins/shared_preferences_web/ios`)
- sqflite (from `.symlinks/plugins/sqflite/ios`)
- url_launcher (from `.symlinks/plugins/url_launcher/ios`)
- url_launcher_macos (from `.symlinks/plugins/url_launcher_macos/ios`)
- url_launcher_web (from `.symlinks/plugins/url_launcher_web/ios`)
- workmanager (from `.symlinks/plugins/workmanager/ios`)
- wc_flutter_share (from `.symlinks/plugins/wc_flutter_share/ios`)
SPEC REPOS:
trunk:
- DKImagePickerController
- DKPhotoGallery
- FLAnimatedImage
- FMDB
- Reachability
- SDWebImage
- SDWebImageFLPlugin
- SwiftyGif
EXTERNAL SOURCES:
audio_service:
:path: ".symlinks/plugins/audio_service/ios"
audio_session:
:path: ".symlinks/plugins/audio_session/ios"
connectivity:
:path: ".symlinks/plugins/connectivity/ios"
connectivity_macos:
:path: ".symlinks/plugins/connectivity_macos/ios"
device_info:
:path: ".symlinks/plugins/device_info/ios"
file_picker:
:path: ".symlinks/plugins/file_picker/ios"
Flutter:
@ -139,66 +122,48 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/flutter_file_dialog/ios"
flutter_isolate:
:path: ".symlinks/plugins/flutter_isolate/ios"
flutter_plugin_android_lifecycle:
:path: ".symlinks/plugins/flutter_plugin_android_lifecycle/ios"
fluttertoast:
:path: ".symlinks/plugins/fluttertoast/ios"
just_audio:
:path: ".symlinks/plugins/just_audio/ios"
path_provider:
:path: ".symlinks/plugins/path_provider/ios"
path_provider_macos:
:path: ".symlinks/plugins/path_provider_macos/ios"
permission_handler:
:path: ".symlinks/plugins/permission_handler/ios"
shared_preferences:
:path: ".symlinks/plugins/shared_preferences/ios"
shared_preferences_macos:
:path: ".symlinks/plugins/shared_preferences_macos/ios"
shared_preferences_web:
:path: ".symlinks/plugins/shared_preferences_web/ios"
sqflite:
:path: ".symlinks/plugins/sqflite/ios"
url_launcher:
:path: ".symlinks/plugins/url_launcher/ios"
url_launcher_macos:
:path: ".symlinks/plugins/url_launcher_macos/ios"
url_launcher_web:
:path: ".symlinks/plugins/url_launcher_web/ios"
workmanager:
:path: ".symlinks/plugins/workmanager/ios"
wc_flutter_share:
:path: ".symlinks/plugins/wc_flutter_share/ios"
SPEC CHECKSUMS:
audio_service: f509d65da41b9521a61f1c404dd58651f265a567
audio_session: 4f3e461722055d21515cf3261b64c973c062f345
connectivity: c4130b2985d4ef6fd26f9702e886bd5260681467
connectivity_macos: e2e9731b6b22dda39eb1b128f6969d574460e191
DKImagePickerController: 4a3e7948a848c4348e600b3fe5ce41478835fa10
DKPhotoGallery: 0290d32343574f06eaa4c26f8f2f8a1035e916be
device_info: d7d233b645a32c40dfdc212de5cf646ca482f175
DKImagePickerController: b5eb7f7a388e4643264105d648d01f727110fc3d
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
file_picker: 3e6c3790de664ccf9b882732d9db5eaf6b8d4eb1
FLAnimatedImage: 4a0b56255d9b05f18b6dd7ee06871be5d3b89e31
Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
Flutter: 434fef37c0980e73bb6479ef766c45957d4b510c
flutter_downloader: 058b9c41564a90500f67f3e432e3524613a7fd83
flutter_file_dialog: 34ab8c55c460c69cb70e75a8d74bfe8b5c852824
flutter_isolate: 0edf5081826d071adf21759d1eb10ff5c24503b5
flutter_plugin_android_lifecycle: dc0b544e129eebb77a6bfb1239d4d1c673a60a35
fluttertoast: b644586ef3b16f67fae9a1f8754cef6b2d6b634b
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
just_audio: c695d6e7e37f9e96672dd84039d7530e7fd5c205
path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c
path_provider_macos: f760a3c5b04357c380e2fddb6f9db6f3015897e0
permission_handler: 6226fcb78b97c7c7458a95c7346a11d5184fec12
permission_handler: ccb20a9fad0ee9b1314a52b70b76b473c5f8dab0
Reachability: 33e18b67625424e47b6cde6d202dce689ad7af96
SDWebImage: 48b88379b798fd1e4298f95bb25d2cdabbf4deb3
SDWebImageFLPlugin: 6c2295fb1242d44467c6c87dc5db6b0a13228fd8
SDWebImage: b969dcfc02c40a5da71eac0b03b8f1a0c794a86f
shared_preferences: af6bfa751691cdc24be3045c43ec037377ada40d
shared_preferences_macos: f3f29b71ccbb56bf40c9dd6396c9acf15e214087
shared_preferences_web: 141cce0c3ed1a1c5bf2a0e44f52d31eeb66e5ea9
sqflite: 4001a31ff81d210346b500c55b17f4d6c7589dd0
sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904
SwiftyGif: e466e86c660d343357ab944a819a101c4127cb40
url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef
url_launcher_macos: fd7894421cd39320dce5f292fc99ea9270b2a313
url_launcher_web: e5527357f037c87560776e36436bf2b0288b965c
workmanager: ffff78bf18495e2bc5b8c955ead94a81db340681
wc_flutter_share: 4f17b4e14f1c34b1427495583af99a21c07fccf7
PODFILE CHECKSUM: 7a493bdf8e8fed20acf4793e6605bdc446895cf3
PODFILE CHECKSUM: 5c91de82f174f8b2d99a661163650879bd2a5f0b
COCOAPODS: 1.9.1
COCOAPODS: 1.10.1

View File

@ -11,6 +11,7 @@
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
8CF9779B9A79168FBFA6066E /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 06AA1B089A6D985A4089F4BD /* Pods_Runner.framework */; };
8EFABE4625ADBC8C0008EA57 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 8E4DBAFB2467BE8D00105DDB /* libsqlite3.tbd */; };
97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; };
97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; };
97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; };
@ -55,6 +56,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
8EFABE4625ADBC8C0008EA57 /* libsqlite3.tbd in Frameworks */,
8CF9779B9A79168FBFA6066E /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@ -165,11 +167,12 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1020;
LastUpgradeCheck = 1240;
ORGANIZATIONNAME = "";
TargetAttributes = {
97C146ED1CF9000F007C117D = {
CreatedOnToolsVersion = 7.3.1;
DevelopmentTeam = 2J468J3268;
LastSwiftMigration = 1100;
ProvisioningStyle = Automatic;
};
@ -253,51 +256,49 @@
"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh",
"${BUILT_PRODUCTS_DIR}/DKImagePickerController/DKImagePickerController.framework",
"${BUILT_PRODUCTS_DIR}/DKPhotoGallery/DKPhotoGallery.framework",
"${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework",
"${BUILT_PRODUCTS_DIR}/FMDB/FMDB.framework",
"${PODS_ROOT}/../Flutter/Flutter.framework",
"${BUILT_PRODUCTS_DIR}/Reachability/Reachability.framework",
"${BUILT_PRODUCTS_DIR}/SDWebImage/SDWebImage.framework",
"${BUILT_PRODUCTS_DIR}/SDWebImageFLPlugin/SDWebImageFLPlugin.framework",
"${BUILT_PRODUCTS_DIR}/SwiftyGif/SwiftyGif.framework",
"${BUILT_PRODUCTS_DIR}/audio_service/audio_service.framework",
"${BUILT_PRODUCTS_DIR}/audio_session/audio_session.framework",
"${BUILT_PRODUCTS_DIR}/connectivity/connectivity.framework",
"${BUILT_PRODUCTS_DIR}/device_info/device_info.framework",
"${BUILT_PRODUCTS_DIR}/file_picker/file_picker.framework",
"${BUILT_PRODUCTS_DIR}/flutter_downloader/flutter_downloader.framework",
"${BUILT_PRODUCTS_DIR}/flutter_file_dialog/flutter_file_dialog.framework",
"${BUILT_PRODUCTS_DIR}/flutter_isolate/flutter_isolate.framework",
"${BUILT_PRODUCTS_DIR}/flutter_plugin_android_lifecycle/flutter_plugin_android_lifecycle.framework",
"${BUILT_PRODUCTS_DIR}/fluttertoast/fluttertoast.framework",
"${BUILT_PRODUCTS_DIR}/just_audio/just_audio.framework",
"${BUILT_PRODUCTS_DIR}/path_provider/path_provider.framework",
"${BUILT_PRODUCTS_DIR}/shared_preferences/shared_preferences.framework",
"${BUILT_PRODUCTS_DIR}/sqflite/sqflite.framework",
"${BUILT_PRODUCTS_DIR}/url_launcher/url_launcher.framework",
"${BUILT_PRODUCTS_DIR}/workmanager/workmanager.framework",
"${BUILT_PRODUCTS_DIR}/wc_flutter_share/wc_flutter_share.framework",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DKImagePickerController.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DKPhotoGallery.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FLAnimatedImage.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Reachability.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImage.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SDWebImageFLPlugin.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwiftyGif.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/audio_service.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/audio_session.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/connectivity.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/device_info.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/file_picker.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_downloader.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_file_dialog.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_isolate.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_plugin_android_lifecycle.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/fluttertoast.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/just_audio.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/url_launcher.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/workmanager.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/wc_flutter_share.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
@ -354,7 +355,6 @@
/* Begin XCBuildConfiguration section */
249021D3217E4FDB00AE95B9 /* Profile */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
@ -376,6 +376,7 @@
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
@ -394,7 +395,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@ -412,7 +413,7 @@
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = "";
DEVELOPMENT_TEAM = 2J468J3268;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
@ -424,7 +425,7 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
PRODUCT_BUNDLE_IDENTIFIER = com.stonegate.tsacdop;
PRODUCT_BUNDLE_IDENTIFIER = me.stonegate.tsacdop;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
@ -435,7 +436,6 @@
};
97C147031CF9000F007C117D /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
@ -457,6 +457,7 @@
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
@ -481,7 +482,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@ -491,7 +492,6 @@
};
97C147041CF9000F007C117D /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
@ -513,6 +513,7 @@
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
@ -531,7 +532,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@ -550,7 +551,7 @@
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = "";
DEVELOPMENT_TEAM = 2J468J3268;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
@ -562,7 +563,7 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
PRODUCT_BUNDLE_IDENTIFIER = com.stonegate.tsacdop;
PRODUCT_BUNDLE_IDENTIFIER = me.stonegate.tsacdop;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
@ -581,7 +582,7 @@
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = "";
DEVELOPMENT_TEAM = 2J468J3268;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
@ -593,7 +594,7 @@
"$(inherited)",
"$(PROJECT_DIR)/Flutter",
);
PRODUCT_BUNDLE_IDENTIFIER = com.stonegate.tsacdop;
PRODUCT_BUNDLE_IDENTIFIER = me.stonegate.tsacdop;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";

View File

@ -2,6 +2,6 @@
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
location = "self:">
</FileRef>
</Workspace>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PreviewsEnabled</key>
<false/>
</dict>
</plist>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1020"
LastUpgradeVersion = "1240"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
@ -27,8 +27,6 @@
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
@ -38,8 +36,8 @@
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
@ -61,8 +59,6 @@
ReferencedContainer = "container:Runner.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Profile"

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PreviewsEnabled</key>
<false/>
</dict>
</plist>

View File

@ -1,23 +1,23 @@
import UIKit
import Flutter
import flutter_downloader
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
FlutterDownloaderPlugin.setPluginRegistrantCallback(registerPlugins)
UIApplication.shared.setMinimumBackgroundFetchInterval(TimeInterval(60*60*4))
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
private func registerPlugins(registry: FlutterPluginRegistry) {
if (!registry.hasPlugin("FlutterDownloaderPlugin")) {
FlutterDownloaderPlugin.register(with: registry.registrar(forPlugin: "FlutterDownloaderPlugin"))
}
}
import UIKit
import Flutter
import flutter_downloader
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
FlutterDownloaderPlugin.setPluginRegistrantCallback(registerPlugins)
UIApplication.shared.setMinimumBackgroundFetchInterval(TimeInterval(60*60*4))
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
private func registerPlugins(registry: FlutterPluginRegistry) {
if (!registry.hasPlugin("FlutterDownloaderPlugin")) {
FlutterDownloaderPlugin.register(with: registry.registrar(forPlugin: "FlutterDownloaderPlugin")!)
}
}

View File

@ -1,122 +1,128 @@
{
"images" : [
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "Icon-App-20x20@3x.png",
"scale" : "3x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "Icon-App-29x29@3x.png",
"scale" : "3x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "Icon-App-40x40@3x.png",
"scale" : "3x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@2x.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "Icon-App-60x60@3x.png",
"scale" : "3x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@1x.png",
"scale" : "1x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "Icon-App-20x20@2x.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@1x.png",
"scale" : "1x"
},
{
"size" : "29x29",
"idiom" : "ipad",
"filename" : "Icon-App-29x29@2x.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@1x.png",
"scale" : "1x"
},
{
"size" : "40x40",
"idiom" : "ipad",
"filename" : "Icon-App-40x40@2x.png",
"scale" : "2x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@1x.png",
"scale" : "1x"
},
{
"size" : "76x76",
"idiom" : "ipad",
"filename" : "Icon-App-76x76@2x.png",
"scale" : "2x"
},
{
"size" : "83.5x83.5",
"idiom" : "ipad",
"filename" : "Icon-App-83.5x83.5@2x.png",
"scale" : "2x"
},
{
"size" : "1024x1024",
"idiom" : "ios-marketing",
"filename" : "Icon-App-1024x1024@1x.png",
"scale" : "1x"
"images":[
{
"idiom":"iphone",
"size":"20x20",
"scale":"2x",
"filename":"Icon-App-20x20@2x.png"
},
{
"idiom":"iphone",
"size":"20x20",
"scale":"3x",
"filename":"Icon-App-20x20@3x.png"
},
{
"idiom":"iphone",
"size":"29x29",
"scale":"1x",
"filename":"Icon-App-29x29@1x.png"
},
{
"idiom":"iphone",
"size":"29x29",
"scale":"2x",
"filename":"Icon-App-29x29@2x.png"
},
{
"idiom":"iphone",
"size":"29x29",
"scale":"3x",
"filename":"Icon-App-29x29@3x.png"
},
{
"idiom":"iphone",
"size":"40x40",
"scale":"2x",
"filename":"Icon-App-40x40@2x.png"
},
{
"idiom":"iphone",
"size":"40x40",
"scale":"3x",
"filename":"Icon-App-40x40@3x.png"
},
{
"idiom":"iphone",
"size":"60x60",
"scale":"2x",
"filename":"Icon-App-60x60@2x.png"
},
{
"idiom":"iphone",
"size":"60x60",
"scale":"3x",
"filename":"Icon-App-60x60@3x.png"
},
{
"idiom":"iphone",
"size":"76x76",
"scale":"2x",
"filename":"Icon-App-76x76@2x.png"
},
{
"idiom":"ipad",
"size":"20x20",
"scale":"1x",
"filename":"Icon-App-20x20@1x.png"
},
{
"idiom":"ipad",
"size":"20x20",
"scale":"2x",
"filename":"Icon-App-20x20@2x.png"
},
{
"idiom":"ipad",
"size":"29x29",
"scale":"1x",
"filename":"Icon-App-29x29@1x.png"
},
{
"idiom":"ipad",
"size":"29x29",
"scale":"2x",
"filename":"Icon-App-29x29@2x.png"
},
{
"idiom":"ipad",
"size":"40x40",
"scale":"1x",
"filename":"Icon-App-40x40@1x.png"
},
{
"idiom":"ipad",
"size":"40x40",
"scale":"2x",
"filename":"Icon-App-40x40@2x.png"
},
{
"idiom":"ipad",
"size":"76x76",
"scale":"1x",
"filename":"Icon-App-76x76@1x.png"
},
{
"idiom":"ipad",
"size":"76x76",
"scale":"2x",
"filename":"Icon-App-76x76@2x.png"
},
{
"idiom":"ipad",
"size":"83.5x83.5",
"scale":"2x",
"filename":"Icon-App-83.5x83.5@2x.png"
},
{
"size" : "1024x1024",
"idiom" : "ios-marketing",
"scale" : "1x",
"filename" : "ItunesArtwork@2x.png"
}
],
"info":{
"version":1,
"author":"easyappicon"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 564 B

After

Width:  |  Height:  |  Size: 649 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Some files were not shown because too many files have changed in this diff Show More