diff --git a/Summer-2024/CS-3443/Labs/Lab4/.gitignore b/Summer-2024/CS-3443/Labs/Lab4/.gitignore new file mode 100644 index 0000000..f7ff4f7 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/.gitignore @@ -0,0 +1,18 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.idea +.project +.settings +.externalNativeBuild +.cxx +local.properties diff --git a/Summer-2024/CS-3443/Labs/Lab4/Layout.puml b/Summer-2024/CS-3443/Labs/Lab4/Layout.puml new file mode 100644 index 0000000..d2359f3 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/Layout.puml @@ -0,0 +1,87 @@ +@startuml +skinparam classAttributeIconSize 0 +class CrewMember { + - name: String + - position: String + - rank: String + - species: String + - assignment: String + + <> CrewMember(name: String, position: String, rank: String, species: String, assignment: String) + + <> CrewMember(name: String, position: String, rank: String, species: String) + + toString(): String + + getName(): String + + setName(name: String) + + getPosition(): String + + setPosition(position: String) + + getRank(): String + + setRank(rank: String) + + getSpecies(): String + + setSpecies(species: String) + + getAssignment(): String + + setAssignment(assignment: String) +} + +skinparam classAttributeIconSize 0 +class Starship { + - name: String + - registry: String + - starshipClass: String + - crew: ArrayList + + <> Starship(name: String, registry: String, starshipClass: String) + + toString(): String + + addCrewMember(crewMember: CrewMember) + + getNumberOfPersonnel(): Integer + + getName(): String + + setName(name: String) + + getRegistry(): String + + setRegistry(registry: String) + + getCrew(): ArrayList + + setCrew(crew: ArrayList) + + getStarshipClass(): String + + setStarshipClass(starshipClass: String) +} + +skinparam classAttributeIconSize 0 +class Fleet { + - name: String + - starships: ArrayList + + <> Fleet(name: String) + + toString(): String + + getSizeOfFleet(): Integer + + addStarship(starship: Starship) + + getName(): String + + setName(name: String) + + getStarships(): ArrayList + + setStarships(starships: ArrayList) + +_load(manager: AssetManager) + - loadFleet(fleetData: InputStream) + - loadPersonnel(personnelData: InputStream) +} + +skinparam classAttributeIconSize 0 +class MainActivity { + #onCreate(savedInstanceState: Bundle) + - launchStarshipActivity(starship: Starship) +} + + +skinparam classAttributeIconSize 0 +class StarshipActivity { + #onCreate(savedInstanceState: Bundle) +} + +set namespaceSeparator none +entity activity_main.xml +set namespaceSeparator none +entity activity_starship.xml + +Fleet o-- Starship +Starship o-- CrewMember +MainActivity ..> StarshipActivity +MainActivity --> Fleet +set namespaceSeparator none +MainActivity ..> activity_main.xml +StarshipActivity --> Starship +set namespaceSeparator none +StarshipActivity ..> activity_starship.xml +@enduml diff --git a/Summer-2024/CS-3443/Labs/Lab4/Layout.svg b/Summer-2024/CS-3443/Labs/Lab4/Layout.svg new file mode 100644 index 0000000..eb42d77 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/Layout.svg @@ -0,0 +1 @@ +CrewMember-name: String-position: String-rank: String-species: String-assignment: String+«constructor» CrewMember(name: String, position: String, rank: String, species: String, assignment: String)+«constructor» CrewMember(name: String, position: String, rank: String, species: String)+toString(): String+getName(): String+setName(name: String)+getPosition(): String+setPosition(position: String)+getRank(): String+setRank(rank: String)+getSpecies(): String+setSpecies(species: String)+getAssignment(): String+setAssignment(assignment: String)Starship-name: String-registry: String-starshipClass: String-crew: ArrayList<CrewMember>+«constructor» Starship(name: String, registry: String, starshipClass: String)+toString(): String+addCrewMember(crewMember: CrewMember)+getNumberOfPersonnel(): Integer+getName(): String+setName(name: String)+getRegistry(): String+setRegistry(registry: String)+getCrew(): ArrayList<CrewMember>+setCrew(crew: ArrayList<CrewMember>)+getStarshipClass(): String+setStarshipClass(starshipClass: String)Fleet-name: String-starships: ArrayList<Starship>+«constructor» Fleet(name: String)+toString(): String+getSizeOfFleet(): Integer+addStarship(starship: Starship)+getName(): String+setName(name: String)+getStarships(): ArrayList<Starship>+setStarships(starships: ArrayList<Starship>)+_load(manager: AssetManager)-loadFleet(fleetData: InputStream)-loadPersonnel(personnelData: InputStream)MainActivity#onCreate(savedInstanceState: Bundle)-launchStarshipActivity(starship: Starship)StarshipActivity#onCreate(savedInstanceState: Bundle)activity_main.xmlactivity_starship.xml \ No newline at end of file diff --git a/Summer-2024/CS-3443/Labs/Lab4/README.org b/Summer-2024/CS-3443/Labs/Lab4/README.org new file mode 100644 index 0000000..f909791 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/README.org @@ -0,0 +1,26 @@ +* Lab 4 Submission +Name: =Price Hiller= + +ABC123: =zfp106= + +Date: =2024-07-05= + +URL: [[https://git.orion-technologies.io/Price/college/src/branch/Development/Summer-2024/CS-3443/Labs/Lab4]] + +** UML Diagram + +#+ATTR_HTML: :alt :align left :class img +[[./Layout.svg][UML Diagram of the program]] + +You can see the HTML rendering at [[./UML.html]] + +** Running the program + +To operate correctly the program must be ran from the top level directory! + +*** via Android Studio + +- Download the provided ~zip~ file +- Click =File= > =New= > =Import Project=... in Android Studio +- Select the downloaded ~zip~ file +- Run the application diff --git a/Summer-2024/CS-3443/Labs/Lab4/UML.html b/Summer-2024/CS-3443/Labs/Lab4/UML.html new file mode 100644 index 0000000..21766ee --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/UML.html @@ -0,0 +1,19 @@ + + + + + + + zfp106 UML Diagram for Lab2 + + + +

+ Made in the dungeons with great pain in PlantUML (Lab4, + zfp106) +

+

The actual UML diagram below:

+ Uml Diagram + + + diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/.classpath b/Summer-2024/CS-3443/Labs/Lab4/app/.classpath new file mode 100644 index 0000000..0a3280e --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/.gitignore b/Summer-2024/CS-3443/Labs/Lab4/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/build.gradle b/Summer-2024/CS-3443/Labs/Lab4/app/build.gradle new file mode 100644 index 0000000..eb43dd9 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/build.gradle @@ -0,0 +1,40 @@ +plugins { + alias(libs.plugins.android.application) +} + +android { + namespace 'edu.utsa.cs3443.zfp106_lab4' + compileSdk 34 + + defaultConfig { + applicationId "edu.utsa.cs3443.zfp106_lab4" + minSdk 26 + targetSdk 34 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +dependencies { + + implementation libs.appcompat + implementation libs.material + implementation libs.activity + implementation libs.constraintlayout + testImplementation libs.junit + androidTestImplementation libs.ext.junit + androidTestImplementation libs.espresso.core +} \ No newline at end of file diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/proguard-rules.pro b/Summer-2024/CS-3443/Labs/Lab4/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/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/Summer-2024/CS-3443/Labs/Lab4/app/src/androidTest/java/edu/utsa/cs3443/zfp106_lab4/ExampleInstrumentedTest.java b/Summer-2024/CS-3443/Labs/Lab4/app/src/androidTest/java/edu/utsa/cs3443/zfp106_lab4/ExampleInstrumentedTest.java new file mode 100644 index 0000000..3a320eb --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/src/androidTest/java/edu/utsa/cs3443/zfp106_lab4/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package edu.utsa.cs3443.zfp106_lab4; + +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("edu.utsa.cs3443.zfp106_lab4", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/AndroidManifest.xml b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..ba903d6 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/AndroidManifest.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/assets/fleet.csv b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/assets/fleet.csv new file mode 100644 index 0000000..f8339f0 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/assets/fleet.csv @@ -0,0 +1,9 @@ +USS Bozeman,NCC-1941,Soyuz +USS Bozeman,NCC-1941-A,Sovereign +USS Endeavour,NCC-71805,Nebula +USS Enterprise,NCC-1701-A,Constitution +USS Enterprise,NCC-1701-D,Galaxy +USS Enterprise,NCC-1701-E,Sovereign +USS Gibraltar,NCC-75689,Sovereign +USS Venture,NCC-71854,Galaxy +USS Voyager,NCC-74656,Intrepid \ No newline at end of file diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/assets/personnel.csv b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/assets/personnel.csv new file mode 100644 index 0000000..6994cd7 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/assets/personnel.csv @@ -0,0 +1,24 @@ +James T. Kirk,Commanding Officer,Captain,NCC-1701-A,Human +Spock,First Officer,Commander,NCC-1701-A,Vulcan/Human +Leonard McCoy,Chief Medical Officer,Lieutenant Commander,NCC-1701-A,Human +Montgomery Scott,Chief Engineering Officer,Lieutenant Commander,NCC-1701-A,Human +Jean-Luc Picard,Commanding Officer,Captain,NCC-1701-D,Human +William T. Riker,First Officer,Commander,NCC-1701-D,Human +Beverly Crusher,Chief Medical Officer,Lieutenant Commander,NCC-1701-D,Human +Geordi La Forge,Chief Engineering Officer,Lieutenant,NCC-1701-D,Human +Deanna Troi,Counselor,Lieutenant Commander,NCC-1701-D,Betazoid +Worf,Helmsman,Lieutenant,NCC-1701-D,Klingon +Data,Chief Operations Officer,Lieutenant Commander,NCC-1701-D,Android +Tasha Yar,Chief Security Officer,Lieutenant,NCC-1701-D,Human +Christine Chapel,Nurse,Crewman,NCC-1701-A,Human +B'Elanna Torres,Chief Engineering Officer,Lieutenant,NCC-74656,Klingon/Human +Tom Paris,Helmsman,Lieutenant,NCC-74656,Human +The Doctor,Chief Medical Officer,no rank,NCC-74656,Hologram +Nyota Uhura,Communications Officer,Lieutenant,NCC-1701-A,Human +Neelix,Navigator,no rank,NCC-74656,Talaxian +Hikaru Sulu,Helmsman,Lieutenant,NCC-1701-A,Human +Kes,Nurse,no rank,NCC-74656,Ocampa +Pavel Chekov,Navigator,Ensign,NCC-1701-A,Human +Kathryn Janeway,Commanding Officer,Captain,NCC-74656,Human +Chakotay,First Officer,Lieutenant Commander,NCC-74656,Human +Tuvok,Communications Officer,Ensign,NCC-74656,Vulcan diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/java/edu/utsa/cs3443/zfp106_lab4/MainActivity.java b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/java/edu/utsa/cs3443/zfp106_lab4/MainActivity.java new file mode 100644 index 0000000..38bb691 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/java/edu/utsa/cs3443/zfp106_lab4/MainActivity.java @@ -0,0 +1,74 @@ +package edu.utsa.cs3443.zfp106_lab4; + +import android.content.Intent; +import android.graphics.Color; +import android.graphics.drawable.GradientDrawable; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.LinearLayout; +import android.widget.Toast; + +import androidx.activity.EdgeToEdge; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; + +import java.io.IOException; + +import edu.utsa.cs3443.zfp106_lab4.model.Fleet; +import edu.utsa.cs3443.zfp106_lab4.model.Starship; + +public class MainActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + EdgeToEdge.enable(this); + setContentView(R.layout.activity_main); + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { + Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); + return insets; + }); + + Fleet unitedFederation = new Fleet("United Federation of Planets"); + try { + unitedFederation.load(this.getAssets()); + } catch (IOException e) { + // TODO: Correctly log when error hit + Toast toast = Toast.makeText(this, e.toString(), Toast.LENGTH_SHORT); + toast.show(); + } + + LinearLayout layout = this.findViewById(R.id.starShipListingLayout); + for (Starship ship : unitedFederation.getStarships()) { + Button btn = new Button(this); + btn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + launchStarshipActivity(ship); + } + }); + btn.setText(String.format("%s\n%s", ship.getName(), ship.getRegistry())); + btn.setTextSize(18); + btn.setTextColor(Color.parseColor("#E2D1FF")); + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); + params.setMargins(20, 0, 20, 20); + btn.setWidth(1000); + btn.setLayoutParams(params); + GradientDrawable shape = new GradientDrawable(); + shape.setColor(Color.parseColor("#310086")); + shape.setCornerRadius(40); + btn.setBackground(shape); + layout.addView(btn); + } + } + + private void launchStarshipActivity(Starship starship) { + Intent intent = new Intent(this, StarshipActivity.class); + intent.putExtra("starship", starship); + this.startActivity(intent); + } +} \ No newline at end of file diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/java/edu/utsa/cs3443/zfp106_lab4/StarshipActivity.java b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/java/edu/utsa/cs3443/zfp106_lab4/StarshipActivity.java new file mode 100644 index 0000000..764aabb --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/java/edu/utsa/cs3443/zfp106_lab4/StarshipActivity.java @@ -0,0 +1,73 @@ +package edu.utsa.cs3443.zfp106_lab4; + +import android.os.Bundle; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.TextView; + +import androidx.activity.EdgeToEdge; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; + +import java.lang.reflect.Field; + +import edu.utsa.cs3443.zfp106_lab4.model.CrewMember; +import edu.utsa.cs3443.zfp106_lab4.model.Starship; + +public class StarshipActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + EdgeToEdge.enable(this); + setContentView(R.layout.activity_starship); + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { + Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); + v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); + return insets; + }); + + Starship starship = (Starship) getIntent().getExtras().getSerializable("starship"); + TextView starshipInfoTextView = this.findViewById(R.id.starshipInfoTextView); + starshipInfoTextView.setText(String.format("%s\n%s", starship.getName(), starship.getRegistry())); + + LinearLayout personnelListingLayout = this.findViewById(R.id.personnelListingLayout); + + LinearLayout.LayoutParams crewLayoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); + crewLayoutParams.setMargins(0, 0, 0, 10); + for (CrewMember crew: starship.getCrew()) { + LinearLayout crewLayout = new LinearLayout(this); + crewLayout.setLayoutParams(crewLayoutParams); + + ImageView crewPicture = new ImageView(this); + String[] crewNameParts = crew.getName().split(" "); + String crewNameLast = crewNameParts[crewNameParts.length - 1].toLowerCase(); + // Some evil reflection + for (Field field : R.drawable.class.getFields()) { + if (field.getName().endsWith(crewNameLast)) { + crewPicture.setImageResource(this.getResources().getIdentifier(field.getName(), "drawable", this.getPackageName())); + } + } + crewPicture.setLayoutParams(new LinearLayout.LayoutParams(300, 300)); + crewLayout.addView(crewPicture); + + LinearLayout crewInfoLayout = new LinearLayout(this); + crewInfoLayout.setOrientation(LinearLayout.VERTICAL); + + TextView crewPosition = new TextView(this); + crewPosition.setText(crew.getPosition()); + crewPosition.setTextSize(24); + crewInfoLayout.addView(crewPosition); + + TextView crewTitle = new TextView(this); + crewTitle.setText(String.format("%s %s", crew.getRank(), crew.getName())); + crewInfoLayout.addView(crewTitle); + + + crewLayout.addView(crewInfoLayout); + personnelListingLayout.addView(crewLayout); + } + } +} \ No newline at end of file diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/java/edu/utsa/cs3443/zfp106_lab4/model/CrewMember.java b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/java/edu/utsa/cs3443/zfp106_lab4/model/CrewMember.java new file mode 100644 index 0000000..165e6c7 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/java/edu/utsa/cs3443/zfp106_lab4/model/CrewMember.java @@ -0,0 +1,150 @@ +package edu.utsa.cs3443.zfp106_lab4.model; + +import java.io.Serializable; + +/** + * A crew member that can be assigned to a starship + * + *

A crew member has a name, a position, a rank, a species, and an assignment. + * + *

A crew member may not have an active assignment, meaning they're not assigned to a ship + */ +public class CrewMember implements Serializable { + private String name; + private String position; + private String rank; + private String species; + private String assignment; + + /** + * Create a new crew member with an active assignment to a starship + * + * @param name The name of the crew member + * @param position The position of the crew member + * @param rank The rank of the crew member + * @param species The species of the crew member + * @param assignment The ship registry the crew member is assigned to + */ + public CrewMember(String name, String position, String rank, String species, String assignment) { + this.setName(name); + this.setPosition(position); + this.setRank(rank); + this.setSpecies(species); + this.setAssignment(assignment); + } + + /** + * Create a new crew member with an active assignment to a starship + * + * @param name The name of the crew member + * @param position The position of the crew member + * @param rank The rank of the crew member + * @param species The species of the crew member + */ + public CrewMember(String name, String position, String rank, String species) { + this.setName(name); + this.setPosition(position); + this.setRank(rank); + this.setSpecies(species); + } + + /** + * Get the string representation for the crew member + * + * @return String representation of the crew member + */ + public String toString() { + return String.format( + "%s (%s) - %s [%s]", this.getName(), this.getRank(), this.getPosition(), this.getSpecies()); + } + + /** + * Get the name of the crew member + * + * @return The name of the crew member + */ + public String getName() { + return this.name; + } + + /** + * Set the name of the crew member + * + * @param name The new name for the crew member + */ + public void setName(String name) { + this.name = name; + } + + /** + * Get the position of the crew member + * + * @return The position of the crew member + */ + public String getPosition() { + return this.position; + } + + /** + * Set the position of the crew member + * + * @param position The new position for the crew member + */ + public void setPosition(String position) { + this.position = position; + } + + /** + * Get the rank of the crew member + * + * @return The rank of the crew member + */ + public String getRank() { + return this.rank; + } + + /** + * Set the rank of the crew member + * + * @param rank The new rank for the crew member + */ + public void setRank(String rank) { + this.rank = rank; + } + + /** + * Get the species of the crew member + * + * @return The species of the crew member + */ + public String getSpecies() { + return this.species; + } + + /** + * Set the species of the crew member + * + * @param species The new species for the crew member + */ + public void setSpecies(String species) { + this.species = species; + } + + /** + * Get the starship registry that the crew member is assigned to + * + * @return The starship registry that the crew member is assigned to + */ + public String getAssignment() { + return this.assignment; + } + + /** + * Set the starship registry that the crew member is assigned to + * + * @param assignment The new starship registry to assign the crew member to + */ + public void setAssignment(String assignment) { + this.assignment = assignment; + } +} diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/java/edu/utsa/cs3443/zfp106_lab4/model/Fleet.java b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/java/edu/utsa/cs3443/zfp106_lab4/model/Fleet.java new file mode 100644 index 0000000..1c2c113 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/java/edu/utsa/cs3443/zfp106_lab4/model/Fleet.java @@ -0,0 +1,160 @@ +package edu.utsa.cs3443.zfp106_lab4.model; + +import android.content.res.AssetManager; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import edu.utsa.cs3443.zfp106_lab4.MainActivity; + +/** + * Represents a fleet of starships + * + *

Each fleet has a name and 0 or more starships + */ +public class Fleet { + private String name; + private ArrayList starships; + + public Fleet(String name) { + this.setName(name); + this.setStarships(new ArrayList()); + } + + /** + * Get the string representation of a fleet + * + * @return string representation of the fleet + */ + public String toString() { + String out = + String.format( + "----------------------------\n\n%s\n\n----------------------------\n", this.getName()); + StringBuilder starships = new StringBuilder(); + for (Starship starship : this.getStarships()) { + starships.append("\n" + starship.toString() + "\n"); + } + out = out + starships.toString(); + return out; + } + + /** + * Get the number of ships in the fleet + * + * @return Number of ships in the fleet + */ + public Integer getSizeOfFleet() { + return this.getStarships().size(); + } + + /** + * Add a starship to the fleet + * + * @param starship A starship to add to the fleet + */ + public void addStarship(Starship starship) { + if (!this.getStarships().contains(starship)) { + this.starships.add(starship); + } + } + + /** + * Get the name of the fleet + * + * @return name of the fleet + */ + public String getName() { + return this.name; + } + + /** + * Set the name of the fleet + * + * @param name New name for the fleet + */ + public void setName(String name) { + this.name = name; + } + + /** + * Get all the starships in the fleet + * + * @return starships in the fleet + */ + public ArrayList getStarships() { + return this.starships; + } + + public Starship getStarshipByRegistry(String registry) { + for (Starship ship : this.getStarships()) { + if (ship.getRegistry().equals(registry)) { + return ship; + } + } + return null; + } + + /** + * Set the fleet's starship's to a new list of ships + * + * @param starships New starship's to set for the fleet + */ + public void setStarships(ArrayList starships) { + this.starships = starships; + } + + /** + * Load many starships from a given directory + * + * @throws IOException When a valid csv file cannot be read + */ + public void load(AssetManager manager) throws IOException { + this.loadFleet(manager.open("fleet.csv")); + this.loadPersonnel(manager.open("personnel.csv")); + } + + /** + * Load fleet information + * @param fleetData data stream to read from + */ + private void loadFleet(InputStream fleetData) { + Scanner scan = new Scanner(fleetData); + while (scan.hasNextLine()) { + String[] shipInfo = scan.nextLine().split(","); + String shipName = shipInfo[0].trim(); + String shipRegistry = shipInfo[1].trim(); + String shipClass = shipInfo[2].trim(); + this.addStarship(new Starship(shipName, shipRegistry, shipClass)); + } + } + + /** + * Load personnel information, expects that fleet data has already been loaded + * @param personnelData data stream to read from + */ + private void loadPersonnel(InputStream personnelData) { + Scanner scan = new Scanner(personnelData); + while (scan.hasNextLine()) { + String[] personnelInfo = scan.nextLine().split(","); + String name = personnelInfo[0].trim(); + String position = personnelInfo[1].trim(); + String rank = personnelInfo[2].trim(); + String assignment = personnelInfo[3].trim(); + String species = personnelInfo[4].trim(); + + CrewMember crew = new CrewMember(name, position, rank, species); + Starship starship = this.getStarshipByRegistry(assignment); + if (starship != null) { + starship.addCrewMember(crew); + } + } + } +} diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/java/edu/utsa/cs3443/zfp106_lab4/model/Starship.java b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/java/edu/utsa/cs3443/zfp106_lab4/model/Starship.java new file mode 100644 index 0000000..092fe46 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/java/edu/utsa/cs3443/zfp106_lab4/model/Starship.java @@ -0,0 +1,150 @@ +package edu.utsa.cs3443.zfp106_lab4.model; + +import java.io.Serializable; +import java.util.ArrayList; + +/** + * A starship + * + *

Each starship has a name, a registry code, a class, and 0 or more crew members + */ +public class Starship implements Serializable { + private String name; + private String registry; + private String starshipClass; + private ArrayList crew; + + /** + * Instantiates a starship with the given name, registry, the class of starship, and an empty list + * of crew members. + * + * @param name The name of the starship + * @param registry The registry code of the starship + * @param starshipClass The class of the starship + */ + public Starship(String name, String registry, String starshipClass) { + this.setName(name); + this.setRegistry(registry); + this.setStarshipClass(starshipClass); + this.setCrew(new ArrayList()); + } + + /** + * Returns the string representation of a Starship + * + * @return string representation of a Starship + */ + public String toString() { + String out = + String.format( + "%s, %s. Registry: %s\n\n%d crew members assigned.", + this.getName(), + this.getStarshipClass(), + this.getRegistry(), + this.getNumberOfPersonnel()); + StringBuilder crew = new StringBuilder(); + for (CrewMember crewMember : this.getCrew()) { + crew.append("\n\n - " + crewMember.toString()); + } + out = out + crew.toString(); + return out; + } + + /** + * Adds the given crew member to the starship and sets their assignment to the starship. + * + *

Note that this will reassign the crew member to the starship + * + * @param crewMember The crew member to assign to the starship + */ + public void addCrewMember(CrewMember crewMember) { + if (!this.crew.contains(crewMember)) { + crewMember.setAssignment(this.getRegistry()); + this.crew.add(crewMember); + } + } + + /** + * Get the number of crew assigned to the starship + * + * @return The number of crew assigned to the starship + */ + public Integer getNumberOfPersonnel() { + return this.getCrew().size(); + } + + /** + * Get the name of the starship + * + * @return The name of the starship + */ + public String getName() { + return this.name; + } + + /** + * Set the name of the starship + * + * @param name New name for the starship + */ + public void setName(String name) { + this.name = name; + } + + /** + * Get the registry code of the starship + * + * @return The registry code of the starship + */ + public String getRegistry() { + return this.registry; + } + + /** + * Set the registry code of the starship + * + * @param registry The new registry code for the starship + */ + public void setRegistry(String registry) { + this.registry = registry; + } + + /** + * Get all of the crew assigned to the starship + * + * @return The crew assigned to the starship + */ + public ArrayList getCrew() { + return this.crew; + } + + /** + * Set all the crew members of the ship. This will replace the existing crew. + * + * @param crew The new crew members to assign to the ship + */ + public void setCrew(ArrayList crew) { + this.crew = new ArrayList(); + for (CrewMember crewMember : crew) { + this.addCrewMember(crewMember); + } + } + + /** + * Get the class of the starship + * + * @return The class of the starship + */ + public String getStarshipClass() { + return this.starshipClass; + } + + /** + * Set the starship's class + * + * @param starshipClass The new class for the starship + */ + public void setStarshipClass(String starshipClass) { + this.starshipClass = starshipClass; + } +} diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/chakotay.jpg b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/chakotay.jpg new file mode 100644 index 0000000..1aaa0e5 Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/chakotay.jpg differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/chapel.jpg b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/chapel.jpg new file mode 100644 index 0000000..6dd017e Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/chapel.jpg differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/chekov.jpg b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/chekov.jpg new file mode 100644 index 0000000..2b8fd68 Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/chekov.jpg differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/crusher.jpg b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/crusher.jpg new file mode 100644 index 0000000..8a057f7 Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/crusher.jpg differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/data.jpg b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/data.jpg new file mode 100644 index 0000000..90beb3b Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/data.jpg differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/doctor.jpg b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/doctor.jpg new file mode 100644 index 0000000..77cb7f4 Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/doctor.jpg differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/ic_launcher_background.xml b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/ic_launcher_foreground.xml b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/janeway.jpg b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/janeway.jpg new file mode 100644 index 0000000..2644ef4 Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/janeway.jpg differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/kes.jpg b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/kes.jpg new file mode 100644 index 0000000..2cf0d74 Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/kes.jpg differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/kirk.jpg b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/kirk.jpg new file mode 100644 index 0000000..a505e86 Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/kirk.jpg differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/la_forge.jpg b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/la_forge.jpg new file mode 100644 index 0000000..0dd1374 Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/la_forge.jpg differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/mccoy.jpg b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/mccoy.jpg new file mode 100644 index 0000000..5e9565f Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/mccoy.jpg differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/neelix.jpg b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/neelix.jpg new file mode 100644 index 0000000..6b37b8e Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/neelix.jpg differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/paris.jpg b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/paris.jpg new file mode 100644 index 0000000..d7c5274 Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/paris.jpg differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/picard.jpg b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/picard.jpg new file mode 100644 index 0000000..53f94e4 Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/picard.jpg differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/riker.jpg b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/riker.jpg new file mode 100644 index 0000000..c6322ed Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/riker.jpg differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/scott.jpg b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/scott.jpg new file mode 100644 index 0000000..02c1d11 Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/scott.jpg differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/spock.jpg b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/spock.jpg new file mode 100644 index 0000000..76db6b3 Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/spock.jpg differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/starfleet_badge.png b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/starfleet_badge.png new file mode 100644 index 0000000..e0a5a89 Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/starfleet_badge.png differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/sulu.jpeg b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/sulu.jpeg new file mode 100644 index 0000000..15c0bf1 Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/sulu.jpeg differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/torres.jpg b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/torres.jpg new file mode 100644 index 0000000..1f0e8af Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/torres.jpg differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/troi.jpg b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/troi.jpg new file mode 100644 index 0000000..23c5b23 Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/troi.jpg differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/tuvok.jpg b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/tuvok.jpg new file mode 100644 index 0000000..d9a4f7d Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/tuvok.jpg differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/uhura.jpg b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/uhura.jpg new file mode 100644 index 0000000..0ee4e76 Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/uhura.jpg differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/worf.jpg b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/worf.jpg new file mode 100644 index 0000000..16bac7d Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/worf.jpg differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/yar.jpg b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/yar.jpg new file mode 100644 index 0000000..749da6a Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/drawable/yar.jpg differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/layout/activity_main.xml b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..7ba5479 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/layout/activity_starship.xml b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/layout/activity_starship.xml new file mode 100644 index 0000000..c4f9005 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/layout/activity_starship.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-anydpi/ic_launcher.xml b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-anydpi/ic_launcher.xml new file mode 100644 index 0000000..6f3b755 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-anydpi/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml new file mode 100644 index 0000000..6f3b755 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000..c209e78 Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000..b2dfe3d Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000..4f0f1d6 Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp new file mode 100644 index 0000000..62b611d Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000..948a307 Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..1b9a695 Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000..28d4b77 Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..9287f50 Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000..aa7d642 Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp new file mode 100644 index 0000000..9126ae3 Binary files /dev/null and b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/values-night/styles.xml b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000..5ca5cf7 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/values-night/styles.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/values-night/themes.xml b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/values-night/themes.xml new file mode 100644 index 0000000..1302c40 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/values-night/themes.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/values/attrs_star_ship_button.xml b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/values/attrs_star_ship_button.xml new file mode 100644 index 0000000..75c5e59 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/values/attrs_star_ship_button.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/values/colors.xml b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..e2337bb --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/values/colors.xml @@ -0,0 +1,9 @@ + + + #FF000000 + #FFFFFFFF + #FF29B6F6 + #FF039BE5 + #FFBDBDBD + #FF757575 + \ No newline at end of file diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/values/strings.xml b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..5e99e53 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/values/strings.xml @@ -0,0 +1,5 @@ + + zfp106-lab4 + + Hello blank fragment + \ No newline at end of file diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/values/styles.xml b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..3c92e05 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/values/styles.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/values/themes.xml b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..3184378 --- /dev/null +++ b/Summer-2024/CS-3443/Labs/Lab4/app/src/main/res/values/themes.xml @@ -0,0 +1,9 @@ + + + + +