Compare commits

...

273 Commits

Author SHA1 Message Date
Márton Kiss
84e7fc60c2 Merge pull request #38 from refilc/dev
dev to master
2023-09-04 18:40:16 +02:00
Kima
6821887263 Merge branch 'dev' of github.com:refilc/naplo into dev 2023-09-04 18:39:53 +02:00
Kima
8f8ceb0597 removed prints 2023-09-04 18:39:49 +02:00
Márton Kiss
deb2403c23 Merge pull request #37 from refilc/master
master readme to dev branch
2023-09-04 18:38:06 +02:00
Márton Kiss
d65c722ef0 Merge pull request #36 from refilc/dev
dev minden is master-be
2023-09-04 18:37:18 +02:00
Kima
1bdc1409e4 updated version number 2023-09-04 18:33:24 +02:00
Kima
467eca6c14 fixed that shit timetable bug 2023-09-04 18:31:47 +02:00
Kima
da3abb7fb7 fixed school select (omfg nagyon szarul csinaltak) 2023-09-04 17:10:09 +02:00
Márton Kiss
a8a818225e modified readme 2023-09-03 23:53:28 +02:00
Kima
5e650869f2 added some hint for spaces after username 2023-09-03 22:13:39 +02:00
Kima
6e06d82b1a made goal planner modal dark mode compatible 2023-09-03 21:17:22 +02:00
Márton Kiss
79370f6a02 Merge pull request #31 from refilc/dev
everything from dev
2023-09-02 21:03:49 +02:00
Kima
d0dee1002d removed italic font toggle from teacher rename 2023-09-02 20:59:42 +02:00
Kima
7517fd976a removed asset image temporary 2023-09-02 20:54:50 +02:00
Kima
ac9e3e9ff3 removed reasonless test button lol 2023-09-02 20:53:09 +02:00
Kima
a8dce30022 modified app version 2023-09-02 20:47:55 +02:00
Kima
dac2e6e52e added translation for goal plan errors 2023-09-02 20:44:55 +02:00
Kima
b7c3534751 changed back temp goal planner things 2023-09-02 20:26:10 +02:00
Kima
2c04b7ca7c test subject icon 2023-09-02 15:45:18 +02:00
Kima
4a43f1607c added goal provider thing 2023-09-02 15:37:49 +02:00
Kima
fef0857050 worked on goal planner finish modal 2023-09-02 14:48:05 +02:00
Kima
9078634fb7 fixed live activity error message in console 2023-09-02 14:47:51 +02:00
Kima
e71c56a146 did things in goal planner 2023-08-31 00:51:52 +02:00
Kima
8f85116353 basically finished goal planner 2023-08-31 00:20:26 +02:00
Kima
1d6b9dd5d8 almost done with goal planning 2023-08-30 23:58:55 +02:00
Kima
2bd534fde9 fixed settings screen snapping 2023-08-30 01:30:11 +02:00
Kima
c05b358b49 fixed notification minden is 2023-08-30 01:22:41 +02:00
Márton Kiss
91255182d2 Merge pull request #29 from Monke14/notifications
Értesítések
2023-08-30 00:47:45 +02:00
Márton Kiss
5052f57ee6 Merge pull request #28 from TMarccci/dev
Tested functions, BugFixes, Key line tint around Dyn Island
2023-08-30 00:47:28 +02:00
hihihaha
d651f6acf0 fix typo 2023-08-29 15:43:34 +02:00
hihihaha
ea2b91ca15 add notification for lesson updates 2023-08-29 15:36:23 +02:00
hihihaha
e280227ee1 add notification for messages 2023-08-29 14:32:40 +02:00
hihihaha
bc4e4e9b5a add notification for absences 2023-08-29 13:45:52 +02:00
Tihanyi Marcell
e732b36cb8 Merge branch 'refilc:dev' into dev 2023-08-29 13:28:14 +02:00
Tihanyi Marcell
894f370dad Fixes 2023-08-29 13:27:25 +02:00
hihihaha
ec04a0ff81 Merge branch 'dev' into notifications 2023-08-29 11:27:27 +02:00
Kima
b4be0f66dc fixed warnings 2023-08-29 11:16:17 +02:00
Márton Kiss
8bfbaee1f5 Merge pull request #27 from TMarccci/dev
Added function: Live Activity Custom Color, Small Fixes
2023-08-29 11:11:13 +02:00
Kima
458cfdd8a7 added db col for live activity color 2023-08-29 11:10:37 +02:00
Tihanyi Marcell
2406e9a45d Added function Live Activity Color change, Fixes 2023-08-29 02:12:05 +02:00
Tihanyi Marcell
d952b23b85 Merge branch 'dev' of https://github.com/refilc/naplo into dev 2023-08-29 02:08:01 +02:00
Tihanyi Marcell
0245ddb99e Added function Live Activity Color change, Fixes 2023-08-29 02:06:18 +02:00
Kima
40dd967903 some progress in goal planner again 2023-08-29 00:24:57 +02:00
Kima
d524d452bd some progress in goal planner (started goal state) 2023-08-28 18:25:20 +02:00
Kima
0ac0586fba setted goal plans can be saved now 2023-08-28 02:33:39 +02:00
Kima
3e470981a8 made goal planner even better 2023-08-28 00:36:24 +02:00
Kima
09e416ab74 added rounded border icon (new style thing) 2023-08-27 23:58:32 +02:00
Kima
1314b2f068 fix import 2023-08-27 23:48:11 +02:00
Kima
4b70b6e035 added back pubspec xd 2023-08-27 21:42:47 +02:00
Kima
856b48675b Merge branch 'dev' of github.com:refilc/naplo into dev 2023-08-27 21:38:35 +02:00
ReinerRego
534a223cbf Update README.md
--recursive kiszedve mert nem kell
2023-08-27 21:10:25 +02:00
Kima
625c43d786 updated privacy policy 2023-08-26 21:12:17 +02:00
Kima
d1f79a63a1 added notifications to group 2023-08-26 20:25:01 +02:00
Kima
f4bf509fa7 fixed icon 2023-08-26 20:22:02 +02:00
Kima
8ff4f0b88f only show normal grade notifications 2023-08-26 20:19:05 +02:00
Kima
ee2a42bbe2 modified confetti 2023-08-26 20:08:32 +02:00
Kima
bc1ec45855 simplified news provider 2023-08-26 19:12:03 +02:00
Kima
6d4939d88a changed teacher rename ico 2023-08-26 17:24:47 +02:00
Kima
f7d263570d added beta chip, changed things 2023-08-26 17:21:34 +02:00
Kima
1ea0f95863 finished goal planner first half 2023-08-26 17:05:16 +02:00
Kima
6003f6fd2a actually finished teacher rename 2023-08-26 15:32:23 +02:00
Kima
ded029e4cb maybe finished teacher rename 2023-08-26 15:15:56 +02:00
Kima
e64ab75753 teacher rename base and settings done :orbnsmirk: 2023-08-26 14:56:57 +02:00
Kima
2d11c45972 added rounded expansion tile (fixed absence bug) 2023-08-26 13:50:03 +02:00
Kima
63e5ccb7c3 added rounded expansion tile (fixed absence bug) 2023-08-26 13:27:58 +02:00
Kima
568d4cb769 Merge branch 'dev' of github.com:refilc/naplo into dev 2023-08-26 12:59:35 +02:00
Kima
88297cc181 modified gitignore 2023-08-26 12:59:23 +02:00
Márton Kiss
e5ed6c33ed Delete generated_plugin_registrant.h 2023-08-26 12:58:16 +02:00
Márton Kiss
1e7fbfd0a4 Delete generated_plugin_registrant.cc 2023-08-26 12:58:09 +02:00
Márton Kiss
87cd1a40f4 Delete generated_plugins.cmake 2023-08-26 12:55:55 +02:00
Márton Kiss
0d7d6738df Delete Podfile.lock 2023-08-26 12:53:43 +02:00
Márton Kiss
c3dd4a3b7e Delete GeneratedPluginRegistrant.swift 2023-08-26 12:51:32 +02:00
Márton Kiss
76b2492ba8 Delete Podfile.lock 2023-08-26 12:51:03 +02:00
Kima
758bcda581 Merge branch 'master' into dev 2023-08-26 12:14:17 +02:00
Kima
520d2f2ce0 increased grade calculator limit to 50 grades 2023-08-26 11:30:36 +02:00
Kima
8855dc4820 commented out widget test 2023-08-26 11:24:34 +02:00
Kima
6fda457bbb added back profile picture crop functionality 2023-08-26 00:19:41 +02:00
Kima
360426d851 fixed some of the widget bugs and removed assets 2023-08-25 23:20:44 +02:00
Kima
bad9ed000b fixed some of the widget bugs and removed assets 2023-08-25 23:20:22 +02:00
Kima
18b1b00f45 Merge branch 'dev' 2023-08-25 21:30:43 +02:00
Márton Kiss
7bd5653a5f Delete .flutter-plugins-dependencies 2 2023-08-23 00:30:55 +02:00
Márton Kiss
fb4e0f644a Delete .flutter-plugins 2 2023-08-23 00:30:48 +02:00
Márton Kiss
7766832d5f Delete .flutter-plugins-dependencies 2 2023-08-23 00:30:35 +02:00
Márton Kiss
11ae42cb03 Delete .flutter-plugins 2 2023-08-23 00:30:24 +02:00
Márton Kiss
de6ddb42ae Delete .flutter-plugins-dependencies 2 2023-08-23 00:30:03 +02:00
Márton Kiss
c100a032d6 Delete .flutter-plugins 2 2023-08-23 00:29:52 +02:00
Márton Kiss
6b8eb120f0 Delete .flutter-plugins-dependencies 2 2023-08-23 00:29:26 +02:00
Márton Kiss
b9b79fdde2 Delete .flutter-plugins 2 2023-08-23 00:29:15 +02:00
Kima
40ca5fe0a1 Merge branch 'master' of github.com:refilc/naplo 2023-08-23 00:04:36 +02:00
Kima
e183c17c9f look at the changes 😏 2023-08-23 00:04:33 +02:00
Kima
d2003893e8 changed error message in api client (nothing lol) 2023-08-16 02:11:41 +02:00
Kima
22cd08165b added notification support on linux 2023-08-04 13:48:36 +02:00
Kima
1f62a71cd5 i'll never make this shit work on web lol, go nuxt 2023-08-01 21:13:40 +02:00
Kima
93fab8196d added web support 2023-08-01 18:47:10 +02:00
Kima
5523a2a919 fixed lot of ui things 2023-07-31 23:20:30 +02:00
kima
d79045e47f modified personality requirements 2023-06-27 20:38:52 +02:00
kima
cffd93bfe6 fixed auto update and changed build number 2023-06-27 18:22:00 +02:00
kima
d2c762d29a fixed error screen bug in summary maybe 2023-06-26 21:15:25 +02:00
kima
9d9f99a955 fixed long subject names in grades summary 2023-06-25 14:55:01 +02:00
kima
2c5939fab4 fixed misaligned text on final sum page 2023-06-25 14:50:54 +02:00
kima
95ed503e53 fixed 0 min delay thingies 2023-06-25 14:47:06 +02:00
kima
51e2c63134 fixed navigation and ui bugs in summary 2023-06-25 14:36:18 +02:00
kima
50bc03f403 updated version string 2023-06-25 00:11:44 +02:00
kima
f5bc16ba42 created translation for personality card 2023-06-24 23:58:06 +02:00
kima
f4501ce251 finished translation for summary 2023-06-24 21:41:18 +02:00
kima
3317472773 fixed end-year average 2023-06-23 11:20:18 +02:00
kima
acdd47a49a fixed style bug and added reveal check to buttons 2023-06-23 01:17:26 +02:00
kima
fa8be89aaf fixed some issues and added gallery save feature 2023-06-23 01:06:48 +02:00
kima
5034af2fb4 finished animations and started reveal/share 2023-06-23 00:54:56 +02:00
kima
87842de421 finished personality card style 2023-06-22 23:33:28 +02:00
kima
1f46a0509f fixed summary crash error 2023-06-22 21:55:57 +02:00
kima
8e9713e436 almost finished personality page 2023-06-22 21:12:34 +02:00
kima
fe0a7d81ae finished personalities map 2023-06-22 20:52:45 +02:00
kima
f9e14349b7 Merge branch 'master' of github.com:refilc/naplo 2023-06-22 19:44:09 +02:00
kima
a1f087758f started summary personality page 2023-06-22 19:15:02 +02:00
kima
4068abdb95 finished final summary style and fixed thingies 2023-06-22 16:45:57 +02:00
kima
9314c613bc added lessons/misses page and final summary page 2023-06-22 15:59:57 +02:00
Márton Kiss
458e93e19f Merge pull request #25 from Monke14/master
fix italics toggle bugs
2023-06-20 17:44:42 +02:00
hihihaha
ba8d26d250 fix italics toggle bugs 2023-06-20 16:19:49 +02:00
Márton Kiss
33e3495d9f Merge pull request #23 from Monke14/master
fix high network usage
2023-06-20 10:28:27 +02:00
Márton Kiss
f71e72e443 Merge pull request #24 from PredatorPotatoX/master
Contribution guide update
2023-06-20 10:26:28 +02:00
hihihaha
c615a33bd2 make variable private 2023-06-19 22:34:53 +02:00
PredatorPotatoX
7ad0ea26e2 Contributing guide update 2023-06-19 21:04:32 +02:00
hihihaha
0ad663beb3 fix network activity 2023-06-18 17:36:01 +02:00
kima
1366984c15 added start page to summary 2023-06-17 21:30:48 +02:00
kima
62d3895373 added next page button to summary 2023-06-17 20:41:30 +02:00
kima
3579c4e821 fixed grades page ui in summary 2023-06-17 20:04:11 +02:00
Kima
5c39865d40 commit 2023-06-17 16:37:24 +02:00
Kima
551b2849fe grade page done in summary 2023-06-16 01:30:17 +02:00
hihihaha
633601a0f3 absence notification 2023-06-15 18:31:27 +02:00
Márton Kiss
ce1c5eb0d8 fixed nonce login error 2023-06-15 09:33:36 +02:00
Márton Kiss
d929c804df Merge pull request #21 from TMarccci/master
LiveActivity
2023-06-14 23:53:17 +02:00
Tihanyi Marcell
19c128eecd LiveActivity 2023-06-14 23:46:21 +02:00
kima
57cf764804 updated version string 2023-06-14 23:08:54 +02:00
kima
ea812e0b67 fixed project problems 2023-06-13 23:37:35 +02:00
kima
1c517a99f2 fixed project problems 2023-06-13 23:37:25 +02:00
kima
2687cb146b gitignore changes 2023-06-13 23:35:11 +02:00
kima
1a9080dcc2 added event functionality and summary to livecard 2023-06-13 23:27:40 +02:00
Márton Kiss
580c92b13d Merge pull request #20 from TMarccci/master
On empty timetable block fullscreen mode.
2023-06-13 21:10:04 +02:00
Tihanyi Marcell
ae4c4aa89c Merge branch 'refilc:master' into master 2023-06-12 21:54:47 +02:00
Tihanyi Marcell
ded7c51f44 Block empty fullscreen timetable 2023-06-12 21:54:13 +02:00
Márton Kiss
485e85ddaa Merge pull request #19 from TMarccci/master
Fixes
2023-06-12 20:26:48 +02:00
Márton Kiss
3c0082a786 Merge pull request #18 from CroatianHusky/master
Developer Settings i18n + Notifications toggle color fix
2023-06-12 20:25:28 +02:00
Tihanyi Marcell
c474512088 Live Activity version update, build-ipa.sh 2023-06-12 20:11:15 +02:00
Tihanyi Marcell
f78a542be2 iOS notification permission fix 2023-06-12 20:09:48 +02:00
Tihanyi Marcell
131454b99d Notification Capabilitie 2023-06-12 20:09:27 +02:00
Tihanyi Marcell
e255182b93 Removed " " from login 2023-06-12 20:09:11 +02:00
Tihanyi Marcell
3857896d6c Ghost Grade title overflow fix 2023-06-12 20:08:53 +02:00
CroatianHusky
301e8cb638 Updated settings_screen.i18n.dart 2023-06-12 17:35:13 +02:00
CroatianHusky
ae7c724f65 notification toggle color fix 2023-06-12 17:33:00 +02:00
CroatianHusky
751cd04ce2 developer settings i18n 2023-06-12 17:14:42 +02:00
Márton Kiss
a88ccfa3fc Merge pull request #15 from Monke14/notifications
Értesítések
2023-06-10 22:47:03 +02:00
Márton Kiss
9e914974b7 Merge branch 'master' into notifications 2023-06-10 22:46:40 +02:00
Kima
9cfa8296b8 fixed some bugs 2023-06-10 22:38:01 +02:00
hihihaha
27ef942723 fix headless task 2023-06-10 21:46:53 +02:00
hihihaha
fe03554fbf backend changes 2023-06-10 21:19:49 +02:00
hihihaha
8c2227df73 update design 2023-06-10 21:03:01 +02:00
hihihaha
0274c2f070 start on boot 2023-06-10 20:43:03 +02:00
hihihaha
8f85c6a33b add timeout safety to headless task 2023-06-10 20:41:31 +02:00
hihihaha
cf81ca8207 add annotation to function 2023-06-10 20:39:06 +02:00
hihihaha
07bbafe7dd add toggle for notifications in settings 2023-06-10 20:34:01 +02:00
hihihaha
3eee2c7a55 set grade as seen 2023-06-10 19:55:40 +02:00
hihihaha
1cdde3b6ce add notification 2023-06-10 19:50:32 +02:00
Márton Kiss
67aea46c06 Update navigation_screen.dart 2023-06-10 13:59:03 +02:00
Márton Kiss
7adec7dfa5 maybe fixed dark mode bug 2023-06-10 13:57:11 +02:00
Kima
95fa819ed2 updatet things in pubspec 2023-06-10 13:26:28 +02:00
Kima
1e87d344e2 fixed versions in pubspec 2023-06-10 11:25:24 +02:00
Márton Kiss
9223375304 Merge pull request #11 from CroatianHusky/master
"Új jegyek" többesszám fix + verzió "v?" fix
2023-06-10 11:10:04 +02:00
Márton Kiss
bb862f15bd Merge pull request #10 from PredatorPotatoX/master
CONTRIBUTING.md link fix
2023-06-10 11:09:46 +02:00
CroatianHusky
261c94e9bb fixed version counter "v?" 2023-06-10 10:38:26 +02:00
CroatianHusky
06016514e5 new grade plurality fix 2023-06-10 09:32:21 +02:00
CroatianHusky
cead24b65a removed dead filc links from pubspec 2023-06-10 09:29:44 +02:00
PredatorPotatoX
6eaab57468 CONTRIBUTING.md link fix 2023-06-09 23:31:29 +02:00
Márton Kiss
5852fc233d Update AndroidManifest.xml 2023-06-09 21:15:25 +02:00
Márton Kiss
d7e21f6332 Update update_helper.dart 2023-06-09 21:13:38 +02:00
Márton Kiss
c78b8d3b97 Merge pull request #9 from Monke14/bug-fixes
Dőlt betűk toggle
2023-06-09 20:15:31 +02:00
hihihaha
940e3d8ca1 add toggle for italics 2023-06-09 17:29:03 +02:00
Márton Kiss
e31d0753d1 Merge pull request #8 from TMarccci/master
I think I fixed this
2023-06-09 16:55:05 +02:00
Tihanyi Marcell
526c66f358 I think I fixed this 2023-06-09 16:53:28 +02:00
Kima
d6833a952d changed version string 2023-06-09 16:40:53 +02:00
Kima
4760761bb7 Merge branch 'master' of github.com:refilc/naplo 2023-06-09 16:25:34 +02:00
Kima
a33e6dae3b fixed auto-update error bug 2023-06-09 16:25:31 +02:00
Márton Kiss
d393181f10 Update grade_provider.dart 2023-06-09 16:06:17 +02:00
Márton Kiss
12df8b82c7 Merge pull request #7 from TMarccci/master
Handle disabled Live Activity, i18n AverageSelector won't update, ...
2023-06-09 16:02:05 +02:00
Tihanyi Marcell
1c7eba7af3 Appgroup id: not refilc2 2023-06-09 15:44:37 +02:00
Tihanyi Marcell
d39cdaef10 Fixed i18n wont update to AverageSelector 2023-06-09 14:22:15 +02:00
Tihanyi Marcell
cc40fb9c0f Ignore disabled live activity 2023-06-09 11:13:35 +02:00
Tihanyi Marcell
85c6d548ad Ignore null and - i18n 2023-06-09 11:08:00 +02:00
Kima
8dbf605450 added black accent color 2023-06-08 21:28:28 +02:00
Kima
2f418a7c1a updated version string 2023-06-08 21:19:46 +02:00
Kima
5f0c82f54c added grade value translations 2023-06-08 21:18:20 +02:00
Kima
4e659308e5 fixed subject rename at homeworks 2023-06-08 20:38:10 +02:00
Kima
50e24bde17 added disable fading to all filter/tab bars 2023-06-08 20:07:17 +02:00
Márton Kiss
31f7c6a465 Merge pull request #6 from Monke14/bug-fixes
some fixes - by Monke14
2023-06-08 20:01:22 +02:00
Márton Kiss
e734579249 Merge branch 'master' into bug-fixes 2023-06-08 19:59:57 +02:00
Márton Kiss
2cff46d628 Merge pull request #5 from TMarccci/master
fixed lot of things - by TMarccci
2023-06-08 19:56:35 +02:00
Kima
87f3f93177 started creating end-year summary and stb 2023-06-08 19:53:50 +02:00
hihihaha
30733caa4a remove home screen tabbar fade 2023-06-08 16:18:39 +02:00
hihihaha
4e30a550e1 fix chart overflow 2023-06-08 16:18:08 +02:00
hihihaha
cb687d6b10 add themed icon 2023-06-08 16:17:56 +02:00
hihihaha
6c6d3a7cd8 fix english translations 2023-06-08 16:17:46 +02:00
Tihanyi Marcell
da06e400e1 Login add " ", Comment rename 2023-06-08 13:47:40 +02:00
Tihanyi Marcell
87b8cbb60f HotFix 2023-06-08 12:59:09 +02:00
Tihanyi Marcell
8bac300585 goalPlanner remove 2023-06-08 12:54:46 +02:00
Tihanyi Marcell
da7d2b9333 Fixed: Settings UI, Live Act, Class Avg 2023-06-08 12:44:47 +02:00
Kima
e1f84caf19 changed refilc bday strings 2023-06-07 21:27:56 +02:00
Kima
274da2b766 ok 2023-06-07 21:21:35 +02:00
Kima
35aba35801 Merge branch 'master' of github.com:refilc/naplo 2023-06-07 20:50:48 +02:00
Kima
964e002c46 added og filc color to accents 2023-06-07 20:50:45 +02:00
Márton Kiss
d3318e10ab fixed download counter in readme 2023-06-07 20:22:41 +02:00
Kima
4c43369d59 updated version string 2023-06-07 19:22:55 +02:00
Kima
176243b881 started uwu mode 2023-06-06 21:46:10 +02:00
Kima
ed02a340d0 ok 2023-06-06 21:11:52 +02:00
Kima
2877f4fc5c oke mostmar tenyleg fix 😭 vagy pedig mas baja 2023-06-06 21:03:30 +02:00
Kima
fceb3bf31a fixed settings screen version check 2023-06-06 20:58:33 +02:00
Kima
9883d081ff added back button to full-screen timetable 2023-06-06 20:27:37 +02:00
Kima
db5a9fb197 fixed translate bugs and subject name things 2023-06-06 19:18:56 +02:00
Kima
93438ce3df Merge branch 'master' of github.com:refilc/naplo 2023-06-05 21:21:48 +02:00
Kima
95bca64fb8 fixed quick actions colors 2023-06-05 21:21:45 +02:00
Pearoo
7821e10869 Update README.md 2023-06-01 10:58:53 +00:00
Pearoo
cede3c3129 Merge branch 'master' of https://github.com/refilc/naplo 2023-05-31 00:00:25 +02:00
Pearoo
528ee862b9 Update README.md - Squircle ikon 2023-05-30 21:28:25 +00:00
Kima
d1507f5eae fixed most reported bugs 2023-05-30 19:27:16 +02:00
Kima
f5682e9137 fixed most reported bugs 2023-05-30 19:26:41 +02:00
Pearoo
518932c260 Merge branch 'master' of https://github.com/refilc/naplo 2023-05-29 22:10:16 +02:00
ZiziHun
139d8869c2 Update date 2023-05-29 17:01:03 +02:00
Gergő Móricz
29bf0c81dd Revert "pubspec name fix"
This reverts commit ef7437979c.
2023-05-29 14:58:48 +02:00
Gergő Móricz
9e510bed2d Merge pull request #2 from Monke14/bug-fixes
Bug fixek
2023-05-29 14:56:29 +02:00
Vízhányó Balázs
ef7437979c pubspec name fix 2023-05-29 14:50:05 +02:00
Vízhányó Balázs
b1e68f18b0 Package name fix 2023-05-29 14:48:23 +02:00
hihihaha
5e02e697d2 fix grade color 2023-05-29 14:36:15 +02:00
hihihaha
bfa77fcfb6 fix android icon scaling 2023-05-29 14:31:37 +02:00
Pearoo
bcf9d9688f Update README.md 2023-05-29 11:34:32 +00:00
Pearoo
281b9cf6c4 Update .gitignore 2023-05-29 13:31:03 +02:00
Pearoo
fb0de5a991 Prémium képek törölve 2023-05-29 13:07:08 +02:00
Móricz Gergő
e6fb8a8a50 fix(ios): fix bundle and team 2023-05-29 12:05:10 +02:00
Móricz Gergő
e93a05f795 fix permissions of build-ipa.sh 2023-05-29 12:03:30 +02:00
Móricz Gergő
8c7601c1bc bump version 2023-05-29 12:02:59 +02:00
Kima
5d18354cbb added release confetti and welcome message 2023-05-29 10:05:25 +02:00
Kima
7543f946f2 Merge branch 'master' of github.com:refilc/naplo 2023-05-28 17:32:41 +02:00
Kima
e75112b043 changed api endpoints to refilc api 2023-05-28 17:32:38 +02:00
kima
7b28688925 webhook teszt 2 2023-05-28 15:40:20 +02:00
kima
348d575c62 dc webhook teszt 2023-05-28 15:39:11 +02:00
kima
e81490ec34 Update README.md 2023-05-28 15:01:13 +02:00
Kima
ebdac408b0 fixed grade font size 2023-05-28 12:51:45 +02:00
Kima
9411208f81 commented "remove premium" button 2023-05-28 09:45:32 +02:00
Kima
9a7f8c06f6 Merge branch 'master' of github.com:refilc/naplo 2023-05-27 22:37:07 +02:00
Kima
0f6e6bfb65 fixed account edit bugs 2023-05-27 22:37:04 +02:00
chromium
8f499bd050 Delete release.yml 2023-05-27 18:24:13 +02:00
chromium
80069719f2 Create release.yml 2023-05-27 18:22:02 +02:00
chromium
48c904258a remove broken script from build action 2023-05-27 16:38:24 +02:00
chromium
1606d9da99 maybe fix actions build 2023-05-27 16:33:06 +02:00
Vízhányó Balázs
87e185f6f1 Contributing.md fix 2023-05-27 16:25:28 +02:00
chromium
80f1896752 fix end of line sequence for fix-d8dx.sh 2023-05-27 16:09:52 +02:00
chromium
1e5e984fe6 Update android.yml 2023-05-27 16:07:03 +02:00
Gergő Móricz
4f5c36db18 fix secret names 2023-05-27 16:06:33 +02:00
chromium
8090ff35ec Update and rename build.yml to android.yml 2023-05-27 15:55:51 +02:00
Gergő Móricz
3b6af5fe9f add iOS github action 2023-05-27 15:49:09 +02:00
chromium
d10eab19fc Update build.yml 2023-05-27 15:47:28 +02:00
Móricz Gergő
03a779ea9c fix(build): scripts shouldn't need fish 2023-05-27 15:46:18 +02:00
Vízhányó Balázs
be269a4a34 Merge branch 'master' of https://github.com/refilc/naplo 2023-05-27 15:44:28 +02:00
Vízhányó Balázs
0e25c68e5a Settings - about 2023-05-27 15:44:21 +02:00
chromium
364f41e3c4 fix build script 2023-05-27 15:43:47 +02:00
chromium
de079bd6ee fix fucky end of line sequence on build script 2023-05-27 15:39:37 +02:00
chromium
35524589e4 Update build.gradle 2023-05-27 15:28:20 +02:00
chromium
cdd8886692 Delete filc3.properties 2023-05-27 15:26:29 +02:00
chromium
4ddf99feb4 Update build.yml 2023-05-27 15:25:06 +02:00
chromium
4ff065d1b4 actions 2023-05-27 15:22:24 +02:00
Móricz Gergő
9d355dbc00 bump 2023-05-27 15:15:52 +02:00
Móricz Gergő
eb9e433070 add build-ipa.sh 2023-05-27 15:15:22 +02:00
Móricz Gergő
62694c4bb8 rename 2023-05-27 15:14:48 +02:00
chromium
5cb4e5c82e don't copy built apk file to the desktop 2023-05-27 15:02:45 +02:00
Móricz Gergő
74caba75d6 bump version 2023-05-27 14:56:36 +02:00
315 changed files with 15338 additions and 5186 deletions

