commit dbca6ca4657ecbc3cd6b62e5cc1de8fda3a4f5fa Author: Andrés Moran Date: Wed Apr 9 10:15:55 2025 +0200 First commit diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml new file mode 100644 index 0000000..b268ef3 --- /dev/null +++ b/.idea/deploymentTargetSelector.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..74dd639 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,10 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/navEditor.xml b/.idea/navEditor.xml new file mode 100644 index 0000000..5931864 --- /dev/null +++ b/.idea/navEditor.xml @@ -0,0 +1,55 @@ + + + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..6e5076b --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,160 @@ + + + + + + + + + + @style/Theme.AppTrabajadores + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1742392535775 + + + + + + + \ No newline at end of file diff --git a/AppTrabajadores/.gitignore b/AppTrabajadores/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/AppTrabajadores/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/AppTrabajadores/.idea/.gitignore b/AppTrabajadores/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/AppTrabajadores/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/AppTrabajadores/.idea/.name b/AppTrabajadores/.idea/.name new file mode 100644 index 0000000..904509d --- /dev/null +++ b/AppTrabajadores/.idea/.name @@ -0,0 +1 @@ +App Trabajadores \ No newline at end of file diff --git a/AppTrabajadores/.idea/AndroidProjectSystem.xml b/AppTrabajadores/.idea/AndroidProjectSystem.xml new file mode 100644 index 0000000..4a53bee --- /dev/null +++ b/AppTrabajadores/.idea/AndroidProjectSystem.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/AppTrabajadores/.idea/compiler.xml b/AppTrabajadores/.idea/compiler.xml new file mode 100644 index 0000000..b86273d --- /dev/null +++ b/AppTrabajadores/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/AppTrabajadores/.idea/deploymentTargetSelector.xml b/AppTrabajadores/.idea/deploymentTargetSelector.xml new file mode 100644 index 0000000..1e5bc29 --- /dev/null +++ b/AppTrabajadores/.idea/deploymentTargetSelector.xml @@ -0,0 +1,18 @@ + + + + + + + + + \ No newline at end of file diff --git a/AppTrabajadores/.idea/gradle.xml b/AppTrabajadores/.idea/gradle.xml new file mode 100644 index 0000000..7b3006b --- /dev/null +++ b/AppTrabajadores/.idea/gradle.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/AppTrabajadores/.idea/migrations.xml b/AppTrabajadores/.idea/migrations.xml new file mode 100644 index 0000000..f8051a6 --- /dev/null +++ b/AppTrabajadores/.idea/migrations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/AppTrabajadores/.idea/misc.xml b/AppTrabajadores/.idea/misc.xml new file mode 100644 index 0000000..b2c751a --- /dev/null +++ b/AppTrabajadores/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/AppTrabajadores/.idea/runConfigurations.xml b/AppTrabajadores/.idea/runConfigurations.xml new file mode 100644 index 0000000..16660f1 --- /dev/null +++ b/AppTrabajadores/.idea/runConfigurations.xml @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file diff --git a/AppTrabajadores/.idea/vcs.xml b/AppTrabajadores/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/AppTrabajadores/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/AppTrabajadores/app/.gitignore b/AppTrabajadores/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/AppTrabajadores/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/AppTrabajadores/app/build.gradle.kts b/AppTrabajadores/app/build.gradle.kts new file mode 100644 index 0000000..89331af --- /dev/null +++ b/AppTrabajadores/app/build.gradle.kts @@ -0,0 +1,52 @@ +plugins { + alias(libs.plugins.android.application) +} + +android { + namespace = "com.andresgmoran.apptrabajadores" + compileSdk = 35 + + defaultConfig { + applicationId = "com.andresgmoran.apptrabajadores" + minSdk = 27 + targetSdk = 35 + versionCode = 1 + versionName = "1.0" + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + buildFeatures { + viewBinding = true + } +} + +dependencies { + + implementation(libs.appcompat) + implementation(libs.material) + implementation(libs.constraintlayout) + implementation(libs.lifecycle.livedata.ktx) + implementation(libs.lifecycle.viewmodel.ktx) + implementation(libs.navigation.fragment) + implementation(libs.navigation.ui) + testImplementation(libs.junit) + androidTestImplementation(libs.ext.junit) + androidTestImplementation(libs.espresso.core) + + implementation("com.github.PhilJay:MPAndroidChart:v3.1.0") + +} \ No newline at end of file diff --git a/AppTrabajadores/app/proguard-rules.pro b/AppTrabajadores/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/AppTrabajadores/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/AppTrabajadores/app/src/androidTest/java/com/andresgmoran/apptrabajadores/ExampleInstrumentedTest.java b/AppTrabajadores/app/src/androidTest/java/com/andresgmoran/apptrabajadores/ExampleInstrumentedTest.java new file mode 100644 index 0000000..79d3180 --- /dev/null +++ b/AppTrabajadores/app/src/androidTest/java/com/andresgmoran/apptrabajadores/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.andresgmoran.apptrabajadores; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("com.andresgmoran.apptrabajadores", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/AppTrabajadores/app/src/main/AndroidManifest.xml b/AppTrabajadores/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..7936976 --- /dev/null +++ b/AppTrabajadores/app/src/main/AndroidManifest.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/interfaces/IOChangeFragmentListener.java b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/interfaces/IOChangeFragmentListener.java new file mode 100644 index 0000000..41ca876 --- /dev/null +++ b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/interfaces/IOChangeFragmentListener.java @@ -0,0 +1,5 @@ +package com.andresgmoran.apptrabajadores.interfaces; + +public interface IOChangeFragmentListener { + void changeFragment(String fragmentName); +} diff --git a/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/interfaces/IOClickOnLatestGameListener.java b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/interfaces/IOClickOnLatestGameListener.java new file mode 100644 index 0000000..a6c5d07 --- /dev/null +++ b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/interfaces/IOClickOnLatestGameListener.java @@ -0,0 +1,8 @@ +package com.andresgmoran.apptrabajadores.interfaces; + +import com.andresgmoran.apptrabajadores.models.Game; +import com.andresgmoran.apptrabajadores.models.LastGame; + +public interface IOClickOnLatestGameListener { + void onClickOnLatestGame(LastGame game); +} diff --git a/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/interfaces/IOClickOnResidentListener.java b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/interfaces/IOClickOnResidentListener.java new file mode 100644 index 0000000..1ab5332 --- /dev/null +++ b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/interfaces/IOClickOnResidentListener.java @@ -0,0 +1,7 @@ +package com.andresgmoran.apptrabajadores.interfaces; + +import com.andresgmoran.apptrabajadores.models.Resident; + +public interface IOClickOnResidentListener { + void onClickOnResident(Resident resident); +} diff --git a/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/Contact.java b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/Contact.java new file mode 100644 index 0000000..907e729 --- /dev/null +++ b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/Contact.java @@ -0,0 +1,46 @@ +package com.andresgmoran.apptrabajadores.models; + +import java.util.ArrayList; +import java.util.Objects; + +public class Contact { + private final String name; + private final String phone; + private final String email; + private final ArrayList residents; + + public Contact(String name, String phone, String email, ArrayList residents) { + this.name = name; + this.phone = phone; + this.email = email; + this.residents = residents; + } + + public String getName() { + return name; + } + + public String getPhone() { + return phone; + } + + public String getEmail() { + return email; + } + + public ArrayList getResidents() { + return residents; + } + + @Override + public boolean equals(Object o) { + if (o == null || getClass() != o.getClass()) return false; + Contact contact = (Contact) o; + return Objects.equals(name, contact.name) && Objects.equals(phone, contact.phone) && Objects.equals(email, contact.email) && Objects.equals(residents, contact.residents); + } + + @Override + public int hashCode() { + return Objects.hash(name, phone, email, residents); + } +} diff --git a/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/FollowTheLineGame.java b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/FollowTheLineGame.java new file mode 100644 index 0000000..57d7c1b --- /dev/null +++ b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/FollowTheLineGame.java @@ -0,0 +1,54 @@ +package com.andresgmoran.apptrabajadores.models; + +import java.util.Date; +import java.util.Objects; + +public class FollowTheLineGame extends Game{ + private double accuracy; + private int timeOutOfLine; + private int totalOfShapes; + + public FollowTheLineGame(String name, Date startOfGame, Date endOfGame, Resident resident, Worker worker, double accuracy, int timeOutOfLine, int totalOfShapes) { + super(name, startOfGame, endOfGame, resident, worker); + this.accuracy = accuracy; + this.timeOutOfLine = timeOutOfLine; + this.totalOfShapes = totalOfShapes; + } + + public double getAccuracy() { + return accuracy; + } + + public void setAccuracy(double accuracy) { + this.accuracy = accuracy; + } + + public int getTimeOutOfLine() { + return timeOutOfLine; + } + + public void setTimeOutOfLine(int timeOutOfLine) { + this.timeOutOfLine = timeOutOfLine; + } + + public int getTotalOfShapes() { + return totalOfShapes; + } + + public void setTotalOfShapes(int totalOfShapes) { + this.totalOfShapes = totalOfShapes; + } + + @Override + public boolean equals(Object o) { + if (o == null || getClass() != o.getClass()) return false; + if (!super.equals(o)) return false; + FollowTheLineGame that = (FollowTheLineGame) o; + return Double.compare(accuracy, that.accuracy) == 0 && timeOutOfLine == that.timeOutOfLine && totalOfShapes == that.totalOfShapes; + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), accuracy, timeOutOfLine, totalOfShapes); + } +} diff --git a/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/Game.java b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/Game.java new file mode 100644 index 0000000..9a547f9 --- /dev/null +++ b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/Game.java @@ -0,0 +1,68 @@ +package com.andresgmoran.apptrabajadores.models; + +import java.util.Date; +import java.util.Objects; + +public class Game { + private String name; + private Date startOfGame; + private Date endOfGame; + private Resident resident; + private Worker worker; + + public Game(String name, Date startOfGame, Date endOfGame, Resident resident, Worker worker) { + this.name = name; + this.startOfGame = startOfGame; + this.endOfGame = endOfGame; + this.resident = resident; + this.worker = worker; + } + + public String getName() { + return name; + } + + public Date getStartOfGame() { + return startOfGame; + } + + public void setStartOfGame(Date startOfGame) { + this.startOfGame = startOfGame; + } + + public Date getEndOfGame() { + return endOfGame; + } + + public void setEndOfGame(Date endOfGame) { + this.endOfGame = endOfGame; + } + + public Resident getResident() { + return resident; + } + + public void setResident(Resident resident) { + this.resident = resident; + } + + public Worker getWorker() { + return worker; + } + + public void setWorker(Worker worker) { + this.worker = worker; + } + + @Override + public boolean equals(Object o) { + if (o == null || getClass() != o.getClass()) return false; + Game game = (Game) o; + return Objects.equals(startOfGame, game.startOfGame) && Objects.equals(endOfGame, game.endOfGame) && Objects.equals(resident, game.resident) && Objects.equals(worker, game.worker); + } + + @Override + public int hashCode() { + return Objects.hash(startOfGame, endOfGame, resident, worker); + } +} diff --git a/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/LastGame.java b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/LastGame.java new file mode 100644 index 0000000..144ab73 --- /dev/null +++ b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/LastGame.java @@ -0,0 +1,40 @@ +package com.andresgmoran.apptrabajadores.models; + +import java.util.Date; +import java.util.Objects; + +public class LastGame { + private final Resident resident; + private final Game game; + private final Date date; + + public LastGame(Resident resident, Game game, Date date) { + this.resident = resident; + this.game = game; + this.date = date; + } + + public Resident getResident() { + return resident; + } + + public Game getGame() { + return game; + } + + public Date getDate() { + return date; + } + + @Override + public boolean equals(Object o) { + if (o == null || getClass() != o.getClass()) return false; + LastGame lastGame = (LastGame) o; + return Objects.equals(resident, lastGame.resident) && Objects.equals(game, lastGame.game) && Objects.equals(date, lastGame.date); + } + + @Override + public int hashCode() { + return Objects.hash(resident, game, date); + } +} diff --git a/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/Observation.java b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/Observation.java new file mode 100644 index 0000000..c36cc69 --- /dev/null +++ b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/Observation.java @@ -0,0 +1,33 @@ +package com.andresgmoran.apptrabajadores.models; + +import java.util.Objects; + +public class Observation { + private final Worker observationOwner; + private final String observationText; + + public Observation(Worker observationOwner, String observationText) { + this.observationOwner = observationOwner; + this.observationText = observationText; + } + + public Worker getObservationOwner() { + return observationOwner; + } + + public String getObservationText() { + return observationText; + } + + @Override + public boolean equals(Object o) { + if (o == null || getClass() != o.getClass()) return false; + Observation that = (Observation) o; + return Objects.equals(observationOwner, that.observationOwner) && Objects.equals(observationText, that.observationText); + } + + @Override + public int hashCode() { + return Objects.hash(observationOwner, observationText); + } +} diff --git a/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/Resident.java b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/Resident.java new file mode 100644 index 0000000..df67572 --- /dev/null +++ b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/Resident.java @@ -0,0 +1,40 @@ +package com.andresgmoran.apptrabajadores.models; + +import java.util.Date; +import java.util.Objects; + +public class Resident { + private final String name; + private final String surnames; + private final String birthDate; + + public Resident(String name, String surnames, String birthDate) { + this.name = name; + this.surnames = surnames; + this.birthDate = birthDate; + } + + public String getName() { + return name; + } + + public String getSurnames() { + return surnames; + } + + public String getBirthDate() { + return birthDate; + } + + @Override + public boolean equals(Object o) { + if (o == null || getClass() != o.getClass()) return false; + Resident resident = (Resident) o; + return Objects.equals(name, resident.name) && Objects.equals(surnames, resident.surnames) && Objects.equals(birthDate, resident.birthDate); + } + + @Override + public int hashCode() { + return Objects.hash(name, surnames, birthDate); + } +} diff --git a/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/Worker.java b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/Worker.java new file mode 100644 index 0000000..77b2164 --- /dev/null +++ b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/Worker.java @@ -0,0 +1,39 @@ +package com.andresgmoran.apptrabajadores.models; + +import java.util.Objects; + +public class Worker { + private final String name; + private final String surnames; + private final String role; + + public Worker(String name, String surnames, String role) { + this.name = name; + this.surnames = surnames; + this.role = role; + } + + public String getName() { + return name; + } + + public String getSurnames() { + return surnames; + } + + public String getJob() { + return role; + } + + @Override + public boolean equals(Object o) { + if (o == null || getClass() != o.getClass()) return false; + Worker worker = (Worker) o; + return Objects.equals(name, worker.name) && Objects.equals(surnames, worker.surnames) && Objects.equals(role, worker.role); + } + + @Override + public int hashCode() { + return Objects.hash(name, surnames, role); + } +} diff --git a/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/adapters/LastGamesAdapter.java b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/adapters/LastGamesAdapter.java new file mode 100644 index 0000000..cfc0f4f --- /dev/null +++ b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/adapters/LastGamesAdapter.java @@ -0,0 +1,68 @@ +package com.andresgmoran.apptrabajadores.models.adapters; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.andresgmoran.apptrabajadores.R; +import com.andresgmoran.apptrabajadores.interfaces.IOClickOnLatestGameListener; +import com.andresgmoran.apptrabajadores.models.LastGame; + +import java.util.List; + +public class LastGamesAdapter extends RecyclerView.Adapter { + private List lastGames; + private IOClickOnLatestGameListener listener; + + public LastGamesAdapter(List lastGames, IOClickOnLatestGameListener listener) { + this.lastGames = lastGames; + this.listener = listener; + } + + @NonNull + @Override + public LastGamesViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + final View view = LayoutInflater.from( parent.getContext()).inflate(R.layout.item_latest_game, parent, false); + return new LastGamesViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull LastGamesViewHolder holder, int position) { + LastGame lastGame = lastGames.get(position); + holder.bindObservation(lastGame); + + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + listener.onClickOnLatestGame(lastGame); + } + }); + } + + @Override + public int getItemCount() { + return lastGames.size(); + } + + public class LastGamesViewHolder extends RecyclerView.ViewHolder { + + private TextView residentName; + private TextView gameName; + private TextView date; + + public LastGamesViewHolder(View view) { + super(view); + residentName = view.findViewById(R.id.name_text_latestGameItem); + gameName = view.findViewById(R.id.gameName_text_latestGameItem); + date = view.findViewById(R.id.date_text_latestGameItem); + } + public void bindObservation(LastGame lastGame){ + residentName.setText(lastGame.getResident().getName()); + gameName.setText(lastGame.getGame().getName()); + } + } +} diff --git a/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/adapters/ObservationsAdapter.java b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/adapters/ObservationsAdapter.java new file mode 100644 index 0000000..c51fd38 --- /dev/null +++ b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/adapters/ObservationsAdapter.java @@ -0,0 +1,60 @@ +package com.andresgmoran.apptrabajadores.models.adapters; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.andresgmoran.apptrabajadores.R; +import com.andresgmoran.apptrabajadores.models.Observation; + +import java.util.List; +import java.util.Objects; + +public class ObservationsAdapter extends RecyclerView.Adapter { + private List observations; + + public ObservationsAdapter(List observations){ + this.observations = observations; + } + + @NonNull + @Override + public ObservationsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + final View view = LayoutInflater.from( parent.getContext()).inflate(R.layout.item_observation, parent, false); + return new ObservationsViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull ObservationsViewHolder holder, int position) { + Observation observation = observations.get(position); + holder.bindObservation(observation); + } + + @Override + public int getItemCount() { + return observations.size(); + } + + public class ObservationsViewHolder extends RecyclerView.ViewHolder { + + private TextView observation; + private TextView observationOwner; + private TextView observationOwnerRole; + + public ObservationsViewHolder(View view) { + super(view); + observation = view.findViewById(R.id.observation_text); + observationOwner = view.findViewById(R.id.observation_person_name); + observationOwnerRole = view.findViewById(R.id.observation_person_role); + } + public void bindObservation(Observation observation){ + observationOwner.setText(observation.getObservationOwner().getName()); + observationOwnerRole.setText(observation.getObservationOwner().getJob()); + this.observation.setText(observation.getObservationText()); + } + } +} diff --git a/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/adapters/ResidentsAdapter.java b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/adapters/ResidentsAdapter.java new file mode 100644 index 0000000..80bb12e --- /dev/null +++ b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/models/adapters/ResidentsAdapter.java @@ -0,0 +1,66 @@ +package com.andresgmoran.apptrabajadores.models.adapters; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.andresgmoran.apptrabajadores.R; +import com.andresgmoran.apptrabajadores.interfaces.IOChangeFragmentListener; +import com.andresgmoran.apptrabajadores.interfaces.IOClickOnResidentListener; +import com.andresgmoran.apptrabajadores.models.Resident; + +import java.util.List; + +public class ResidentsAdapter extends RecyclerView.Adapter { + private List residents; + private IOClickOnResidentListener listener; + + public ResidentsAdapter(List residents, IOClickOnResidentListener listener) { + this.residents = residents; + this.listener = listener; + } + + @NonNull + @Override + public ResidentsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + final View view = LayoutInflater.from( parent.getContext()).inflate(R.layout.item_resident, parent, false); + return new ResidentsViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull ResidentsViewHolder holder, int position) { + Resident resident = residents.get(position); + holder.bindResident(resident); + + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + listener.onClickOnResident(resident); + } + }); + } + + @Override + public int getItemCount() { + return residents.size(); + } + + public class ResidentsViewHolder extends RecyclerView.ViewHolder { + + private final TextView residentName; + + + public ResidentsViewHolder(View view) { + super(view); + residentName = view.findViewById(R.id.resident_name_item); + } + + public void bindResident(Resident resident){ + residentName.setText(resident.getName()); + } + } +} diff --git a/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/ui/MainActivity.java b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/ui/MainActivity.java new file mode 100644 index 0000000..a5d457a --- /dev/null +++ b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/ui/MainActivity.java @@ -0,0 +1,172 @@ +package com.andresgmoran.apptrabajadores.ui; + +import android.os.Bundle; +import android.view.MenuItem; + +import com.andresgmoran.apptrabajadores.R; +import com.andresgmoran.apptrabajadores.interfaces.IOChangeFragmentListener; +import com.andresgmoran.apptrabajadores.interfaces.IOClickOnLatestGameListener; +import com.andresgmoran.apptrabajadores.interfaces.IOClickOnResidentListener; +import com.andresgmoran.apptrabajadores.models.Contact; +import com.andresgmoran.apptrabajadores.models.Game; +import com.andresgmoran.apptrabajadores.models.LastGame; +import com.andresgmoran.apptrabajadores.models.Observation; +import com.andresgmoran.apptrabajadores.models.Resident; +import com.andresgmoran.apptrabajadores.models.Worker; +import com.andresgmoran.apptrabajadores.ui.fragments.GameDetailFragment; +import com.andresgmoran.apptrabajadores.ui.fragments.account.AccountFragment; +import com.andresgmoran.apptrabajadores.ui.fragments.account.EditAccountFragment; +import com.andresgmoran.apptrabajadores.ui.fragments.activities.ActivitiesFragment; +import com.andresgmoran.apptrabajadores.ui.fragments.home.HomeFragment; +import com.andresgmoran.apptrabajadores.ui.fragments.resident.ResidentFragment; +import com.andresgmoran.apptrabajadores.ui.fragments.residentList.ResidentsListFragment; +import com.google.android.material.bottomnavigation.BottomNavigationView; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.Fragment; + +import com.google.android.material.navigation.NavigationBarView; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.List; + +public class MainActivity extends AppCompatActivity implements NavigationBarView.OnItemSelectedListener, IOChangeFragmentListener, IOClickOnResidentListener, IOClickOnLatestGameListener, ResidentsListFragment.IOOnAttachListener, +GameDetailFragment.IOOnAttachListener, HomeFragment.IOOnAttachListenerResidents, HomeFragment.IOOnAttachListenerLatestsGames { + private List workers; + private List residents; + private List observations; + private List games; + private List lastsGames; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + createWorkers(); + createResidents(); + createObservations(); //Depende de workers + createGames(); //Depende de residents y workers + createLastGames(); //Depende de games y residents + + setContentView(R.layout.activity_main); + + BottomNavigationView navView = findViewById(R.id.nav_view); + navView.setOnItemSelectedListener(this); + } + + @Override + public boolean onNavigationItemSelected(@NonNull MenuItem item) { + Fragment f = null; + int id = item.getItemId(); + if (id == R.id.navigation_home) + f = new HomeFragment(); + else if (id == R.id.navigation_list) + f = new ResidentsListFragment(); + else if (id == R.id.navigation_activities) + f = new ActivitiesFragment(); + else if (id == R.id.navigation_account) + f = new AccountFragment(); + + return loadFragment(f); + } + + @Override + public void changeFragment(String fragmentName) { + if(fragmentName.equals("AccountFragment")){ + loadFragment(new EditAccountFragment()); + } + } + + private boolean loadFragment(Fragment fragment) { + if (fragment != null) { + getSupportFragmentManager() + .beginTransaction() + .replace(R.id.fcvMain, fragment) + .commit(); + return true; + } + return false; + } + + public List createWorkers(){ + workers = new ArrayList<>(); + workers.add(new Worker("Pepe", "Motos", "Ocio")); + workers.add(new Worker("Juan", "Gonzalez", "Psicologo")); + workers.add(new Worker("Andres", "Gonzalez", "Psicologo")); + workers.add(new Worker("Luis", "Gonzalez", "Psicologo")); + workers.add(new Worker("Carlos", "Gonzalez", "Psicologo")); + return workers; + } + + @Override + public List getResidents() { + return residents; + } + public List createResidents(){ + residents = new ArrayList<>(); + residents.add(new Resident("Andres", "Gonzalez", "17-09-2003")); + residents.add(new Resident("Juan", "Perez", "17-09-2003")); + residents.add(new Resident("Pedro", "Gonzalez", "17-09-2003")); + residents.add(new Resident("Maria", "Gonzalez", "17-09-2003")); + residents.add(new Resident("Jose", "Gonzalez", "17-09-2003")); + residents.add(new Resident("Luis", "Gonzalez", "17-09-2003")); + residents.add(new Resident("Carlos", "Gonzalez", "17-09-2003")); + residents.add(new Resident("Andres", "Gonzalez", "17-09-2003")); + return residents; + } + + @Override + public List getObservations() { + return observations; + } + public List createObservations(){ + observations = new ArrayList<>(); + observations.add(new Observation(workers.get(1), "El residente se encuentra en buen estado")); + observations.add(new Observation(workers.get(0), "El residente se encuentra en mal estado")); + observations.add(new Observation(workers.get(2), "El residente se encuentra en buen estado")); + observations.add(new Observation(workers.get(1), "El residente se encuentra en mal estado")); + + return observations; + } + + public List createGames(){ + games = new ArrayList<>(); + games.add(new Game("Follow the line", new Date(), new Date(), residents.get(1), workers.get(1))); + games.add(new Game("Follow the line", new Date(), new Date(), residents.get(2), workers.get(1))); + games.add(new Game("Follow the line", new Date(), new Date(), residents.get(3), workers.get(1))); + games.add(new Game("Follow the line", new Date(), new Date(), residents.get(1), workers.get(1))); + return games; + } + + @Override + public List getLastestsGames() { + return lastsGames; + } + + public List createLastGames(){ + lastsGames = new ArrayList<>(); + lastsGames.add(new LastGame(residents.get(1), games.get(1), new Date())); + lastsGames.add(new LastGame(residents.get(2), games.get(2), new Date())); + lastsGames.add(new LastGame(residents.get(3), games.get(3), new Date())); + lastsGames.add(new LastGame(residents.get(4), games.get(1), new Date())); + return lastsGames; + } + + @Override + public void onClickOnResident(Resident resident) { + Bundle bundle = new Bundle(); + bundle.putString("name", resident.getName()); + bundle.putFloatArray("data", new float[]{2.5f,5.8f,3.2f}); + Fragment f = new ResidentFragment(); + f.setArguments(bundle); + loadFragment(f); + } + + @Override + public void onClickOnLatestGame(LastGame game) { + loadFragment(new GameDetailFragment()); + } +} \ No newline at end of file diff --git a/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/ui/fragments/GameDetailFragment.java b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/ui/fragments/GameDetailFragment.java new file mode 100644 index 0000000..78d1e70 --- /dev/null +++ b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/ui/fragments/GameDetailFragment.java @@ -0,0 +1,49 @@ +package com.andresgmoran.apptrabajadores.ui.fragments; + +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.andresgmoran.apptrabajadores.R; +import com.andresgmoran.apptrabajadores.models.Observation; +import com.andresgmoran.apptrabajadores.models.adapters.ObservationsAdapter; + +import java.util.List; + +public class GameDetailFragment extends Fragment { + public interface IOOnAttachListener{ + List getObservations(); + } + + List observations; + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate( R.layout.game_detail_fragment, container, false); + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + ObservationsAdapter observationsAdapter = new ObservationsAdapter(observations); + RecyclerView recyclerView = view.findViewById(R.id.observations_recycleView); + recyclerView.setAdapter( observationsAdapter ); + recyclerView.setHasFixedSize(true); + recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false)); + } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + GameDetailFragment.IOOnAttachListener attachListener = (GameDetailFragment.IOOnAttachListener) context; + observations = attachListener.getObservations(); + } +} diff --git a/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/ui/fragments/account/AccountFragment.java b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/ui/fragments/account/AccountFragment.java new file mode 100644 index 0000000..8e94aa4 --- /dev/null +++ b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/ui/fragments/account/AccountFragment.java @@ -0,0 +1,44 @@ +package com.andresgmoran.apptrabajadores.ui.fragments.account; + +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; + +import com.andresgmoran.apptrabajadores.R; +import com.andresgmoran.apptrabajadores.interfaces.IOChangeFragmentListener; + +public class AccountFragment extends Fragment { + private Button editAccountButton; + private IOChangeFragmentListener listener; + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate(R.layout.account_fragment, container,false); + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + editAccountButton = view.findViewById(R.id.edit_account_button); + editAccountButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + listener.changeFragment("AccountFragment"); + } + }); + } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + listener = (IOChangeFragmentListener) context; + } +} diff --git a/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/ui/fragments/account/EditAccountFragment.java b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/ui/fragments/account/EditAccountFragment.java new file mode 100644 index 0000000..5280d29 --- /dev/null +++ b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/ui/fragments/account/EditAccountFragment.java @@ -0,0 +1,31 @@ +package com.andresgmoran.apptrabajadores.ui.fragments.account; + +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; + +import com.andresgmoran.apptrabajadores.R; + +public class EditAccountFragment extends Fragment { + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate(R.layout.edit_account_fragment, container, false); + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + } +} diff --git a/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/ui/fragments/activities/ActivitiesFragment.java b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/ui/fragments/activities/ActivitiesFragment.java new file mode 100644 index 0000000..2be1a60 --- /dev/null +++ b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/ui/fragments/activities/ActivitiesFragment.java @@ -0,0 +1,31 @@ +package com.andresgmoran.apptrabajadores.ui.fragments.activities; + +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; + +import com.andresgmoran.apptrabajadores.R; + +public class ActivitiesFragment extends Fragment { + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate( R.layout.activities_fragment, container, false); + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + } +} diff --git a/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/ui/fragments/home/HomeFragment.java b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/ui/fragments/home/HomeFragment.java new file mode 100644 index 0000000..c8236d1 --- /dev/null +++ b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/ui/fragments/home/HomeFragment.java @@ -0,0 +1,71 @@ +package com.andresgmoran.apptrabajadores.ui.fragments.home; + +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.andresgmoran.apptrabajadores.R; +import com.andresgmoran.apptrabajadores.databinding.FragmentHomeBinding; +import com.andresgmoran.apptrabajadores.interfaces.IOClickOnLatestGameListener; +import com.andresgmoran.apptrabajadores.interfaces.IOClickOnResidentListener; +import com.andresgmoran.apptrabajadores.models.LastGame; +import com.andresgmoran.apptrabajadores.models.Resident; +import com.andresgmoran.apptrabajadores.models.adapters.LastGamesAdapter; +import com.andresgmoran.apptrabajadores.models.adapters.ResidentsAdapter; + +import java.util.List; + +public class HomeFragment extends Fragment { + + public interface IOOnAttachListenerResidents { + List getResidents(); + } + public interface IOOnAttachListenerLatestsGames { + List getLastestsGames(); + } + private List residents; + private List lastGames; + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_home, container, false); + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + LastGamesAdapter lastGamesAdapter = new LastGamesAdapter(lastGames, (IOClickOnLatestGameListener) requireActivity()); + RecyclerView recyclerViewLastGames = view.findViewById(R.id.latestGames_recycleView_home); + recyclerViewLastGames.setAdapter(lastGamesAdapter); + recyclerViewLastGames.setHasFixedSize(true); + recyclerViewLastGames.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false)); + + ResidentsAdapter adapter = new ResidentsAdapter(residents, (IOClickOnResidentListener) requireActivity()); + RecyclerView recyclerView = view.findViewById(R.id.residents_recycleView_home); + recyclerView.setAdapter(adapter); + recyclerView.setHasFixedSize(true); + recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false)); + } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + + HomeFragment.IOOnAttachListenerLatestsGames attachListenerLastGames = (HomeFragment.IOOnAttachListenerLatestsGames) context; + lastGames = attachListenerLastGames.getLastestsGames(); + + HomeFragment.IOOnAttachListenerResidents attachListenerResidents = (HomeFragment.IOOnAttachListenerResidents) context; + residents = attachListenerResidents.getResidents(); + } +} \ No newline at end of file diff --git a/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/ui/fragments/resident/ResidentFragment.java b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/ui/fragments/resident/ResidentFragment.java new file mode 100644 index 0000000..0f2803c --- /dev/null +++ b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/ui/fragments/resident/ResidentFragment.java @@ -0,0 +1,62 @@ +package com.andresgmoran.apptrabajadores.ui.fragments.resident; + +import android.content.Context; +import android.graphics.Color; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import com.andresgmoran.apptrabajadores.R; +import com.github.mikephil.charting.charts.LineChart; +import com.github.mikephil.charting.data.Entry; +import com.github.mikephil.charting.data.LineData; +import com.github.mikephil.charting.data.LineDataSet; +import java.util.ArrayList; + +public class ResidentFragment extends Fragment { + private LineChart lineChart; + private float[] chartData; + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + Bundle args = getArguments(); + if (args != null) { + chartData = args.getFloatArray("data"); + } + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate(R.layout.resident_fragment, container, false); + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + lineChart = view.findViewById(R.id.lineChart); + updateChart(chartData); + } + + public void updateChart(float[] data) { + ArrayList entries = new ArrayList<>(); + for (int i = 0; i < data.length; i++) { + entries.add(new Entry(i, data[i])); + } + + LineDataSet dataSet = new LineDataSet(entries, "Datos"); + dataSet.setColor(Color.BLUE); + dataSet.setValueTextColor(Color.BLACK); + dataSet.setLineWidth(2f); + dataSet.setCircleRadius(4f); + dataSet.setDrawCircles(true); + + LineData lineData = new LineData(dataSet); + lineChart.setData(lineData); + lineChart.invalidate(); // Refresca el gráfico + } +} diff --git a/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/ui/fragments/residentList/ResidentsListFragment.java b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/ui/fragments/residentList/ResidentsListFragment.java new file mode 100644 index 0000000..3526991 --- /dev/null +++ b/AppTrabajadores/app/src/main/java/com/andresgmoran/apptrabajadores/ui/fragments/residentList/ResidentsListFragment.java @@ -0,0 +1,51 @@ +package com.andresgmoran.apptrabajadores.ui.fragments.residentList; + +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.andresgmoran.apptrabajadores.R; +import com.andresgmoran.apptrabajadores.interfaces.IOClickOnResidentListener; +import com.andresgmoran.apptrabajadores.models.Resident; +import com.andresgmoran.apptrabajadores.models.adapters.ResidentsAdapter; + +import java.util.List; + +public class ResidentsListFragment extends Fragment { + + public interface IOOnAttachListener{ + List getResidents(); + } + + private List residents; + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate( R.layout.residents_list_fragment, container, false); + } + + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + ResidentsAdapter adapter = new ResidentsAdapter(residents, (IOClickOnResidentListener) requireActivity()); + RecyclerView recyclerView = view.findViewById(R.id.residents_recycleView); + recyclerView.setAdapter(adapter); + recyclerView.setHasFixedSize(true); + recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false)); + } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + ResidentsListFragment.IOOnAttachListener attachListener = (ResidentsListFragment.IOOnAttachListener) context; + residents = attachListener.getResidents(); + } +} diff --git a/AppTrabajadores/app/src/main/res/drawable/ic_account_circle_24.xml b/AppTrabajadores/app/src/main/res/drawable/ic_account_circle_24.xml new file mode 100644 index 0000000..9900a7e --- /dev/null +++ b/AppTrabajadores/app/src/main/res/drawable/ic_account_circle_24.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/AppTrabajadores/app/src/main/res/drawable/ic_align_horizontal_left_24.xml b/AppTrabajadores/app/src/main/res/drawable/ic_align_horizontal_left_24.xml new file mode 100644 index 0000000..6351cba --- /dev/null +++ b/AppTrabajadores/app/src/main/res/drawable/ic_align_horizontal_left_24.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/AppTrabajadores/app/src/main/res/drawable/ic_dashboard_black_24dp.xml b/AppTrabajadores/app/src/main/res/drawable/ic_dashboard_black_24dp.xml new file mode 100644 index 0000000..46fc8de --- /dev/null +++ b/AppTrabajadores/app/src/main/res/drawable/ic_dashboard_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/AppTrabajadores/app/src/main/res/drawable/ic_home_black_24dp.xml b/AppTrabajadores/app/src/main/res/drawable/ic_home_black_24dp.xml new file mode 100644 index 0000000..f8bb0b5 --- /dev/null +++ b/AppTrabajadores/app/src/main/res/drawable/ic_home_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/AppTrabajadores/app/src/main/res/drawable/ic_launcher_background.xml b/AppTrabajadores/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/AppTrabajadores/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/AppTrabajadores/app/src/main/res/drawable/ic_launcher_foreground.xml b/AppTrabajadores/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/AppTrabajadores/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/AppTrabajadores/app/src/main/res/drawable/ic_notifications_black_24dp.xml b/AppTrabajadores/app/src/main/res/drawable/ic_notifications_black_24dp.xml new file mode 100644 index 0000000..78b75c3 --- /dev/null +++ b/AppTrabajadores/app/src/main/res/drawable/ic_notifications_black_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/AppTrabajadores/app/src/main/res/drawable/woman_avatar.jpg b/AppTrabajadores/app/src/main/res/drawable/woman_avatar.jpg new file mode 100644 index 0000000..62d85bc Binary files /dev/null and b/AppTrabajadores/app/src/main/res/drawable/woman_avatar.jpg differ diff --git a/AppTrabajadores/app/src/main/res/font/assistant_bold.xml b/AppTrabajadores/app/src/main/res/font/assistant_bold.xml new file mode 100644 index 0000000..b2b395b --- /dev/null +++ b/AppTrabajadores/app/src/main/res/font/assistant_bold.xml @@ -0,0 +1,7 @@ + + + diff --git a/AppTrabajadores/app/src/main/res/layout/account_fragment.xml b/AppTrabajadores/app/src/main/res/layout/account_fragment.xml new file mode 100644 index 0000000..8839188 --- /dev/null +++ b/AppTrabajadores/app/src/main/res/layout/account_fragment.xml @@ -0,0 +1,139 @@ + + + + + +