diff --git a/Lab4/EXO1/.gitignore b/Lab4/.gitignore similarity index 100% rename from Lab4/EXO1/.gitignore rename to Lab4/.gitignore diff --git a/Lab4/EXO1/.idea/.gitignore b/Lab4/EXO1/.idea/.gitignore deleted file mode 100644 index 26d33521af10bcc7fd8cea344038eaaeb78d0ef5..0000000000000000000000000000000000000000 --- a/Lab4/EXO1/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/Lab4/EXO1/.idea/.name b/Lab4/EXO1/.idea/.name deleted file mode 100644 index c1c77b93e58b9233796eb9a4e9817b51d15df1e6..0000000000000000000000000000000000000000 --- a/Lab4/EXO1/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -Deezersearch \ No newline at end of file diff --git a/Lab4/EXO1/.idea/compiler.xml b/Lab4/EXO1/.idea/compiler.xml deleted file mode 100644 index b589d56e9f285d8cfdc6c270853a5d439021a278..0000000000000000000000000000000000000000 --- a/Lab4/EXO1/.idea/compiler.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="CompilerConfiguration"> - <bytecodeTargetLevel target="17" /> - </component> -</project> \ No newline at end of file diff --git a/Lab4/EXO1/.idea/deploymentTargetSelector.xml b/Lab4/EXO1/.idea/deploymentTargetSelector.xml deleted file mode 100644 index b268ef36cd2de3a14ddddf25aa9f5d4e95731e18..0000000000000000000000000000000000000000 --- a/Lab4/EXO1/.idea/deploymentTargetSelector.xml +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="deploymentTargetSelector"> - <selectionStates> - <SelectionState runConfigName="app"> - <option name="selectionMode" value="DROPDOWN" /> - </SelectionState> - </selectionStates> - </component> -</project> \ No newline at end of file diff --git a/Lab4/EXO1/.idea/gradle.xml b/Lab4/EXO1/.idea/gradle.xml deleted file mode 100644 index 32522c1e7054e664d0b44bf5c384d6e06213b9a5..0000000000000000000000000000000000000000 --- a/Lab4/EXO1/.idea/gradle.xml +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="GradleSettings"> - <option name="linkedExternalProjectsSettings"> - <GradleProjectSettings> - <option name="externalProjectPath" value="$PROJECT_DIR$" /> - <option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" /> - <option name="modules"> - <set> - <option value="$PROJECT_DIR$" /> - <option value="$PROJECT_DIR$/app" /> - </set> - </option> - <option name="resolveExternalAnnotations" value="false" /> - </GradleProjectSettings> - </option> - </component> -</project> \ No newline at end of file diff --git a/Lab4/EXO1/.idea/kotlinc.xml b/Lab4/EXO1/.idea/kotlinc.xml deleted file mode 100644 index fdf8d994a6599dd8b64a341af14c598069a10022..0000000000000000000000000000000000000000 --- a/Lab4/EXO1/.idea/kotlinc.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="KotlinJpsPluginSettings"> - <option name="version" value="1.9.0" /> - </component> -</project> \ No newline at end of file diff --git a/Lab4/EXO1/.idea/migrations.xml b/Lab4/EXO1/.idea/migrations.xml deleted file mode 100644 index f8051a6f973e69a86e6f07f1a1c87f17a31c7235..0000000000000000000000000000000000000000 --- a/Lab4/EXO1/.idea/migrations.xml +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="ProjectMigrations"> - <option name="MigrateToGradleLocalJavaHome"> - <set> - <option value="$PROJECT_DIR$" /> - </set> - </option> - </component> -</project> \ No newline at end of file diff --git a/Lab4/EXO1/.idea/misc.xml b/Lab4/EXO1/.idea/misc.xml deleted file mode 100644 index 0ad17cbd33a2f389d524bc4bfef9c52e1f7ab490..0000000000000000000000000000000000000000 --- a/Lab4/EXO1/.idea/misc.xml +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="ExternalStorageConfigurationManager" enabled="true" /> - <component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK"> - <output url="file://$PROJECT_DIR$/build/classes" /> - </component> - <component name="ProjectType"> - <option name="id" value="Android" /> - </component> -</project> \ No newline at end of file diff --git a/Lab4/EXO1/.idea/other.xml b/Lab4/EXO1/.idea/other.xml deleted file mode 100644 index 22069ff90528ba945e7276322da9379a838de361..0000000000000000000000000000000000000000 --- a/Lab4/EXO1/.idea/other.xml +++ /dev/null @@ -1,549 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="direct_access_persist.xml"> - <option name="deviceSelectionList"> - <list> - <PersistentDeviceSelectionData> - <option name="api" value="27" /> - <option name="brand" value="DOCOMO" /> - <option name="codename" value="F01L" /> - <option name="id" value="F01L" /> - <option name="manufacturer" value="FUJITSU" /> - <option name="name" value="F-01L" /> - <option name="screenDensity" value="360" /> - <option name="screenX" value="720" /> - <option name="screenY" value="1280" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="OnePlus" /> - <option name="codename" value="OP5552L1" /> - <option name="id" value="OP5552L1" /> - <option name="manufacturer" value="OnePlus" /> - <option name="name" value="CPH2415" /> - <option name="screenDensity" value="480" /> - <option name="screenX" value="1080" /> - <option name="screenY" value="2412" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="OPPO" /> - <option name="codename" value="OP573DL1" /> - <option name="id" value="OP573DL1" /> - <option name="manufacturer" value="OPPO" /> - <option name="name" value="CPH2557" /> - <option name="screenDensity" value="480" /> - <option name="screenX" value="1080" /> - <option name="screenY" value="2400" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="28" /> - <option name="brand" value="DOCOMO" /> - <option name="codename" value="SH-01L" /> - <option name="id" value="SH-01L" /> - <option name="manufacturer" value="SHARP" /> - <option name="name" value="AQUOS sense2 SH-01L" /> - <option name="screenDensity" value="480" /> - <option name="screenX" value="1080" /> - <option name="screenY" value="2160" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="Lenovo" /> - <option name="codename" value="TB370FU" /> - <option name="id" value="TB370FU" /> - <option name="manufacturer" value="Lenovo" /> - <option name="name" value="Tab P12" /> - <option name="screenDensity" value="340" /> - <option name="screenX" value="1840" /> - <option name="screenY" value="2944" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="samsung" /> - <option name="codename" value="a15" /> - <option name="id" value="a15" /> - <option name="manufacturer" value="Samsung" /> - <option name="name" value="A15" /> - <option name="screenDensity" value="450" /> - <option name="screenX" value="1080" /> - <option name="screenY" value="2340" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="samsung" /> - <option name="codename" value="a35x" /> - <option name="id" value="a35x" /> - <option name="manufacturer" value="Samsung" /> - <option name="name" value="A35" /> - <option name="screenDensity" value="450" /> - <option name="screenX" value="1080" /> - <option name="screenY" value="2340" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="31" /> - <option name="brand" value="samsung" /> - <option name="codename" value="a51" /> - <option name="id" value="a51" /> - <option name="manufacturer" value="Samsung" /> - <option name="name" value="Galaxy A51" /> - <option name="screenDensity" value="420" /> - <option name="screenX" value="1080" /> - <option name="screenY" value="2400" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="google" /> - <option name="codename" value="akita" /> - <option name="id" value="akita" /> - <option name="manufacturer" value="Google" /> - <option name="name" value="Pixel 8a" /> - <option name="screenDensity" value="420" /> - <option name="screenX" value="1080" /> - <option name="screenY" value="2400" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="motorola" /> - <option name="codename" value="arcfox" /> - <option name="id" value="arcfox" /> - <option name="manufacturer" value="Motorola" /> - <option name="name" value="razr plus 2024" /> - <option name="screenDensity" value="360" /> - <option name="screenX" value="1080" /> - <option name="screenY" value="1272" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="33" /> - <option name="brand" value="motorola" /> - <option name="codename" value="austin" /> - <option name="id" value="austin" /> - <option name="manufacturer" value="Motorola" /> - <option name="name" value="moto g 5G (2022)" /> - <option name="screenDensity" value="280" /> - <option name="screenX" value="720" /> - <option name="screenY" value="1600" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="33" /> - <option name="brand" value="samsung" /> - <option name="codename" value="b0q" /> - <option name="id" value="b0q" /> - <option name="manufacturer" value="Samsung" /> - <option name="name" value="Galaxy S22 Ultra" /> - <option name="screenDensity" value="600" /> - <option name="screenX" value="1440" /> - <option name="screenY" value="3088" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="32" /> - <option name="brand" value="google" /> - <option name="codename" value="bluejay" /> - <option name="id" value="bluejay" /> - <option name="manufacturer" value="Google" /> - <option name="name" value="Pixel 6a" /> - <option name="screenDensity" value="420" /> - <option name="screenX" value="1080" /> - <option name="screenY" value="2400" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="google" /> - <option name="codename" value="caiman" /> - <option name="id" value="caiman" /> - <option name="manufacturer" value="Google" /> - <option name="name" value="Pixel 9 Pro" /> - <option name="screenDensity" value="360" /> - <option name="screenX" value="960" /> - <option name="screenY" value="2142" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="google" /> - <option name="codename" value="comet" /> - <option name="id" value="comet" /> - <option name="manufacturer" value="Google" /> - <option name="name" value="Pixel 9 Pro Fold" /> - <option name="screenDensity" value="390" /> - <option name="screenX" value="2076" /> - <option name="screenY" value="2152" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="29" /> - <option name="brand" value="samsung" /> - <option name="codename" value="crownqlteue" /> - <option name="id" value="crownqlteue" /> - <option name="manufacturer" value="Samsung" /> - <option name="name" value="Galaxy Note9" /> - <option name="screenDensity" value="420" /> - <option name="screenX" value="2220" /> - <option name="screenY" value="1080" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="samsung" /> - <option name="codename" value="dm2q" /> - <option name="id" value="dm2q" /> - <option name="manufacturer" value="Samsung" /> - <option name="name" value="S23 Plus" /> - <option name="screenDensity" value="450" /> - <option name="screenX" value="1080" /> - <option name="screenY" value="2340" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="samsung" /> - <option name="codename" value="dm3q" /> - <option name="id" value="dm3q" /> - <option name="manufacturer" value="Samsung" /> - <option name="name" value="Galaxy S23 Ultra" /> - <option name="screenDensity" value="600" /> - <option name="screenX" value="1440" /> - <option name="screenY" value="3088" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="samsung" /> - <option name="codename" value="e1q" /> - <option name="id" value="e1q" /> - <option name="manufacturer" value="Samsung" /> - <option name="name" value="Galaxy S24" /> - <option name="screenDensity" value="480" /> - <option name="screenX" value="1080" /> - <option name="screenY" value="2340" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="samsung" /> - <option name="codename" value="e3q" /> - <option name="id" value="e3q" /> - <option name="manufacturer" value="Samsung" /> - <option name="name" value="Galaxy S24 Ultra" /> - <option name="screenDensity" value="450" /> - <option name="screenX" value="1440" /> - <option name="screenY" value="3120" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="33" /> - <option name="brand" value="google" /> - <option name="codename" value="eos" /> - <option name="id" value="eos" /> - <option name="manufacturer" value="Google" /> - <option name="name" value="Eos" /> - <option name="screenDensity" value="320" /> - <option name="screenX" value="384" /> - <option name="screenY" value="384" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="33" /> - <option name="brand" value="google" /> - <option name="codename" value="felix" /> - <option name="id" value="felix" /> - <option name="manufacturer" value="Google" /> - <option name="name" value="Pixel Fold" /> - <option name="screenDensity" value="420" /> - <option name="screenX" value="2208" /> - <option name="screenY" value="1840" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="google" /> - <option name="codename" value="felix" /> - <option name="id" value="felix" /> - <option name="manufacturer" value="Google" /> - <option name="name" value="Pixel Fold" /> - <option name="screenDensity" value="420" /> - <option name="screenX" value="2208" /> - <option name="screenY" value="1840" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="33" /> - <option name="brand" value="google" /> - <option name="codename" value="felix_camera" /> - <option name="id" value="felix_camera" /> - <option name="manufacturer" value="Google" /> - <option name="name" value="Pixel Fold (Camera-enabled)" /> - <option name="screenDensity" value="420" /> - <option name="screenX" value="2208" /> - <option name="screenY" value="1840" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="motorola" /> - <option name="codename" value="fogona" /> - <option name="id" value="fogona" /> - <option name="manufacturer" value="Motorola" /> - <option name="name" value="moto g play - 2024" /> - <option name="screenDensity" value="280" /> - <option name="screenX" value="720" /> - <option name="screenY" value="1600" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="samsung" /> - <option name="codename" value="g0q" /> - <option name="id" value="g0q" /> - <option name="manufacturer" value="Samsung" /> - <option name="name" value="SM-S906U1" /> - <option name="screenDensity" value="450" /> - <option name="screenX" value="1080" /> - <option name="screenY" value="2340" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="samsung" /> - <option name="codename" value="gta9pwifi" /> - <option name="id" value="gta9pwifi" /> - <option name="manufacturer" value="Samsung" /> - <option name="name" value="SM-X210" /> - <option name="screenDensity" value="240" /> - <option name="screenX" value="1200" /> - <option name="screenY" value="1920" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="samsung" /> - <option name="codename" value="gts7xllite" /> - <option name="id" value="gts7xllite" /> - <option name="manufacturer" value="Samsung" /> - <option name="name" value="SM-T738U" /> - <option name="screenDensity" value="340" /> - <option name="screenX" value="1600" /> - <option name="screenY" value="2560" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="33" /> - <option name="brand" value="samsung" /> - <option name="codename" value="gts8uwifi" /> - <option name="id" value="gts8uwifi" /> - <option name="manufacturer" value="Samsung" /> - <option name="name" value="Galaxy Tab S8 Ultra" /> - <option name="screenDensity" value="320" /> - <option name="screenX" value="1848" /> - <option name="screenY" value="2960" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="samsung" /> - <option name="codename" value="gts8wifi" /> - <option name="id" value="gts8wifi" /> - <option name="manufacturer" value="Samsung" /> - <option name="name" value="Galaxy Tab S8" /> - <option name="screenDensity" value="274" /> - <option name="screenX" value="1600" /> - <option name="screenY" value="2560" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="samsung" /> - <option name="codename" value="gts9fe" /> - <option name="id" value="gts9fe" /> - <option name="manufacturer" value="Samsung" /> - <option name="name" value="Galaxy Tab S9 FE 5G" /> - <option name="screenDensity" value="280" /> - <option name="screenX" value="1440" /> - <option name="screenY" value="2304" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="google" /> - <option name="codename" value="husky" /> - <option name="id" value="husky" /> - <option name="manufacturer" value="Google" /> - <option name="name" value="Pixel 8 Pro" /> - <option name="screenDensity" value="390" /> - <option name="screenX" value="1008" /> - <option name="screenY" value="2244" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="30" /> - <option name="brand" value="motorola" /> - <option name="codename" value="java" /> - <option name="id" value="java" /> - <option name="manufacturer" value="Motorola" /> - <option name="name" value="G20" /> - <option name="screenDensity" value="280" /> - <option name="screenX" value="720" /> - <option name="screenY" value="1600" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="google" /> - <option name="codename" value="komodo" /> - <option name="id" value="komodo" /> - <option name="manufacturer" value="Google" /> - <option name="name" value="Pixel 9 Pro XL" /> - <option name="screenDensity" value="360" /> - <option name="screenX" value="1008" /> - <option name="screenY" value="2244" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="33" /> - <option name="brand" value="google" /> - <option name="codename" value="lynx" /> - <option name="id" value="lynx" /> - <option name="manufacturer" value="Google" /> - <option name="name" value="Pixel 7a" /> - <option name="screenDensity" value="420" /> - <option name="screenX" value="1080" /> - <option name="screenY" value="2400" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="33" /> - <option name="brand" value="motorola" /> - <option name="codename" value="maui" /> - <option name="id" value="maui" /> - <option name="manufacturer" value="Motorola" /> - <option name="name" value="moto g play - 2023" /> - <option name="screenDensity" value="280" /> - <option name="screenX" value="720" /> - <option name="screenY" value="1600" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="samsung" /> - <option name="codename" value="o1q" /> - <option name="id" value="o1q" /> - <option name="manufacturer" value="Samsung" /> - <option name="name" value="Galaxy S21" /> - <option name="screenDensity" value="421" /> - <option name="screenX" value="1080" /> - <option name="screenY" value="2400" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="31" /> - <option name="brand" value="google" /> - <option name="codename" value="oriole" /> - <option name="id" value="oriole" /> - <option name="manufacturer" value="Google" /> - <option name="name" value="Pixel 6" /> - <option name="screenDensity" value="420" /> - <option name="screenX" value="1080" /> - <option name="screenY" value="2400" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="33" /> - <option name="brand" value="google" /> - <option name="codename" value="panther" /> - <option name="id" value="panther" /> - <option name="manufacturer" value="Google" /> - <option name="name" value="Pixel 7" /> - <option name="screenDensity" value="420" /> - <option name="screenX" value="1080" /> - <option name="screenY" value="2400" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="samsung" /> - <option name="codename" value="q5q" /> - <option name="id" value="q5q" /> - <option name="manufacturer" value="Samsung" /> - <option name="name" value="Galaxy Z Fold5" /> - <option name="screenDensity" value="420" /> - <option name="screenX" value="1812" /> - <option name="screenY" value="2176" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="samsung" /> - <option name="codename" value="q6q" /> - <option name="id" value="q6q" /> - <option name="manufacturer" value="Samsung" /> - <option name="name" value="Galaxy Z Fold6" /> - <option name="screenDensity" value="420" /> - <option name="screenX" value="1856" /> - <option name="screenY" value="2160" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="30" /> - <option name="brand" value="google" /> - <option name="codename" value="r11" /> - <option name="id" value="r11" /> - <option name="manufacturer" value="Google" /> - <option name="name" value="Pixel Watch" /> - <option name="screenDensity" value="320" /> - <option name="screenX" value="384" /> - <option name="screenY" value="384" /> - <option name="type" value="WEAR_OS" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="samsung" /> - <option name="codename" value="r11q" /> - <option name="id" value="r11q" /> - <option name="manufacturer" value="Samsung" /> - <option name="name" value="SM-S711U" /> - <option name="screenDensity" value="450" /> - <option name="screenX" value="1080" /> - <option name="screenY" value="2340" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="30" /> - <option name="brand" value="google" /> - <option name="codename" value="redfin" /> - <option name="id" value="redfin" /> - <option name="manufacturer" value="Google" /> - <option name="name" value="Pixel 5" /> - <option name="screenDensity" value="440" /> - <option name="screenX" value="1080" /> - <option name="screenY" value="2340" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="google" /> - <option name="codename" value="shiba" /> - <option name="id" value="shiba" /> - <option name="manufacturer" value="Google" /> - <option name="name" value="Pixel 8" /> - <option name="screenDensity" value="420" /> - <option name="screenX" value="1080" /> - <option name="screenY" value="2400" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="samsung" /> - <option name="codename" value="t2q" /> - <option name="id" value="t2q" /> - <option name="manufacturer" value="Samsung" /> - <option name="name" value="Galaxy S21 Plus" /> - <option name="screenDensity" value="394" /> - <option name="screenX" value="1080" /> - <option name="screenY" value="2400" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="33" /> - <option name="brand" value="google" /> - <option name="codename" value="tangorpro" /> - <option name="id" value="tangorpro" /> - <option name="manufacturer" value="Google" /> - <option name="name" value="Pixel Tablet" /> - <option name="screenDensity" value="320" /> - <option name="screenX" value="1600" /> - <option name="screenY" value="2560" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="34" /> - <option name="brand" value="google" /> - <option name="codename" value="tokay" /> - <option name="id" value="tokay" /> - <option name="manufacturer" value="Google" /> - <option name="name" value="Pixel 9" /> - <option name="screenDensity" value="420" /> - <option name="screenX" value="1080" /> - <option name="screenY" value="2424" /> - </PersistentDeviceSelectionData> - <PersistentDeviceSelectionData> - <option name="api" value="35" /> - <option name="brand" value="google" /> - <option name="codename" value="tokay" /> - <option name="id" value="tokay" /> - <option name="manufacturer" value="Google" /> - <option name="name" value="Pixel 9" /> - <option name="screenDensity" value="420" /> - <option name="screenX" value="1080" /> - <option name="screenY" value="2424" /> - </PersistentDeviceSelectionData> - </list> - </option> - </component> -</project> \ No newline at end of file diff --git a/Lab4/EXO1/.idea/vcs.xml b/Lab4/EXO1/.idea/vcs.xml deleted file mode 100644 index b2bdec2d71b6a5ce4ae49efc37516809c50e4d5e..0000000000000000000000000000000000000000 --- a/Lab4/EXO1/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project version="4"> - <component name="VcsDirectoryMappings"> - <mapping directory="$PROJECT_DIR$/../.." vcs="Git" /> - </component> -</project> \ No newline at end of file diff --git a/Lab4/EXO1/app/src/main/java/com/example/deezersearch/DeezerApiService.kt b/Lab4/EXO1/app/src/main/java/com/example/deezersearch/DeezerApiService.kt deleted file mode 100644 index c8584b68ce3ca3229db29e62598301959a08140a..0000000000000000000000000000000000000000 --- a/Lab4/EXO1/app/src/main/java/com/example/deezersearch/DeezerApiService.kt +++ /dev/null @@ -1,10 +0,0 @@ -package com.example.deezersearch - -import retrofit2.Call -import retrofit2.http.GET -import retrofit2.http.Query - -interface DeezerApiService { - @GET("search") - fun searchTracks(@Query("q") query: String): Call<DeezerSearchResponse> -} diff --git a/Lab4/EXO1/app/src/main/java/com/example/deezersearch/DeezerSearchResponse.kt b/Lab4/EXO1/app/src/main/java/com/example/deezersearch/DeezerSearchResponse.kt deleted file mode 100644 index b33f935bb101df4334c4194d998633d88f56d45a..0000000000000000000000000000000000000000 --- a/Lab4/EXO1/app/src/main/java/com/example/deezersearch/DeezerSearchResponse.kt +++ /dev/null @@ -1,25 +0,0 @@ -package com.example.deezersearch - -data class DeezerSearchResponse( - val data : List<Track> -) -data class Track( - val id:String, - val title: String, - val duration:String, - val artist:Artist, - val album: Album -) - -data class Album( - val id:String, - val title:String, - val cover:String, - val tracks:List<Track> -) - -data class Artist( - val id:String, - val name:String, - val picture:String -) diff --git a/Lab4/EXO1/app/src/main/java/com/example/deezersearch/DeezerViewModel.kt b/Lab4/EXO1/app/src/main/java/com/example/deezersearch/DeezerViewModel.kt deleted file mode 100644 index f762e68ec78e5e3af6a5bd2762e9a41cd87c2f8b..0000000000000000000000000000000000000000 --- a/Lab4/EXO1/app/src/main/java/com/example/deezersearch/DeezerViewModel.kt +++ /dev/null @@ -1,51 +0,0 @@ -package com.example.deezersearch - -import androidx.lifecycle.LiveData -import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.ViewModel -import retrofit2.Call -import retrofit2.Callback -import retrofit2.Response -import retrofit2.Retrofit -import retrofit2.converter.gson.GsonConverterFactory - -class DeezerViewModel : ViewModel() { - // LiveData pour les résultats des morceaux - private val _tracks = MutableLiveData<List<Track>>() - val tracks: LiveData<List<Track>> get() = _tracks - - private val api: DeezerApiService - - init { - // Initialisation de Retrofit avec le converter Gson - val retrofit = Retrofit.Builder() - .baseUrl("https://api.deezer.com/") - .addConverterFactory(GsonConverterFactory.create()) - .build() - - // Création de l'implémentation de l'interface DeezerApiService - api = retrofit.create(DeezerApiService::class.java) - } - - // Fonction de recherche - fun search(query: String) { - api.searchTracks(query).enqueue(object : Callback<DeezerSearchResponse> { - override fun onResponse( - call: Call<DeezerSearchResponse>, - response: Response<DeezerSearchResponse> - ) { - if (response.isSuccessful) { - // Mise à jour des LiveData avec les morceaux reçus - _tracks.value = response.body()?.data ?: emptyList() - } else { - _tracks.value = emptyList() - } - } - - override fun onFailure(call: Call<DeezerSearchResponse>, t: Throwable) { - // En cas d'erreur réseau - _tracks.value = emptyList() - } - }) - } -} diff --git a/Lab4/EXO1/app/src/main/java/com/example/deezersearch/TrackAdapter.kt b/Lab4/EXO1/app/src/main/java/com/example/deezersearch/TrackAdapter.kt deleted file mode 100644 index 26d482bb496fee77f44f3d45ab425c3b1c79dc0c..0000000000000000000000000000000000000000 --- a/Lab4/EXO1/app/src/main/java/com/example/deezersearch/TrackAdapter.kt +++ /dev/null @@ -1,33 +0,0 @@ -package com.example.deezersearch - -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.TextView -import androidx.recyclerview.widget.RecyclerView - -class TrackAdapter(private var trackList: List<Track>) : - RecyclerView.Adapter<TrackAdapter.TrackViewHolder>() { - - inner class TrackViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - val titleText: TextView = itemView.findViewById(android.R.id.text1) - } - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TrackViewHolder { - val view = LayoutInflater.from(parent.context) - .inflate(android.R.layout.simple_list_item_1, parent, false) - return TrackViewHolder(view) - } - - override fun onBindViewHolder(holder: TrackViewHolder, position: Int) { - val track = trackList[position] - holder.titleText.text = "${track.title} - ${track.artist.name}" - } - - override fun getItemCount(): Int = trackList.size - - fun updateTracks(newTracks: List<Track>) { - trackList = newTracks - notifyDataSetChanged() - } -} diff --git a/Lab4/EXO1/app/src/main/res/values/strings.xml b/Lab4/EXO1/app/src/main/res/values/strings.xml deleted file mode 100644 index e982761a31533fd8ab13f2e4b83bc0e98ed82695..0000000000000000000000000000000000000000 --- a/Lab4/EXO1/app/src/main/res/values/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ -<resources> - <string name="app_name">Deezersearch</string> -</resources> \ No newline at end of file diff --git a/Lab4/EXO1/app/.gitignore b/Lab4/app/.gitignore similarity index 100% rename from Lab4/EXO1/app/.gitignore rename to Lab4/app/.gitignore diff --git a/Lab4/EXO1/app/build.gradle.kts b/Lab4/app/build.gradle.kts similarity index 80% rename from Lab4/EXO1/app/build.gradle.kts rename to Lab4/app/build.gradle.kts index 75cf4c8959005886fb17d4792088eaeb08a07138..dd6489a7926f4d406bc2478882361de3e61c516a 100644 --- a/Lab4/EXO1/app/build.gradle.kts +++ b/Lab4/app/build.gradle.kts @@ -1,6 +1,8 @@ plugins { alias(libs.plugins.android.application) alias(libs.plugins.jetbrains.kotlin.android) + id("kotlin-kapt") + } android { @@ -36,6 +38,7 @@ android { } dependencies { + implementation(libs.androidx.core.ktx) implementation(libs.androidx.appcompat) implementation(libs.material) @@ -44,12 +47,12 @@ dependencies { testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) - - // Retrofit & Gson converter - implementation("com.squareup.retrofit2:retrofit:2.9.0") - implementation("com.squareup.retrofit2:converter-gson:2.9.0") - - // ViewModel & LiveData + implementation("com.squareup.retrofit2:retrofit:2.11.0") + implementation("com.squareup.retrofit2:converter-gson:2.11.0") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3") implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1") implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.6.1") -} + implementation("com.github.bumptech.glide:glide:4.16.0") + kapt("com.github.bumptech.glide:compiler:4.16.0") + +} \ No newline at end of file diff --git a/Lab4/EXO1/app/proguard-rules.pro b/Lab4/app/proguard-rules.pro similarity index 100% rename from Lab4/EXO1/app/proguard-rules.pro rename to Lab4/app/proguard-rules.pro diff --git a/Lab4/EXO1/app/src/androidTest/java/com/example/deezersearch/ExampleInstrumentedTest.kt b/Lab4/app/src/androidTest/java/com/example/deezersearch/ExampleInstrumentedTest.kt similarity index 100% rename from Lab4/EXO1/app/src/androidTest/java/com/example/deezersearch/ExampleInstrumentedTest.kt rename to Lab4/app/src/androidTest/java/com/example/deezersearch/ExampleInstrumentedTest.kt diff --git a/Lab4/EXO1/app/src/main/AndroidManifest.xml b/Lab4/app/src/main/AndroidManifest.xml similarity index 93% rename from Lab4/EXO1/app/src/main/AndroidManifest.xml rename to Lab4/app/src/main/AndroidManifest.xml index ab75ab544f3d74a5935c3fab5686ed38d6829436..7157ba3ff1755a4b3f3d6f126490e12438372719 100644 --- a/Lab4/EXO1/app/src/main/AndroidManifest.xml +++ b/Lab4/app/src/main/AndroidManifest.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"> + <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" diff --git a/Lab4/EXO1/app/src/main/java/com/example/deezersearch/MainActivity.kt b/Lab4/app/src/main/java/com/example/deezersearch/MainActivity.kt similarity index 51% rename from Lab4/EXO1/app/src/main/java/com/example/deezersearch/MainActivity.kt rename to Lab4/app/src/main/java/com/example/deezersearch/MainActivity.kt index 06fea375cca02336377f0cf5c79a28d9d32c7138..32135e2be0211c33bf5039f94af9102b3e97e987 100644 --- a/Lab4/EXO1/app/src/main/java/com/example/deezersearch/MainActivity.kt +++ b/Lab4/app/src/main/java/com/example/deezersearch/MainActivity.kt @@ -5,12 +5,15 @@ import android.widget.Button import android.widget.EditText import androidx.activity.ComponentActivity import androidx.activity.viewModels -import androidx.recyclerview.widget.LinearLayoutManager +import androidx.lifecycle.Observer +import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView +import com.example.deezersearch.adapter.TrackAdapter +import com.example.deezersearch.viewmodel.TracksViewModel class MainActivity : ComponentActivity() { - private val viewModel: DeezerViewModel by viewModels() - private lateinit var adapter: TrackAdapter + + private val viewModel: TracksViewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -20,17 +23,19 @@ class MainActivity : ComponentActivity() { val searchButton: Button = findViewById(R.id.search_button) val recyclerView: RecyclerView = findViewById(R.id.recycler_view) - adapter = TrackAdapter(emptyList()) - recyclerView.layoutManager = LinearLayoutManager(this) - recyclerView.adapter = adapter + recyclerView.layoutManager = GridLayoutManager(this, 2) - searchButton.setOnClickListener { - val query = searchInput.text.toString() - viewModel.search(query) + val observer = Observer<com.example.deezersearch.model.DeezerSearchResponse> { response -> + recyclerView.adapter = TrackAdapter(response.data) } - viewModel.tracks.observe(this) { tracks -> - adapter.updateTracks(tracks) + viewModel.data.observe(this, observer) + + searchButton.setOnClickListener { + val query = searchInput.text.toString().trim() + if (query.isNotEmpty()) { + viewModel.searchTracks(query) + } } } } diff --git a/Lab4/app/src/main/java/com/example/deezersearch/adapter/TrackAdapter.kt b/Lab4/app/src/main/java/com/example/deezersearch/adapter/TrackAdapter.kt new file mode 100644 index 0000000000000000000000000000000000000000..448fb86ef9f9dfdd332445ef14a9c6ac0f954067 --- /dev/null +++ b/Lab4/app/src/main/java/com/example/deezersearch/adapter/TrackAdapter.kt @@ -0,0 +1,41 @@ +package com.example.deezersearch.adapter + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.example.deezersearch.R +import com.example.deezersearch.model.Track + +class TrackAdapter(private val tracks: List<Track>) : + RecyclerView.Adapter<TrackAdapter.TrackViewHolder>() { + + inner class TrackViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val albumTitleTextView: TextView = itemView.findViewById(R.id.albumTitleTextView) + val songTitleTextView: TextView = itemView.findViewById(R.id.songTitleTextView) + val artistNameTextView: TextView = itemView.findViewById(R.id.artistNameTextView) + val coverImageView: ImageView = itemView.findViewById(R.id.coverImageView) + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TrackViewHolder { + val view = LayoutInflater.from(parent.context).inflate(R.layout.track_item, parent, false) + return TrackViewHolder(view) + } + + override fun onBindViewHolder(holder: TrackViewHolder, position: Int) { + val track = tracks[position] + holder.albumTitleTextView.text = track.album.title + holder.songTitleTextView.text = track.title + holder.artistNameTextView.text = track.artist.name + + Glide.with(holder.itemView.context) + .load(track.album.cover) + .placeholder(R.drawable.placeholder_image) + .into(holder.coverImageView) + } + + override fun getItemCount(): Int = tracks.size +} diff --git a/Lab4/app/src/main/java/com/example/deezersearch/model/DeezerSearchResponse.kt b/Lab4/app/src/main/java/com/example/deezersearch/model/DeezerSearchResponse.kt new file mode 100644 index 0000000000000000000000000000000000000000..6a650e111c4fc2091774a8d77bb5333da13dbbc8 --- /dev/null +++ b/Lab4/app/src/main/java/com/example/deezersearch/model/DeezerSearchResponse.kt @@ -0,0 +1,25 @@ +package com.example.deezersearch.model + +data class DeezerSearchResponse( + val data: List<Track> +) + +data class Track( + val id: String, + val title: String, + val duration: String, + val artist: Artist, + val album: Album +) + +data class Artist( + val id: String, + val name: String, + val picture: String +) + +data class Album( + val id: String, + val title: String, + val cover: String +) diff --git a/Lab4/app/src/main/java/com/example/deezersearch/network/DeezerApiInterface.kt b/Lab4/app/src/main/java/com/example/deezersearch/network/DeezerApiInterface.kt new file mode 100644 index 0000000000000000000000000000000000000000..31c1416daed46f8c0a8bd31b5fbc058215d91096 --- /dev/null +++ b/Lab4/app/src/main/java/com/example/deezersearch/network/DeezerApiInterface.kt @@ -0,0 +1,10 @@ +package com.example.deezersearch.network + +import com.example.deezersearch.model.DeezerSearchResponse +import retrofit2.http.GET +import retrofit2.http.Query + +interface DeezerApiInterface { + @GET("search") + suspend fun searchTracks(@Query("q") query: String): DeezerSearchResponse +} diff --git a/Lab4/app/src/main/java/com/example/deezersearch/network/RetrofitInstance.kt b/Lab4/app/src/main/java/com/example/deezersearch/network/RetrofitInstance.kt new file mode 100644 index 0000000000000000000000000000000000000000..9a1bfa94304a229242fbe1d6a9754bf79cc50b25 --- /dev/null +++ b/Lab4/app/src/main/java/com/example/deezersearch/network/RetrofitInstance.kt @@ -0,0 +1,15 @@ +package com.example.deezersearch.network + +import retrofit2.Retrofit +import retrofit2.converter.gson.GsonConverterFactory + +object RetrofitInstance { + private const val BASE_URL = "https://api.deezer.com/" + + fun getInstance(): Retrofit { + return Retrofit.Builder() + .baseUrl(BASE_URL) + .addConverterFactory(GsonConverterFactory.create()) + .build() + } +} diff --git a/Lab4/app/src/main/java/com/example/deezersearch/viewmodel/TracksViewModel.kt b/Lab4/app/src/main/java/com/example/deezersearch/viewmodel/TracksViewModel.kt new file mode 100644 index 0000000000000000000000000000000000000000..5c00e306b097b0e42ede364b8902257c8a67e450 --- /dev/null +++ b/Lab4/app/src/main/java/com/example/deezersearch/viewmodel/TracksViewModel.kt @@ -0,0 +1,25 @@ +package com.example.deezersearch.viewmodel + +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import com.example.deezersearch.model.DeezerSearchResponse +import com.example.deezersearch.network.DeezerApiInterface +import com.example.deezersearch.network.RetrofitInstance +import kotlinx.coroutines.launch + +class TracksViewModel : ViewModel() { + val data = MutableLiveData<DeezerSearchResponse>() + private val api = RetrofitInstance.getInstance().create(DeezerApiInterface::class.java) + + fun searchTracks(query: String) { + viewModelScope.launch { + try { + val response = api.searchTracks(query) + data.value = response + } catch (e: Exception) { + data.value = DeezerSearchResponse(emptyList()) + } + } + } +} diff --git a/Lab4/EXO1/app/src/main/res/drawable/ic_launcher_background.xml b/Lab4/app/src/main/res/drawable/ic_launcher_background.xml similarity index 100% rename from Lab4/EXO1/app/src/main/res/drawable/ic_launcher_background.xml rename to Lab4/app/src/main/res/drawable/ic_launcher_background.xml diff --git a/Lab4/EXO1/app/src/main/res/drawable/ic_launcher_foreground.xml b/Lab4/app/src/main/res/drawable/ic_launcher_foreground.xml similarity index 100% rename from Lab4/EXO1/app/src/main/res/drawable/ic_launcher_foreground.xml rename to Lab4/app/src/main/res/drawable/ic_launcher_foreground.xml diff --git a/Lab4/img/track_item.png b/Lab4/app/src/main/res/drawable/placeholder_image.png similarity index 100% rename from Lab4/img/track_item.png rename to Lab4/app/src/main/res/drawable/placeholder_image.png diff --git a/Lab4/EXO1/app/src/main/res/layout/activity_main.xml b/Lab4/app/src/main/res/layout/activity_main.xml similarity index 80% rename from Lab4/EXO1/app/src/main/res/layout/activity_main.xml rename to Lab4/app/src/main/res/layout/activity_main.xml index 1d44f971bd59fed7f1b19f91a4857ddf35aba624..85e40685ba7215d0043c92dcd7c0d6f301cd7f23 100644 --- a/Lab4/EXO1/app/src/main/res/layout/activity_main.xml +++ b/Lab4/app/src/main/res/layout/activity_main.xml @@ -4,20 +4,18 @@ android:layout_height="match_parent" android:orientation="vertical" android:padding="16dp" - android:gravity="center_horizontal" - android:background="#FFF5FAF8"> + android:gravity="center_horizontal"> <TextView - android:text="Lab4: request Deezer Api" + android:text="Lab 4: Deezer API Search" android:textSize="20sp" - android:textStyle="bold" android:layout_marginBottom="16dp" android:layout_width="wrap_content" - android:layout_height="wrap_content" /> + android:layout_height="wrap_content"/> <EditText android:id="@+id/search_input" - android:hint="Enter your search" + android:hint="Enter artist name" android:layout_width="match_parent" android:layout_height="wrap_content" /> diff --git a/Lab4/app/src/main/res/layout/track_item.xml b/Lab4/app/src/main/res/layout/track_item.xml new file mode 100644 index 0000000000000000000000000000000000000000..9b5e1b59c72e05d98c34ba10aeaf03e056772923 --- /dev/null +++ b/Lab4/app/src/main/res/layout/track_item.xml @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_margin="8dp" + android:elevation="4dp" + android:foreground="?attr/selectableItemBackground"> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:padding="8dp"> + + <ImageView + android:id="@+id/coverImageView" + android:layout_width="100dp" + android:layout_height="100dp" + android:scaleType="centerCrop" + android:contentDescription="@string/cover_image" /> + + <LinearLayout + android:layout_width="0dp" + android:layout_height="match_parent" + android:layout_weight="1" + android:orientation="vertical" + android:paddingStart="8dp"> + + <TextView + android:id="@+id/albumTitleTextView" + android:textStyle="bold" + android:textSize="16sp" + android:textColor="#000000" + android:layout_width="wrap_content" + android:layout_height="wrap_content" /> + + <TextView + android:id="@+id/songTitleTextView" + android:textSize="14sp" + android:textColor="#333333" + android:layout_width="wrap_content" + android:layout_height="wrap_content" /> + + <TextView + android:id="@+id/artistNameTextView" + android:textSize="14sp" + android:textStyle="italic" + android:textColor="#666666" + android:layout_width="wrap_content" + android:layout_height="wrap_content" /> + </LinearLayout> + </LinearLayout> +</androidx.cardview.widget.CardView> diff --git a/Lab4/EXO1/app/src/main/res/mipmap-anydpi/ic_launcher.xml b/Lab4/app/src/main/res/mipmap-anydpi/ic_launcher.xml similarity index 100% rename from Lab4/EXO1/app/src/main/res/mipmap-anydpi/ic_launcher.xml rename to Lab4/app/src/main/res/mipmap-anydpi/ic_launcher.xml diff --git a/Lab4/EXO1/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml b/Lab4/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml similarity index 100% rename from Lab4/EXO1/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml rename to Lab4/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml diff --git a/Lab4/EXO1/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/Lab4/app/src/main/res/mipmap-hdpi/ic_launcher.webp similarity index 100% rename from Lab4/EXO1/app/src/main/res/mipmap-hdpi/ic_launcher.webp rename to Lab4/app/src/main/res/mipmap-hdpi/ic_launcher.webp diff --git a/Lab4/EXO1/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/Lab4/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp similarity index 100% rename from Lab4/EXO1/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp rename to Lab4/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp diff --git a/Lab4/EXO1/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/Lab4/app/src/main/res/mipmap-mdpi/ic_launcher.webp similarity index 100% rename from Lab4/EXO1/app/src/main/res/mipmap-mdpi/ic_launcher.webp rename to Lab4/app/src/main/res/mipmap-mdpi/ic_launcher.webp diff --git a/Lab4/EXO1/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/Lab4/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp similarity index 100% rename from Lab4/EXO1/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp rename to Lab4/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp diff --git a/Lab4/EXO1/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/Lab4/app/src/main/res/mipmap-xhdpi/ic_launcher.webp similarity index 100% rename from Lab4/EXO1/app/src/main/res/mipmap-xhdpi/ic_launcher.webp rename to Lab4/app/src/main/res/mipmap-xhdpi/ic_launcher.webp diff --git a/Lab4/EXO1/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/Lab4/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp similarity index 100% rename from Lab4/EXO1/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp rename to Lab4/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp diff --git a/Lab4/EXO1/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/Lab4/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp similarity index 100% rename from Lab4/EXO1/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp rename to Lab4/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp diff --git a/Lab4/EXO1/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/Lab4/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp similarity index 100% rename from Lab4/EXO1/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp rename to Lab4/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp diff --git a/Lab4/EXO1/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/Lab4/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp similarity index 100% rename from Lab4/EXO1/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp rename to Lab4/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp diff --git a/Lab4/EXO1/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/Lab4/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp similarity index 100% rename from Lab4/EXO1/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp rename to Lab4/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp diff --git a/Lab4/EXO1/app/src/main/res/values-night/themes.xml b/Lab4/app/src/main/res/values-night/themes.xml similarity index 100% rename from Lab4/EXO1/app/src/main/res/values-night/themes.xml rename to Lab4/app/src/main/res/values-night/themes.xml diff --git a/Lab4/EXO1/app/src/main/res/values/colors.xml b/Lab4/app/src/main/res/values/colors.xml similarity index 100% rename from Lab4/EXO1/app/src/main/res/values/colors.xml rename to Lab4/app/src/main/res/values/colors.xml diff --git a/Lab4/app/src/main/res/values/strings.xml b/Lab4/app/src/main/res/values/strings.xml new file mode 100644 index 0000000000000000000000000000000000000000..703ee789a57ef51d935090083fe3244c80505509 --- /dev/null +++ b/Lab4/app/src/main/res/values/strings.xml @@ -0,0 +1,6 @@ +<resources> + <string name="app_name">DeezerSearch</string> + <string name="cover_image">Album cover image</string> + <string name="search">Search</string> + <string name="hint_search">Enter your search</string> +</resources> diff --git a/Lab4/EXO1/app/src/main/res/values/themes.xml b/Lab4/app/src/main/res/values/themes.xml similarity index 100% rename from Lab4/EXO1/app/src/main/res/values/themes.xml rename to Lab4/app/src/main/res/values/themes.xml diff --git a/Lab4/EXO1/app/src/main/res/xml/backup_rules.xml b/Lab4/app/src/main/res/xml/backup_rules.xml similarity index 100% rename from Lab4/EXO1/app/src/main/res/xml/backup_rules.xml rename to Lab4/app/src/main/res/xml/backup_rules.xml diff --git a/Lab4/EXO1/app/src/main/res/xml/data_extraction_rules.xml b/Lab4/app/src/main/res/xml/data_extraction_rules.xml similarity index 100% rename from Lab4/EXO1/app/src/main/res/xml/data_extraction_rules.xml rename to Lab4/app/src/main/res/xml/data_extraction_rules.xml diff --git a/Lab4/EXO1/app/src/test/java/com/example/deezersearch/ExampleUnitTest.kt b/Lab4/app/src/test/java/com/example/deezersearch/ExampleUnitTest.kt similarity index 100% rename from Lab4/EXO1/app/src/test/java/com/example/deezersearch/ExampleUnitTest.kt rename to Lab4/app/src/test/java/com/example/deezersearch/ExampleUnitTest.kt diff --git a/Lab4/EXO1/build.gradle.kts b/Lab4/build.gradle.kts similarity index 100% rename from Lab4/EXO1/build.gradle.kts rename to Lab4/build.gradle.kts diff --git a/Lab4/EXO1/gradle.properties b/Lab4/gradle.properties similarity index 100% rename from Lab4/EXO1/gradle.properties rename to Lab4/gradle.properties diff --git a/Lab4/EXO1/gradle/libs.versions.toml b/Lab4/gradle/libs.versions.toml similarity index 100% rename from Lab4/EXO1/gradle/libs.versions.toml rename to Lab4/gradle/libs.versions.toml diff --git a/Lab4/EXO1/gradle/wrapper/gradle-wrapper.jar b/Lab4/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from Lab4/EXO1/gradle/wrapper/gradle-wrapper.jar rename to Lab4/gradle/wrapper/gradle-wrapper.jar diff --git a/Lab4/EXO1/gradle/wrapper/gradle-wrapper.properties b/Lab4/gradle/wrapper/gradle-wrapper.properties similarity index 86% rename from Lab4/EXO1/gradle/wrapper/gradle-wrapper.properties rename to Lab4/gradle/wrapper/gradle-wrapper.properties index 4ea2bb433b8d24709fa7c60b04631dcd846bc698..2d07dea848340fc9dbd40669d02c5257c4e7c7a0 100644 --- a/Lab4/EXO1/gradle/wrapper/gradle-wrapper.properties +++ b/Lab4/gradle/wrapper/gradle-wrapper.properties @@ -1,4 +1,4 @@ -#Wed Apr 02 10:06:33 CEST 2025 +#Wed Apr 02 10:56:24 CEST 2025 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip diff --git a/Lab4/EXO1/gradlew b/Lab4/gradlew similarity index 100% rename from Lab4/EXO1/gradlew rename to Lab4/gradlew diff --git a/Lab4/EXO1/gradlew.bat b/Lab4/gradlew.bat similarity index 100% rename from Lab4/EXO1/gradlew.bat rename to Lab4/gradlew.bat diff --git a/Lab4/img/placeholder_image.png b/Lab4/img/placeholder_image.png new file mode 100644 index 0000000000000000000000000000000000000000..cdc0de0f7d37d47a1ac4722913b5a51dee7629ec Binary files /dev/null and b/Lab4/img/placeholder_image.png differ diff --git a/Lab4/EXO1/settings.gradle.kts b/Lab4/settings.gradle.kts similarity index 100% rename from Lab4/EXO1/settings.gradle.kts rename to Lab4/settings.gradle.kts