aboutsummaryrefslogtreecommitdiff
path: root/Client/BrzoDoLokacije/app
diff options
context:
space:
mode:
authorTamara Jerinic <tamara.jerinic@gmail.com>2022-11-01 13:08:01 +0000
committerTamara Jerinic <tamara.jerinic@gmail.com>2022-11-01 13:08:01 +0000
commit9376e25847ad481618f9d3e448f9a06e0809e8ac (patch)
treeebf8781816173f39b9ada8528e2eb55c784f267f /Client/BrzoDoLokacije/app
parent41eb14e56a1f0e59347d5d37cb39406ec1ee810a (diff)
parent55cdd5a31e9da8c50d1971861dca75fadfb63dc4 (diff)
Merge branch 'develop' into 'master'
Merge dev->master See merge request BrzoDoLokacije2022/odyssey/brzodolokacije!1
Diffstat (limited to 'Client/BrzoDoLokacije/app')
-rw-r--r--Client/BrzoDoLokacije/app/.gitignore1
-rw-r--r--Client/BrzoDoLokacije/app/build.gradle55
-rw-r--r--Client/BrzoDoLokacije/app/proguard-rules.pro21
-rw-r--r--Client/BrzoDoLokacije/app/src/androidTest/java/com/example/brzodolokacije/ExampleInstrumentedTest.kt24
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/ic_launcher-playstore.pngbin0 -> 130128 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-anydpi/ic_nav_addpost.xml11
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-anydpi/ic_nav_browse.xml11
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-anydpi/ic_nav_home.xml11
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-anydpi/ic_nav_profile.xml11
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-hdpi/ic_nav_addpost.pngbin0 -> 538 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-hdpi/ic_nav_browse.pngbin0 -> 552 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-hdpi/ic_nav_home.pngbin0 -> 265 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-hdpi/ic_nav_profile.pngbin0 -> 312 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-mdpi/ic_nav_addpost.pngbin0 -> 306 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-mdpi/ic_nav_browse.pngbin0 -> 350 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-mdpi/ic_nav_home.pngbin0 -> 239 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-mdpi/ic_nav_profile.pngbin0 -> 234 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/b1.jpgbin0 -> 8227096 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/ic_nav_addpost.pngbin0 -> 725 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/ic_nav_browse.pngbin0 -> 774 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/ic_nav_home.pngbin0 -> 402 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/ic_nav_profile.pngbin0 -> 385 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-xxhdpi/ic_nav_addpost.pngbin0 -> 1142 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-xxhdpi/ic_nav_browse.pngbin0 -> 1239 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-xxhdpi/ic_nav_home.pngbin0 -> 617 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-xxhdpi/ic_nav_profile.pngbin0 -> 559 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml5
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml5
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/mipmap-hdpi/ic_launcher.pngbin0 -> 5480 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/mipmap-hdpi/ic_launcher_background.pngbin0 -> 14755 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/mipmap-hdpi/ic_launcher_foreground.pngbin0 -> 9031 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/mipmap-hdpi/ic_launcher_round.pngbin0 -> 7975 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/mipmap-mdpi/ic_launcher.pngbin0 -> 3178 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/mipmap-mdpi/ic_launcher_background.pngbin0 -> 5931 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/mipmap-mdpi/ic_launcher_foreground.pngbin0 -> 5018 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/mipmap-mdpi/ic_launcher_round.pngbin0 -> 4396 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/mipmap-xhdpi/ic_launcher.pngbin0 -> 8641 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/mipmap-xhdpi/ic_launcher_background.pngbin0 -> 24611 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/mipmap-xhdpi/ic_launcher_foreground.pngbin0 -> 13685 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/mipmap-xhdpi/ic_launcher_round.pngbin0 -> 12343 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxhdpi/ic_launcher.pngbin0 -> 16650 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxhdpi/ic_launcher_background.pngbin0 -> 40844 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxhdpi/ic_launcher_foreground.pngbin0 -> 23889 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxhdpi/ic_launcher_round.pngbin0 -> 22822 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.pngbin0 -> 26118 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_background.pngbin0 -> 49540 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_foreground.pngbin0 -> 35867 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.pngbin0 -> 34872 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml37
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPassword.kt27
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPasswordVerify.kt28
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityLoginRegister.kt65
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/NavigationActivity.kt46
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/SampleAdapter.kt32
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddPost.kt48
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt60
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHome.kt61
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentLogin.kt151
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyProfileInfo.kt60
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyRecensions.kt60
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt93
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentRegister.kt143
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserPosts.kt60
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IAuthApi.kt15
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/MainActivity.kt42
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Auth/Login.kt6
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Auth/Register.kt8
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/ListItemModel.kt6
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/LocationTypes.kt4
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt12
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/User.kt23
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt20
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/SharedPreferencesHelper.kt42
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/drawable-v24/ic_launcher_foreground.xml30
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/drawable/b3.jpgbin0 -> 6089791 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/drawable/button_left_radius.xml12
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/drawable/button_right_radius.xml12
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/drawable/gradient.xml12
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/drawable/ic_launcher_background.xml170
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/drawable/login_register_background_bottom_radius.xml16
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/drawable/login_register_background_top_radius.xml15
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_cyan_button.xml5
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_transparent_button.xml5
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_white_button_login.xml7
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/drawable/switch_login_register_on.xml6
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password.xml75
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password_verify.xml106
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/activity_login_register.xml101
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/activity_main.xml13
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/activity_navigation.xml28
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_post.xml23
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/fragment_browse.xml14
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/fragment_home.xml18
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/fragment_login.xml89
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/fragment_my_profile_info.xml14
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/fragment_my_recensions.xml14
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/fragment_profile.xml226
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/fragment_register.xml123
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_posts.xml14
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/list_item.xml27
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/menu/bottom_nav_menu.xml19
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml5
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml5
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/mipmap-hdpi/ic_launcher.webpbin0 -> 1404 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/mipmap-hdpi/ic_launcher_round.webpbin0 -> 2898 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/mipmap-mdpi/ic_launcher.webpbin0 -> 982 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/mipmap-mdpi/ic_launcher_round.webpbin0 -> 1772 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/mipmap-xhdpi/ic_launcher.webpbin0 -> 1900 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webpbin0 -> 3918 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/mipmap-xxhdpi/ic_launcher.webpbin0 -> 2884 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webpbin0 -> 5914 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webpbin0 -> 3844 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webpbin0 -> 7778 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/values-night/themes.xml16
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/values/colors.xml11
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/values/strings.xml6
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/values/styles.xml13
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/values/themes.xml15
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/xml/backup_rules.xml13
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/xml/data_extraction_rules.xml19
-rw-r--r--Client/BrzoDoLokacije/app/src/test/java/com/example/brzodolokacije/ExampleUnitTest.kt17
121 files changed, 2618 insertions, 0 deletions
diff --git a/Client/BrzoDoLokacije/app/.gitignore b/Client/BrzoDoLokacije/app/.gitignore
new file mode 100644
index 0000000..42afabf
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/.gitignore
@@ -0,0 +1 @@
+/build \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/build.gradle b/Client/BrzoDoLokacije/app/build.gradle
new file mode 100644
index 0000000..f6faf0d
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/build.gradle
@@ -0,0 +1,55 @@
+plugins {
+ id 'com.android.application'
+ id 'org.jetbrains.kotlin.android'
+}
+
+android {
+ namespace 'com.example.brzodolokacije'
+ compileSdk 32
+
+ defaultConfig {
+ applicationId "com.example.brzodolokacije"
+ minSdk 21
+ targetSdk 32
+ 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
+ }
+ kotlinOptions {
+ jvmTarget = '1.8'
+ }
+ buildFeatures {
+ viewBinding true
+ }
+}
+
+dependencies {
+
+ implementation 'androidx.core:core-ktx:1.7.0'
+ implementation 'androidx.appcompat:appcompat:1.5.1'
+ implementation 'com.google.android.material:material:1.7.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
+ testImplementation 'junit:junit:4.13.2'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.3'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
+
+ //Retrofit
+ implementation 'com.squareup.retrofit2:retrofit:2.7.2'
+ implementation 'com.squareup.retrofit2:converter-gson:2.7.2'
+
+ //JWT
+ implementation 'com.auth0.android:jwtdecode:2.0.1'
+} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/proguard-rules.pro b/Client/BrzoDoLokacije/app/proguard-rules.pro
new file mode 100644
index 0000000..481bb43
--- /dev/null
+++ b/Client/BrzoDoLokacije/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/Client/BrzoDoLokacije/app/src/androidTest/java/com/example/brzodolokacije/ExampleInstrumentedTest.kt b/Client/BrzoDoLokacije/app/src/androidTest/java/com/example/brzodolokacije/ExampleInstrumentedTest.kt
new file mode 100644
index 0000000..ac8d356
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/androidTest/java/com/example/brzodolokacije/ExampleInstrumentedTest.kt
@@ -0,0 +1,24 @@
+package com.example.brzodolokacije
+
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.ext.junit.runners.AndroidJUnit4
+
+import org.junit.Test
+import org.junit.runner.RunWith
+
+import org.junit.Assert.*
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+@RunWith(AndroidJUnit4::class)
+class ExampleInstrumentedTest {
+ @Test
+ fun useAppContext() {
+ // Context of the app under test.
+ val appContext = InstrumentationRegistry.getInstrumentation().targetContext
+ assertEquals("com.example.brzodolokacije", appContext.packageName)
+ }
+} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/debug/ic_launcher-playstore.png b/Client/BrzoDoLokacije/app/src/debug/ic_launcher-playstore.png
new file mode 100644
index 0000000..3e623b5
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/ic_launcher-playstore.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-anydpi/ic_nav_addpost.xml b/Client/BrzoDoLokacije/app/src/debug/res/drawable-anydpi/ic_nav_addpost.xml
new file mode 100644
index 0000000..768552f
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-anydpi/ic_nav_addpost.xml
@@ -0,0 +1,11 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24"
+ android:tint="#333333"
+ android:alpha="0.6">
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M13,7h-2v4L7,11v2h4v4h2v-4h4v-2h-4L13,7zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8z"/>
+</vector>
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-anydpi/ic_nav_browse.xml b/Client/BrzoDoLokacije/app/src/debug/res/drawable-anydpi/ic_nav_browse.xml
new file mode 100644
index 0000000..8beebb7
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-anydpi/ic_nav_browse.xml
@@ -0,0 +1,11 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24"
+ android:tint="#333333"
+ android:alpha="0.6">
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M11.99,2C6.47,2 2,6.48 2,12s4.47,10 9.99,10C17.52,22 22,17.52 22,12S17.52,2 11.99,2zM18.92,8h-2.95c-0.32,-1.25 -0.78,-2.45 -1.38,-3.56 1.84,0.63 3.37,1.91 4.33,3.56zM12,4.04c0.83,1.2 1.48,2.53 1.91,3.96h-3.82c0.43,-1.43 1.08,-2.76 1.91,-3.96zM4.26,14C4.1,13.36 4,12.69 4,12s0.1,-1.36 0.26,-2h3.38c-0.08,0.66 -0.14,1.32 -0.14,2 0,0.68 0.06,1.34 0.14,2L4.26,14zM5.08,16h2.95c0.32,1.25 0.78,2.45 1.38,3.56 -1.84,-0.63 -3.37,-1.9 -4.33,-3.56zM8.03,8L5.08,8c0.96,-1.66 2.49,-2.93 4.33,-3.56C8.81,5.55 8.35,6.75 8.03,8zM12,19.96c-0.83,-1.2 -1.48,-2.53 -1.91,-3.96h3.82c-0.43,1.43 -1.08,2.76 -1.91,3.96zM14.34,14L9.66,14c-0.09,-0.66 -0.16,-1.32 -0.16,-2 0,-0.68 0.07,-1.35 0.16,-2h4.68c0.09,0.65 0.16,1.32 0.16,2 0,0.68 -0.07,1.34 -0.16,2zM14.59,19.56c0.6,-1.11 1.06,-2.31 1.38,-3.56h2.95c-0.96,1.65 -2.49,2.93 -4.33,3.56zM16.36,14c0.08,-0.66 0.14,-1.32 0.14,-2 0,-0.68 -0.06,-1.34 -0.14,-2h3.38c0.16,0.64 0.26,1.31 0.26,2s-0.1,1.36 -0.26,2h-3.38z"/>
+</vector>
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-anydpi/ic_nav_home.xml b/Client/BrzoDoLokacije/app/src/debug/res/drawable-anydpi/ic_nav_home.xml
new file mode 100644
index 0000000..cd6cfd6
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-anydpi/ic_nav_home.xml
@@ -0,0 +1,11 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24"
+ android:tint="#333333"
+ android:alpha="0.6">
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M10,20v-6h4v6h5v-8h3L12,3 2,12h3v8z"/>
+</vector>
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-anydpi/ic_nav_profile.xml b/Client/BrzoDoLokacije/app/src/debug/res/drawable-anydpi/ic_nav_profile.xml
new file mode 100644
index 0000000..198e013
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-anydpi/ic_nav_profile.xml
@@ -0,0 +1,11 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24"
+ android:tint="#333333"
+ android:alpha="0.6">
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M12,12c2.21,0 4,-1.79 4,-4s-1.79,-4 -4,-4 -4,1.79 -4,4 1.79,4 4,4zM12,14c-2.67,0 -8,1.34 -8,4v2h16v-2c0,-2.66 -5.33,-4 -8,-4z"/>
+</vector>
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-hdpi/ic_nav_addpost.png b/Client/BrzoDoLokacije/app/src/debug/res/drawable-hdpi/ic_nav_addpost.png
new file mode 100644
index 0000000..5a45901
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-hdpi/ic_nav_addpost.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-hdpi/ic_nav_browse.png b/Client/BrzoDoLokacije/app/src/debug/res/drawable-hdpi/ic_nav_browse.png
new file mode 100644
index 0000000..79684b3
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-hdpi/ic_nav_browse.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-hdpi/ic_nav_home.png b/Client/BrzoDoLokacije/app/src/debug/res/drawable-hdpi/ic_nav_home.png
new file mode 100644
index 0000000..c6da75f
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-hdpi/ic_nav_home.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-hdpi/ic_nav_profile.png b/Client/BrzoDoLokacije/app/src/debug/res/drawable-hdpi/ic_nav_profile.png
new file mode 100644
index 0000000..d065a96
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-hdpi/ic_nav_profile.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-mdpi/ic_nav_addpost.png b/Client/BrzoDoLokacije/app/src/debug/res/drawable-mdpi/ic_nav_addpost.png
new file mode 100644
index 0000000..6ab5495
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-mdpi/ic_nav_addpost.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-mdpi/ic_nav_browse.png b/Client/BrzoDoLokacije/app/src/debug/res/drawable-mdpi/ic_nav_browse.png
new file mode 100644
index 0000000..4356671
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-mdpi/ic_nav_browse.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-mdpi/ic_nav_home.png b/Client/BrzoDoLokacije/app/src/debug/res/drawable-mdpi/ic_nav_home.png
new file mode 100644
index 0000000..cb1f92f
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-mdpi/ic_nav_home.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-mdpi/ic_nav_profile.png b/Client/BrzoDoLokacije/app/src/debug/res/drawable-mdpi/ic_nav_profile.png
new file mode 100644
index 0000000..9de92dc
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-mdpi/ic_nav_profile.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/b1.jpg b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/b1.jpg
new file mode 100644
index 0000000..6c86a45
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/b1.jpg
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/ic_nav_addpost.png b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/ic_nav_addpost.png
new file mode 100644
index 0000000..d58180b
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/ic_nav_addpost.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/ic_nav_browse.png b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/ic_nav_browse.png
new file mode 100644
index 0000000..26b1bf3
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/ic_nav_browse.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/ic_nav_home.png b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/ic_nav_home.png
new file mode 100644
index 0000000..f6c17d5
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/ic_nav_home.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/ic_nav_profile.png b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/ic_nav_profile.png
new file mode 100644
index 0000000..8c2ff94
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/ic_nav_profile.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-xxhdpi/ic_nav_addpost.png b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xxhdpi/ic_nav_addpost.png
new file mode 100644
index 0000000..573a645
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xxhdpi/ic_nav_addpost.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-xxhdpi/ic_nav_browse.png b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xxhdpi/ic_nav_browse.png
new file mode 100644
index 0000000..90f6390
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xxhdpi/ic_nav_browse.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-xxhdpi/ic_nav_home.png b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xxhdpi/ic_nav_home.png
new file mode 100644
index 0000000..40d14fb
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xxhdpi/ic_nav_home.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-xxhdpi/ic_nav_profile.png b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xxhdpi/ic_nav_profile.png
new file mode 100644
index 0000000..99793cc
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xxhdpi/ic_nav_profile.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..4ae7d12
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@mipmap/ic_launcher_background"/>
+ <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
+</adaptive-icon> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..4ae7d12
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@mipmap/ic_launcher_background"/>
+ <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
+</adaptive-icon> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/mipmap-hdpi/ic_launcher.png b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..3ab4acb
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/mipmap-hdpi/ic_launcher_background.png b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-hdpi/ic_launcher_background.png
new file mode 100644
index 0000000..a8a6cb9
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-hdpi/ic_launcher_background.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/mipmap-hdpi/ic_launcher_foreground.png b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-hdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..ce57665
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-hdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/mipmap-hdpi/ic_launcher_round.png b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 0000000..54c4f06
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-hdpi/ic_launcher_round.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/mipmap-mdpi/ic_launcher.png b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..4dfe37c
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/mipmap-mdpi/ic_launcher_background.png b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-mdpi/ic_launcher_background.png
new file mode 100644
index 0000000..4465788
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-mdpi/ic_launcher_background.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/mipmap-mdpi/ic_launcher_foreground.png b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-mdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..2093171
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-mdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/mipmap-mdpi/ic_launcher_round.png b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 0000000..e394809
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-mdpi/ic_launcher_round.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xhdpi/ic_launcher.png b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..960bf6a
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xhdpi/ic_launcher_background.png b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xhdpi/ic_launcher_background.png
new file mode 100644
index 0000000..1934227
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xhdpi/ic_launcher_background.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xhdpi/ic_launcher_foreground.png b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..bc70fc1
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xhdpi/ic_launcher_round.png b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..6508da3
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xhdpi/ic_launcher_round.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..73df669
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxhdpi/ic_launcher_background.png b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxhdpi/ic_launcher_background.png
new file mode 100644
index 0000000..b2edcde
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxhdpi/ic_launcher_background.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxhdpi/ic_launcher_foreground.png b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..920c97d
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxhdpi/ic_launcher_round.png b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..7c5c954
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxhdpi/ic_launcher_round.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..8a1b252
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_background.png b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_background.png
new file mode 100644
index 0000000..09cca42
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_background.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..2452c55
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.png b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..bc9a0c6
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/mipmap-xxxhdpi/ic_launcher_round.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..edf65a2
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/AndroidManifest.xml
@@ -0,0 +1,37 @@
+<?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"
+ android:dataExtractionRules="@xml/data_extraction_rules"
+ android:fullBackupContent="@xml/backup_rules"
+ android:icon="@mipmap/ic_launcher"
+ android:label="@string/app_name"
+ android:roundIcon="@mipmap/ic_launcher_round"
+ android:supportsRtl="true"
+ android:theme="@style/Theme.BrzoDoLokacije"
+ android:usesCleartextTraffic="true"
+ tools:targetApi="31">
+ <activity android:name=".Activities.ActivityForgottenPasswordVerify" />
+ <activity android:name=".Activities.ActivityForgottenPassword" />
+ <activity android:name=".Activities.ActivityLoginRegister" />
+ <activity android:name=".Activities.NavigationActivity" />
+ <activity
+ android:name=".MainActivity"
+ android:exported="true">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+
+ <meta-data
+ android:name="android.app.lib_name"
+ android:value="" />
+ </activity>
+ </application>
+
+</manifest> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPassword.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPassword.kt
new file mode 100644
index 0000000..e7c9836
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPassword.kt
@@ -0,0 +1,27 @@
+package com.example.brzodolokacije.Activities
+
+import android.content.Intent
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import android.view.View
+import android.widget.Button
+import android.widget.Toast
+import com.example.brzodolokacije.R
+
+class ActivityForgottenPassword : AppCompatActivity() {
+ private lateinit var sendCode: Button
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_forgotten_password)
+
+ sendCode=findViewById<View>(R.id.forgottenPasswordSendCode) as Button
+
+ sendCode.setOnClickListener{
+ intent= Intent(this, ActivityForgottenPasswordVerify::class.java)
+ startActivity(intent)
+ }
+
+ }
+
+
+} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPasswordVerify.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPasswordVerify.kt
new file mode 100644
index 0000000..6533237
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityForgottenPasswordVerify.kt
@@ -0,0 +1,28 @@
+package com.example.brzodolokacije.Activities
+
+import android.content.Intent
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import android.view.View
+import android.widget.Button
+import android.widget.Toast
+import com.example.brzodolokacije.MainActivity
+import com.example.brzodolokacije.R
+
+class ActivityForgottenPasswordVerify : AppCompatActivity() {
+ private lateinit var changePassword: Button
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_forgotten_password_verify)
+
+ changePassword=findViewById<View>(R.id.btnChangePassword) as Button
+ changePassword.setOnClickListener{
+ Toast.makeText(
+ this, "Lozinka je uspešno promenjena.", Toast.LENGTH_LONG
+ ).show();
+
+ intent= Intent(this, ActivityLoginRegister::class.java)
+ startActivity(intent)
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityLoginRegister.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityLoginRegister.kt
new file mode 100644
index 0000000..f5843aa
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityLoginRegister.kt
@@ -0,0 +1,65 @@
+package com.example.brzodolokacije.Activities
+
+import android.graphics.drawable.Drawable
+import android.os.Build
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import android.util.Log
+import android.view.View
+import android.widget.Button
+import android.widget.Toast
+import androidx.annotation.RequiresApi
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentManager
+import androidx.fragment.app.FragmentTransaction
+import com.example.brzodolokacije.Fragments.FragmentLogin
+import com.example.brzodolokacije.Fragments.FragmentRegister
+import com.example.brzodolokacije.R
+import com.google.android.material.internal.ContextUtils.getActivity
+
+class ActivityLoginRegister : AppCompatActivity() {
+
+ private lateinit var login: Button
+ private lateinit var register: Button
+
+
+
+ @RequiresApi(Build.VERSION_CODES.M)
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_login_register)
+ Log.d("main","123456")
+ login=findViewById<View>(R.id.btnFragmentActivityLRLogin) as Button
+ register=findViewById<View>(R.id.btnFragmentActivityLRRegister) as Button
+ //var fm: FragmentTransaction =supportFragmentManager.beginTransaction()
+ //fm.replace(R.id.flFragmentActivityLRFragmentsView,FragmentLogin())
+ var fm: FragmentTransaction =supportFragmentManager.beginTransaction()
+
+ fm.replace(R.id.flFragmentActivityLRFragmentsView,FragmentLogin())
+ fm.commit()
+ login.setOnClickListener{
+ login.setTextColor(getColor(R.color.white))
+ register.setTextColor(getColor(R.color.teal_700))
+ login.setBackgroundResource(R.drawable.rounded_cyan_button)
+ register.setBackgroundResource(R.drawable.rounded_transparent_button)
+ Log.d("main","prijavi se")
+ var fm: FragmentTransaction =supportFragmentManager.beginTransaction()
+
+ fm.replace(R.id.flFragmentActivityLRFragmentsView,FragmentLogin())
+ fm.commit()
+ }
+
+ register.setOnClickListener{
+ Log.d("main","prijavi se")
+ register.setTextColor(getColor(R.color.white))
+ login.setTextColor(getColor(R.color.teal_700))
+ register.setBackgroundResource(R.drawable.rounded_cyan_button)
+ login.setBackgroundResource(R.drawable.rounded_transparent_button)
+ var fm: FragmentTransaction =supportFragmentManager.beginTransaction()
+
+ fm.replace(R.id.flFragmentActivityLRFragmentsView, FragmentRegister())
+ fm.commit()
+ }
+ }
+
+}
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/NavigationActivity.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/NavigationActivity.kt
new file mode 100644
index 0000000..0933460
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/NavigationActivity.kt
@@ -0,0 +1,46 @@
+package com.example.brzodolokacije.Activities
+
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import android.view.View
+import android.widget.Button
+import androidx.fragment.app.Fragment
+import com.example.brzodolokacije.Fragments.FragmentAddPost
+import com.example.brzodolokacije.Fragments.FragmentBrowse
+import com.example.brzodolokacije.Fragments.FragmentHome
+import com.example.brzodolokacije.Fragments.FragmentProfile
+import com.example.brzodolokacije.R
+import com.google.android.material.bottomnavigation.BottomNavigationView
+
+class NavigationActivity : AppCompatActivity() {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_navigation)
+
+ val homeFragment=FragmentHome()
+ val browseFragment=FragmentBrowse()
+ val addPostFragment=FragmentAddPost()
+ val profileFragment=FragmentProfile()
+ val bottomNav=findViewById<View>(R.id.bottomNavigationView) as BottomNavigationView
+ setCurrentFragment(homeFragment)
+ bottomNav.setOnNavigationItemSelectedListener {
+ when(it.itemId){
+ R.id.navHome->setCurrentFragment(homeFragment)
+ R.id.navAddPost->setCurrentFragment(addPostFragment)
+ R.id.navBrowse->setCurrentFragment(browseFragment)
+ R.id.navProfile->setCurrentFragment(profileFragment)
+
+ }
+ true
+ }
+
+
+ }
+ private fun setCurrentFragment(fragment: Fragment)=
+ supportFragmentManager.beginTransaction().apply {
+ replace(R.id.flNavigationFragment,fragment)
+ commit()
+ }
+
+
+} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/SampleAdapter.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/SampleAdapter.kt
new file mode 100644
index 0000000..c4ebbbb
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/SampleAdapter.kt
@@ -0,0 +1,32 @@
+package com.example.brzodolokacije.Adapters
+
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import com.example.brzodolokacije.Models.ListItemModel
+import com.example.brzodolokacije.databinding.ListItemBinding
+
+class SampleAdapter (val items : MutableList<ListItemModel>)
+ : RecyclerView.Adapter<SampleAdapter.ViewHolder>(){
+ //constructer has one argument - list of objects that need to be displayed
+ //it is bound to xml of single item
+ private lateinit var binding: ListItemBinding
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
+ val inflater = LayoutInflater.from(parent.context)
+ binding=ListItemBinding.inflate(inflater,parent,false)
+ return ViewHolder(binding)
+ }
+ override fun onBindViewHolder(holder: ViewHolder, position: Int){
+ //sets components of particular item
+ holder.bind(items[position])
+ }
+ override fun getItemCount() = items.size
+ inner class ViewHolder(itemView : ListItemBinding) : RecyclerView.ViewHolder(itemView.root){
+ fun bind(item : ListItemModel){
+ binding.apply {
+ tvId.text=item.id.toString()
+ tvName.text=item.name
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddPost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddPost.kt
new file mode 100644
index 0000000..b6452e9
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentAddPost.kt
@@ -0,0 +1,48 @@
+package com.example.brzodolokacije.Fragments
+
+import android.content.Intent
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.Button
+import com.example.brzodolokacije.Activities.ActivityLoginRegister
+import com.example.brzodolokacije.Activities.NavigationActivity
+import com.example.brzodolokacije.R
+import com.example.brzodolokacije.Services.SharedPreferencesHelper
+
+
+class FragmentAddPost : Fragment(R.layout.fragment_add_post) {
+
+
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ val view:View=inflater.inflate(R.layout.fragment_add_post, container, false)
+ // Inflate the layout for this fragment
+ val logOutButton=view.findViewById<View>(R.id.btnFragmentAddLogOut) as Button
+ logOutButton.setOnClickListener{
+ logOut()
+ }
+ return view;
+ }
+
+ fun logOut(){
+ if(SharedPreferencesHelper.removeValue("jwt",requireActivity()))
+ {
+ val intent= Intent(requireActivity(), ActivityLoginRegister::class.java)
+ startActivity(intent)
+ }
+ }
+
+
+} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt
new file mode 100644
index 0000000..1bd98a0
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt
@@ -0,0 +1,60 @@
+package com.example.brzodolokacije.Fragments
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.example.brzodolokacije.R
+
+// TODO: Rename parameter arguments, choose names that match
+// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
+private const val ARG_PARAM1 = "param1"
+private const val ARG_PARAM2 = "param2"
+
+/**
+ * A simple [Fragment] subclass.
+ * Use the [FragmentBrowse.newInstance] factory method to
+ * create an instance of this fragment.
+ */
+class FragmentBrowse : Fragment(R.layout.fragment_browse) {
+ // TODO: Rename and change types of parameters
+ private var param1: String? = null
+ private var param2: String? = null
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ arguments?.let {
+ param1 = it.getString(ARG_PARAM1)
+ param2 = it.getString(ARG_PARAM2)
+ }
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.fragment_browse, container, false)
+ }
+
+ companion object {
+ /**
+ * Use this factory method to create a new instance of
+ * this fragment using the provided parameters.
+ *
+ * @param param1 Parameter 1.
+ * @param param2 Parameter 2.
+ * @return A new instance of fragment FragmentBrowse.
+ */
+ // TODO: Rename and change types and number of parameters
+ @JvmStatic
+ fun newInstance(param1: String, param2: String) =
+ FragmentBrowse().apply {
+ arguments = Bundle().apply {
+ putString(ARG_PARAM1, param1)
+ putString(ARG_PARAM2, param2)
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHome.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHome.kt
new file mode 100644
index 0000000..fd5aa33
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentHome.kt
@@ -0,0 +1,61 @@
+package com.example.brzodolokacije.Fragments
+
+import android.os.Bundle
+import android.util.Log
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.Button
+import androidx.recyclerview.widget.LinearLayoutManager
+import androidx.recyclerview.widget.RecyclerView
+import com.example.brzodolokacije.Adapters.SampleAdapter
+import com.example.brzodolokacije.Models.ListItemModel
+import com.example.brzodolokacije.R
+import com.example.brzodolokacije.databinding.FragmentHomeBinding
+
+/**
+ * A simple [Fragment] subclass.
+ * Use the [FragmentHome.newInstance] factory method to
+ * create an instance of this fragment.
+ */
+
+class FragmentHome : Fragment(R.layout.fragment_home) {
+
+ private lateinit var binding: FragmentHomeBinding
+ private var nameList : MutableList<ListItemModel> = mutableListOf()
+ private var layoutManagerVar: RecyclerView.LayoutManager? = null
+ private var adapterVar: RecyclerView.Adapter<SampleAdapter.ViewHolder>? = null
+ private var recyclerView:RecyclerView?=null
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ //load data for the list
+ loadData()
+ //instantiate adapter and linearLayout
+ adapterVar=SampleAdapter(nameList)
+ layoutManagerVar=LinearLayoutManager(activity)
+ }
+
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ val rootView = inflater?.inflate(R.layout.fragment_home, container, false)
+ recyclerView = rootView?.findViewById(R.id.rvMain)
+ // set recyclerView attributes
+ recyclerView?.setHasFixedSize(true)
+ recyclerView?.layoutManager = layoutManagerVar
+ recyclerView?.adapter = adapterVar
+ return rootView
+ }
+ fun loadData(){
+ nameList.add(ListItemModel(1,"Sample 1"))
+ nameList.add(ListItemModel(2,"Sample 2"))
+ nameList.add(ListItemModel(3,"Sample 3"))
+ nameList.add(ListItemModel(4,"Sample 4"))
+ nameList.add(ListItemModel(5,"Sample 5"))
+ nameList.add(ListItemModel(6,"Sample 6"))
+ }
+}
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentLogin.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentLogin.kt
new file mode 100644
index 0000000..6e9d75f
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentLogin.kt
@@ -0,0 +1,151 @@
+package com.example.brzodolokacije.Fragments
+
+import android.content.Intent
+import android.graphics.Color
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.Button
+import android.widget.EditText
+import android.widget.TextView
+import android.widget.Toast
+
+import com.example.brzodolokacije.Activities.ActivityLoginRegister
+import com.example.brzodolokacije.Activities.NavigationActivity
+
+import com.example.brzodolokacije.Activities.ActivityForgottenPassword
+
+
+import com.example.brzodolokacije.Interfaces.IAuthApi
+import com.example.brzodolokacije.Models.Auth.Login
+import com.example.brzodolokacije.R
+import com.example.brzodolokacije.Services.RetrofitHelper
+import com.example.brzodolokacije.Services.SharedPreferencesHelper
+import retrofit2.Call
+import retrofit2.Response
+
+
+class FragmentLogin : Fragment() {
+ // TODO: Rename and change types of parameters
+ private lateinit var password: EditText
+ private lateinit var email: EditText
+ private lateinit var forgottenPassword: TextView
+ private lateinit var login: Button
+ private lateinit var passwordString:String
+ private lateinit var emailString:String
+
+
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ // Inflate the layout for this fragment
+ val view:View=inflater.inflate(R.layout.fragment_login, container, false)
+
+
+ email = view.findViewById<View>(R.id.etFragmentLoginEmail) as EditText
+ password = view.findViewById<View>(R.id.etFragmentLoginPassword) as EditText
+ forgottenPassword = view.findViewById<View>(R.id.tvFragmentLoginForgottenPassword) as TextView
+ login=view.findViewById<View>(R.id.btnFragmentLoginLogin) as Button
+
+ //osluskivanje unosa
+
+ login.setOnClickListener{
+ emailString=email.text.toString().trim()
+ passwordString=password.text.toString().trim()
+ //prazan unos?
+ if(emailString.isEmpty())
+ {
+ email.hint="Unesite Email adresu"
+ email.setHintTextColor(Color.RED)
+ }/*
+ else{
+ if(checkEmail(emailString)==false){
+ email.hint="Pogrešan unos, unesite ispravnu Email adresu"
+ email.setHintTextColor(Color.RED)
+ }
+ }*/
+ if(passwordString.isEmpty())
+ {
+ password.hint = "Unesite lozinku"
+ password.setHintTextColor(Color.RED)
+
+ }/*
+ else{
+ if(checkPassword(passwordString)==false) {
+ password.hint = "Lozinka mora imati najmanje 6 karaktera"
+ password.setHintTextColor(Color.RED)
+ }
+ }
+*/
+ if(!emailString.isEmpty() && !passwordString.isEmpty()&& checkPassword(passwordString)==true && checkEmail(emailString)==true) {
+
+ var loginData= Login(emailString,passwordString)
+ val authApi= RetrofitHelper.getInstance().create(IAuthApi::class.java)
+ val request=authApi.login(loginData)
+
+ request.enqueue(object : retrofit2.Callback<String?> {
+ override fun onResponse(call: Call<String?>, response: Response<String?>) {
+ if(response.isSuccessful()){
+ val token=response.body().toString()
+ Toast.makeText(
+ activity, token, Toast.LENGTH_LONG
+ ).show();
+ //TODO(navigate to main page)
+ SharedPreferencesHelper.addValue("jwt",token,activity!!)
+ val intent= Intent(activity!!, NavigationActivity::class.java)
+ startActivity(intent)
+ }else{
+ if(response.errorBody()!=null)
+ Toast.makeText(activity, response.errorBody()!!.string(), Toast.LENGTH_LONG).show();
+ }
+
+
+ }
+
+ override fun onFailure(call: Call<String?>, t: Throwable) {
+ Toast.makeText(
+ activity, t.toString(), Toast.LENGTH_LONG
+ ).show();
+ }
+ })
+
+ }
+ }
+
+ // zaboravljena lozinka
+ forgottenPassword.setOnClickListener{
+ val intent = Intent (getActivity(), ActivityForgottenPassword::class.java)
+ getActivity()?.startActivity(intent)
+ }
+
+
+
+
+
+ return view
+
+ }
+ fun checkEmail(emailString:String):Boolean{
+ val emailRegex = "^[A-Za-z](.*)([@]{1})(.{1,})(\\.)(.{1,})"
+ if(!(emailRegex.toRegex().matches(emailString))){
+ email.hint="Pogrešan unos, unesite ispravnu Email adresu"
+ email.setHintTextColor(Color.RED)
+ return false
+ }
+ else{
+ return true
+ }
+ }
+
+ fun checkPassword(passwordString:String):Boolean{
+ if(passwordString.length<6){
+ return false
+ }
+ return true
+ }
+
+} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyProfileInfo.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyProfileInfo.kt
new file mode 100644
index 0000000..9c4c370
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyProfileInfo.kt
@@ -0,0 +1,60 @@
+package com.example.brzodolokacije.Fragments
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.example.brzodolokacije.R
+
+// TODO: Rename parameter arguments, choose names that match
+// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
+private const val ARG_PARAM1 = "param1"
+private const val ARG_PARAM2 = "param2"
+
+/**
+ * A simple [Fragment] subclass.
+ * Use the [FragmentMyProfileInfo.newInstance] factory method to
+ * create an instance of this fragment.
+ */
+class FragmentMyProfileInfo : Fragment() {
+ // TODO: Rename and change types of parameters
+ private var param1: String? = null
+ private var param2: String? = null
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ arguments?.let {
+ param1 = it.getString(ARG_PARAM1)
+ param2 = it.getString(ARG_PARAM2)
+ }
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.fragment_my_profile_info, container, false)
+ }
+
+ companion object {
+ /**
+ * Use this factory method to create a new instance of
+ * this fragment using the provided parameters.
+ *
+ * @param param1 Parameter 1.
+ * @param param2 Parameter 2.
+ * @return A new instance of fragment FragmentMyProfileInfo.
+ */
+ // TODO: Rename and change types and number of parameters
+ @JvmStatic
+ fun newInstance(param1: String, param2: String) =
+ FragmentMyProfileInfo().apply {
+ arguments = Bundle().apply {
+ putString(ARG_PARAM1, param1)
+ putString(ARG_PARAM2, param2)
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyRecensions.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyRecensions.kt
new file mode 100644
index 0000000..ce8679a
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentMyRecensions.kt
@@ -0,0 +1,60 @@
+package com.example.brzodolokacije.Fragments
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.example.brzodolokacije.R
+
+// TODO: Rename parameter arguments, choose names that match
+// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
+private const val ARG_PARAM1 = "param1"
+private const val ARG_PARAM2 = "param2"
+
+/**
+ * A simple [Fragment] subclass.
+ * Use the [FragmentMyRecensions.newInstance] factory method to
+ * create an instance of this fragment.
+ */
+class FragmentMyRecensions : Fragment() {
+ // TODO: Rename and change types of parameters
+ private var param1: String? = null
+ private var param2: String? = null
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ arguments?.let {
+ param1 = it.getString(ARG_PARAM1)
+ param2 = it.getString(ARG_PARAM2)
+ }
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.fragment_my_recensions, container, false)
+ }
+
+ companion object {
+ /**
+ * Use this factory method to create a new instance of
+ * this fragment using the provided parameters.
+ *
+ * @param param1 Parameter 1.
+ * @param param2 Parameter 2.
+ * @return A new instance of fragment FragmentMyRecensions.
+ */
+ // TODO: Rename and change types and number of parameters
+ @JvmStatic
+ fun newInstance(param1: String, param2: String) =
+ FragmentMyRecensions().apply {
+ arguments = Bundle().apply {
+ putString(ARG_PARAM1, param1)
+ putString(ARG_PARAM2, param2)
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt
new file mode 100644
index 0000000..a8176b0
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt
@@ -0,0 +1,93 @@
+package com.example.brzodolokacije.Fragments
+
+import android.os.Bundle
+import android.util.Log
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.Button
+import android.widget.EditText
+import android.widget.TextView
+import androidx.fragment.app.FragmentTransaction
+import com.example.brzodolokacije.R
+import retrofit2.Call
+import retrofit2.Callback
+import retrofit2.Response
+import retrofit2.Retrofit
+import retrofit2.converter.gson.GsonConverterFactory
+
+// TODO: Rename parameter arguments, choose names that match
+// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
+private const val ARG_PARAM1 = "param1"
+private const val ARG_PARAM2 = "param2"
+
+/**
+ * A simple [Fragment] subclass.
+ * Use the [FragmentProfile.newInstance] factory method to
+ * create an instance of this fragment.
+ */
+class FragmentProfile : Fragment(R.layout.fragment_profile) {
+ // TODO: Rename and change types of parameters
+ private lateinit var username: TextView
+ private lateinit var name: TextView
+ private lateinit var postsCount: TextView
+ private lateinit var followersCount: TextView
+ private lateinit var followingCount:TextView
+ private lateinit var usernameString: String
+ private lateinit var nameString: String
+ private lateinit var postsCountString: String
+ private lateinit var followersCountString: String
+ private lateinit var followingCountString:String
+ private lateinit var showMyPosts: Button
+ private lateinit var showMyData: Button
+ private lateinit var showMyRecensions: Button
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ // Inflate the layout for this fragment
+ val view:View= inflater.inflate(R.layout.fragment_profile, container, false)
+ name = view.findViewById<View>(R.id.tvFragmentProfileName) as TextView
+ username = view.findViewById<View>(R.id.tvFragmentProfileUserName) as TextView
+ postsCount = view.findViewById<View>(R.id.tvFragmentProfilePostsNo) as TextView
+ followersCount = view.findViewById<View>(R.id.tvFragmentProfileFollowersNo) as TextView
+ followingCount = view.findViewById<View>(R.id.tvFragmentProfileFollowNo) as TextView
+
+ showMyPosts=view.findViewById<View>(R.id.btnFragmentProfileShowMyPosts) as Button
+ showMyData=view.findViewById<View>(R.id.btnFragmentProfileShowMyData) as Button
+ showMyRecensions=view.findViewById<View>(R.id.btnFragmentProfileShowMyRecensions) as Button
+ //podaci iz baze
+
+
+
+ showMyPosts.setOnClickListener{
+
+ var fm: FragmentTransaction =childFragmentManager.beginTransaction()
+
+ fm.replace(R.id.flFragmentProfileFragmentContainer,FragmentUserPosts())
+ fm.commit()
+ }
+
+
+ showMyData.setOnClickListener{
+
+ var fm: FragmentTransaction =childFragmentManager.beginTransaction()
+
+ fm.replace(R.id.flFragmentProfileFragmentContainer,FragmentMyProfileInfo())
+ fm.commit()
+ }
+
+ showMyRecensions.setOnClickListener{
+
+ var fm: FragmentTransaction =childFragmentManager.beginTransaction()
+
+ fm.replace(R.id.flFragmentProfileFragmentContainer,FragmentMyRecensions())
+ fm.commit()
+ }
+
+ return view
+ }
+
+
+} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentRegister.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentRegister.kt
new file mode 100644
index 0000000..9f028dc
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentRegister.kt
@@ -0,0 +1,143 @@
+package com.example.brzodolokacije.Fragments
+
+import android.graphics.BitmapFactory
+import android.graphics.Color
+import android.os.Bundle
+import android.util.Base64
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.Button
+import android.widget.EditText
+import android.widget.Toast
+import com.example.brzodolokacije.Interfaces.IAuthApi
+import com.example.brzodolokacije.Models.Auth.Register
+import com.example.brzodolokacije.R
+import com.example.brzodolokacije.Services.RetrofitHelper
+import okhttp3.ResponseBody
+import retrofit2.Call
+import retrofit2.Response
+import javax.security.auth.callback.Callback
+
+class FragmentRegister : Fragment() {
+ // TODO: Rename and change types of parameters
+ private lateinit var password: EditText
+ private lateinit var email: EditText
+ private lateinit var username: EditText
+ private lateinit var name: EditText
+ private lateinit var register: Button
+ private lateinit var usernameString:String
+ private lateinit var nameString:String
+ private lateinit var passwordString:String
+ private lateinit var emailString:String
+
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ // Inflate the layout for this fragment
+ val view:View=inflater.inflate(R.layout.fragment_register, container, false)
+
+ email = view.findViewById<View>(R.id.etFragmentRegisterEmail) as EditText
+ password = view.findViewById<View>(R.id.etFragmentRegisterPassword) as EditText
+ username = view.findViewById<View>(R.id.etFragmentRegisterUser) as EditText
+ name = view.findViewById<View>(R.id.etFragmentRegisterName) as EditText
+ register=view.findViewById<View>(R.id.btnFragmentRegisterRegister) as Button
+
+ //osluskivanje unosa
+
+ register.setOnClickListener{
+ emailString=email.text.toString().trim()
+ usernameString=username.text.toString().trim()
+ nameString=name.text.toString().trim()
+ passwordString=password.text.toString().trim()
+
+ //prazan unos? neispravan email
+ if(emailString.isEmpty())
+ {
+ email.hint="Unesite Email adresu"
+ email.setHintTextColor(Color.RED)
+ }
+ if(passwordString.isEmpty())
+ {
+ password.hint = "Unesite lozinku"
+ password.setHintTextColor(Color.RED)
+ }
+ if(usernameString.isEmpty())
+ {
+ username.hint = "Unesite korisničko ime"
+ username.setHintTextColor(Color.RED)
+ }
+ if(nameString.isEmpty())
+ {
+ name.hint = "Unesite ime i prezime"
+ name.setHintTextColor(Color.RED)
+ }
+ if(!emailString.isEmpty() && !passwordString.isEmpty() && !nameString.isEmpty() && !usernameString.isEmpty()) {
+
+ var registerData=Register(nameString,usernameString,emailString,passwordString)
+
+ val authApi=RetrofitHelper.getInstance().create(IAuthApi::class.java)
+
+ val request=authApi.register(registerData)
+
+ request.enqueue(object : retrofit2.Callback<ResponseBody?> {
+ override fun onResponse(call: Call<ResponseBody?>, response: Response<ResponseBody?>) {
+ if(response.isSuccessful()){
+ Toast.makeText(
+ activity, "Uspesna registracija. Verifikujte email.", Toast.LENGTH_LONG
+ ).show();
+ //TODO(navigate to login)
+ }else{
+ if(response.errorBody()!=null) {
+ Toast.makeText(
+ activity,
+ response.errorBody()!!.string(),
+ Toast.LENGTH_LONG
+ ).show()
+ }
+ }
+
+
+ }
+
+ override fun onFailure(call: Call<ResponseBody?>, t: Throwable) {
+ Toast.makeText(
+ activity, "Greska, pokusajte ponovo.", Toast.LENGTH_LONG
+ ).show();
+ }
+ })
+
+
+
+ //***DODATI broj karaktera lozinke, provera da li je email sa @ i .com
+
+ }
+ }
+
+
+ return view
+ }
+/*
+ companion object {
+ /**
+ * Use this factory method to create a new instance of
+ * this fragment using the provided parameters.
+ *
+ * @param param1 Parameter 1.
+ * @param param2 Parameter 2.
+ * @return A new instance of fragment fragmentRegister.
+ */
+ // TODO: Rename and change types and number of parameters
+ @JvmStatic
+ fun newInstance(param1: String, param2: String) =
+ fragmentRegister().apply {
+ arguments = Bundle().apply {
+ putString(ARG_PARAM1, param1)
+ putString(ARG_PARAM2, param2)
+ }
+ }
+ }*/
+} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserPosts.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserPosts.kt
new file mode 100644
index 0000000..561de10
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentUserPosts.kt
@@ -0,0 +1,60 @@
+package com.example.brzodolokacije.Fragments
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.example.brzodolokacije.R
+
+// TODO: Rename parameter arguments, choose names that match
+// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
+private const val ARG_PARAM1 = "param1"
+private const val ARG_PARAM2 = "param2"
+
+/**
+ * A simple [Fragment] subclass.
+ * Use the [FragmentUserPosts.newInstance] factory method to
+ * create an instance of this fragment.
+ */
+class FragmentUserPosts : Fragment() {
+ // TODO: Rename and change types of parameters
+ private var param1: String? = null
+ private var param2: String? = null
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ arguments?.let {
+ param1 = it.getString(ARG_PARAM1)
+ param2 = it.getString(ARG_PARAM2)
+ }
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.fragment_user_posts, container, false)
+ }
+
+ companion object {
+ /**
+ * Use this factory method to create a new instance of
+ * this fragment using the provided parameters.
+ *
+ * @param param1 Parameter 1.
+ * @param param2 Parameter 2.
+ * @return A new instance of fragment FragmentUserPosts.
+ */
+ // TODO: Rename and change types and number of parameters
+ @JvmStatic
+ fun newInstance(param1: String, param2: String) =
+ FragmentUserPosts().apply {
+ arguments = Bundle().apply {
+ putString(ARG_PARAM1, param1)
+ putString(ARG_PARAM2, param2)
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IAuthApi.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IAuthApi.kt
new file mode 100644
index 0000000..bd430a8
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IAuthApi.kt
@@ -0,0 +1,15 @@
+package com.example.brzodolokacije.Interfaces
+
+import com.example.brzodolokacije.Models.Auth.Login
+import com.example.brzodolokacije.Models.Auth.Register
+import okhttp3.ResponseBody
+import retrofit2.Call
+import retrofit2.http.Body
+import retrofit2.http.POST
+
+interface IAuthApi {
+ @POST("/api/auth/login")
+ fun login(@Body obj:Login): Call<String>
+ @POST("/api/auth/register")
+ fun register(@Body obj:Register):Call<ResponseBody>
+} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/MainActivity.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/MainActivity.kt
new file mode 100644
index 0000000..1208564
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/MainActivity.kt
@@ -0,0 +1,42 @@
+package com.example.brzodolokacije
+
+import android.content.Intent
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import com.auth0.android.jwt.JWT
+import com.example.brzodolokacije.Activities.ActivityLoginRegister
+import com.example.brzodolokacije.Activities.NavigationActivity
+import com.example.brzodolokacije.Services.SharedPreferencesHelper
+
+
+class MainActivity : AppCompatActivity() {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_main)
+ val intent:Intent
+
+ if(checkLoggedIn())
+ intent= Intent(this, NavigationActivity::class.java)
+ else
+ intent= Intent(this, ActivityLoginRegister::class.java)
+
+
+ startActivity(intent)
+ }
+
+ fun checkLoggedIn():Boolean{
+ var jwtString=SharedPreferencesHelper.getValue("jwt",this)
+ if(jwtString==null)
+ return false
+ var jwt:JWT=JWT(jwtString)
+ if(jwt.isExpired(30))
+ return false
+ return true
+
+
+
+
+ }
+} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Auth/Login.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Auth/Login.kt
new file mode 100644
index 0000000..136b8dd
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Auth/Login.kt
@@ -0,0 +1,6 @@
+package com.example.brzodolokacije.Models.Auth
+
+data class Login(
+ var email:String,
+ var password:String
+)
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Auth/Register.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Auth/Register.kt
new file mode 100644
index 0000000..bcb0d2b
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Auth/Register.kt
@@ -0,0 +1,8 @@
+package com.example.brzodolokacije.Models.Auth
+
+data class Register(
+ var name:String,
+ var username:String,
+ var email:String,
+ var password:String
+)
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/ListItemModel.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/ListItemModel.kt
new file mode 100644
index 0000000..48e519e
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/ListItemModel.kt
@@ -0,0 +1,6 @@
+package com.example.brzodolokacije.Models
+
+data class ListItemModel (
+ val id:Int ,
+ val name: String
+ ) \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/LocationTypes.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/LocationTypes.kt
new file mode 100644
index 0000000..c599dae
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/LocationTypes.kt
@@ -0,0 +1,4 @@
+package com.example.brzodolokacije.Models
+
+enum class LocationTypes {
+} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt
new file mode 100644
index 0000000..9c0eae1
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/Post.kt
@@ -0,0 +1,12 @@
+package com.example.brzodolokacije.Models
+
+import java.util.*
+
+data class Post (
+ var _id:String,
+ var creationDate: Date,
+ var country:String,//drzava
+ var city:String,
+ var location:String,//naziv grada/naziv planine/naziv jezera/.......
+ var type:LocationTypes //tip lokacije
+ ) \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/User.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/User.kt
new file mode 100644
index 0000000..52090f9
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/User.kt
@@ -0,0 +1,23 @@
+package com.example.brzodolokacije.Models
+
+import java.util.Date
+
+data class User (
+ var _id:String,
+ var name:String,
+ var username:String,
+ var email:String,
+ var emailToken:String,
+ var verified:Boolean,
+ var password:String,
+ var creationDate:Date,
+
+ //profil
+ var followers:List<User>,
+ var followersNumber:Int,
+ var following:List<User>,
+ var followingNumber:Int,
+ var postIds:List<Int>,
+ var postNumber:Int
+
+) \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt
new file mode 100644
index 0000000..cc7eb56
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/RetrofitHelper.kt
@@ -0,0 +1,20 @@
+package com.example.brzodolokacije.Services
+
+import com.google.gson.GsonBuilder
+import retrofit2.Retrofit
+import retrofit2.converter.gson.GsonConverterFactory
+
+
+object RetrofitHelper {
+ val baseUrl="http://10.0.2.2:5279"
+ fun getInstance():Retrofit{
+ val gson = GsonBuilder()
+ .setLenient()
+ .create()
+ return Retrofit.Builder().baseUrl(baseUrl)
+ .addConverterFactory(GsonConverterFactory.create(gson))
+ .build()
+ }
+}
+//Usage
+//Api = RetrofitHelper.getInstance().create(class) \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/SharedPreferencesHelper.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/SharedPreferencesHelper.kt
new file mode 100644
index 0000000..a6da94a
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Services/SharedPreferencesHelper.kt
@@ -0,0 +1,42 @@
+package com.example.brzodolokacije.Services
+
+import android.app.Activity
+import android.content.Context
+import android.content.SharedPreferences
+import android.content.SharedPreferences.Editor
+import androidx.fragment.app.FragmentActivity
+
+object SharedPreferencesHelper {
+ val prefName:String="OdysseyPreferences"
+
+ fun getValue(key:String,act: FragmentActivity):String?{
+ var pref:SharedPreferences=act.getSharedPreferences(prefName,Context.MODE_PRIVATE)
+ return pref.getString(key,null)
+ }
+ fun getValue(key:String,act: Activity):String?{
+ var pref:SharedPreferences=act.getSharedPreferences(prefName,Context.MODE_PRIVATE)
+ return pref.getString(key,null)
+ }
+ fun addValue(key:String,value:String,act:FragmentActivity):Boolean{
+ var pref:SharedPreferences=act.getSharedPreferences(prefName,Context.MODE_PRIVATE)
+ var editor:Editor=pref.edit()
+ editor.putString(key,value)
+ return editor.commit()
+ }
+ fun addValue(key:String,value:String,act:Activity):Boolean{
+ var pref:SharedPreferences=act.getSharedPreferences(prefName,Context.MODE_PRIVATE)
+ var editor:Editor=pref.edit()
+ editor.putString(key,value)
+ return editor.commit()
+ }
+ fun removeValue(key:String,act: FragmentActivity):Boolean{
+ var pref:SharedPreferences=act.getSharedPreferences(prefName,Context.MODE_PRIVATE)
+ return pref.edit().remove(key).commit()
+ }
+ fun removeValue(key:String,act: Activity):Boolean{
+ var pref:SharedPreferences=act.getSharedPreferences(prefName,Context.MODE_PRIVATE)
+ return pref.edit().remove(key).commit()
+ }
+
+
+} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000..2b068d1
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,30 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:aapt="http://schemas.android.com/aapt"
+ android:width="108dp"
+ android:height="108dp"
+ android:viewportWidth="108"
+ android:viewportHeight="108">
+ <path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
+ <aapt:attr name="android:fillColor">
+ <gradient
+ android:endX="85.84757"
+ android:endY="92.4963"
+ android:startX="42.9492"
+ android:startY="49.59793"
+ android:type="linear">
+ <item
+ android:color="#44000000"
+ android:offset="0.0" />
+ <item
+ android:color="#00000000"
+ android:offset="1.0" />
+ </gradient>
+ </aapt:attr>
+ </path>
+ <path
+ android:fillColor="#FFFFFF"
+ android:fillType="nonZero"
+ android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
+ android:strokeWidth="1"
+ android:strokeColor="#00000000" />
+</vector> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/b3.jpg b/Client/BrzoDoLokacije/app/src/main/res/drawable/b3.jpg
new file mode 100644
index 0000000..f04899d
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/b3.jpg
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/button_left_radius.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/button_left_radius.xml
new file mode 100644
index 0000000..8ab5223
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/button_left_radius.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <solid android:color="#CCFFFFFF"/>
+ <stroke android:width="2dp" android:color="#FF1C789A"/>
+
+ <corners
+ android:topLeftRadius="100dp"
+ android:topRightRadius="0dp"
+ android:bottomLeftRadius="100dp"
+ android:bottomRightRadius="0dp"
+ />
+</shape> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/button_right_radius.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/button_right_radius.xml
new file mode 100644
index 0000000..9b1ac29
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/button_right_radius.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <solid android:color="#CCFFFFFF"/>
+ <stroke android:width="2dp" android:color="#FF1C789A"/>
+
+ <corners
+ android:topLeftRadius="0dp"
+ android:topRightRadius="100dp"
+ android:bottomLeftRadius="0dp"
+ android:bottomRightRadius="100dp"
+ />
+</shape> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/gradient.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/gradient.xml
new file mode 100644
index 0000000..0e20af4
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/gradient.xml
@@ -0,0 +1,12 @@
+<shape
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:shape="rectangle">
+
+ <gradient
+ android:type="linear"
+ android:startColor="#260D62A9"
+ android:endColor="#D9063739"
+ android:angle="270"
+ />
+
+</shape>
diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_launcher_background.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..07d5da9
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="108dp"
+ android:height="108dp"
+ android:viewportWidth="108"
+ android:viewportHeight="108">
+ <path
+ android:fillColor="#3DDC84"
+ android:pathData="M0,0h108v108h-108z" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M9,0L9,108"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M19,0L19,108"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M29,0L29,108"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M39,0L39,108"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M49,0L49,108"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M59,0L59,108"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M69,0L69,108"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M79,0L79,108"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M89,0L89,108"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M99,0L99,108"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,9L108,9"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,19L108,19"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,29L108,29"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,39L108,39"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,49L108,49"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,59L108,59"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,69L108,69"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,79L108,79"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,89L108,89"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,99L108,99"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M19,29L89,29"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M19,39L89,39"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M19,49L89,49"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M19,59L89,59"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M19,69L89,69"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M19,79L89,79"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M29,19L29,89"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M39,19L39,89"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M49,19L49,89"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M59,19L59,89"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M69,19L69,89"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M79,19L79,89"
+ android:strokeWidth="0.8"
+ android:strokeColor="#33FFFFFF" />
+</vector>
diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/login_register_background_bottom_radius.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/login_register_background_bottom_radius.xml
new file mode 100644
index 0000000..ac29f68
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/login_register_background_bottom_radius.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <solid android:color="#CCFFFFFF"/>
+
+ <padding android:left="2dp"
+ android:top="2dp"
+ android:right="2dp"
+ android:bottom="2dp"/>
+
+ <corners
+ android:topLeftRadius="0dp"
+ android:topRightRadius="0dp"
+ android:bottomLeftRadius="30dp"
+ android:bottomRightRadius="30dp"
+ />
+</shape> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/login_register_background_top_radius.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/login_register_background_top_radius.xml
new file mode 100644
index 0000000..5d71138
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/login_register_background_top_radius.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <solid android:color="#CCFFFFFF"/>
+ <padding android:left="2dp"
+ android:top="2dp"
+ android:right="2dp"
+ android:bottom="2dp"/>
+
+ <corners
+ android:topLeftRadius="30dp"
+ android:topRightRadius="30dp"
+ android:bottomLeftRadius="0dp"
+ android:bottomRightRadius="0dp"
+ />
+</shape> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_cyan_button.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_cyan_button.xml
new file mode 100644
index 0000000..c2c005d
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_cyan_button.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <corners android:radius="100dp"/>
+ <solid android:color="#FF1C789A"></solid>
+</shape>
diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_transparent_button.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_transparent_button.xml
new file mode 100644
index 0000000..5b420a0
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_transparent_button.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <corners android:radius="100dp"/>
+ <solid android:color="#00FFFFFF"></solid>
+</shape>
diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_white_button_login.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_white_button_login.xml
new file mode 100644
index 0000000..1a4c57d
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/rounded_white_button_login.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <solid android:color="#FFFFFF"/>
+ <corners android:radius="100dp"/>
+ <stroke android:width="2dp" android:color="#FF1C789A"/>
+
+</shape> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/switch_login_register_on.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/switch_login_register_on.xml
new file mode 100644
index 0000000..6bf62c6
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/switch_login_register_on.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+ <corners android:radius="100dp"/>
+ <solid android:color="#FFFFFF"></solid>
+ <stroke android:width="2dp" android:color="#FF1C789A"/>
+</shape>
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password.xml
new file mode 100644
index 0000000..5841b49
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context=".Activities.ActivityForgottenPassword">
+
+ <LinearLayout
+ android:layout_width="399dp"
+ android:layout_height="556dp"
+ android:orientation="vertical"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintVertical_bias="0.154">
+
+ <ImageView
+ android:id="@+id/imageView"
+ android:layout_width="match_parent"
+ android:layout_height="300dp"
+ app:srcCompat="@mipmap/ic_launcher_foreground" />
+
+ <TextView
+ android:id="@+id/tvActivityForgottenPasswordText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="Zaboravljena lozinka?"
+ android:textSize="25dp" />
+
+
+ <TextView
+ android:id="@+id/textView2"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="Unesi Email adresu na koju ćemo ti poslati kod za resetovanje." />
+
+ <Space
+ android:layout_width="match_parent"
+ android:layout_height="30dp" />
+
+ <TextView
+ android:id="@+id/textView4"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="Email" />
+
+ <EditText
+ android:id="@+id/editTextTextPersonName"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:ems="10"
+ android:hint="Unesi Email"
+ android:inputType="textPersonName" />
+
+ <Space
+ android:layout_width="match_parent"
+ android:layout_height="30dp" />
+
+ <Button
+ android:id="@+id/forgottenPasswordSendCode"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@drawable/rounded_cyan_button"
+ android:gravity="center"
+ android:text="Pošalji Email za promenu lozinke" />
+
+ <Space
+ android:layout_width="match_parent"
+ android:layout_height="30dp" />
+
+ </LinearLayout>
+
+</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password_verify.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password_verify.xml
new file mode 100644
index 0000000..c652469
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_forgotten_password_verify.xml
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context=".Activities.ActivityForgottenPassword">
+
+ <LinearLayout
+ android:layout_width="398dp"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintVertical_bias="0.154">
+
+ <ImageView
+ android:id="@+id/imageView"
+ android:layout_width="match_parent"
+ android:layout_height="300dp"
+ app:srcCompat="@mipmap/ic_launcher_foreground" />
+
+ <TextView
+ android:id="@+id/tvActivityForgottenPasswordText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="Verifikuj novu lozinku"
+ android:textSize="25dp" />
+
+ <Space
+ android:layout_width="match_parent"
+ android:layout_height="20dp" />
+
+ <TextView
+ android:id="@+id/textView2"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="Unesi kod koji je poslat na email." />
+
+
+ <EditText
+ android:id="@+id/editTextTextPersonName"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:ems="10"
+ android:hint="Unesi kod"
+ android:inputType="textPersonName" />
+
+ <Space
+ android:layout_width="match_parent"
+ android:layout_height="20dp" />
+
+ <TextView
+ android:id="@+id/textViewoldpass"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:text="Nova lozinka" />
+
+ <EditText
+ android:hint="*********"
+ android:id="@+id/editTextoldPassword"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:ems="10"
+ android:inputType="textPassword" />
+
+ <Space
+ android:layout_width="match_parent"
+ android:layout_height="20dp" />
+
+ <TextView
+ android:id="@+id/textViewnewpass"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+
+ android:text="Potvrdi novu lozinku" />
+
+ <EditText
+ android:hint="*********"
+ android:id="@+id/editTextTextPassword"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:ems="10"
+ android:inputType="textPassword" />
+
+ <Space
+ android:layout_width="match_parent"
+ android:layout_height="20dp" />
+
+ <Button
+ android:id="@+id/btnChangePassword"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@drawable/rounded_cyan_button"
+ android:gravity="center"
+ android:text="Promeni lozinku" />
+
+ <Space
+ android:layout_width="match_parent"
+ android:layout_height="30dp" />
+
+ </LinearLayout>
+
+</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_login_register.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_login_register.xml
new file mode 100644
index 0000000..0f82285
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_login_register.xml
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:elevation="0dp"
+ android:background="@drawable/b1"
+ tools:context=".Activities.ActivityLoginRegister">
+
+ <ImageView
+ android:id="@+id/imageView2"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="1.0"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintVertical_bias="1.0"
+ app:srcCompat="@drawable/gradient" />
+
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:background="@drawable/login_register_background_top_radius"
+
+ android:id="@+id/linearLayout"
+ android:layout_width="0dp"
+ android:layout_height="65dp"
+ android:layout_marginStart="50dp"
+ android:layout_marginEnd="50dp"
+ android:gravity="center|center_horizontal"
+ android:orientation="horizontal"
+ app:layout_constraintBottom_toTopOf="@+id/flFragmentActivityLRFragmentsView"
+ app:layout_constraintEnd_toEndOf="@+id/imageView2"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintVertical_bias="1.0">
+
+ <ImageView
+ android:id="@+id/imageView5"
+ android:layout_width="280dp"
+ android:layout_height="40dp"
+ android:background="@drawable/rounded_white_button_login"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintVertical_bias="1.0"></ImageView>
+
+ <android.widget.Button
+ android:id="@+id/btnFragmentActivityLRLogin"
+ android:layout_width="139dp"
+ android:layout_height="40dp"
+ android:background="@drawable/rounded_cyan_button"
+ android:elevation="25dp"
+ android:padding="0dp"
+
+ android:text="Prijavi se"
+ android:textColor="@color/white"
+ app:layout_constraintBottom_toBottomOf="@+id/imageView5"
+ app:layout_constraintEnd_toStartOf="@+id/btnFragmentActivityLRRegister"
+ app:layout_constraintHorizontal_bias="1.0"
+ app:layout_constraintStart_toStartOf="@+id/imageView5"
+ app:layout_constraintTop_toTopOf="@+id/imageView5" />
+
+ <android.widget.Button
+ android:id="@+id/btnFragmentActivityLRRegister"
+ android:layout_width="140dp"
+ android:layout_height="40dp"
+ android:textColor="#FF1C789A"
+ android:background="@drawable/rounded_transparent_button"
+ android:elevation="25dp"
+ android:padding="0dp"
+ android:text="Registruj se"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="@+id/imageView5"
+ app:layout_constraintTop_toTopOf="@+id/imageView5"
+ app:layout_constraintVertical_bias="0.0" />
+
+ </androidx.constraintlayout.widget.ConstraintLayout>
+
+ <FrameLayout
+ android:id="@+id/flFragmentActivityLRFragmentsView"
+ android:layout_width="0dp"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="50dp"
+ android:layout_marginEnd="50dp"
+ android:background="@drawable/login_register_background_bottom_radius"
+ android:elevation="20dp"
+ android:foregroundGravity="center_vertical|center"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="@+id/imageView2"
+ app:layout_constraintVertical_bias="0.411">
+
+
+ </FrameLayout>
+
+
+</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_main.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..312e35d
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context=".MainActivity">
+<TextView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:text="MAIN"
+ />
+</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_navigation.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_navigation.xml
new file mode 100644
index 0000000..afe1bbf
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_navigation.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context=".Activities.NavigationActivity">
+
+ <FrameLayout
+ android:id="@+id/flNavigationFragment"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ app:layout_constraintBottom_toTopOf="@+id/bottomNavigationView"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="0.5"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
+
+ <com.google.android.material.bottomnavigation.BottomNavigationView
+ android:id="@+id/bottomNavigationView"
+ android:layout_width="match_parent"
+ android:layout_height="75dp"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="0.5"
+ app:layout_constraintStart_toStartOf="parent"
+ app:menu="@menu/bottom_nav_menu"/>
+</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_post.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_post.xml
new file mode 100644
index 0000000..2cf3c8c
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_add_post.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context=".Fragments.FragmentAddPost">
+
+ <!-- TODO: Update blank fragment layout -->
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:text="Post Add" />
+
+ <Button
+ android:id="@+id/btnFragmentAddLogOut"
+ android:layout_width="200dp"
+ android:layout_height="40dp"
+ android:layout_marginTop="40dp"
+ android:background="@drawable/rounded_cyan_button"
+ android:backgroundTint="#1C789A"
+ android:text="Log Out" />
+
+</FrameLayout> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_browse.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_browse.xml
new file mode 100644
index 0000000..3287683
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_browse.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context=".Fragments.FragmentBrowse">
+
+ <!-- TODO: Update blank fragment layout -->
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:text="Browse" />
+
+</FrameLayout> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_home.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_home.xml
new file mode 100644
index 0000000..f548fe3
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_home.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context=".Fragments.FragmentHome">
+ <!--
+ RecyclerView holds the items of the list
+ -->
+ <androidx.recyclerview.widget.RecyclerView
+ android:id="@+id/rvMain"
+ android:layout_height="match_parent"
+ android:layout_width="match_parent"
+ app:layout_constraintTop_toTopOf="parent"
+ app:layout_constraintStart_toStartOf="parent"/>
+
+</FrameLayout>
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_login.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_login.xml
new file mode 100644
index 0000000..c45051b
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_login.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_gravity="center_horizontal"
+ tools:context=".Fragments.FragmentLogin">
+
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal"
+
+ android:padding="20dp">
+
+ <TextView
+ android:id="@+id/tvFragimentLoginEmail"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="4dp"
+ android:text="Email"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
+
+ <EditText
+ android:id="@+id/etFragmentLoginEmail"
+ android:layout_width="match_parent"
+ android:layout_height="50dp"
+ android:layout_marginTop="0dp"
+ android:ems="10"
+ android:hint="primer@gmail.com"
+ android:inputType="textEmailAddress"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/tvFragimentLoginEmail" />
+
+ <TextView
+ android:id="@+id/tvFragmentLoginPassword"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="24dp"
+ android:text="Lozinka"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="0.0"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/etFragmentLoginEmail" />
+
+ <EditText
+ android:id="@+id/etFragmentLoginPassword"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="0dp"
+ android:ems="10"
+ android:hint="*********"
+ android:inputType="textPassword"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="1.0"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/tvFragmentLoginPassword" />
+
+ <Button
+ android:id="@+id/btnFragmentLoginLogin"
+ android:layout_width="200dp"
+ android:layout_height="40dp"
+ android:layout_marginTop="40dp"
+ android:background="@drawable/rounded_cyan_button"
+ android:backgroundTint="#1C789A"
+ android:text="Prijavi se"
+ app:layout_constraintDimensionRatio="w,1:1"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/tvFragmentLoginForgottenPassword" />
+
+ <TextView
+ android:id="@+id/tvFragmentLoginForgottenPassword"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="20dp"
+ android:clickable="true"
+ android:text="Zaboravljena lozinka?"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="0.498"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/etFragmentLoginPassword" />
+
+ </androidx.constraintlayout.widget.ConstraintLayout>
+</FrameLayout> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_my_profile_info.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_my_profile_info.xml
new file mode 100644
index 0000000..d20c569
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_my_profile_info.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context=".Fragments.FragmentMyProfileInfo">
+
+ <!-- TODO: Update blank fragment layout -->
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:text="Moji podaci" />
+
+</FrameLayout> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_my_recensions.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_my_recensions.xml
new file mode 100644
index 0000000..d5452b9
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_my_recensions.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context=".Fragments.FragmentMyRecensions">
+
+ <!-- TODO: Update blank fragment layout -->
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:text="Moje recenzije" />
+
+</FrameLayout> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_profile.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_profile.xml
new file mode 100644
index 0000000..e7cccff
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_profile.xml
@@ -0,0 +1,226 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context=".Fragments.FragmentProfile">
+
+
+
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+
+ <ImageView
+
+ android:id="@+id/imageView3"
+ android:layout_width="match_parent"
+ android:layout_height="290dp"
+ android:foreground="@drawable/b3"
+ android:foregroundGravity="center_vertical|center|center_horizontal|fill"
+ android:src="@drawable/b3"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
+
+ <ImageView
+
+ android:id="@+id/imageView4"
+ android:layout_width="411dp"
+ android:layout_height="287dp"
+ app:layout_constraintBottom_toBottomOf="@+id/imageView3"
+ app:layout_constraintEnd_toEndOf="@id/imageView3"
+ app:layout_constraintHorizontal_bias="0.0"
+ app:layout_constraintStart_toStartOf="@+id/imageView3"
+ app:layout_constraintTop_toTopOf="@+id/imageView3"
+ app:layout_constraintVertical_bias="0.0" />
+
+ <com.google.android.material.imageview.ShapeableImageView
+
+ android:id="@+id/tvFragmentProfileInfoContainer"
+ android:layout_width="0dp"
+ android:layout_height="199dp"
+ android:layout_marginStart="20dp"
+ android:layout_marginTop="156dp"
+ android:layout_marginEnd="20dp"
+ android:adjustViewBounds="true"
+ android:background="#E8FFFFFF"
+ android:elevation="20dp"
+ android:scaleType="fitEnd"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="0.494"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="@+id/imageView3"
+ app:shapeAppearanceOverlay="@style/imageViewRoundedEdge" />
+
+
+ <com.google.android.material.imageview.ShapeableImageView
+ android:id="@+id/tvFragmentProfileProfilePicture"
+ android:layout_width="150dp"
+ android:layout_height="150dp"
+ android:layout_gravity="center"
+ android:layout_margin="5dp"
+ android:layout_marginTop="4dp"
+ android:layout_marginEnd="108dp"
+ android:adjustViewBounds="true"
+ android:elevation="21dp"
+ android:scaleType="fitCenter"
+ android:src="@drawable/ic_launcher_background"
+ app:layout_constraintBottom_toTopOf="@+id/tableLayout"
+ app:layout_constraintEnd_toEndOf="@+id/imageView3"
+ app:layout_constraintHorizontal_bias="0.483"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="@+id/imageView3"
+ app:layout_constraintVertical_bias="1.0"
+ app:shapeAppearanceOverlay="@style/imageViewCircle" />
+
+ <TableLayout
+ android:id="@+id/tableLayout"
+ android:layout_width="323dp"
+ android:layout_height="120dp"
+ android:elevation="20dp"
+ android:gravity="center"
+ android:stretchColumns="1"
+ app:layout_constraintBottom_toBottomOf="@+id/tvFragmentProfileInfoContainer"
+ app:layout_constraintEnd_toEndOf="@+id/tvFragmentProfileInfoContainer"
+ app:layout_constraintHorizontal_bias="0.488"
+ app:layout_constraintStart_toStartOf="@+id/tvFragmentProfileInfoContainer">
+
+ <TableRow
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+
+ android:gravity="center">
+
+ <TextView
+ android:id="@+id/tvFragmentProfileName"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:text="Petar Petrović" />
+ </TableRow>
+ <TableRow
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content"
+
+ android:gravity="center">
+
+ <TextView
+ android:id="@+id/tvFragmentProfileUserName"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="center"
+ android:text="#PetarP" />
+ </TableRow>
+ <Space android:layout_height="20dp"></Space>
+
+ <TableRow
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center">
+
+ <TextView
+ android:id="@+id/tvFragmentProfilePosts"
+ android:gravity="center"
+ android:text="OBJAVE" />
+
+ <TextView
+ android:id="@+id/tvFragmentProfileFollowers"
+ android:gravity="center"
+ android:text="PRATIOCI" />
+
+ <TextView
+ android:id="@+id/tvFragmentProfileFollow"
+ android:gravity="center"
+ android:text="PRAĆENJA" />
+ </TableRow>
+
+ <TableRow
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center">
+
+ <TextView
+ android:id="@+id/tvFragmentProfilePostsNo"
+ android:gravity="center"
+ android:text="156" />
+
+ <TextView
+ android:id="@+id/tvFragmentProfileFollowersNo"
+ android:gravity="center"
+ android:text="50" />
+
+ <TextView
+ android:id="@+id/tvFragmentProfileFollowNo"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:gravity="center"
+ android:text="40" />
+ </TableRow>
+ </TableLayout>
+
+ <View
+ android:id="@+id/divider"
+ android:layout_width="409dp"
+ android:layout_height="1dp"
+ android:background="?android:attr/listDivider"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/btnFragmentProfileShowMyPosts" />
+
+ <Button
+ android:id="@+id/btnFragmentProfileShowMyPosts"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="20dp"
+ android:layout_marginTop="4dp"
+ android:backgroundTint="#FFFFFF"
+ android:stateListAnimator="@null"
+ android:text="Objave"
+
+ android:textColor="@color/cardview_dark_background"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/tvFragmentProfileInfoContainer" />
+
+ <Button
+ android:id="@+id/btnFragmentProfileShowMyData"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="4dp"
+ android:layout_marginEnd="20dp"
+ android:backgroundTint="#FFFFFF"
+ android:stateListAnimator="@null"
+ android:text="Podaci"
+
+ android:textColor="@color/cardview_dark_background"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="1.0"
+ app:layout_constraintStart_toEndOf="@+id/btnFragmentProfileShowMyRecensions"
+ app:layout_constraintTop_toBottomOf="@+id/tvFragmentProfileInfoContainer" />
+
+ <FrameLayout
+ android:id="@+id/flFragmentProfileFragmentContainer"
+ android:layout_width="409dp"
+ android:layout_height="319dp"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="@+id/divider">
+
+ </FrameLayout>
+
+ <Button
+ android:id="@+id/btnFragmentProfileShowMyRecensions"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginStart="36dp"
+ android:layout_marginTop="4dp"
+ android:backgroundTint="#FFFFFF"
+ android:stateListAnimator="@null"
+ android:textColor="@color/cardview_dark_background"
+ android:text="Recenzije"
+ app:layout_constraintStart_toEndOf="@+id/btnFragmentProfileShowMyPosts"
+ app:layout_constraintTop_toBottomOf="@+id/tvFragmentProfileInfoContainer" />
+
+ </androidx.constraintlayout.widget.ConstraintLayout>
+</FrameLayout> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_register.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_register.xml
new file mode 100644
index 0000000..c9d50a0
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_register.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context=".Fragments.FragmentRegister"
+ android:layout_gravity="center_horizontal"
+
+>
+
+
+ <!-- TODO: Update blank fragment layout -->
+ <androidx.constraintlayout.widget.ConstraintLayout
+ android:layout_width="match_parent"
+ android:layout_height="432dp"
+ android:layout_gravity="center_horizontal"
+ android:padding="20dp">
+
+ <EditText
+ android:id="@+id/etFragmentRegisterPassword"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:ems="10"
+ android:hint="*********"
+ android:inputType="textPassword"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="0.0"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/tvFragmentRegisterPassword" />
+
+ <EditText
+ android:id="@+id/etFragmentRegisterEmail"
+ android:layout_width="match_parent"
+ android:layout_height="50dp"
+ android:ems="10"
+ android:hint="primer@gmail.com"
+ android:inputType="textEmailAddress"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="0.0"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/tvFragmentRegisterEmail" />
+
+ <TextView
+ android:id="@+id/tvFragmentRegisterPassword"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="8dp"
+ android:text="Lozinka
+"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="0.0"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/etFragmentRegisterEmail" />
+
+ <TextView
+ android:id="@+id/tvFragmentRegisterEmail"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="8dp"
+ android:backgroundTint="#00B8D4"
+ android:text="Email"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintHorizontal_bias="0.0"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/etFragmentRegisterName" />
+
+ <EditText
+ android:id="@+id/etFragmentRegisterUser"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:ems="10"
+ android:hint="PetarP"
+ android:inputType="textPersonName"
+ app:layout_constraintTop_toBottomOf="@+id/tvFragmentRegisterUser"
+ tools:layout_editor_absoluteX="-16dp" />
+
+ <EditText
+ android:id="@+id/etFragmentRegisterName"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:ems="10"
+ android:hint="Petar Petrovic"
+ android:inputType="textPersonName"
+
+ app:layout_constraintTop_toBottomOf="@+id/tvFragmentRegisterName"
+ tools:layout_editor_absoluteX="0dp" />
+
+ <TextView
+ android:id="@+id/tvFragmentRegisterName"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="8dp"
+ android:text="Ime i prezime"
+ app:layout_constraintTop_toBottomOf="@+id/etFragmentRegisterUser"
+ tools:layout_editor_absoluteX="0dp" />
+
+ <TextView
+ android:id="@+id/tvFragmentRegisterUser"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="4dp"
+ android:text="Korisničko ime"
+ app:layout_constraintTop_toTopOf="parent"
+ tools:layout_editor_absoluteX="20dp" />
+
+ <Button
+ android:id="@+id/btnFragmentRegisterRegister"
+ android:layout_width="200dp"
+ android:layout_height="45dp"
+ android:layout_marginTop="48dp"
+ android:background="@drawable/rounded_cyan_button"
+ android:text="Registruj se"
+ android:textSize="16dp"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/etFragmentRegisterPassword" />
+
+ </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+ />
+</FrameLayout> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_posts.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_posts.xml
new file mode 100644
index 0000000..185719b
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/fragment_user_posts.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context=".Fragments.FragmentUserPosts">
+
+ <!-- TODO: Update blank fragment layout -->
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:text="@string/hello_blank_fragment" />
+
+</FrameLayout> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/list_item.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/list_item.xml
new file mode 100644
index 0000000..4ce1a94
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/list_item.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ single item component
+-->
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="#B3E5FC"
+ android:layout_margin="5dp"
+ android:padding="5dp">
+ <TextView
+ android:id="@+id/tvId"
+ android:text="Id"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
+ <TextView
+ android:id="@+id/tvName"
+ android:text="Name"
+ android:layout_marginTop="5dp"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/tvId" />
+</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/menu/bottom_nav_menu.xml b/Client/BrzoDoLokacije/app/src/main/res/menu/bottom_nav_menu.xml
new file mode 100644
index 0000000..da6577e
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/menu/bottom_nav_menu.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+ <item
+ android:id="@+id/navHome"
+ android:title="Home"
+ android:icon="@drawable/ic_nav_home"/>
+ <item
+ android:id="@+id/navBrowse"
+ android:title="Browse"
+ android:icon="@drawable/ic_nav_browse"/>
+ <item
+ android:id="@+id/navAddPost"
+ android:title="Post"
+ android:icon="@drawable/ic_nav_addpost"/>
+ <item
+ android:id="@+id/navProfile"
+ android:title="Profile"
+ android:icon="@drawable/ic_nav_profile"/>
+</menu> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/Client/BrzoDoLokacije/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@drawable/ic_launcher_background" />
+ <foreground android:drawable="@drawable/ic_launcher_foreground" />
+</adaptive-icon> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/Client/BrzoDoLokacije/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@drawable/ic_launcher_background" />
+ <foreground android:drawable="@drawable/ic_launcher_foreground" />
+</adaptive-icon> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/Client/BrzoDoLokacije/app/src/main/res/mipmap-hdpi/ic_launcher.webp
new file mode 100644
index 0000000..c209e78
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/mipmap-hdpi/ic_launcher.webp
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/Client/BrzoDoLokacije/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..b2dfe3d
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/Client/BrzoDoLokacije/app/src/main/res/mipmap-mdpi/ic_launcher.webp
new file mode 100644
index 0000000..4f0f1d6
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/mipmap-mdpi/ic_launcher.webp
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/Client/BrzoDoLokacije/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..62b611d
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/Client/BrzoDoLokacije/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
new file mode 100644
index 0000000..948a307
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/mipmap-xhdpi/ic_launcher.webp
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/Client/BrzoDoLokacije/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..1b9a695
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/Client/BrzoDoLokacije/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
new file mode 100644
index 0000000..28d4b77
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/Client/BrzoDoLokacije/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..9287f50
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/Client/BrzoDoLokacije/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
new file mode 100644
index 0000000..aa7d642
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/Client/BrzoDoLokacije/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
new file mode 100644
index 0000000..9126ae3
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/main/res/values-night/themes.xml b/Client/BrzoDoLokacije/app/src/main/res/values-night/themes.xml
new file mode 100644
index 0000000..b963a50
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/values-night/themes.xml
@@ -0,0 +1,16 @@
+<resources xmlns:tools="http://schemas.android.com/tools">
+ <!-- Base application theme.
+ <style name="Theme.BrzoDoLokacije" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
+
+ <item name="colorPrimary">@color/white</item>
+ <item name="colorPrimaryVariant">@color/purple_700</item>
+ <item name="colorOnPrimary">#071935</item>
+
+ <item name="colorSecondary">@color/teal_200</item>
+ <item name="colorSecondaryVariant">@color/teal_200</item>
+ <item name="colorOnSecondary">#071935</item>
+
+ <item name="android:statusBarColor">#143257</item>
+
+ </style>-->
+</resources> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/values/colors.xml b/Client/BrzoDoLokacije/app/src/main/res/values/colors.xml
new file mode 100644
index 0000000..588b9cf
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/values/colors.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <color name="purple_200">#FFBB86FC</color>
+ <color name="purple_500">#1C789A</color>
+ <color name="purple_700">#1C789A</color>
+ <color name="teal_200">#FF03DAC5</color>
+ <color name="teal_700">#FF018786</color>
+ <color name="black">#FF000000</color>
+ <color name="white">#FFFFFFFF</color>
+
+</resources> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/values/strings.xml b/Client/BrzoDoLokacije/app/src/main/res/values/strings.xml
new file mode 100644
index 0000000..d7b376c
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/values/strings.xml
@@ -0,0 +1,6 @@
+<resources>
+ <string name="app_name">Brzo Do Lokacije</string>
+ <!-- TODO: Remove or change this placeholder text -->
+ <string name="hello_blank_fragment">Hello blank fragment</string>
+ <string name="dim">16dp</string>
+</resources> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/values/styles.xml b/Client/BrzoDoLokacije/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000..2dee0ab
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/values/styles.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <style name="imageViewCircle" parent="">
+ <item name="cornerFamily">rounded</item>
+ <item name="cornerSize">70dp</item>
+ <item name="color">@color/white</item>
+</style>
+ <style name="imageViewRoundedEdge" parent="">
+ <item name="cornerFamily">rounded</item>
+ <item name="cornerSize">15dp</item>
+ <item name="color">@color/white</item>
+ </style>
+</resources> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/values/themes.xml b/Client/BrzoDoLokacije/app/src/main/res/values/themes.xml
new file mode 100644
index 0000000..6193009
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/values/themes.xml
@@ -0,0 +1,15 @@
+<resources xmlns:tools="http://schemas.android.com/tools">
+ <style name="Theme.BrzoDoLokacije" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
+
+ <item name="colorPrimary">@color/purple_500</item>
+ <item name="colorPrimaryVariant">@color/purple_700</item>
+ <item name="colorOnPrimary">@color/white</item>
+
+ <item name="colorSecondary">@color/teal_200</item>
+ <item name="colorSecondaryVariant">@color/teal_700</item>
+ <item name="colorOnSecondary">@color/black</item>
+
+ <item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
+
+ </style>
+</resources> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/xml/backup_rules.xml b/Client/BrzoDoLokacije/app/src/main/res/xml/backup_rules.xml
new file mode 100644
index 0000000..fa0f996
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/xml/backup_rules.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ Sample backup rules file; uncomment and customize as necessary.
+ See https://developer.android.com/guide/topics/data/autobackup
+ for details.
+ Note: This file is ignored for devices older that API 31
+ See https://developer.android.com/about/versions/12/backup-restore
+-->
+<full-backup-content>
+ <!--
+ <include domain="sharedpref" path="."/>
+ <exclude domain="sharedpref" path="device.xml"/>
+-->
+</full-backup-content> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/xml/data_extraction_rules.xml b/Client/BrzoDoLokacije/app/src/main/res/xml/data_extraction_rules.xml
new file mode 100644
index 0000000..9ee9997
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/xml/data_extraction_rules.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+ Sample data extraction rules file; uncomment and customize as necessary.
+ See https://developer.android.com/about/versions/12/backup-restore#xml-changes
+ for details.
+-->
+<data-extraction-rules>
+ <cloud-backup>
+ <!-- TODO: Use <include> and <exclude> to control what is backed up.
+ <include .../>
+ <exclude .../>
+ -->
+ </cloud-backup>
+ <!--
+ <device-transfer>
+ <include .../>
+ <exclude .../>
+ </device-transfer>
+ -->
+</data-extraction-rules> \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/test/java/com/example/brzodolokacije/ExampleUnitTest.kt b/Client/BrzoDoLokacije/app/src/test/java/com/example/brzodolokacije/ExampleUnitTest.kt
new file mode 100644
index 0000000..3bc92cd
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/test/java/com/example/brzodolokacije/ExampleUnitTest.kt
@@ -0,0 +1,17 @@
+package com.example.brzodolokacije
+
+import org.junit.Test
+
+import org.junit.Assert.*
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+class ExampleUnitTest {
+ @Test
+ fun addition_isCorrect() {
+ assertEquals(4, 2 + 2)
+ }
+} \ No newline at end of file