├── app ├── .gitignore ├── src │ └── main │ │ ├── res │ │ ├── drawable │ │ │ ├── emp.png │ │ │ ├── bookcon.png │ │ │ ├── button.xml │ │ │ ├── circle_shape.xml │ │ │ └── ic_launcher_background.xml │ │ ├── drawable-hdpi │ │ │ ├── bgapps.png │ │ │ ├── chat.png │ │ │ ├── date.png │ │ │ ├── bookmark.png │ │ │ ├── contact.png │ │ │ ├── membres.png │ │ │ ├── logobanner.png │ │ │ ├── newtraining.png │ │ │ └── performances.png │ │ ├── drawable-ldpi │ │ │ ├── bgapps.png │ │ │ ├── chat.png │ │ │ ├── date.png │ │ │ ├── person.png │ │ │ ├── bookmark.png │ │ │ └── contact.png │ │ ├── drawable-mdpi │ │ │ ├── bgapps.png │ │ │ ├── chat.png │ │ │ ├── date.png │ │ │ ├── backicon.png │ │ │ ├── bookmark.png │ │ │ └── contact.png │ │ ├── drawable-xhdpi │ │ │ ├── badge.png │ │ │ ├── chat.png │ │ │ ├── date.png │ │ │ ├── bgapps.png │ │ │ ├── contact.png │ │ │ ├── bookmark.png │ │ │ └── settings.png │ │ ├── drawable-xxhdpi │ │ │ ├── chat.png │ │ │ ├── date.png │ │ │ ├── bgapps.png │ │ │ ├── bookmark.png │ │ │ ├── contact.png │ │ │ └── ic_login_button.xml │ │ ├── drawable-xxxhdpi │ │ │ ├── chat.png │ │ │ ├── date.png │ │ │ ├── bgapps.png │ │ │ ├── bookmark.png │ │ │ ├── contact.png │ │ │ ├── dashbg.png │ │ │ └── loginpic.png │ │ ├── drawable-v24 │ │ │ ├── end_marker.png │ │ │ ├── start_marker.png │ │ │ ├── user_marker.png │ │ │ └── ic_launcher_foreground.xml │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_round.png │ │ │ └── ic_launcher_foreground.png │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_round.png │ │ │ └── ic_launcher_foreground.png │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_round.png │ │ │ └── ic_launcher_foreground.png │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_round.png │ │ │ └── ic_launcher_foreground.png │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ ├── ic_launcher_round.png │ │ │ └── ic_launcher_foreground.png │ │ ├── values │ │ │ ├── ic_launcher_background.xml │ │ │ ├── integers.xml │ │ │ ├── dimens.xml │ │ │ ├── colors.xml │ │ │ ├── styles.xml │ │ │ └── strings.xml │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ └── layout │ │ │ ├── list_item_barchart.xml │ │ │ ├── list_item_linechart.xml │ │ │ ├── training_info.xml │ │ │ ├── chat_msg_row.xml │ │ │ ├── activity_coach_training_time.xml │ │ │ ├── completed_task_item.xml │ │ │ ├── team_member_item.xml │ │ │ ├── activity_create_team.xml │ │ │ ├── activity_calendar.xml │ │ │ ├── activity_tasks.xml │ │ │ ├── activity_messages.xml │ │ │ ├── activity_member_training_time.xml │ │ │ ├── activity_main.xml │ │ │ ├── activity_coach_memberlist.xml │ │ │ ├── activity_training.xml │ │ │ ├── activity_coach_training.xml │ │ │ ├── activity_coach_messages.xml │ │ │ ├── activity_coach_reports.xml │ │ │ └── activity_create_training.xml │ │ ├── ic_launcher-playstore.png │ │ ├── assets │ │ └── OpenSans-Regular.ttf │ │ ├── java │ │ └── com │ │ │ └── choubapp │ │ │ └── running │ │ │ ├── TrainingTaskItem.java │ │ │ ├── CharItem.java │ │ │ ├── Membre.java │ │ │ ├── InstantMessage.java │ │ │ ├── TaskAdapter.java │ │ │ ├── MembreAdapter.java │ │ │ ├── LockOrientation.java │ │ │ ├── LineCharItem.java │ │ │ ├── BarChartItem.java │ │ │ ├── MessagesActivity.java │ │ │ ├── CreateTeam.java │ │ │ ├── ChatListAdapter.java │ │ │ ├── CoachDashboardActivity.java │ │ │ ├── DashboardActivity.java │ │ │ ├── CoachMemberlistActivity.java │ │ │ ├── CalendarActivity.java │ │ │ ├── CoachMessagesActivity.java │ │ │ ├── CreateTraining.java │ │ │ └── LocationService.java │ │ └── AndroidManifest.xml ├── proguard-rules.pro ├── google-services.json └── build.gradle ├── settings.gradle ├── Screenshots ├── coach.jpg ├── banner.jpg ├── member.jpg ├── signup.jpg ├── coachscreens.jpg ├── trainingTime.jpg └── memberscreens.jpg ├── .github └── FUNDING.yml ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── .idea ├── vcs.xml ├── runConfigurations.xml ├── gradle.xml ├── misc.xml ├── codeStyles │ └── Project.xml └── assetWizardSettings.xml ├── .gitignore ├── gradle.properties ├── LICENSE ├── gradlew.bat ├── README.md └── gradlew /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /Screenshots/coach.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/Screenshots/coach.jpg -------------------------------------------------------------------------------- /Screenshots/banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/Screenshots/banner.jpg -------------------------------------------------------------------------------- /Screenshots/member.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/Screenshots/member.jpg -------------------------------------------------------------------------------- /Screenshots/signup.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/Screenshots/signup.jpg -------------------------------------------------------------------------------- /Screenshots/coachscreens.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/Screenshots/coachscreens.jpg -------------------------------------------------------------------------------- /Screenshots/trainingTime.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/Screenshots/trainingTime.jpg -------------------------------------------------------------------------------- /Screenshots/memberscreens.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/Screenshots/memberscreens.jpg -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | custom: ['https://www.buymeacoffee.com/choubari'] 4 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/emp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable/emp.png -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /app/src/main/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/ic_launcher-playstore.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/bookcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable/bookcon.png -------------------------------------------------------------------------------- /app/src/main/assets/OpenSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/assets/OpenSans-Regular.ttf -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/bgapps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-hdpi/bgapps.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-hdpi/chat.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/date.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-hdpi/date.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/bgapps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-ldpi/bgapps.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-ldpi/chat.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/date.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-ldpi/date.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/person.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-ldpi/person.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/bgapps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-mdpi/bgapps.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-mdpi/chat.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/date.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-mdpi/date.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/badge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-xhdpi/badge.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-xhdpi/chat.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/date.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-xhdpi/date.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-xxhdpi/chat.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/date.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-xxhdpi/date.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-hdpi/bookmark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/contact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-hdpi/contact.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/membres.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-hdpi/membres.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-ldpi/bookmark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-ldpi/contact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-ldpi/contact.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/backicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-mdpi/backicon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-mdpi/bookmark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/contact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-mdpi/contact.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/bgapps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-xhdpi/bgapps.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/contact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-xhdpi/contact.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/bgapps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-xxhdpi/bgapps.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-xxxhdpi/chat.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/date.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-xxxhdpi/date.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/logobanner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-hdpi/logobanner.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/newtraining.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-hdpi/newtraining.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/end_marker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-v24/end_marker.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/start_marker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-v24/start_marker.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/user_marker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-v24/user_marker.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-xhdpi/bookmark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-xhdpi/settings.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-xxhdpi/bookmark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/contact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-xxhdpi/contact.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/bgapps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-xxxhdpi/bgapps.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-xxxhdpi/bookmark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/contact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-xxxhdpi/contact.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/dashbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-xxxhdpi/dashbg.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/loginpic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-xxxhdpi/loginpic.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/performances.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/drawable-hdpi/performances.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/choubari/Training-Tracker/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFFFFF 4 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/values/integers.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 100 5 | 200 6 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10dp 4 | 10dp 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches/build_file_checksums.ser 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | .DS_Store 9 | /build 10 | /captures 11 | .externalNativeBuild 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/button.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Tue Mar 17 00:39:45 CET 2020 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/circle_shape.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 11 | 12 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/layout/list_item_barchart.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/layout/list_item_linechart.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/choubapp/running/TrainingTaskItem.java: -------------------------------------------------------------------------------- 1 | package com.choubapp.running; 2 | 3 | 4 | public class TrainingTaskItem { 5 | private String Name; 6 | private String Time; 7 | private String TrainingDate; 8 | TrainingTaskItem(String name, String time, String trainingDate) { 9 | Name = name; 10 | Time = time; 11 | TrainingDate = trainingDate; 12 | } 13 | public String getName() { 14 | return Name; 15 | } 16 | public String getTime() { 17 | return Time; 18 | } 19 | String getTrainingDate() { 20 | return TrainingDate; 21 | } 22 | } -------------------------------------------------------------------------------- /app/src/main/java/com/choubapp/running/CharItem.java: -------------------------------------------------------------------------------- 1 | package com.choubapp.running; 2 | 3 | import android.content.Context; 4 | import android.view.View; 5 | 6 | import com.github.mikephil.charting.data.ChartData; 7 | 8 | abstract class ChartItem { 9 | 10 | static final int TYPE_BARCHART = 0; 11 | static final int TYPE_LINECHART = 1; 12 | static final int TYPE_PIECHART = 2; 13 | 14 | ChartData mChartData; 15 | 16 | ChartItem(ChartData cd) { 17 | this.mChartData = cd; 18 | } 19 | 20 | public abstract int getItemType(); 21 | 22 | public abstract View getView(int position, View convertView, Context c); 23 | } -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #03a5ec 4 | #202F65 5 | #f28a69 6 | 7 | #FFFFFF 8 | #000000 9 | #27AE60 10 | #E8E1E7 11 | #50d050 12 | #008000 13 | 14 | 15 | #000 16 | #FDFFFF 17 | 18 | 19 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 19 | 20 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | # IDE (e.g. Android Studio) users: 3 | # Gradle settings configured through the IDE *will override* 4 | # any settings specified in this file. 5 | # For more details on how to configure your build environment visit 6 | # http://www.gradle.org/docs/current/userguide/build_environment.html 7 | # Specifies the JVM arguments used for the daemon process. 8 | # The setting is particularly useful for tweaking memory settings. 9 | org.gradle.jvmargs=-Xmx1536m 10 | # When configured, Gradle will run in incubating parallel mode. 11 | # This option should only be used with decoupled projects. More details, visit 12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 13 | # org.gradle.parallel=true 14 | android.useAndroidX=true 15 | android.enableJetifier=true 16 | 17 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/choubapp/running/Membre.java: -------------------------------------------------------------------------------- 1 | package com.choubapp.running; 2 | 3 | public class Membre { 4 | private String FullName; 5 | private String Username; 6 | private String Email; 7 | private String Birth; 8 | private String Team; 9 | 10 | 11 | public Membre(){ 12 | 13 | } 14 | public Membre(String fullName, String username, String email, String birth, String team) { 15 | FullName = fullName; 16 | Username = username; 17 | Email = email; 18 | Birth = birth; 19 | Team = team; 20 | } 21 | 22 | public String getTeam() { return Team; } 23 | 24 | public String getFullName() { 25 | return FullName; 26 | } 27 | 28 | public String getUsername() { 29 | return Username; 30 | } 31 | 32 | public String getEmail() { 33 | return Email; 34 | } 35 | 36 | public String getBirth() { 37 | return Birth; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/ic_login_button.xml: -------------------------------------------------------------------------------- 1 | 7 | 9 | 10 | 17 | 18 | 19 | 20 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/java/com/choubapp/running/InstantMessage.java: -------------------------------------------------------------------------------- 1 | package com.choubapp.running; 2 | 3 | public class InstantMessage { 4 | private String message; 5 | private String coachName; 6 | private String teamId; 7 | private String date; 8 | private String time; 9 | 10 | InstantMessage(String message, String author, String teamId, String date, String time) { 11 | this.message = message; 12 | this.coachName = author; 13 | this.teamId = teamId; 14 | this.date = date; 15 | this.time = time; 16 | 17 | } 18 | public InstantMessage() { 19 | 20 | } 21 | 22 | public String getMessage() { 23 | return message; 24 | } 25 | 26 | public String getCoachName() { 27 | return coachName; 28 | } 29 | 30 | public String getTeamId() { 31 | return teamId; 32 | } 33 | 34 | public String getDate() { 35 | return date; 36 | } 37 | 38 | public String getTime() { 39 | return time; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /app/src/main/res/layout/training_info.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 11 | 20 | 27 | 28 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Kawtar CHOUBARI 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /app/google-services.json: -------------------------------------------------------------------------------- 1 | { 2 | "project_info": { 3 | "project_number": "7653721471", 4 | "firebase_url": "https://trackingtraining-ff626.firebaseio.com", 5 | "project_id": "trackingtraining-ff626", 6 | "storage_bucket": "trackingtraining-ff626.appspot.com" 7 | }, 8 | "client": [ 9 | { 10 | "client_info": { 11 | "mobilesdk_app_id": "1:7653721471:android:89171c44407784cdb1464a", 12 | "android_client_info": { 13 | "package_name": "com.choubapp.running" 14 | } 15 | }, 16 | "oauth_client": [ 17 | { 18 | "client_id": "7653721471-h4t8rghib5ig5ohmqvomlc3lhv4ldecl.apps.googleusercontent.com", 19 | "client_type": 1, 20 | "android_info": { 21 | "package_name": "com.choubapp.running", 22 | "certificate_hash": "46b4fea630aff146f6417eb75bdf72bc283f1bcd" 23 | } 24 | }, 25 | { 26 | "client_id": "7653721471-8c29s2u4s9tj9p1ppkblaqbujk98a7qp.apps.googleusercontent.com", 27 | "client_type": 3 28 | } 29 | ], 30 | "api_key": [ 31 | { 32 | "current_key": "AIzaSyB8qJy_p2XFSq2uQOUj1hUkxYRa0FLUt1M" 33 | } 34 | ], 35 | "services": { 36 | "appinvite_service": { 37 | "other_platform_oauth_client": [ 38 | { 39 | "client_id": "7653721471-8c29s2u4s9tj9p1ppkblaqbujk98a7qp.apps.googleusercontent.com", 40 | "client_type": 3 41 | } 42 | ] 43 | } 44 | } 45 | } 46 | ], 47 | "configuration_version": "1" 48 | } -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 15 | 16 | 20 | 21 | 28 | 29 | 33 | 34 | 37 | 38 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /app/src/main/res/layout/chat_msg_row.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 22 | 23 | 35 | 36 | 46 | 47 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_coach_training_time.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 24 | 28 | 29 | 33 | 34 | 35 | 36 | 37 | 38 | 44 | 45 | -------------------------------------------------------------------------------- /app/src/main/java/com/choubapp/running/TaskAdapter.java: -------------------------------------------------------------------------------- 1 | package com.choubapp.running; 2 | 3 | import android.view.LayoutInflater; 4 | import android.view.View; 5 | import android.view.ViewGroup; 6 | import android.widget.TextView; 7 | import java.util.ArrayList; 8 | 9 | import androidx.annotation.NonNull; 10 | import androidx.recyclerview.widget.RecyclerView; 11 | 12 | 13 | public class TaskAdapter extends RecyclerView.Adapter { 14 | private ArrayList mTask; 15 | static class TaskViewHolder extends RecyclerView.ViewHolder { 16 | TextView mTime; 17 | TextView mName; 18 | TextView mDate; 19 | TaskViewHolder(View itemView) { 20 | super(itemView); 21 | mTime = itemView.findViewById(R.id.training_time); 22 | mName = itemView.findViewById(R.id.training_name); 23 | mDate = itemView.findViewById(R.id.training_date); 24 | } 25 | } 26 | TaskAdapter(ArrayList exampleList) { 27 | mTask = exampleList; 28 | } 29 | @NonNull 30 | @Override 31 | public TaskViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 32 | View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.completed_task_item, parent, false); 33 | return new TaskViewHolder(v); 34 | } 35 | 36 | @Override 37 | public void onBindViewHolder(TaskViewHolder holder, int position) { 38 | TrainingTaskItem currentItem = mTask.get(position); 39 | holder.mTime.setText(currentItem.getTime()); 40 | holder.mName.setText(currentItem.getName()); 41 | holder.mDate.setText(currentItem.getTrainingDate()); 42 | } 43 | @Override 44 | public int getItemCount() { 45 | return mTask.size(); 46 | } 47 | } -------------------------------------------------------------------------------- /app/src/main/res/layout/completed_task_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 15 | 16 | 25 | 26 | 34 | 35 | 42 | 43 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 7 | 12 | 13 | 19 | 22 | 25 | 26 | 27 | 28 | 34 | 35 | -------------------------------------------------------------------------------- /app/src/main/java/com/choubapp/running/MembreAdapter.java: -------------------------------------------------------------------------------- 1 | package com.choubapp.running; 2 | 3 | import android.view.LayoutInflater; 4 | import android.view.View; 5 | import android.view.ViewGroup; 6 | import android.widget.TextView; 7 | 8 | import androidx.annotation.NonNull; 9 | import androidx.recyclerview.widget.RecyclerView; 10 | 11 | import com.firebase.ui.firestore.FirestoreRecyclerAdapter; 12 | import com.firebase.ui.firestore.FirestoreRecyclerOptions; 13 | 14 | public class MembreAdapter extends FirestoreRecyclerAdapter { 15 | 16 | MembreAdapter(@NonNull FirestoreRecyclerOptions options) { 17 | super(options); 18 | } 19 | 20 | @Override 21 | protected void onBindViewHolder(@NonNull MembreHolder holder, int position, @NonNull Membre model) { 22 | holder.textViewFullName.setText(model.getFullName()); 23 | holder.textViewUsername.setText("@" + model.getUsername()); 24 | holder.textViewEmail.setText(String.valueOf(model.getEmail())); 25 | holder.textViewBirth.setText(String.valueOf(model.getBirth())); 26 | } 27 | 28 | @NonNull 29 | @Override 30 | public MembreHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { 31 | View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.team_member_item, parent, false); 32 | return new MembreHolder(v); 33 | } 34 | 35 | static class MembreHolder extends RecyclerView.ViewHolder { 36 | TextView textViewFullName; 37 | TextView textViewUsername; 38 | TextView textViewEmail; 39 | TextView textViewBirth; 40 | 41 | MembreHolder(View itemView) { 42 | super(itemView); 43 | textViewFullName = itemView.findViewById(R.id.text_view_name); 44 | textViewUsername = itemView.findViewById(R.id.text_view_username); 45 | textViewEmail = itemView.findViewById(R.id.text_view_email); 46 | textViewBirth = itemView.findViewById(R.id.text_view_birth); 47 | } 48 | } 49 | 50 | } -------------------------------------------------------------------------------- /app/src/main/java/com/choubapp/running/LockOrientation.java: -------------------------------------------------------------------------------- 1 | package com.choubapp.running; 2 | 3 | import android.annotation.SuppressLint; 4 | import android.app.Activity; 5 | import android.app.Application; 6 | import android.content.pm.ActivityInfo; 7 | import android.os.Bundle; 8 | 9 | public class LockOrientation extends Application { 10 | // le but de ce code est de assurer que tous les menus de l'application s'ouvrent en mode portrait et de vérouiller cette orientation 11 | @Override 12 | public void onCreate() { 13 | super.onCreate(); 14 | 15 | // register to be informed of activities starting up 16 | registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { 17 | 18 | @SuppressLint("SourceLockedOrientationActivity") 19 | @Override 20 | public void onActivityStarted(Activity activity) { 21 | activity.setRequestedOrientation( 22 | ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 23 | } 24 | 25 | @Override 26 | public void onActivityResumed(Activity activity) { 27 | 28 | } 29 | 30 | @Override 31 | public void onActivityPaused(Activity activity) { 32 | 33 | } 34 | 35 | @Override 36 | public void onActivityStopped(Activity activity) { 37 | 38 | } 39 | 40 | @Override 41 | public void onActivitySaveInstanceState(Activity activity, Bundle bundle) { 42 | 43 | } 44 | 45 | @Override 46 | public void onActivityDestroyed(Activity activity) { 47 | 48 | } 49 | 50 | @SuppressLint("SourceLockedOrientationActivity") 51 | @Override 52 | public void onActivityCreated(Activity activity, 53 | Bundle savedInstanceState) { 54 | activity.setRequestedOrientation( 55 | ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 56 | } 57 | }); 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Janvier 5 | Fevrier 6 | Mars 7 | Avril 8 | Mai 9 | Juin 10 | Juillet 11 | Aout 12 | Septembre 13 | Octobre 14 | Novembre 15 | Decembre 16 | 17 | Training Tracker 18 | Sign in or register 19 | Register 20 | Sign in 21 | Sign up 22 | This email address is invalid 23 | Password too short or does not match 24 | This password is incorrect 25 | 26 | 27 | This field is required 28 | 29 | 30 | 31 | Equipes 32 | 33 | L 34 | M 35 | Me 36 | J 37 | V 38 | S 39 | 40 | D 41 | 42 | Aujourdhui 43 | OK 44 | Annuler 45 | Hello! 46 | Type a message 47 | Send 48 | 49 | 50 | ADD YOUR GOOGLE MAPS API HERE 51 | -------------------------------------------------------------------------------- /app/src/main/java/com/choubapp/running/LineCharItem.java: -------------------------------------------------------------------------------- 1 | package com.choubapp.running; 2 | 3 | import android.annotation.SuppressLint; 4 | import android.content.Context; 5 | import android.graphics.Typeface; 6 | import android.view.LayoutInflater; 7 | import android.view.View; 8 | 9 | import com.github.mikephil.charting.charts.LineChart; 10 | import com.github.mikephil.charting.components.YAxis; 11 | import com.github.mikephil.charting.data.ChartData; 12 | import com.github.mikephil.charting.data.LineData; 13 | 14 | class LineChartItem extends ChartItem { 15 | private final Typeface mTf; 16 | LineChartItem(ChartData cd, Context c) { 17 | super(cd); 18 | mTf = Typeface.createFromAsset(c.getAssets(), "OpenSans-Regular.ttf"); 19 | } 20 | 21 | @Override 22 | public int getItemType() { 23 | return TYPE_LINECHART; 24 | } 25 | 26 | @SuppressLint("InflateParams") 27 | @Override 28 | public View getView(int position, View convertView, Context c) { 29 | 30 | ViewHolder holder; 31 | if (convertView == null) { 32 | holder = new ViewHolder(); 33 | convertView = LayoutInflater.from(c).inflate( 34 | R.layout.list_item_linechart, null); 35 | holder.chart = convertView.findViewById(R.id.chart); 36 | convertView.setTag(holder); 37 | 38 | } else { 39 | holder = (ViewHolder) convertView.getTag(); 40 | } 41 | 42 | holder.chart.getDescription().setEnabled(false); 43 | holder.chart.setDrawGridBackground(false); 44 | 45 | YAxis leftAxis = holder.chart.getAxisLeft(); 46 | leftAxis.setTypeface(mTf); 47 | leftAxis.setLabelCount(5, false); 48 | leftAxis.setAxisMinimum(0f); 49 | 50 | YAxis rightAxis = holder.chart.getAxisRight(); 51 | rightAxis.setTypeface(mTf); 52 | rightAxis.setLabelCount(5, false); 53 | rightAxis.setDrawGridLines(false); 54 | rightAxis.setAxisMinimum(0f); 55 | 56 | // set data 57 | holder.chart.setData((LineData) mChartData); 58 | holder.chart.animateX(750); 59 | 60 | return convertView; 61 | } 62 | 63 | private static class ViewHolder { 64 | LineChart chart; 65 | } 66 | } -------------------------------------------------------------------------------- /app/src/main/res/layout/team_member_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 15 | 16 | 26 | 27 | 35 | 36 | 43 | 50 | 51 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | set DIRNAME=%~dp0 12 | if "%DIRNAME%" == "" set DIRNAME=. 13 | set APP_BASE_NAME=%~n0 14 | set APP_HOME=%DIRNAME% 15 | 16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 17 | set DEFAULT_JVM_OPTS= 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windows variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | 53 | :win9xME_args 54 | @rem Slurp the command line arguments. 55 | set CMD_LINE_ARGS= 56 | set _SKIP=2 57 | 58 | :win9xME_args_slurp 59 | if "x%~1" == "x" goto execute 60 | 61 | set CMD_LINE_ARGS=%* 62 | 63 | :execute 64 | @rem Setup the command line 65 | 66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 67 | 68 | @rem Execute Gradle 69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 70 | 71 | :end 72 | @rem End local scope for the variables with windows NT shell 73 | if "%ERRORLEVEL%"=="0" goto mainEnd 74 | 75 | :fail 76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 77 | rem the _cmd.exe /c_ return code! 78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 79 | exit /b 1 80 | 81 | :mainEnd 82 | if "%OS%"=="Windows_NT" endlocal 83 | 84 | :omega 85 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 29 5 | defaultConfig { 6 | applicationId "com.choubapp.running" 7 | minSdkVersion 19 8 | targetSdkVersion 29 9 | versionCode 1 10 | versionName "1.0" 11 | multiDexEnabled true 12 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | compileOptions { 21 | sourceCompatibility = 1.8 22 | targetCompatibility = 1.8 23 | } 24 | } 25 | 26 | dependencies { 27 | implementation fileTree(dir: 'libs', include: ['*.jar']) 28 | //noinspection GradleCompatible 29 | implementation 'com.android.support:appcompat-v7:28.0.0' 30 | //noinspection GradleCompatible 31 | implementation 'com.android.support:cardview-v7:28.0.0' 32 | implementation 'com.android.support.constraint:constraint-layout:1.1.3' 33 | implementation 'androidx.appcompat:appcompat:1.1.0' 34 | implementation 'androidx.constraintlayout:constraintlayout:1.1.3' 35 | implementation 'com.squareup.picasso:picasso:2.71828' 36 | testImplementation 'junit:junit:4.12' 37 | androidTestImplementation 'com.android.support.test:runner:1.0.2' 38 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' 39 | 40 | implementation 'com.applandeo:material-calendar-view:1.7.0' 41 | implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0' 42 | 43 | //noinspection GradleDependency 44 | implementation 'com.google.firebase:firebase-analytics:17.2.2' 45 | implementation 'com.firebaseui:firebase-ui-storage:6.2.0' 46 | implementation 'com.firebaseui:firebase-ui-firestore:6.2.1' 47 | implementation 'com.google.firebase:firebase-firestore:17.1.2' 48 | implementation 'com.google.firebase:firebase-storage:19.1.0' 49 | 50 | implementation 'com.google.android.material:material:1.0.0' 51 | implementation 'com.google.firebase:firebase-auth:19.3.0' 52 | implementation 'com.google.firebase:firebase-database:19.2.1' 53 | implementation "androidx.multidex:multidex:2.0.0" 54 | implementation 'com.google.android.gms:play-services-maps:17.0.0' 55 | implementation 'com.google.android.gms:play-services-location:17.0.0' 56 | implementation 'androidx.gridlayout:gridlayout:1.0.0' 57 | 58 | } 59 | apply plugin: 'com.android.application' 60 | apply plugin: 'com.google.gms.google-services' 61 | -------------------------------------------------------------------------------- /app/src/main/java/com/choubapp/running/BarChartItem.java: -------------------------------------------------------------------------------- 1 | package com.choubapp.running; 2 | 3 | import android.annotation.SuppressLint; 4 | import android.content.Context; 5 | import android.graphics.Typeface; 6 | import android.view.LayoutInflater; 7 | import android.view.View; 8 | 9 | import com.github.mikephil.charting.charts.BarChart; 10 | import com.github.mikephil.charting.components.XAxis; 11 | import com.github.mikephil.charting.components.YAxis; 12 | import com.github.mikephil.charting.data.BarData; 13 | import com.github.mikephil.charting.data.ChartData; 14 | 15 | class BarChartItem extends ChartItem { 16 | private final Typeface mTf; 17 | 18 | BarChartItem(ChartData cd, Context c) { 19 | super(cd); 20 | mTf = Typeface.createFromAsset(c.getAssets(), "OpenSans-Regular.ttf"); 21 | } 22 | 23 | @Override 24 | public int getItemType() { 25 | return TYPE_BARCHART; 26 | } 27 | 28 | @SuppressLint("InflateParams") 29 | @Override 30 | public View getView(int position, View convertView, Context c) { 31 | 32 | ViewHolder holder; 33 | 34 | if (convertView == null) { 35 | 36 | holder = new ViewHolder(); 37 | 38 | convertView = LayoutInflater.from(c).inflate( 39 | R.layout.list_item_barchart, null); 40 | holder.chart = convertView.findViewById(R.id.chart); 41 | 42 | convertView.setTag(holder); 43 | 44 | } else { 45 | holder = (ViewHolder) convertView.getTag(); 46 | } 47 | 48 | // apply styling 49 | holder.chart.getDescription().setEnabled(false); 50 | holder.chart.setDrawGridBackground(false); 51 | holder.chart.setDrawBarShadow(false); 52 | 53 | YAxis leftAxis = holder.chart.getAxisLeft(); 54 | leftAxis.setTypeface(mTf); 55 | leftAxis.setLabelCount(5, false); 56 | leftAxis.setSpaceTop(20f); 57 | leftAxis.setAxisMinimum(0f); 58 | 59 | YAxis rightAxis = holder.chart.getAxisRight(); 60 | rightAxis.setTypeface(mTf); 61 | rightAxis.setLabelCount(5, false); 62 | rightAxis.setSpaceTop(20f); 63 | rightAxis.setAxisMinimum(0f); 64 | 65 | mChartData.setValueTypeface(mTf); 66 | 67 | // set data 68 | holder.chart.setData((BarData) mChartData); 69 | holder.chart.setFitBars(true); 70 | holder.chart.animateY(700); 71 | 72 | return convertView; 73 | } 74 | 75 | private static class ViewHolder { 76 | BarChart chart; 77 | } 78 | } 79 | 80 | -------------------------------------------------------------------------------- /app/src/main/java/com/choubapp/running/MessagesActivity.java: -------------------------------------------------------------------------------- 1 | package com.choubapp.running; 2 | 3 | import android.content.Intent; 4 | import android.os.Bundle; 5 | import android.view.View; 6 | import android.widget.AbsListView; 7 | import android.widget.ListView; 8 | import android.widget.TextView; 9 | 10 | import androidx.appcompat.app.AppCompatActivity; 11 | 12 | import com.google.firebase.database.DatabaseReference; 13 | import com.google.firebase.database.FirebaseDatabase; 14 | 15 | import java.text.SimpleDateFormat; 16 | import java.util.Date; 17 | import java.util.Locale; 18 | 19 | public class MessagesActivity extends AppCompatActivity { 20 | String teamid; 21 | private ListView mChatListView; 22 | 23 | private DatabaseReference mDatabaseReference; 24 | 25 | 26 | private ChatListAdapter mAdapter; 27 | 28 | TextView date; 29 | 30 | 31 | @Override 32 | protected void onCreate(Bundle savedInstanceState) { 33 | 34 | super.onCreate(savedInstanceState); 35 | setContentView(R.layout.activity_messages); 36 | Intent intent = getIntent(); 37 | teamid = intent.getStringExtra(DashboardActivity.USER_TEAM); 38 | mDatabaseReference = FirebaseDatabase.getInstance().getReference(); 39 | 40 | mChatListView = findViewById(R.id.chat_list_view1); 41 | date = findViewById(R.id.date1); 42 | 43 | } 44 | 45 | public void ChangeDate() { 46 | mChatListView.setOnScrollListener(new AbsListView.OnScrollListener() { 47 | @Override 48 | public void onScrollStateChanged(AbsListView view, int scrollState) { 49 | 50 | } 51 | 52 | @Override 53 | public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 54 | if (totalItemCount != 0) { 55 | 56 | if (mAdapter.getDateselected(firstVisibleItem + visibleItemCount - 1).equals(new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(new Date()))) { 57 | date.setText("Today"); 58 | } else { 59 | date.setText(mAdapter.getDateselected(firstVisibleItem + visibleItemCount - 1)); 60 | } 61 | } 62 | 63 | } 64 | }); 65 | 66 | } 67 | public void onStart(){ 68 | super.onStart(); 69 | mAdapter = new ChatListAdapter(this , mDatabaseReference,teamid); 70 | mChatListView.setAdapter(mAdapter); 71 | ChangeDate(); 72 | } 73 | 74 | public void onStop() { 75 | super.onStop(); 76 | mAdapter.cleaunup(); 77 | 78 | } 79 | 80 | 81 | 82 | public void BacktoDashboard(View v) { 83 | Intent intent = new Intent(this, DashboardActivity.class); 84 | finish(); 85 | startActivity(intent); 86 | } 87 | 88 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # :runner: TrainingTracker :running: | Unmaintained Project 2 | An android app to manage trainings between a coach and his team members. This is a school project for ENSIAS (National School of Applied Sciences in Rabat, Morocco) using Java and Firebase. 3 | 4 |

