Compare commits

...

613 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
stonegate 5bcdc7d5c3 Update language. 2020-09-16 00:36:59 +08:00
stonegate c785dbaaaa Minor change, 2020-09-16 00:07:34 +08:00
stonegate 63d1be0897 Release v0.4.16 2020-09-15 23:34:32 +08:00
stonegate 9fdd549d5c Improve multi select feature. 2020-09-15 19:48:22 +08:00
stonegate cd1a422f73 Fixed bug, feed title get error. 2020-09-15 19:48:01 +08:00
stonegate 4385c58668 Add multi select in podcast deatil page. 2020-09-15 03:02:32 +08:00
stonegate e1fe91983e Update grid view UI. 2020-09-14 23:18:13 +08:00
stonegate 8ea216468a Update discovery page. 2020-09-14 22:51:05 +08:00
stonegate fa171ce307 Update audio_service plugin. 2020-09-14 22:50:50 +08:00
stonegate f7dfb0b005 Add discovery page in search page. 2020-09-14 17:51:04 +08:00
stonegate d99e7a2e04 Update flatbutton UI, fixed #18. 2020-09-12 18:22:26 +08:00
stonegate 7d873062ec Make the group name editable directly. 2020-09-10 18:09:57 +08:00
stonegate d1668a923f Customize the speeds available. 2020-09-10 18:01:28 +08:00
stonegate 8aad960ed8 Fixed shownote timestamp click error. 2020-09-10 14:49:44 +08:00
stonegate 5114d6ad4e Minor change. 2020-09-10 14:08:01 +08:00
stonegate dca987f65a Fix download error, when podcast name contains '/'. 2020-09-10 13:56:56 +08:00
stonegate 38c6b62a54 v 0.4.15 Release. 2020-08-30 16:48:07 +08:00
stonegate a75bdbbc95 Fastforward and rewind on headset. 2020-08-30 16:38:05 +08:00
stonegate cdf05a14e6 Change download button style. 2020-08-30 16:37:32 +08:00
stonegate 5e493fa9bd Update addToPlaylist button style. 2020-08-29 05:28:08 +08:00
stonegate cc0f5a4908 Update settings performance. 2020-08-29 05:05:37 +08:00
stonegate deb987d71d Language update. 2020-08-29 04:53:17 +08:00
stonegate e004966761 Change shownote fonts. 2020-08-29 04:52:50 +08:00
stonegate 566ff83530 Change download button style. 2020-08-29 04:52:35 +08:00
stonegate 815e4d8caf Change show notes font. 2020-08-29 04:49:11 +08:00
stonegate 83303b873e Change notification layout. 2020-08-29 00:50:40 +08:00
stonegate a24e7d6758 Add 1.1 to speed setting. 2020-08-27 16:38:23 +08:00
stonegate 7bd55e8058 Add 5s to skip seconds to select. 2020-08-27 16:36:18 +08:00
stonegate 5235e90e6a Fixed bug downlaod failed when file name too long. 2020-08-27 16:35:43 +08:00
stonegate fc4b8a275e Fix bug hide listened mode load more broken. 2020-08-27 16:35:18 +08:00
stonegate b4e640bad3 Change version code. 2020-08-24 00:35:31 +08:00
stonegate 208edeb67e Hide listened. 2020-08-24 00:35:16 +08:00
stonegate 5a32511ac9 Minor change. 2020-08-23 17:42:13 +08:00
stonegate be00383966 Change download style, you can cancel downlaod when paused. 2020-08-23 17:41:43 +08:00
stonegate 63e587d089 v 0.4.14 Release. 2020-08-20 20:50:45 +08:00
stonegate b0e36558c1 Minor change. 2020-08-20 20:50:27 +08:00
stonegate 578d8ffada v0.4.13 Release. 2020-08-19 18:27:07 +08:00
stonegate f68bf67191 Minor change. 2020-08-19 18:26:48 +08:00
stonegate 5a533d951b Minor change. 2020-08-19 18:10:08 +08:00
stonegate 5d940a6342 Add animation to group change. 2020-08-19 18:09:50 +08:00
stonegate e9e27d8cb6 Fixed bug, downlaoded file play error. 2020-08-19 18:09:05 +08:00
stonegate 626763850b Minor change. 2020-08-16 16:05:18 +08:00
stonegate 017e15b129 Fixed bug => save history error. 2020-08-16 16:05:04 +08:00
stonegate fda2c2266c Save episdoe description after format. 2020-08-16 02:36:29 +08:00
stonegate 46bf6fb4f2 Changelog update v0.4.12. 2020-08-16 02:30:54 +08:00
stonegate 8563f24140 Minor change. 2020-08-16 01:43:45 +08:00
stonegate 631b03609a Update menu style. 2020-08-16 01:31:07 +08:00
stonegate 6f8b671acb Improve dark mode colors. 2020-08-16 01:27:54 +08:00
stonegate 577f0e245a Update features. 2020-08-16 01:27:31 +08:00
stonegate 84cd5eb21f Change default icon to round icon under api 26. 2020-08-15 17:07:27 +08:00
stonegate 39c56eef6a Minor change. 2020-08-15 16:24:53 +08:00
stonegate b1a39fd1b3 Change channel to stable. 2020-08-15 16:24:41 +08:00
stonegate 5c01a9c83c Minor change. 2020-08-14 20:13:10 +08:00
stonegate e17ed8a81f Minor ui change. 2020-08-14 20:12:44 +08:00
stonegate f37241d795 Minor change. 2020-08-13 17:59:15 +08:00
stonegate 90be28e6da Playlist ui bug fix. 2020-08-13 17:58:46 +08:00
stonegate 20505eafcf Fixed language bug. 2020-08-13 17:58:24 +08:00
stonegate 10499285df Add telegram group link. 2020-08-12 02:18:45 +08:00
stonegate c635394891 Release 0.4.11. 2020-08-12 02:09:09 +08:00
stonegate 0a7d06d716 Change time label style in history list. 2020-08-12 02:08:53 +08:00
stonegate d0b7c39efd Change playlist animation in player widget. 2020-08-12 02:08:22 +08:00
stonegate 22f9eef8f9 Fixed bug, error massage didin't dispear. 2020-08-12 02:07:50 +08:00
stonegate b66ba4d56c Minor change. 2020-08-12 01:06:56 +08:00
stonegate 1a145f701e Navigator 2020-08-12 01:05:56 +08:00
stonegate 2fc3a2603c Remove current playing item. 2020-08-11 16:36:49 +08:00
stonegate c8c16a09f8 Minor change. 2020-08-11 16:36:27 +08:00
stonegate 99cf220adc Change time picker style. 2020-08-11 16:35:51 +08:00
stonegate 7bbeee5f34 Replace print to developer.log. 2020-08-11 02:41:22 +08:00
stonegate 8523f3401a Time stamp in shownote. 2020-08-11 02:16:15 +08:00
stonegate 75730cd574 Mark not listened. 2020-08-10 21:10:12 +08:00
stonegate 8bc06939f9 Minor change. 2020-08-10 21:09:54 +08:00
stonegate a813ac50f6 Volume gain settings. 2020-08-10 03:35:04 +08:00
stonegate 0e4dbb838d Save history after stop. 2020-08-10 03:07:24 +08:00
stonegate ac58b4cb18 Add history list . 2020-08-10 03:07:03 +08:00
stonegate ff719ab108 Fixed playlist reorder error, 2020-08-09 23:12:33 +08:00
stonegate f8db1b756f Support boost volume. 2020-08-09 23:11:59 +08:00
stonegate 7e2d340713 Fixed fireside host load error. 2020-08-09 23:11:37 +08:00
stonegate 5d1c9a8ec1 Minor change 2020-08-09 23:11:10 +08:00
stonegate 28c7222d06 Support boost volume. 2020-08-09 23:10:32 +08:00
stonegate 058e97a8f2 Reorder bug fixed. 2020-08-09 01:25:52 +08:00
stonegate b90970f92e Minor change. 2020-08-09 01:25:28 +08:00
stonegate 8a9fe0555a Format update. 2020-08-08 00:23:28 +08:00
stonegate 18b2f7beff Fixed iamge load error. 2020-08-08 00:22:51 +08:00
stonegate 1939d6581a
Merge pull request #9 from stonega/imgbot
[ImgBot] Optimize images
2020-08-06 23:05:40 +08:00
stonegate 64bf54bb0e Update README 2020-08-06 23:04:44 +08:00
stonegate ee941c37c0 Update README 2020-08-06 22:39:08 +08:00
stonegate d782d06565 Update README. 2020-08-06 22:18:32 +08:00
stonegate 6f0d12606e Release 0.4.10 2020-08-06 17:36:16 +08:00
stonegate 6f481ebf16 Bug fixed, fast forward and rewind button UI error. 2020-08-06 17:33:01 +08:00
stonegate a40c94e811 Bug fixed, date parse error, change ignore to replace when subscribe podcast. 2020-08-06 16:21:32 +08:00
stonegate d5be6c13de Increase slide up value. 2020-08-06 15:27:26 +08:00
stonegate d9349007fe Fix playlist bug in player widget. 2020-08-06 15:26:49 +08:00
stonegate a3b5adfe5c Change version to 0.4.10 2020-08-03 21:19:31 +08:00
stonegate d985b0a197 Bug fix. 2020-08-03 21:15:37 +08:00
stonegate e098ff07c5 Add Spanish language. 2020-08-03 21:14:52 +08:00
stonegate ed3caa1e01 Language settings backup. 2020-08-03 00:52:55 +08:00
stonegate 7ab21d59bc Minor change. 2020-08-02 23:29:41 +08:00
stonegate fe63491c55 Fixed bug, wrong menu position. 2020-08-02 23:29:13 +08:00
stonegate da4a31a81e Save language settings permanent. 2020-08-02 23:28:22 +08:00
stonegate 9033181fcf Typo fix, 2020-08-02 23:26:50 +08:00
stonegate 8a2e9a6671 Add license budge. 2020-08-01 23:11:26 +08:00
stonegate b3f10892f4 Bug fixed. 2020-08-01 23:11:12 +08:00
stonegate ea4ae2925c Minot ui change. 2020-08-01 23:10:43 +08:00
stonegate 1246057c80 Change content padding. 2020-08-01 23:09:51 +08:00
stonegate 95bfaf1f45 Change textfield handler color. 2020-08-01 23:07:55 +08:00
stonegate cdfd7acc14 v0.4.9 release. 2020-08-01 16:00:56 +08:00
stonegate d38c984384 Don't open page from player on playing episode page. 2020-08-01 16:00:27 +08:00
stonegate d15b423fa4 Title overflow effect changed. 2020-08-01 15:32:37 +08:00
stonegate b686fddd72 Improve sleep timer dark sky. 2020-08-01 15:31:49 +08:00
stonegate 7a48df7f05 Skip silence feature. 2020-08-01 15:31:18 +08:00
stonegate aa1c4843d3 Minot layout issue fixed. 2020-08-01 15:30:24 +08:00
stonegate 0a2956764a Trasnlation update. 2020-08-01 15:29:48 +08:00
ImgBotApp d11fc8c157
[ImgBot] Optimize images
*Total -- 6,247.44kb -> 5,308.08kb (15.04%)

