diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 17e4369..1719529 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -43,7 +43,11 @@ implementation(libs.recyclerview) implementation(libs.retrofit2.retrofit) implementation(libs.converter.jackson) + implementation(libs.navigation.runtime.android) testImplementation(libs.junit) androidTestImplementation(libs.ext.junit) androidTestImplementation(libs.espresso.core) + implementation(libs.navigation.fragment) + implementation(libs.navigation.ui) + } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 041ace3..2179e9b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,20 +17,22 @@ android:name=".views.LoginActivity" /> - + + + - - - + + - - - - + + + diff --git a/app/src/main/java/com/example/tampopo_client/ui/dashboard/DashboardFragment.java b/app/src/main/java/com/example/tampopo_client/ui/dashboard/DashboardFragment.java new file mode 100644 index 0000000..2dcc990 --- /dev/null +++ b/app/src/main/java/com/example/tampopo_client/ui/dashboard/DashboardFragment.java @@ -0,0 +1,37 @@ +package com.example.tampopo_client.ui.dashboard; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; + +import com.example.tampopo_client.databinding.FragmentDashboardBinding; + +public class DashboardFragment extends Fragment { + + private FragmentDashboardBinding binding; + + public View onCreateView(@NonNull LayoutInflater inflater, + ViewGroup container, Bundle savedInstanceState) { + DashboardViewModel dashboardViewModel = + new ViewModelProvider(this).get(DashboardViewModel.class); + + binding = FragmentDashboardBinding.inflate(inflater, container, false); + View root = binding.getRoot(); + + final TextView textView = binding.textDashboard; + dashboardViewModel.getText().observe(getViewLifecycleOwner(), textView::setText); + return root; + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + binding = null; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/tampopo_client/ui/dashboard/DashboardViewModel.java b/app/src/main/java/com/example/tampopo_client/ui/dashboard/DashboardViewModel.java new file mode 100644 index 0000000..34b0dde --- /dev/null +++ b/app/src/main/java/com/example/tampopo_client/ui/dashboard/DashboardViewModel.java @@ -0,0 +1,19 @@ +package com.example.tampopo_client.ui.dashboard; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +public class DashboardViewModel extends ViewModel { + + private final MutableLiveData mText; + + public DashboardViewModel() { + mText = new MutableLiveData<>(); + mText.setValue("This is dashboard fragment"); + } + + public LiveData getText() { + return mText; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/tampopo_client/ui/home/HomeFragment.java b/app/src/main/java/com/example/tampopo_client/ui/home/HomeFragment.java new file mode 100644 index 0000000..e753b82 --- /dev/null +++ b/app/src/main/java/com/example/tampopo_client/ui/home/HomeFragment.java @@ -0,0 +1,37 @@ +package com.example.tampopo_client.ui.home; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.ViewModelProvider; + +import com.example.tampopo_client.databinding.FragmentHomeBinding; + +public class HomeFragment extends Fragment { + + private FragmentHomeBinding binding; + + public View onCreateView(@NonNull LayoutInflater inflater, + ViewGroup container, Bundle savedInstanceState) { + HomeViewModel homeViewModel = + new ViewModelProvider(this).get(HomeViewModel.class); + + binding = FragmentHomeBinding.inflate(inflater, container, false); + View root = binding.getRoot(); + + final TextView textView = binding.textHome; + homeViewModel.getText().observe(getViewLifecycleOwner(), textView::setText); + return root; + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + binding = null; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/tampopo_client/ui/home/HomeViewModel.java b/app/src/main/java/com/example/tampopo_client/ui/home/HomeViewModel.java new file mode 100644 index 0000000..317e835 --- /dev/null +++ b/app/src/main/java/com/example/tampopo_client/ui/home/HomeViewModel.java @@ -0,0 +1,19 @@ +package com.example.tampopo_client.ui.home; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +public class HomeViewModel extends ViewModel { + + private final MutableLiveData mText; + + public HomeViewModel() { + mText = new MutableLiveData<>(); + mText.setValue("This is home fragment"); + } + + public LiveData getText() { + return mText; + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/tampopo_client/views/FriendActivity.java b/app/src/main/java/com/example/tampopo_client/views/FriendActivity.java index c7bb399..4e60537 100644 --- a/app/src/main/java/com/example/tampopo_client/views/FriendActivity.java +++ b/app/src/main/java/com/example/tampopo_client/views/FriendActivity.java @@ -1,26 +1,58 @@ package com.example.tampopo_client.views; import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; import androidx.activity.EdgeToEdge; +import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; +import androidx.lifecycle.ViewModelProvider; +import androidx.navigation.NavController; +import androidx.navigation.Navigation; +import com.example.tampopo_client.databinding.ActivityFriendBinding; +import androidx.navigation.ui.AppBarConfiguration; +import androidx.navigation.ui.NavigationUI; import com.example.tampopo_client.R; +import com.google.android.material.bottomnavigation.BottomNavigationView; public class FriendActivity extends AppCompatActivity { - + private ActivityFriendBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - EdgeToEdge.enable(this); - setContentView(R.layout.activity_friend); - ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { - Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); - v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); - return insets; - }); + +// EdgeToEdge.enable(this); +// setContentView(R.layout.activity_friend); +// ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { +// Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); +// v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); +// return insets; +// }); +// } + binding = ActivityFriendBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + + Toolbar toolbar = findViewById(R.id.actionbar); + setSupportActionBar(toolbar); + + BottomNavigationView navView = findViewById(R.id.nav_view); + // Passing each menu ID as a set of Ids because each + // menu should be considered as top level destinations. + AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder( + R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications) + .build(); + NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_activity_main); + NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration); + NavigationUI.setupWithNavController(binding.navView, navController); } + + } \ No newline at end of file diff --git a/app/src/main/java/com/example/tampopo_client/views/LaunchActivity.java b/app/src/main/java/com/example/tampopo_client/views/LaunchActivity.java index 3c966e0..d36fa48 100644 --- a/app/src/main/java/com/example/tampopo_client/views/LaunchActivity.java +++ b/app/src/main/java/com/example/tampopo_client/views/LaunchActivity.java @@ -25,7 +25,7 @@ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); - Button button_register = (Button) findViewById(R.id.Registerbutton); + Button button_register = (Button) findViewById(R.id.Newregistationbutton); button_register.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { @@ -33,5 +33,13 @@ startActivity(intent); } }); + button_register = (Button) findViewById(R.id.Loginbutton); + button_register.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(LaunchActivity.this,LoginActivity.class); + startActivity(intent); + } + }); } } diff --git a/app/src/main/java/com/example/tampopo_client/views/RegisterActivity.java b/app/src/main/java/com/example/tampopo_client/views/RegisterActivity.java index 16cf924..4ba2800 100644 --- a/app/src/main/java/com/example/tampopo_client/views/RegisterActivity.java +++ b/app/src/main/java/com/example/tampopo_client/views/RegisterActivity.java @@ -1,6 +1,9 @@ package com.example.tampopo_client.views; +import android.content.Intent; import android.os.Bundle; +import android.view.View; +import android.widget.Button; import androidx.activity.EdgeToEdge; import androidx.appcompat.app.AppCompatActivity; @@ -22,5 +25,21 @@ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); + Button button_register = (Button) findViewById(R.id.Registerbutton); + button_register.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(RegisterActivity.this,LoginActivity.class); + startActivity(intent); + } + }); + button_register = (Button) findViewById(R.id.Loginbutton2); + button_register.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Intent intent = new Intent(RegisterActivity.this,LoginActivity.class); + startActivity(intent); + } + }); } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_friend.xml b/app/src/main/res/layout/activity_friend.xml index 79295c8..6f2939d 100644 --- a/app/src/main/res/layout/activity_friend.xml +++ b/app/src/main/res/layout/activity_friend.xml @@ -1,10 +1,86 @@ + android:paddingTop="?attr/actionBarSize"> - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_launch.xml b/app/src/main/res/layout/activity_launch.xml index e11fd8c..7ccbd4b 100644 --- a/app/src/main/res/layout/activity_launch.xml +++ b/app/src/main/res/layout/activity_launch.xml @@ -13,7 +13,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="tampopo" - android:textSize="25dp" + android:textSize="45dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.498" @@ -22,22 +22,24 @@ app:layout_constraintVertical_bias="0.276" />