40
.github/workflows/android.yml vendored Normal file
View File

@@ -0,0 +1,40 @@
name: Build for Android
on: workflow_dispatch
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Download Android keystore
id: android_keystore
uses: timheuer/base64-to-file@v1.0.3
with:
fileName: upload-keystore.jks
encodedString: ${{ secrets.KEYSTORE_BASE64 }}
- name: Create key.properties
run: |
echo "storeFile=${{ steps.android_keystore.outputs.filePath }}" > filcnaplo/android/key.properties
echo "storePassword=${{ secrets.STORE_PASSWORD }}" >> filcnaplo/android/key.properties
echo "keyPassword=${{ secrets.KEY_PASSWORD }}" >> filcnaplo/android/key.properties
echo "keyAlias=${{ secrets.KEY_ALIAS }}" >> filcnaplo/android/key.properties
- uses: actions/setup-java@v3
with:
distribution: "zulu"
java-version: "17.x"
cache: "gradle"
- uses: subosito/flutter-action@v2
with:
flutter-version: "3.10.2"
channel: "stable"
cache: "true"
- name: Install dependencies
run: ./fix-pub.sh
- name: Build
run: cd filcnaplo && ./build.sh
- name: Upload Android Release
uses: actions/upload-artifact@v2
with:
name: android-release
path: build/outputs/flutter-apk/app-release.apk

65
.github/workflows/ios.yml vendored Normal file
View File

@@ -0,0 +1,65 @@
name: "Build and Publish iOS"
on: workflow_dispatch
jobs:
build:
runs-on: macos-latest
steps:
# Checks-out our repository under $GITHUB_WORKSPACE, so our job can access it
- name: Checkout repository
uses: actions/checkout@v2
# Install the Apple certificate and provisioning profile
- name: Install the Apple certificate and provisioning profile
env:
BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.BUILD_PROVISION_PROFILE_BASE64 }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
run: |
# create variables
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
# import certificate and provisioning profile from secrets
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode --output $CERTIFICATE_PATH
echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode --output $PP_PATH
# create temporary keychain
security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
# import certificate to keychain
security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH
# apply provisioning profile
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles
# Install flutter
- name: Flutter get
uses: subosito/flutter-action@v1
with:
flutter-version: '3.10.2'
# Install your project's dependencies
- name: Install dependencies
run: bash fix-pub.sh
# Build and sign the ipa using a single flutter command
- name: Building IPA
working-directory: filcnaplo
run: bash build-ipa.sh
# Collect the file and upload as artifact
- name: collect ipa artifacts
uses: actions/upload-artifact@v2
with:
name: release-ipa
# Path to the release files
path: filcnaplo/build/ios/ipa/*.ipa
# Important! Cleanup: remove the certificate and provisioning profile from the runner!
- name: Clean up keychain and provisioning profile
if: ${{ always() }}
run: |
security delete-keychain $RUNNER_TEMP/app-signing.keychain-db
rm ~/Library/MobileDevice/Provisioning\ Profiles/build_pp.mobileprovision

24
.gitignore vendored
View File

@@ -1,5 +1,7 @@
# See https://www.dartlang.org/guides/libraries/private-files # See https://www.dartlang.org/guides/libraries/private-files
.gitignore
termek.txt termek.txt
.DS_Store .DS_Store
filc3.properties filc3.properties
@@ -25,3 +27,25 @@ doc/api/
*.js.map *.js.map
*.txt *.txt
filcnaplo/macos/Flutter/GeneratedPluginRegistrant.swift
filcnaplo/windows/flutter/ephemeral/.plugin_symlinks/connectivity_plus
filcnaplo/windows/flutter/ephemeral/.plugin_symlinks/dynamic_color
filcnaplo/windows/flutter/ephemeral/.plugin_symlinks/flutter_acrylic
filcnaplo/windows/flutter/ephemeral/.plugin_symlinks/path_provider_windows
filcnaplo/windows/flutter/ephemeral/.plugin_symlinks/permission_handler_windows
filcnaplo/windows/flutter/ephemeral/.plugin_symlinks/share_plus_windows
filcnaplo/windows/flutter/ephemeral/.plugin_symlinks/url_launcher_windows
filcnaplo/windows/flutter/ephemeral/generated_config.cmake
filcnaplo/windows/flutter/generated_plugin_registrant.cc
filcnaplo/windows/flutter/generated_plugin_registrant.h
filcnaplo/windows/flutter/generated_plugins.cmake
filcnaplo/linux/flutter/generated_plugin_registrant.cc
filcnaplo/linux/flutter/generated_plugin_registrant.h
filcnaplo/linux/flutter/generated_plugins.cmake
filcnaplo/macos/Flutter/*
filcnaplo/ios/Podfile.lock
.vscode/
key.properties
.flutter-plugins*
filcnaplo/ios/Flutter/flutter_export_environment 4.sh

1286
.idea/libraries/Dart_Packages.xml generated Normal file

File diff suppressed because it is too large Load Diff

27
.idea/libraries/Dart_SDK.xml generated Normal file
View File

@@ -0,0 +1,27 @@
<component name="libraryTable">
<library name="Dart SDK">
<CLASSES>
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/async" />
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/cli" />
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/collection" />
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/convert" />
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/core" />
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/developer" />
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/ffi" />
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/html" />
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/indexed_db" />
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/io" />
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/isolate" />
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/js" />
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/js_util" />
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/math" />
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/mirrors" />
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/svg" />
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/typed_data" />
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/web_audio" />
<root url="file:///opt/flutter/bin/cache/dart-sdk/lib/web_gl" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

4
.idea/misc.xml generated Normal file
View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Android API 33, extension level 3 Platform" project-jdk-type="Android SDK" />
</project>

60
.idea/naplo.iml generated
View File

@@ -2,7 +2,65 @@
<module type="JAVA_MODULE" version="4"> <module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true"> <component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output /> <exclude-output />
<content url="file://$MODULE_DIR$" /> <content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/.pub" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/build" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/flutter_acrylic/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/flutter_acrylic/example/build" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/flutter_acrylic/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo_desktop_ui/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo_desktop_ui/.pub" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo_desktop_ui/build" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/share_plus/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/share_plus/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/share_plus/example/build" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/dynamic_color/.pub" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/dynamic_color/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/dynamic_color/build" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/url_launcher_linux/.pub" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/url_launcher_linux/build" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/url_launcher_linux/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/dynamic_color/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/dynamic_color/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/dynamic_color/example/build" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo_premium/build" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo_premium/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo_premium/.pub" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/path_provider_linux/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/path_provider_linux/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/path_provider_linux/example/build" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/share_plus/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/share_plus/.pub" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/share_plus/build" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/url_launcher_linux/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/url_launcher_linux/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/url_launcher_linux/example/build" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/connectivity_plus/.pub" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/connectivity_plus/build" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/connectivity_plus/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/connectivity_plus/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/connectivity_plus/example/build" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/connectivity_plus/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/package_info_plus/.pub" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/package_info_plus/build" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/package_info_plus/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/path_provider_linux/build" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/path_provider_linux/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/path_provider_linux/.pub" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo_kreta_api/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo_kreta_api/build" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo_kreta_api/.pub" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo_mobile_ui/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo_mobile_ui/.pub" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo_mobile_ui/build" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/package_info_plus/example/.pub" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/package_info_plus/example/.dart_tool" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/package_info_plus/example/build" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/flutter_acrylic/build" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/flutter_acrylic/.pub" />
<excludeFolder url="file://$MODULE_DIR$/filcnaplo/linux/flutter/ephemeral/.plugin_symlinks/flutter_acrylic/.dart_tool" />
</content>
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
</component> </component>

24
.vscode/launch.json vendored
View File

@@ -1,7 +1,4 @@
{ {
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0", "version": "0.2.0",
"configurations": [ "configurations": [
{ {
@@ -10,8 +7,27 @@
"request": "launch", "request": "launch",
"type": "dart", "type": "dart",
"toolArgs": [ "toolArgs": [
"--dart-define=APPVER=$(cat pubspec.yaml | grep version: | cut -d' ' -f2 | cut -d+ -f1) --release" "--dart-define=APPVER=$(cat pubspec.yaml | grep version: | cut -d' ' -f2 | cut -d+ -f1)"
] ]
},
{
"name": "filcnaplo release",
"cwd": "filcnaplo release",
"request": "launch",
"type": "dart",
"flutterMode": "release",
"program": "lib/main.dart",
"toolArgs": [
"--dart-define=APPVER=$(cat pubspec.yaml | grep version: | cut -d' ' -f2 | cut -d+ -f1)"
]
},
{
"name": "Flutter",
"program": "lib/main.dart",
"cwd": "filcnaplo",
"request": "launch",
"type": "dart",
"flutterMode": "debug"
} }
] ]
} }

View File

@@ -1,39 +1,36 @@
# Contributing Guide # Contribution guide
Köszönjük, ha programozással segíted a munkánkat! Köszönjük, ha programozással segíted a munkánkat!
A folytatáshoz szükséged lesz egy Linuxot vagy Windowst futtató számítógépre, minimális programozási tapasztalatra és egy kis angoltudásra. A folytatáshoz szükséged lesz egy Linux-ot vagy Windows-t futtató számítógépre, minimális programozási tapasztalatra és egy kis angoltudásra.
Segít, ha nem csak kicsit tudsz programozni, és ha ismered a Gitet és a GitHubot ;) Segít, ha már gyakorlottabb vagy a programozásban, és ha ismered a [Git](https://git-scm.com/) és a [GitHub](https://github.com/) működését. ;)
## Miben segítsek? ## Miben segítsek?
Kérünk, **olyan dologgal járulj hozzá** a Filchez, ami valószínűleg **sok embernek hasznos lesz** majd. Szeretnénk egy minél teljeskörűbb iskolai asszisztenst létrehozni, de az iskolaspecifikus, vagy külön neked hasznos funkciók helye inkább legyen a saját forkod. Kérünk, **olyan dologgal járulj hozzá** a **reFilc**hez, ami valószínűleg **sok embernek hasznos lehet**. Szeretnénk egy minél teljeskörűbb iskolai asszisztenst létrehozni, de az iskolaspecifikus, vagy külön neked hasznos funkciók helye inkább legyen a saját Fork-od.
Fontos, hogy **mielőtt egy nagy volumenű projektbe belekezdesz, futtasd meg ötletedet a [Discord szerverünkön](https://filcnaplo.hu/discord),** ahol még azelőtt tudunk tanácsot adni, mielőtt sok-sok órát beleöltél volna egy esetleg felesleges dologba. Fontos, hogy **mielőtt egy nagyobb méretű projektbe belekezdenél, futtasd meg ötletedet a [Discord szerverünkön](https://dc.refilc.hu/)**, ahol még azelőtt tudunk tanácsot adni, hogy sok-sok órát beleöltél volna egy esetleg felesleges dologba.
A legjobban annak örülünk, ha az [Issues](https://github.com/filcnaplo/filcnaplo/issues) oldalról szemezgetsz, **ha lehet, a [priority taggel megjelöltekkel kezdd](https://github.com/filcnaplo/filcnaplo/issues?q=is%3Aissue+is%3Aopen+label%3Apriority),** vagy ha új vagy a Flutterhez, ajánljuk figyelmedbe [ezeket a viszonylag könnyen javítható hibákat](https://github.com/filcnaplo/filcnaplo/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) (ha épp van ilyen). A legjobban annak örülünk, ha az [Issues](https://github.com/refilc/naplo/issues) oldalról szemezgetsz. Ha még új vagy a Flutterben, ajánljuk figyelmedbe ezeket a [viszonylag könnyen javítható hibákat](https://github.com/refilc/naplo/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22), ha éppen van ilyen.
## Hogyan segítsek? ## Hogyan segítsek?
Nem ígérhetünk itt sem programozás-, sem Git-kurzust, de a projektspecifikus dolgokat leírjuk, és segítünk a Flutter telepítésében.
Nem ígérhetünk itt sem programozás-, sem git-kurzust, de a projektspecifikus dolgokat leírjuk, és segítünk a Flutter feltelepítésében. A **reFilc** a Google által pár éve létrehozott **[Flutter](https://flutter.dev/)** keretrendszert használja, aminek nyelve a **[Dart](https://dart.dev/)**. Ha ismered a C#, Java, C++, vagy egyéb hasonló programnyelvek működését, **nem fog nagy gondot okozni a használata.** A felhasználói felület létrehozásában az is segíthet, ha foglalkoztál már korábban weboldalakkal vagy alkalmazásfejlesztéssel.
Ha még nem használtad a Flutter-t, mindenképp böngészd át a [YouTube csatornájukat](https://www.youtube.com/channel/UCwXdFgeE9KYzlDdR7TG9cMw).
Kód vagy UI teszteléséhez Flutter telepítése nélkül is használhatod a [DartPad](https://dartpad.dev/)-et.
A Filc a Google által pár éve létrehozott **[Fluttert](https://flutter.dev/)** használja, aminek nyelve a **[Dart](https://dart.dev/)**. Ha ismered a C#-ot, Javát, C++t, vagy egyéb hasonló nyelvet, **nem fog gondot okozni a használata.** A felhasználói felület létrehozásában az is segíthet, ha foglalkoztál már korábban weboldalakkal. #### [Segítség a Flutter telepítéséhez](https://docs.flutter.dev/get-started/install)
Ha még nem használtál Fluttert, mindenképp böngészd át a [YouTube csatornájukat](https://www.youtube.com/channel/UCwXdFgeE9KYzlDdR7TG9cMw). **Használd a Flutter stable verzióját!** Írd be a terminálba: `flutter channel stable`
Könnyen tudsz kódot, vagy akár UI-t is tesztelni a [DartPad](https://dartpad.dev/) oldalon.
#### [Segítség a Flutter telepítéséhez és a forráskód futtatásához](/.github/SETUP.md) Ha nem értessz a Git-hez vagy a GitHub-hoz, ajánljuk figyelmedbe [ezt a cikket](https://medium.com/envienta-magyarorsz%C3%A1g/git-%C3%A9s-github-gyorstalpal%C3%B3-f2d78a732deb), viszont arra kérünk, hogy a használatukat ne a **reFilc**en próbáld ki először. Hozz létre egy saját Repo-t és abban tesztelgess. Ha már nagyjából kitapasztaltad, várjuk hozzájárulásodat.
Fontos: **Legyél a flutter beta verzióján!** Írd be: `flutter channel beta`
Készíts egy Fork-ot a saját GitHub fiókod alá.
A **reFilc** legfrissebb, **épp fejlesztés alatt álló verzióját a [master branch](https://github.com/refilc/naplo/tree/master)-en találod**. Kérjük ide Commit-olj és ide célozd a Fork-odból a Pull Request-edet. Írd le benne, hogy mit változtattál és ha lehet, csatolj képernyőképet is.
Ha nem értesz a Githez, ajánljuk figyelmedbe [ezt a cikket](https://medium.com/envienta-magyarorsz%C3%A1g/git-%C3%A9s-github-gyorstalpal%C3%B3-f2d78a732deb). Viszont arra kérünk, a Git használatát ne a Filcen próbáld ki először, hozz létre előbb egy saját Repót, és abba tesztelgess. Ha már nagyjából kitapasztaltad, várjuk hozzájárulásodat. Minél gyakrabban készíts minél részletesebben elnevezett Commit-okat, hogy mások is el tudjanak igazodni az általad beküldött kódban.
Készíts egy forkot a saját fiókod alá.
A Filc legfrissebb, épp fejlesztés alatt álló verzióját a [dev brancen](https://github.com/filcnaplo/filcnaplo/tree/dev) találod, kérjük ide commitolj, és ide célozd a forkodból a Pull Requested. Írd le benne, mit változtattál, és ha lehet, csatolj képernyőképet is.
Minél gyakrabban készíts minél részletesebben elnevezett commitokat, hogy el tudjunk tájékozódni az általad beküldött kódon.
--- ---
Az általad fejlesztett funkciók mellé a changelogban odakerül GitHub felhasználóneved. Az általad fejlesztett funkciók mellé a Changelog-ba odakerül a GitHub felhasználóneved.
Ha jelentős és rendszeres hozzájáruló vagy, Discordon megkapod a `DEV` rangot. Ha jelentős és rendszeres hozzájáruló vagy, Discord-on megkaphatod a `DEV` rangot.
Ha bárhol elakadtál, keress minket Discordon. Ha bárhol elakadtál vagy kérdésed van, keress bátran Discordon!
Jó fejlesztést kívánunk! **Jó fejlesztést kívánunk!**

View File

@@ -1,6 +1,6 @@
BSD 3-Clause License BSD 3-Clause License
Copyright (c) 2021, Filc Copyright (c) 2023, reFilc
All rights reserved. All rights reserved.
Redistribution and use in source and binary forms, with or without Redistribution and use in source and binary forms, with or without

View File

@@ -1,30 +1,24 @@
<p align=center> <p align=center>
<img src="https://media.discordapp.net/attachments/1111727410677825596/1111790518964326510/reFilc_Logo2.png?width=671&height=671" width=150> <img src="https://media.discordapp.net/attachments/1111727410677825596/1113217167513624646/reFilc_Logo_Squircle.png?width=671&height=671" width=150>
<h1 align=center><b>reFilc</b></h1> <h1 align=center><b>reFilc</b></h1>
</p> </p>
#### Nem hivatalos e-napló alkalmazás az eKRÉTA rendszerhez - tanulóktól, tanulóknak. #### Nem hivatalos e-napló alkalmazás az e-KRÉTA rendszerhez - tanulóktól, tanulóknak.
[![Downloads](https://img.shields.io/github/downloads-pre/refilc/naplo/latest/total?color=%23&label=Downloads&logo=github&sort=semver)](https://github.com/refilc/naplo/releases) &nbsp; [![discord](https://img.shields.io/discord/1111649116020285532?label=Discord)](http://dc.refilc.hu) [![Downloads](https://img.shields.io/github/downloads-pre/refilc/naplo/total?&logo=github&label=Downloads)](https://github.com/refilc/naplo/releases) &nbsp; [![Discord](https://img.shields.io/discord/1111649116020285532?logo=discord&label=Discord)](https://dc.refilc.hu)
## Setup ## Setup
### Clone the project ### Clone the project
```sh ```sh
git clone --recursive https://github.com/refilc/naplo git clone https://github.com/refilc/naplo
cd naplo cd naplo
``` ```
### Install packages ### Install packages
```sh Run `fix-pub.sh`
cd filcnaplo && flutter pub get && cd ..
cd filcnaplo_mobile_ui && flutter pub get && cd ..
cd filcnaplo_desktop_ui && flutter pub get && cd ..
cd filcnaplo_kreta_api && flutter pub get && cd ..
cd filcnaplo_premium && flutter pub get && cd ..
```
### Run the app ### Run the app
@@ -33,12 +27,24 @@ cd filcnaplo
flutter run flutter run
``` ```
### Contribution
**Nézd meg a [Contribution guide](CONTRIBUTING.md)-ot!**
Az összes (ugyan azon verzióhoz tartozó) contribution meg fog jelenni a release-nél. Kérjük, írd le a Discord nevedet a Description-be, hogy adhassunk rangot.
------- -------
# Kudo # Team
**kima:** head developer / project manager
**Reiner, pdf, Pearoo:** community- and project manager / developer
**annon:** a Filc napló készítője (ez az app a Filcen alapul) **vrolandd, TMarccci:** head developer
**kima, chromium, peighter, mog, WolfY:** a fejlesztői csapat **dwe., xou:** designer
**Regő, Pearoo:** weboldal design és community management **Péter:** social media manager / video editor
**annon:** a régi Filc Napló fejlesztője (ez az app, ha bár sokban változott, alapjaiban a Filc-re épül)

View File

@@ -44,3 +44,4 @@ app.*.map.json
/android/app/debug /android/app/debug
/android/app/profile /android/app/profile
/android/app/release /android/app/release
key.properties

View File

@@ -1,30 +1,30 @@
# This file tracks properties of this Flutter project. # This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc. # Used by Flutter tool to assess capabilities and perform upgrades etc.
# #
# This file should be version controlled. # This file should be version controlled.
version: version:
revision: 3c0bee85b8e43b860877922bdc411a7333db4d32 revision: f468f3366c26a5092eb964a230ce7892fda8f2f8
channel: beta channel: stable
project_type: app project_type: app
# Tracks metadata for the flutter migrate command # Tracks metadata for the flutter migrate command
migration: migration:
platforms: platforms:
- platform: root - platform: root
create_revision: 3c0bee85b8e43b860877922bdc411a7333db4d32 create_revision: f468f3366c26a5092eb964a230ce7892fda8f2f8
base_revision: 3c0bee85b8e43b860877922bdc411a7333db4d32 base_revision: f468f3366c26a5092eb964a230ce7892fda8f2f8
- platform: macos - platform: web
create_revision: 3c0bee85b8e43b860877922bdc411a7333db4d32 create_revision: f468f3366c26a5092eb964a230ce7892fda8f2f8
base_revision: 3c0bee85b8e43b860877922bdc411a7333db4d32 base_revision: f468f3366c26a5092eb964a230ce7892fda8f2f8
# User provided section # User provided section
# List of Local paths (relative to this file) that should be # List of Local paths (relative to this file) that should be
# ignored by the migrate tool. # ignored by the migrate tool.
# #
# Files that are not part of the templates will be ignored by default. # Files that are not part of the templates will be ignored by default.
unmanaged_files: unmanaged_files:
- 'lib/main.dart' - 'lib/main.dart'
- 'ios/Runner.xcodeproj/project.pbxproj' - 'ios/Runner.xcodeproj/project.pbxproj'

View File

@@ -26,7 +26,7 @@ apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
def keystoreProperties = new Properties() def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file("filc3.properties") def keystorePropertiesFile = rootProject.file("key.properties")
keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
android { android {
@@ -44,7 +44,7 @@ android {
} }
defaultConfig { defaultConfig {
applicationId "hu.filc.naplo" applicationId "hu.refilc.naplo"
minSdkVersion 21 minSdkVersion 21
targetSdkVersion rootProject.ext.targetSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion
versionCode flutterVersionCode.toInteger() versionCode flutterVersionCode.toInteger()

View File

@@ -1,4 +1,4 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="hu.filc.naplo"> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="hu.refilc.naplo">
<!-- Permissions --> <!-- Permissions -->
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.VIBRATE" />

View File

@@ -1,13 +1,15 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" package="hu.filc.naplo"> xmlns:tools="http://schemas.android.com/tools" package="hu.refilc.naplo">
<application android:label="reFilc" tools:replace="android:label" android:icon="@mipmap/ic_launcher" <application android:name="${applicationName}" android:label="reFilc" tools:replace="android:label" android:icon="@mipmap/ic_launcher"
android:requestLegacyExternalStorage="true"> android:requestLegacyExternalStorage="true">
<activity android:exported="true" android:name=".MainActivity" <activity android:exported="true" android:name="hu.refilc.naplo.MainActivity"
android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:launchMode="singleTop" android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize"
android:showWhenLocked="true" android:showWhenLocked="true"
android:turnScreenOn="true"> android:turnScreenOn="true">
<meta-data android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background" />
<meta-data android:name="io.flutter.embedding.android.NormalTheme" <meta-data android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme" /> android:resource="@style/NormalTheme" />
<intent-filter> <intent-filter>
@@ -18,16 +20,26 @@
<action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" /> <category android:name="android.intent.category.BROWSABLE" />
<!-- Accepts URIs that begin with https://api.filcnaplo.hu --> <!-- Accepts URIs that begin with https://api.refilcapp.hu -->
<data <data
android:scheme="https" android:scheme="https"
android:host="api.filcnaplo.hu" android:host="api.refilcapp.hu"
android:pathPrefix="/callback" /> android:pathPrefix="/v1/auth/callback" />
</intent-filter>
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Accepts URIs that begin with https://refilc.hu -->
<data
android:scheme="https"
android:host="refilc.hu"
android:pathPrefix="/app" />
</intent-filter> </intent-filter>
</activity> </activity>
<meta-data android:name="flutterEmbedding" android:value="2" /> <meta-data android:name="flutterEmbedding" android:value="2" />
<receiver android:name=".widget_timetable.WidgetTimetable" <receiver android:name="hu.refilc.naplo.widget_timetable.WidgetTimetable"
android:exported="true"> android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
@@ -43,7 +55,7 @@
android:resource="@xml/home_widget_test_info" /> android:resource="@xml/home_widget_test_info" />
</receiver> </receiver>
<service android:name=".widget_timetable.WidgetTimetableService" <service android:name="hu.refilc.naplo.widget_timetable.WidgetTimetableService"
android:permission="android.permission.BIND_REMOTEVIEWS" /> android:permission="android.permission.BIND_REMOTEVIEWS" />
<receiver android:name="es.antonborri.home_widget.HomeWidgetBackgroundReceiver" <receiver android:name="es.antonborri.home_widget.HomeWidgetBackgroundReceiver"
@@ -57,14 +69,18 @@
android:permission="android.permission.BIND_JOB_SERVICE" android:exported="true" /> android:permission="android.permission.BIND_JOB_SERVICE" android:exported="true" />
</application> </application>
<meta-data android:name="flutterEmbedding" android:value="2" />
<!-- Permissions --> <!-- Permissions -->
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" /> <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
</manifest> </manifest>

View File

@@ -1,18 +0,0 @@
package hu.filc.naplo;
import android.os.Bundle;
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.plugins.GeneratedPluginRegistrant;
import io.flutter.embedding.engine.FlutterEngine;
public class MainActivity extends FlutterActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GeneratedPluginRegistrant.registerWith(new FlutterEngine(this));
}
}

View File

@@ -1 +0,0 @@
../../../../../../../../../filcnaplo_premium/android/database

View File

@@ -1 +0,0 @@
../../../../../../../../../filcnaplo_premium/android/utils

View File

@@ -1 +0,0 @@
../../../../../../../../../filcnaplo_premium/android/widget_timetable

View File

@@ -0,0 +1,7 @@
package hu.refilc.naplo;
import io.flutter.embedding.android.FlutterActivity;
public class MainActivity extends FlutterActivity {
}

View File

@@ -1,119 +1,119 @@
package hu.filc.naplo.database; package hu.refilc.naplo.database;
import android.content.ContentValues; import android.content.ContentValues;
import android.content.Context; import android.content.Context;
import android.database.Cursor; import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase;
import java.sql.SQLException; import java.sql.SQLException;
import hu.filc.naplo.database.SQLiteHelper; import hu.refilc.naplo.database.SQLiteHelper;
public class DBManager { public class DBManager {
private Context context; private Context context;
private SQLiteDatabase database; private SQLiteDatabase database;
private SQLiteHelper dbHelper; private SQLiteHelper dbHelper;
public DBManager(Context c) { public DBManager(Context c) {
this.context = c; this.context = c;
} }
public DBManager open() throws SQLException { public DBManager open() throws SQLException {
this.dbHelper = new SQLiteHelper(this.context); this.dbHelper = new SQLiteHelper(this.context);
this.database = this.dbHelper.getWritableDatabase(); this.database = this.dbHelper.getWritableDatabase();
return this; return this;
} }
public void close() { public void close() {
this.dbHelper.close(); this.dbHelper.close();
} }
public Cursor fetchWidget(int wid) { public Cursor fetchWidget(int wid) {
Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_WIDGETS, new String[]{SQLiteHelper._ID, SQLiteHelper.DAY_SEL}, SQLiteHelper._ID + " = " + wid, null, null, null, null); Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_WIDGETS, new String[]{SQLiteHelper._ID, SQLiteHelper.DAY_SEL}, SQLiteHelper._ID + " = " + wid, null, null, null, null);
if (cursor != null) { if (cursor != null) {
cursor.moveToFirst(); cursor.moveToFirst();
} }
return cursor; return cursor;
} }
public Cursor fetchTimetable() { public Cursor fetchTimetable() {
Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_USER_DATA, new String[]{SQLiteHelper.TIMETABLE}, null, null, null, null, null); Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_USER_DATA, new String[]{SQLiteHelper.TIMETABLE}, null, null, null, null, null);
if (cursor != null) { if (cursor != null) {
cursor.moveToFirst(); cursor.moveToFirst();
} }
return cursor; return cursor;
} }
public Cursor fetchLastUser() { public Cursor fetchLastUser() {
Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_SETTINGS, new String[]{SQLiteHelper.LAST_ACCOUNT_ID}, null, null, null, null, null); Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_SETTINGS, new String[]{SQLiteHelper.LAST_ACCOUNT_ID}, null, null, null, null, null);
if (cursor != null) { if (cursor != null) {
cursor.moveToFirst(); cursor.moveToFirst();
} }
return cursor; return cursor;
} }
public Cursor fetchTheme() { public Cursor fetchTheme() {
Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_SETTINGS, new String[]{SQLiteHelper.THEME, SQLiteHelper.ACCENT_COLOR}, null, null, null, null, null); Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_SETTINGS, new String[]{SQLiteHelper.THEME, SQLiteHelper.ACCENT_COLOR}, null, null, null, null, null);
if (cursor != null) { if (cursor != null) {
cursor.moveToFirst(); cursor.moveToFirst();
} }
return cursor; return cursor;
} }
public Cursor fetchPremiumToken() { public Cursor fetchPremiumToken() {
Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_SETTINGS, new String[]{SQLiteHelper.PREMIUM_TOKEN}, null, null, null, null, null); Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_SETTINGS, new String[]{SQLiteHelper.PREMIUM_TOKEN}, null, null, null, null, null);
if (cursor != null) { if (cursor != null) {
cursor.moveToFirst(); cursor.moveToFirst();
} }
return cursor; return cursor;
} }
public Cursor fetchPremiumScopes() { public Cursor fetchPremiumScopes() {
Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_SETTINGS, new String[]{SQLiteHelper.PREMIUM_SCOPES}, null, null, null, null, null); Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_SETTINGS, new String[]{SQLiteHelper.PREMIUM_SCOPES}, null, null, null, null, null);
if (cursor != null) { if (cursor != null) {
cursor.moveToFirst(); cursor.moveToFirst();
} }
return cursor; return cursor;
} }
public Cursor fetchLocale() { public Cursor fetchLocale() {
Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_SETTINGS, new String[]{SQLiteHelper.LOCALE}, null, null, null, null, null); Cursor cursor = this.database.query(SQLiteHelper.TABLE_NAME_SETTINGS, new String[]{SQLiteHelper.LOCALE}, null, null, null, null, null);
if (cursor != null) { if (cursor != null) {
cursor.moveToFirst(); cursor.moveToFirst();
} }
return cursor; return cursor;
} }
public void deleteWidget(int _id) { public void deleteWidget(int _id) {
this.database.delete(SQLiteHelper.TABLE_NAME_WIDGETS, "_id=" + _id, null); this.database.delete(SQLiteHelper.TABLE_NAME_WIDGETS, "_id=" + _id, null);
} }
/*public void changeSettings(int _id, Map<String, String> map) { /*public void changeSettings(int _id, Map<String, String> map) {
ContentValues con = new ContentValues(); ContentValues con = new ContentValues();
for(Map.Entry<String, String> e: map.entrySet()){ for(Map.Entry<String, String> e: map.entrySet()){
con.put(e.getKey(), e.getValue()); con.put(e.getKey(), e.getValue());
} }
this.database.update(SQLiteHelper.TABLE_NAME_WIDGETS, con, "_id = " + _id, null); this.database.update(SQLiteHelper.TABLE_NAME_WIDGETS, con, "_id = " + _id, null);
} }
public void insertSettings(int _id, Map<String, String> map) { public void insertSettings(int _id, Map<String, String> map) {
ContentValues con = new ContentValues(); ContentValues con = new ContentValues();
for(Map.Entry<String, String> e: map.entrySet()){ for(Map.Entry<String, String> e: map.entrySet()){
con.put(e.getKey(), e.getValue()); con.put(e.getKey(), e.getValue());
//Log.d("Settings added", e.getKey() + " - " + e.getValue()); //Log.d("Settings added", e.getKey() + " - " + e.getValue());
} }
this.database.insert(SQLiteHelper.TABLE_NAME_WIDGETS, null, con); this.database.insert(SQLiteHelper.TABLE_NAME_WIDGETS, null, con);
}*/ }*/
public void insertSelDay(int _id, int day_sel) { public void insertSelDay(int _id, int day_sel) {
ContentValues con = new ContentValues(); ContentValues con = new ContentValues();
con.put(SQLiteHelper._ID, _id); con.put(SQLiteHelper._ID, _id);
con.put(SQLiteHelper.DAY_SEL, day_sel); con.put(SQLiteHelper.DAY_SEL, day_sel);
this.database.insert(SQLiteHelper.TABLE_NAME_WIDGETS, null, con); this.database.insert(SQLiteHelper.TABLE_NAME_WIDGETS, null, con);
} }
public int update(int _id, int day_sel) { public int update(int _id, int day_sel) {
ContentValues con = new ContentValues(); ContentValues con = new ContentValues();
con.put(SQLiteHelper.DAY_SEL, day_sel); con.put(SQLiteHelper.DAY_SEL, day_sel);
return this.database.update(SQLiteHelper.TABLE_NAME_WIDGETS, con, SQLiteHelper._ID + " = " + _id, null); return this.database.update(SQLiteHelper.TABLE_NAME_WIDGETS, con, SQLiteHelper._ID + " = " + _id, null);
} }
} }

View File

@@ -1,36 +1,36 @@
package hu.filc.naplo.database; package hu.refilc.naplo.database;
import android.content.Context; import android.content.Context;
import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper; import android.database.sqlite.SQLiteOpenHelper;
public class SQLiteHelper extends SQLiteOpenHelper { public class SQLiteHelper extends SQLiteOpenHelper {
private static final String CREATE_TABLE_WIDGET = " create table widgets ( _id INTEGER NOT NULL, day_sel INTEGER NOT NULL);"; private static final String CREATE_TABLE_WIDGET = " create table widgets ( _id INTEGER NOT NULL, day_sel INTEGER NOT NULL);";
private static final String DB_NAME = "app.db"; private static final String DB_NAME = "app.db";
private static final int DB_VERSION = 1; private static final int DB_VERSION = 1;
public static final String _ID = "_id"; public static final String _ID = "_id";
public static final String DAY_SEL = "day_sel"; public static final String DAY_SEL = "day_sel";
public static final String TIMETABLE = "timetable"; public static final String TIMETABLE = "timetable";
public static final String LAST_ACCOUNT_ID = "last_account_id"; public static final String LAST_ACCOUNT_ID = "last_account_id";
public static final String THEME = "theme"; public static final String THEME = "theme";
public static final String PREMIUM_TOKEN = "premium_token"; public static final String PREMIUM_TOKEN = "premium_token";
public static final String PREMIUM_SCOPES = "premium_scopes"; public static final String PREMIUM_SCOPES = "premium_scopes";
public static final String LOCALE = "language"; public static final String LOCALE = "language";
public static final String ACCENT_COLOR = "accent_color"; public static final String ACCENT_COLOR = "accent_color";
public static final String TABLE_NAME_WIDGETS = "widgets"; public static final String TABLE_NAME_WIDGETS = "widgets";
public static final String TABLE_NAME_USER_DATA = "user_data"; public static final String TABLE_NAME_USER_DATA = "user_data";
public static final String TABLE_NAME_SETTINGS = "settings"; public static final String TABLE_NAME_SETTINGS = "settings";
public SQLiteHelper(Context context) { public SQLiteHelper(Context context) {
super(context, DB_NAME, null, 7); super(context, DB_NAME, null, 7);
} }
public void onCreate(SQLiteDatabase db) { public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_WIDGET); db.execSQL(CREATE_TABLE_WIDGET);
} }
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS widgets"); db.execSQL("DROP TABLE IF EXISTS widgets");
onCreate(db); onCreate(db);
} }
} }

View File

@@ -1,36 +1,36 @@
package hu.filc.naplo.utils; package hu.refilc.naplo.utils;
import android.content.Context; import android.content.Context;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.NetworkInfo; import android.net.NetworkInfo;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
public class Utils { public class Utils {
public static boolean hasNetwork(Context context) { public static boolean hasNetwork(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo(); NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) { if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true; return true;
} }
return false; return false;
} }
public static Date getWeekStartDate() { public static Date getWeekStartDate() {
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
while (calendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) { while (calendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {
calendar.add(Calendar.DATE, -1); calendar.add(Calendar.DATE, -1);
} }
return calendar.getTime(); return calendar.getTime();
} }
public static Date getWeekEndDate() { public static Date getWeekEndDate() {
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
while (calendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) { while (calendar.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {
calendar.add(Calendar.DATE, 1); calendar.add(Calendar.DATE, 1);
} }
calendar.add(Calendar.DATE, -1); calendar.add(Calendar.DATE, -1);
return calendar.getTime(); return calendar.getTime();
} }
} }

View File

@@ -1,65 +1,65 @@
package hu.filc.naplo.utils; package hu.refilc.naplo.utils;
import java.time.DayOfWeek; import java.time.DayOfWeek;
import java.time.Duration; import java.time.Duration;
import java.time.LocalDate; import java.time.LocalDate;
public class Week { public class Week {
private final LocalDate start; private final LocalDate start;
private final LocalDate end; private final LocalDate end;
private Week(LocalDate start, LocalDate end) { private Week(LocalDate start, LocalDate end) {
this.start = start; this.start = start;
this.end = end; this.end = end;
} }
public static Week current() { public static Week current() {
return fromDate(LocalDate.now()); return fromDate(LocalDate.now());
} }
public static Week fromId(int id) { public static Week fromId(int id) {
LocalDate _now = getYearStart().plusDays(id * 7L); LocalDate _now = getYearStart().plusDays(id * 7L);
return new Week(_now.minusDays(_now.getDayOfWeek().getValue() - 1), _now.plusDays(7 - _now.getDayOfWeek().getValue())); return new Week(_now.minusDays(_now.getDayOfWeek().getValue() - 1), _now.plusDays(7 - _now.getDayOfWeek().getValue()));
} }
public static Week fromDate(LocalDate date) { public static Week fromDate(LocalDate date) {
return new Week(date.minusDays(date.getDayOfWeek().getValue() - 1), date.plusDays(7 - date.getDayOfWeek().getValue())); return new Week(date.minusDays(date.getDayOfWeek().getValue() - 1), date.plusDays(7 - date.getDayOfWeek().getValue()));
} }
public Week next() { public Week next() {
return Week.fromDate(start.plusDays(8)); return Week.fromDate(start.plusDays(8));
} }
public int id() { public int id() {
return (int) Math.ceil(Duration.between(getYearStart().atStartOfDay(), start.atStartOfDay()).toDays() / 7f); return (int) Math.ceil(Duration.between(getYearStart().atStartOfDay(), start.atStartOfDay()).toDays() / 7f);
} }
private static LocalDate getYearStart() { private static LocalDate getYearStart() {
LocalDate now = LocalDate.now(); LocalDate now = LocalDate.now();
LocalDate start = getYearStart(now.getYear()); LocalDate start = getYearStart(now.getYear());
return start.isBefore(now) ? start : getYearStart(now.getYear() -1); return start.isBefore(now) ? start : getYearStart(now.getYear() -1);
} }
private static LocalDate getYearStart(int year) { private static LocalDate getYearStart(int year) {
LocalDate time = LocalDate.of(year, 9, 1); LocalDate time = LocalDate.of(year, 9, 1);
if (time.getDayOfWeek() == DayOfWeek.SATURDAY) if (time.getDayOfWeek() == DayOfWeek.SATURDAY)
return time.plusDays(2); return time.plusDays(2);
else if (time.getDayOfWeek() == DayOfWeek.SUNDAY) else if (time.getDayOfWeek() == DayOfWeek.SUNDAY)
return time.plusDays(1); return time.plusDays(1);
return time; return time;
} }
@Override @Override
public boolean equals(Object o) { public boolean equals(Object o) {
if (this == o) return true; if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false; if (o == null || getClass() != o.getClass()) return false;
Week week = (Week) o; Week week = (Week) o;
return this.id() == week.id(); return this.id() == week.id();
} }
@Override @Override
public int hashCode() { public int hashCode() {
return id(); return id();
} }
} }

View File

@@ -1,397 +1,397 @@
package hu.filc.naplo.widget_timetable; package hu.refilc.naplo.widget_timetable;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider; import android.appwidget.AppWidgetProvider;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.database.Cursor; import android.database.Cursor;
import android.net.Uri; import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.RemoteViews; import android.widget.RemoteViews;
import android.widget.Toast; import android.widget.Toast;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import java.time.DayOfWeek; import java.time.DayOfWeek;
import java.time.format.TextStyle; import java.time.format.TextStyle;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import hu.filc.naplo.database.DBManager; import hu.refilc.naplo.database.DBManager;
import hu.filc.naplo.MainActivity; import hu.refilc.naplo.MainActivity;
import hu.filc.naplo.R; import hu.refilc.naplo.R;
import hu.filc.naplo.utils.Week; import hu.refilc.naplo.utils.Week;
import static android.app.PendingIntent.FLAG_UPDATE_CURRENT; import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;
import es.antonborri.home_widget.HomeWidgetBackgroundIntent; import es.antonborri.home_widget.HomeWidgetBackgroundIntent;
import es.antonborri.home_widget.HomeWidgetLaunchIntent; import es.antonborri.home_widget.HomeWidgetLaunchIntent;
import es.antonborri.home_widget.HomeWidgetProvider; import es.antonborri.home_widget.HomeWidgetProvider;
public class WidgetTimetable extends HomeWidgetProvider { public class WidgetTimetable extends HomeWidgetProvider {
private static final String ACTION_WIDGET_CLICK_NAV_LEFT = "list_widget.ACTION_WIDGET_CLICK_NAV_LEFT"; private static final String ACTION_WIDGET_CLICK_NAV_LEFT = "list_widget.ACTION_WIDGET_CLICK_NAV_LEFT";
private static final String ACTION_WIDGET_CLICK_NAV_RIGHT = "list_widget.ACTION_WIDGET_CLICK_NAV_RIGHT"; private static final String ACTION_WIDGET_CLICK_NAV_RIGHT = "list_widget.ACTION_WIDGET_CLICK_NAV_RIGHT";
private static final String ACTION_WIDGET_CLICK_NAV_TODAY = "list_widget.ACTION_WIDGET_CLICK_NAV_TODAY"; private static final String ACTION_WIDGET_CLICK_NAV_TODAY = "list_widget.ACTION_WIDGET_CLICK_NAV_TODAY";
private static final String ACTION_WIDGET_CLICK_NAV_REFRESH = "list_widget.ACTION_WIDGET_CLICK_NAV_REFRESH"; private static final String ACTION_WIDGET_CLICK_NAV_REFRESH = "list_widget.ACTION_WIDGET_CLICK_NAV_REFRESH";
private static final String ACTION_WIDGET_CLICK_BUY_PREMIUM = "list_widget.ACTION_WIDGET_CLICK_BUY_PREMIUM"; private static final String ACTION_WIDGET_CLICK_BUY_PREMIUM = "list_widget.ACTION_WIDGET_CLICK_BUY_PREMIUM";
@Override @Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds, SharedPreferences widgetData) { public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds, SharedPreferences widgetData) {
for (int i = 0; i < appWidgetIds.length; i++) { for (int i = 0; i < appWidgetIds.length; i++) {
RemoteViews views = generateView(context, appWidgetIds[i]); RemoteViews views = generateView(context, appWidgetIds[i]);
if(premiumEnabled(context) && userLoggedIn(context)) { if(premiumEnabled(context) && userLoggedIn(context)) {
int rday = selectDay(context, appWidgetIds[i], 0, true); int rday = selectDay(context, appWidgetIds[i], 0, true);
views.setTextViewText(R.id.nav_current, convertDayOfWeek(context, rday)); views.setTextViewText(R.id.nav_current, convertDayOfWeek(context, rday));
} }
pushUpdate(context, views, appWidgetIds[i]); pushUpdate(context, views, appWidgetIds[i]);
} }
} }
public static void pushUpdate(Context context, RemoteViews remoteViews, int appWidgetSingleId) { public static void pushUpdate(Context context, RemoteViews remoteViews, int appWidgetSingleId) {
AppWidgetManager manager = AppWidgetManager.getInstance(context); AppWidgetManager manager = AppWidgetManager.getInstance(context);
manager.updateAppWidget(appWidgetSingleId, remoteViews); manager.updateAppWidget(appWidgetSingleId, remoteViews);
manager.notifyAppWidgetViewDataChanged(appWidgetSingleId, R.id.widget_list); manager.notifyAppWidgetViewDataChanged(appWidgetSingleId, R.id.widget_list);
} }
public static RemoteViews generateView(Context context, int appId) { public static RemoteViews generateView(Context context, int appId) {
Intent serviceIntent = new Intent(context, WidgetTimetableService.class); Intent serviceIntent = new Intent(context, WidgetTimetableService.class);
serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appId); serviceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appId);
serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME))); serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME)));
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_timetable); RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_timetable);
views.setViewVisibility(R.id.need_premium, View.GONE); views.setViewVisibility(R.id.need_premium, View.GONE);
views.setViewVisibility(R.id.need_login, View.GONE); views.setViewVisibility(R.id.need_login, View.GONE);
views.setViewVisibility(R.id.tt_grid_cont, View.GONE); views.setViewVisibility(R.id.tt_grid_cont, View.GONE);
if(!userLoggedIn(context)) { if(!userLoggedIn(context)) {
views.setViewVisibility(R.id.need_login, View.VISIBLE); views.setViewVisibility(R.id.need_login, View.VISIBLE);
views.setOnClickPendingIntent(R.id.open_login, makePending(context, ACTION_WIDGET_CLICK_BUY_PREMIUM, appId)); views.setOnClickPendingIntent(R.id.open_login, makePending(context, ACTION_WIDGET_CLICK_BUY_PREMIUM, appId));
} else if(premiumEnabled(context)) { } else if(premiumEnabled(context)) {
views.setViewVisibility(R.id.tt_grid_cont, View.VISIBLE); views.setViewVisibility(R.id.tt_grid_cont, View.VISIBLE);
views.setOnClickPendingIntent(R.id.nav_to_left, makePending(context, ACTION_WIDGET_CLICK_NAV_LEFT, appId)); views.setOnClickPendingIntent(R.id.nav_to_left, makePending(context, ACTION_WIDGET_CLICK_NAV_LEFT, appId));
views.setOnClickPendingIntent(R.id.nav_to_right, makePending(context, ACTION_WIDGET_CLICK_NAV_RIGHT, appId)); views.setOnClickPendingIntent(R.id.nav_to_right, makePending(context, ACTION_WIDGET_CLICK_NAV_RIGHT, appId));
views.setOnClickPendingIntent(R.id.nav_current, makePending(context, ACTION_WIDGET_CLICK_NAV_TODAY, appId)); views.setOnClickPendingIntent(R.id.nav_current, makePending(context, ACTION_WIDGET_CLICK_NAV_TODAY, appId));
views.setOnClickPendingIntent(R.id.nav_refresh, makePending(context, ACTION_WIDGET_CLICK_NAV_REFRESH, appId)); views.setOnClickPendingIntent(R.id.nav_refresh, makePending(context, ACTION_WIDGET_CLICK_NAV_REFRESH, appId));
views.setRemoteAdapter(R.id.widget_list, serviceIntent); views.setRemoteAdapter(R.id.widget_list, serviceIntent);
views.setEmptyView(R.id.widget_list, R.id.empty_view); views.setEmptyView(R.id.widget_list, R.id.empty_view);
} else { } else {
views.setViewVisibility(R.id.need_premium, View.VISIBLE); views.setViewVisibility(R.id.need_premium, View.VISIBLE);
views.setOnClickPendingIntent(R.id.buy_premium, makePending(context, ACTION_WIDGET_CLICK_BUY_PREMIUM, appId)); views.setOnClickPendingIntent(R.id.buy_premium, makePending(context, ACTION_WIDGET_CLICK_BUY_PREMIUM, appId));
} }
return views; return views;
} }
static PendingIntent makePending(Context context, String action, int appWidgetId) { static PendingIntent makePending(Context context, String action, int appWidgetId) {
Intent activebtnnext = new Intent(context, WidgetTimetable.class); Intent activebtnnext = new Intent(context, WidgetTimetable.class);
activebtnnext.setAction(action); activebtnnext.setAction(action);
activebtnnext.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); activebtnnext.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
return PendingIntent.getBroadcast(context, appWidgetId, activebtnnext , PendingIntent.FLAG_IMMUTABLE); return PendingIntent.getBroadcast(context, appWidgetId, activebtnnext , PendingIntent.FLAG_IMMUTABLE);
} }
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent); super.onReceive(context, intent);
if(intent.hasExtra(AppWidgetManager.EXTRA_APPWIDGET_ID)) { if(intent.hasExtra(AppWidgetManager.EXTRA_APPWIDGET_ID)) {
int appId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); int appId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
RemoteViews views = generateView(context, appId); RemoteViews views = generateView(context, appId);
try { try {
if(premiumEnabled(context) && userLoggedIn(context)) { if(premiumEnabled(context) && userLoggedIn(context)) {
if (intent.getAction().equals(ACTION_WIDGET_CLICK_NAV_LEFT)) { if (intent.getAction().equals(ACTION_WIDGET_CLICK_NAV_LEFT)) {
int rday = selectDay(context, appId, -1, false); int rday = selectDay(context, appId, -1, false);
views.setTextViewText(R.id.nav_current, convertDayOfWeek(context, rday)); views.setTextViewText(R.id.nav_current, convertDayOfWeek(context, rday));
pushUpdate(context, views, appId); pushUpdate(context, views, appId);
} else if (intent.getAction().equals(ACTION_WIDGET_CLICK_NAV_RIGHT)) { } else if (intent.getAction().equals(ACTION_WIDGET_CLICK_NAV_RIGHT)) {
int rday = selectDay(context, appId, 1, false); int rday = selectDay(context, appId, 1, false);
views.setTextViewText(R.id.nav_current, convertDayOfWeek(context, rday)); views.setTextViewText(R.id.nav_current, convertDayOfWeek(context, rday));
pushUpdate(context, views, appId); pushUpdate(context, views, appId);
} else if (intent.getAction().equals(ACTION_WIDGET_CLICK_NAV_TODAY)) { } else if (intent.getAction().equals(ACTION_WIDGET_CLICK_NAV_TODAY)) {
int rday = getToday(context); int rday = getToday(context);
setSelectedDay(context, appId, rday); setSelectedDay(context, appId, rday);
views.setTextViewText(R.id.nav_current, convertDayOfWeek(context, rday)); views.setTextViewText(R.id.nav_current, convertDayOfWeek(context, rday));
pushUpdate(context, views, appId); pushUpdate(context, views, appId);
} else if (intent.getAction().equals(ACTION_WIDGET_CLICK_NAV_REFRESH)) { } else if (intent.getAction().equals(ACTION_WIDGET_CLICK_NAV_REFRESH)) {
PendingIntent pendingIntent = HomeWidgetLaunchIntent.INSTANCE.getActivity(context, MainActivity.class, Uri.parse("timetable://refresh")); PendingIntent pendingIntent = HomeWidgetLaunchIntent.INSTANCE.getActivity(context, MainActivity.class, Uri.parse("timetable://refresh"));
pendingIntent.send(); pendingIntent.send();
} else if (intent.getAction().equals("android.appwidget.action.APPWIDGET_DELETED")) { } else if (intent.getAction().equals("android.appwidget.action.APPWIDGET_DELETED")) {
DBManager dbManager = new DBManager(context.getApplicationContext()); DBManager dbManager = new DBManager(context.getApplicationContext());
try { try {
dbManager.open(); dbManager.open();
dbManager.deleteWidget(appId); dbManager.deleteWidget(appId);
dbManager.close(); dbManager.close();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
} }
if(intent.getAction().equals(ACTION_WIDGET_CLICK_BUY_PREMIUM)) { if(intent.getAction().equals(ACTION_WIDGET_CLICK_BUY_PREMIUM)) {
PendingIntent pendingIntent = HomeWidgetLaunchIntent.INSTANCE.getActivity(context, MainActivity.class, Uri.parse("settings://premium")); PendingIntent pendingIntent = HomeWidgetLaunchIntent.INSTANCE.getActivity(context, MainActivity.class, Uri.parse("settings://premium"));
pendingIntent.send(); pendingIntent.send();
} }
} }
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
} }
public static String convertDayOfWeek(Context context, int rday) { public static String convertDayOfWeek(Context context, int rday) {
/*if(rday == -1) return DayOfWeek.of(1).getDisplayName(TextStyle.FULL, new Locale("hu", "HU")); /*if(rday == -1) return DayOfWeek.of(1).getDisplayName(TextStyle.FULL, new Locale("hu", "HU"));
String dayOfWeek = DayOfWeek.of(rday + 1).getDisplayName(TextStyle.FULL, new Locale("hu", "HU"));*/ String dayOfWeek = DayOfWeek.of(rday + 1).getDisplayName(TextStyle.FULL, new Locale("hu", "HU"));*/
String dayOfWeek = "Unknown"; String dayOfWeek = "Unknown";
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
Locale loc = getLocale(context); Locale loc = getLocale(context);
if (rday == -1) if (rday == -1)
return DayOfWeek.of(1).getDisplayName(TextStyle.FULL, loc); return DayOfWeek.of(1).getDisplayName(TextStyle.FULL, loc);
dayOfWeek = DayOfWeek.of(rday + 1).getDisplayName(TextStyle.FULL, loc); dayOfWeek = DayOfWeek.of(rday + 1).getDisplayName(TextStyle.FULL, loc);
} }
return dayOfWeek.substring(0, 1).toUpperCase() + dayOfWeek.substring(1).toLowerCase(); return dayOfWeek.substring(0, 1).toUpperCase() + dayOfWeek.substring(1).toLowerCase();
} }
public static void setSelectedDay(Context context, int wid, int day) { public static void setSelectedDay(Context context, int wid, int day) {
DBManager dbManager = new DBManager(context.getApplicationContext()); DBManager dbManager = new DBManager(context.getApplicationContext());
try { try {
dbManager.open(); dbManager.open();
dbManager.update(wid, day); dbManager.update(wid, day);
dbManager.close(); dbManager.close();
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
public static int getToday(Context context) { public static int getToday(Context context) {
int rday = new DateTime().getDayOfWeek() - 1; int rday = new DateTime().getDayOfWeek() - 1;
List<JSONArray> s = genJsonDays(context); List<JSONArray> s = genJsonDays(context);
try { try {
if(checkIsAfter(s, rday)) rday += 1; if(checkIsAfter(s, rday)) rday += 1;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
return retDay(rday, s.size()); return retDay(rday, s.size());
} }
public static int selectDay(Context context, int wid, int add, Boolean afterSubjects) { public static int selectDay(Context context, int wid, int add, Boolean afterSubjects) {
DBManager dbManager = new DBManager(context.getApplicationContext()); DBManager dbManager = new DBManager(context.getApplicationContext());
try { try {
dbManager.open(); dbManager.open();
Cursor cursor = dbManager.fetchWidget(wid); Cursor cursor = dbManager.fetchWidget(wid);
List<JSONArray> s = genJsonDays(context); List<JSONArray> s = genJsonDays(context);
int retday = new DateTime().getDayOfWeek() - 1; int retday = new DateTime().getDayOfWeek() - 1;
if(cursor.getCount() != 0) retday = retDay(cursor.getInt(1) + add, s.size()); if(cursor.getCount() != 0) retday = retDay(cursor.getInt(1) + add, s.size());
if(afterSubjects) if(checkIsAfter(s, retday)) retday += 1; if(afterSubjects) if(checkIsAfter(s, retday)) retday += 1;
retday = retDay(retday, s.size()); retday = retDay(retday, s.size());
if(cursor.getCount() == 0) dbManager.insertSelDay(wid, retday); if(cursor.getCount() == 0) dbManager.insertSelDay(wid, retday);
else dbManager.update(wid, retday); else dbManager.update(wid, retday);
dbManager.close(); dbManager.close();
return retday; return retday;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
return 0; return 0;
} }
public static Boolean checkIsAfter(List<JSONArray> s, int retday) throws Exception { public static Boolean checkIsAfter(List<JSONArray> s, int retday) throws Exception {
retday = retDay(retday, s.size()); retday = retDay(retday, s.size());
String vegIdopont = s.get(retday).getJSONObject(s.get(retday).length() - 1).getString("VegIdopont"); String vegIdopont = s.get(retday).getJSONObject(s.get(retday).length() - 1).getString("VegIdopont");
return new DateTime().isAfter(new DateTime(vegIdopont)); return new DateTime().isAfter(new DateTime(vegIdopont));
} }
public static int retDay(int retday, int size) { public static int retDay(int retday, int size) {
if (retday < 0) retday = size - 1; if (retday < 0) retday = size - 1;
else if (retday > size - 1) retday = 0; else if (retday > size - 1) retday = 0;
return retday; return retday;
} }
public static List<JSONArray> genJsonDays(Context context) { public static List<JSONArray> genJsonDays(Context context) {
List<JSONArray> gen_days = new ArrayList<>(); List<JSONArray> gen_days = new ArrayList<>();
DBManager dbManager = new DBManager(context.getApplicationContext()); DBManager dbManager = new DBManager(context.getApplicationContext());
try { try {
dbManager.open(); dbManager.open();
Cursor ct = dbManager.fetchTimetable(); Cursor ct = dbManager.fetchTimetable();
dbManager.close(); dbManager.close();
if(ct.getCount() == 0) { if(ct.getCount() == 0) {
return gen_days; return gen_days;
} }
JSONObject fecthtt = new JSONObject(ct.getString(0)); JSONObject fecthtt = new JSONObject(ct.getString(0));
JSONArray dayArray = new JSONArray(); JSONArray dayArray = new JSONArray();
String currday = ""; String currday = "";
String currweek = String.valueOf(Week.current().id()); String currweek = String.valueOf(Week.current().id());
JSONArray week = fecthtt.getJSONArray(currweek); JSONArray week = fecthtt.getJSONArray(currweek);
for (int i=0; i < week.length(); i++) for (int i=0; i < week.length(); i++)
{ {
try { try {
if(i == 0) currday = week.getJSONObject(0).getString("Datum"); if(i == 0) currday = week.getJSONObject(0).getString("Datum");
JSONObject oraObj = week.getJSONObject(i); JSONObject oraObj = week.getJSONObject(i);
if(!currday.equals(oraObj.getString("Datum"))) { if(!currday.equals(oraObj.getString("Datum"))) {
gen_days.add(dayArray); gen_days.add(dayArray);
currday = week.getJSONObject(i).getString("Datum"); currday = week.getJSONObject(i).getString("Datum");
dayArray = new JSONArray(); dayArray = new JSONArray();
} }
dayArray.put(oraObj); dayArray.put(oraObj);
if(i == week.length() - 1) { if(i == week.length() - 1) {
gen_days.add(dayArray); gen_days.add(dayArray);
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
Collections.sort(gen_days, new Comparator<JSONArray>() { Collections.sort(gen_days, new Comparator<JSONArray>() {
public int compare(JSONArray a, JSONArray b) { public int compare(JSONArray a, JSONArray b) {
long valA = 0; long valA = 0;
long valB = 0; long valB = 0;
try { try {
valA = (long) new DateTime( a.getJSONObject(0).getString("Datum")).getMillis(); valA = (long) new DateTime( a.getJSONObject(0).getString("Datum")).getMillis();
valB = (long) new DateTime( b.getJSONObject(0).getString("Datum")).getMillis(); valB = (long) new DateTime( b.getJSONObject(0).getString("Datum")).getMillis();
} }
catch (JSONException ignored) { catch (JSONException ignored) {
} }
return (int) (valA - valB); return (int) (valA - valB);
} }
}); });
return gen_days; return gen_days;
} }
public static String zeroPad(int value, int padding){ public static String zeroPad(int value, int padding){
StringBuilder b = new StringBuilder(); StringBuilder b = new StringBuilder();
b.append(value); b.append(value);
while(b.length() < padding){ while(b.length() < padding){
b.insert(0,"0"); b.insert(0,"0");
} }
return b.toString(); return b.toString();
} }
public static Locale getLocale(Context context) { public static Locale getLocale(Context context) {
DBManager dbManager = new DBManager(context.getApplicationContext()); DBManager dbManager = new DBManager(context.getApplicationContext());
try { try {
dbManager.open(); dbManager.open();
String loc = dbManager.fetchLocale().getString(0); String loc = dbManager.fetchLocale().getString(0);
dbManager.close(); dbManager.close();
if(loc.equals("hu") || loc.equals("de")) { if(loc.equals("hu") || loc.equals("de")) {
return new Locale(loc, loc.toUpperCase()); return new Locale(loc, loc.toUpperCase());
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
return new Locale("en", "GB"); return new Locale("en", "GB");
} }
public static boolean premiumEnabled(Context context) { public static boolean premiumEnabled(Context context) {
DBManager dbManager = new DBManager(context.getApplicationContext()); DBManager dbManager = new DBManager(context.getApplicationContext());
try { try {
dbManager.open(); dbManager.open();
String premium_token = dbManager.fetchPremiumToken().getString(0); String premium_token = dbManager.fetchPremiumToken().getString(0);
String premium_scopes_raw = dbManager.fetchPremiumScopes().getString(0); String premium_scopes_raw = dbManager.fetchPremiumScopes().getString(0);
dbManager.close(); dbManager.close();
JSONArray arr = new JSONArray(premium_scopes_raw); JSONArray arr = new JSONArray(premium_scopes_raw);
List<String> premium_scopes = new ArrayList<>(); List<String> premium_scopes = new ArrayList<>();
for(int i = 0; i < arr.length(); i++){ for(int i = 0; i < arr.length(); i++){
String scope = arr.getString(i); String scope = arr.getString(i);
premium_scopes.add(scope.substring(scope.lastIndexOf('.') + 1)); premium_scopes.add(scope.substring(scope.lastIndexOf('.') + 1));
} }
if(!premium_token.equals("") && (premium_scopes.contains("*") || premium_scopes.contains("TIMETALBE_WIDGET"))) { if(!premium_token.equals("") && (premium_scopes.contains("*") || premium_scopes.contains("TIMETALBE_WIDGET"))) {
return true; return true;
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
return false; return false;
} }
public static boolean userLoggedIn(Context context) { public static boolean userLoggedIn(Context context) {
return !lastUserId(context).equals(""); return !lastUserId(context).equals("");
} }
public static String lastUserId(Context context) { public static String lastUserId(Context context) {
DBManager dbManager = new DBManager(context.getApplicationContext()); DBManager dbManager = new DBManager(context.getApplicationContext());
try { try {
dbManager.open(); dbManager.open();
Cursor cursor = dbManager.fetchLastUser(); Cursor cursor = dbManager.fetchLastUser();
dbManager.close(); dbManager.close();
if(cursor != null && !cursor.getString(0).equals("")) { if(cursor != null && !cursor.getString(0).equals("")) {
String last_user = cursor.getString(0); String last_user = cursor.getString(0);
return last_user; return last_user;
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
return ""; return "";
} }
@Override @Override
public void onEnabled(Context context) { public void onEnabled(Context context) {
} }
@Override @Override
public void onDisabled(Context context) { public void onDisabled(Context context) {
} }
} }

View File

@@ -1,354 +1,354 @@
package hu.filc.naplo.widget_timetable; package hu.refilc.naplo.widget_timetable;
import android.appwidget.AppWidgetManager; import android.appwidget.AppWidgetManager;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.database.Cursor; import android.database.Cursor;
import android.os.Build; import android.os.Build;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.RemoteViews; import android.widget.RemoteViews;
import android.widget.RemoteViewsService; import android.widget.RemoteViewsService;
import org.joda.time.DateTime; import org.joda.time.DateTime;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import hu.filc.naplo.database.DBManager; import hu.refilc.naplo.database.DBManager;
import hu.filc.naplo.R; import hu.refilc.naplo.R;
public class WidgetTimetableDataProvider implements RemoteViewsService.RemoteViewsFactory { public class WidgetTimetableDataProvider implements RemoteViewsService.RemoteViewsFactory {
private Context context; private Context context;
private int appWidgetId; private int appWidgetId;
private int rday = 0; private int rday = 0;
private int theme; private int theme;
private Integer[] colorValues; private Integer[] colorValues;
List<Lesson> day_subjects = new ArrayList<>(); List<Lesson> day_subjects = new ArrayList<>();
List<Integer> lessonIndexes = new ArrayList<>(); List<Integer> lessonIndexes = new ArrayList<>();
Item witem; Item witem;
/* Default values */ /* Default values */
static class Item { static class Item {
int Layout; int Layout;
int NumVisibility; int NumVisibility;
int NameVisibility; int NameVisibility;
int NameNodescVisibility; int NameNodescVisibility;
int DescVisibility; int DescVisibility;
int RoomVisibility; int RoomVisibility;
int TimeVisibility; int TimeVisibility;
int NumColor; int NumColor;
int NameColor; int NameColor;
int NameNodescColor; int NameNodescColor;
int DescColor; int DescColor;
Integer[] NameNodescPadding = {0, 0, 0, 0}; Integer[] NameNodescPadding = {0, 0, 0, 0};
public Item(int Layout, int NumVisibility,int NameVisibility,int NameNodescVisibility,int DescVisibility,int RoomVisibility,int TimeVisibility,int NumColor,int NameColor,int NameNodescColor,int DescColor) { public Item(int Layout, int NumVisibility,int NameVisibility,int NameNodescVisibility,int DescVisibility,int RoomVisibility,int TimeVisibility,int NumColor,int NameColor,int NameNodescColor,int DescColor) {
this.Layout = Layout; this.Layout = Layout;
this.NumVisibility = NumVisibility; this.NumVisibility = NumVisibility;
this.NameVisibility = NameVisibility; this.NameVisibility = NameVisibility;
this.NameNodescVisibility = NameNodescVisibility; this.NameNodescVisibility = NameNodescVisibility;
this.DescVisibility = DescVisibility; this.DescVisibility = DescVisibility;
this.RoomVisibility = RoomVisibility; this.RoomVisibility = RoomVisibility;
this.TimeVisibility = TimeVisibility; this.TimeVisibility = TimeVisibility;
this.NumColor = NumColor; this.NumColor = NumColor;
this.NameColor = NameColor; this.NameColor = NameColor;
this.NameNodescColor = NameNodescColor; this.NameNodescColor = NameNodescColor;
this.DescColor = DescColor; this.DescColor = DescColor;
} }
} }
static class Lesson { static class Lesson {
String status; String status;
String lessonIndex; String lessonIndex;
String lessonName; String lessonName;
String lessonTopic; String lessonTopic;
String lessonRoom; String lessonRoom;
long lessonStart; long lessonStart;
long lessonEnd; long lessonEnd;
String substituteTeacher; String substituteTeacher;
public Lesson(String status, String lessonIndex,String lessonName,String lessonTopic, String lessonRoom,long lessonStart,long lessonEnd,String substituteTeacher) { public Lesson(String status, String lessonIndex,String lessonName,String lessonTopic, String lessonRoom,long lessonStart,long lessonEnd,String substituteTeacher) {
this.status = status; this.status = status;
this.lessonIndex = lessonIndex; this.lessonIndex = lessonIndex;
this.lessonName = lessonName; this.lessonName = lessonName;
this.lessonTopic = lessonTopic; this.lessonTopic = lessonTopic;
this.lessonRoom = lessonRoom; this.lessonRoom = lessonRoom;
this.lessonStart = lessonStart; this.lessonStart = lessonStart;
this.lessonEnd = lessonEnd; this.lessonEnd = lessonEnd;
this.substituteTeacher = substituteTeacher; this.substituteTeacher = substituteTeacher;
} }
} }
Integer[] itemNameNodescPadding = {0, 0, 0, 0}; Integer[] itemNameNodescPadding = {0, 0, 0, 0};
public WidgetTimetableDataProvider(Context context, Intent intent) { public WidgetTimetableDataProvider(Context context, Intent intent) {
this.context = context; this.context = context;
this.appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID); this.appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
this.theme = getThemeAccent(context); this.theme = getThemeAccent(context);
this.colorValues = new Integer[]{R.color.filc, this.colorValues = new Integer[]{R.color.filc,
R.color.blue_shade300, R.color.blue_shade300,
R.color.green_shade300, R.color.green_shade300,
R.color.lime_shade300, R.color.lime_shade300,
R.color.yellow_shade300, R.color.yellow_shade300,
R.color.orange_shade300, R.color.orange_shade300,
R.color.red_shade300, R.color.red_shade300,
R.color.pink_shade300, R.color.pink_shade300,
R.color.purple_shade300}; R.color.purple_shade300};
} }
@Override @Override
public void onCreate() { public void onCreate() {
initData(); initData();
} }
@Override @Override
public void onDataSetChanged() { public void onDataSetChanged() {
initData(); initData();
} }
@Override @Override
public void onDestroy() { public void onDestroy() {
} }
@Override @Override
public int getCount() { public int getCount() {
return day_subjects.size(); return day_subjects.size();
} }
public void setLayout(final RemoteViews view) { public void setLayout(final RemoteViews view) {
/* Visibilities */ /* Visibilities */
view.setViewVisibility(R.id.tt_item_num, witem.NumVisibility); view.setViewVisibility(R.id.tt_item_num, witem.NumVisibility);
view.setViewVisibility(R.id.tt_item_name, witem.NameVisibility); view.setViewVisibility(R.id.tt_item_name, witem.NameVisibility);
view.setViewVisibility(R.id.tt_item_name_nodesc, witem.NameNodescVisibility); view.setViewVisibility(R.id.tt_item_name_nodesc, witem.NameNodescVisibility);
view.setViewVisibility(R.id.tt_item_desc, witem.DescVisibility); view.setViewVisibility(R.id.tt_item_desc, witem.DescVisibility);
view.setViewVisibility(R.id.tt_item_room, witem.RoomVisibility); view.setViewVisibility(R.id.tt_item_room, witem.RoomVisibility);
view.setViewVisibility(R.id.tt_item_time, witem.TimeVisibility); view.setViewVisibility(R.id.tt_item_time, witem.TimeVisibility);
/* backgroundResources */ /* backgroundResources */
view.setInt(R.id.main_lay, "setBackgroundResource", witem.Layout); view.setInt(R.id.main_lay, "setBackgroundResource", witem.Layout);
/* Paddings */ /* Paddings */
view.setViewPadding(R.id.tt_item_name_nodesc, witem.NameNodescPadding[0], witem.NameNodescPadding[1], witem.NameNodescPadding[2], witem.NameNodescPadding[3]); view.setViewPadding(R.id.tt_item_name_nodesc, witem.NameNodescPadding[0], witem.NameNodescPadding[1], witem.NameNodescPadding[2], witem.NameNodescPadding[3]);
/* Text Colors */ /* Text Colors */
view.setInt(R.id.tt_item_num, "setTextColor", getColor(context, witem.NumColor)); view.setInt(R.id.tt_item_num, "setTextColor", getColor(context, witem.NumColor));
view.setInt(R.id.tt_item_name, "setTextColor", getColor(context, witem.NameColor)); view.setInt(R.id.tt_item_name, "setTextColor", getColor(context, witem.NameColor));
view.setInt(R.id.tt_item_name_nodesc, "setTextColor", getColor(context, witem.NameNodescColor)); view.setInt(R.id.tt_item_name_nodesc, "setTextColor", getColor(context, witem.NameNodescColor));
view.setInt(R.id.tt_item_desc, "setTextColor", getColor(context, witem.DescColor)); view.setInt(R.id.tt_item_desc, "setTextColor", getColor(context, witem.DescColor));
} }
public int getColor(Context context, int color) { public int getColor(Context context, int color) {
return context.getResources().getColor(color); return context.getResources().getColor(color);
} }
@Override @Override
public RemoteViews getViewAt(int position) { public RemoteViews getViewAt(int position) {
RemoteViews view = new RemoteViews(context.getPackageName(), R.layout.timetable_item); RemoteViews view = new RemoteViews(context.getPackageName(), R.layout.timetable_item);
witem = defaultItem(theme); witem = defaultItem(theme);
Lesson curr_subject = day_subjects.get(position); Lesson curr_subject = day_subjects.get(position);
if (curr_subject.status.equals("empty")) { if (curr_subject.status.equals("empty")) {
witem.NumColor = R.color.text_miss_num; witem.NumColor = R.color.text_miss_num;
witem.TimeVisibility = View.GONE; witem.TimeVisibility = View.GONE;
witem.RoomVisibility = View.GONE; witem.RoomVisibility = View.GONE;
witem.NameNodescColor = R.color.text_miss; witem.NameNodescColor = R.color.text_miss;
} }
if (!curr_subject.substituteTeacher.equals("null")) { if (!curr_subject.substituteTeacher.equals("null")) {
witem.NumColor = R.color.yellow; witem.NumColor = R.color.yellow;
witem.Layout = R.drawable.card_layout_tile_helyetesitett; witem.Layout = R.drawable.card_layout_tile_helyetesitett;
} }
if (curr_subject.status.equals("Elmaradt")) { if (curr_subject.status.equals("Elmaradt")) {
witem.NumColor = R.color.red; witem.NumColor = R.color.red;
witem.Layout = R.drawable.card_layout_tile_elmarad; witem.Layout = R.drawable.card_layout_tile_elmarad;
} else if (curr_subject.status.equals("TanevRendjeEsemeny")) { } else if (curr_subject.status.equals("TanevRendjeEsemeny")) {
witem.NumVisibility = View.GONE; witem.NumVisibility = View.GONE;
witem.TimeVisibility = View.GONE; witem.TimeVisibility = View.GONE;
witem.RoomVisibility = View.GONE; witem.RoomVisibility = View.GONE;
witem.NameNodescPadding[0] = 50; witem.NameNodescPadding[0] = 50;
witem.NameNodescPadding[2] = 50; witem.NameNodescPadding[2] = 50;
witem.NameNodescColor = R.color.text_miss; witem.NameNodescColor = R.color.text_miss;
} }
if (curr_subject.lessonTopic.equals("null")) { if (curr_subject.lessonTopic.equals("null")) {
witem.DescVisibility = View.GONE; witem.DescVisibility = View.GONE;
witem.NameVisibility = View.GONE; witem.NameVisibility = View.GONE;
witem.NameNodescVisibility = View.VISIBLE; witem.NameNodescVisibility = View.VISIBLE;
} }
setLayout(view); setLayout(view);
String lessonIndexTrailing = curr_subject.lessonIndex.equals("+") ? "" : "."; String lessonIndexTrailing = curr_subject.lessonIndex.equals("+") ? "" : ".";
view.setTextViewText(R.id.tt_item_num, curr_subject.lessonIndex + lessonIndexTrailing); view.setTextViewText(R.id.tt_item_num, curr_subject.lessonIndex + lessonIndexTrailing);
view.setTextViewText(R.id.tt_item_name, curr_subject.lessonName); view.setTextViewText(R.id.tt_item_name, curr_subject.lessonName);
view.setTextViewText(R.id.tt_item_name_nodesc, curr_subject.lessonName); view.setTextViewText(R.id.tt_item_name_nodesc, curr_subject.lessonName);
view.setTextViewText(R.id.tt_item_desc, curr_subject.lessonTopic); view.setTextViewText(R.id.tt_item_desc, curr_subject.lessonTopic);
view.setTextViewText(R.id.tt_item_room, curr_subject.lessonRoom); view.setTextViewText(R.id.tt_item_room, curr_subject.lessonRoom);
if(curr_subject.lessonStart != 0 && curr_subject.lessonEnd != 0) if(curr_subject.lessonStart != 0 && curr_subject.lessonEnd != 0)
view.setTextViewText(R.id.tt_item_time, WidgetTimetable.zeroPad(new DateTime(curr_subject.lessonStart).getHourOfDay(), 2) + ":" + WidgetTimetable.zeroPad(new DateTime(curr_subject.lessonStart).getMinuteOfHour(), 2) + view.setTextViewText(R.id.tt_item_time, WidgetTimetable.zeroPad(new DateTime(curr_subject.lessonStart).getHourOfDay(), 2) + ":" + WidgetTimetable.zeroPad(new DateTime(curr_subject.lessonStart).getMinuteOfHour(), 2) +
"\n" + WidgetTimetable.zeroPad(new DateTime(curr_subject.lessonEnd).getHourOfDay(), 2) + ":" + WidgetTimetable.zeroPad(new DateTime(curr_subject.lessonEnd).getMinuteOfHour(),2)); "\n" + WidgetTimetable.zeroPad(new DateTime(curr_subject.lessonEnd).getHourOfDay(), 2) + ":" + WidgetTimetable.zeroPad(new DateTime(curr_subject.lessonEnd).getMinuteOfHour(),2));
return view; return view;
} }
@Override @Override
public RemoteViews getLoadingView() { public RemoteViews getLoadingView() {
return null; return null;
} }
@Override @Override
public int getViewTypeCount() { public int getViewTypeCount() {
return 1; return 1;
} }
@Override @Override
public long getItemId(int position) { public long getItemId(int position) {
return position; return position;
} }
@Override @Override
public boolean hasStableIds() { public boolean hasStableIds() {
return true; return true;
} }
private void initData() { private void initData() {
theme = getThemeAccent(context); theme = getThemeAccent(context);
rday = WidgetTimetable.selectDay(context, appWidgetId, 0, false); rday = WidgetTimetable.selectDay(context, appWidgetId, 0, false);
day_subjects.clear(); day_subjects.clear();
lessonIndexes.clear(); lessonIndexes.clear();
try { try {
List<JSONArray> arr = WidgetTimetable.genJsonDays(context); List<JSONArray> arr = WidgetTimetable.genJsonDays(context);
if(arr.isEmpty()) { if(arr.isEmpty()) {
return; return;
} }
JSONArray arr_lessons = WidgetTimetable.genJsonDays(context).get(rday); JSONArray arr_lessons = WidgetTimetable.genJsonDays(context).get(rday);
for (int i = 0; i < arr_lessons.length(); i++) { for (int i = 0; i < arr_lessons.length(); i++) {
JSONObject obj_lessons = arr_lessons.getJSONObject(i); JSONObject obj_lessons = arr_lessons.getJSONObject(i);
day_subjects.add(jsonToLesson(obj_lessons)); day_subjects.add(jsonToLesson(obj_lessons));
} }
} catch (JSONException e) { } catch (JSONException e) {
e.printStackTrace(); e.printStackTrace();
} }
if(day_subjects.size() > 0) { if(day_subjects.size() > 0) {
Collections.sort(day_subjects, new Comparator<Lesson>() { Collections.sort(day_subjects, new Comparator<Lesson>() {
public int compare(Lesson o1, Lesson o2) { public int compare(Lesson o1, Lesson o2) {
return new DateTime(o1.lessonStart).compareTo(new DateTime(o2.lessonStart)); return new DateTime(o1.lessonStart).compareTo(new DateTime(o2.lessonStart));
} }
}); });
for (int i = 0; i < day_subjects.size(); i++) { for (int i = 0; i < day_subjects.size(); i++) {
if(!day_subjects.get(i).lessonIndex.equals("+")) { if(!day_subjects.get(i).lessonIndex.equals("+")) {
lessonIndexes.add(Integer.valueOf(day_subjects.get(i).lessonIndex)); lessonIndexes.add(Integer.valueOf(day_subjects.get(i).lessonIndex));
} }
} }
if(lessonIndexes.size() > 0) { if(lessonIndexes.size() > 0) {
int lessonsChecked = Collections.min(lessonIndexes); int lessonsChecked = Collections.min(lessonIndexes);
int i = 0; int i = 0;
while(lessonsChecked < Collections.max(lessonIndexes)) { while(lessonsChecked < Collections.max(lessonIndexes)) {
if(!lessonIndexes.contains(lessonsChecked)) { if(!lessonIndexes.contains(lessonsChecked)) {
day_subjects.add(i, emptyLesson(lessonsChecked)); day_subjects.add(i, emptyLesson(lessonsChecked));
} }
lessonsChecked++; lessonsChecked++;
i++; i++;
} }
} }
} }
} }
public static Integer getThemeAccent(Context context) { public static Integer getThemeAccent(Context context) {
DBManager dbManager = new DBManager(context.getApplicationContext()); DBManager dbManager = new DBManager(context.getApplicationContext());
try { try {
dbManager.open(); dbManager.open();
Cursor cursor = dbManager.fetchTheme(); Cursor cursor = dbManager.fetchTheme();
dbManager.close(); dbManager.close();
return cursor.getInt(1); return cursor.getInt(1);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
return 0; return 0;
} }
public Item defaultItem(int theme) { public Item defaultItem(int theme) {
return new Item( return new Item(
R.drawable.card_layout_tile, R.drawable.card_layout_tile,
View.VISIBLE, View.VISIBLE,
View.VISIBLE, View.VISIBLE,
View.INVISIBLE, View.INVISIBLE,
View.VISIBLE, View.VISIBLE,
View.VISIBLE, View.VISIBLE,
View.VISIBLE, View.VISIBLE,
colorValues[theme >= colorValues.length ? 0 : theme], colorValues[theme >= colorValues.length ? 0 : theme],
R.color.text, R.color.text,
R.color.text, R.color.text,
R.color.text_desc R.color.text_desc
); );
} }
public Lesson emptyLesson(int lessonIndex) { public Lesson emptyLesson(int lessonIndex) {
return new Lesson("empty", String.valueOf(lessonIndex), "Lyukasóra", "null", "null", 0, 0, "null"); return new Lesson("empty", String.valueOf(lessonIndex), "Lyukasóra", "null", "null", 0, 0, "null");
} }
public Lesson jsonToLesson(JSONObject json) { public Lesson jsonToLesson(JSONObject json) {
try { try {
return new Lesson( return new Lesson(
json.getJSONObject("Allapot").getString("Nev"), json.getJSONObject("Allapot").getString("Nev"),
!json.getString("Oraszam").equals("null") ? json.getString("Oraszam") : "+", !json.getString("Oraszam").equals("null") ? json.getString("Oraszam") : "+",
json.getString("Nev"), json.getString("Nev"),
json.getString("Tema"), json.getString("Tema"),
json.getString("TeremNeve"), json.getString("TeremNeve"),
new DateTime(json.getString("KezdetIdopont")).getMillis(), new DateTime(json.getString("KezdetIdopont")).getMillis(),
new DateTime(json.getString("VegIdopont")).getMillis(), new DateTime(json.getString("VegIdopont")).getMillis(),
json.getString("HelyettesTanarNeve") json.getString("HelyettesTanarNeve")
); );
}catch (Exception e) { }catch (Exception e) {
Log.d("Filc", "exception: " + e); Log.d("Filc", "exception: " + e);
}; };
return null; return null;
} }
} }

View File

@@ -1,12 +1,12 @@
package hu.filc.naplo.widget_timetable; package hu.refilc.naplo.widget_timetable;
import android.content.Intent; import android.content.Intent;
import android.os.Build; import android.os.Build;
import android.widget.RemoteViewsService; import android.widget.RemoteViewsService;
public class WidgetTimetableService extends RemoteViewsService { public class WidgetTimetableService extends RemoteViewsService {
@Override @Override
public RemoteViewsFactory onGetViewFactory(Intent intent) { public RemoteViewsFactory onGetViewFactory(Intent intent) {
return new WidgetTimetableDataProvider(getApplicationContext(), intent); return new WidgetTimetableDataProvider(getApplicationContext(), intent);
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

View File

@@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient
android:startColor="#123323"
android:endColor="#20AC9B"
android:angle="135" />
</shape>
</item>
</selector>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 20 KiB

View File

@@ -1,7 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/launch_gradient_background" />
<item>
<bitmap android:gravity="center" android:src="@mipmap/ic_splash"/>
</item>
</layer-list>

View File

@@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient
android:startColor="#123323"
android:endColor="#20AC9B"
android:angle="135" />
</shape>
</item>
</selector>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.0 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@@ -1,11 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient
android:startColor="#123323"
android:endColor="#20AC9B"
android:angle="135" />
</shape>
</item>
</selector>

View File

@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:id="@+id/main_lay" android:id="@+id/main_lay"
android:layout_height="50dp" android:layout_height="50dp"
@@ -15,12 +16,14 @@
android:id="@+id/tt_item_num" android:id="@+id/tt_item_num"
android:layout_width="50dp" android:layout_width="50dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:fontFamily="@font/montserrat_medium"
android:gravity="center"
android:text="1."
android:textColor="@color/filc"
android:textColorLink="#ff3D7BF4"
android:textSize="30sp" android:textSize="30sp"
android:textStyle="bold" android:textStyle="bold"
android:fontFamily="@font/montserrat_medium" tools:ignore="HardcodedText" />
android:text="1."
android:gravity="center"
android:textColor="@color/filc"></TextView>
<TextView <TextView
android:id="@+id/tt_item_name" android:id="@+id/tt_item_name"
@@ -33,10 +36,11 @@
android:text="Óra neve" android:text="Óra neve"
android:maxLines="1" android:maxLines="1"
android:ellipsize="end" android:ellipsize="end"
android:layout_toLeftOf="@id/tt_item_room" android:layout_toStartOf="@id/tt_item_room"
android:gravity="center_vertical" android:gravity="center_vertical"
android:layout_toRightOf="@id/tt_item_num" android:layout_toEndOf="@id/tt_item_num"
android:textColor="@color/text"></TextView> android:textColor="@color/text"
tools:ignore="HardcodedText" />
<TextView <TextView
android:id="@+id/tt_item_name_nodesc" android:id="@+id/tt_item_name_nodesc"
@@ -47,13 +51,14 @@
android:fontFamily="@font/montserrat_medium" android:fontFamily="@font/montserrat_medium"
android:visibility="gone" android:visibility="gone"
android:layout_marginTop="2.5dp" android:layout_marginTop="2.5dp"
android:layout_toLeftOf="@id/tt_item_room" android:layout_toStartOf="@id/tt_item_room"
android:text="Óra neve" android:text="Óra neve"
android:maxLines="1" android:maxLines="1"
android:ellipsize="end" android:ellipsize="end"
android:gravity="center_vertical" android:gravity="center_vertical"
android:layout_toRightOf="@id/tt_item_num" android:layout_toEndOf="@id/tt_item_num"
android:textColor="@color/text"></TextView> android:textColor="@color/text"
tools:ignore="HardcodedText" />
<TextView <TextView
android:id="@+id/tt_item_desc" android:id="@+id/tt_item_desc"
@@ -67,10 +72,11 @@
android:maxLines="1" android:maxLines="1"
android:ellipsize="end" android:ellipsize="end"
android:gravity="center_vertical" android:gravity="center_vertical"
android:layout_toRightOf="@id/tt_item_num" android:layout_toEndOf="@id/tt_item_num"
android:layout_toLeftOf="@id/tt_item_room" android:layout_toStartOf="@id/tt_item_room"
android:layout_below="@id/tt_item_name" android:layout_below="@id/tt_item_name"
android:textColor="@color/text_desc"></TextView> android:textColor="@color/text_desc"
tools:ignore="HardcodedText" />
<TextView <TextView
android:id="@+id/tt_item_room" android:id="@+id/tt_item_room"
@@ -84,8 +90,9 @@
android:ellipsize="end" android:ellipsize="end"
android:maxLines="2" android:maxLines="2"
android:gravity="center" android:gravity="center"
android:layout_toLeftOf="@id/tt_item_time" android:layout_toStartOf="@id/tt_item_time"
android:textColor="@color/text_desc"></TextView> android:textColor="@color/text_desc"
tools:ignore="HardcodedText" />
<TextView <TextView
android:id="@+id/tt_item_time" android:id="@+id/tt_item_time"
@@ -95,11 +102,12 @@
android:textFontWeight="500" android:textFontWeight="500"
android:fontFamily="@font/montserrat_medium" android:fontFamily="@font/montserrat_medium"
android:textStyle="bold" android:textStyle="bold"
android:layout_marginLeft="2dp" android:layout_marginStart="2dp"
android:layout_marginTop="-2dp" android:layout_marginTop="-2dp"
android:text="8:30\n9:10" android:text="8:30\n9:10"
android:gravity="center" android:gravity="center"
android:layout_alignParentRight="true" android:layout_alignParentEnd="true"
android:textColor="@color/white"></TextView> android:textColor="@color/white"
tools:ignore="HardcodedText" />
</RelativeLayout> </RelativeLayout>

View File

@@ -19,10 +19,12 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:gravity="center" android:gravity="center"
android:text="Empty" android:text="Üres / Empty"
android:background="@drawable/widget_card_bottom_dark"
android:textColor="@color/text" android:textColor="@color/text"
android:textSize="20sp" android:textSize="20sp"
android:textStyle="bold" /> android:textStyle="bold"
tools:ignore="HardcodedText" />
<ListView <ListView
android:id="@+id/widget_list" android:id="@+id/widget_list"
@@ -43,57 +45,63 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="45dp" android:layout_height="45dp"
android:background="@drawable/widget_card_top_dark"> android:background="@drawable/widget_card_top_dark">
<ImageView <ImageView
android:id="@+id/nav_refresh" android:id="@+id/nav_refresh"
android:layout_width="40dp" android:layout_width="40dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_toStartOf="@id/nav_to_left"
android:clickable="true" android:clickable="true"
android:foreground="?android:attr/selectableItemBackground" android:foreground="?android:attr/selectableItemBackground"
android:padding="10dp"
android:src="@drawable/ic_refresh_cw" android:src="@drawable/ic_refresh_cw"
android:layout_toLeftOf="@id/nav_to_left"
android:tint="@color/text_desc" android:tint="@color/text_desc"
tools:ignore="UseAppTint" tools:ignore="UseAppTint"
android:padding="10dp" /> android:focusable="true" />
<ImageView <ImageView
android:id="@+id/nav_to_left" android:id="@+id/nav_to_left"
android:layout_width="50dp" android:layout_width="45dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_toStartOf="@id/nav_to_right"
android:clickable="true" android:clickable="true"
android:foreground="?android:attr/selectableItemBackground" android:foreground="?android:attr/selectableItemBackground"
android:padding="10dp"
android:src="@drawable/ic_chevron_left" android:src="@drawable/ic_chevron_left"
android:layout_toLeftOf="@id/nav_to_right"
android:tint="@color/text_desc" android:tint="@color/text_desc"
tools:ignore="UseAppTint" tools:ignore="UseAppTint"
android:padding="10dp" /> android:focusable="true" />
<ImageView <ImageView
android:id="@+id/nav_to_right" android:id="@+id/nav_to_right"
android:layout_width="50dp" android:layout_width="45dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_marginEnd="5dp"
android:clickable="true" android:clickable="true"
android:foreground="?android:attr/selectableItemBackground" android:foreground="?android:attr/selectableItemBackground"
android:padding="10dp"
android:src="@drawable/ic_chevron_right" android:src="@drawable/ic_chevron_right"
android:layout_alignParentRight="true"
android:layout_marginRight="5dp"
android:tint="@color/text_desc" android:tint="@color/text_desc"
tools:ignore="UseAppTint" tools:ignore="UseAppTint"
android:padding="10dp" /> android:focusable="true" />
<TextView <TextView
android:id="@+id/nav_current" android:id="@+id/nav_current"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_alignParentLeft="true" android:layout_alignParentStart="true"
android:layout_marginLeft="20sp" android:layout_marginStart="15sp"
android:layout_toLeftOf="@id/nav_refresh" android:layout_marginTop="2sp"
android:layout_toStartOf="@id/nav_refresh"
android:fontFamily="@font/montserrat_medium" android:fontFamily="@font/montserrat_medium"
android:gravity="center_vertical" android:gravity="center_vertical"
android:maxLines="1" android:maxLines="1"
android:text="Timetable" android:text="Órarend"
android:textColor="@color/text" android:textColor="@color/text"
android:textSize="24sp" android:textSize="22sp"
android:textStyle="bold" /> android:textStyle="bold"
tools:ignore="HardcodedText" />
</RelativeLayout> </RelativeLayout>
</RelativeLayout> </RelativeLayout>
@@ -131,8 +139,9 @@
android:text="A widget használatához, bejelentkezés szükséges." android:text="A widget használatához, bejelentkezés szükséges."
android:textColor="@color/black" android:textColor="@color/black"
android:paddingTop="10dp" android:paddingTop="10dp"
android:textSize="17dp" android:textSize="17sp"
android:textStyle="bold" /> android:textStyle="bold"
tools:ignore="HardcodedText" />
<Button <Button
android:id="@+id/open_login" android:id="@+id/open_login"
@@ -145,8 +154,9 @@
android:layout_margin="10dp" android:layout_margin="10dp"
android:textColor="@color/white" android:textColor="@color/white"
android:fontFamily="@font/montserrat_medium" android:fontFamily="@font/montserrat_medium"
android:textSize="16dp" android:textSize="16sp"
android:textStyle="bold"/> android:textStyle="bold"
tools:ignore="HardcodedText" />
</RelativeLayout> </RelativeLayout>
@@ -185,8 +195,9 @@
android:text="Órák a kezdőképernyőd kényelméből." android:text="Órák a kezdőképernyőd kényelméből."
android:textColor="@color/black" android:textColor="@color/black"
android:paddingTop="10dp" android:paddingTop="10dp"
android:textSize="16dp" android:textSize="16sp"
android:textStyle="bold" /> android:textStyle="bold"
tools:ignore="HardcodedText" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
@@ -197,7 +208,8 @@
android:textColor="@color/black" android:textColor="@color/black"
android:layout_marginTop="0dp" android:layout_marginTop="0dp"
android:layout_marginHorizontal="15dp" android:layout_marginHorizontal="15dp"
android:textSize="14dp" /> android:textSize="14sp"
tools:ignore="HardcodedText" />
<Button <Button
android:id="@+id/buy_premium" android:id="@+id/buy_premium"
@@ -211,8 +223,9 @@
android:layout_margin="10dp" android:layout_margin="10dp"
android:textColor="#ff691A9B" android:textColor="#ff691A9B"
android:fontFamily="@font/montserrat_medium" android:fontFamily="@font/montserrat_medium"
android:textSize="16dp" android:textSize="16sp"
android:textStyle="bold"/> android:textStyle="bold"
tools:ignore="HardcodedText" />
</RelativeLayout> </RelativeLayout>

View File

@@ -2,4 +2,5 @@
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/> <background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/> <foreground android:drawable="@drawable/ic_launcher_foreground"/>
<monochrome android:drawable="@mipmap/ic_launcher_monochrome" />
</adaptive-icon> </adaptive-icon>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 844 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 450 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 916 B

After

Width:  |  Height:  |  Size: 576 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 69 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 155 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -1,12 +0,0 @@
<resources>
<style name="Widget.Android.AppWidget.Container" parent="android:Widget">
<item name="android:padding">?attr/appWidgetPadding</item>
<item name="android:background">@drawable/app_widget_background</item>
</style>
<style name="Widget.Android.AppWidget.InnerView" parent="android:Widget">
<item name="android:padding">?attr/appWidgetPadding</item>
<item name="android:background">@drawable/app_widget_inner_view_background</item>
</style>
</resources>

View File

@@ -27,7 +27,7 @@
<color name="yellow_light">#ffFFCC00</color> <color name="yellow_light">#ffFFCC00</color>
<color name="light_yellow_light">#40FFD60A</color> <color name="light_yellow_light">#40FFD60A</color>
<color name="green_light">#ff34C759</color> <color name="green_light">#ff34C759</color>
<color name="filc_light">#ff247665</color> <color name="filc_light">#ff3D7BF4</color>
<color name="teal_light">#ff5AC8FA</color> <color name="teal_light">#ff5AC8FA</color>
<color name="blue_light">#ff007AFF</color> <color name="blue_light">#ff007AFF</color>
<color name="indigo_light">#ff5856D6</color> <color name="indigo_light">#ff5856D6</color>
@@ -49,7 +49,7 @@
<color name="yellow">#ffFFD60A</color> <color name="yellow">#ffFFD60A</color>
<color name="light_yellow">#40FFD60A</color> <color name="light_yellow">#40FFD60A</color>
<color name="green">#ff32D74B</color> <color name="green">#ff32D74B</color>
<color name="filc">#ff29826F</color> <color name="filc">#ff3D7BF4</color>
<color name="teal">#ff64D2FF</color> <color name="teal">#ff64D2FF</color>
<color name="blue">#ff0A84FF</color> <color name="blue">#ff0A84FF</color>
<color name="indigo">#ff5E5CE6</color> <color name="indigo">#ff5E5CE6</color>

View File

@@ -1,4 +1,4 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="hu.filc.naplo"> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="hu.refilc.naplo">
<!-- Permissions --> <!-- Permissions -->
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.VIBRATE" />

View File

@@ -13,7 +13,7 @@ buildscript {
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:4.2.2' classpath 'com.android.tools.build:gradle:7.1.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
} }
} }

View File

@@ -1,4 +0,0 @@
storePassword=filc3fix
keyPassword=filc3fix
keyAlias=upload
storeFile=C:/Users/Peti/upload-keystore.jks

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 735 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

7
filcnaplo/build-ipa.sh Executable file
View File

@@ -0,0 +1,7 @@
#!/bin/sh
flutter clean
dart pub get
flutter doctor -v
flutter build ipa --release --dart-define=APPVER=$(cat pubspec.yaml | grep version: | cut -d' ' -f2 | cut -d+ -f1) --no-tree-shake-icons

View File

@@ -1,13 +1,3 @@
#!/usr/bin/env fish #!/bin/sh
# With build number flutter build apk --release --dart-define=APPVER=$(cat pubspec.yaml | grep version: | cut -d' ' -f2 | cut -d+ -f1) --no-tree-shake-icons
function get_version_bn
cat pubspec.yaml | grep version: | cut -d' ' -f2
end
function get_version
cat pubspec.yaml | grep version: | cut -d' ' -f2 | cut -d+ -f1
end
flutter build apk --release --dart-define=APPVER=(get_version) --no-tree-shake-icons && \
cp -v "build/app/outputs/flutter-apk/app-release.apk" ~/"Desktop/hu.filc.naplo_"(get_version_bn).apk

View File

@@ -0,0 +1,15 @@
// This is a generated file; do not edit or check into version control.
FLUTTER_ROOT=/Users/kima/development/flutter
FLUTTER_APPLICATION_PATH=/Users/kima/Documents/refilc/app/naplo/filcnaplo
COCOAPODS_PARALLEL_CODE_SIGN=true
FLUTTER_TARGET=/Users/kima/Documents/refilc/app/naplo/filcnaplo/lib/main.dart
FLUTTER_BUILD_DIR=build
FLUTTER_BUILD_NAME=3.5.1
FLUTTER_BUILD_NUMBER=197
EXCLUDED_ARCHS[sdk=iphonesimulator*]=i386
EXCLUDED_ARCHS[sdk=iphoneos*]=armv7
DART_DEFINES=RkxVVFRFUl9XRUJfQVVUT19ERVRFQ1Q9dHJ1ZQ==,RkxVVFRFUl9XRUJfQ0FOVkFTS0lUX1VSTD1odHRwczovL3d3dy5nc3RhdGljLmNvbS9mbHV0dGVyLWNhbnZhc2tpdC9iNGZiMTEyMTRkZDJkZGE2Y2UwMTJkZDk4ZWE0OThlOWU4YjkxMjYyLw==
DART_OBFUSCATION=false
TRACK_WIDGET_CREATION=true
TREE_SHAKE_ICONS=false
PACKAGE_CONFIG=/Users/kima/Documents/refilc/app/naplo/filcnaplo/.dart_tool/package_config.json

View File

@@ -0,0 +1,15 @@
// This is a generated file; do not edit or check into version control.
FLUTTER_ROOT=/Users/kima/development/flutter
FLUTTER_APPLICATION_PATH=/Users/kima/Documents/refilc/app/naplo/filcnaplo
COCOAPODS_PARALLEL_CODE_SIGN=true
FLUTTER_TARGET=/Users/kima/Documents/refilc/app/naplo/filcnaplo/lib/main.dart
FLUTTER_BUILD_DIR=build
FLUTTER_BUILD_NAME=4.1.0
FLUTTER_BUILD_NUMBER=213
EXCLUDED_ARCHS[sdk=iphonesimulator*]=i386
EXCLUDED_ARCHS[sdk=iphoneos*]=armv7
DART_DEFINES=RkxVVFRFUl9XRUJfQVVUT19ERVRFQ1Q9dHJ1ZQ==,RkxVVFRFUl9XRUJfQ0FOVkFTS0lUX1VSTD1odHRwczovL3d3dy5nc3RhdGljLmNvbS9mbHV0dGVyLWNhbnZhc2tpdC8yYTM0MDFjOWJiYjVhOWE5YWVjNzRkNGY3MzVkMThhOWRkM2ViZjJkLw==
DART_OBFUSCATION=false
TRACK_WIDGET_CREATION=true
TREE_SHAKE_ICONS=false
PACKAGE_CONFIG=/Users/kima/Documents/refilc/app/naplo/filcnaplo/.dart_tool/package_config.json

View File

@@ -0,0 +1,15 @@
// This is a generated file; do not edit or check into version control.
FLUTTER_ROOT=/Users/kima/src/flutter
FLUTTER_APPLICATION_PATH=/Users/kima/Documents/refilc/app/naplo/filcnaplo
COCOAPODS_PARALLEL_CODE_SIGN=true
FLUTTER_TARGET=/Users/kima/Documents/refilc/app/naplo/filcnaplo/lib/main.dart
FLUTTER_BUILD_DIR=build
FLUTTER_BUILD_NAME=4.1.1
FLUTTER_BUILD_NUMBER=216
EXCLUDED_ARCHS[sdk=iphonesimulator*]=i386
EXCLUDED_ARCHS[sdk=iphoneos*]=armv7
DART_DEFINES=QVBQVkVSPTQuMS4x,RkxVVFRFUl9XRUJfQVVUT19ERVRFQ1Q9dHJ1ZQ==,RkxVVFRFUl9XRUJfQ0FOVkFTS0lUX1VSTD1odHRwczovL3d3dy5nc3RhdGljLmNvbS9mbHV0dGVyLWNhbnZhc2tpdC9jZGJlZGE3ODhhMjkzZmEyOTY2NWRjM2ZhM2Q2ZTYzYmQyMjFjYjBkLw==
DART_OBFUSCATION=false
TRACK_WIDGET_CREATION=true
TREE_SHAKE_ICONS=false
PACKAGE_CONFIG=/Users/kima/Documents/refilc/app/naplo/filcnaplo/.dart_tool/package_config.json

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