/assets/listennotes.png -- 31.97kb -> 6.51kb (79.65%)
/android/app/src/main/res/mipmap-xxhdpi/ic_splash.png -- 14.98kb -> 5.28kb (64.79%)
/android/app/src/main/res/mipmap-xhdpi/ic_splash.png -- 8.97kb -> 3.79kb (57.77%)
/android/app/src/main/res/mipmap-xxhdpi/text_light.png -- 10.30kb -> 4.67kb (54.64%)
/android/app/src/main/res/mipmap-hdpi/ic_splash.png -- 6.50kb -> 3.13kb (51.91%)
/android/app/src/main/res/mipmap-xhdpi/text_light.png -- 5.29kb -> 2.64kb (50%)
/android/app/src/main/res/mipmap-hdpi/text_light.png -- 4.44kb -> 2.40kb (46.01%)
/assets/logo.png -- 10.37kb -> 5.61kb (45.9%)
/android/app/src/main/res/mipmap-xxxhdpi/ic_notification.png -- 10.37kb -> 5.61kb (45.9%)
/android/app/src/main/res/mipmap-xhdpi/text.png -- 5.41kb -> 2.93kb (45.82%)
/android/app/src/main/res/drawable-xxxhdpi/ic_stat_pause_circle_filled.png -- 2.05kb -> 1.11kb (45.78%)
/android/app/src/main/res/drawable-xxxhdpi/ic_stat_play_circle_filled.png -- 2.43kb -> 1.32kb (45.5%)
/android/app/src/main/res/drawable-xxxhdpi/ic_stat_replay_10.png -- 2.83kb -> 1.55kb (45.22%)
/android/app/src/main/res/mipmap-xxxhdpi/ic_splash.png -- 21.24kb -> 11.93kb (43.85%)
/android/app/src/main/res/drawable-xxxhdpi/ic_stat_forward_30.png -- 2.98kb -> 1.68kb (43.72%)
/android/app/src/main/res/drawable-xxxhdpi/ic_notification.png -- 1.60kb -> 0.90kb (43.36%)
/android/app/src/main/res/mipmap-hdpi/text.png -- 4.65kb -> 2.64kb (43.18%)
/android/app/src/main/res/mipmap-mdpi/ic_splash.png -- 4.10kb -> 2.34kb (42.98%)
/android/app/src/main/res/mipmap-xxhdpi/ic_notification.png -- 7.19kb -> 4.17kb (42.05%)
/preview/banner.png -- 184.21kb -> 107.04kb (41.89%)
/android/app/src/main/res/mipmap-xxxhdpi/text.png -- 14.46kb -> 8.43kb (41.71%)
/assets/buymeacoffee.png -- 4.02kb -> 2.36kb (41.35%)
/assets/localizely_logo.png -- 17.56kb -> 10.48kb (40.32%)
/assets/text_light.png -- 14.09kb -> 8.44kb (40.11%)
/android/app/src/main/res/mipmap-xxxhdpi/text_light.png -- 14.09kb -> 8.44kb (40.11%)
/android/app/src/main/res/mipmap-mdpi/text_light.png -- 2.44kb -> 1.46kb (40.02%)
/android/app/src/main/res/mipmap-xhdpi/ic_notification.png -- 4.57kb -> 2.75kb (39.82%)
/assets/localizely_logo_light.png -- 18.10kb -> 10.98kb (39.34%)
/assets/text.png -- 10.51kb -> 6.42kb (38.9%)
/android/app/src/main/res/mipmap-xxhdpi/text.png -- 10.51kb -> 6.42kb (38.9%)
/android/app/src/main/res/drawable-xxhdpi/ic_stat_forward_30.png -- 2.53kb -> 1.56kb (38.29%)
/android/app/src/main/res/drawable-xxhdpi/ic_stat_replay_10.png -- 2.38kb -> 1.47kb (37.99%)
/android/app/src/main/res/drawable-xxhdpi/ic_stat_play_circle_filled.png -- 2.06kb -> 1.29kb (37.32%)
/android/app/src/main/res/drawable-xxhdpi/ic_stat_pause_circle_filled.png -- 1.77kb -> 1.12kb (36.87%)
/android/app/src/main/res/mipmap-ldpi/ic_splash.png -- 3.05kb -> 1.97kb (35.43%)
/android/app/src/main/res/mipmap-hdpi/ic_notification.png -- 3.27kb -> 2.11kb (35.38%)
/android/app/src/main/res/mipmap-mdpi/text.png -- 2.55kb -> 1.66kb (35.07%)
/assets/shownote.png -- 29.14kb -> 19.01kb (34.77%)
/android/app/src/main/res/drawable-xxhdpi/ic_notification.png -- 1.28kb -> 0.84kb (33.97%)
/android/app/src/main/res/drawable-xhdpi/ic_stat_forward_30.png -- 1.39kb -> 0.94kb (32.12%)
/android/app/src/main/res/drawable-xhdpi/ic_stat_play_circle_filled.png -- 1.10kb -> 0.75kb (31.59%)
/android/app/src/main/res/drawable-xhdpi/ic_stat_replay_10.png -- 1.31kb -> 0.90kb (31.44%)
/android/app/src/main/res/drawable-xhdpi/ic_stat_pause_circle_filled.png -- 0.97kb -> 0.68kb (30.03%)
/android/app/src/main/res/mipmap-mdpi/ic_notification.png -- 2.06kb -> 1.48kb (28.23%)
/assets/listennotes_light.png -- 17.17kb -> 12.47kb (27.41%)
/android/app/src/main/res/drawable-hdpi/ic_stat_replay_10.png -- 1.14kb -> 0.86kb (24.29%)
/android/app/src/main/res/drawable-hdpi/ic_stat_play_circle_filled.png -- 0.93kb -> 0.71kb (23.66%)
/android/app/src/main/res/drawable-hdpi/ic_stat_forward_30.png -- 1.15kb -> 0.89kb (23.1%)
/android/app/src/main/res/drawable-xhdpi/ic_notification.png -- 0.74kb -> 0.58kb (21.77%)
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -- 9.21kb -> 7.24kb (21.37%)
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -- 5.53kb -> 4.36kb (21.26%)
/android/app/src/main/res/drawable-hdpi/ic_stat_pause_circle_filled.png -- 0.83kb -> 0.66kb (20.66%)
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -- 10.99kb -> 8.73kb (20.56%)
/android/app/src/main/res/mipmap-ldpi/ic_notification.png -- 1.57kb -> 1.26kb (19.54%)
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png -- 14.99kb -> 12.32kb (17.82%)
/preview/1585893851312.png -- 587.34kb -> 485.60kb (17.32%)
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png -- 10.02kb -> 8.37kb (16.55%)
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -- 5.91kb -> 5.00kb (15.28%)
/preview/1585893877702.png -- 700.71kb -> 596.86kb (14.82%)
/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -- 4.70kb -> 4.09kb (12.96%)
/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png -- 3.14kb -> 2.75kb (12.55%)
/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -- 4.05kb -> 3.57kb (11.89%)
/android/app/src/main/res/drawable-hdpi/ic_notification.png -- 0.62kb -> 0.55kb (11.69%)
/preview/1585894013809.png -- 432.34kb -> 382.24kb (11.59%)
/preview/1585893997451.png -- 451.73kb -> 399.39kb (11.59%)
/preview/1585894051734.png -- 345.19kb -> 305.47kb (11.51%)
/preview/1585893920721.png -- 602.17kb -> 534.17kb (11.29%)
/preview/1585896237809.png -- 1,077.27kb -> 955.92kb (11.26%)
/preview/1585893838840.png -- 617.31kb -> 548.16kb (11.2%)
/android/app/src/main/res/drawable-mdpi/ic_stat_forward_30.png -- 0.65kb -> 0.58kb (11.11%)
/android/app/src/main/res/drawable-mdpi/ic_stat_replay_10.png -- 0.63kb -> 0.56kb (10.94%)
/preview/1585893866457.png -- 416.52kb -> 371.41kb (10.83%)
/preview/1585894026070.png -- 387.12kb -> 346.73kb (10.43%)
/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png -- 3.56kb -> 3.20kb (10.12%)
/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png -- 1.87kb -> 1.69kb (9.45%)
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -- 2.47kb -> 2.25kb (8.67%)
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -- 2.60kb -> 2.37kb (8.65%)
/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -- 2.32kb -> 2.19kb (5.68%)
/android/app/src/main/res/drawable-mdpi/ic_stat_play_circle_filled.png -- 0.51kb -> 0.49kb (4.74%)
/android/app/src/main/res/drawable-mdpi/ic_stat_pause_circle_filled.png -- 0.48kb -> 0.46kb (4.07%)
/assets/fireside.jpg -- 14.86kb -> 14.73kb (0.87%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
2020-07-31 18:26:22 +00:00
stonegate ab79e9182d Merge branch 'master' of https://github.com/stonega/tsacdop 2020-07-31 17:42:50 +08:00
stonegate 5107338373
Update README.md 2020-07-31 17:25:31 +08:00
stonegate 6bc0d3620c Fixed get player height issue. 2020-07-31 16:50:48 +08:00
stonegate ce1382faba
Merge pull request #7 from Atrate/README
Language fixes in README
2020-07-31 16:47:32 +08:00
Atrate 95c207b863
Language fixes in README
Signed-off-by: Atrate <Atrate@protonmail.com>
2020-07-31 01:35:03 +02:00
stonegate 4241af7ec8 Change player default to short. 2020-07-31 01:25:00 +08:00
stonegate 16aed3eb9f Add player height setting to backup. 2020-07-31 01:24:42 +08:00
stonegate 0657fd9683 Show menu more quick. 2020-07-31 01:19:29 +08:00
stonegate e410ac1011 Add setting to change player height. 2020-07-31 01:18:56 +08:00
stonegate b3bd37d39e Add translator. 2020-07-31 01:17:26 +08:00
stonegate cdbae8bc40 Language update 2020-07-31 01:16:51 +08:00
stonegate 4fa70e9c51 Language update 2020-07-31 01:16:29 +08:00
stonegate 5eca11937a Language update. 2020-07-31 01:16:14 +08:00
stonegate b510472443 change player open episode page animation. 2020-07-30 18:23:56 +08:00
stonegate 9b8ef2d770 Change opacity when open detail sheet. 2020-07-30 17:29:48 +08:00
stonegate d7559943dc Aniamtion more smooth. 2020-07-30 17:28:29 +08:00
stonegate 44e32ec13b Remove scroll grow. 2020-07-30 00:37:51 +08:00
stonegate 579bcd7125 Bug fixs. 2020-07-29 20:12:07 +08:00
stonegate 814628ce3d Redesign player widget. 2020-07-29 20:06:49 +08:00
stonegate 1642c4b839
Merge pull request #6 from Atrate/sd
Make app movable to SD card
2020-07-28 12:40:25 +08:00
stonegate 4009f84c38 Update player widget design. 2020-07-28 12:35:57 +08:00
Atrate fba339ea0a
Make app movable to SD card
Signed-off-by: Atrate <Atrate@protonmail.com>
2020-07-27 23:43:54 +02:00
stonegate 691c25fd6b Seperate webfeed plugin from app. 2020-07-26 21:48:30 +08:00
stonegate 54120848bb Effective dart. 2020-07-26 18:20:42 +08:00
stonegate 913358ede4 Change consumer to selector. 2020-07-25 21:17:01 +08:00
stonegate 3a1803484b v0.4.8 release. 2020-07-25 20:28:24 +08:00
stonegate 403d9a9a4c Improve real dark theme. 2020-07-25 18:32:05 +08:00
stonegate 7c828f1ee6 Change episode detail page download button ui. 2020-07-25 16:59:27 +08:00
stonegate 57e7bfbf3f Fixed audio player rewind fastforward issue. 2020-07-25 13:42:48 +08:00
stonegate 1c98c0ae0f Change button theme height. 2020-07-25 01:56:42 +08:00
stonegate 01d21940d4 Support fast forward / rewind seconds setting. 2020-07-25 01:17:47 +08:00
stonegate 0bff5b8f3b Add dot indicator in popup menu. 2020-07-24 23:07:46 +08:00
stonegate 6596566634 Add filter in podcast detail page. 2020-07-24 22:10:08 +08:00
stonegate c183683101 Add filter in podcast detail page. 2020-07-24 02:42:25 +08:00
stonegate d9bb4cf987 modified: android/app/src/main/AndroidManifest.xml 2020-07-23 00:06:44 +08:00
stonegate c3caf70122 Add language reviewed progress in README 2020-07-22 22:56:16 +08:00
stonegate 964c927286 Add franch support, thanks ppp. 2020-07-22 22:15:06 +08:00
stonegate d7b6212cac Improve serach result UI. 2020-07-22 20:39:25 +08:00
stonegate b619be9a9b Search ui changed a lot, add podcast detail panel.
Update audio service to latest version.
2020-07-22 17:34:32 +08:00
stonegate 602cc67342 Fixed audio cache did't work. 2020-07-18 17:52:31 +08:00
stonegate 33e34e9966 Fixed ompl file import bug, add rssUrl vilidate. 2020-07-18 16:00:52 +08:00
stonegate a6182973f2 Improve episode detail page layout. 2020-07-18 02:12:41 +08:00
stonegate 6f6ab16946 Change slideleft animation duration. 2020-07-17 23:12:30 +08:00
stonegate eaf2d8cd83 Add 0.4.6 changelog. 2020-07-17 23:01:55 +08:00
stonegate cab8b39a45 Fix bug mark listened not work.
Fix subscribe rcover have no group.
2020-07-17 22:44:07 +08:00
stonegate 54a1b17499 renamed: lib/home/addpodcast.dart -> lib/home/search_podcast.dart 2020-07-16 22:50:18 +08:00
stonegate 5159256600 Fix typo.
Add v0.4.5 changelog.
2020-07-16 22:37:19 +08:00
stonegate 0a8084f0ef Fix ompl import bug. 2020-07-16 21:55:41 +08:00
stonegate bd350dac27 Enable R8 2020-07-16 19:30:08 +08:00
stonegate 65c22d7f61 modified: .circleci/config.yml 2020-07-16 19:24:13 +08:00
stonegate 87ca0e81fa modified: .circleci/config.yml 2020-07-16 19:23:55 +08:00
stonegate f907dc6578 Enable obfuscate in build. 2020-07-16 18:31:45 +08:00
stonegate bd297c3c90 Disable group manage when import ompl.
Improve import ompl group support.
2020-07-16 18:21:19 +08:00
stonegate 1d7d772323 Add localizely logo.
Tap logo in homepage to taggle dark mode.
Update open sorce libraries.
2020-07-16 17:35:01 +08:00
stonegate c5f2e4bdc1 Add getBool/saveBool methods in key_value_storage.
Change default layout to layout.two.
2020-07-16 15:18:45 +08:00
stonegate 8cca497d63 Add settings backup and restore.
Change outline button shape.
2020-07-16 03:42:52 +08:00
stonegate f47758b104 Support settings backuo. 2020-07-15 02:34:28 +08:00
stonegate 98fd594eb5 Move subscribe_worker to group state namagement.
Improve OMPL file export/import, support groups now.
2020-07-14 23:45:45 +08:00
stonegate 21fc7e027b Better dart code. 2020-07-13 20:04:44 +08:00
stonegate 6d755c5d92 Better dart code. 2020-07-13 15:41:59 +08:00
stonegate d73fdeca1d Better dart code 2020-07-13 14:56:05 +08:00
stonegate 8fee2dec59 Remove unused sizedbox 2020-07-13 14:32:01 +08:00
stonegate cc61f5381e Remove unused sizedbox 2020-07-13 14:31:21 +08:00
stonegate 1de2e5311e OMPL export supprt groups. 2020-07-12 20:54:14 +08:00
stonegate 1710e5da77 Change RadioListTile radius 2020-07-12 20:53:34 +08:00
stonegate 6a88054ffe Change banner image. 2020-07-10 02:04:14 +08:00
stonegate 912ee5a669 Change README banner. 2020-07-09 15:46:34 +08:00
stonegate 361ed40439 Add banner in preview. 2020-07-09 15:32:09 +08:00
stonegate b851d3012a Release v0.4.0 2020-07-09 03:52:37 +08:00
stonegate cc0a3e639d Improve player animation. 2020-07-09 03:48:41 +08:00
stonegate a7d2a95f02 Paint setting icon with color. 2020-07-09 00:34:42 +08:00
stonegate f1989a0565 Change dropdown menu UI with custom dropdown widget.
Add scrollbar in libried page.
2020-07-09 00:18:32 +08:00
stonegate c9de380180 Update history chart UI.
Update readme badges.
2020-07-08 21:18:08 +08:00
stonegate 3f2dba63c2 Add setting - change tap to open popup menu. 2020-07-08 01:36:40 +08:00
stonegate 73d305e3e3 modified: README.md 2020-07-07 23:41:48 +08:00
stonegate c5d6261c11 Change filenames.
Update README.
2020-07-07 23:29:21 +08:00
stonegate afd89ea80c Add localization info in README. 2020-07-06 18:32:44 +08:00
stonegate c683eba6c4 More localization work. 2020-07-06 17:50:20 +08:00
stonegate 400e247134 Add zh support 2020-07-04 22:42:56 +08:00
stonegate 7e365dbb87 Localize support, add zh_hans support 2020-07-02 20:58:55 +08:00
stonegate 6ad2c7dc44 Change episode popup menu style. 2020-07-01 03:14:36 +08:00
stonegate 0c16ca95f3 Add changelog
Typo error in settings
2020-06-30 00:12:53 +08:00
stonegate 6e5ec21cee Add sleep timer setting.
Fixed just_audio sinkEvent null error.
2020-06-29 20:13:42 +08:00
stonegate 979bbedb0a Remove clip feature 2020-06-28 23:47:29 +08:00
stonegate 9ac4790e44 Add sleep timer settings. 2020-06-28 02:27:39 +08:00
stonegate ad754cfcd9 Fix outdated download task delete failed. 2020-06-27 09:33:01 +08:00
stonegate acf41963aa modified: CHANGELOG.md 2020-06-20 12:59:45 +08:00
stonegate eebb49f386 Fixed bug remove episodes in FlutterDownloader after remove a podcast.
Add buy me a coffee in about page.
2020-06-20 12:52:29 +08:00
stonegate 73fd9f6c37 Add changelog file. 2020-06-16 13:02:41 +08:00
stonegate bbd9df64df Release v0.3.4 2020-06-16 12:40:51 +08:00
stonegate 4d49bf086e Change playlist icon
Move versioncode to pubspec
Check if skip in erroe state
2020-06-14 16:03:03 +08:00
stonegate 9740113dfe Save size in saveMediaId
Change setting ui
2020-06-13 21:23:08 +08:00
stonegate 0b20c24984 Auto download 2020-06-13 01:56:13 +08:00
stonegate e69a2dbc00 Support auto download. 2020-06-11 23:13:10 +08:00
stonegate f4b56938ae Remove listened indicator and increase the color difference
Improve download manage page, support fliters
2020-06-11 00:36:53 +08:00
stonegate 935566b304 Popup menu setting
Auto download on work
Add rewind when using headset
Fixed audio auto play when notification come
2020-06-10 15:42:40 +08:00
stonegate 1a497a78ed 🚧 Auto download 2020-06-08 02:42:27 +08:00
stonegate 9c13450a9c Add feature discovery
Add privacy page
2020-06-07 20:47:28 +08:00
stonegate 62256c7c93 💄 Update episode detail menu bar 2020-06-06 17:05:38 +08:00
stonegate 643ec50b1d modified: README.md 2020-06-06 12:58:54 +08:00
stonegate 3371b1c614 Add mark as listened 2020-06-06 12:51:34 +08:00
stonegate ab6910d9c6 🐛 Bugs fixed 2020-06-06 02:33:47 +08:00
stonegate 137fe58183 🐛 Player text scroll bug
Change filename in download
2020-06-05 01:13:29 +08:00
stonegate b45c7e3a5b Layout setting, supprt one raw view 2020-06-03 20:39:15 +08:00
stonegate e9ba82d5db 🐛 Beter support for small screen. 2020-06-02 22:05:49 +08:00
stonegate 8ec1793843 Change search cursor color 2020-05-26 15:21:14 +08:00
stonegate e7c175fef2 modified: lib/state/subscribe_podcast.dart
Change search to enter to search
2020-05-21 17:15:38 +08:00
stonegate b1a686987d modified: .circleci/config.yml 2020-05-19 15:14:44 +08:00
stonegate 49186c7ffa modified: android/app/build.gradle 2020-05-19 15:00:41 +08:00
stonegate 43c2f0a6c7 modified: .github/workflows/main.yml 2020-05-19 14:46:32 +08:00
stonegate c6978bf2eb modified: .github/workflows/main.yml 2020-05-19 14:36:40 +08:00
stonegate 23a952ad15 modified: android/app/build.gradle 2020-05-19 14:26:03 +08:00
stonegate 4b67f41d0c modified: .github/workflows/main.yml 2020-05-19 14:15:13 +08:00
stonegate 70c01f1f21 modified: .github/workflows/main.yml 2020-05-19 13:59:20 +08:00
stonegate 410c5a1d97 modified: android/app/build.gradle 2020-05-19 13:43:31 +08:00
stonegate 1362ef7cde modified: .github/workflows/main.yml 2020-05-19 13:30:12 +08:00
stonega 1c1ca6d9af
Update main.yml 2020-05-19 13:10:41 +08:00
stonega 389d2d04c6
Update main.yml 2020-05-19 13:10:08 +08:00
stonega 6b3cf47c06
Update main.yml 2020-05-19 13:06:54 +08:00
stonega 6aadc133e4
Create main.yml 2020-05-19 12:50:13 +08:00
stonegate 5271967a8f modified: android/gradle/wrapper/gradle-wrapper.properties 2020-05-19 12:34:00 +08:00
stonegate 58665560b1 modified: android/gradle/wrapper/gradle-wrapper.properties 2020-05-19 12:29:19 +08:00
stonegate 07256fbc7b modified: tool/env.dart 2020-05-19 03:04:04 +08:00
stonegate f5e6308de6 modified: lib/home/home.dart
modified:   lib/util/episodegrid.dart
2020-05-19 02:20:32 +08:00
stonegate d23502ed97 modified: .circleci/config.yml 2020-05-19 01:46:13 +08:00
stonegate 860e2ed626 modified: lib/home/home.dart 2020-05-19 01:32:32 +08:00
stonegate 6ebe9a4a3c Add share clip feature 2020-05-19 01:03:45 +08:00
stonegate 2f9af80c9c Update circleci config 2020-05-16 11:57:49 +08:00
stonegate 0d15fafa27 Bug fixed 2020-05-16 11:14:32 +08:00
stonegate a62eda51c9 Improve splash screen 2020-05-12 09:54:17 +08:00
Stonegate a1a4604f6e Start to build iOS version 2020-05-10 16:56:04 +08:00
stonegate ada48ac9fc Add splash drawable
Improve history page UI
Add recover removed podcast
2020-05-09 23:42:13 +08:00
stonegate 974dd30448 Add intl support 2020-05-09 12:27:05 +08:00
stonegate 40e2d880b5 Replace color picker 2020-05-08 23:22:31 +08:00
stonegate 2e10a0aa94 modified: .circleci/config.yml 2020-05-08 19:44:28 +08:00
stonegate a68d71d346 modified: .circleci/config.yml 2020-05-08 19:43:57 +08:00
stonegate 8ef189626f Bug fix
- subscribe error if episode have none duration
- isolate bug
2020-05-08 19:35:08 +08:00
stonegate 5f75ace725 Change files layout 2020-05-07 00:50:32 +08:00
stonegate 0d82290e33 modified: .circleci/config.yml 2020-05-06 21:17:35 +08:00
stonegate f86652d8a3 modified: .circleci/config.yml 2020-05-06 21:13:40 +08:00
stonegate 8063524ca8 modified: lib/home/playlist.dart 2020-05-06 20:44:11 +08:00
stonegate 006598cb74 Add animation for episodegrid
Fix bug when rss feed do not have image
Fix bug when use stop at end of episode
2020-05-06 20:08:41 +08:00
stonegate 69d2568513 Change home titlebar to scrollable 2020-04-30 01:32:45 +08:00
stonegate a758c2d96d Add cache support 2020-04-28 22:33:50 +08:00
stonegate ce698dd548 Support audio cache 2020-04-28 01:26:33 +08:00
stonegate e8cedbce75 Bug fixed 2020-04-26 13:41:25 +08:00
stonegate d1a9c08815 modified: android/app/build.gradle 2020-04-25 22:08:51 +08:00
stonegate db54bf0bfa Skip at begin
One click to add new episodes to playlist
Improve feedback options
Bugs fixed
2020-04-25 21:50:27 +08:00
stonegate 599fc75647 Change version to 0.2.0 2020-04-24 12:19:56 +08:00
stonegate 60e066d2a9 Change add new episode to playlist icon
Add duration picker initial duration
2020-04-24 01:46:36 +08:00
stonegate 0040513380 Skip at beginning
Add new episode to playlist at one click
2020-04-23 02:10:57 +08:00
stonegate 0a548b4441 Add build notice 2020-04-21 16:41:38 +08:00
stonegate 29018b8c20 Support add by rss link 2020-04-19 03:46:10 +08:00
stonegate c465be2470 modified: README.md 2020-04-18 13:27:43 +08:00
stonegate 1177d18b1a Change import ompl and refresh all to work in isolate
Add speed setting when playing
Add real dark mode
2020-04-18 12:48:02 +08:00
stonegate 3f989ac7b6 Change api key 2020-04-13 23:53:21 +08:00
stonegate fc5f25b210 modified: android/app/build.gradle 2020-04-12 16:11:34 +08:00
stonegate 1ed2ca3ac0 modified: pubspec.yaml 2020-04-12 15:56:46 +08:00
stonegate 88a54d06c2 modified: lib/home/home_groups.dart 2020-04-12 01:59:52 +08:00
stonegate 76dc564dc2 Change version to 0.1.7 2020-04-12 01:25:19 +08:00
stonegate f1e49a2833 Improve sleep timer 2020-04-12 01:23:12 +08:00
stonegate b268728da7 modified: .circleci/config.yml 2020-04-06 21:13:18 +08:00
stonegate 88d9aca89a modified: .circleci/config.yml 2020-04-06 20:45:00 +08:00
stonegate 91f2b69f05 modified: lib/settings/settting.dart 2020-04-06 20:30:44 +08:00
stonegate 84e10061c8 Add intro slider
Fix mini playlist bug
2020-04-06 20:18:08 +08:00
stonegate ce4edb7a2d new file: preview/1585896237809.png 2020-04-03 14:51:58 +08:00
stonegate a99bd7ed39 modified: README.md 2020-04-03 14:49:56 +08:00
stonegate 2aba341569 add preview 2020-04-03 14:36:14 +08:00
stonegate 8f6fab0d0e Add preview 2020-04-03 14:25:04 +08:00
stonegate 2a89a6eaff modified: lib/class/audiostate.dart 2020-04-02 20:36:20 +08:00
stonegate b6fa0be33f modified: lib/home/appbar/about.dart 2020-04-02 18:18:25 +08:00
stonegate 5dc490f83f Bug fixes
Change home group preview grid to 2
2020-04-02 17:52:26 +08:00
stonegate 0a0e0a45f5 modified: lib/class/audiostate.dart 2020-04-01 17:43:25 +08:00
stonegate 15ef69bbab Little change in playlist page 2020-04-01 17:36:45 +08:00
stonegate a1d004aa43 A lot of bug fixed 2020-04-01 00:36:20 +08:00
stonegate 62100085b0 modified: .circleci/config.yml
modified:   lib/home/audioplayer.dart
2020-03-25 23:55:13 +08:00
stonegate 97ec6a59e4 Change player widget UI
Change homepage to nested scroll
2020-03-25 23:33:48 +08:00
stonegate be5de73ddc Add open container for episodegrid 2020-03-23 01:03:53 +08:00
stonegate e249fa100f modified: .circleci/config.yml 2020-03-22 00:30:23 +08:00
stonegate 64dee98523 Back to saty in background
Playlist UI change
2020-03-22 00:14:10 +08:00
stonegate c5fcfd239b modified: lib/home/appbar/popupmenu.dart 2020-03-20 04:14:59 +08:00
stonegate 57bf41114b Export ompli file
Storage management
Syncing setting
2020-03-20 03:58:30 +08:00
stonegate 505215bf0d modified: .circleci/config.yml
modified:   README.md
	modified:   lib/home/audioplayer.dart
2020-03-14 11:48:17 +08:00
stonegate d78a280be8 Merge branch 'master' of https://github.com/stonega/tsacdop 2020-03-14 11:31:15 +08:00
stonegate 60572f25be modified: README.md 2020-03-14 11:27:44 +08:00
stonega ab55520b96
Update README.md 2020-03-14 11:25:45 +08:00
stonega e7bd39bcf0
Update README.md 2020-03-14 11:20:46 +08:00
stonegate cb5b17bba1 Change audio plugin to just_audio
Add storage setting
Add history setting
2020-03-14 11:14:24 +08:00
stonegate f195d62b07 deleted: .vscode/launch.json
deleted:    .vscode/settings.json
	modified:   android/app/src/main/res/drawable/launch_background.xml
	modified:   android/app/src/main/res/drawable/launch_background_night.xml
	deleted:    android/app/src/main/res/drawable/normal_background.xml
	modified:   android/app/src/main/res/values/styles.xml
	modified:   lib/class/audiostate.dart
	modified:   lib/class/importompl.dart
	modified:   lib/class/podcast_group.dart
	modified:   lib/home/appbar/about.dart
	modified:   lib/home/appbar/addpodcast.dart
	modified:   lib/home/appbar/popupmenu.dart
	modified:   lib/home/audioplayer.dart
	modified:   lib/home/home.dart
	modified:   lib/home/homescroll.dart
	modified:   lib/local_storage/key_value_storage.dart
	modified:   lib/local_storage/sqflite_localpodcast.dart
	modified:   lib/main.dart
	modified:   lib/podcasts/podcastgroup.dart
	modified:   lib/podcasts/podcastlist.dart
	modified:   lib/podcasts/podcastmanage.dart
	deleted:    pubspec.lock
	modified:   pubspec.yaml
	android/app/src/main/res/mipmap-hdpi/text_light.png
	android/app/src/main/res/mipmap-mdpi/text_light.png
	android/app/src/main/res/mipmap-xhdpi/text_light.png
	android/app/src/main/res/mipmap-xxhdpi/text_light.png
	android/app/src/main/res/mipmap-xxxhdpi/text_light.png
	android/app/src/main/res/values/colors.xml
	assets/listennotes_light.png
	assets/text_light.png
2020-03-04 00:04:23 +08:00
stonegate a6fc34e7bb modified: .circleci/config.yml
modified:   android/app/build.gradle
	modified:   android/app/src/main/AndroidManifest.xml
	new file:   android/app/src/main/res/drawable/launch_background_night.xml
	new file:   android/app/src/main/res/drawable/normal_background.xml
	new file:   android/app/src/main/res/values-night/styles.xml
	modified:   android/app/src/main/res/values/styles.xml
	new file:   assets/fireside.jpg
	new file:   assets/logo.png
	modified:   lib/class/audiostate.dart
	modified:   lib/class/fireside_data.dart
	modified:   lib/class/podcastlocal.dart
	modified:   lib/class/settingstate.dart
	modified:   lib/episodes/episodedetail.dart
	modified:   lib/episodes/episodedownload.dart
modified:   lib/home/appbar/about.dart
	modified:   lib/home/appbar/addpodcast.dart
	modified:   lib/home/appbar/importompl.dart
	modified:   lib/home/appbar/popupmenu.dart
	modified:   lib/home/audiopanel.dart
	modified:   lib/home/audioplayer.dart
	modified:   lib/home/homescroll.dart
	modified:   lib/home/hometab.dart
	new file:   lib/home/paly_history.dart
	modified:   lib/local_storage/key_value_storage.dart
	modified:   lib/local_storage/sqflite_localpodcast.dart
	modified:   lib/main.dart
	modified:   lib/podcasts/podcastdetail.dart
	modified:   lib/podcasts/podcastgroup.dart
	modified:   lib/podcasts/podcastlist.dart
	modified:   lib/podcasts/podcastmanage.dart
	new file:   lib/settings/settting.dart
	new file:   lib/settings/theme.dart
	new file:   lib/util/colorize.dart
	modified:   lib/util/episodegrid.dart
	modified:   pubspec.lock
	modified:   pubspec.yaml
2020-03-01 20:17:06 +08:00
stonegate 1021f2eea4 modified: lib/class/audiostate.dart
new file:   lib/class/fireside_data.dart
	modified:   lib/episodes/episodedetail.dart
	modified:   lib/home/appbar/addpodcast.dart
	modified:   lib/home/audioplayer.dart
	modified:   lib/local_storage/key_value_storage.dart
	modified:   lib/local_storage/sqflite_localpodcast.dart
	modified:   lib/podcasts/podcastdetail.dart
	modified:   lib/webfeed/domain/atom_feed.dart
	modified:   lib/webfeed/domain/atom_item.dart
	modified:   lib/webfeed/domain/atom_person.dart
	modified:   lib/webfeed/domain/atom_source.dart
	modified:   lib/webfeed/domain/media/community.dart
	modified:   lib/webfeed/domain/media/embed.dart
	modified:   lib/webfeed/domain/media/group.dart
	modified:   lib/webfeed/domain/media/media.dart
	modified:   lib/webfeed/domain/media/scene.dart
	modified:   pubspec.lock
	modified:   pubspec.yaml
2020-02-26 17:54:59 +08:00
stonegate 7caa1f131b modified: .circleci/config.yml 2020-02-25 20:46:44 +08:00
stonegate 6e7f7bd071 modified: lib/class/audiostate.dart
modified:   lib/episodes/episodedetail.dart
	modified:   lib/main.dart
2020-02-25 20:28:48 +08:00
stonegate dca31d1f6d new file: lib/home/audioplayer.dart 2020-02-25 17:58:33 +08:00
stonegate 547aef80e9 modified: lib/class/audiostate.dart
modified:   lib/class/settingstate.dart
	modified:   lib/episodes/episodedetail.dart
	modified:   lib/home/appbar/addpodcast.dart
	deleted:    lib/home/audio_player.dart
	modified:   lib/home/audiopanel.dart
	modified:   lib/home/home.dart
	modified:   lib/home/homescroll.dart
	modified:   lib/local_storage/key_value_storage.dart
	modified:   lib/local_storage/sqflite_localpodcast.dart
	modified:   lib/main.dart
	modified:   lib/podcasts/podcastdetail.dart
	modified:   lib/podcasts/podcastgroup.dart
	modified:   pubspec.lock
	modified:   pubspec.yaml

	lib/home/audioplayer.dart
2020-02-25 17:57:12 +08:00
stonegate d4ebdf769d modified: lib/class/podcastlocal.dart
modified:   lib/home/appbar/addpodcast.dart
	modified:   lib/home/appbar/popupmenu.dart
	modified:   lib/home/homescroll.dart
	modified:   lib/local_storage/sqflite_localpodcast.dart
	modified:   lib/main.dart
	modified:   lib/podcasts/podcastdetail.dart
	modified:   lib/podcasts/podcastgroup.dart
	modified:   lib/util/episodegrid.dart
	modified:   pubspec.lock
	modified:   pubspec.yaml
Improved UI of podcast page.
2020-02-23 21:20:07 +08:00
stonegate 7ba0552717 modified: lib/class/settingstate.dart
modified:   lib/episodes/episodedetail.dart
	modified:   lib/home/appbar/about.dart
modified:   lib/home/appbar/addpodcast.dart
	modified:   lib/home/appbar/importompl.dart
	modified:   lib/home/appbar/popupmenu.dart
	modified:   lib/home/audio_player.dart
	modified:   lib/home/audiopanel.dart
	modified:   lib/home/homescroll.dart
	modified:   lib/home/hometab.dart
	modified:   lib/local_storage/key_value_storage.dart
	modified:   lib/main.dart
	modified:   lib/podcasts/podcastdetail.dart
	modified:   lib/podcasts/podcastgroup.dart
	modified:   lib/podcasts/podcastlist.dart
	modified:   lib/podcasts/podcastmanage.dart
	modified:   lib/util/episodegrid.dart
2020-02-22 20:25:06 +08:00
stonegate 9d4bbc895a modified: .circleci/config.yml
modified:   lib/class/episodebrief.dart
	modified:   lib/class/podcast_group.dart
	deleted:    lib/class/podcastrss.dart
	deleted:    lib/class/podcastrss.g.dart
	deleted:    lib/class/podcasts.dart
	deleted:    lib/class/podcasts.g.dart
	modified:   lib/episodes/episodedetail.dart
	modified:   lib/home/appbar/about.dart
	modified:   lib/home/appbar/addpodcast.dart
	modified:   lib/home/appbar/popupmenu.dart
	modified:   lib/home/homescroll.dart
	modified:   lib/local_storage/sqflite_localpodcast.dart
	modified:   lib/main.dart
	modified:   lib/podcasts/podcastdetail.dart
	modified:   lib/podcasts/podcastgroup.dart
	modified:   lib/podcasts/podcastlist.dart
	modified:   lib/podcasts/podcastmanage.dart
	modified:   lib/util/episodegrid.dart
	modified:   lib/webfeed/domain/rss_itunes.dart
	modified:   pubspec.lock
	modified:   pubspec.yaml
2020-02-21 23:04:02 +08:00
stonegate 69dfc393ba modified: lib/class/audiostate.dart
modified:   lib/class/episodebrief.dart
	modified:   lib/class/importompl.dart
	modified:   lib/class/podcast_group.dart
	modified:   lib/class/podcastlocal.dart
	modified:   lib/episodes/episodedetail.dart
	modified:   lib/episodes/episodedownload.dart
	modified:   lib/home/appbar/addpodcast.dart
	modified:   lib/home/appbar/popupmenu.dart
	modified:   lib/home/audio_player.dart
	modified:   lib/home/homescroll.dart
	modified:   lib/local_storage/sqflite_localpodcast.dart
	modified:   lib/main.dart
	modified:   lib/podcasts/podcastdetail.dart
	modified:   lib/podcasts/podcastgroup.dart
	modified:   lib/podcasts/podcastlist.dart
	modified:   lib/util/episodegrid.dart
2020-02-20 23:44:42 +08:00
stonegate 16567a7199 new file: lib/class/podcast_group.dart
modified:   lib/class/podcastlocal.dart
	modified:   lib/class/settingstate.dart
	modified:   lib/episodes/episodedetail.dart
	modified:   lib/episodes/episodedownload.dart
	modified:   lib/home/appbar/addpodcast.dart
	modified:   lib/home/appbar/popupmenu.dart
	modified:   lib/home/audio_player.dart
	modified:   lib/home/home.dart
	modified:   lib/home/homescroll.dart
	modified:   lib/home/hometab.dart
	new file:   lib/local_storage/key_value_storage.dart
	renamed:    lib/class/sqflite_localpodcast.dart -> lib/local_storage/sqflite_localpodcast.dart
	modified:   lib/main.dart
	modified:   lib/podcasts/podcastdetail.dart
	new file:   lib/podcasts/podcastgroup.dart
	modified:   lib/podcasts/podcastlist.dart
	modified:   lib/podcasts/podcastmanage.dart
	modified:   lib/util/episodegrid.dart
	modified:   lib/webfeed/domain/rss_item.dart
	modified:   lib/webfeed/domain/rss_itunes.dart
	modified:   pubspec.lock
	modified:   pubspec.yaml
Add podcast group support
Manage group with provider
2020-02-20 17:09:21 +08:00
stonegate d3efce463c new file: lib/class/settingstate.dart
modified:   lib/class/sqflite_localpodcast.dart
	modified:   lib/episodes/episodedetail.dart
	modified:   lib/home/appbar/importompl.dart
	modified:   lib/home/appbar/popupmenu.dart
	modified:   lib/home/home.dart
	modified:   lib/home/homescroll.dart
	modified:   lib/main.dart
	modified:   lib/podcasts/podcastlist.dart
	new file:   lib/podcasts/podcastmanage.dart
	modified:   lib/util/episodegrid.dart
	modified:   pubspec.lock
	modified:   pubspec.yaml
Add: reorder podcasts
2020-02-16 16:25:53 +08:00
stonegate 3200eeacd7 modified: lib/home/audio_player.dart
modified:   lib/home/homescroll.dart
	modified:   lib/podcasts/podcastlist.dart
	modified:   lib/util/episodegrid.dart
Fix UI error on little screen
2020-02-15 15:53:26 +08:00
stonegate 0cc9a7f690 modified: lib/episodes/episodedetail.dart
modified:   lib/episodes/episodedownload.dart
	modified:   lib/home/home.dart
	modified:   lib/main.dart
Add favorite effect
2020-02-15 14:39:42 +08:00
stonegate 5d43a7e641 modified: lib/class/sqflite_localpodcast.dart
modified:   lib/episodes/episodedetail.dart
	modified:   lib/home/appbar/addpodcast.dart
	modified:   lib/home/audio_player.dart
	modified:   lib/home/audiopanel.dart
	modified:   lib/home/home.dart
	modified:   lib/util/pageroute.dart
2020-02-14 21:22:35 +08:00
stonegate 4566ab4400 modified: .circleci/config.yml 2020-02-14 19:54:24 +08:00
stonegate 05d2390b01 modified: lib/home/audio_player.dart
modified:   lib/home/audiopanel.dart
	modified:   lib/home/home.dart
	modified:   lib/home/homescroll.dart
Improved audio widget
2020-02-14 19:52:03 +08:00
stonegate 28595bc8da new file: lib/home/audiopanel.dart 2020-02-14 14:32:21 +08:00
stonegate 4957770e0c modified: lib/home/appbar/importompl.dart 2020-02-14 14:28:48 +08:00
stonegate b868307c0d modified: README.md
modified:   lib/class/audiostate.dart
	modified:   lib/episodes/episodedetail.dart
	modified:   lib/home/appbar/addpodcast.dart
	modified:   lib/home/audio_player.dart
	modified:   lib/home/home.dart
	modified:   pubspec.lock
	modified:   pubspec.yaml
2020-02-14 14:27:40 +08:00
stonegate a3cfb5ca7e modified: .circleci/config.yml 2020-02-13 14:47:09 +08:00
stonegate c5af92bf31 modified: .circleci/config.yml 2020-02-13 14:35:30 +08:00
stonegate 07113542b2 modified: .circleci/config.yml 2020-02-13 14:26:38 +08:00
stonegate 6f39e5c746 modified: .circleci/config.yml
modified:   android/app/build.gradle
2020-02-13 14:16:10 +08:00
stonegate 455d37b727 modified: lib/home/appbar/addpodcast.dart
modified:   lib/home/appbar/popupmenu.dart
	modified:   lib/home/audio_player.dart
	modified:   lib/home/home.dart
	modified:   test/widget_test.dart
2020-02-13 13:09:22 +08:00
stonegate 59d208bb03 renamed: .circleci/config.yaml -> .circleci/config.yml 2020-02-13 11:21:20 +08:00
stonegate 024c25754a new file: .circleci/config.yaml 2020-02-13 11:18:56 +08:00
stonegate 0d1d8a9222 modified: lib/episodes/episodedetail.dart
modified:   lib/episodes/episodedownload.dart
	modified:   lib/podcasts/podcastdetail.dart
Added bottom menu ripple
2020-02-13 10:51:46 +08:00
stonegate a123d1dfa7 modified: lib/episodes/episodedetail.dart
modified:   lib/home/appbar/addpodcast.dart
	modified:   lib/home/audio_player.dart
	modified:   lib/podcasts/podcastlist.dart
	modified:   lib/util/episodegrid.dart
2020-02-13 00:10:03 +08:00
stonegate 73fc6135a9 modified: README.md
modified:   lib/episodes/episodedetail.dart
	modified:   lib/home/appbar/importompl.dart
	modified:   lib/home/homescroll.dart
	modified:   lib/podcasts/podcastdetail.dart
	modified:   lib/podcasts/podcastlist.dart
	modified:   lib/util/episodegrid.dart
Change networkcachedimage to localimage
2020-02-12 23:16:46 +08:00
stonegate 55bbb1051b deleted: assets/listennote.png
new file:   assets/listennotes.png
	new file:   assets/text.png
	modified:   lib/home/appbar/addpodcast.dart
Change appbar title to logo image.
2020-02-12 21:54:46 +08:00
stonegate da06f6acc0 modified: README.md 2020-02-12 21:18:20 +08:00
stonegate 38aae72ea8 Merge branch 'master' of https://github.com/stonega/tsacdop 2020-02-12 21:11:05 +08:00
stonegate b31f9d532f Add logo
modified:   README.md
2020-02-12 21:09:03 +08:00
stonega d3e34f03ae
Create LICENSE 2020-02-12 21:07:52 +08:00
stonegate b5730b5066 new file: android/app/src/main/res/mipmap-hdpi/text.png
new file:   android/app/src/main/res/mipmap-mdpi/text.png
	new file:   android/app/src/main/res/mipmap-xhdpi/text.png
	new file:   android/app/src/main/res/mipmap-xxhdpi/text.png
	new file:   android/app/src/main/res/mipmap-xxxhdpi/text.png
	modified:   pubspec.yaml
2020-02-12 20:44:41 +08:00
464 changed files with 53974 additions and 7016 deletions

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/*

78
.gitignore vendored
View File

@ -1,37 +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/
/build/
# 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

6
.vscode/launch.json vendored
View File

@ -7,7 +7,11 @@
{
"name": "Flutter",
"request": "launch",
"type": "dart"
"type": "dart",
"args": [
"--flavor",
"play"
]
}
]
}

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

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

433
CHANGELOG.md Normal file
View File

@ -0,0 +1,433 @@
# 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.

674
LICENSE Normal file
View File

@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.

217
README.md
View File

@ -1,22 +1,195 @@
# Tsacdop
Enjoy podcasts with tsacdop!
Tsacdop is a podcasts player developed with flutter.
The development is still on early stage.
Thanks for flutter team and all involved plugin developers, especially [webfeed](https://github.com/witochandra/webfeed) and [audiofileplayer](https://github.com/google/flutter.plugins/tree/master/packages/audiofileplayer/).
The podcasts search engine is powered by [ListenNotes](https://listennotes.com).
## Getting Started
This project is a starting point for a Flutter application.
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.
[![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,2 +1,13 @@
connection.project.dir=
eclipse.preferences.version=1
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-10/"/>
<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,2 +1,13 @@
connection.project.dir=..
eclipse.preferences.version=1
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

@ -0,0 +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

View File

@ -1,80 +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 28
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 16
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}
flutter {
source '../..'
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}
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,33 +1,33 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.stonegate.tsacdop">
<!-- 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"/>
<application android:name="io.flutter.app.FlutterApplication" android:label="Tsacdop" android:icon="@mipmap/ic_launcher" 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">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name="com.google.flutter.plugins.audiofileplayer.AudiofileplayerService">
<intent-filter>
<action android:name="android.media.browse.MediaBrowserService" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</service>
<receiver android:name="androidx.media.session.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

@ -0,0 +1,45 @@
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,12 +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.plugins.GeneratedPluginRegistrant
class MainActivity: FlutterActivity() {
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
}
}
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);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 559 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 909 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 847 B

After

Width:  |  Height:  |  Size: 672 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 955 B

After

Width:  |  Height:  |  Size: 729 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 882 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 206 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 390 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 666 B

After

Width:  |  Height:  |  Size: 592 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 492 B

After

Width:  |  Height:  |  Size: 472 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 527 B

After

Width:  |  Height:  |  Size: 502 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 649 B

After

Width:  |  Height:  |  Size: 578 B

View File

@ -0,0 +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>
</layer-list>

View File

@ -0,0 +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>-->
</layer-list>

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 593 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 966 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 989 B

After

Width:  |  Height:  |  Size: 692 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 771 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 918 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 341 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 415 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 659 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 673 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 550 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 460 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 450 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 865 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 435 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 416 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 531 B

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