5 | 6 | 7 | 8 | ## :zap: Project Config 9 | 10 | ``` 11 | applicationId "com.choubapp.running" 12 | compileSdkVersion 29 13 | minSdkVersion 19 14 | targetSdkVersion 29 15 | ``` 16 | 17 | ## :key: Setup: 18 | 19 | * Create a Firebase Project : Firebase [Setup and Documentation](https://firebase.google.com/docs/android/setup) for Android 20 | * Get your own Google Maps [API Key](https://developers.google.com/maps/documentation/android-sdk/get-api-key) and add it to strings.xml 21 | 22 | We've used : 23 | * Firebase CloudFirestore to store users, teams and trainings data. 24 | * Realtime Database for sending and retreiving messages. 25 | * Firebase Storage to save profil pictures uploaded by the users. 26 | 27 | 28 | ## :iphone: Screenshots : 29 | 30 | **SignUp :** 31 | 32 |

33 | 34 | 35 | **:boy: Member Dashboard :** 36 | 37 |

38 | 39 | 40 | 41 | **Member Menus :** 42 | 43 |

44 | 45 | 46 | ## 47 | 48 | **:cop: Coach Dashboard :** 49 | 50 |

51 | 52 | 53 | 54 | **Coach Menus :** 55 | 56 |

57 | 58 | 59 | ## 60 | 61 | **:alarm_clock: Training Time :** 62 | 63 |

