Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ dependencies {
implementation 'me.relex:circleindicator:2.1.6'
implementation 'com.github.bumptech.glide:glide:4.15.1'
implementation 'androidx.work:work-runtime-ktx:2.7.1'
implementation "androidx.recyclerview:recyclerview:1.2.1"
constraints {
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.8.0") {
because("kotlin-stdlib-jdk7 is now a part of kotlin-stdlib")
Expand Down
4 changes: 4 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@
android:supportsRtl="true"
android:theme="@style/Theme.CringeMPOne"
tools:targetApi="31">
<activity
android:name=".ui.person.PersonActivity"
android:exported="false" />
<activity
android:name=".ui.search.SearchResult"
android:exported="false" />
Expand Down Expand Up @@ -51,6 +54,7 @@
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>

<service
android:name=".api.BaseAPIService"
android:enabled="true"
Expand Down
42 changes: 17 additions & 25 deletions app/src/main/java/com/ltdd/cringempone/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,28 +43,29 @@
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.ltdd.cringempone.databinding.ActivityMainBinding;
import com.ltdd.cringempone.service.LocalStorageService;
import com.ltdd.cringempone.service.MediaControlReceiver;
import com.ltdd.cringempone.ui.activity.LoginActivity;
import com.ltdd.cringempone.ui.activity.RegisterActivity;
import com.ltdd.cringempone.ui.homebottom.HomeFragmentBottom;
import com.ltdd.cringempone.ui.person.PersonActivity;
import com.ltdd.cringempone.ui.person.PersonFragment;
import com.ltdd.cringempone.ui.search.SearchResult;
import com.ltdd.cringempone.ui.settings.SettingsFragment;
import com.ltdd.cringempone.ui.slideshow.SlideshowFragment;
import com.ltdd.cringempone.utils.CoreHelper;

import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;

public class MainActivity extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener {

private AppBarConfiguration mAppBarConfiguration;

private ActivityMainBinding binding;

BottomNavigationView bottomNavigationView;
PersonFragment personFragment = new PersonFragment();
HomeFragmentBottom homeFragmentBottom = new HomeFragmentBottom();

SlideshowFragment slideshowFragment = new SlideshowFragment();

TextView tvName;
TextView tvEmail;
ImageView imgAvatar;
Expand Down Expand Up @@ -114,19 +115,16 @@ protected void onCreate(Bundle savedInstanceState) {
bottomNavigationView.setOnItemSelectedListener(new NavigationBarView.OnItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment fragment;
switch (item.getItemId()) {
case R.id.person:
fragment = new PersonFragment();
Intent intent = new Intent(MainActivity.this, PersonActivity.class);
startActivity(intent);
setTitle("Cá Nhân");
binding.navView.getMenu().findItem(R.id.nav_gallery).setChecked(true);
loadFragment(fragment);
return true;
case R.id.home:
fragment = new HomeFragmentBottom();
binding.navView.getMenu().findItem(R.id.nav_home).setChecked(true);
setTitle("Trang Chủ");
loadFragment(fragment);
return true;
}
return true;
Expand All @@ -150,23 +148,14 @@ public void addControl(){
NavigationUI.setupWithNavController(navigationView, navController);
bottomNavigationView = findViewById(R.id.bottomNavigationView);
bottomNavigationView.setOnNavigationItemSelectedListener(this);
bottomNavigationView.setSelectedItemId(R.id.person);

tvName = navigationView.getHeaderView(0).findViewById(R.id.name);
tvEmail = navigationView.getHeaderView(0).findViewById(R.id.email);
imgAvatar = navigationView.getHeaderView(0).findViewById(R.id.imageView);

showUserInformation();
navClick();

bottomNavigationView.setSelectedItemId(R.id.home);
bottomNavigationView.getMenu().findItem(R.id.home).setChecked(true);
new Timer().schedule(new TimerTask() {
@Override
public void run() {
LocalStorageService.getInstance().putString("isConnect", Boolean.toString(CoreHelper.isConnected(getBaseContext())));
}
}, 0, 5000);
bottomNavigationView.setSelectedItemId(R.id.home);
}

private void navClick()
Expand All @@ -192,6 +181,13 @@ public boolean onNavigationItemSelected(@NonNull MenuItem item) {
}
});
}

@Override
protected void onStart() {
super.onStart();
Log.i(TAG, "onStart: " + testRs[0]);
}

@Override
protected void onResume() {
super.onResume();
Expand Down Expand Up @@ -238,10 +234,7 @@ public boolean onNavigationItemSelected(@NonNull MenuItem item) {

switch (item.getItemId()) {
case R.id.nav_gallery:
loadFragment(personFragment);
bottomNavigationView.getMenu().findItem(R.id.home).setChecked(false);
bottomNavigationView.getMenu().findItem(R.id.person).setChecked(true);
bottomNavigationView.setSelectedItemId(R.id.person);
startActivity(new Intent(MainActivity.this, LoginActivity.class));
return true;
case R.id.nav_home:
loadFragment(homeFragmentBottom);
Expand Down Expand Up @@ -320,5 +313,4 @@ public void openGallery()
intent.setAction(Intent.ACTION_GET_CONTENT);
activityResultLauncher.launch(Intent.createChooser(intent, "Select picture"));
}

}
110 changes: 82 additions & 28 deletions app/src/main/java/com/ltdd/cringempone/ui/gallery/GalleryFragment.java
Original file line number Diff line number Diff line change
@@ -1,35 +1,89 @@
package com.ltdd.cringempone.ui.gallery;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.google.android.material.snackbar.Snackbar;
import com.google.android.material.navigation.NavigationView;

import androidx.annotation.Nullable;
import androidx.navigation.NavController;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.appcompat.app.AppCompatActivity;

import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;

import com.ltdd.cringempone.R;
import com.ltdd.cringempone.databinding.FragmentGalleryBinding;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.ltdd.cringempone.R;
import com.ltdd.cringempone.api.BaseAPIService;
import com.ltdd.cringempone.data.dto.ItemDTO;
import com.ltdd.cringempone.data.dto.TopDTO;
import com.ltdd.cringempone.databinding.Top100ChildrenItemBinding;
import com.ltdd.cringempone.service.LocalStorageService;
import com.ltdd.cringempone.ui.musicplayer.adapter.ParentItemAdapter;
import com.ltdd.cringempone.ui.musicplayer.model.ChildItem;
import com.ltdd.cringempone.ui.musicplayer.model.ParentItem;
import com.ltdd.cringempone.utils.CoreHelper;
import com.ltdd.cringempone.databinding.FragmentTop100Binding;

import java.util.ArrayList;
import java.util.List;

public class GalleryFragment extends Fragment {
View view;
@Nullable
private ArrayList<TopDTO> top100s;
public static com.ltdd.cringempone.ui.home.HomeFragment newInstance() {
return new com.ltdd.cringempone.ui.home.HomeFragment();
}
private FragmentTop100Binding binding;
private Top100ChildrenItemBinding childrenItemBinding;

@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_person, container, false);
return view;
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
binding = FragmentTop100Binding.inflate(inflater, container, false);
RecyclerView parentRecycleViewItem = binding.getRoot().findViewById(R.id.top100_parent_recyclerview);
if (LocalStorageService.getInstance().getString("top100s").contains("error") || LocalStorageService.getInstance().getString("top100s").equals("")){
top100s = BaseAPIService.getInstance().getTop100List(BaseAPIService.getInstance().getRequest("top100"));
}
else{
top100s = BaseAPIService.getInstance().getTop100List(LocalStorageService.getInstance().getString("top100s"));
}
if(top100s != null){
LinearLayoutManager layoutManager = new LinearLayoutManager(binding.getRoot().getContext());
ParentItemAdapter parentItemAdapter = new ParentItemAdapter(ParentItemList(top100s));

parentRecycleViewItem.setAdapter(parentItemAdapter);
parentRecycleViewItem.setLayoutManager(layoutManager);
}
return binding.getRoot();
}
private List<ParentItem> ParentItemList(ArrayList<TopDTO> top100s) {
List<ParentItem> itemList = new ArrayList<>();
top100s.forEach((x) ->{
ParentItem item = new ParentItem(
x.title,
ChildItemList(x.items));
itemList.add(item);
});
return itemList;
}

// Method to pass the arguments
// for the elements
// of child RecyclerView
private List<ChildItem> ChildItemList(ArrayList<ItemDTO> top100)
{
List<ChildItem> ChildItemList = new ArrayList<>();
top100.forEach((x) ->{
ChildItemList.add(new ChildItem(x.encodeId, x.title, x.thumbnail));
});
return ChildItemList;
}
@Override
public void onResume() {
super.onResume();
}

@Override
public void onDestroyView() {
super.onDestroyView();
}

}
Original file line number Diff line number Diff line change
@@ -1,89 +1,25 @@
package com.ltdd.cringempone.ui.homebottom;
import android.os.Bundle;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.ltdd.cringempone.R;

import com.ltdd.cringempone.R;
import com.ltdd.cringempone.api.BaseAPIService;
import com.ltdd.cringempone.data.dto.ItemDTO;
import com.ltdd.cringempone.data.dto.TopDTO;
import com.ltdd.cringempone.databinding.Top100ChildrenItemBinding;
import com.ltdd.cringempone.service.LocalStorageService;
import com.ltdd.cringempone.ui.musicplayer.adapter.ParentItemAdapter;
import com.ltdd.cringempone.ui.musicplayer.model.ChildItem;
import com.ltdd.cringempone.ui.musicplayer.model.ParentItem;
import com.ltdd.cringempone.utils.CoreHelper;
import com.ltdd.cringempone.databinding.FragmentTop100Binding;

import java.util.ArrayList;
import java.util.List;

public class HomeFragmentBottom extends Fragment {
private ArrayList<TopDTO> top100s;
public static HomeFragmentBottom newInstance() {
return new HomeFragmentBottom();
}
private FragmentTop100Binding binding;
private Top100ChildrenItemBinding childrenItemBinding;

@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
binding = FragmentTop100Binding.inflate(inflater, container, false);
RecyclerView parentRecycleViewItem = binding.getRoot().findViewById(R.id.top100_parent_recyclerview);
if (LocalStorageService.getInstance().getString("top100s").contains("error") || LocalStorageService.getInstance().getString("top100s").equals("")){
top100s = BaseAPIService.getInstance().getTop100List(BaseAPIService.getInstance().getRequest("top100"));
}
else{
top100s = BaseAPIService.getInstance().getTop100List(LocalStorageService.getInstance().getString("top100s"));
}
if(top100s != null){
LinearLayoutManager layoutManager = new LinearLayoutManager(binding.getRoot().getContext());
ParentItemAdapter parentItemAdapter = new ParentItemAdapter(ParentItemList(top100s));

parentRecycleViewItem.setAdapter(parentItemAdapter);
parentRecycleViewItem.setLayoutManager(layoutManager);
}
return binding.getRoot();
}
private List<ParentItem> ParentItemList(ArrayList<TopDTO> top100s) {
List<ParentItem> itemList = new ArrayList<>();
top100s.forEach((x) ->{
ParentItem item = new ParentItem(
x.title,
ChildItemList(x.items));
itemList.add(item);
});
return itemList;
}

// Method to pass the arguments
// for the elements
// of child RecyclerView
private List<ChildItem> ChildItemList(ArrayList<ItemDTO> top100)
{
List<ChildItem> ChildItemList = new ArrayList<>();
top100.forEach((x) ->{
ChildItemList.add(new ChildItem(x.encodeId, x.title, x.thumbnail));
});
return ChildItemList;
}
@Override
public void onResume() {
super.onResume();
}
View view;

@Nullable
@Override
public void onDestroyView() {
super.onDestroyView();
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_home_bottom, container, false);
return view;
}

}
}
Loading