Skip to content

Commit 2feca92

Browse files
authored
Add files via upload
1 parent 6e188fb commit 2feca92

1 file changed

Lines changed: 252 additions & 0 deletions

File tree

readme.md

Lines changed: 252 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,252 @@
1+
# EdiMyDar ToDO android app with java
2+
#### Video Demo: <URL [HERE](https://youtu.be/mfIrvP7T0NM)>
3+
#### Description (Explainig what each of the files you wrote for the project contains and does):
4+
##### I.**package com.example.edimydar** :
5+
###### 1.**Activites**:
6+
###### 1.1.Home Activity:
7+
- **Purpose**:The first activity shown to the user.
8+
- **Functionality**:
9+
- A GetStarted button, that has an on-click listener.
10+
- this button triggers an intent (that launches another activity named Register which is the Activity responsible for Registring users).
11+
12+
###### 1.2.HomePage_MAIN:
13+
- **Purpose**: The main home page activity has a navigation drawer and a bottom navigation bar. Handles switching between fragments.
14+
- **Functionality**:
15+
- *(ACCESS ONLY BY AUTHENTICATED USERS)* it contains the 3 main fragments
16+
- My_Day
17+
- Tasks
18+
- AI Help
19+
- Uses ViewBinding.
20+
- Listener on nav View that manages the logic on how to navigate between fragments.
21+
- it uses a switch that replaces the current frame.
22+
- it checks and requests notification permission if the user accepts it guides the user to app settings to enable the permission.
23+
- it also update FireBase notification stat respectively.
24+
- By default, it replaces the current fragment with the my_day fragment;
25+
26+
27+
28+
###### 1.3.Login:
29+
- **Purpose**: Handles user login. Validates credentials and navigates to the HomePage_MAIN activity upon successful login.
30+
- **Functionality**:
31+
- it contains 3 button listeners:
32+
- on login
33+
- on forgotPassword
34+
- on sign-up
35+
- validates the inputs (empty, valid email format, valid password format,...)
36+
- login the user using fireBase.
37+
- if the user doesn't exist handle fireBase exceptions
38+
- also checks if the user is already logged in if so, redirect the user to The Main_Page
39+
40+
###### 1.4.Register:
41+
- **Purpose**: Handles user registration. Validates inputs and saves user data to the database.
42+
- **Functionality**:
43+
- it contains 2 button listens:
44+
- on Sign In
45+
- on Register
46+
- Validate fields :(empty, valid email and password format, and matching password and Confirmation password)
47+
- register the user in FireBase.
48+
- handling FireBase exceptions if the registration fails:
49+
- storing data in FireStore
50+
51+
52+
###### 1.5.UsrProfileِActivity:
53+
- **Purpose**: Manages user profile. Allows users to view and edit their profile details.
54+
- **Functionality**:
55+
- it uses an image picker to pick the user in
56+
- img view listener to change the user profile:
57+
- Storing, loading this image as a Base64 in/from FireStore using the helper class Named: *ImageUtil*
58+
59+
- using Glide to load this image into the image view;
60+
- loads user data from fireStore.
61+
- another listener on the update profile button that updates the user info in FireBase
62+
- listener on notification switch that requests the permissions and updates the notif stat  in fireStore
63+
- Re-authentification dialog if the user wants to change email
64+
- log out the user
65+
66+
67+
###### 1.6 Other classes:
68+
- **ForgotPWD**:
69+
- **Purpose**: Handles forogt password, send password reset link to the user email.
70+
- **Functionality**:
71+
- On Click listener on submit button.
72+
- checks email format.
73+
- if email exists send the user to success Activity and send them reset password link (FireBase handles reseting password)
74+
- else redirect the usr to failure Activity.
75+
- validate email format before proceding.
76+
- ensure input is not empty.
77+
78+
- **ForgotPWD_R_SUCCESS**: shows to the users steps how to reset the password, and password format, and also have an on click listener on return to login button
79+
80+
- **ForgotPWD_R_FAILURE**: shows to the users that the operation failed and give them the option to return to login using and on click listener on a button
81+
82+
83+
84+
85+
86+
87+
###### 2.**Fragments**:
88+
89+
###### 2.1 myDayFragment:
90+
- **Purpose**: Display and manage user Todays Tasks.
91+
- **Functionality**:
92+
- fetchUserTasks from FireStore.
93+
- load Profile picture from fireStore.
94+
- onClickListener on the user-profile Block.
95+
- set greeting depends on the current time.
96+
- get current user data.
97+
- Handling recycler view that contains the tasks
98+
- show a dialog to add Today's tasks to FireStore and local data (custom dialog).
99+
- this dialog is triggered when clicking on + image view.
100+
- Going to the Register page if the user is not logged in.
101+
- Failure on loading user data results in logout except not user signed in results redirection to Register page.
102+
103+
###### 2.2 TaskFragment:
104+
- **Purpose**: Manage general tasks, allow users to add/remove tasks and schedule notification(reminders) about tasks.
105+
- **Functionality**:
106+
- show a dialog to add a Normal Task to FireStore and local data (custom dialog).
107+
- this dialog is triggered when clicking on + image View.
108+
- schedule notification based on time selected(Date and Time pickers in the custom dialog)
109+
- Handels alarm permission (check, request)
110+
- send notification
111+
- Handels Recycler View(tasks elements)
112+
- fetchUserData :(nbr of tasks, username,tasks) from fireStore
113+
- UpdatesTasks counter
114+
- Adding tasks cases :
115+
- Default: (no date nor time) : add it to Today Tasks without time
116+
- Today without time - > no notif
117+
- Today with time -> date: today | time: time specified
118+
- Date only -> date:Date specified | time:00.00
119+
- Time only-> date:today | time :time specified
120+
- Both exist -> date:Date specified | time: time specified
121+
- No Date no Time -> date is today no notif
122+
123+
124+
###### 2.3 Ai Help
125+
- **Purpose**:implements gemini api to help users to manage their tasks.
126+
- **Functionality**:
127+
- REST API implmentations using OkHttp.
128+
- Recyler View to display chat messages (From Bot and user also)
129+
- on click listener to interact with the api
130+
131+
132+
133+
134+
135+
136+
137+
138+
139+
###### 3.**Adapters**:
140+
141+
###### 3.1 MessageAdapter:
142+
- **Purpose**: Adapter for chat messages
143+
- **Functionality**:
144+
- binds chat data to the Recycler View
145+
- implements the logic for every element in the recycler view
146+
- if the msg is sent by the user: make rightChat visible and leftChat Gone and set the user msg with the sent msg;
147+
- else make rightChat Gone and leftChat Visible and set the set the ai response to the bot msg;
148+
149+
###### 3.2 TaskRecylerViewAdapter:
150+
- **Purpose**: Adapter for Todays Tasks recycler view
151+
- **Functionality**:
152+
- binds tasks data to the Recycler View.
153+
- set the listener for checkBox.
154+
- if it's checked Delete the task, notify the adapter and updates fireStore data, and local data
155+
156+
###### 3.3 normalTaskRecycler_V_Adapter:
157+
- **Purpose**: Adapter for Normal Tasks recycler view.
158+
- **Functionality**:
159+
- create an interface that allows the Tasks fragment to updates the tasks counter when items are deleted
160+
- binds normal tasks data to the recycler view.
161+
- set the listener for checkBox.
162+
- if it's checked Delete the task, notify the adapter and updates fireStore data, and local data.
163+
164+
165+
166+
###### 4.**Models**:
167+
168+
###### 4.1 Message:
169+
- Represents messages with attributes like:
170+
- String msg.
171+
- String sentByWho.
172+
- 2 final attributes :
173+
- String SENT_BY_USR = "usr"
174+
- String SENT_BY_BOT= "bot"
175+
176+
177+
###### 4.2 DailyTask:
178+
- Represents Todays Tasks with attributes like:
179+
- String title.
180+
- boolean checked.
181+
182+
###### 4.3 NormalTask(Extends DailyTask):
183+
- Represents Normal Tasks with attributes like:
184+
- String title.
185+
- boolean checked.
186+
187+
- String dueDate.
188+
- String dueTime.
189+
190+
191+
###### 5.**Utils**:
192+
193+
###### 5.1 ImageUtils:
194+
- Helps convertion from Base64 to String and vis-versa
195+
196+
197+
###### 5.2 NotificationReceiver:
198+
- BroadCast Receiver for handling tasks notifications, triggers notifications at specified times.(scheduled times )
199+
200+
201+
202+
###### 5. **Resources**:
203+
- **Drawable**: containes :
204+
- icons.
205+
- images.
206+
- custom shapes.
207+
- cutom components like (Custom checkBox)
208+
209+
- **Layout**: containes (XML):
210+
- custom xml layout for every Activity/Fragment.
211+
- custom dialog.
212+
- custom recycler view.
213+
- custom chat item.
214+
215+
- **Menu**: Containes custom menu nav bar (XML)
216+
217+
- **MipMap**: Containes app icon.
218+
219+
- **Values**: Containes:
220+
- Colors, dimentions,strings,themes.
221+
- colors and diments and string added to avoid hardcoding stuff.
222+
- themes containes:
223+
- Custom Active Indicator.
224+
- Custom Button Style.
225+
- Custom CheckBox Style.
226+
227+
- 3 themes :
228+
- app with action Bar.
229+
- app without action Bar.
230+
- Base theme
231+
232+
233+
234+
235+
###### 6. **Local Properties**
236+
- Containes api key
237+
238+
###### 7. **Dependecies**:
239+
- google secrets gradle plugin.
240+
- OkHttp
241+
- ImagePicker
242+
- Glide
243+
- FireBase:
244+
- auth
245+
- FireStore
246+
- Analysis
247+
- BOM
248+
249+
###### 8. **Manifest permissions**:
250+
- android.permission.INTERNET
251+
- android.permission.POST_NOTIFICATIONS
252+
- android.permission.SCHEDULE_EXACT_ALARM

0 commit comments

Comments
 (0)