64 | 65 | 66 | 67 | 68 | 69 | ## :bulb: External Libraries : 70 | 71 | [Picasso](https://github.com/square/picasso) 72 | 73 | [Material Calendar View](https://github.com/Applandeo/Material-Calendar-View) 74 | 75 | [MPAndroidChart](https://github.com/PhilJay/MPAndroidChart) 76 | 77 | [FirebaseUI](https://github.com/firebase/FirebaseUI-Android) 78 | 79 | ## 80 | 81 | ### :sparkles: Graphic Assets : 82 | 83 | Home Screen Illustration : [Freepik](https://freepik.com) 84 | 85 | Gradient Icons : [Roundicons](https://roundicons.com/gradient-icons-pack/) 86 | 87 | ## 88 | 89 | ### :paperclip: Somethings to fix or add : 90 | 91 | - [ ] Date picker Dialog isn't working for API 19-22 92 | - [ ] Refactor the code to MVC architecture and optimize call Firebase functions. 93 | - [ ] Push notifications to team members when the coach sends messages or the next training is near to start 94 | - [X] Show date and time of each message 95 | 96 | ## :sparkling_heart: Support : 97 | 98 | Buy Me A Coffee 99 | 100 | 101 | 102 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 24 | 41 | 42 | 43 | 44 | 45 | 46 | 48 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_create_team.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 18 | 27 | 35 | 36 |