diff --git a/app/src/main/java/org/mian/gitnex/activities/MainActivity.java b/app/src/main/java/org/mian/gitnex/activities/MainActivity.java index 446664b7..19dfcd6e 100644 --- a/app/src/main/java/org/mian/gitnex/activities/MainActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/MainActivity.java @@ -46,7 +46,6 @@ import org.mian.gitnex.fragments.MyProfileFragment; import org.mian.gitnex.fragments.RepositoriesFragment; import org.mian.gitnex.fragments.SettingsFragment; import org.mian.gitnex.fragments.StarredRepositoriesFragment; -import org.mian.gitnex.fragments.UserAccountsFragment; import org.mian.gitnex.helpers.AlertDialogs; import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.Authorization; @@ -173,9 +172,6 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig else if(fragmentById instanceof AdministrationFragment) { toolbarTitle.setText(getResources().getString(R.string.pageTitleAdministration)); } - else if(fragmentById instanceof UserAccountsFragment) { - toolbarTitle.setText(getResources().getString(R.string.pageTitleUserAccounts)); - } getNotificationsCount(instanceToken); @@ -218,7 +214,7 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig RecyclerView navRecyclerViewUserAccounts = hView.findViewById(R.id.userAccounts); UserAccountsNavAdapter adapterUserAccounts; - adapterUserAccounts = new UserAccountsNavAdapter(ctx, userAccountsList, drawer, toolbarTitle); + adapterUserAccounts = new UserAccountsNavAdapter(ctx, userAccountsList, drawer); userAccountsApi.getAllAccounts().observe((AppCompatActivity) ctx, userAccounts -> { if(userAccounts.size() > 0) { diff --git a/app/src/main/java/org/mian/gitnex/adapters/UserAccountsAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/UserAccountsAdapter.java index 1e5d9dac..ecfc5422 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/UserAccountsAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/UserAccountsAdapter.java @@ -2,6 +2,7 @@ package org.mian.gitnex.adapters; import android.annotation.SuppressLint; import android.app.Activity; +import android.app.Dialog; import android.content.Context; import android.view.LayoutInflater; import android.view.View; @@ -33,6 +34,7 @@ public class UserAccountsAdapter extends RecyclerView.Adapter userAccountsList; private final Context context; private TinyDB tinyDB; + private final Dialog dialog; class UserAccountsViewHolder extends RecyclerView.ViewHolder { @@ -85,6 +87,7 @@ public class UserAccountsAdapter extends RecyclerView.Adapter userAccountsListMain) { - + public UserAccountsAdapter(Context ctx, List userAccountsListMain, Dialog dialog) { + this.dialog = dialog; this.context = ctx; this.userAccountsList = userAccountsListMain; } diff --git a/app/src/main/java/org/mian/gitnex/adapters/UserAccountsListDialogAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/UserAccountsListDialogAdapter.java deleted file mode 100644 index 5f34e4fb..00000000 --- a/app/src/main/java/org/mian/gitnex/adapters/UserAccountsListDialogAdapter.java +++ /dev/null @@ -1,77 +0,0 @@ -package org.mian.gitnex.adapters; - -import android.content.Context; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ArrayAdapter; -import android.widget.ImageView; -import android.widget.TextView; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import org.mian.gitnex.R; -import org.mian.gitnex.clients.PicassoService; -import org.mian.gitnex.database.models.UserAccount; -import org.mian.gitnex.helpers.AppUtil; -import org.mian.gitnex.helpers.RoundedTransformation; -import org.mian.gitnex.helpers.TinyDB; -import java.util.List; -import io.mikael.urlbuilder.UrlBuilder; - -/** - * Author M M Arif - */ - -public class UserAccountsListDialogAdapter extends ArrayAdapter { - - private final Context context; - private final TinyDB tinyDB; - private final List userAccounts; - - public UserAccountsListDialogAdapter(@NonNull Context ctx, int resource, @NonNull List userAccounts) { - - super(ctx, resource, userAccounts); - - tinyDB = TinyDB.getInstance(ctx); - this.userAccounts = userAccounts; - this.context = ctx; - } - - @NonNull - @Override - public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { - - if(convertView == null) { - convertView = LayoutInflater.from(context).inflate(R.layout.custom_user_accounts_list, parent, false); - } - - ImageView profileImage = convertView.findViewById(R.id.profileImage); - TextView userName = convertView.findViewById(R.id.userName); - TextView accountUrl = convertView.findViewById(R.id.accountUrl); - ImageView activeAccount = convertView.findViewById(R.id.activeAccount); - - UserAccount currentItem = userAccounts.get(position); - int imgRadius = AppUtil.getPixelsFromDensity(context, 3); - - String url = UrlBuilder.fromString(currentItem.getInstanceUrl()) - .withPath("/") - .toString(); - - userName.setText(currentItem.getUserName()); - accountUrl.setText(url); - - if(tinyDB.getInt("currentActiveAccountId") == currentItem.getAccountId()) { - activeAccount.setVisibility(View.VISIBLE); - } - else { - activeAccount.setVisibility(View.GONE); - } - - PicassoService - .getInstance(context).get().load(url + "img/favicon.png").placeholder(R.drawable.loader_animated).transform(new RoundedTransformation(imgRadius, 0)).resize(120, 120).centerCrop().into(profileImage); - - return convertView; - - } - -} diff --git a/app/src/main/java/org/mian/gitnex/adapters/UserAccountsNavAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/UserAccountsNavAdapter.java index c315ff41..1f2b642b 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/UserAccountsNavAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/UserAccountsNavAdapter.java @@ -1,28 +1,26 @@ package org.mian.gitnex.adapters; import android.annotation.SuppressLint; -import android.app.Activity; import android.app.Dialog; import android.content.Context; +import android.content.Intent; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.Button; import android.widget.ImageView; -import android.widget.ListView; -import android.widget.TextView; import androidx.annotation.NonNull; -import androidx.appcompat.app.AppCompatActivity; import androidx.drawerlayout.widget.DrawerLayout; +import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import org.mian.gitnex.R; +import org.mian.gitnex.activities.AddNewAccountActivity; import org.mian.gitnex.clients.PicassoService; import org.mian.gitnex.database.models.UserAccount; -import org.mian.gitnex.fragments.UserAccountsFragment; import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.RoundedTransformation; -import org.mian.gitnex.helpers.Toasty; import java.util.List; import io.mikael.urlbuilder.UrlBuilder; @@ -35,14 +33,12 @@ public class UserAccountsNavAdapter extends RecyclerView.Adapter userAccountsList; private final Context context; - private final TextView toolbarTitle; - public UserAccountsNavAdapter(Context ctx, List userAccountsListMain, DrawerLayout drawerLayout, TextView toolbarTitle) { + public UserAccountsNavAdapter(Context ctx, List userAccountsListMain, DrawerLayout drawerLayout) { this.context = ctx; this.userAccountsList = userAccountsListMain; drawer = drawerLayout; - this.toolbarTitle = toolbarTitle; } class UserAccountsViewHolder extends RecyclerView.ViewHolder { @@ -104,42 +100,22 @@ public class UserAccountsNavAdapter extends RecyclerView.Adapter { - - toolbarTitle.setText(context.getResources().getString(R.string.pageTitleUserAccounts)); - AppCompatActivity activity = (AppCompatActivity) context; - activity.getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, new UserAccountsFragment()).commit(); + newAccount.setOnClickListener(item -> { + context.startActivity(new Intent(context, AddNewAccountActivity.class)); dialog.dismiss(); }); - UserAccountsListDialogAdapter arrayAdapter = new UserAccountsListDialogAdapter(context, R.layout.custom_user_accounts_list, allAccountsList); + UserAccountsAdapter arrayAdapter = new UserAccountsAdapter(context, allAccountsList, dialog); + listView.setLayoutManager(new LinearLayoutManager(context)); listView.setAdapter(arrayAdapter); - - listView.setOnItemClickListener((adapterView, view, which, l) -> { - - UserAccount userAccount = allAccountsList.get(which); - - if(AppUtil.switchToAccount(context, userAccount)) { - - String url = UrlBuilder.fromString(userAccount.getInstanceUrl()) - .withPath("/") - .toString(); - - Toasty.success(context, context.getResources().getString(R.string.switchAccountSuccess, userAccount.getUserName(), url)); - ((Activity) context).recreate(); - dialog.dismiss(); - - } - }); - dialog.show(); } diff --git a/app/src/main/java/org/mian/gitnex/fragments/UserAccountsFragment.java b/app/src/main/java/org/mian/gitnex/fragments/UserAccountsFragment.java deleted file mode 100644 index 4f13a352..00000000 --- a/app/src/main/java/org/mian/gitnex/fragments/UserAccountsFragment.java +++ /dev/null @@ -1,112 +0,0 @@ -package org.mian.gitnex.fragments; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import androidx.fragment.app.Fragment; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; -import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; -import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton; -import org.mian.gitnex.R; -import org.mian.gitnex.activities.AddNewAccountActivity; -import org.mian.gitnex.activities.MainActivity; -import org.mian.gitnex.adapters.UserAccountsAdapter; -import org.mian.gitnex.database.api.BaseApi; -import org.mian.gitnex.database.api.UserAccountsApi; -import org.mian.gitnex.database.models.UserAccount; -import org.mian.gitnex.databinding.FragmentUserAccountsBinding; -import java.util.ArrayList; -import java.util.List; - -/** - * Author M M Arif - */ - -public class UserAccountsFragment extends Fragment { - - private Context ctx; - private UserAccountsAdapter adapter; - private RecyclerView mRecyclerView; - private UserAccountsApi userAccountsApi; - private List userAccountsList; - private ExtendedFloatingActionButton addNewAccount; - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - - FragmentUserAccountsBinding fragmentUserAccountsBinding = FragmentUserAccountsBinding.inflate(inflater, container, false); - ctx = getContext(); - setHasOptionsMenu(true); - - ((MainActivity) requireActivity()).setActionBarTitle(getResources().getString(R.string.pageTitleUserAccounts)); - - userAccountsList = new ArrayList<>(); - userAccountsApi = BaseApi.getInstance(ctx, UserAccountsApi.class); - - mRecyclerView = fragmentUserAccountsBinding.recyclerView; - final SwipeRefreshLayout swipeRefresh = fragmentUserAccountsBinding.pullToRefresh; - - mRecyclerView.setHasFixedSize(true); - mRecyclerView.setLayoutManager(new LinearLayoutManager(ctx)); - - DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(mRecyclerView.getContext(), - DividerItemDecoration.VERTICAL); - mRecyclerView.addItemDecoration(dividerItemDecoration); - - adapter = new UserAccountsAdapter(getContext(), userAccountsList); - - swipeRefresh.setOnRefreshListener(() -> new Handler(Looper.getMainLooper()).postDelayed(() -> { - - userAccountsList.clear(); - swipeRefresh.setRefreshing(false); - fetchDataAsync(); - - }, 250)); - - addNewAccount = fragmentUserAccountsBinding.addNewAccount; - addNewAccount.setOnClickListener(view -> { - - Intent intent = new Intent(view.getContext(), AddNewAccountActivity.class); - startActivity(intent); - }); - - fetchDataAsync(); - - return fragmentUserAccountsBinding.getRoot(); - - } - - private void fetchDataAsync() { - - userAccountsApi.getAllAccounts().observe(getViewLifecycleOwner(), userAccounts -> { - - assert userAccounts != null; - if(userAccounts.size() > 0) { - - userAccountsList.clear(); - userAccountsList.addAll(userAccounts); - adapter.notifyDataSetChanged(); - mRecyclerView.setAdapter(adapter); - - } - - }); - - } - - @Override - public void onResume() { - super.onResume(); - userAccountsList.clear(); - fetchDataAsync(); - } - -} diff --git a/app/src/main/res/layout/custom_user_accounts_dialog.xml b/app/src/main/res/layout/custom_user_accounts_dialog.xml index 97110672..9251d39a 100644 --- a/app/src/main/res/layout/custom_user_accounts_dialog.xml +++ b/app/src/main/res/layout/custom_user_accounts_dialog.xml @@ -7,15 +7,17 @@ android:orientation="vertical"> + android:orientation="vertical" + android:padding="16dp"> - + android:layout_height="match_parent" + android:background="?attr/primaryBackgroundColor" + android:scrollbars="vertical" /> @@ -26,13 +28,13 @@ android:background="?attr/dividerColor" />