Compare commits

...

178 Commits

Author SHA1 Message Date
mergify[bot] 2232d07459
Merge pull request #105 from 0x61nas/dependabot/github_actions/actions/cache-4.0.0
Bump actions/cache from 3.3.2 to 4.0.0
2024-01-21 11:44:48 +00:00
mergify[bot] a3717dc9db
Merge pull request #106 from 0x61nas/dependabot/github_actions/actions/upload-artifact-4.2.0
Bump actions/upload-artifact from 3.1.3 to 4.2.0
2024-01-21 11:44:17 +00:00
mergify[bot] 6cd67f5391
Merge pull request #107 from 0x61nas/dependabot/gradle/org.jetbrains.intellij-1.17.0
Bump org.jetbrains.intellij from 1.16.0 to 1.17.0
2024-01-21 11:43:44 +00:00
dependabot[bot] 1ff58bff5b
Bump org.jetbrains.intellij from 1.16.0 to 1.17.0
Bumps org.jetbrains.intellij from 1.16.0 to 1.17.0.

---
updated-dependencies:
- dependency-name: org.jetbrains.intellij
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-18 21:41:36 +00:00
dependabot[bot] 7b1d8c5cb4
Bump actions/upload-artifact from 3.1.3 to 4.2.0
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.1.3 to 4.2.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v3.1.3...v4.2.0)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-18 21:04:46 +00:00
dependabot[bot] 468e273bfe
Bump actions/cache from 3.3.2 to 4.0.0
Bumps [actions/cache](https://github.com/actions/cache) from 3.3.2 to 4.0.0.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3.3.2...v4.0.0)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-17 21:47:13 +00:00
Anas Elgarhy 2c1c60e925
chore: fix typo 2023-11-19 17:23:58 +02:00
mergify[bot] 32dda8645a
Merge pull request #82 from 0x61nas/dependabot/github_actions/actions/cache-3.3.2
Bump actions/cache from 3.3.1 to 3.3.2
2023-11-04 09:46:13 +00:00
mergify[bot] 80e87844b3
Merge pull request #71 from 0x61nas/renovate/org.jetbrains.changelog-2.x
Update plugin org.jetbrains.changelog to v2.2.0
2023-11-04 09:45:10 +00:00
mergify[bot] 4676d0cc48
Merge pull request #83 from 0x61nas/renovate/actions-cache-3.x
Update actions/cache action to v3.3.2
2023-11-04 09:43:13 +00:00
mergify[bot] bf5862ede8
Merge pull request #86 from 0x61nas/renovate/gradle-8.x
Update dependency gradle to v8.4
2023-11-04 09:42:45 +00:00
Anas cec54f9b2e
Merge pull request #90 from 0x61nas/dependabot/gradle/com.miglayout-miglayout-swing-11.2
Bump com.miglayout:miglayout-swing from 11.1 to 11.2
2023-11-04 11:41:21 +02:00
mergify[bot] e4ba6f2518
Merge pull request #85 from 0x61nas/dependabot/gradle/org.projectlombok-lombok-1.18.30
Bump org.projectlombok:lombok from 1.18.28 to 1.18.30
2023-11-04 09:40:11 +00:00
renovate[bot] c7960f0bfd
Update plugin org.jetbrains.changelog to v2.2.0 2023-11-04 09:39:35 +00:00
mergify[bot] 19f6753d29
Merge pull request #88 from 0x61nas/dependabot/gradle/org.jetbrains.intellij-1.16.0
Bump org.jetbrains.intellij from 1.15.0 to 1.16.0
2023-11-04 09:39:21 +00:00
dependabot[bot] bd1734fb4d
Bump com.miglayout:miglayout-swing from 11.1 to 11.2
Bumps [com.miglayout:miglayout-swing](https://github.com/mikaelgrev/miglayout) from 11.1 to 11.2.
- [Release notes](https://github.com/mikaelgrev/miglayout/releases)
- [Changelog](https://github.com/mikaelgrev/miglayout/blob/master/release.txt)
- [Commits](https://github.com/mikaelgrev/miglayout/compare/v11.1...v11.2)

---
updated-dependencies:
- dependency-name: com.miglayout:miglayout-swing
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-04 09:38:14 +00:00
mergify[bot] 73fcd6b31a
Merge pull request #91 from 0x61nas/renovate/com.github.anas-elgarhy-alquran-cloud-api-0.x
Update dependency com.github.anas-elgarhy:alquran-cloud-api to v0.4.5
2023-11-04 09:37:52 +00:00
renovate[bot] 595a1b2449
Update dependency com.github.anas-elgarhy:alquran-cloud-api to v0.4.5 2023-11-04 09:04:11 +00:00
dependabot[bot] 6bf78f4148
Bump org.jetbrains.intellij from 1.15.0 to 1.16.0
Bumps org.jetbrains.intellij from 1.15.0 to 1.16.0.

---
updated-dependencies:
- dependency-name: org.jetbrains.intellij
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-06 21:08:41 +00:00
renovate[bot] 83f5c40ae8
Update dependency gradle to v8.4 2023-10-04 23:11:50 +00:00
dependabot[bot] cf4da83962
Bump org.projectlombok:lombok from 1.18.28 to 1.18.30
Bumps [org.projectlombok:lombok](https://github.com/projectlombok/lombok) from 1.18.28 to 1.18.30.
- [Release notes](https://github.com/projectlombok/lombok/releases)
- [Changelog](https://github.com/projectlombok/lombok/blob/master/doc/changelog.markdown)
- [Commits](https://github.com/projectlombok/lombok/compare/v1.18.28...v1.18.30)

---
updated-dependencies:
- dependency-name: org.projectlombok:lombok
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-20 21:17:21 +00:00
renovate[bot] b7415a7db2
Update actions/cache action to v3.3.2 2023-09-08 17:31:30 +00:00
dependabot[bot] f28c4ae512
Bump actions/cache from 3.3.1 to 3.3.2
Bumps [actions/cache](https://github.com/actions/cache) from 3.3.1 to 3.3.2.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3.3.1...v3.3.2)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-07 21:53:51 +00:00
mergify[bot] 6f18351a39
Merge pull request #81 from 0x61nas/renovate/actions-upload-artifact-3.x
Update actions/upload-artifact action to v3.1.3
2023-09-06 20:52:44 +00:00
renovate[bot] e636d23cc6
Update actions/upload-artifact action to v3.1.3 2023-09-06 20:51:07 +00:00
mergify[bot] 77a9d375f0
Merge pull request #80 from 0x61nas/dependabot/github_actions/actions/checkout-4
Bump actions/checkout from 3 to 4
2023-09-06 20:50:54 +00:00
dependabot[bot] 1b66c7191d
Bump actions/checkout from 3 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-04 21:38:06 +00:00
mergify[bot] 73c14a412b
Merge pull request #70 from 0x61nas/renovate/gradle-8.x
Update dependency gradle to v8.3
2023-08-22 23:04:00 +00:00
mergify[bot] a065de5932
Merge pull request #64 from 0x61nas/renovate/org.jetbrains.intellij-1.x
Update plugin org.jetbrains.intellij to v1.15.0
2023-08-22 23:02:24 +00:00
renovate[bot] 148268704f
Update plugin org.jetbrains.intellij to v1.15.0 2023-08-22 23:01:00 +00:00
mergify[bot] 8e7a83a0d7
Merge pull request #74 from 0x61nas/dependabot/gradle/org.jetbrains.changelog-2.1.2
Bump org.jetbrains.changelog from 2.1.0 to 2.1.2
2023-08-22 23:00:47 +00:00
mergify[bot] b8453d362e
Merge pull request #76 from 0x61nas/dependabot/github_actions/gradle/wrapper-validation-action-1.1.0
Bump gradle/wrapper-validation-action from 1.0.6 to 1.1.0
2023-08-22 22:59:23 +00:00
Anas 4d67f7b2dc
Merge pull request #77 from 0x61nas/revert-61-update-the-details-dialog
Revert "Add the tafseer/translation text box to the ayah details dialog and make the user able to change the player edition on the fly"
2023-08-23 01:58:21 +03:00
Anas 0e369b93fd
Revert "Add the tafseer/translation text box to the ayah details dialog and make the user able to change the player edition on the fly" 2023-08-23 01:57:19 +03:00
renovate[bot] 70bf3738df
Update dependency gradle to v8.3 2023-08-17 10:32:28 +00:00
dependabot[bot] 7476c245c8
Bump gradle/wrapper-validation-action from 1.0.6 to 1.1.0
Bumps [gradle/wrapper-validation-action](https://github.com/gradle/wrapper-validation-action) from 1.0.6 to 1.1.0.
- [Release notes](https://github.com/gradle/wrapper-validation-action/releases)
- [Commits](https://github.com/gradle/wrapper-validation-action/compare/v1.0.6...v1.1.0)

---
updated-dependencies:
- dependency-name: gradle/wrapper-validation-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-21 21:56:01 +00:00
dependabot[bot] eaae0cef34
Bump org.jetbrains.changelog from 2.1.0 to 2.1.2
Bumps org.jetbrains.changelog from 2.1.0 to 2.1.2.

---
updated-dependencies:
- dependency-name: org.jetbrains.changelog
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-10 21:34:57 +00:00
mergify[bot] 739052b624
Merge pull request #66 from anas-elgarhy/dependabot/gradle/org.jetbrains.intellij-1.14.0
Bump org.jetbrains.intellij from 1.13.3 to 1.14.0
2023-06-04 09:16:07 +00:00
mergify[bot] 54ad909507
Merge pull request #67 from anas-elgarhy/dependabot/gradle/com.github.anas-elgarhy-alquran-cloud-api-0.4.4
Bump com.github.anas-elgarhy:alquran-cloud-api from 0.4.3 to 0.4.4
2023-06-04 09:15:23 +00:00
dependabot[bot] e402f0468c
Bump org.jetbrains.intellij from 1.13.3 to 1.14.0
Bumps org.jetbrains.intellij from 1.13.3 to 1.14.0.

---
updated-dependencies:
- dependency-name: org.jetbrains.intellij
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-04 09:14:45 +00:00
mergify[bot] 61e4650672
Merge pull request #63 from anas-elgarhy/renovate/org.jetbrains.changelog-2.x
Update plugin org.jetbrains.changelog to v2.1.0
2023-06-04 09:14:11 +00:00
dependabot[bot] b1fbe86893
Bump com.github.anas-elgarhy:alquran-cloud-api from 0.4.3 to 0.4.4
Bumps [com.github.anas-elgarhy:alquran-cloud-api](https://github.com/anas-elgarhy/alquran-cloud-api) from 0.4.3 to 0.4.4.
- [Release notes](https://github.com/anas-elgarhy/alquran-cloud-api/releases)
- [Commits](https://github.com/anas-elgarhy/alquran-cloud-api/compare/0.4.3...0.4.4)

---
updated-dependencies:
- dependency-name: com.github.anas-elgarhy:alquran-cloud-api
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-02 22:01:43 +00:00
renovate[bot] d1e218c981
Update plugin org.jetbrains.changelog to v2.1.0 2023-06-02 14:55:45 +00:00
Anas Elgarhy 74e7c74bab
[doc/changelog] Record the #61 pr changes 2023-05-26 00:08:21 +03:00
Anas Elgarhy 1cac0188fc
Merge pull request #61 from anas-elgarhy/update-the-details-dialog
Add the tafseer/translation text box to the ayah details dialog and make the user able to change the player edition on the fly
2023-05-25 23:56:01 +03:00
Anas Elgarhy 5920e1bc08
[fix/typo] Fix the `tafseer` word typos 2023-05-25 23:54:58 +03:00
Anas Elgarhy e8a0dd8ed6
[fix/typo] Fix the `updateAyahDetails` method name 2023-05-25 23:33:33 +03:00
Anas Elgarhy 39c5978d0f
[fix] Fix the editions sel method for combo boxes models setup 2023-05-25 23:31:19 +03:00
Anas Elgarhy 5cf3890c02
[update/ui] Update the details dialog size and return it to be unresizable 2023-05-25 23:15:15 +03:00
Anas Elgarhy c213150c49
[fix/ui] Fix the combo boxes size 2023-05-25 23:04:41 +03:00
Anas Elgarhy c91af211de
[fix] Fix the initialization issue 2023-05-25 23:02:55 +03:00
Anas Elgarhy 48de076872
[new] Implement the tafser and translation functonalty 2023-05-25 22:52:35 +03:00
Anas Elgarhy f183a2d5e3
[new/ui] Add the Tafser text area in the details dialog 2023-05-25 20:30:01 +03:00
mergify[bot] 0102c729b3
Merge pull request #60 from anas-elgarhy/renovate/org.projectlombok-lombok-1.x
Update dependency org.projectlombok:lombok to v1.18.28
2023-05-25 11:02:12 +00:00
renovate[bot] 51ffdee123
Update dependency org.projectlombok:lombok to v1.18.28 2023-05-24 23:26:25 +00:00
Anas Elgarhy 0053f4ba72
[doc] Update the readme 2023-05-25 00:36:22 +03:00
Anas Elgarhy 90746a99b5
[deploy] Update the change log 2023-05-18 13:39:25 +03:00
Anas Elgarhy db571bcc9b
[fix/update] Fix the plugin icon url in the patched `plugin.xml` and update the `publish` task 2023-05-18 13:31:34 +03:00
Anas Elgarhy 954dfabbdf
[deploy] Update the change log 2023-05-18 13:28:08 +03:00
Anas Elgarhy 51cd38d3a3
[deploy] Bumb the version 2023-05-18 13:20:46 +03:00
mergify[bot] 906f17954c
Merge pull request #43 from anas-elgarhy/renovate/gradle-8.x
Update dependency gradle to v8
2023-05-18 09:45:16 +00:00
mergify[bot] e58567823b
Merge pull request #59 from anas-elgarhy/dependabot/gradle/com.github.anas-elgarhy-alquran-cloud-api-0.4.3
Bump com.github.anas-elgarhy:alquran-cloud-api from v0.4.2-v1 to 0.4.3
2023-05-18 09:42:35 +00:00
dependabot[bot] ca19b75c54
Bump com.github.anas-elgarhy:alquran-cloud-api from v0.4.2-v1 to 0.4.3
Bumps [com.github.anas-elgarhy:alquran-cloud-api](https://github.com/anas-elgarhy/alquran-cloud-api) from v0.4.2-v1 to 0.4.3.
- [Release notes](https://github.com/anas-elgarhy/alquran-cloud-api/releases)
- [Commits](https://github.com/anas-elgarhy/alquran-cloud-api/compare/v0.4.2-v1...0.4.3)

---
updated-dependencies:
- dependency-name: com.github.anas-elgarhy:alquran-cloud-api
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-17 22:04:15 +00:00
renovate[bot] d69dc9885d
Update dependency gradle to v8 2023-04-21 15:34:50 +00:00
mergify[bot] de06c19404
Merge pull request #56 from anas-elgarhy/dependabot/gradle/com.miglayout-miglayout-swing-11.1
Bump com.miglayout:miglayout-swing from 11.0 to 11.1
2023-04-20 08:51:56 +00:00
dependabot[bot] 4c972719f8
Bump com.miglayout:miglayout-swing from 11.0 to 11.1
Bumps [com.miglayout:miglayout-swing](https://github.com/mikaelgrev/miglayout) from 11.0 to 11.1.
- [Release notes](https://github.com/mikaelgrev/miglayout/releases)
- [Changelog](https://github.com/mikaelgrev/miglayout/blob/master/release.txt)
- [Commits](https://github.com/mikaelgrev/miglayout/compare/V11.0...v11.1)

---
updated-dependencies:
- dependency-name: com.miglayout:miglayout-swing
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-10 22:10:59 +00:00
mergify[bot] 79cf2651ff
Merge pull request #52 from anas-elgarhy/dependabot/github_actions/actions/cache-3.3.1
Bump actions/cache from 3.2.6 to 3.3.1
2023-03-31 02:28:42 +00:00
mergify[bot] 388e4bf0fa
Merge pull request #54 from anas-elgarhy/dependabot/gradle/org.jetbrains.intellij-1.13.3
Bump org.jetbrains.intellij from 1.13.2 to 1.13.3
2023-03-31 02:28:03 +00:00
dependabot[bot] faeba294cc
Bump org.jetbrains.intellij from 1.13.2 to 1.13.3
Bumps org.jetbrains.intellij from 1.13.2 to 1.13.3.

---
updated-dependencies:
- dependency-name: org.jetbrains.intellij
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-29 22:05:32 +00:00
dependabot[bot] ea9f4cb033
Bump actions/cache from 3.2.6 to 3.3.1
Bumps [actions/cache](https://github.com/actions/cache) from 3.2.6 to 3.3.1.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3.2.6...v3.3.1)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-13 22:31:06 +00:00
mergify[bot] c219b8856b
Merge pull request #51 from anas-elgarhy/dependabot/gradle/org.jetbrains.intellij-1.13.2
Bump org.jetbrains.intellij from 1.13.1 to 1.13.2
2023-03-11 08:50:58 +00:00
dependabot[bot] c0188d0e4c
Bump org.jetbrains.intellij from 1.13.1 to 1.13.2
Bumps org.jetbrains.intellij from 1.13.1 to 1.13.2.

---
updated-dependencies:
- dependency-name: org.jetbrains.intellij
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-10 22:06:20 +00:00
mergify[bot] 08d7ca3fe0
Merge pull request #49 from anas-elgarhy/dependabot/gradle/org.jetbrains.intellij-1.13.1
Bump org.jetbrains.intellij from 1.13.0 to 1.13.1
2023-03-04 15:21:39 +00:00
mergify[bot] ee80c8eb3c
Merge pull request #45 from anas-elgarhy/dependabot/github_actions/gradle/wrapper-validation-action-1.0.6
Bump gradle/wrapper-validation-action from 1.0.5 to 1.0.6
2023-03-04 15:19:57 +00:00
mergify[bot] 811507bbea
Merge pull request #47 from anas-elgarhy/dependabot/github_actions/actions/cache-3.2.6
Bump actions/cache from 3.2.5 to 3.2.6
2023-03-04 15:19:07 +00:00
dependabot[bot] 1b57e6cbbf
Bump org.jetbrains.intellij from 1.13.0 to 1.13.1
Bumps org.jetbrains.intellij from 1.13.0 to 1.13.1.

---
updated-dependencies:
- dependency-name: org.jetbrains.intellij
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-02 22:27:43 +00:00
dependabot[bot] 262efa2860
Bump actions/cache from 3.2.5 to 3.2.6
Bumps [actions/cache](https://github.com/actions/cache) from 3.2.5 to 3.2.6.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3.2.5...v3.2.6)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-23 22:23:51 +00:00
dependabot[bot] dfc34e7d2a
Bump gradle/wrapper-validation-action from 1.0.5 to 1.0.6
Bumps [gradle/wrapper-validation-action](https://github.com/gradle/wrapper-validation-action) from 1.0.5 to 1.0.6.
- [Release notes](https://github.com/gradle/wrapper-validation-action/releases)
- [Commits](https://github.com/gradle/wrapper-validation-action/compare/v1.0.5...v1.0.6)

---
updated-dependencies:
- dependency-name: gradle/wrapper-validation-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-20 22:25:41 +00:00
mergify[bot] b8c323bcab
Merge pull request #40 from anas-elgarhy/dependabot/github_actions/actions/cache-3.2.5
Bump actions/cache from 3.2.4 to 3.2.5
2023-02-15 14:58:32 +00:00
mergify[bot] b0b1191846
Merge pull request #41 from anas-elgarhy/dependabot/gradle/org.jetbrains.intellij-1.13.0
Bump org.jetbrains.intellij from 1.12.0 to 1.13.0
2023-02-15 14:55:50 +00:00
mergify[bot] c617917f51
Merge pull request #38 from anas-elgarhy/dependabot/gradle/com.github.anas-elgarhy-alquran-cloud-api-v0.4.2-v1
Bump com.github.anas-elgarhy:alquran-cloud-api from 0.4.1-v1 to v0.4.2-v1
2023-02-15 14:53:55 +00:00
dependabot[bot] a461c40ad3
Bump org.jetbrains.intellij from 1.12.0 to 1.13.0
Bumps org.jetbrains.intellij from 1.12.0 to 1.13.0.

---
updated-dependencies:
- dependency-name: org.jetbrains.intellij
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-10 22:35:36 +00:00
dependabot[bot] c75173dde5
Bump actions/cache from 3.2.4 to 3.2.5
Bumps [actions/cache](https://github.com/actions/cache) from 3.2.4 to 3.2.5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3.2.4...v3.2.5)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-10 22:35:33 +00:00
dependabot[bot] bb41ee1cf5
Bump com.github.anas-elgarhy:alquran-cloud-api
Bumps [com.github.anas-elgarhy:alquran-cloud-api](https://github.com/anas-elgarhy/alquran-cloud-api) from 0.4.1-v1 to v0.4.2-v1.
- [Release notes](https://github.com/anas-elgarhy/alquran-cloud-api/releases)
- [Commits](https://github.com/anas-elgarhy/alquran-cloud-api/compare/0.4.1-v1...v0.4.2-v1)

---
updated-dependencies:
- dependency-name: com.github.anas-elgarhy:alquran-cloud-api
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-09 22:37:20 +00:00
mergify[bot] ee58c9be0d
Merge pull request #36 from anas-elgarhy/renovate/org.projectlombok-lombok-1.x
fix(deps): update dependency org.projectlombok:lombok to v1.18.26
2023-02-03 10:04:55 +00:00
renovate[bot] 96f08c2304
fix(deps): update dependency org.projectlombok:lombok to v1.18.26 2023-02-03 04:09:45 +00:00
Anas Elgarhy 504b4bca5a
Merge pull request #35 from anas-elgarhy/dependabot/github_actions/actions/cache-3.2.4
Bump actions/cache from 3.2.3 to 3.2.4
2023-01-31 13:05:53 +02:00
dependabot[bot] 8b236c07e0
Bump actions/cache from 3.2.3 to 3.2.4
Bumps [actions/cache](https://github.com/actions/cache) from 3.2.3 to 3.2.4.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3.2.3...v3.2.4)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-30 21:36:39 +00:00
mergify[bot] bf536cb887
Merge pull request #30 from anas-elgarhy/renovate/configure
Configure Renovate
2023-01-28 22:11:48 +00:00
Anas Elgarhy 6117d40545
Merge pull request #31 from anas-elgarhy/mergify/anas-elgarhy/config-update
ci(Mergify): configuration update
2023-01-29 00:11:13 +02:00
Anas Elgarhy 59f111b659 ci(Mergify): configuration update
Signed-off-by: Anas Elgarhy <anas.elgarhy.dev@gmail.com>
2023-01-28 23:58:17 +02:00
renovate[bot] c634952272
Add renovate.json 2023-01-28 21:17:09 +00:00
Anas Elgarhy 6e8c0b8977
Merge pull request #28 from anas-elgarhy/imgbot
[ImgBot] Optimize images
2023-01-15 21:44:53 +02:00
ImgBotApp 9b41f071e2
[ImgBot] Optimize images
*Total -- 74.99kb -> 60.36kb (19.51%)

/screenshots/notification_1.0.0.png -- 13.56kb -> 10.40kb (23.28%)
/screenshots/ayah-details_1.0.0.png -- 15.96kb -> 12.37kb (22.51%)
/screenshots/settings_1.0.0.png -- 45.48kb -> 37.60kb (17.33%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
2023-01-15 19:17:49 +00:00
Anas Elgarhy bad8503f7a
Merge pull request #27 from anas-elgarhy/create-editorconfig
Create the base for .editorconfig
2023-01-15 17:37:40 +02:00
Anas Elgarhy 3e1e119bd0
Create the base for .editorconfig 2023-01-15 17:35:40 +02:00
Anas Elgarhy aa7a208196
Merge pull request #26 from anas-elgarhy/update-screenshots
Update the screenshots :D
2023-01-15 17:20:48 +02:00
Anas Elgarhy 912a2022e7
Update the screenshots :D 2023-01-15 17:18:29 +02:00
Anas Elgarhy 283cc61d3e
Add the upgrade the dependencies item to the 1.0.0 release 2023-01-15 17:05:30 +02:00
Anas Elgarhy 7e29b52def
Merge pull request #25 from anas-elgarhy/update-changelog
update changelog
2023-01-15 17:02:21 +02:00
Anas Elgarhy 87ba3ed3d0
Update the 1.0.0 release date 2023-01-15 16:58:55 +02:00
Anas Elgarhy 796df64888
Improve the changelog file 2023-01-15 16:56:57 +02:00
Anas Elgarhy ab15d90799
ADd the version 0.0.2 Changes 2023-01-15 16:52:03 +02:00
Anas Elgarhy 3ff775f541
Add version 0.0.3 changes 2023-01-15 16:47:54 +02:00
Anas Elgarhy d571c6a791
Add the version 0.0.4 2023-01-15 16:44:58 +02:00
Anas Elgarhy 705a7690af
Add the version 0.0.5 changelog 2023-01-15 16:36:20 +02:00
Anas Elgarhy 7fbdab3c0c
Add version 0.0.6 to the changelog 2023-01-15 16:33:51 +02:00
Anas Elgarhy e1d0240cf9
Add the verion 0.0.7 changelog 2023-01-15 16:27:11 +02:00
Anas Elgarhy 272a714137
Fix the markdown style and fix typo 2023-01-15 16:21:57 +02:00
Anas Elgarhy 6dc760a087
Add verrsiom 0.0.9 changes to changelog. 2023-01-15 16:15:26 +02:00
Anas Elgarhy 06c99a0588
Add the dbnavigator configs file to gitignore 2023-01-15 14:48:49 +02:00
Anas Elgarhy 512422ad14
Delete the stupid dbnavigator plugin config 2023-01-15 14:46:51 +02:00
Anas Elgarhy 80fec7db05
Merge pull request #24 from anas-elgarhy/dev
Improve the gradle build configs and crate the gradle properties file to separate constant values from codes
2023-01-15 14:38:04 +02:00
Anas Elgarhy 3880ca844c
Merge branch 'master' into dev 2023-01-15 14:33:30 +02:00
Anas Elgarhy 5966ca0a89
Add some stupid auto generated configs 2023-01-15 14:17:00 +02:00
Anas Elgarhy 56c8c282fa
Remove the description tag completly :P 2023-01-15 14:16:01 +02:00
Anas Elgarhy 7de101a8b9
Create a base CHANGELOG file 2023-01-15 14:10:46 +02:00
Anas Elgarhy de67257457
Update the readme file :p 2023-01-15 14:09:34 +02:00
Anas Elgarhy 7c180daf94
Improve the gradle build configs, and add the patchPluginXml task to
automate setup the blugin description and to genrate the changelog.
2023-01-15 14:06:18 +02:00
Anas Elgarhy 92ce0827f6
Create the gradle properties file 2023-01-15 14:03:53 +02:00
Anas Elgarhy 74b631ab6f
Remove the static descriptionn section 2023-01-15 14:02:30 +02:00
Anas Elgarhy d85e48115a
Merge pull request #22 from anas-elgarhy/dependabot/gradle/org.jetbrains.intellij-1.12.0
Bump org.jetbrains.intellij from 1.11.0 to 1.12.0
2023-01-15 13:06:44 +02:00
dependabot[bot] 6ebeefcbd6
Bump org.jetbrains.intellij from 1.11.0 to 1.12.0
Bumps org.jetbrains.intellij from 1.11.0 to 1.12.0.

---
updated-dependencies:
- dependency-name: org.jetbrains.intellij
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-13 21:36:11 +00:00
Anas Elgarhy dbcdc4a60e
Merge pull request #21 from anas-elgarhy/dependabot/github_actions/actions/cache-3.2.3
Bump actions/cache from 3.2.2 to 3.2.3
2023-01-10 01:33:49 +02:00
dependabot[bot] bff194b0c4
Bump actions/cache from 3.2.2 to 3.2.3
Bumps [actions/cache](https://github.com/actions/cache) from 3.2.2 to 3.2.3.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3.2.2...v3.2.3)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-09 21:29:59 +00:00
Anas Elgarhy 428ac076fa
Merge pull request #20 from anas-elgarhy/dependabot/github_actions/actions/checkout-3
Bump actions/checkout from 2 to 3
2023-01-08 20:01:59 +02:00
Anas Elgarhy befdbf083a
Merge pull request #19 from anas-elgarhy/dependabot/github_actions/gradle/wrapper-validation-action-1.0.5
Bump gradle/wrapper-validation-action from 1.0.3 to 1.0.5
2023-01-08 20:01:13 +02:00
Anas Elgarhy a38c6e8e60
Merge pull request #18 from anas-elgarhy/dependabot/github_actions/actions/cache-3.2.2
Bump actions/cache from 2.1.4 to 3.2.2
2023-01-08 20:00:26 +02:00
Anas Elgarhy 9ff6e7d727
Merge pull request #17 from anas-elgarhy/dependabot/github_actions/actions/upload-artifact-3.1.2
Bump actions/upload-artifact from 2.2.3 to 3.1.2
2023-01-08 19:59:38 +02:00
Anas Elgarhy b1fb5a6d9c
Merge pull request #16 from anas-elgarhy/dependabot/gradle/org.jetbrains.intellij-1.11.0
Bump org.jetbrains.intellij from 1.10.0-SNAPSHOT to 1.11.0
2023-01-08 19:58:53 +02:00
Anas Elgarhy a33828cd08
Merge pull request #14 from anas-elgarhy/dependabot/github_actions/actions/setup-java-3
Bump actions/setup-java from 2 to 3
2023-01-08 19:58:09 +02:00
Anas Elgarhy 9d2700ffcf
Merge pull request #15 from anas-elgarhy/dependabot/gradle/com.github.anas-elgarhy-alquran-cloud-api-0.4.1-v1
Bump alquran-cloud-api from 0.4.0-v1 to 0.4.1-v1
2023-01-08 19:57:21 +02:00
dependabot[bot] 01b8b475d6
Bump actions/checkout from 2 to 3
Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-08 16:36:38 +00:00
dependabot[bot] 1fa9247f67
Bump gradle/wrapper-validation-action from 1.0.3 to 1.0.5
Bumps [gradle/wrapper-validation-action](https://github.com/gradle/wrapper-validation-action) from 1.0.3 to 1.0.5.
- [Release notes](https://github.com/gradle/wrapper-validation-action/releases)
- [Commits](https://github.com/gradle/wrapper-validation-action/compare/v1.0.3...v1.0.5)

---
updated-dependencies:
- dependency-name: gradle/wrapper-validation-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-08 16:36:35 +00:00
dependabot[bot] d5d0a52cf3
Bump actions/cache from 2.1.4 to 3.2.2
Bumps [actions/cache](https://github.com/actions/cache) from 2.1.4 to 3.2.2.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v2.1.4...v3.2.2)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-08 16:36:32 +00:00
dependabot[bot] a2bc8498b5
Bump org.jetbrains.intellij from 1.10.0-SNAPSHOT to 1.11.0
Bumps org.jetbrains.intellij from 1.10.0-SNAPSHOT to 1.11.0.

---
updated-dependencies:
- dependency-name: org.jetbrains.intellij
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-08 16:36:30 +00:00
dependabot[bot] 2807d93669
Bump actions/upload-artifact from 2.2.3 to 3.1.2
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 2.2.3 to 3.1.2.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v2.2.3...v3.1.2)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-08 16:36:29 +00:00
dependabot[bot] ad3a93ab8d
Bump alquran-cloud-api from 0.4.0-v1 to 0.4.1-v1
Bumps [alquran-cloud-api](https://github.com/anas-elgarhy/alquran-cloud-api) from 0.4.0-v1 to 0.4.1-v1.
- [Release notes](https://github.com/anas-elgarhy/alquran-cloud-api/releases)
- [Commits](https://github.com/anas-elgarhy/alquran-cloud-api/compare/0.4.0-v1...0.4.1-v1)

---
updated-dependencies:
- dependency-name: com.github.anas-elgarhy:alquran-cloud-api
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-08 16:36:28 +00:00
dependabot[bot] 1b12f8caf0
Bump actions/setup-java from 2 to 3
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 2 to 3.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/setup-java
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-08 16:36:27 +00:00
Anas Elgarhy ca0d60c18f
Merge pull request #13 from anas-elgarhy/dev
Suport the 2022.3 build and fix some bugs
2023-01-08 18:36:09 +02:00
Anas Elgarhy 9bc53afd72 Update 2022-11-03 01:31:17 +02:00
Anas Elgarhy a8c4a59c02
Merge pull request #12 from anas-elgarhy/dev
Fix trying start the timer more then one if you closed the project and open a new one issue
2022-11-02 23:37:08 +02:00
Anas Elgarhy 7cb5863039 Fix trying start the timer more then one if you closed the project and
open a new one issue
2022-11-02 23:32:20 +02:00
Anas Elgarhy 35d225b171 Improve the code yooo 2022-11-02 23:06:04 +02:00
Anas Elgarhy 580a522f98 2022.3 Build Support 2022-11-02 22:07:29 +02:00
Anas Elgarhy f37b07ebce Add some extra configs 2022-11-02 21:48:18 +02:00
Anas Elgarhy a60dc48180 Use lobok yooo 😆💙 2022-08-24 16:11:46 +02:00
Anas Elgarhy 13d2fa7102 Set the encoding to UTF-8 🥰 2022-08-24 13:38:45 +02:00
Anas Elgarhy dc6c45fa10
Merge pull request #8 from anas-elgarhy/add-code-of-conduct-1
Create CODE_OF_CONDUCT.md
2022-08-24 06:35:40 +02:00
Anas Elgarhy 638c54ec42
Create CODE_OF_CONDUCT.md 2022-08-24 06:35:26 +02:00
Anas Elgarhy b021c06dd5
Merge pull request #3 from anas-elgarhy/imgbot
[ImgBot] Optimize images
2022-08-22 21:00:53 +02:00
ImgBotApp 543228a187
[ImgBot] Optimize images
*Total -- 2,628.11kb -> 2,193.69kb (16.53%)

/assets/icon-arabic.png -- 39.31kb -> 27.48kb (30.1%)
/assets/icon-arabic-2.png -- 43.11kb -> 30.26kb (29.8%)
/assets/icon-arabic-trans.png -- 37.84kb -> 27.18kb (28.16%)
/assets/icon.png -- 45.71kb -> 32.91kb (27.99%)
/assets/icon-trans.png -- 38.57kb -> 28.72kb (25.52%)
/screenshots/ayah-details_0.0.5.png -- 386.68kb -> 317.13kb (17.99%)
/screenshots/ayah-details_0.0.1.png -- 397.82kb -> 329.40kb (17.2%)
/screenshots/ayah-details-2_0.0.1.png -- 397.65kb -> 329.29kb (17.19%)
/screenshots/ayah-details_0.0.7.png -- 385.53kb -> 322.65kb (16.31%)
/screenshots/settings_0.0.1.png -- 350.08kb -> 297.42kb (15.04%)
/screenshots/settings_0.0.3.png -- 330.79kb -> 283.47kb (14.3%)
/screenshots/notification_0.0.1.png -- 24.97kb -> 21.64kb (13.34%)
/assets/icon-trans.jpg -- 59.85kb -> 56.27kb (5.98%)
/assets/icon.svg -- 20.90kb -> 20.77kb (0.63%)
/assets/icon-trans.svg -- 20.42kb -> 20.30kb (0.58%)
/assets/icon-arabic.svg -- 16.45kb -> 16.42kb (0.23%)
/src/main/resources/META-INF/pluginIcon.svg -- 16.45kb -> 16.42kb (0.23%)
/assets/icon-arabic-trans.svg -- 15.97kb -> 15.94kb (0.15%)

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
2022-08-22 18:32:49 +00:00
Anas Elgarhy 6f1d24669f
Create FUNDING.yml 2022-08-22 19:14:16 +02:00
Anas Elgarhy e9189efe0c 🤍 Improve the plugin description 😃 2022-08-22 17:52:14 +02:00
Anas Elgarhy b5fffda548 Up the version 🥰 2022-08-22 17:29:49 +02:00
Anas Elgarhy c78566aef9 😆 Fix contunue player running after close the details dilog 2022-08-22 17:27:44 +02:00
Anas Elgarhy 5b7fa7e6c8 Add new details dialog screenshot 🥰 2022-08-22 15:49:34 +02:00
Anas Elgarhy b0a57eed6d Up version yoyooooo 🥰 2022-08-22 15:36:57 +02:00
Anas Elgarhy 2c52408530 Add stop function to the play action 🥰 2022-08-22 15:28:28 +02:00
Anas Elgarhy a9803f31ff
Merge pull request #7 from anas-elgarhy/improve-details-dialog
Add next and previous buttons and auto play check box  🥰
2022-08-22 14:21:32 +02:00
Anas Elgarhy decfa29628 😆 Close the player when closing the details dialog 💙 2022-08-22 14:13:57 +02:00
Anas Elgarhy d983c475a2 🤍 Add next and previuos ayh button and auto play checkbox 🥰 2022-08-22 14:05:51 +02:00
Anas Elgarhy 22503baaf4 up the versoin yooo 😆 2022-08-22 11:45:13 +02:00
Anas Elgarhy ddc2fc5dfd Improve the action and change name 🥰 2022-08-22 11:42:19 +02:00
Anas Elgarhy 8c99e0a478 Fix publish action again 😃 2022-08-22 11:39:44 +02:00
Anas Elgarhy cdb0862ace Fix publish action 😆 2022-08-22 11:35:10 +02:00
Anas Elgarhy 02e2ea1f64
Merge pull request #6 from anas-elgarhy/create-publish-action
😆 Create publish action yooo 🥰
2022-08-22 11:36:10 +02:00
Anas Elgarhy cae174ae96
😆 Create publish action yooo 🥰 2022-08-22 11:35:58 +02:00
Anas Elgarhy deeede5999 Add arabic icon 🤍 and update the english icon font 😆 2022-08-22 11:02:47 +02:00
Anas Elgarhy 12036f2926 Addnew screenshot 🙂 2022-08-22 08:55:02 +02:00
Anas Elgarhy 6d55af8322 Add new scrrenshot yoo 🥰 2022-08-22 08:52:06 +02:00
Anas Elgarhy 84051e3cec Up version yooo 🥰🥰🥰 2022-08-22 08:40:29 +02:00
Anas Elgarhy 5a1f63dae8
Merge pull request #5 from anas-elgarhy/improve-details-dialog-design
Improve deatils dialog design
2022-08-21 17:25:04 +02:00
Anas Elgarhy 58d01b9f65 Improve details dialog design yoo 🥰 2022-08-21 17:18:35 +02:00
Anas Elgarhy 55afbf2915 🥰🥰 Up version yooooooooooooooo 😆 2022-08-21 13:16:56 +02:00
Anas Elgarhy 5216086123
Merge pull request #4 from anas-elgarhy/fix-forget-playerid-issue
💙 Fix forget edition id issue after close the ide 🥰
2022-08-21 13:14:00 +02:00
Anas Elgarhy 2738b54860 💙 Fix forget edition id issue after close the ide 🥰 2022-08-21 13:05:54 +02:00
Anas Elgarhy 003a4afee7 Fix save audio edition issue 🥰 2022-08-21 11:26:36 +02:00
59 changed files with 1512 additions and 280 deletions

434
.editorconfig Normal file
View File

@ -0,0 +1,434 @@
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
max_line_length = 120
tab_width = 4
ij_continuation_indent_size = 8
ij_formatter_off_tag = @formatter:off
ij_formatter_on_tag = @formatter:on
ij_formatter_tags_enabled = false
ij_smart_tabs = false
ij_visual_guides = none
ij_wrap_on_typing = false
[*.java]
ij_java_align_consecutive_assignments = false
ij_java_align_consecutive_variable_declarations = false
ij_java_align_group_field_declarations = false
ij_java_align_multiline_annotation_parameters = false
ij_java_align_multiline_array_initializer_expression = false
ij_java_align_multiline_assignment = false
ij_java_align_multiline_binary_operation = false
ij_java_align_multiline_chained_methods = false
ij_java_align_multiline_deconstruction_list_components = true
ij_java_align_multiline_extends_list = false
ij_java_align_multiline_for = true
ij_java_align_multiline_method_parentheses = false
ij_java_align_multiline_parameters = true
ij_java_align_multiline_parameters_in_calls = false
ij_java_align_multiline_parenthesized_expression = false
ij_java_align_multiline_records = true
ij_java_align_multiline_resources = true
ij_java_align_multiline_ternary_operation = false
ij_java_align_multiline_text_blocks = false
ij_java_align_multiline_throws_list = false
ij_java_align_subsequent_simple_methods = false
ij_java_align_throws_keyword = false
ij_java_align_types_in_multi_catch = true
ij_java_annotation_parameter_wrap = off
ij_java_array_initializer_new_line_after_left_brace = false
ij_java_array_initializer_right_brace_on_new_line = false
ij_java_array_initializer_wrap = off
ij_java_assert_statement_colon_on_next_line = false
ij_java_assert_statement_wrap = off
ij_java_assignment_wrap = off
ij_java_binary_operation_sign_on_next_line = false
ij_java_binary_operation_wrap = off
ij_java_blank_lines_after_anonymous_class_header = 0
ij_java_blank_lines_after_class_header = 0
ij_java_blank_lines_after_imports = 1
ij_java_blank_lines_after_package = 1
ij_java_blank_lines_around_class = 1
ij_java_blank_lines_around_field = 0
ij_java_blank_lines_around_field_in_interface = 0
ij_java_blank_lines_around_initializer = 1
ij_java_blank_lines_around_method = 1
ij_java_blank_lines_around_method_in_interface = 1
ij_java_blank_lines_before_class_end = 0
ij_java_blank_lines_before_imports = 1
ij_java_blank_lines_before_method_body = 0
ij_java_blank_lines_before_package = 0
ij_java_block_brace_style = end_of_line
ij_java_block_comment_add_space = false
ij_java_block_comment_at_first_column = true
ij_java_builder_methods = none
ij_java_call_parameters_new_line_after_left_paren = false
ij_java_call_parameters_right_paren_on_new_line = false
ij_java_call_parameters_wrap = off
ij_java_case_statement_on_separate_line = true
ij_java_catch_on_new_line = false
ij_java_class_annotation_wrap = split_into_lines
ij_java_class_brace_style = end_of_line
ij_java_class_count_to_use_import_on_demand = 5
ij_java_class_names_in_javadoc = 1
ij_java_deconstruction_list_wrap = normal
ij_java_do_not_indent_top_level_class_members = false
ij_java_do_not_wrap_after_single_annotation = false
ij_java_do_not_wrap_after_single_annotation_in_parameter = false
ij_java_do_while_brace_force = never
ij_java_doc_add_blank_line_after_description = true
ij_java_doc_add_blank_line_after_param_comments = false
ij_java_doc_add_blank_line_after_return = false
ij_java_doc_add_p_tag_on_empty_lines = true
ij_java_doc_align_exception_comments = true
ij_java_doc_align_param_comments = true
ij_java_doc_do_not_wrap_if_one_line = false
ij_java_doc_enable_formatting = true
ij_java_doc_enable_leading_asterisks = true
ij_java_doc_indent_on_continuation = false
ij_java_doc_keep_empty_lines = true
ij_java_doc_keep_empty_parameter_tag = true
ij_java_doc_keep_empty_return_tag = true
ij_java_doc_keep_empty_throws_tag = true
ij_java_doc_keep_invalid_tags = true
ij_java_doc_param_description_on_new_line = false
ij_java_doc_preserve_line_breaks = false
ij_java_doc_use_throws_not_exception_tag = true
ij_java_else_on_new_line = false
ij_java_entity_dd_suffix = EJB
ij_java_entity_eb_suffix = Bean
ij_java_entity_hi_suffix = Home
ij_java_entity_lhi_prefix = Local
ij_java_entity_lhi_suffix = Home
ij_java_entity_li_prefix = Local
ij_java_entity_pk_class = java.lang.String
ij_java_entity_vo_suffix = VO
ij_java_enum_constants_wrap = off
ij_java_extends_keyword_wrap = off
ij_java_extends_list_wrap = off
ij_java_field_annotation_wrap = split_into_lines
ij_java_finally_on_new_line = false
ij_java_for_brace_force = never
ij_java_for_statement_new_line_after_left_paren = false
ij_java_for_statement_right_paren_on_new_line = false
ij_java_for_statement_wrap = off
ij_java_generate_final_locals = false
ij_java_generate_final_parameters = false
ij_java_if_brace_force = never
ij_java_imports_layout = *,|,javax.**,java.**,|,$*
ij_java_indent_case_from_switch = true
ij_java_insert_inner_class_imports = false
ij_java_insert_override_annotation = true
ij_java_keep_blank_lines_before_right_brace = 2
ij_java_keep_blank_lines_between_package_declaration_and_header = 2
ij_java_keep_blank_lines_in_code = 2
ij_java_keep_blank_lines_in_declarations = 2
ij_java_keep_builder_methods_indents = false
ij_java_keep_control_statement_in_one_line = true
ij_java_keep_first_column_comment = true
ij_java_keep_indents_on_empty_lines = false
ij_java_keep_line_breaks = true
ij_java_keep_multiple_expressions_in_one_line = false
ij_java_keep_simple_blocks_in_one_line = false
ij_java_keep_simple_classes_in_one_line = false
ij_java_keep_simple_lambdas_in_one_line = false
ij_java_keep_simple_methods_in_one_line = false
ij_java_label_indent_absolute = false
ij_java_label_indent_size = 0
ij_java_lambda_brace_style = end_of_line
ij_java_layout_static_imports_separately = true
ij_java_line_comment_add_space = false
ij_java_line_comment_add_space_on_reformat = false
ij_java_line_comment_at_first_column = true
ij_java_message_dd_suffix = EJB
ij_java_message_eb_suffix = Bean
ij_java_method_annotation_wrap = split_into_lines
ij_java_method_brace_style = end_of_line
ij_java_method_call_chain_wrap = off
ij_java_method_parameters_new_line_after_left_paren = false
ij_java_method_parameters_right_paren_on_new_line = false
ij_java_method_parameters_wrap = off
ij_java_modifier_list_wrap = false
ij_java_multi_catch_types_wrap = normal
ij_java_names_count_to_use_import_on_demand = 3
ij_java_new_line_after_lparen_in_annotation = false
ij_java_new_line_after_lparen_in_deconstruction_pattern = true
ij_java_new_line_after_lparen_in_record_header = false
ij_java_packages_to_use_import_on_demand = java.awt.*,javax.swing.*
ij_java_parameter_annotation_wrap = off
ij_java_parentheses_expression_new_line_after_left_paren = false
ij_java_parentheses_expression_right_paren_on_new_line = false
ij_java_place_assignment_sign_on_next_line = false
ij_java_prefer_longer_names = true
ij_java_prefer_parameters_wrap = false
ij_java_record_components_wrap = normal
ij_java_repeat_synchronized = true
ij_java_replace_instanceof_and_cast = false
ij_java_replace_null_check = true
ij_java_replace_sum_lambda_with_method_ref = true
ij_java_resource_list_new_line_after_left_paren = false
ij_java_resource_list_right_paren_on_new_line = false
ij_java_resource_list_wrap = off
ij_java_rparen_on_new_line_in_annotation = false
ij_java_rparen_on_new_line_in_deconstruction_pattern = true
ij_java_rparen_on_new_line_in_record_header = false
ij_java_session_dd_suffix = EJB
ij_java_session_eb_suffix = Bean
ij_java_session_hi_suffix = Home
ij_java_session_lhi_prefix = Local
ij_java_session_lhi_suffix = Home
ij_java_session_li_prefix = Local
ij_java_session_si_suffix = Service
ij_java_space_after_closing_angle_bracket_in_type_argument = false
ij_java_space_after_colon = true
ij_java_space_after_comma = true
ij_java_space_after_comma_in_type_arguments = true
ij_java_space_after_for_semicolon = true
ij_java_space_after_quest = true
ij_java_space_after_type_cast = true
ij_java_space_before_annotation_array_initializer_left_brace = false
ij_java_space_before_annotation_parameter_list = false
ij_java_space_before_array_initializer_left_brace = false
ij_java_space_before_catch_keyword = true
ij_java_space_before_catch_left_brace = true
ij_java_space_before_catch_parentheses = true
ij_java_space_before_class_left_brace = true
ij_java_space_before_colon = true
ij_java_space_before_colon_in_foreach = true
ij_java_space_before_comma = false
ij_java_space_before_deconstruction_list = false
ij_java_space_before_do_left_brace = true
ij_java_space_before_else_keyword = true
ij_java_space_before_else_left_brace = true
ij_java_space_before_finally_keyword = true
ij_java_space_before_finally_left_brace = true
ij_java_space_before_for_left_brace = true
ij_java_space_before_for_parentheses = true
ij_java_space_before_for_semicolon = false
ij_java_space_before_if_left_brace = true
ij_java_space_before_if_parentheses = true
ij_java_space_before_method_call_parentheses = false
ij_java_space_before_method_left_brace = true
ij_java_space_before_method_parentheses = false
ij_java_space_before_opening_angle_bracket_in_type_parameter = false
ij_java_space_before_quest = true
ij_java_space_before_switch_left_brace = true
ij_java_space_before_switch_parentheses = true
ij_java_space_before_synchronized_left_brace = true
ij_java_space_before_synchronized_parentheses = true
ij_java_space_before_try_left_brace = true
ij_java_space_before_try_parentheses = true
ij_java_space_before_type_parameter_list = false
ij_java_space_before_while_keyword = true
ij_java_space_before_while_left_brace = true
ij_java_space_before_while_parentheses = true
ij_java_space_inside_one_line_enum_braces = false
ij_java_space_within_empty_array_initializer_braces = false
ij_java_space_within_empty_method_call_parentheses = false
ij_java_space_within_empty_method_parentheses = false
ij_java_spaces_around_additive_operators = true
ij_java_spaces_around_annotation_eq = true
ij_java_spaces_around_assignment_operators = true
ij_java_spaces_around_bitwise_operators = true
ij_java_spaces_around_equality_operators = true
ij_java_spaces_around_lambda_arrow = true
ij_java_spaces_around_logical_operators = true
ij_java_spaces_around_method_ref_dbl_colon = false
ij_java_spaces_around_multiplicative_operators = true
ij_java_spaces_around_relational_operators = true
ij_java_spaces_around_shift_operators = true
ij_java_spaces_around_type_bounds_in_type_parameters = true
ij_java_spaces_around_unary_operator = false
ij_java_spaces_within_angle_brackets = false
ij_java_spaces_within_annotation_parentheses = false
ij_java_spaces_within_array_initializer_braces = false
ij_java_spaces_within_braces = false
ij_java_spaces_within_brackets = false
ij_java_spaces_within_cast_parentheses = false
ij_java_spaces_within_catch_parentheses = false
ij_java_spaces_within_deconstruction_list = false
ij_java_spaces_within_for_parentheses = false
ij_java_spaces_within_if_parentheses = false
ij_java_spaces_within_method_call_parentheses = false
ij_java_spaces_within_method_parentheses = false
ij_java_spaces_within_parentheses = false
ij_java_spaces_within_record_header = false
ij_java_spaces_within_switch_parentheses = false
ij_java_spaces_within_synchronized_parentheses = false
ij_java_spaces_within_try_parentheses = false
ij_java_spaces_within_while_parentheses = false
ij_java_special_else_if_treatment = true
ij_java_subclass_name_suffix = Impl
ij_java_ternary_operation_signs_on_next_line = false
ij_java_ternary_operation_wrap = off
ij_java_test_name_suffix = Test
ij_java_throws_keyword_wrap = off
ij_java_throws_list_wrap = off
ij_java_use_external_annotations = false
ij_java_use_fq_class_names = false
ij_java_use_relative_indents = false
ij_java_use_single_class_imports = true
ij_java_variable_annotation_wrap = off
ij_java_visibility = public
ij_java_while_brace_force = never
ij_java_while_on_new_line = false
ij_java_wrap_comments = false
ij_java_wrap_first_method_in_call_chain = false
ij_java_wrap_long_lines = false
[.editorconfig]
ij_editorconfig_align_group_field_declarations = false
ij_editorconfig_space_after_colon = false
ij_editorconfig_space_after_comma = true
ij_editorconfig_space_before_colon = false
ij_editorconfig_space_before_comma = false
ij_editorconfig_spaces_around_assignment_operators = true
[{*.ad,*.adoc,*.asciidoc,.asciidoctorconfig}]
ij_asciidoc_blank_lines_after_header = 1
ij_asciidoc_blank_lines_keep_after_header = 1
ij_asciidoc_formatting_enabled = true
ij_asciidoc_one_sentence_per_line = true
[{*.ant,*.fxml,*.jhm,*.jnlp,*.jrxml,*.pom,*.rng,*.tld,*.wadl,*.wsdl,*.xml,*.xsd,*.xsl,*.xslt,*.xul}]
indent_style = tab
ij_smart_tabs = true
ij_xml_align_attributes = true
ij_xml_align_text = false
ij_xml_attribute_wrap = normal
ij_xml_block_comment_add_space = false
ij_xml_block_comment_at_first_column = true
ij_xml_keep_blank_lines = 2
ij_xml_keep_indents_on_empty_lines = false
ij_xml_keep_line_breaks = true
ij_xml_keep_line_breaks_in_text = true
ij_xml_keep_whitespaces = false
ij_xml_keep_whitespaces_around_cdata = preserve
ij_xml_keep_whitespaces_inside_cdata = false
ij_xml_line_comment_at_first_column = true
ij_xml_space_after_tag_name = false
ij_xml_space_around_equals_in_attribute = false
ij_xml_space_inside_empty_tag = false
ij_xml_text_wrap = normal
ij_xml_use_custom_settings = false
[{*.kt,*.kts}]
ij_kotlin_align_in_columns_case_branch = false
ij_kotlin_align_multiline_binary_operation = false
ij_kotlin_align_multiline_extends_list = false
ij_kotlin_align_multiline_method_parentheses = false
ij_kotlin_align_multiline_parameters = true
ij_kotlin_align_multiline_parameters_in_calls = false
ij_kotlin_allow_trailing_comma = false
ij_kotlin_allow_trailing_comma_on_call_site = false
ij_kotlin_assignment_wrap = normal
ij_kotlin_blank_lines_after_class_header = 0
ij_kotlin_blank_lines_around_block_when_branches = 0
ij_kotlin_blank_lines_before_declaration_with_comment_or_annotation_on_separate_line = 1
ij_kotlin_block_comment_add_space = false
ij_kotlin_block_comment_at_first_column = true
ij_kotlin_call_parameters_new_line_after_left_paren = true
ij_kotlin_call_parameters_right_paren_on_new_line = true
ij_kotlin_call_parameters_wrap = on_every_item
ij_kotlin_catch_on_new_line = false
ij_kotlin_class_annotation_wrap = split_into_lines
ij_kotlin_code_style_defaults = KOTLIN_OFFICIAL
ij_kotlin_continuation_indent_for_chained_calls = false
ij_kotlin_continuation_indent_for_expression_bodies = false
ij_kotlin_continuation_indent_in_argument_lists = false
ij_kotlin_continuation_indent_in_elvis = false
ij_kotlin_continuation_indent_in_if_conditions = false
ij_kotlin_continuation_indent_in_parameter_lists = false
ij_kotlin_continuation_indent_in_supertype_lists = false
ij_kotlin_else_on_new_line = false
ij_kotlin_enum_constants_wrap = off
ij_kotlin_extends_list_wrap = normal
ij_kotlin_field_annotation_wrap = split_into_lines
ij_kotlin_finally_on_new_line = false
ij_kotlin_if_rparen_on_new_line = true
ij_kotlin_import_nested_classes = false
ij_kotlin_imports_layout = *,java.**,javax.**,kotlin.**,^
ij_kotlin_insert_whitespaces_in_simple_one_line_method = true
ij_kotlin_keep_blank_lines_before_right_brace = 2
ij_kotlin_keep_blank_lines_in_code = 2
ij_kotlin_keep_blank_lines_in_declarations = 2
ij_kotlin_keep_first_column_comment = true
ij_kotlin_keep_indents_on_empty_lines = false
ij_kotlin_keep_line_breaks = true
ij_kotlin_lbrace_on_next_line = false
ij_kotlin_line_break_after_multiline_when_entry = true
ij_kotlin_line_comment_add_space = false
ij_kotlin_line_comment_add_space_on_reformat = false
ij_kotlin_line_comment_at_first_column = true
ij_kotlin_method_annotation_wrap = split_into_lines
ij_kotlin_method_call_chain_wrap = normal
ij_kotlin_method_parameters_new_line_after_left_paren = true
ij_kotlin_method_parameters_right_paren_on_new_line = true
ij_kotlin_method_parameters_wrap = on_every_item
ij_kotlin_name_count_to_use_star_import = 5
ij_kotlin_name_count_to_use_star_import_for_members = 3
ij_kotlin_packages_to_use_import_on_demand = java.util.*,kotlinx.android.synthetic.**,io.ktor.**
ij_kotlin_parameter_annotation_wrap = off
ij_kotlin_space_after_comma = true
ij_kotlin_space_after_extend_colon = true
ij_kotlin_space_after_type_colon = true
ij_kotlin_space_before_catch_parentheses = true
ij_kotlin_space_before_comma = false
ij_kotlin_space_before_extend_colon = true
ij_kotlin_space_before_for_parentheses = true
ij_kotlin_space_before_if_parentheses = true
ij_kotlin_space_before_lambda_arrow = true
ij_kotlin_space_before_type_colon = false
ij_kotlin_space_before_when_parentheses = true
ij_kotlin_space_before_while_parentheses = true
ij_kotlin_spaces_around_additive_operators = true
ij_kotlin_spaces_around_assignment_operators = true
ij_kotlin_spaces_around_equality_operators = true
ij_kotlin_spaces_around_function_type_arrow = true
ij_kotlin_spaces_around_logical_operators = true
ij_kotlin_spaces_around_multiplicative_operators = true
ij_kotlin_spaces_around_range = false
ij_kotlin_spaces_around_relational_operators = true
ij_kotlin_spaces_around_unary_operator = false
ij_kotlin_spaces_around_when_arrow = true
ij_kotlin_variable_annotation_wrap = off
ij_kotlin_while_on_new_line = false
ij_kotlin_wrap_elvis_expressions = 1
ij_kotlin_wrap_expression_body_functions = 1
ij_kotlin_wrap_first_method_in_call_chain = false
[{*.markdown,*.md}]
ij_markdown_force_one_space_after_blockquote_symbol = true
ij_markdown_force_one_space_after_header_symbol = true
ij_markdown_force_one_space_after_list_bullet = true
ij_markdown_force_one_space_between_words = true
ij_markdown_format_tables = true
ij_markdown_insert_quote_arrows_on_wrap = true
ij_markdown_keep_indents_on_empty_lines = false
ij_markdown_keep_line_breaks_inside_text_blocks = true
ij_markdown_max_lines_around_block_elements = 1
ij_markdown_max_lines_around_header = 1
ij_markdown_max_lines_between_paragraphs = 1
ij_markdown_min_lines_around_block_elements = 1
ij_markdown_min_lines_around_header = 1
ij_markdown_min_lines_between_paragraphs = 1
ij_markdown_wrap_text_if_long = true
ij_markdown_wrap_text_inside_blockquotes = true
[{*.yaml,*.yml}]
indent_size = 2
ij_yaml_align_values_properties = do_not_align
ij_yaml_autoinsert_sequence_marker = true
ij_yaml_block_mapping_on_new_line = false
ij_yaml_indent_sequence_value = true
ij_yaml_keep_indents_on_empty_lines = false
ij_yaml_keep_line_breaks = true
ij_yaml_sequence_on_new_line = false
ij_yaml_space_before_colon = false
ij_yaml_spaces_within_braces = true
ij_yaml_spaces_within_brackets = true

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

@ -0,0 +1,13 @@
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: anas_elgarhy
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: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

14
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,14 @@
# Dependabot configuration:
# https://docs.github.com/en/free-pro-team@latest/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "gradle"
directory: "/"
schedule:
interval: "daily"
# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"

173
.github/workflows/build.yml vendored Normal file
View File

@ -0,0 +1,173 @@
# GitHub Actions Workflow created for testing and preparing the plugin release in following steps:
# - validate Gradle Wrapper,
# - run test and verifyPlugin tasks,
# - run buildPlugin task and prepare artifact for the further tests,
# - run IntelliJ Plugin Verifier,
# - create a draft release.
#
# Workflow is triggered on push and pull_request events.
#
# Docs:
# - GitHub Actions: https://help.github.com/en/actions
# - IntelliJ Plugin Verifier GitHub Action: https://github.com/ChrisCarini/intellij-platform-plugin-verifier-action
#
name: Build
on:
pull_request:
branches:
- master
jobs:
# Run Gradle Wrapper Validation Action to verify the wrapper's checksum
gradleValidation:
name: Gradle Wrapper
runs-on: ubuntu-latest
steps:
- name: Fetch Sources
uses: actions/checkout@v4
- name: Gradle Wrapper Validation
uses: gradle/wrapper-validation-action@v1.1.0
# Run verifyPlugin and test Gradle tasks
test:
name: Test
needs: gradleValidation
runs-on: ubuntu-latest
steps:
- name: Setup Java
uses: actions/setup-java@v3
with:
java-version: 11
distribution: 'zulu'
- name: Fetch Sources
uses: actions/checkout@v4
- name: Setup Gradle Dependencies Cache
uses: actions/cache@v4.0.0
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle', '**/*.gradle.kts', 'gradle.properties') }}
- name: Setup Gradle Wrapper Cache
uses: actions/cache@v4.0.0
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
- name: Run Linters and Test
run: ./gradlew check
- name: Verify Plugin
run: ./gradlew verifyPlugin
# Build plugin with buildPlugin Gradle task and provide the artifact for the next workflow jobs
# Requires test job to be passed
build:
name: Build
needs: test
runs-on: ubuntu-latest
outputs:
name: ${{ steps.properties.outputs.name }}
version: ${{ steps.properties.outputs.version }}
artifact: ${{ steps.properties.outputs.artifact }}
steps:
- name: Setup Java
uses: actions/setup-java@v3
with:
java-version: 11
distribution: 'zulu'
- name: Fetch Sources
uses: actions/checkout@v4
- name: Setup Gradle Dependencies Cache
uses: actions/cache@v4.0.0
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle', '**/*.gradle.kts', 'gradle.properties') }}
- name: Setup Gradle Wrapper Cache
uses: actions/cache@v4.0.0
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
- name: Set environment variables
id: properties
shell: bash
run: |
PROPERTIES="$(./gradlew properties --console=plain -q)"
VERSION="$(echo "$PROPERTIES" | grep "^version:" | cut -f2- -d ' ')"
NAME="$(echo "$PROPERTIES" | grep "^pluginName_:" | cut -f2- -d ' ')"
ARTIFACT="${NAME}-${VERSION}.zip"
echo "::set-output name=version::$VERSION"
echo "::set-output name=name::$NAME"
echo "::set-output name=artifact::$ARTIFACT"
- name: Build Plugin
run: ./gradlew buildPlugin
# Upload plugin artifact to make it available in the next jobs
- name: Upload artifact
uses: actions/upload-artifact@v4.2.0
with:
name: plugin-artifact
path: ./build/distributions/${{ needs.build.outputs.artifact }}
# Verify built plugin using IntelliJ Plugin Verifier tool
# Requires build job to be passed
verify:
name: Verify
needs: build
runs-on: ubuntu-latest
steps:
- name: Setup Java
uses: actions/setup-java@v3
with:
java-version: 11
distribution: 'zulu'
- name: Fetch Sources
uses: actions/checkout@v4
- name: Setup Gradle Dependencies Cache
uses: actions/cache@v4.0.0
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle', '**/*.gradle.kts', 'gradle.properties') }}
- name: Setup Gradle Wrapper Cache
uses: actions/cache@v4.0.0
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
# Set environment variables
- name: Export Properties
id: properties
shell: bash
run: |
PROPERTIES="$(./gradlew properties --console=plain -q)"
IDE_VERSIONS="$(echo "$PROPERTIES" | grep "^pluginVerifierIdeVersions:" | base64)"
echo "::set-output name=ideVersions::$IDE_VERSIONS"
echo "::set-output name=pluginVerifierHomeDir::~/.pluginVerifier"
# Cache Plugin Verifier IDEs
- name: Setup Plugin Verifier IDEs Cache
uses: actions/cache@v4.0.0
with:
path: ${{ steps.properties.outputs.pluginVerifierHomeDir }}/ides
key: ${{ runner.os }}-plugin-verifier-${{ steps.properties.outputs.ideVersions }}
# Run IntelliJ Plugin Verifier action using GitHub Action
- name: Verify Plugin
run: ./gradlew runPluginVerifier -Pplugin.verifier.home.dir=${{ steps.properties.outputs.pluginVerifierHomeDir }}

16
.github/workflows/publish.yml vendored Normal file
View File

@ -0,0 +1,16 @@
# This is a basic workflow that is manually triggered
name: Publish the plugin in marketplace
on:
release:
types:
- published # when a release is published
jobs:
deploying:
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Runs a single command using the runners shell
- name: Deploying a Plugin with Gradle
run: ./gradlew publishPlugin -Dorg.gradle.project.intellijPublishToken=${{ secrets.PUBLISH_TOKEN }}

85
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,85 @@
# GitHub Actions Workflow created for handling the release process based on the draft release prepared
# with the Build workflow. Running the publishPlugin task requires the PUBLISH_TOKEN secret provided.
name: Release
on:
release:
types: [released]
jobs:
# Prepare and publish the plugin to the Marketplace repository
# release:
# name: Publish Plugin
# runs-on: ubuntu-latest
# steps:
#
# - name: Setup Java
# uses: actions/setup-java@v3
# with:
# java-version: 11
# distribution: 'zulu'
#
# - name: Fetch Sources
# uses: actions/checkout@v4
# with:
# ref: ${{ github.event.release.tag_name }}
#
# - name: Publish Plugin
# env:
# PUBLISH_TOKEN: ${{ secrets.PUBLISH_TOKEN }}
# run: ./gradlew publishPlugin
build:
name: Build
runs-on: ubuntu-latest
steps:
- name: Setup Java
uses: actions/setup-java@v3
with:
java-version: 11
distribution: 'zulu'
- name: Fetch Sources
uses: actions/checkout@v4
- name: Setup Gradle Dependencies Cache
uses: actions/cache@v4.0.0
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-caches-${{ hashFiles('**/*.gradle', '**/*.gradle.kts') }}
- name: Setup Gradle Wrapper Cache
uses: actions/cache@v4.0.0
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}
- name: Set environment variables
id: properties
shell: bash
run: |
PROPERTIES="$(./gradlew properties --console=plain -q)"
VERSION="$(echo "$PROPERTIES" | grep "^version:" | cut -f2- -d ' ')"
NAME="$(echo "$PROPERTIES" | grep "^pluginName_:" | cut -f2- -d ' ')"
ARTIFACT="${NAME}-${VERSION}.zip"
echo "::set-output name=version::$VERSION"
echo "::set-output name=name::$NAME"
echo "::set-output name=artifact::$ARTIFACT"
- name: Build Plugin
run: ./gradlew buildPlugin
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ github.event.release.upload_url }}
asset_path: ./build/distributions/${{ steps.properties.outputs.artifact }}
asset_name: ${{ steps.properties.outputs.artifact }}
asset_content_type: application/zip

3
.idea/.gitignore vendored
View File

@ -6,3 +6,6 @@
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
# dbnavigator plugin
/dbnavigator.xml

6
.idea/jpa-buddy.xml Normal file
View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JpaBuddyIdeaProjectConfig">
<option name="renamerInitialized" value="true" />
</component>
</project>

View File

@ -4,7 +4,10 @@
<component name="FrameworkDetectionExcludesConfiguration">
<file type="web" url="file://$PROJECT_DIR$" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="17" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
<component name="ProjectType">
<option name="id" value="jpab" />
</component>
</project>

7
.mergify.yml Normal file
View File

@ -0,0 +1,7 @@
pull_request_rules:
- name: Automatic merge on approval
conditions:
- "#approved-reviews-by>=1"
actions:
merge:
method: merge

54
CHANGELOG.md Normal file
View File

@ -0,0 +1,54 @@
# Changelog
## Unreleased
### Added
* Add the tafseer/translation text box to the ayah details dialog and make the user able to change the player edition on the fly
### Changed
### Deprecated
### Removed
### Fixed
### Security
## 1.0.1 - 2023-05-18
- Update the dependencies.
- Fix the icon url in the plugin.xml file.
## 1.0.0 - 2023-01-15
- Support the build 2022.3.
- Fix some bugs.
- Upgrade the dependencies.
## 0.0.9 - 2022-11-03 (pre release)
- Early support for build 2022.3
- Discontinue support for builds that are older than 2022.3 (change the jdk version from 11 to 17)
- Fix issue trying to start the timer more than one if you closed the project and open a new one.
- Fix the weird language in the details dialog labels issue.
## 0.0.8 - 2022-08-22
- Fix some bugs and some improvements
## 0.0.7 - 2022-08-22
- improve the play action.
- Add next and previous buttons and autoplay check box.
## 0.0.6 - 2022-08-22
- update the icons.
## 0.0.5 - 2022-08-22
- Improve details dialog design.
## 0.0.4 - 2022-08-21
- Fix forget selected edition id issue after closing the IDE and open it again.
## 0.0.3 - 2022-08-21
- Fix sound issue.
- Support intellij API level 213 and above.
## 0.0.2 - 2022-08-20
- First stable release.

128
CODE_OF_CONDUCT.md Normal file
View File

@ -0,0 +1,128 @@
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
anas.elgarhy.dev@gmail.com.
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
the community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.

View File

@ -1,17 +1,22 @@
<!-- Plugin description -->
<p align="center">
<img width="200" src="./assets/icon.svg" alt="ayah icon"/>
</p>
### Get a verse(an ayah) from the Quran during your coding session 💻 stay connected with the words of Allah. 🤍
## Get a verse(an ayah) from the Quran during your coding session 💻 stay connected with the words of Allah. 🤍
### Features
## Features
- Get a verse from the Quran during your coding session
- Get the basmlah after open project
- Copy the ayah to clipboard.
- Read the ayah in different languages and different voices.
- Show the ayah details if you want.
- Very Customizable
<!-- Plugin description end -->
![notification](./screenshots/notification_0.0.1.png)
![settings](./screenshots/settings_0.0.3.png)
![ayah details](./screenshots/ayah-details_0.0.1.png)
## Screenshots
![notification](./screenshots/notification_1.0.0.png)
![ayah details](./screenshots/ayah-details_1.0.0.png)
![settings](./screenshots/settings_1.0.0.png)
<p>Inspired by Ayat on vscode by Hussam Adil.</p>

View File

@ -9,3 +9,12 @@
![normal icon](./icon.svg)
![transparent icon](./icon-trans.svg)
- Font:
- family: Arima Madurai Extra Bold
- size: 108px
![normal arabic icon](./icon-arabic.svg)
![transparent arabic icon](./icon-arabic-trans.svg)
- Font:
- family: 29LT Zawi ExtraBold
- size: 108px

BIN
assets/icon-arabic-2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 16 KiB

BIN
assets/icon-arabic.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

1
assets/icon-arabic.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 56 KiB

BIN
assets/icon-trans.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 20 KiB

BIN
assets/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -1,10 +1,16 @@
import org.jetbrains.changelog.Changelog
import org.jetbrains.changelog.markdownToHTML
fun properties(key: String) = project.findProperty(key).toString()
plugins {
id("java")
id("org.jetbrains.intellij") version "1.8.0"
id("org.jetbrains.intellij") version "1.17.0"
id("org.jetbrains.changelog") version "2.2.0"
}
group = "com.anas.intellij.plugins.ayah"
version = "0.0.3"
version = properties("pluginVersion")
group = properties("pluginGroup")
repositories {
mavenCentral()
@ -12,22 +18,28 @@ repositories {
}
dependencies {
implementation("com.github.anas-elgarhy:alquran-cloud-api:0.4.0-v1")
implementation("com.miglayout:miglayout-swing:11.0")
implementation("com.github.anas-elgarhy:alquran-cloud-api:0.4.5")
implementation("com.miglayout:miglayout-swing:11.2")
// implementation("com.github.goxr3plus:java-stream-player:10.0.2")
implementation("com.googlecode.soundlibs:jlayer:1.0.1.4")
compileOnly("org.projectlombok:lombok:1.18.30")
annotationProcessor("org.projectlombok:lombok:1.18.30")
testImplementation("org.projectlombok:lombok:1.18.30")
testAnnotationProcessor("org.projectlombok:lombok:1.18.30")
}
java {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
// Configure Gradle IntelliJ Plugin
// Read more: https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html
intellij {
version.set("2022.2.1")
type.set("IC") // Target IDE Platform
downloadSources.set(true)
pluginName.set(properties("pluginName"))
version.set(properties("platformVersion"))
type.set(properties("platformType"))
plugins.set(listOf(/* Plugin Dependencies */))
}
@ -35,22 +47,52 @@ intellij {
tasks {
// Set the JVM compatibility versions
withType<JavaCompile> {
sourceCompatibility = "11"
targetCompatibility = "11"
options.encoding = "UTF-8"
sourceCompatibility = "17"
targetCompatibility = "17"
}
wrapper {
gradleVersion = properties("gradleVersion")
}
patchPluginXml {
sinceBuild.set("213")
untilBuild.set("222.*")
}
version.set(properties("pluginVersion"))
sinceBuild.set(properties("pluginSinceBuild"))
untilBuild.set("")
signPlugin {
certificateChain.set(System.getenv("CERTIFICATE_CHAIN"))
privateKey.set(System.getenv("PRIVATE_KEY"))
password.set(System.getenv("PRIVATE_KEY_PASSWORD"))
// Extract the <!-- Plugin description --> section from README.md and provide for the plugin's manifest
pluginDescription.set(
file("README.md").readText().lines().run {
val start = "<!-- Plugin description -->"
val end = "<!-- Plugin description end -->"
if (!containsAll(listOf(start, end))) {
throw GradleException("Plugin description section not found in README.md:\n$start ... $end")
}
subList(indexOf(start) + 1, indexOf(end))
}.joinToString("\n")
.replace("./assets/", "https://raw.githubusercontent.com/anas-elgarhy/Ayah-intellij/master/assets/")
.let { markdownToHTML(it) }
)
// Get the latest available change notes from the changelog file
changeNotes.set(provider {
with(changelog) {
renderItem(
getOrNull(properties("pluginVersion")) ?: getLatest(),
Changelog.OutputType.HTML,
)
}
})
}
publishPlugin {
dependsOn("patchChangelog", "patchPluginXml")
token.set(System.getenv("PUBLISH_TOKEN"))
// pluginVersion is based on the SemVer (https://semver.org) and supports pre-release labels, like 2.1.7-alpha.3
// Specify pre-release label to publish the plugin in a custom Release Channel automatically. Read more:
// https://plugins.jetbrains.com/docs/intellij/deployment.html#specifying-a-release-channel
channels.set(listOf(properties("pluginVersion").split('-').getOrElse(1) { "default" }.split('.').first()))
}
}

20
gradle.properties Normal file
View File

@ -0,0 +1,20 @@
# IntelliJ Platform Artifacts Repositories -> https://plugins.jetbrains.com/docs/intellij/intellij-artifacts.html
pluginGroup = com.anas.intellij.plugins.ayah
pluginName = Ayah
pluginRepositoryUrl = https://github.com/anas-elgarhy/Ayah-intellij
# SemVer format -> https://semver.org
pluginVersion = 1.0.1
# Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
pluginSinceBuild = 223
# IntelliJ Platform Properties -> https://github.com/JetBrains/gradle-intellij-plugin#intellij-platform-properties
platformType = IC
platformVersion = 2022.3
# Gradle Releases -> https://github.com/gradle/gradle/releases
gradleVersion = 7.6
# Enable Gradle Configuration Cache -> https://docs.gradle.org/current/userguide/configuration_cache.html
org.gradle.unsafe.configuration-cache = true

Binary file not shown.

View File

@ -1,5 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

41
gradlew vendored
View File

@ -55,7 +55,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
@ -80,13 +80,11 @@ do
esac
done
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
APP_NAME="Gradle"
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@ -133,22 +131,29 @@ location of your Java installation."
fi
else
JAVACMD=java
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
@ -193,11 +198,15 @@ if "$cygwin" || "$msys" ; then
done
fi
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
# double quotes to make sure that they get re-expanded; and
# * put everything else in single quotes, so that it's not re-expanded.
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
@ -205,6 +214,12 @@ set -- \
org.gradle.wrapper.GradleWrapperMain \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.

15
gradlew.bat vendored
View File

@ -14,7 +14,7 @@
@rem limitations under the License.
@rem
@if "%DEBUG%" == "" @echo off
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@ -25,7 +25,8 @@
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@ -40,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto execute
if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
@ -75,13 +76,15 @@ set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal

6
renovate.json Normal file
View File

@ -0,0 +1,6 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:base"
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 398 KiB

After

Width:  |  Height:  |  Size: 329 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 398 KiB

After

Width:  |  Height:  |  Size: 329 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 317 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 323 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 350 KiB

After

Width:  |  Height:  |  Size: 297 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 331 KiB

After

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View File

@ -1 +1,7 @@
rootProject.name = "Ayah-intellij"
rootProject.name = "Ayah-intellij"
pluginManagement {
repositories {
maven("https://oss.sonatype.org/content/repositories/snapshots/")
gradlePluginPortal()
}
}

View File

@ -7,23 +7,24 @@ import com.intellij.notification.NotificationGroupManager;
import com.intellij.notification.NotificationType;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.startup.StartupActivity;
import lombok.val;
import org.jetbrains.annotations.NotNull;
import java.io.IOException;
/**
* @author: <a href="https://github.com/anas-elgarhy">Anas Elgarhy</a>
* @date: 8/18/22
* @author <a href="https://github.com/anas-elgarhy">Anas Elgarhy</a>
* @since 8/18/22
*/
public class AyahStartupActivity implements StartupActivity {
@Override
public void runActivity(@NotNull final Project project) {
final var basmalhOnStartSettingsState = AyahSettingsState.getInstance().getBasmalhOnStart();
val basmalhOnStartSettingsState = AyahSettingsState.getInstance().getBasmalhOnStart();
// Basmalh on start
if (basmalhOnStartSettingsState.isActive()) {
try {
final var bassmalh = Ayah.getAyah(1,
basmalhOnStartSettingsState.getEditionId());
val bassmalh = Ayah.getAyah(1,
basmalhOnStartSettingsState.getEdition().getEditionIdentifier());
NotificationGroupManager.getInstance()
.getNotificationGroup("Basmalh on Start")
.createNotification(bassmalh.getText(), NotificationType.INFORMATION).notify(project);

View File

@ -7,8 +7,8 @@ import org.jetbrains.annotations.NotNull;
import java.util.Timer;
/**
* @author: <a href="https://github.com/anas-elgarhy">Anas Elgarhy</a>
* @date: 8/19/22
* @author <a href="https://github.com/anas-elgarhy">Anas Elgarhy</a>
* @since 8/19/22
*/
public enum NotificationTimer {
INSTANCE
@ -16,14 +16,21 @@ public enum NotificationTimer {
private final Timer timer;
private final NotificationTimerTask notificationTimerTask;
private boolean isRunning;
NotificationTimer() {
timer = new Timer();
notificationTimerTask = new NotificationTimerTask();
isRunning = false;
}
public void start(@NotNull Project project) {
if (isRunning) {
return;
}
notificationTimerTask.setProject(project);
schedule(AyahSettingsState.getInstance().getIntervalTimeBetweenNotifications());
isRunning = true;
}
public void updateIntervalTimeBetweenNotifications(final int intervalTimeBetweenNotifications) {

View File

@ -2,6 +2,7 @@ package com.anas.intellij.plugins.ayah;
import com.anas.alqurancloudapi.Ayah;
import com.anas.intellij.plugins.ayah.audio.AudioPlayer;
import com.anas.intellij.plugins.ayah.audio.PlayerListener;
import com.anas.intellij.plugins.ayah.dialogs.AyahDetailsDialog;
import com.anas.intellij.plugins.ayah.settings.AyahSettingsState;
import com.intellij.notification.Notification;
@ -9,6 +10,7 @@ import com.intellij.notification.NotificationType;
import com.intellij.openapi.actionSystem.AnAction;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.project.Project;
import javazoom.jl.player.advanced.PlaybackEvent;
import org.jetbrains.annotations.NotNull;
import java.awt.*;
@ -18,44 +20,45 @@ import java.util.TimerTask;
import java.util.logging.Logger;
/**
* @author: <a href="https://github.com/anas-elgarhy">Anas Elgarhy</a>
* @date: 8/19/22
* @author <a href="https://github.com/anas-elgarhy">Anas Elgarhy</a>
* @since 8/19/22
*/
public class NotificationTimerTask extends TimerTask {
public class NotificationTimerTask extends TimerTask implements PlayerListener {
private Project project;
private static final Logger LOGGER = Logger.getLogger(NotificationTimerTask.class.getName());
private AudioPlayer audioPlayer;
private boolean isPlaying;
private Ayah ayah;
@Override
public void run() {
final var settings = AyahSettingsState.getInstance();
LOGGER.info("Player id: " + settings.getEditionId());
LOGGER.info("Player id: " + settings.getEdition());
try {
final var randomAyah = Ayah.getRandomAyah(settings.getEditionId());
LOGGER.info("Random Ayah: " + randomAyah.getText());
LOGGER.info("Rsndom ayah edition: " + randomAyah.getEdition());
LOGGER.info("Random Ayah Url: " + randomAyah.getAudioUrl());
ayah = Ayah.getRandomAyah(settings.getEdition().getEditionIdentifier());
// Set up the notification.
final var notification = new Notification("Random Ayah Notification",
randomAyah.getSurah().getName(), randomAyah.getText(), NotificationType.INFORMATION);
ayah.getSurah().getName(), ayah.getText(), NotificationType.INFORMATION);
notification.addAction(new AnAction("Play") {
@Override
public void actionPerformed(@NotNull final AnActionEvent e) {
LOGGER.info("Play action performed");
LOGGER.info("Audio url: " + randomAyah.getAudioUrl());
play(randomAyah.getAudioUrl());
}
});
// Play sound if enabled.
if (settings.isAutoPlayAudio()) {
LOGGER.info("Playing ayah");
audioPlayer = new AudioPlayer(ayah.getAudioUrl()).setListener(this);
audioPlayer.play();
}
// Setup the notification actions.
notification.addAction(new PlayAction());
notification.addAction(new AnAction("Copy") {
@Override
public void actionPerformed(@NotNull final AnActionEvent e) {
LOGGER.info("Copy action performed");
final var clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(new StringSelection(randomAyah.getText()), null);
clipboard.setContents(new StringSelection(ayah.getText()), null);
}
});
@ -63,28 +66,49 @@ public class NotificationTimerTask extends TimerTask {
@Override
public void actionPerformed(@NotNull final AnActionEvent e) {
LOGGER.info("Details action performed");
new AyahDetailsDialog(randomAyah).setVisible(true);
new AyahDetailsDialog(ayah).setVisible(true);
}
});
// Show notification
notification.notify(project);
// Play sound if enabled.
if (settings.isAutoPlayAudio()) {
LOGGER.info("Playing ayah");
play(randomAyah.getAudioUrl());
}
} catch (final IOException e) {
LOGGER.severe(e.getMessage());
}
}
private void play(final String audioUrl) {
new AudioPlayer(audioUrl).play();
}
public void setProject(final Project project) {
this.project = project;
}
// Play action implementation.
private class PlayAction extends AnAction {
PlayAction() {
super("Play", "Play the ayah", null);
}
@Override
public void actionPerformed(@NotNull final AnActionEvent e) {
LOGGER.info("Play action performed");
if (!isPlaying) {
audioPlayer = new AudioPlayer(ayah.getAudioUrl()).setListener(NotificationTimerTask.this);
audioPlayer.play();
} else {
audioPlayer.stop();
isPlaying = false;
}
}
}
// Player listener methods.
@Override
public void onStarted() {
isPlaying = true;
}
@Override
public void onFinished() {
isPlaying = false;
}
}

View File

@ -2,8 +2,11 @@ package com.anas.intellij.plugins.ayah.audio;
import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.player.FactoryRegistry;
import javazoom.jl.player.Player;
import javazoom.jl.player.advanced.AdvancedPlayer;
import javazoom.jl.player.advanced.PlaybackEvent;
import javazoom.jl.player.advanced.PlaybackListener;
import javax.swing.*;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
@ -12,26 +15,32 @@ import java.net.URL;
import java.util.logging.Logger;
/**
* @author: <a href="https://github.com/anas-elgarhy">Anas Elgarhy</a>
* @date: 8/19/22
* @author <a href="https://github.com/anas-elgarhy">Anas Elgarhy</a>
* @since 8/19/22
*/
public class AudioPlayer {
private final String audioUrl;
private PlayerListener listener; // we don't need more than one listener
private AdvancedPlayer player;
private static final Logger LOGGER = Logger.getLogger(AudioPlayer.class.getName());
public AudioPlayer(final String audioUrl) {
this.audioUrl = audioUrl;
}
private Player loadAndOpen() {
private AdvancedPlayer loadAndOpen() {
try {
return new Player(getInputStream(audioUrl),
return new AdvancedPlayer(getInputStream(audioUrl),
FactoryRegistry.systemRegistry().createAudioDevice());
} catch (final MalformedURLException | JavaLayerException e) {
LOGGER.severe("Error while opening stream player: " + e.getMessage());
} catch (final IOException e) {
LOGGER.severe("Can't load audio file: " + audioUrl);
LOGGER.severe(e.getMessage());
JOptionPane.showMessageDialog(null,
"Error loading the ayah, check your internet connection - حدث خطاء اثناء تحميل الآية، تحقق من اتصالك بالإنترنت",
"Error - خطأ", JOptionPane.ERROR_MESSAGE);
}
return null;
}
@ -39,9 +48,31 @@ public class AudioPlayer {
public void play() {
new Thread(() -> {
try {
loadAndOpen().play();
} catch (final JavaLayerException | NullPointerException e) {
player = loadAndOpen();
if (player == null)
throw new IOException("Can't create player");
if (listener != null) {
player.setPlayBackListener(new PlaybackListener() {
@Override
public void playbackStarted(final PlaybackEvent evt) {
listener.onStarted();
}
@Override
public void playbackFinished(final PlaybackEvent evt) {
listener.onFinished();
}
});
}
player.play();
} catch (final JavaLayerException | IOException e) {
LOGGER.severe(e.getMessage());
JOptionPane.showMessageDialog(null,
"Error whole playing the ayah - حدث خطاء اثناء تشغيل الآية",
"Error - خطأ", JOptionPane.ERROR_MESSAGE);
}
}).start();
}
@ -52,4 +83,15 @@ public class AudioPlayer {
final var inputStream = url.openStream();
return new BufferedInputStream(inputStream);
}
public AudioPlayer setListener(final PlayerListener listener) {
this.listener = listener;
return this;
}
public void stop() {
if (player != null) {
player.close();
}
}
}

View File

@ -0,0 +1,12 @@
package com.anas.intellij.plugins.ayah.audio;
import javazoom.jl.player.advanced.PlaybackEvent;
/**
* @author <a href="https://github.com/anas-elgarhy">Anas Elgarhy</a>
* @since 8/22/22
*/
public interface PlayerListener {
void onStarted();
void onFinished();
}

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="com.anas.intellij.plugins.ayah.dialogs.AyahDetailsDialog">
<grid id="cbd77" binding="contentPane" layout-manager="GridLayoutManager" row-count="3" column-count="3" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<grid id="cbd77" binding="contentPane" layout-manager="GridLayoutManager" row-count="2" column-count="3" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="10" left="10" bottom="10" right="10"/>
<constraints>
<xy x="48" y="54" width="577" height="355"/>
@ -10,40 +10,96 @@
</properties>
<border type="none"/>
<children>
<grid id="94766" layout-manager="GridLayoutManager" row-count="1" column-count="3" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<grid id="94766" layout-manager="GridLayoutManager" row-count="2" column-count="6" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<grid row="2" column="0" row-span="1" col-span="3" vsize-policy="1" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
<grid row="1" column="0" row-span="1" col-span="3" vsize-policy="1" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<hspacer id="98af6">
<constraints>
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="1" hsize-policy="6" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
</hspacer>
<grid id="9538f" layout-manager="GridLayoutManager" row-count="1" column-count="2" same-size-horizontally="true" same-size-vertically="false" hgap="-1" vgap="-1">
<grid id="9538f" layout-manager="GridLayoutManager" row-count="2" column-count="4" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<grid row="0" column="2" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
<grid row="0" column="0" row-span="1" col-span="6" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<component id="5723f" class="javax.swing.JButton" binding="buttonCancel">
<grid id="c8e9d" layout-manager="GridLayoutManager" row-count="1" column-count="3" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
<grid row="0" column="0" row-span="1" col-span="4" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<component id="5e7c2" class="javax.swing.JLabel" binding="surahNameLabel">
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="سُورَةُ الصَّافَّاتِ"/>
</properties>
</component>
<component id="d6a80" class="javax.swing.JLabel" binding="numberOfAyahInSuarhLabel">
<constraints>
<grid row="0" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="0" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="1"/>
</properties>
</component>
<component id="9e6a9" class="javax.swing.JLabel" binding="ayahRevelationType">
<constraints>
<grid row="0" column="2" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="4" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="مكية"/>
</properties>
</component>
</children>
</grid>
<component id="69418" class="javax.swing.JButton" binding="previousButton">
<constraints>
<grid row="1" column="2" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="Cancel"/>
<text value="Previous"/>
<toolTipText value="Previous Aah"/>
</properties>
</component>
<component id="b465c" class="javax.swing.JButton" binding="nextButton" default-binding="true">
<constraints>
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<hideActionText value="true"/>
<text value="Next"/>
<toolTipText value="Nexit ayah"/>
</properties>
</component>
</children>
</grid>
<component id="893ab" class="javax.swing.JCheckBox" binding="autoPlayCheckBox" default-binding="true">
<constraints>
<grid row="1" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="Auto play"/>
</properties>
</component>
<component id="5723f" class="javax.swing.JButton" binding="buttonCancel">
<constraints>
<grid row="1" column="3" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="Cancel"/>
</properties>
</component>
<component id="e7465" class="javax.swing.JButton" binding="playButton">
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="Play"/>
@ -83,30 +139,6 @@
</scrollpane>
</children>
</grid>
<component id="5e7c2" class="javax.swing.JLabel" binding="surahNameLabel">
<constraints>
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="سُورَةُ الصَّافَّاتِ"/>
</properties>
</component>
<component id="d6a80" class="javax.swing.JLabel" binding="numberOfAyahInSuarhLabel">
<constraints>
<grid row="1" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="1"/>
</properties>
</component>
<component id="9e6a9" class="javax.swing.JLabel" binding="ayahRevelationType">
<constraints>
<grid row="1" column="2" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="مكية"/>
</properties>
</component>
</children>
</grid>
</form>

View File

@ -1,15 +1,23 @@
package com.anas.intellij.plugins.ayah.dialogs;
import com.anas.alqurancloudapi.Ayah;
import com.anas.alqurancloudapi.consts.Constants;
import com.anas.intellij.plugins.ayah.audio.AudioPlayer;
import com.anas.intellij.plugins.ayah.settings.AyahSettingsState;
import com.anas.intellij.plugins.ayah.audio.PlayerListener;
import javazoom.jl.player.advanced.PlaybackEvent;
import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
public class AyahDetailsDialog extends JDialog {
/**
* @author <a href="https://github.com/anas-elgarhy">Anas Elgarhy</a>
* @since 8/19/22
*/
public class AyahDetailsDialog extends JDialog implements PlayerListener {
private JPanel contentPane;
private JButton playButton;
private JButton buttonCancel;
@ -17,8 +25,16 @@ public class AyahDetailsDialog extends JDialog {
private JLabel surahNameLabel;
private JLabel numberOfAyahInSuarhLabel;
private JLabel ayahRevelationType;
private JButton previousButton;
private JButton nextButton;
private JCheckBox autoPlayCheckBox;
private boolean isPlaying;
private AudioPlayer audioPlayer;
private Ayah ayah;
public AyahDetailsDialog(final Ayah ayah) {
this.ayah = ayah;
setContentPane(contentPane);
setModal(true);
setSize(500, 300);
@ -26,31 +42,123 @@ public class AyahDetailsDialog extends JDialog {
setLocationRelativeTo(null);
getRootPane().setDefaultButton(playButton);
ayahTextArea.setText(ayah.getText());
surahNameLabel.setText(ayah.getSurah().getName());
numberOfAyahInSuarhLabel.setText("Number: " + ayah.getNumberInSurah());
ayahRevelationType.setText(ayah.getSurah().getRevelationType().getArabicName());
updateAhaDetails();
addListeners(ayah);
addListeners();
}
private void addListeners(final Ayah ayah) {
playButton.addActionListener(e ->
new AudioPlayer(ayah.getAudioUrl()).play());
private void updateAhaDetails() {
ayahTextArea.setText(ayah.getText());
surahNameLabel.setText(ayah.getSurah().getName());
numberOfAyahInSuarhLabel.setText("آية رقم: " + ayah.getNumberInSurah());
ayahRevelationType.setText(ayah.getSurah().getRevelationType().getArabicName());
}
buttonCancel.addActionListener(l -> dispose());
private void addListeners() {
playButton.addActionListener(e -> {
if (!isPlaying) {
audioPlayer = new AudioPlayer(ayah.getAudioUrl()).setListener(this);
audioPlayer.play();
} else {
audioPlayer.stop();
playButton.setText("Play");
isPlaying = false;
}
});
nextButton.addActionListener(e -> {
if (ayah.getNumber() <= Constants.AYAHS_COUNT) {
loadTheAyah(ayah.getNumber() + 1);
previousButton.setEnabled(true);
if (ayah.getNumber() >= Constants.AYAHS_COUNT) {
nextButton.setEnabled(false);
}
if (isPlaying) {
playOrNot();
}
}
});
previousButton.addActionListener(e -> {
if (ayah.getNumber() >= 1) {
loadTheAyah(ayah.getNumber() - 1);
nextButton.setEnabled(true);
if (ayah.getNumber() == 1) {
previousButton.setEnabled(false);
}
if (isPlaying) {
playOrNot();
}
}
});
buttonCancel.addActionListener(l -> close());
// call onCancel() when cross is clicked
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
close();
}
});
// call onCancel() on ESCAPE
contentPane.registerKeyboardAction(l -> dispose(),
contentPane.registerKeyboardAction(l -> close(),
KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
}
private void close() {
if (audioPlayer != null) {
audioPlayer.stop();
audioPlayer = null;
}
dispose();
}
private void playOrNot() {
if (autoPlayCheckBox.isSelected()) {
audioPlayer.stop();
audioPlayer = new AudioPlayer(ayah.getAudioUrl()).setListener(this);
audioPlayer.play();
} else {
audioPlayer.stop();
playButton.setText("Play");
isPlaying = false;
}
}
private boolean loadTheAyah(final int ayhNumber) {
try {
ayah = Ayah.getAyah(ayhNumber,
ayah.getEdition().getIdentifier());
updateAhaDetails();
return true;
} catch (final IOException ex) {
JOptionPane.showMessageDialog(this,
"Error loading the ayah, check your internet connection - حدث خطاء اثناء تحميل الآية، تحقق من اتصالك بالإنترنت",
"Error - خطأ", JOptionPane.ERROR_MESSAGE);
}
return false;
}
@Override
public void onStarted() {
playButton.setText("Stop");
isPlaying = true;
}
@Override
public void onFinished() {
if (autoPlayCheckBox.isSelected() && ayah.getNumber() <= Constants.AYAHS_COUNT) {
if (loadTheAyah(ayah.getNumber() + 1)) {
audioPlayer = new AudioPlayer(ayah.getAudioUrl()).setListener(this);
audioPlayer.stop();
audioPlayer.play();
}
} else {
playButton.setText("Play");
isPlaying = false;
}
}
}

View File

@ -1,6 +1,7 @@
package com.anas.intellij.plugins.ayah.settings;
import com.anas.intellij.plugins.ayah.NotificationTimer;
import com.anas.intellij.plugins.ayah.settings.userinterface.SettingsComponent;
import com.intellij.openapi.options.Configurable;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.Nullable;
@ -8,8 +9,8 @@ import org.jetbrains.annotations.Nullable;
import javax.swing.*;
/**
* @author: <a href="https://github.com/anas-elgarhy">Anas Elgarhy</a>
* @date: 8/19/22
* @author <a href="https://github.com/anas-elgarhy">Anas Elgarhy</a>
* @since 8/19/22
*/
public class AyahSettingsConfigurable implements Configurable {
@ -38,7 +39,7 @@ public class AyahSettingsConfigurable implements Configurable {
settingsState.setBasmalhOnStart(settingsComponent.getBasmalhOnStart());
settingsState.setIntervalTimeBetweenNotifications(settingsComponent.getIntervalTimeBetweenNotifications());
settingsState.setAutoPlayAudio(settingsComponent.isAutoPlayAudio());
settingsState.setEditionId(settingsComponent.getEdition().getIdentifier());
settingsState.setEdition(settingsComponent.getSelectedEdition());
// Update the timer with the new interval time between notifications if interval time between notifications has changed
if (settingsState.getIntervalTimeBetweenNotifications() !=

View File

@ -7,15 +7,18 @@ import com.intellij.openapi.components.PersistentStateComponent;
import com.intellij.openapi.components.State;
import com.intellij.openapi.components.Storage;
import com.intellij.util.xmlb.XmlSerializerUtil;
import lombok.Getter;
import lombok.Setter;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.IOException;
/**
* @author: <a href="https://github.com/anas-elgarhy">Anas Elgarhy</a>
* @date: 8/19/22
* @author <a href="https://github.com/anas-elgarhy">Anas Elgarhy</a>
* @since 8/19/22
*/
@Getter
@Setter
@State(
name = "com.anas.intellij.plugins.ayah.settings.AyahSettingsState",
storages = @Storage("ayah.xml")
@ -24,7 +27,7 @@ public class AyahSettingsState implements PersistentStateComponent<AyahSettingsS
private BasmalhOnStart basmalhOnStart;
private int intervalTimeBetweenNotifications; // in minutes
private boolean autoPlayAudio;
private String editionId;
private SelectedEdition edition;
public static AyahSettingsState getInstance() {
return ApplicationManager.getApplication().getService(AyahSettingsState.class);
@ -34,11 +37,7 @@ public class AyahSettingsState implements PersistentStateComponent<AyahSettingsS
basmalhOnStart = new BasmalhOnStart();
intervalTimeBetweenNotifications = 30; // 30 minutes
autoPlayAudio = false;
try {
editionId = Edition.getRandomEdition(EditionFormat.AUDIO, "ar").getIdentifier();
} catch (final IOException e) {
editionId = null;
}
edition = new SelectedEdition();
}
@ -51,36 +50,4 @@ public class AyahSettingsState implements PersistentStateComponent<AyahSettingsS
public void loadState(@NotNull final AyahSettingsState state) {
XmlSerializerUtil.copyBean(state, this);
}
public BasmalhOnStart getBasmalhOnStart() {
return basmalhOnStart;
}
public void setBasmalhOnStart(final BasmalhOnStart basmalhOnStart) {
this.basmalhOnStart = basmalhOnStart;
}
public int getIntervalTimeBetweenNotifications() {
return intervalTimeBetweenNotifications;
}
public void setIntervalTimeBetweenNotifications(final int intervalTimeBetweenNotifications) {
this.intervalTimeBetweenNotifications = intervalTimeBetweenNotifications;
}
public boolean isAutoPlayAudio() {
return autoPlayAudio;
}
public void setAutoPlayAudio(final boolean autoPlayAudio) {
this.autoPlayAudio = autoPlayAudio;
}
public String getEditionId() {
return editionId;
}
public void setEditionId(final String editionId) {
this.editionId = editionId;
}
}

View File

@ -1,60 +1,24 @@
package com.anas.intellij.plugins.ayah.settings;
import com.anas.alqurancloudapi.edition.Edition;
import com.anas.alqurancloudapi.edition.EditionFormat;
import java.io.IOException;
import lombok.Getter;
import lombok.NonNull;
import lombok.Setter;
/**
* @author: <a href="https://github.com/anas-elgarhy">Anas Elgarhy</a>
* @date: 8/19/22
* @author <a href="https://github.com/anas-elgarhy">Anas Elgarhy</a>
* @since 8/19/22
*/
@Getter
@Setter
public class BasmalhOnStart {
private boolean isActive;
private boolean isNotificationActive;
private boolean isSoundActive;
private String editionId;
@NonNull
private SelectedEdition edition;
public BasmalhOnStart() {
isActive = true;
isNotificationActive = true;
isSoundActive = false;
try {
editionId = Edition.getRandomEdition(EditionFormat.AUDIO, "ar").getIdentifier();
} catch (final IOException e) {
editionId = null;
}
}
public boolean isActive() {
return isActive;
}
public void setActive(final boolean active) {
isActive = active;
}
public boolean isNotificationActive() {
return isNotificationActive;
}
public void setNotificationActive(final boolean notificationActive) {
isNotificationActive = notificationActive;
}
public boolean isSoundActive() {
return isSoundActive;
}
public void setSoundActive(final boolean soundActive) {
isSoundActive = soundActive;
}
public String getEditionId() {
return editionId;
}
public void setEditionId(final String editionId) {
this.editionId = editionId;
edition = new SelectedEdition();
}
}

View File

@ -0,0 +1,31 @@
package com.anas.intellij.plugins.ayah.settings;
import com.anas.alqurancloudapi.edition.Edition;
import com.anas.alqurancloudapi.edition.EditionFormat;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import java.io.IOException;
/**
* @author <a href="https://github.com/anas-elgarhy">Anas Elgarhy</a>
* @since 8/21/22
*/
@AllArgsConstructor
@Getter
@Setter
public class SelectedEdition {
private String editionIdentifier;
private int index;
// For XML serialization
public SelectedEdition() {
try {
editionIdentifier = Edition.getEditions(EditionFormat.AUDIO)[0].getIdentifier();
} catch (final IOException e) {
editionIdentifier = "ar.abdulbasitmurattal";
}
index = 0;
}
}

View File

@ -1,12 +1,12 @@
package com.anas.intellij.plugins.ayah.settings;
package com.anas.intellij.plugins.ayah.settings.userinterface;
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
/**
* @author: <a href="https://github.com/anas-elgarhy">Anas Elgarhy</a>
* @date: 8/19/22
* @author <a href="https://github.com/anas-elgarhy">Anas Elgarhy</a>
* @since 8/19/22
*/
public class PanelBuilder {
private final JPanel panel;

View File

@ -1,26 +1,22 @@
package com.anas.intellij.plugins.ayah.settings;
package com.anas.intellij.plugins.ayah.settings.userinterface;
import com.anas.alqurancloudapi.edition.Edition;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
/**
* @author: <a href="https://github.com/anas-elgarhy">Anas Elgarhy</a>
* @date: 8/20/22
* @author <a href="https://github.com/anas-elgarhy">Anas Elgarhy</a>
* @since 8/20/22
*/
@RequiredArgsConstructor
@Getter
public class ReadableEdition {
private final Edition edition;
public ReadableEdition(final Edition edition) {
this.edition = edition;
}
public ReadableEdition(final String identifier) {
this.edition = new Edition(identifier);
}
public Edition getEdition() {
return edition;
}
@Override
public String toString() {
return edition.getName() + " (" + edition.getLanguage() + ")";

View File

@ -1,11 +1,13 @@
package com.anas.intellij.plugins.ayah.settings;
package com.anas.intellij.plugins.ayah.settings.userinterface;
import com.anas.alqurancloudapi.edition.Edition;
import com.anas.alqurancloudapi.edition.EditionFormat;
import com.anas.intellij.plugins.ayah.settings.AyahSettingsState;
import com.anas.intellij.plugins.ayah.settings.BasmalhOnStart;
import com.anas.intellij.plugins.ayah.settings.SelectedEdition;
import com.intellij.ui.components.JBCheckBox;
import com.intellij.ui.components.JBLabel;
import com.intellij.ui.components.JBSlider;
import com.intellij.util.ui.FormBuilder;
import net.miginfocom.swing.MigLayout;
@ -17,8 +19,8 @@ import java.util.logging.Logger;
/**
* The settings UI.
*
* @author: <a href="https://github.com/anas-elgarhy">Anas Elgarhy</a>
* @date: 8/19/22
* @author <a href="https://github.com/anas-elgarhy">Anas Elgarhy</a>
* @since 8/19/22
*/
public class SettingsComponent {
private final JPanel panel;
@ -70,9 +72,9 @@ public class SettingsComponent {
)
.getPanel();
loadComboBoxesValues();
setup();
addListeners();
loadComboBoxesValues();
}
private void setup() {
@ -87,12 +89,14 @@ public class SettingsComponent {
notificationsAudioCheckBox.setSelected(settings.isAutoPlayAudio());
basmalhPlayerIdComboBox.setEnabled(settings.getBasmalhOnStart().isActive());
if (settings.getBasmalhOnStart().getEditionId() != null) {
basmalhPlayerIdComboBox.setSelectedItem(new ReadableEdition(settings.getBasmalhOnStart().getEditionId()));
}
if (settings.getEditionId() != null) {
ayahPlayerIdComboBox.setSelectedItem(new ReadableEdition(settings.getEditionId()));
if (basmalhPlayerIdComboBox.getItemCount() <= 0) {
basmalhPlayerIdComboBox.addItem(new ReadableEdition(settings.getBasmalhOnStart()
.getEdition().getEditionIdentifier()));
ayahPlayerIdComboBox.addItem(new ReadableEdition(settings.getEdition().getEditionIdentifier()));
}
basmalhPlayerIdComboBox.setSelectedIndex(settings.getBasmalhOnStart().getEdition().getIndex());
ayahPlayerIdComboBox.setSelectedIndex(settings.getEdition().getIndex());
}
private void addListeners() {
@ -120,12 +124,14 @@ public class SettingsComponent {
public boolean isModified() {
final var settings = AyahSettingsState.getInstance();
return settings.getBasmalhOnStart().getEditionId() != null &&
!settings.getBasmalhOnStart().getEditionId()
.equals(((ReadableEdition) basmalhPlayerIdComboBox.getSelectedItem()).getEdition()) ||
settings.getEditionId() != null &&
!settings.getEditionId()
.equals(((ReadableEdition) ayahPlayerIdComboBox.getSelectedItem()).getEdition()) ||
return settings.getBasmalhOnStart().getEdition() != null &&
!settings.getBasmalhOnStart().getEdition().getEditionIdentifier()
.equals(((ReadableEdition) basmalhPlayerIdComboBox.getSelectedItem())
.getEdition().getIdentifier()) ||
settings.getEdition() != null &&
!settings.getEdition().getEditionIdentifier()
.equals(((ReadableEdition) ayahPlayerIdComboBox.getSelectedItem())
.getEdition().getIdentifier()) ||
settings.getIntervalTimeBetweenNotifications() != notificationsIntervalSpinnerModel.getNumber().intValue() ||
settings.getBasmalhOnStart().isActive() != basmalhOnStartCheckBox.isSelected() ||
settings.getBasmalhOnStart().isSoundActive() != autoPlayBasmalhCheckBox.isSelected() ||
@ -144,8 +150,8 @@ public class SettingsComponent {
final var b = new BasmalhOnStart();
b.setActive(basmalhOnStartCheckBox.isSelected());
b.setSoundActive(autoPlayBasmalhCheckBox.isSelected());
b.setEditionId(((ReadableEdition) Objects.requireNonNull(
basmalhPlayerIdComboBox.getSelectedItem())).getEdition().getIdentifier());
b.setEdition(new SelectedEdition(((ReadableEdition) Objects.requireNonNull(
basmalhPlayerIdComboBox.getSelectedItem())).getEdition().getIdentifier(), basmalhPlayerIdComboBox.getSelectedIndex()));
return b;
}
@ -157,7 +163,9 @@ public class SettingsComponent {
return notificationsAudioCheckBox.isSelected();
}
public Edition getEdition() {
return ((ReadableEdition) ayahPlayerIdComboBox.getSelectedItem()).getEdition();
public SelectedEdition getSelectedEdition() {
return new SelectedEdition(((ReadableEdition) ayahPlayerIdComboBox
.getSelectedItem()).getEdition().getIdentifier(),
ayahPlayerIdComboBox.getSelectedIndex());
}
}

View File

@ -3,26 +3,19 @@
<!-- Unique identifier of the plugin. It should be FQN. It cannot be changed between the plugin versions. -->
<id>com.anas.intellij.plugins.ayah</id>
<depends>com.intellij.modules.platform</depends>
<!-- Public plugin name should be written in Title Case.
Guidelines: https://plugins.jetbrains.com/docs/marketplace/plugin-overview-page.html#plugin-name -->
<name>Ayah</name>
<!-- A displayed Vendor name or Organization ID displayed on the Plugins Page. -->
<!-- A displayed Vend`or name or Organization ID displayed on the Plugins Page. -->
<vendor email="anas.elgarhy.dev@gmail.com" url="https://github.com/anas-elgarhy">Anas Elgarhy</vendor>
<!-- Description of the plugin displayed on the Plugin Page and IDE Plugin Manager.
Simple HTML elements (text formatting, paragraphs, and lists) can be added inside of <![CDATA[ ]]> tag.
Guidelines: https://plugins.jetbrains.com/docs/marketplace/plugin-overview-page.html#plugin-description -->
<description><![CDATA[
<h3>Ayah</h3>
<p> Get a verse(an ayah) from the Quran during your coding session 💻 stay connected with the words of Allah. 🤍 </p>
<p align="center"> وَلا تَكُونُوا كَالَّذِينَ نَسُوا اللَّهَ فَأَنْسَاهُمْ أَنْفُسَهُمْ أُولَئِكَ هُمُ الْفَاسِقُونَ </p>
]]></description>
<!-- Product and plugin compatibility requirements.
Read more: https://plugins.jetbrains.com/docs/intellij/plugin-compatibility.html -->
<depends>com.intellij.modules.platform</depends>
<!-- Extension points defined by the plugin.
Read more: https://plugins.jetbrains.com/docs/intellij/plugin-extension-points.html -->
<extensions defaultExtensionNs="com.intellij">
@ -39,4 +32,4 @@
<notificationGroup displayType="BALLOON" id="Basmalh on Start" />
<notificationGroup displayType="BALLOON" id="Random Ayah Notification" />
</extensions>
</idea-plugin>
</idea-plugin>

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB