diff --git a/app/src/main/java/org/mian/gitnex/activities/IssueDetailActivity.java b/app/src/main/java/org/mian/gitnex/activities/IssueDetailActivity.java index e7962d46..e69de29b 100644 --- a/app/src/main/java/org/mian/gitnex/activities/IssueDetailActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/IssueDetailActivity.java @@ -1,546 +0,0 @@ -package org.mian.gitnex.activities; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.widget.Toolbar; -import androidx.lifecycle.Observer; -import androidx.lifecycle.ViewModelProviders; -import androidx.recyclerview.widget.DividerItemDecoration; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; -import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; -import io.noties.markwon.AbstractMarkwonPlugin; -import io.noties.markwon.Markwon; -import io.noties.markwon.core.CorePlugin; -import io.noties.markwon.core.MarkwonTheme; -import io.noties.markwon.ext.strikethrough.StrikethroughPlugin; -import io.noties.markwon.ext.tables.TablePlugin; -import io.noties.markwon.ext.tasklist.TaskListPlugin; -import io.noties.markwon.html.HtmlPlugin; -import io.noties.markwon.image.AsyncDrawable; -import io.noties.markwon.image.DefaultMediaDecoder; -import io.noties.markwon.image.ImageItem; -import io.noties.markwon.image.ImagesPlugin; -import io.noties.markwon.image.SchemeHandler; -import io.noties.markwon.image.gif.GifMediaDecoder; -import io.noties.markwon.image.svg.SvgMediaDecoder; -import io.noties.markwon.linkify.LinkifyPlugin; -import retrofit2.Call; -import retrofit2.Callback; -import retrofit2.Response; -import android.content.Context; -import android.graphics.Color; -import android.graphics.Typeface; -import android.graphics.drawable.Drawable; -import android.net.Uri; -import android.os.Bundle; -import android.os.Handler; -import android.text.Spanned; -import android.util.Log; -import android.view.Gravity; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; -import android.widget.HorizontalScrollView; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.RelativeLayout; -import android.widget.ScrollView; -import android.widget.TextView; -import com.amulyakhare.textdrawable.TextDrawable; -import com.squareup.picasso.Picasso; -import com.vdurmont.emoji.EmojiParser; -import org.mian.gitnex.R; -import org.mian.gitnex.adapters.IssueCommentsAdapter; -import org.mian.gitnex.clients.RetrofitClient; -import org.mian.gitnex.fragments.SingleIssueBottomSheetFragment; -import org.mian.gitnex.helpers.AlertDialogs; -import org.mian.gitnex.helpers.Authorization; -import org.mian.gitnex.helpers.TimeHelper; -import org.mian.gitnex.helpers.UserMentions; -import org.mian.gitnex.models.IssueComments; -import org.mian.gitnex.models.Issues; -import org.mian.gitnex.helpers.ColorInverter; -import org.mian.gitnex.helpers.RoundedTransformation; -import org.mian.gitnex.util.TinyDB; -import org.mian.gitnex.helpers.ClickListener; -import org.mian.gitnex.viewmodels.IssueCommentsViewModel; -import org.ocpsoft.prettytime.PrettyTime; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Locale; -import java.util.Objects; - -/** - * Author M M Arif - */ - -public class IssueDetailActivity extends AppCompatActivity { - - public ImageView closeActivity; - private IssueCommentsAdapter adapter; - private RecyclerView mRecyclerView; - private ImageView assigneeAvatar; - private TextView issueTitle; - private TextView issueDescription; - private TextView issueMilestone; - private TextView issueDueDate; - private TextView issueCreatedTime; - private HorizontalScrollView labelsScrollView; - private HorizontalScrollView assigneesScrollView; - private ScrollView scrollViewComments; - private TextView issueModified; - final Context ctx = this; - private LinearLayout labelsLayout; - private LinearLayout assigneesLayout; - - @Override - protected void onCreate(Bundle savedInstanceState) { - - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_issue_detail); - - final TinyDB tinyDb = new TinyDB(getApplicationContext()); - - final String instanceUrl = tinyDb.getString("instanceUrl"); - final String loginUid = tinyDb.getString("loginUid"); - final String instanceToken = "token " + tinyDb.getString(loginUid + "-token"); - String repoFullName = tinyDb.getString("repoFullName"); - String[] parts = repoFullName.split("/"); - final String repoOwner = parts[0]; - final String repoName = parts[1]; - final int issueIndex = Integer.parseInt(tinyDb.getString("issueNumber")); - - final SwipeRefreshLayout swipeRefresh = findViewById(R.id.pullToRefresh); - - assigneeAvatar = findViewById(R.id.assigneeAvatar); - issueTitle = findViewById(R.id.issueTitle); - issueDescription = findViewById(R.id.issueDescription); - issueMilestone = findViewById(R.id.issueMilestone); - issueDueDate = findViewById(R.id.issueDueDate); - issueCreatedTime = findViewById(R.id.issueCreatedTime); - labelsScrollView = findViewById(R.id.labelsScrollView); - assigneesScrollView = findViewById(R.id.assigneesScrollView); - scrollViewComments = findViewById(R.id.scrollViewComments); - issueModified = findViewById(R.id.issueModified); - labelsLayout = findViewById(R.id.frameLabels); - assigneesLayout = findViewById(R.id.frameAssignees); - - Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - Objects.requireNonNull(getSupportActionBar()).setTitle(repoName); - getSupportActionBar().setDisplayHomeAsUpEnabled(true); - - mRecyclerView = findViewById(R.id.recyclerView); - mRecyclerView.setHasFixedSize(true); - mRecyclerView.setNestedScrollingEnabled(false); - mRecyclerView.setLayoutManager(new LinearLayoutManager(getApplicationContext())); - - DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(mRecyclerView.getContext(), - DividerItemDecoration.VERTICAL); - mRecyclerView.addItemDecoration(dividerItemDecoration); - - swipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { - @Override - public void onRefresh() { - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - swipeRefresh.setRefreshing(false); - IssueCommentsViewModel.loadIssueComments(instanceUrl, Authorization.returnAuthentication(getApplicationContext(), loginUid, instanceToken), repoOwner, repoName, issueIndex); - } - }, 500); - } - }); - - getSingleIssue(instanceUrl, instanceToken, repoOwner, repoName, issueIndex, loginUid); - fetchDataAsync(instanceUrl, instanceToken, repoOwner, repoName, issueIndex, loginUid); - - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.generic_nav_dotted_menu, menu); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - - int id = item.getItemId(); - - switch (id) { - case android.R.id.home: - finish(); - return true; - case R.id.genericMenu: - SingleIssueBottomSheetFragment bottomSheet = new SingleIssueBottomSheetFragment(); - bottomSheet.show(getSupportFragmentManager(), "singleIssueBottomSheet"); - return true; - default: - return super.onOptionsItemSelected(item); - } - - } - - @Override - public void onResume() { - super.onResume(); - final TinyDB tinyDb = new TinyDB(getApplicationContext()); - final String instanceUrl = tinyDb.getString("instanceUrl"); - final String loginUid = tinyDb.getString("loginUid"); - String repoFullName = tinyDb.getString("repoFullName"); - String[] parts = repoFullName.split("/"); - final String repoOwner = parts[0]; - final String repoName = parts[1]; - final String instanceToken = "token " + tinyDb.getString(loginUid + "-token"); - final int issueIndex = Integer.parseInt(tinyDb.getString("issueNumber")); - - if(tinyDb.getBoolean("commentPosted")) { - scrollViewComments.post(new Runnable() { - @Override - public void run() { - IssueCommentsViewModel.loadIssueComments(instanceUrl, Authorization.returnAuthentication(getApplicationContext(), loginUid, instanceToken), repoOwner, repoName, issueIndex); - - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - scrollViewComments.fullScroll(ScrollView.FOCUS_DOWN); - } - }, 1000); - - tinyDb.putBoolean("commentPosted", false); - } - }); - } - - if(tinyDb.getBoolean("commentEdited")) { - scrollViewComments.post(new Runnable() { - @Override - public void run() { - IssueCommentsViewModel.loadIssueComments(instanceUrl, Authorization.returnAuthentication(getApplicationContext(), loginUid, instanceToken), repoOwner, repoName, issueIndex); - tinyDb.putBoolean("commentEdited", false); - } - }); - } - - if(tinyDb.getBoolean("singleIssueUpdate")) { - - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - assigneesLayout.removeAllViews(); - labelsLayout.removeAllViews(); - getSingleIssue(instanceUrl, instanceToken, repoOwner, repoName, issueIndex, loginUid); - tinyDb.putBoolean("singleIssueUpdate", false); - } - }, 500); - - } - - if(tinyDb.getBoolean("issueEdited")) { - - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - assigneesLayout.removeAllViews(); - labelsLayout.removeAllViews(); - getSingleIssue(instanceUrl, instanceToken, repoOwner, repoName, issueIndex, loginUid); - tinyDb.putBoolean("issueEdited", false); - } - }, 500); - - } - - } - - private void fetchDataAsync(String instanceUrl, String instanceToken, String owner, String repo, int index, String loginUid) { - - IssueCommentsViewModel issueCommentsModel = ViewModelProviders.of(this).get(IssueCommentsViewModel.class); - - issueCommentsModel.getIssueCommentList(instanceUrl, Authorization.returnAuthentication(getApplicationContext(), loginUid, instanceToken), owner, repo, index).observe(this, new Observer>() { - @Override - public void onChanged(@Nullable List issueCommentsMain) { - adapter = new IssueCommentsAdapter(getApplicationContext(), issueCommentsMain); - mRecyclerView.setAdapter(adapter); - } - }); - - } - - private void getSingleIssue(String instanceUrl, String instanceToken, String repoOwner, String repoName, int issueIndex, String loginUid) { - - final TinyDB tinyDb = new TinyDB(getApplicationContext()); - Call call = RetrofitClient - .getInstance(instanceUrl) - .getApiInterface() - .getIssueByIndex(Authorization.returnAuthentication(getApplicationContext(), loginUid, instanceToken), repoOwner, repoName, issueIndex); - - call.enqueue(new Callback() { - - @Override - public void onResponse(@NonNull Call call, @NonNull Response response) { - - if (response.isSuccessful()) { - if (response.code() == 200) { - - Issues singleIssue = response.body(); - assert singleIssue != null; - - final Markwon markwon = Markwon.builder(Objects.requireNonNull(getApplicationContext())) - .usePlugin(CorePlugin.create()) - .usePlugin(ImagesPlugin.create(new ImagesPlugin.ImagesConfigure() { - @Override - public void configureImages(@NonNull ImagesPlugin plugin) { - plugin.addSchemeHandler(new SchemeHandler() { - @NonNull - @Override - public ImageItem handle(@NonNull String raw, @NonNull Uri uri) { - - final int resourceId = getApplicationContext().getResources().getIdentifier( - raw.substring("drawable://".length()), - "drawable", - getApplicationContext().getPackageName()); - - final Drawable drawable = getApplicationContext().getDrawable(resourceId); - - assert drawable != null; - return ImageItem.withResult(drawable); - } - - @NonNull - @Override - public Collection supportedSchemes() { - return Collections.singleton("drawable"); - } - }); - plugin.placeholderProvider(new ImagesPlugin.PlaceholderProvider() { - @Nullable - @Override - public Drawable providePlaceholder(@NonNull AsyncDrawable drawable) { - return null; - } - }); - plugin.addMediaDecoder(GifMediaDecoder.create(false)); - plugin.addMediaDecoder(SvgMediaDecoder.create(getApplicationContext().getResources())); - plugin.addMediaDecoder(SvgMediaDecoder.create()); - plugin.defaultMediaDecoder(DefaultMediaDecoder.create(getApplicationContext().getResources())); - plugin.defaultMediaDecoder(DefaultMediaDecoder.create()); - } - - })) - .usePlugin(new AbstractMarkwonPlugin() { - @Override - public void configureTheme(@NonNull MarkwonTheme.Builder builder) { - builder - .codeTextColor(tinyDb.getInt("codeBlockColor")) - .codeBackgroundColor(tinyDb.getInt("codeBlockBackground")) - .linkColor(getResources().getColor(R.color.lightBlue)); - } - }) - .usePlugin(TablePlugin.create(getApplicationContext())) - .usePlugin(TaskListPlugin.create(getApplicationContext())) - .usePlugin(HtmlPlugin.create()) - .usePlugin(StrikethroughPlugin.create()) - .usePlugin(LinkifyPlugin.create()) - .build(); - - TinyDB tinyDb = new TinyDB(getApplicationContext()); - final String locale = tinyDb.getString("locale"); - final String timeFormat = tinyDb.getString("dateFormat"); - tinyDb.putString("issueState", singleIssue.getState()); - tinyDb.putString("issueTitle", singleIssue.getTitle()); - - Picasso.get().load(singleIssue.getUser().getAvatar_url()).transform(new RoundedTransformation(100, 0)).resize(200, 200).centerCrop().into(assigneeAvatar); - issueTitle.setText(getString(R.string.issueTitleWithId, singleIssue.getNumber(), singleIssue.getTitle())); - String cleanIssueDescription = singleIssue.getBody().trim(); - Spanned bodyWithMD = markwon.toMarkdown(EmojiParser.parseToUnicode(cleanIssueDescription)); - markwon.setParsedMarkdown(issueDescription, UserMentions.UserMentionsFunc(getApplicationContext(), bodyWithMD, cleanIssueDescription)); - - RelativeLayout.LayoutParams paramsDesc = (RelativeLayout.LayoutParams)issueDescription.getLayoutParams(); - - LinearLayout.LayoutParams params1 = new LinearLayout.LayoutParams(80, 80); - params1.setMargins(15, 0, 0, 0); - - if(singleIssue.getAssignees() != null) { - assigneesScrollView.setVisibility(View.VISIBLE); - for (int i = 0; i < singleIssue.getAssignees().size(); i++) { - - ImageView assigneesView = new ImageView(getApplicationContext()); - - Picasso.get().load(singleIssue.getAssignees().get(i).getAvatar_url()).transform(new RoundedTransformation(100, 0)).resize(80, 80).centerCrop().into(assigneesView); - - assigneesLayout.addView(assigneesView); - assigneesView.setLayoutParams(params1); - if (!singleIssue.getAssignees().get(i).getFull_name().equals("")) { - assigneesView.setOnClickListener(new ClickListener(getString(R.string.assignedTo, singleIssue.getAssignees().get(i).getFull_name()), getApplicationContext())); - } else { - assigneesView.setOnClickListener(new ClickListener(getString(R.string.assignedTo, singleIssue.getAssignees().get(i).getLogin()), getApplicationContext())); - } - - } - } - else { - assigneesScrollView.setVisibility(View.GONE); - } - - LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); - params.setMargins(0, 0, 15, 0); - - if(singleIssue.getLabels() != null) { - labelsScrollView.setVisibility(View.VISIBLE); - int width = 33; - for (int i = 0; i < singleIssue.getLabels().size(); i++) { - - String labelColor = singleIssue.getLabels().get(i).getColor(); - String labelName = singleIssue.getLabels().get(i).getName(); - int color = Color.parseColor("#" + labelColor); - - ImageView labelsView = new ImageView(getApplicationContext()); - labelsLayout.setOrientation(LinearLayout.HORIZONTAL); - labelsLayout.setGravity(Gravity.START | Gravity.TOP); - labelsView.setLayoutParams(params); - - TextDrawable drawable = TextDrawable.builder() - .beginConfig() - .useFont(Typeface.DEFAULT) - .textColor(new ColorInverter().getContrastColor(color)) - .fontSize(36) - .width((width * labelName.length()) - ((width / 4) * labelName.length())) - .height(60) - .endConfig() - .buildRoundRect(labelName, color, 8); - labelsView.setImageDrawable(drawable); - - labelsLayout.addView(labelsView); - - } - } - else { - labelsScrollView.setVisibility(View.GONE); - } - - if(singleIssue.getDue_date() != null) { - - if (timeFormat.equals("normal") || timeFormat.equals("pretty")) { - DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd", new Locale(locale)); - String dueDate = formatter.format(singleIssue.getDue_date()); - issueDueDate.setText(getString(R.string.dueDate, dueDate)); - issueDueDate.setOnClickListener(new ClickListener(TimeHelper.customDateFormatForToastDateFormat(singleIssue.getDue_date()), getApplicationContext())); - } else if (timeFormat.equals("normal1")) { - DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy", new Locale(locale)); - String dueDate = formatter.format(singleIssue.getDue_date()); - issueDueDate.setText(getString(R.string.dueDate, dueDate)); - } - - } - else { - - issueDueDate.setVisibility(View.GONE); - } - - String edited; - - if(!singleIssue.getUpdated_at().equals(singleIssue.getCreated_at())) { - edited = getString(R.string.colorfulBulletSpan) + getString(R.string.modifiedText); - issueModified.setVisibility(View.VISIBLE); - issueModified.setText(edited); - issueModified.setOnClickListener(new ClickListener(TimeHelper.customDateFormatForToastDateFormat(singleIssue.getUpdated_at()), ctx)); - } - else { - issueModified.setVisibility(View.INVISIBLE); - } - - if((singleIssue.getDue_date() == null && singleIssue.getMilestone() == null) && singleIssue.getAssignees() != null) { - paramsDesc.setMargins(0, 35, 0, 0); - issueDescription.setLayoutParams(paramsDesc); - } - else if(singleIssue.getDue_date() == null && singleIssue.getMilestone() == null) { - paramsDesc.setMargins(0, 55, 0, 0); - issueDescription.setLayoutParams(paramsDesc); - } - else if(singleIssue.getAssignees() == null) { - paramsDesc.setMargins(0, 35, 0, 0); - issueDescription.setLayoutParams(paramsDesc); - } - else { - paramsDesc.setMargins(0, 15, 0, 0); - issueDescription.setLayoutParams(paramsDesc); - } - - switch (timeFormat) { - case "pretty": { - PrettyTime prettyTime = new PrettyTime(new Locale(locale)); - String createdTime = prettyTime.format(singleIssue.getCreated_at()); - issueCreatedTime.setText(getString(R.string.createdTime, createdTime)); - issueCreatedTime.setVisibility(View.VISIBLE); - issueCreatedTime.setOnClickListener(new ClickListener(TimeHelper.customDateFormatForToastDateFormat(singleIssue.getCreated_at()), getApplicationContext())); - break; - } - case "normal": { - DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd '" + getResources().getString(R.string.timeAtText) + "' HH:mm", new Locale(locale)); - String createdTime = formatter.format(singleIssue.getCreated_at()); - issueCreatedTime.setText(getString(R.string.createdTime, createdTime)); - issueCreatedTime.setVisibility(View.VISIBLE); - break; - } - case "normal1": { - DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy '" + getResources().getString(R.string.timeAtText) + "' HH:mm", new Locale(locale)); - String createdTime = formatter.format(singleIssue.getCreated_at()); - issueCreatedTime.setText(getString(R.string.createdTime, createdTime)); - issueCreatedTime.setVisibility(View.VISIBLE); - break; - } - } - - if(singleIssue.getMilestone() != null) { - issueMilestone.setText(getString(R.string.issueMilestone, singleIssue.getMilestone().getTitle())); - } - else { - issueMilestone.setVisibility(View.GONE); - } - - if (!singleIssue.getUser().getFull_name().equals("")) { - assigneeAvatar.setOnClickListener(new ClickListener(getApplicationContext().getResources().getString(R.string.issueCreator) + singleIssue.getUser().getFull_name(), getApplicationContext())); - } else { - assigneeAvatar.setOnClickListener(new ClickListener(getApplicationContext().getResources().getString(R.string.issueCreator) + singleIssue.getUser().getLogin(), getApplicationContext())); - } - - } - - } - else if(response.code() == 401) { - - AlertDialogs.authorizationTokenRevokedDialog(ctx, getResources().getString(R.string.alertDialogTokenRevokedTitle), - getResources().getString(R.string.alertDialogTokenRevokedMessage), - getResources().getString(R.string.alertDialogTokenRevokedCopyNegativeButton), - getResources().getString(R.string.alertDialogTokenRevokedCopyPositiveButton)); - - } - - } - - @Override - public void onFailure(@NonNull Call call, @NonNull Throwable t) { - Log.e("onFailure", t.toString()); - } - }); - - } - - private void initCloseListener() { - View.OnClickListener onClickListener = new View.OnClickListener() { - @Override - public void onClick(View view) { - finish(); - } - }; - } - -} 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 05afde24..e69de29b 100644 --- a/app/src/main/java/org/mian/gitnex/activities/MainActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/MainActivity.java @@ -1,414 +0,0 @@ -package org.mian.gitnex.activities; - -import android.content.ActivityNotFoundException; -import android.content.Context; -import android.content.Intent; -import androidx.annotation.NonNull; -import com.google.android.material.navigation.NavigationView; -import androidx.core.view.GravityCompat; -import androidx.drawerlayout.widget.DrawerLayout; -import androidx.appcompat.app.ActionBarDrawerToggle; -import androidx.appcompat.app.AppCompatActivity; -import android.net.Uri; -import android.os.Bundle; -import android.util.Log; -import android.view.MenuItem; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; -import com.squareup.picasso.NetworkPolicy; -import com.squareup.picasso.Picasso; -import org.mian.gitnex.R; -import org.mian.gitnex.clients.RetrofitClient; -import org.mian.gitnex.fragments.AboutFragment; -import org.mian.gitnex.fragments.MyRepositoriesFragment; -import org.mian.gitnex.fragments.NavSubMenuBottomSheetFragment; -import org.mian.gitnex.fragments.OrganizationsFragment; -import org.mian.gitnex.fragments.SettingsFragment; -import org.mian.gitnex.fragments.StarredRepositoriesFragment; -import org.mian.gitnex.helpers.AlertDialogs; -import org.mian.gitnex.helpers.Authorization; -import org.mian.gitnex.helpers.Toasty; -import org.mian.gitnex.models.UserInfo; -import org.mian.gitnex.util.AppUtil; -import org.mian.gitnex.helpers.RoundedTransformation; -import org.mian.gitnex.util.TinyDB; -import org.mian.gitnex.fragments.ProfileFragment; -import org.mian.gitnex.fragments.RepositoriesFragment; -import java.util.Objects; -import retrofit2.Call; -import retrofit2.Callback; - -/** - * Author M M Arif - */ - -public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener { - - private DrawerLayout drawer; - private TextView userFullName; - private TextView userEmail; - private ImageView userAvatar; - final Context ctx = this; - - @Override - protected void onCreate(Bundle savedInstanceState) { - - final TinyDB tinyDb = new TinyDB(getApplicationContext()); - tinyDb.putBoolean("noConnection", false); - //userAvatar = findViewById(R.id.userAvatar); - - final String instanceUrl = tinyDb.getString("instanceUrl"); - final String loginUid = tinyDb.getString("loginUid"); - final String instanceToken = "token " + tinyDb.getString(loginUid + "-token"); - - if(tinyDb.getString("dateFormat").isEmpty()) { - tinyDb.putString("dateFormat", "pretty"); - } - - if(tinyDb.getString("codeBlockStr").isEmpty()) { - tinyDb.putInt("codeBlockColor", getResources().getColor(R.color.colorLightGreen)); - tinyDb.putInt("codeBlockBackground", getResources().getColor(R.color.black)); - } - - if(tinyDb.getString("enableCounterIssueBadgeInit").isEmpty()) { - tinyDb.putBoolean("enableCounterIssueBadge", true); - } - - if(tinyDb.getString("homeScreenStr").isEmpty()) { - tinyDb.putInt("homeScreenId", 0); - } - - String appLocale = tinyDb.getString("locale"); - AppUtil.setAppLocale(getResources(), appLocale); - - boolean connToInternet = AppUtil.haveNetworkConnection(getApplicationContext()); - - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - - if(!tinyDb.getBoolean("loggedInMode")) { - logout(); - return; - } - - androidx.appcompat.widget.Toolbar toolbar = findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - drawer = findViewById(R.id.drawer_layout); - NavigationView navigationView = findViewById(R.id.nav_view); - navigationView.setNavigationItemSelectedListener(this); - final View hView = navigationView.getHeaderView(0); - - ImageView navSubMenu = hView.findViewById(R.id.navSubMenu); - navSubMenu.setOnClickListener(new View.OnClickListener() { - public void onClick(View v) { - NavSubMenuBottomSheetFragment bottomSheet = new NavSubMenuBottomSheetFragment(); - bottomSheet.show(getSupportFragmentManager(), "adminMenuBottomSheet"); - } - }); - - ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, - R.string.navigation_drawer_open, R.string.navigation_drawer_close); - toggle.getDrawerArrowDrawable().setColor(getResources().getColor(R.color.white)); - drawer.addDrawerListener(toggle); - - drawer.addDrawerListener(new DrawerLayout.DrawerListener() { - - @Override - public void onDrawerSlide(@NonNull View drawerView, float slideOffset) { - - } - - @Override - public void onDrawerOpened(@NonNull View drawerView) { - - boolean connToInternet = AppUtil.haveNetworkConnection(getApplicationContext()); - if(!connToInternet) { - - if(!tinyDb.getBoolean("noConnection")) { - Toasty.info(getApplicationContext(), getResources().getString(R.string.checkNetConnection)); - } - - tinyDb.putBoolean("noConnection", true); - - String userEmailNav = tinyDb.getString("userEmail"); - String userFullNameNav = tinyDb.getString("userFullname"); - String userAvatarNav = tinyDb.getString("userAvatar"); - - userEmail = hView.findViewById(R.id.userEmail); - if (!userEmailNav.equals("")) { - userEmail.setText(userEmailNav); - } - - userFullName = hView.findViewById(R.id.userFullname); - if (!userFullNameNav.equals("")) { - userFullName.setText(userFullNameNav); - } - - userAvatar = hView.findViewById(R.id.userAvatar); - if (!userAvatarNav.equals("")) { - Picasso.get().load(userAvatarNav).networkPolicy(NetworkPolicy.OFFLINE).transform(new RoundedTransformation(100, 0)).resize(180, 180).centerCrop().into(userAvatar); - } - - } else { - - displayUserInfo(instanceUrl, instanceToken, loginUid); - tinyDb.putBoolean("noConnection", false); - - } - - } - - @Override - public void onDrawerClosed(@NonNull View drawerView) { - // Called when a drawer has settled in a completely closed state. - } - - @Override - public void onDrawerStateChanged(int newState) { - // Called when the drawer motion state changes. The new state will be one of STATE_IDLE, STATE_DRAGGING or STATE_SETTLING. - } - }); - - toggle.syncState(); - - if(savedInstanceState == null) { - if(tinyDb.getInt("homeScreenId") == 0) { - getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, - new MyRepositoriesFragment()).commit(); - navigationView.setCheckedItem(R.id.nav_home); - } - else if(tinyDb.getInt("homeScreenId") == 1) { - getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, - new StarredRepositoriesFragment()).commit(); - navigationView.setCheckedItem(R.id.nav_starred_repos); - } - else if(tinyDb.getInt("homeScreenId") == 2) { - getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, - new OrganizationsFragment()).commit(); - navigationView.setCheckedItem(R.id.nav_organizations); - } - else if(tinyDb.getInt("homeScreenId") == 3) { - getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, - new RepositoriesFragment()).commit(); - navigationView.setCheckedItem(R.id.nav_repositories); - } - else if(tinyDb.getInt("homeScreenId") == 4) { - getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, - new ProfileFragment()).commit(); - navigationView.setCheckedItem(R.id.nav_profile); - } - else { - getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, - new MyRepositoriesFragment()).commit(); - navigationView.setCheckedItem(R.id.nav_home); - } - } - - if(!connToInternet) { - - if(!tinyDb.getBoolean("noConnection")) { - Toasty.info(getApplicationContext(), getResources().getString(R.string.checkNetConnection)); - } - - tinyDb.putBoolean("noConnection", true); - - } else { - - displayUserInfo(instanceUrl, instanceToken, loginUid); - tinyDb.putBoolean("noConnection", false); - - } - - } - - public void setActionBarTitle (@NonNull String title) { - Objects.requireNonNull(getSupportActionBar()).setTitle(title); - } - - @Override - public void onBackPressed() { - - if(drawer.isDrawerOpen(GravityCompat.START)) { - drawer.closeDrawer(GravityCompat.START); - } - else { - super.onBackPressed(); - } - - } - - @Override - public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) { - - switch (menuItem.getItemId()) { - case R.id.nav_home: - getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, - new MyRepositoriesFragment()).commit(); - break; - case R.id.nav_organizations: - getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, - new OrganizationsFragment()).commit(); - break; - case R.id.nav_profile: - getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, - new ProfileFragment()).commit(); - break; - case R.id.nav_repositories: - getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, - new RepositoriesFragment()).commit(); - break; - case R.id.nav_settings: - getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, - new SettingsFragment()).commit(); - break; - case R.id.nav_logout: - logout(); - overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); - break; - case R.id.nav_about: - getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, - new AboutFragment()).commit(); - break; - case R.id.nav_rate_app: - rateThisApp(); - break; - case R.id.nav_starred_repos: - getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, - new StarredRepositoriesFragment()).commit(); - break; - } - - drawer.closeDrawer(GravityCompat.START); - return true; - } - - public void rateThisApp() { - try { - startActivity(new Intent(Intent.ACTION_VIEW, - Uri.parse("market://details?id=" + getPackageName()))); - } catch (ActivityNotFoundException e) { - startActivity(new Intent(Intent.ACTION_VIEW, - Uri.parse("https://play.google.com/store/apps/details?id=" + getPackageName()))); - } - } - - public void logout() { - - TinyDB tinyDb = new TinyDB(getApplicationContext()); - tinyDb.putBoolean("loggedInMode", false); - tinyDb.remove("basicAuthPassword"); - tinyDb.putBoolean("basicAuthFlag", false); - //tinyDb.clear(); - finish(); - startActivity(new Intent(MainActivity.this, LoginActivity.class)); - - } - - private void displayUserInfo(String instanceUrl, String token, String loginUid) { - - final TinyDB tinyDb = new TinyDB(getApplicationContext()); - - Call call = RetrofitClient - .getInstance(instanceUrl) - .getApiInterface() - .getUserInfo(Authorization.returnAuthentication(getApplicationContext(), loginUid, token)); - - NavigationView navigationView = findViewById(R.id.nav_view); - final View hView = navigationView.getHeaderView(0); - - call.enqueue(new Callback() { - - @Override - public void onResponse(@NonNull Call call, @NonNull retrofit2.Response response) { - - UserInfo userDetails = response.body(); - - if (response.isSuccessful()) { - - if (response.code() == 200) { - - assert userDetails != null; - if(userDetails.getIs_admin() != null) { - tinyDb.putBoolean("userIsAdmin", userDetails.getIs_admin()); - } - tinyDb.putString("userLogin", userDetails.getLogin()); - tinyDb.putInt("userId", userDetails.getId()); - if(!userDetails.getFullname().equals("")) { - tinyDb.putString("userFullname", userDetails.getFullname()); - } - else { - tinyDb.putString("userFullname", "..."); - } - - tinyDb.putString("userEmail", userDetails.getEmail()); - tinyDb.putString("userAvatar", userDetails.getAvatar()); - if(userDetails.getLang() != null) { - tinyDb.putString("userLang", userDetails.getLang()); - } - else - { - tinyDb.putString("userLang", "..."); - } - - userAvatar = hView.findViewById(R.id.userAvatar); - if (!Objects.requireNonNull(userDetails).getAvatar().equals("")) { - Picasso.get().load(userDetails.getAvatar()).transform(new RoundedTransformation(100, 0)).resize(180, 180).centerCrop().into(userAvatar); - } else { - userAvatar.setImageResource(R.mipmap.ic_launcher_round); - } - - userFullName = hView.findViewById(R.id.userFullname); - if (!userDetails.getFullname().equals("")) { - userFullName.setText(userDetails.getFullname()); - } else if (!userDetails.getLogin().equals("")) { - userFullName.setText(userDetails.getLogin()); - } else { - userFullName.setText("..."); - } - - userEmail = hView.findViewById(R.id.userEmail); - if (!userDetails.getEmail().equals("")) { - userEmail.setText(userDetails.getEmail()); - } else { - userEmail.setText("..."); - } - - userAvatar.setOnClickListener(new View.OnClickListener() { - public void onClick(View v) { - getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, - new ProfileFragment()).commit(); - drawer.closeDrawers(); - } - }); - - } - - } - else if(response.code() == 401) { - - AlertDialogs.authorizationTokenRevokedDialog(ctx, getResources().getString(R.string.alertDialogTokenRevokedTitle), - getResources().getString(R.string.alertDialogTokenRevokedMessage), - getResources().getString(R.string.alertDialogTokenRevokedCopyNegativeButton), - getResources().getString(R.string.alertDialogTokenRevokedCopyPositiveButton)); - - } - else { - - String toastError = getResources().getString(R.string.genericApiStatusError) + String.valueOf(response.code()); - Toasty.info(getApplicationContext(), toastError); - - } - - } - - @Override - public void onFailure(@NonNull Call call, @NonNull Throwable t) { - Log.e("onFailure", t.toString()); - } - }); - - } - -} diff --git a/app/src/main/java/org/mian/gitnex/adapters/AdminGetUsersAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/AdminGetUsersAdapter.java index f8e2c433..e69de29b 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/AdminGetUsersAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/AdminGetUsersAdapter.java @@ -1,145 +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.Filter; -import android.widget.Filterable; -import android.widget.ImageView; -import android.widget.TextView; -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; -import com.amulyakhare.textdrawable.TextDrawable; -import com.squareup.picasso.Picasso; -import org.mian.gitnex.R; -import org.mian.gitnex.helpers.RoundedTransformation; -import org.mian.gitnex.models.UserInfo; -import java.util.ArrayList; -import java.util.List; - -/** - * Author M M Arif - */ - -public class AdminGetUsersAdapter extends RecyclerView.Adapter implements Filterable { - - private List usersList; - private Context mCtx; - private List usersListFull; - - static class UsersViewHolder extends RecyclerView.ViewHolder { - - private ImageView userAvatar; - private TextView userFullName; - private TextView userEmail; - private ImageView userRole; - private TextView userName; - - private UsersViewHolder(View itemView) { - super(itemView); - - userAvatar = itemView.findViewById(R.id.userAvatar); - userFullName = itemView.findViewById(R.id.userFullName); - userName = itemView.findViewById(R.id.userName); - userEmail = itemView.findViewById(R.id.userEmail); - userRole = itemView.findViewById(R.id.userRole); - - } - } - - public AdminGetUsersAdapter(Context mCtx, List usersListMain) { - this.mCtx = mCtx; - this.usersList = usersListMain; - usersListFull = new ArrayList<>(usersList); - } - - @NonNull - @Override - public AdminGetUsersAdapter.UsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.admin_users_list, parent, false); - return new AdminGetUsersAdapter.UsersViewHolder(v); - } - - @Override - public void onBindViewHolder(@NonNull AdminGetUsersAdapter.UsersViewHolder holder, int position) { - - UserInfo currentItem = usersList.get(position); - - if(!currentItem.getFullname().equals("")) { - holder.userFullName.setText(currentItem.getFullname()); - holder.userName.setText(mCtx.getResources().getString(R.string.usernameWithAt, currentItem.getUsername())); - } - else { - holder.userFullName.setText(mCtx.getResources().getString(R.string.usernameWithAt, currentItem.getUsername())); - holder.userName.setVisibility(View.GONE); - } - - if(!currentItem.getEmail().equals("")) { - holder.userEmail.setText(currentItem.getEmail()); - } - else { - holder.userEmail.setVisibility(View.GONE); - } - - if(currentItem.getIs_admin()) { - holder.userRole.setVisibility(View.VISIBLE); - TextDrawable drawable = TextDrawable.builder() - .beginConfig() - .textColor(mCtx.getResources().getColor(R.color.white)) - .fontSize(44) - .width(180) - .height(60) - .endConfig() - .buildRoundRect(mCtx.getResources().getString(R.string.userRoleAdmin).toLowerCase(), mCtx.getResources().getColor(R.color.releasePre), 8); - holder.userRole.setImageDrawable(drawable); - } - else { - holder.userRole.setVisibility(View.GONE); - } - - Picasso.get().load(currentItem.getAvatar()).transform(new RoundedTransformation(100, 0)).resize(140, 140).centerCrop().into(holder.userAvatar); - } - - @Override - public int getItemCount() { - return usersList.size(); - } - - @Override - public Filter getFilter() { - return usersFilter; - } - - private Filter usersFilter = new Filter() { - @Override - protected FilterResults performFiltering(CharSequence constraint) { - List filteredList = new ArrayList<>(); - - if (constraint == null || constraint.length() == 0) { - filteredList.addAll(usersListFull); - } else { - String filterPattern = constraint.toString().toLowerCase().trim(); - - for (UserInfo item : usersListFull) { - if (item.getEmail().toLowerCase().contains(filterPattern) || item.getFullname().toLowerCase().contains(filterPattern) || item.getUsername().toLowerCase().contains(filterPattern)) { - filteredList.add(item); - } - } - } - - FilterResults results = new FilterResults(); - results.values = filteredList; - - return results; - } - - @Override - protected void publishResults(CharSequence constraint, FilterResults results) { - usersList.clear(); - usersList.addAll((List) results.values); - notifyDataSetChanged(); - } - }; - -} diff --git a/app/src/main/java/org/mian/gitnex/adapters/CollaboratorsAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/CollaboratorsAdapter.java index 8f616405..e69de29b 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/CollaboratorsAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/CollaboratorsAdapter.java @@ -1,91 +0,0 @@ -package org.mian.gitnex.adapters; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.BaseAdapter; -import android.widget.ImageView; -import android.widget.TextView; -import com.squareup.picasso.Picasso; -import org.mian.gitnex.R; -import org.mian.gitnex.models.Collaborators; -import org.mian.gitnex.helpers.RoundedTransformation; -import java.util.List; - -/** - * Author M M Arif - */ - -public class CollaboratorsAdapter extends BaseAdapter { - - private List collaboratorsList; - private Context mCtx; - - private class ViewHolder { - - private ImageView collaboratorAvatar; - private TextView collaboratorName; - - ViewHolder(View v) { - collaboratorAvatar = v.findViewById(R.id.collaboratorAvatar); - collaboratorName = v.findViewById(R.id.collaboratorName); - } - } - - public CollaboratorsAdapter(Context mCtx, List collaboratorsListMain) { - this.mCtx = mCtx; - this.collaboratorsList = collaboratorsListMain; - } - - @Override - public int getCount() { - return collaboratorsList.size(); - } - - @Override - public Object getItem(int position) { - return null; - } - - @Override - public long getItemId(int position) { - return 0; - } - - @SuppressLint("InflateParams") - @Override - public View getView(int position, View finalView, ViewGroup parent) { - - ViewHolder viewHolder = null; - - if (finalView == null) { - finalView = LayoutInflater.from(mCtx).inflate(R.layout.collaborators_list, null); - viewHolder = new ViewHolder(finalView); - finalView.setTag(viewHolder); - } - else { - viewHolder = (ViewHolder) finalView.getTag(); - } - - initData(viewHolder, position); - return finalView; - - } - - private void initData(ViewHolder viewHolder, int position) { - - Collaborators currentItem = collaboratorsList.get(position); - Picasso.get().load(currentItem.getAvatar_url()).transform(new RoundedTransformation(100, 0)).resize(200, 200).centerCrop().into(viewHolder.collaboratorAvatar); - - if(!currentItem.getFull_name().equals("")) { - viewHolder.collaboratorName.setText(currentItem.getFull_name()); - } - else { - viewHolder.collaboratorName.setText(currentItem.getLogin()); - } - - } - -} diff --git a/app/src/main/java/org/mian/gitnex/adapters/IssueCommentsAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/IssueCommentsAdapter.java index 02088f1e..e69de29b 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/IssueCommentsAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/IssueCommentsAdapter.java @@ -1,289 +0,0 @@ -package org.mian.gitnex.adapters; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.content.Intent; -import android.graphics.drawable.Drawable; -import android.net.Uri; -import android.text.Spanned; -import android.view.LayoutInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; -import com.squareup.picasso.Picasso; -import com.vdurmont.emoji.EmojiParser; -import org.mian.gitnex.R; -import org.mian.gitnex.activities.ReplyToIssueActivity; -import org.mian.gitnex.helpers.TimeHelper; -import org.mian.gitnex.models.IssueComments; -import org.mian.gitnex.helpers.RoundedTransformation; -import org.mian.gitnex.util.TinyDB; -import org.mian.gitnex.helpers.ClickListener; -import org.ocpsoft.prettytime.PrettyTime; -import java.lang.reflect.Field; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Collection; -import java.util.Collections; -import java.util.List; -import java.util.Locale; -import java.util.Objects; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.view.ContextThemeWrapper; -import androidx.appcompat.widget.PopupMenu; -import androidx.recyclerview.widget.RecyclerView; -import io.noties.markwon.AbstractMarkwonPlugin; -import io.noties.markwon.Markwon; -import io.noties.markwon.core.CorePlugin; -import io.noties.markwon.core.MarkwonTheme; -import io.noties.markwon.ext.strikethrough.StrikethroughPlugin; -import io.noties.markwon.ext.tables.TablePlugin; -import io.noties.markwon.ext.tasklist.TaskListPlugin; -import io.noties.markwon.html.HtmlPlugin; -import io.noties.markwon.image.AsyncDrawable; -import io.noties.markwon.image.DefaultMediaDecoder; -import io.noties.markwon.image.ImageItem; -import io.noties.markwon.image.ImagesPlugin; -import io.noties.markwon.image.SchemeHandler; -import io.noties.markwon.image.gif.GifMediaDecoder; -import io.noties.markwon.image.svg.SvgMediaDecoder; -import io.noties.markwon.linkify.LinkifyPlugin; - -/** - * Author M M Arif - */ - -public class IssueCommentsAdapter extends RecyclerView.Adapter { - - private List issuesComments; - private Context mCtx; - - static class IssueCommentViewHolder extends RecyclerView.ViewHolder { - - private TextView issueNumber; - private TextView commendId; - private ImageView issueCommenterAvatar; - private TextView issueComment; - private TextView issueCommentDate; - private ImageView commentsOptionsMenu; - private TextView commendBodyRaw; - private TextView commentModified; - - private IssueCommentViewHolder(View itemView) { - super(itemView); - - issueNumber = itemView.findViewById(R.id.issueNumber); - commendId = itemView.findViewById(R.id.commendId); - issueCommenterAvatar = itemView.findViewById(R.id.issueCommenterAvatar); - issueComment = itemView.findViewById(R.id.issueComment); - issueCommentDate = itemView.findViewById(R.id.issueCommentDate); - commentsOptionsMenu = itemView.findViewById(R.id.commentsOptionsMenu); - commendBodyRaw = itemView.findViewById(R.id.commendBodyRaw); - commentModified = itemView.findViewById(R.id.commentModified); - - commentsOptionsMenu.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - - final Context context = v.getContext(); - Context context_ = new ContextThemeWrapper(context, R.style.popupMenuStyle); - - PopupMenu popupMenu = new PopupMenu(context_, v); - popupMenu.inflate(R.menu.issue_comment_menu); - - Object menuHelper; - Class[] argTypes; - try { - - Field fMenuHelper = PopupMenu.class.getDeclaredField("mPopup"); - fMenuHelper.setAccessible(true); - menuHelper = fMenuHelper.get(popupMenu); - argTypes = new Class[] { boolean.class }; - menuHelper.getClass().getDeclaredMethod("setForceShowIcon", - argTypes).invoke(menuHelper, true); - - } catch (Exception e) { - - popupMenu.show(); - return; - - } - - popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(MenuItem item) { - switch (item.getItemId()) { - case R.id.commentMenuEdit: - - Intent intent = new Intent(context, ReplyToIssueActivity.class); - intent.putExtra("commentId", commendId.getText()); - intent.putExtra("commentAction", "edit"); - intent.putExtra("commentBody", commendBodyRaw.getText()); - context.startActivity(intent); - break; - - case R.id.commentMenuDelete: - - break; - - } - return false; - } - }); - - popupMenu.show(); - - } - }); - - } - } - - public IssueCommentsAdapter(Context mCtx, List issuesCommentsMain) { - this.mCtx = mCtx; - this.issuesComments = issuesCommentsMain; - } - - @NonNull - @Override - public IssueCommentsAdapter.IssueCommentViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.issue_comments, parent, false); - return new IssueCommentsAdapter.IssueCommentViewHolder(v); - } - - @SuppressLint("SetTextI18n") - @Override - public void onBindViewHolder(@NonNull IssueCommentsAdapter.IssueCommentViewHolder holder, int position) { - - final TinyDB tinyDb = new TinyDB(mCtx); - final String locale = tinyDb.getString("locale"); - final String timeFormat = tinyDb.getString("dateFormat"); - final String loginUid = tinyDb.getString("loginUid"); - - IssueComments currentItem = issuesComments.get(position); - - if(!loginUid.equals(currentItem.getUser().getUsername())) { - holder.commentsOptionsMenu.setVisibility(View.INVISIBLE); - } - holder.commendId.setText(String.valueOf(currentItem.getId())); - holder.commendBodyRaw.setText(currentItem.getBody()); - - if (!currentItem.getUser().getFull_name().equals("")) { - holder.issueCommenterAvatar.setOnClickListener(new ClickListener(mCtx.getResources().getString(R.string.issueCommenter) + currentItem.getUser().getFull_name(), mCtx)); - } else { - holder.issueCommenterAvatar.setOnClickListener(new ClickListener(mCtx.getResources().getString(R.string.issueCommenter) + currentItem.getUser().getLogin(), mCtx)); - } - - if (currentItem.getUser().getAvatar_url() != null) { - Picasso.get().load(currentItem.getUser().getAvatar_url()).transform(new RoundedTransformation(100, 0)).resize(200, 200).centerCrop().into(holder.issueCommenterAvatar); - } else { - Picasso.get().load(currentItem.getUser().getAvatar_url()).transform(new RoundedTransformation(100, 0)).resize(200, 200).centerCrop().into(holder.issueCommenterAvatar); - } - - String cleanIssueComments = currentItem.getBody().trim(); - - final Markwon markwon = Markwon.builder(Objects.requireNonNull(mCtx)) - .usePlugin(CorePlugin.create()) - .usePlugin(ImagesPlugin.create(new ImagesPlugin.ImagesConfigure() { - @Override - public void configureImages(@NonNull ImagesPlugin plugin) { - plugin.addSchemeHandler(new SchemeHandler() { - @NonNull - @Override - public ImageItem handle(@NonNull String raw, @NonNull Uri uri) { - - final int resourceId = mCtx.getResources().getIdentifier( - raw.substring("drawable://".length()), - "drawable", - mCtx.getPackageName()); - - final Drawable drawable = mCtx.getDrawable(resourceId); - - assert drawable != null; - return ImageItem.withResult(drawable); - } - - @NonNull - @Override - public Collection supportedSchemes() { - return Collections.singleton("drawable"); - } - }); - plugin.placeholderProvider(new ImagesPlugin.PlaceholderProvider() { - @Nullable - @Override - public Drawable providePlaceholder(@NonNull AsyncDrawable drawable) { - return null; - } - }); - plugin.addMediaDecoder(GifMediaDecoder.create(false)); - plugin.addMediaDecoder(SvgMediaDecoder.create(mCtx.getResources())); - plugin.addMediaDecoder(SvgMediaDecoder.create()); - plugin.defaultMediaDecoder(DefaultMediaDecoder.create(mCtx.getResources())); - plugin.defaultMediaDecoder(DefaultMediaDecoder.create()); - } - })) - .usePlugin(new AbstractMarkwonPlugin() { - @Override - public void configureTheme(@NonNull MarkwonTheme.Builder builder) { - builder - .codeTextColor(tinyDb.getInt("codeBlockColor")) - .codeBackgroundColor(tinyDb.getInt("codeBlockBackground")) - .linkColor(mCtx.getResources().getColor(R.color.lightBlue)); - } - }) - .usePlugin(TablePlugin.create(mCtx)) - .usePlugin(TaskListPlugin.create(mCtx)) - .usePlugin(HtmlPlugin.create()) - .usePlugin(StrikethroughPlugin.create()) - .usePlugin(LinkifyPlugin.create()) - .build(); - - Spanned bodyWithMD = markwon.toMarkdown(EmojiParser.parseToUnicode(cleanIssueComments)); - markwon.setParsedMarkdown(holder.issueComment, bodyWithMD); - - String edited; - - if(!currentItem.getUpdated_at().equals(currentItem.getCreated_at())) { - edited = mCtx.getResources().getString(R.string.colorfulBulletSpan) + mCtx.getResources().getString(R.string.modifiedText); - holder.commentModified.setVisibility(View.VISIBLE); - holder.commentModified.setText(edited); - holder.commentModified.setOnClickListener(new ClickListener(TimeHelper.customDateFormatForToastDateFormat(currentItem.getUpdated_at()), mCtx)); - } - else { - holder.commentModified.setVisibility(View.INVISIBLE); - } - - switch (timeFormat) { - case "pretty": { - PrettyTime prettyTime = new PrettyTime(new Locale(locale)); - String createdTime = prettyTime.format(currentItem.getCreated_at()); - holder.issueCommentDate.setText(createdTime); - holder.issueCommentDate.setOnClickListener(new ClickListener(TimeHelper.customDateFormatForToastDateFormat(currentItem.getCreated_at()), mCtx)); - break; - } - case "normal": { - DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd '" + mCtx.getResources().getString(R.string.timeAtText) + "' HH:mm", new Locale(locale)); - String createdTime = formatter.format(currentItem.getCreated_at()); - holder.issueCommentDate.setText(createdTime); - break; - } - case "normal1": { - DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy '" + mCtx.getResources().getString(R.string.timeAtText) + "' HH:mm", new Locale(locale)); - String createdTime = formatter.format(currentItem.getCreated_at()); - holder.issueCommentDate.setText(createdTime); - break; - } - } - - } - - @Override - public int getItemCount() { - return issuesComments.size(); - } - -} diff --git a/app/src/main/java/org/mian/gitnex/adapters/MembersByOrgAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/MembersByOrgAdapter.java index 690eae2b..e69de29b 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/MembersByOrgAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/MembersByOrgAdapter.java @@ -1,133 +0,0 @@ -package org.mian.gitnex.adapters; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.BaseAdapter; -import android.widget.Filter; -import android.widget.Filterable; -import android.widget.ImageView; -import android.widget.TextView; -import com.squareup.picasso.Picasso; -import org.mian.gitnex.R; -import org.mian.gitnex.helpers.RoundedTransformation; -import org.mian.gitnex.models.UserInfo; -import java.util.ArrayList; -import java.util.List; - -/** - * Author M M Arif - */ - -public class MembersByOrgAdapter extends BaseAdapter implements Filterable { - - private List membersList; - private Context mCtx; - private List membersListFull; - - private class ViewHolder { - - private ImageView memberAvatar; - private TextView memberName; - - ViewHolder(View v) { - memberAvatar = v.findViewById(R.id.memberAvatar); - memberName = v.findViewById(R.id.memberName); - } - } - - public MembersByOrgAdapter(Context mCtx, List membersListMain) { - this.mCtx = mCtx; - this.membersList = membersListMain; - membersListFull = new ArrayList<>(membersList); - - } - - @Override - public int getCount() { - return membersList.size(); - } - - @Override - public Object getItem(int position) { - return null; - } - - @Override - public long getItemId(int position) { - return 0; - } - - @SuppressLint("InflateParams") - @Override - public View getView(int position, View finalView, ViewGroup parent) { - - MembersByOrgAdapter.ViewHolder viewHolder = null; - - if (finalView == null) { - finalView = LayoutInflater.from(mCtx).inflate(R.layout.members_by_org_list, null); - viewHolder = new MembersByOrgAdapter.ViewHolder(finalView); - finalView.setTag(viewHolder); - } - else { - viewHolder = (MembersByOrgAdapter.ViewHolder) finalView.getTag(); - } - - initData(viewHolder, position); - return finalView; - - } - - private void initData(MembersByOrgAdapter.ViewHolder viewHolder, int position) { - - UserInfo currentItem = membersList.get(position); - Picasso.get().load(currentItem.getAvatar()).transform(new RoundedTransformation(100, 0)).resize(200, 200).centerCrop().into(viewHolder.memberAvatar); - - if(!currentItem.getFullname().equals("")) { - viewHolder.memberName.setText(currentItem.getFullname()); - } - else { - viewHolder.memberName.setText(currentItem.getLogin()); - } - - } - - @Override - public Filter getFilter() { - return membersFilter; - } - - private Filter membersFilter = new Filter() { - @Override - protected FilterResults performFiltering(CharSequence constraint) { - List filteredList = new ArrayList<>(); - - if (constraint == null || constraint.length() == 0) { - filteredList.addAll(membersListFull); - } else { - String filterPattern = constraint.toString().toLowerCase().trim(); - - for (UserInfo item : membersListFull) { - if (item.getFullname().toLowerCase().contains(filterPattern) || item.getLogin().toLowerCase().contains(filterPattern)) { - filteredList.add(item); - } - } - } - - FilterResults results = new FilterResults(); - results.values = filteredList; - - return results; - } - - @Override - protected void publishResults(CharSequence constraint, FilterResults results) { - membersList.clear(); - membersList.addAll((List) results.values); - notifyDataSetChanged(); - } - }; - -} diff --git a/app/src/main/java/org/mian/gitnex/adapters/MyReposListAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/MyReposListAdapter.java index 41e759d6..e69de29b 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/MyReposListAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/MyReposListAdapter.java @@ -1,239 +0,0 @@ -package org.mian.gitnex.adapters; - -import android.content.Context; -import android.content.Intent; -import android.graphics.Typeface; -import android.view.LayoutInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Filter; -import android.widget.Filterable; -import android.widget.ImageView; -import android.widget.TextView; -import com.amulyakhare.textdrawable.TextDrawable; -import com.amulyakhare.textdrawable.util.ColorGenerator; -import org.mian.gitnex.R; -import org.mian.gitnex.activities.OpenRepoInBrowserActivity; -import org.mian.gitnex.activities.RepoDetailActivity; -import org.mian.gitnex.activities.RepoStargazersActivity; -import org.mian.gitnex.activities.RepoWatchersActivity; -import org.mian.gitnex.models.UserRepositories; -import org.mian.gitnex.util.TinyDB; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; -import androidx.annotation.NonNull; -import androidx.appcompat.view.ContextThemeWrapper; -import androidx.appcompat.widget.PopupMenu; -import androidx.recyclerview.widget.RecyclerView; - -/** - * Author M M Arif - */ - -public class MyReposListAdapter extends RecyclerView.Adapter implements Filterable { - - private List reposList; - private Context mCtx; - private List reposListFull; - - static class MyReposViewHolder extends RecyclerView.ViewHolder { - - private ImageView imageMy; - private TextView mTextView1My; - private TextView mTextView2My; - private TextView fullNameMy; - private ImageView repoPrivatePublicMy; - private TextView repoStarsMy; - private TextView repoWatchersMy; - private TextView repoOpenIssuesCountMy; - - private MyReposViewHolder(View itemView) { - super(itemView); - mTextView1My = itemView.findViewById(R.id.repoNameMy); - mTextView2My = itemView.findViewById(R.id.repoDescriptionMy); - imageMy = itemView.findViewById(R.id.imageAvatarMy); - fullNameMy = itemView.findViewById(R.id.repoFullNameMy); - repoPrivatePublicMy = itemView.findViewById(R.id.imageRepoTypeMy); - repoStarsMy = itemView.findViewById(R.id.repoStarsMy); - repoWatchersMy = itemView.findViewById(R.id.repoWatchersMy); - repoOpenIssuesCountMy = itemView.findViewById(R.id.repoOpenIssuesCountMy); - ImageView reposDropdownMenu = itemView.findViewById(R.id.reposDropdownMenu); - - itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - - Context context = v.getContext(); - - Intent intent = new Intent(context, RepoDetailActivity.class); - intent.putExtra("repoFullName", fullNameMy.getText().toString()); - - TinyDB tinyDb = new TinyDB(context); - tinyDb.putString("repoFullName", fullNameMy.getText().toString()); - tinyDb.putBoolean("resumeIssues", true); - context.startActivity(intent); - - } - }); - - reposDropdownMenu.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - - final Context context = v.getContext(); - Context context_ = new ContextThemeWrapper(context, R.style.popupMenuStyle); - - PopupMenu popupMenu = new PopupMenu(context_, v); - popupMenu.inflate(R.menu.repo_dotted_list_menu); - - Object menuHelper; - Class[] argTypes; - try { - - Field fMenuHelper = PopupMenu.class.getDeclaredField("mPopup"); - fMenuHelper.setAccessible(true); - menuHelper = fMenuHelper.get(popupMenu); - argTypes = new Class[] { boolean.class }; - menuHelper.getClass().getDeclaredMethod("setForceShowIcon", - argTypes).invoke(menuHelper, true); - - } catch (Exception e) { - - popupMenu.show(); - return; - - } - - popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(MenuItem item) { - switch (item.getItemId()) { - case R.id.repoStargazers: - - Intent intent = new Intent(context, RepoStargazersActivity.class); - intent.putExtra("repoFullNameForStars", fullNameMy.getText()); - context.startActivity(intent); - break; - - case R.id.repoWatchers: - - Intent intentW = new Intent(context, RepoWatchersActivity.class); - intentW.putExtra("repoFullNameForWatchers", fullNameMy.getText()); - context.startActivity(intentW); - break; - - case R.id.repoOpenInBrowser: - - Intent intentOpenInBrowser = new Intent(context, OpenRepoInBrowserActivity.class); - intentOpenInBrowser.putExtra("repoFullNameBrowser", fullNameMy.getText()); - context.startActivity(intentOpenInBrowser); - break; - - } - return false; - } - }); - - popupMenu.show(); - - } - }); - - } - } - - public MyReposListAdapter(Context mCtx, List reposListMain) { - this.mCtx = mCtx; - this.reposList = reposListMain; - reposListFull = new ArrayList<>(reposList); - } - - @NonNull - @Override - public MyReposListAdapter.MyReposViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.my_repos_list, parent, false); - return new MyReposListAdapter.MyReposViewHolder(v); - } - - @Override - public void onBindViewHolder(@NonNull MyReposListAdapter.MyReposViewHolder holder, int position) { - - UserRepositories currentItem = reposList.get(position); - holder.mTextView2My.setVisibility(View.GONE); - - ColorGenerator generator = ColorGenerator.MATERIAL; - int color = generator.getColor(currentItem.getName()); - String charac = String.valueOf(currentItem.getName().charAt(0)); - - TextDrawable drawable = TextDrawable.builder() - .beginConfig() - .useFont(Typeface.DEFAULT) - .fontSize(16) - .toUpperCase() - .width(28) - .height(28) - .endConfig() - .buildRound(charac, color); - - holder.imageMy.setImageDrawable(drawable); - holder.mTextView1My.setText(currentItem.getName()); - if (!currentItem.getDescription().equals("")) { - holder.mTextView2My.setVisibility(View.VISIBLE); - holder.mTextView2My.setText(currentItem.getDescription()); - } - holder.fullNameMy.setText(currentItem.getFullname()); - if(currentItem.getPrivateFlag()) { - holder.repoPrivatePublicMy.setImageResource(R.drawable.ic_lock_bold); - } - else { - holder.repoPrivatePublicMy.setImageResource(R.drawable.ic_public); - } - holder.repoStarsMy.setText(currentItem.getStars_count()); - holder.repoWatchersMy.setText(currentItem.getWatchers_count()); - holder.repoOpenIssuesCountMy.setText(currentItem.getOpen_issues_count()); - - } - - @Override - public int getItemCount() { - return reposList.size(); - } - - @Override - public Filter getFilter() { - return myReposFilter; - } - - private Filter myReposFilter = new Filter() { - @Override - protected FilterResults performFiltering(CharSequence constraint) { - List filteredList = new ArrayList<>(); - - if (constraint == null || constraint.length() == 0) { - filteredList.addAll(reposListFull); - } else { - String filterPattern = constraint.toString().toLowerCase().trim(); - - for (UserRepositories item : reposListFull) { - if (item.getFullname().toLowerCase().contains(filterPattern) || item.getDescription().toLowerCase().contains(filterPattern)) { - filteredList.add(item); - } - } - } - - FilterResults results = new FilterResults(); - results.values = filteredList; - - return results; - } - - @Override - protected void publishResults(CharSequence constraint, FilterResults results) { - reposList.clear(); - reposList.addAll((List) results.values); - notifyDataSetChanged(); - } - }; -} diff --git a/app/src/main/java/org/mian/gitnex/adapters/OrganizationsListAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/OrganizationsListAdapter.java index c35e8266..e69de29b 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/OrganizationsListAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/OrganizationsListAdapter.java @@ -1,132 +0,0 @@ -package org.mian.gitnex.adapters; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; -import android.content.Context; -import android.content.Intent; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Filter; -import android.widget.Filterable; -import android.widget.ImageView; -import android.widget.TextView; -import com.squareup.picasso.Picasso; -import org.mian.gitnex.R; -import org.mian.gitnex.activities.OrgDetailActivity; -import org.mian.gitnex.models.UserOrganizations; -import org.mian.gitnex.helpers.RoundedTransformation; -import org.mian.gitnex.util.TinyDB; -import java.util.ArrayList; -import java.util.List; - -/** - * Author M M Arif - */ - -public class OrganizationsListAdapter extends RecyclerView.Adapter implements Filterable { - - private List orgList; - private Context mCtx; - private List orgListFull; - - static class OrganizationsViewHolder extends RecyclerView.ViewHolder { - - private ImageView image; - private TextView mTextView1; - private TextView mTextView2; - - private OrganizationsViewHolder(View itemView) { - super(itemView); - mTextView1 = itemView.findViewById(R.id.orgUsername); - mTextView2 = itemView.findViewById(R.id.orgDescription); - image = itemView.findViewById(R.id.imageAvatar); - - itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - - Context context = v.getContext(); - Intent intent = new Intent(context, OrgDetailActivity.class); - intent.putExtra("orgName", mTextView1.getText().toString()); - - TinyDB tinyDb = new TinyDB(context); - tinyDb.putString("orgName", mTextView1.getText().toString()); - context.startActivity(intent); - - } - }); - - } - } - - public OrganizationsListAdapter(Context mCtx, List orgsListMain) { - this.mCtx = mCtx; - this.orgList = orgsListMain; - orgListFull = new ArrayList<>(orgList); - } - - @NonNull - @Override - public OrganizationsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.organizations_list, parent, false); - return new OrganizationsViewHolder(v); - } - - @Override - public void onBindViewHolder(@NonNull OrganizationsViewHolder holder, int position) { - - UserOrganizations currentItem = orgList.get(position); - holder.mTextView2.setVisibility(View.GONE); - - Picasso.get().load(currentItem.getAvatar_url()).transform(new RoundedTransformation(100, 0)).resize(200, 200).centerCrop().into(holder.image); - holder.mTextView1.setText(currentItem.getUsername()); - if (!currentItem.getDescription().equals("")) { - holder.mTextView2.setVisibility(View.VISIBLE); - holder.mTextView2.setText(currentItem.getDescription()); - } - - } - - @Override - public int getItemCount() { - return orgList.size(); - } - - @Override - public Filter getFilter() { - return orgFilter; - } - - private Filter orgFilter = new Filter() { - @Override - protected FilterResults performFiltering(CharSequence constraint) { - List filteredList = new ArrayList<>(); - - if (constraint == null || constraint.length() == 0) { - filteredList.addAll(orgListFull); - } else { - String filterPattern = constraint.toString().toLowerCase().trim(); - - for (UserOrganizations item : orgListFull) { - if (item.getUsername().toLowerCase().contains(filterPattern) || item.getDescription().toLowerCase().contains(filterPattern)) { - filteredList.add(item); - } - } - } - - FilterResults results = new FilterResults(); - results.values = filteredList; - - return results; - } - - @Override - protected void publishResults(CharSequence constraint, FilterResults results) { - orgList.clear(); - orgList.addAll((List) results.values); - notifyDataSetChanged(); - } - }; - -} diff --git a/app/src/main/java/org/mian/gitnex/adapters/ProfileFollowersAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/ProfileFollowersAdapter.java index 06ba10c2..e69de29b 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/ProfileFollowersAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/ProfileFollowersAdapter.java @@ -1,78 +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.ImageView; -import android.widget.TextView; -import com.squareup.picasso.Picasso; -import org.mian.gitnex.R; -import org.mian.gitnex.helpers.RoundedTransformation; -import org.mian.gitnex.models.UserInfo; -import java.util.List; -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -/** - * Author M M Arif - */ - -public class ProfileFollowersAdapter extends RecyclerView.Adapter { - - private List followersList; - private Context mCtx; - - static class FollowersViewHolder extends RecyclerView.ViewHolder { - - private ImageView userAvatar; - private TextView userFullName; - private TextView userName; - - private FollowersViewHolder(View itemView) { - super(itemView); - - userAvatar = itemView.findViewById(R.id.userAvatar); - userFullName = itemView.findViewById(R.id.userFullName); - userName = itemView.findViewById(R.id.userName); - - } - } - - public ProfileFollowersAdapter(Context mCtx, List followersListMain) { - this.mCtx = mCtx; - this.followersList = followersListMain; - } - - @NonNull - @Override - public ProfileFollowersAdapter.FollowersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.profile_followers_list, parent, false); - return new ProfileFollowersAdapter.FollowersViewHolder(v); - } - - @Override - public void onBindViewHolder(@NonNull ProfileFollowersAdapter.FollowersViewHolder holder, int position) { - - UserInfo currentItem = followersList.get(position); - - if(!currentItem.getFullname().equals("")) { - holder.userFullName.setText(currentItem.getFullname()); - holder.userName.setText(mCtx.getResources().getString(R.string.usernameWithAt, currentItem.getUsername())); - } - else { - holder.userFullName.setText(mCtx.getResources().getString(R.string.usernameWithAt, currentItem.getUsername())); - holder.userName.setVisibility(View.GONE); - } - - Picasso.get().load(currentItem.getAvatar()).transform(new RoundedTransformation(100, 0)).resize(140, 140).centerCrop().into(holder.userAvatar); - } - - @Override - public int getItemCount() { - return followersList.size(); - } - -} - - diff --git a/app/src/main/java/org/mian/gitnex/adapters/ProfileFollowingAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/ProfileFollowingAdapter.java index ca2ea34c..e69de29b 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/ProfileFollowingAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/ProfileFollowingAdapter.java @@ -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.ImageView; -import android.widget.TextView; -import com.squareup.picasso.Picasso; -import org.mian.gitnex.R; -import org.mian.gitnex.helpers.RoundedTransformation; -import org.mian.gitnex.models.UserInfo; -import java.util.List; -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -/** - * Author M M Arif - */ - -public class ProfileFollowingAdapter extends RecyclerView.Adapter { - - private List followingList; - private Context mCtx; - - static class FollowingViewHolder extends RecyclerView.ViewHolder { - - private ImageView userAvatar; - private TextView userFullName; - private TextView userName; - - private FollowingViewHolder(View itemView) { - super(itemView); - - userAvatar = itemView.findViewById(R.id.userAvatar); - userFullName = itemView.findViewById(R.id.userFullName); - userName = itemView.findViewById(R.id.userName); - - } - } - - public ProfileFollowingAdapter(Context mCtx, List followingListMain) { - this.mCtx = mCtx; - this.followingList = followingListMain; - } - - @NonNull - @Override - public ProfileFollowingAdapter.FollowingViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.profile_following_list, parent, false); - return new ProfileFollowingAdapter.FollowingViewHolder(v); - } - - @Override - public void onBindViewHolder(@NonNull ProfileFollowingAdapter.FollowingViewHolder holder, int position) { - - UserInfo currentItem = followingList.get(position); - - if(!currentItem.getFullname().equals("")) { - holder.userFullName.setText(currentItem.getFullname()); - holder.userName.setText(mCtx.getResources().getString(R.string.usernameWithAt, currentItem.getUsername())); - } - else { - holder.userFullName.setText(mCtx.getResources().getString(R.string.usernameWithAt, currentItem.getUsername())); - holder.userName.setVisibility(View.GONE); - } - - Picasso.get().load(currentItem.getAvatar()).transform(new RoundedTransformation(100, 0)).resize(140, 140).centerCrop().into(holder.userAvatar); - } - - @Override - public int getItemCount() { - return followingList.size(); - } - - -} diff --git a/app/src/main/java/org/mian/gitnex/adapters/ReposListAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/ReposListAdapter.java index 0cdda5f0..e69de29b 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/ReposListAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/ReposListAdapter.java @@ -1,242 +0,0 @@ -package org.mian.gitnex.adapters; - -import android.content.Context; -import android.content.Intent; -import android.graphics.Typeface; -import androidx.annotation.NonNull; -import androidx.appcompat.view.ContextThemeWrapper; -import androidx.appcompat.widget.PopupMenu; -import androidx.recyclerview.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Filter; -import android.widget.Filterable; -import android.widget.ImageView; -import android.widget.TextView; -import com.amulyakhare.textdrawable.TextDrawable; -import com.amulyakhare.textdrawable.util.ColorGenerator; -import org.mian.gitnex.R; -import org.mian.gitnex.activities.OpenRepoInBrowserActivity; -import org.mian.gitnex.activities.RepoDetailActivity; -import org.mian.gitnex.activities.RepoStargazersActivity; -import org.mian.gitnex.activities.RepoWatchersActivity; -import org.mian.gitnex.models.UserRepositories; -import org.mian.gitnex.util.TinyDB; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; - -/** - * Author M M Arif - */ - -public class ReposListAdapter extends RecyclerView.Adapter implements Filterable { - - private List reposList; - private Context mCtx; - private List reposListFull; - - static class ReposViewHolder extends RecyclerView.ViewHolder { - - private ImageView image; - private TextView mTextView1; - private TextView mTextView2; - private TextView fullName; - private ImageView repoPrivatePublic; - private TextView repoStars; - private TextView repoWatchers; - private TextView repoOpenIssuesCount; - - private ReposViewHolder(View itemView) { - - super(itemView); - mTextView1 = itemView.findViewById(R.id.repoName); - mTextView2 = itemView.findViewById(R.id.repoDescription); - image = itemView.findViewById(R.id.imageAvatar); - fullName = itemView.findViewById(R.id.repoFullName); - repoPrivatePublic = itemView.findViewById(R.id.imageRepoType); - repoStars = itemView.findViewById(R.id.repoStars); - repoWatchers = itemView.findViewById(R.id.repoWatchers); - repoOpenIssuesCount = itemView.findViewById(R.id.repoOpenIssuesCount); - ImageView reposDropdownMenu = itemView.findViewById(R.id.reposDropdownMenu); - - itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - - Context context = v.getContext(); - TextView repoFullName = v.findViewById(R.id.repoFullName); - - Intent intent = new Intent(context, RepoDetailActivity.class); - intent.putExtra("repoFullName", repoFullName.getText().toString()); - - TinyDB tinyDb = new TinyDB(context); - tinyDb.putString("repoFullName", repoFullName.getText().toString()); - tinyDb.putBoolean("resumeIssues", true); - context.startActivity(intent); - - } - }); - - reposDropdownMenu.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - - final Context context = v.getContext(); - Context context_ = new ContextThemeWrapper(context, R.style.popupMenuStyle); - - PopupMenu popupMenu = new PopupMenu(context_, v); - popupMenu.inflate(R.menu.repo_dotted_list_menu); - - Object menuHelper; - Class[] argTypes; - try { - - Field fMenuHelper = PopupMenu.class.getDeclaredField("mPopup"); - fMenuHelper.setAccessible(true); - menuHelper = fMenuHelper.get(popupMenu); - argTypes = new Class[] { boolean.class }; - menuHelper.getClass().getDeclaredMethod("setForceShowIcon", - argTypes).invoke(menuHelper, true); - - } catch (Exception e) { - - popupMenu.show(); - return; - - } - - popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(MenuItem item) { - switch (item.getItemId()) { - case R.id.repoStargazers: - - Intent intent = new Intent(context, RepoStargazersActivity.class); - intent.putExtra("repoFullNameForStars", fullName.getText()); - context.startActivity(intent); - break; - - case R.id.repoWatchers: - - Intent intentW = new Intent(context, RepoWatchersActivity.class); - intentW.putExtra("repoFullNameForWatchers", fullName.getText()); - context.startActivity(intentW); - break; - - case R.id.repoOpenInBrowser: - - Intent intentOpenInBrowser = new Intent(context, OpenRepoInBrowserActivity.class); - intentOpenInBrowser.putExtra("repoFullNameBrowser", fullName.getText()); - context.startActivity(intentOpenInBrowser); - break; - - } - return false; - } - }); - - popupMenu.show(); - - } - }); - - } - } - - public ReposListAdapter(Context mCtx, List reposListMain) { - this.mCtx = mCtx; - this.reposList = reposListMain; - reposListFull = new ArrayList<>(reposList); - } - - @NonNull - @Override - public ReposViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.repos_list, parent, false); - return new ReposViewHolder(v); - } - - @Override - public void onBindViewHolder(@NonNull ReposViewHolder holder, int position) { - - UserRepositories currentItem = reposList.get(position); - holder.mTextView2.setVisibility(View.GONE); - - ColorGenerator generator = ColorGenerator.MATERIAL; - int color = generator.getColor(currentItem.getName()); - String charac = String.valueOf(currentItem.getName().charAt(0)); - - TextDrawable drawable = TextDrawable.builder() - .beginConfig() - .useFont(Typeface.DEFAULT) - .fontSize(16) - .toUpperCase() - .width(28) - .height(28) - .endConfig() - .buildRound(charac, color); - - holder.image.setImageDrawable(drawable); - holder.mTextView1.setText(currentItem.getName()); - if (!currentItem.getDescription().equals("")) { - holder.mTextView2.setVisibility(View.VISIBLE); - holder.mTextView2.setText(currentItem.getDescription()); - } - holder.fullName.setText(currentItem.getFullname()); - if(currentItem.getPrivateFlag()) { - holder.repoPrivatePublic.setImageResource(R.drawable.ic_lock_bold); - } - else { - holder.repoPrivatePublic.setImageResource(R.drawable.ic_public); - } - holder.repoStars.setText(currentItem.getStars_count()); - holder.repoWatchers.setText(currentItem.getWatchers_count()); - holder.repoOpenIssuesCount.setText(currentItem.getOpen_issues_count()); - - } - - @Override - public int getItemCount() { - return reposList.size(); - } - - @Override - public Filter getFilter() { - return reposFilter; - } - - private Filter reposFilter = new Filter() { - @Override - protected FilterResults performFiltering(CharSequence constraint) { - List filteredList = new ArrayList<>(); - - if (constraint == null || constraint.length() == 0) { - filteredList.addAll(reposListFull); - } else { - String filterPattern = constraint.toString().toLowerCase().trim(); - - for (UserRepositories item : reposListFull) { - if (item.getFullname().toLowerCase().contains(filterPattern) || item.getDescription().toLowerCase().contains(filterPattern)) { - filteredList.add(item); - } - } - } - - FilterResults results = new FilterResults(); - results.values = filteredList; - - return results; - } - - @Override - protected void publishResults(CharSequence constraint, FilterResults results) { - reposList.clear(); - reposList.addAll((List) results.values); - notifyDataSetChanged(); - } - }; - -} diff --git a/app/src/main/java/org/mian/gitnex/adapters/RepositoriesByOrgAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/RepositoriesByOrgAdapter.java index b8301c73..e69de29b 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/RepositoriesByOrgAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/RepositoriesByOrgAdapter.java @@ -1,241 +0,0 @@ -package org.mian.gitnex.adapters; - -import android.content.Context; -import android.content.Intent; -import android.graphics.Typeface; -import android.view.LayoutInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Filter; -import android.widget.Filterable; -import android.widget.ImageView; -import android.widget.TextView; -import com.amulyakhare.textdrawable.TextDrawable; -import com.amulyakhare.textdrawable.util.ColorGenerator; -import org.mian.gitnex.R; -import org.mian.gitnex.activities.OpenRepoInBrowserActivity; -import org.mian.gitnex.activities.RepoDetailActivity; -import org.mian.gitnex.activities.RepoStargazersActivity; -import org.mian.gitnex.activities.RepoWatchersActivity; -import org.mian.gitnex.models.UserRepositories; -import org.mian.gitnex.util.TinyDB; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; -import androidx.annotation.NonNull; -import androidx.appcompat.view.ContextThemeWrapper; -import androidx.appcompat.widget.PopupMenu; -import androidx.recyclerview.widget.RecyclerView; - -/** - * Author M M Arif - */ - -public class RepositoriesByOrgAdapter extends RecyclerView.Adapter implements Filterable { - - private List reposList; - private Context mCtx; - private List reposListFull; - - static class OrgReposViewHolder extends RecyclerView.ViewHolder { - - private ImageView image; - private TextView mTextView1; - private TextView mTextView2; - private TextView fullName; - private ImageView repoPrivatePublic; - private TextView repoStars; - private TextView repoWatchers; - private TextView repoOpenIssuesCount; - - private OrgReposViewHolder(View itemView) { - super(itemView); - mTextView1 = itemView.findViewById(R.id.repoName); - mTextView2 = itemView.findViewById(R.id.repoDescription); - image = itemView.findViewById(R.id.imageAvatar); - fullName = itemView.findViewById(R.id.repoFullName); - repoPrivatePublic = itemView.findViewById(R.id.imageRepoType); - repoStars = itemView.findViewById(R.id.repoStars); - repoWatchers = itemView.findViewById(R.id.repoWatchers); - repoOpenIssuesCount = itemView.findViewById(R.id.repoOpenIssuesCount); - ImageView reposDropdownMenu = itemView.findViewById(R.id.reposDropdownMenu); - - itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - - Context context = v.getContext(); - - Intent intent = new Intent(context, RepoDetailActivity.class); - intent.putExtra("repoFullName", fullName.getText().toString()); - - TinyDB tinyDb = new TinyDB(context); - tinyDb.putString("repoFullName", fullName.getText().toString()); - tinyDb.putBoolean("resumeIssues", true); - context.startActivity(intent); - - } - }); - - reposDropdownMenu.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - - final Context context = v.getContext(); - Context context_ = new ContextThemeWrapper(context, R.style.popupMenuStyle); - - PopupMenu popupMenu = new PopupMenu(context_, v); - popupMenu.inflate(R.menu.repo_dotted_list_menu); - - Object menuHelper; - Class[] argTypes; - try { - - Field fMenuHelper = PopupMenu.class.getDeclaredField("mPopup"); - fMenuHelper.setAccessible(true); - menuHelper = fMenuHelper.get(popupMenu); - argTypes = new Class[] { boolean.class }; - menuHelper.getClass().getDeclaredMethod("setForceShowIcon", - argTypes).invoke(menuHelper, true); - - } catch (Exception e) { - - popupMenu.show(); - return; - - } - - popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(MenuItem item) { - switch (item.getItemId()) { - case R.id.repoStargazers: - - Intent intent = new Intent(context, RepoStargazersActivity.class); - intent.putExtra("repoFullNameForStars", fullName.getText()); - context.startActivity(intent); - break; - - case R.id.repoWatchers: - - Intent intentW = new Intent(context, RepoWatchersActivity.class); - intentW.putExtra("repoFullNameForWatchers", fullName.getText()); - context.startActivity(intentW); - break; - - case R.id.repoOpenInBrowser: - - Intent intentOpenInBrowser = new Intent(context, OpenRepoInBrowserActivity.class); - intentOpenInBrowser.putExtra("repoFullNameBrowser", fullName.getText()); - context.startActivity(intentOpenInBrowser); - break; - - } - return false; - } - }); - - popupMenu.show(); - - } - }); - - } - - } - - public RepositoriesByOrgAdapter(Context mCtx, List reposListMain) { - this.mCtx = mCtx; - this.reposList = reposListMain; - reposListFull = new ArrayList<>(reposList); - } - - @NonNull - @Override - public RepositoriesByOrgAdapter.OrgReposViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.repositories_by_org_list, parent, false); - return new RepositoriesByOrgAdapter.OrgReposViewHolder(v); - } - - @Override - public void onBindViewHolder(@NonNull RepositoriesByOrgAdapter.OrgReposViewHolder holder, int position) { - - UserRepositories currentItem = reposList.get(position); - holder.mTextView2.setVisibility(View.GONE); - - ColorGenerator generator = ColorGenerator.MATERIAL; - int color = generator.getColor(currentItem.getName()); - String charac = String.valueOf(currentItem.getName().charAt(0)); - - TextDrawable drawable = TextDrawable.builder() - .beginConfig() - .useFont(Typeface.DEFAULT) - .fontSize(16) - .toUpperCase() - .width(28) - .height(28) - .endConfig() - .buildRound(charac, color); - - holder.image.setImageDrawable(drawable); - holder.mTextView1.setText(currentItem.getName()); - if (!currentItem.getDescription().equals("")) { - holder.mTextView2.setVisibility(View.VISIBLE); - holder.mTextView2.setText(currentItem.getDescription()); - } - holder.fullName.setText(currentItem.getFullname()); - if(currentItem.getPrivateFlag()) { - holder.repoPrivatePublic.setImageResource(R.drawable.ic_lock_bold); - } - else { - holder.repoPrivatePublic.setImageResource(R.drawable.ic_public); - } - holder.repoStars.setText(currentItem.getStars_count()); - holder.repoWatchers.setText(currentItem.getWatchers_count()); - holder.repoOpenIssuesCount.setText(currentItem.getOpen_issues_count()); - - } - - @Override - public int getItemCount() { - return reposList.size(); - } - - @Override - public Filter getFilter() { - return orgReposFilter; - } - - private Filter orgReposFilter = new Filter() { - @Override - protected FilterResults performFiltering(CharSequence constraint) { - List filteredList = new ArrayList<>(); - - if (constraint == null || constraint.length() == 0) { - filteredList.addAll(reposListFull); - } else { - String filterPattern = constraint.toString().toLowerCase().trim(); - - for (UserRepositories item : reposListFull) { - if (item.getFullname().toLowerCase().contains(filterPattern) || item.getDescription().toLowerCase().contains(filterPattern)) { - filteredList.add(item); - } - } - } - - FilterResults results = new FilterResults(); - results.values = filteredList; - - return results; - } - - @Override - protected void publishResults(CharSequence constraint, FilterResults results) { - reposList.clear(); - reposList.addAll((List) results.values); - notifyDataSetChanged(); - } - }; - -} diff --git a/app/src/main/java/org/mian/gitnex/adapters/StarredReposListAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/StarredReposListAdapter.java index 1e2b1531..e69de29b 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/StarredReposListAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/StarredReposListAdapter.java @@ -1,241 +0,0 @@ -package org.mian.gitnex.adapters; - -import android.content.Context; -import android.content.Intent; -import android.graphics.Typeface; -import android.view.LayoutInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Filter; -import android.widget.Filterable; -import android.widget.ImageView; -import android.widget.TextView; -import com.amulyakhare.textdrawable.TextDrawable; -import com.amulyakhare.textdrawable.util.ColorGenerator; -import org.mian.gitnex.R; -import org.mian.gitnex.activities.OpenRepoInBrowserActivity; -import org.mian.gitnex.activities.RepoDetailActivity; -import org.mian.gitnex.activities.RepoStargazersActivity; -import org.mian.gitnex.activities.RepoWatchersActivity; -import org.mian.gitnex.models.UserRepositories; -import org.mian.gitnex.util.TinyDB; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; -import androidx.annotation.NonNull; -import androidx.appcompat.view.ContextThemeWrapper; -import androidx.appcompat.widget.PopupMenu; -import androidx.recyclerview.widget.RecyclerView; - -/** - * Author M M Arif - */ - -public class StarredReposListAdapter extends RecyclerView.Adapter implements Filterable { - - private List reposList; - private Context mCtx; - private List reposListFull; - - static class StarredReposViewHolder extends RecyclerView.ViewHolder { - - private ImageView image; - private TextView mTextView1; - private TextView mTextView2; - private TextView fullName; - private ImageView repoPrivatePublic; - private TextView repoStars; - private TextView repoWatchers; - private TextView repoOpenIssuesCount; - - private StarredReposViewHolder(View itemView) { - super(itemView); - mTextView1 = itemView.findViewById(R.id.repoName); - mTextView2 = itemView.findViewById(R.id.repoDescription); - image = itemView.findViewById(R.id.imageAvatar); - fullName = itemView.findViewById(R.id.repoFullName); - repoPrivatePublic = itemView.findViewById(R.id.imageRepoType); - repoStars = itemView.findViewById(R.id.repoStars); - repoWatchers = itemView.findViewById(R.id.repoWatchers); - repoOpenIssuesCount = itemView.findViewById(R.id.repoOpenIssuesCount); - ImageView reposDropdownMenu = itemView.findViewById(R.id.reposDropdownMenu); - - itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - - Context context = v.getContext(); - - Intent intent = new Intent(context, RepoDetailActivity.class); - intent.putExtra("repoFullName", fullName.getText().toString()); - - TinyDB tinyDb = new TinyDB(context); - tinyDb.putString("repoFullName", fullName.getText().toString()); - tinyDb.putBoolean("resumeIssues", true); - context.startActivity(intent); - - } - }); - - reposDropdownMenu.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - - final Context context = v.getContext(); - Context context_ = new ContextThemeWrapper(context, R.style.popupMenuStyle); - - PopupMenu popupMenu = new PopupMenu(context_, v); - popupMenu.inflate(R.menu.repo_dotted_list_menu); - - Object menuHelper; - Class[] argTypes; - try { - - Field fMenuHelper = PopupMenu.class.getDeclaredField("mPopup"); - fMenuHelper.setAccessible(true); - menuHelper = fMenuHelper.get(popupMenu); - argTypes = new Class[] { boolean.class }; - menuHelper.getClass().getDeclaredMethod("setForceShowIcon", - argTypes).invoke(menuHelper, true); - - } catch (Exception e) { - - popupMenu.show(); - return; - - } - - popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { - @Override - public boolean onMenuItemClick(MenuItem item) { - switch (item.getItemId()) { - case R.id.repoStargazers: - - Intent intent = new Intent(context, RepoStargazersActivity.class); - intent.putExtra("repoFullNameForStars", fullName.getText()); - context.startActivity(intent); - break; - - case R.id.repoWatchers: - - Intent intentW = new Intent(context, RepoWatchersActivity.class); - intentW.putExtra("repoFullNameForWatchers", fullName.getText()); - context.startActivity(intentW); - break; - - case R.id.repoOpenInBrowser: - - Intent intentOpenInBrowser = new Intent(context, OpenRepoInBrowserActivity.class); - intentOpenInBrowser.putExtra("repoFullNameBrowser", fullName.getText()); - context.startActivity(intentOpenInBrowser); - break; - - } - return false; - } - }); - - popupMenu.show(); - - } - }); - - } - - } - - public StarredReposListAdapter(Context mCtx, List reposListMain) { - this.mCtx = mCtx; - this.reposList = reposListMain; - reposListFull = new ArrayList<>(reposList); - } - - @NonNull - @Override - public StarredReposListAdapter.StarredReposViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.starred_repos_list, parent, false); - return new StarredReposListAdapter.StarredReposViewHolder(v); - } - - @Override - public void onBindViewHolder(@NonNull StarredReposListAdapter.StarredReposViewHolder holder, int position) { - - UserRepositories currentItem = reposList.get(position); - holder.mTextView2.setVisibility(View.GONE); - - ColorGenerator generator = ColorGenerator.MATERIAL; - int color = generator.getColor(currentItem.getName()); - String charac = String.valueOf(currentItem.getName().charAt(0)); - - TextDrawable drawable = TextDrawable.builder() - .beginConfig() - .useFont(Typeface.DEFAULT) - .fontSize(16) - .toUpperCase() - .width(28) - .height(28) - .endConfig() - .buildRound(charac, color); - - holder.image.setImageDrawable(drawable); - holder.mTextView1.setText(currentItem.getName()); - if (!currentItem.getDescription().equals("")) { - holder.mTextView2.setVisibility(View.VISIBLE); - holder.mTextView2.setText(currentItem.getDescription()); - } - holder.fullName.setText(currentItem.getFullname()); - if(currentItem.getPrivateFlag()) { - holder.repoPrivatePublic.setImageResource(R.drawable.ic_lock_bold); - } - else { - holder.repoPrivatePublic.setImageResource(R.drawable.ic_public); - } - holder.repoStars.setText(currentItem.getStars_count()); - holder.repoWatchers.setText(currentItem.getWatchers_count()); - holder.repoOpenIssuesCount.setText(currentItem.getOpen_issues_count()); - - } - - @Override - public int getItemCount() { - return reposList.size(); - } - - @Override - public Filter getFilter() { - return starredReposFilter; - } - - private Filter starredReposFilter = new Filter() { - @Override - protected FilterResults performFiltering(CharSequence constraint) { - List filteredList = new ArrayList<>(); - - if (constraint == null || constraint.length() == 0) { - filteredList.addAll(reposListFull); - } else { - String filterPattern = constraint.toString().toLowerCase().trim(); - - for (UserRepositories item : reposListFull) { - if (item.getFullname().toLowerCase().contains(filterPattern) || item.getDescription().toLowerCase().contains(filterPattern)) { - filteredList.add(item); - } - } - } - - FilterResults results = new FilterResults(); - results.values = filteredList; - - return results; - } - - @Override - protected void publishResults(CharSequence constraint, FilterResults results) { - reposList.clear(); - reposList.addAll((List) results.values); - notifyDataSetChanged(); - } - }; - -} diff --git a/app/src/main/java/org/mian/gitnex/adapters/TeamMembersByOrgAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/TeamMembersByOrgAdapter.java index 46cca9ce..e69de29b 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/TeamMembersByOrgAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/TeamMembersByOrgAdapter.java @@ -1,91 +0,0 @@ -package org.mian.gitnex.adapters; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.BaseAdapter; -import android.widget.ImageView; -import android.widget.TextView; -import com.squareup.picasso.Picasso; -import org.mian.gitnex.R; -import org.mian.gitnex.helpers.RoundedTransformation; -import org.mian.gitnex.models.UserInfo; -import java.util.List; - -/** - * Author M M Arif - */ - -public class TeamMembersByOrgAdapter extends BaseAdapter { - - private List teamMembersList; - private Context mCtx; - - private class ViewHolder { - - private ImageView memberAvatar; - private TextView memberName; - - ViewHolder(View v) { - memberAvatar = v.findViewById(R.id.memberAvatar); - memberName = v.findViewById(R.id.memberName); - } - } - - public TeamMembersByOrgAdapter(Context mCtx, List membersListMain) { - this.mCtx = mCtx; - this.teamMembersList = membersListMain; - - } - - @Override - public int getCount() { - return teamMembersList.size(); - } - - @Override - public Object getItem(int position) { - return null; - } - - @Override - public long getItemId(int position) { - return 0; - } - - @SuppressLint("InflateParams") - @Override - public View getView(int position, View finalView, ViewGroup parent) { - - TeamMembersByOrgAdapter.ViewHolder viewHolder = null; - - if (finalView == null) { - finalView = LayoutInflater.from(mCtx).inflate(R.layout.members_by_team_by_org_list, null); - viewHolder = new TeamMembersByOrgAdapter.ViewHolder(finalView); - finalView.setTag(viewHolder); - } - else { - viewHolder = (TeamMembersByOrgAdapter.ViewHolder) finalView.getTag(); - } - - initData(viewHolder, position); - return finalView; - - } - - private void initData(TeamMembersByOrgAdapter.ViewHolder viewHolder, int position) { - - UserInfo currentItem = teamMembersList.get(position); - Picasso.get().load(currentItem.getAvatar()).transform(new RoundedTransformation(100, 0)).resize(200, 200).centerCrop().into(viewHolder.memberAvatar); - - if(!currentItem.getFullname().equals("")) { - viewHolder.memberName.setText(currentItem.getFullname()); - } - else { - viewHolder.memberName.setText(currentItem.getLogin()); - } - - } -} diff --git a/app/src/main/java/org/mian/gitnex/adapters/UserSearchAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/UserSearchAdapter.java index 5c055358..e69de29b 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/UserSearchAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/UserSearchAdapter.java @@ -1,207 +0,0 @@ -package org.mian.gitnex.adapters; - -import android.content.Context; -import android.content.DialogInterface; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.ListView; -import android.widget.TextView; -import com.squareup.picasso.Picasso; -import org.mian.gitnex.R; -import org.mian.gitnex.actions.CollaboratorActions; -import org.mian.gitnex.clients.RetrofitClient; -import org.mian.gitnex.helpers.AlertDialogs; -import org.mian.gitnex.helpers.Authorization; -import org.mian.gitnex.helpers.RoundedTransformation; -import org.mian.gitnex.models.Collaborators; -import org.mian.gitnex.models.UserInfo; -import org.mian.gitnex.util.TinyDB; -import java.util.List; -import androidx.annotation.NonNull; -import androidx.appcompat.app.AlertDialog; -import androidx.recyclerview.widget.RecyclerView; -import retrofit2.Call; -import retrofit2.Callback; -import retrofit2.Response; - -/** - * Author M M Arif - */ - -public class UserSearchAdapter extends RecyclerView.Adapter { - - private List usersSearchList; - private Context mCtx; - - public UserSearchAdapter(List dataList, Context mCtx) { - this.mCtx = mCtx; - this.usersSearchList = dataList; - } - - static class UserSearchViewHolder extends RecyclerView.ViewHolder { - - private ImageView userAvatar; - private TextView userFullName; - private TextView userName; - private TextView userNameMain; - private ImageView addCollaboratorButtonAdd; - private ImageView addCollaboratorButtonRemove; - - private String[] permissionList = {"Read", "Write", "Admin"}; - final private int permissionSelectedChoice = 0; - - private UserSearchViewHolder(View itemView) { - super(itemView); - userAvatar = itemView.findViewById(R.id.userAvatar); - userFullName = itemView.findViewById(R.id.userFullName); - userName = itemView.findViewById(R.id.userName); - userNameMain = itemView.findViewById(R.id.userNameMain); - addCollaboratorButtonAdd = itemView.findViewById(R.id.addCollaboratorButtonAdd); - addCollaboratorButtonRemove = itemView.findViewById(R.id.addCollaboratorButtonRemove); - - addCollaboratorButtonAdd.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - - final Context context = v.getContext(); - - AlertDialog.Builder pBuilder = new AlertDialog.Builder(context, R.style.confirmDialog); - - pBuilder.setTitle(R.string.newTeamPermission); - pBuilder.setSingleChoiceItems(permissionList, permissionSelectedChoice, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialogInterface, int i) { - - } - }) - .setCancelable(false) - .setNegativeButton(R.string.cancelButton, null) - .setPositiveButton(R.string.addButton, new DialogInterface.OnClickListener() { - - @Override - public void onClick(DialogInterface dialog, int which) { - - ListView lw = ((AlertDialog)dialog).getListView(); - Object checkedItem = lw.getAdapter().getItem(lw.getCheckedItemPosition()); - - CollaboratorActions.addCollaborator(context, String.valueOf(checkedItem).toLowerCase(), userNameMain.getText().toString()); - - } - }); - - AlertDialog pDialog = pBuilder.create(); - pDialog.show(); - - } - }); - - addCollaboratorButtonRemove.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - - Context context = v.getContext(); - - AlertDialogs.collaboratorRemoveDialog(context, userNameMain.getText().toString(), - context.getResources().getString(R.string.removeCollaboratorTitle), - context.getResources().getString(R.string.removeCollaboratorMessage), - context.getResources().getString(R.string.removeButton), - context.getResources().getString(R.string.cancelButton), "fa"); - - } - }); - - } - - } - - @NonNull - @Override - public UserSearchAdapter.UserSearchViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.collaborators_list_search, parent, false); - return new UserSearchAdapter.UserSearchViewHolder(v); - } - - @Override - public void onBindViewHolder(@NonNull final UserSearchAdapter.UserSearchViewHolder holder, int position) { - - final UserInfo currentItem = usersSearchList.get(position); - - holder.userNameMain.setText(currentItem.getUsername()); - - if (!currentItem.getFullname().equals("")) { - holder.userFullName.setText(currentItem.getFullname()); - holder.userName.setText(mCtx.getResources().getString(R.string.usernameWithAt, currentItem.getUsername())); - } - else { - holder.userFullName.setText(mCtx.getResources().getString(R.string.usernameWithAt, currentItem.getUsername())); - holder.userName.setText(mCtx.getResources().getString(R.string.usernameWithAt, currentItem.getUsername())); - } - - if (!currentItem.getAvatar().equals("")) { - Picasso.get().load(currentItem.getAvatar()).transform(new RoundedTransformation(100, 0)).resize(200, 200).centerCrop().into(holder.userAvatar); - } - - if(getItemCount() > 0) { - - TinyDB tinyDb = new TinyDB(mCtx); - final String instanceUrl = tinyDb.getString("instanceUrl"); - final String loginUid = tinyDb.getString("loginUid"); - String repoFullName = tinyDb.getString("repoFullName"); - String[] parts = repoFullName.split("/"); - final String repoOwner = parts[0]; - final String repoName = parts[1]; - final String instanceToken = "token " + tinyDb.getString(loginUid + "-token"); - - Call call = RetrofitClient - .getInstance(instanceUrl) - .getApiInterface() - .checkRepoCollaborator(Authorization.returnAuthentication(mCtx, loginUid, instanceToken), repoOwner, repoName, currentItem.getUsername()); - - call.enqueue(new Callback() { - - @Override - public void onResponse(@NonNull Call call, @NonNull Response response) { - - if(response.code() == 204) { - if(!currentItem.getUsername().equals(loginUid) && !currentItem.getUsername().equals(repoOwner)) { - holder.addCollaboratorButtonRemove.setVisibility(View.VISIBLE); - } - else { - holder.addCollaboratorButtonRemove.setVisibility(View.GONE); - } - } - else if(response.code() == 404) { - if(!currentItem.getUsername().equals(loginUid) && !currentItem.getUsername().equals(repoOwner)) { - holder.addCollaboratorButtonAdd.setVisibility(View.VISIBLE); - } - else { - holder.addCollaboratorButtonAdd.setVisibility(View.GONE); - } - } - else { - holder.addCollaboratorButtonRemove.setVisibility(View.GONE); - holder.addCollaboratorButtonAdd.setVisibility(View.GONE); - Log.i("onResponse", String.valueOf(response.code())); - } - - } - - @Override - public void onFailure(@NonNull Call call, @NonNull Throwable t) { - Log.i("onFailure", t.getMessage()); - } - - }); - - } - - } - - @Override - public int getItemCount() { - return usersSearchList.size(); - } -} diff --git a/app/src/main/java/org/mian/gitnex/fragments/OrganizationInfoFragment.java b/app/src/main/java/org/mian/gitnex/fragments/OrganizationInfoFragment.java index 63a69eb4..e69de29b 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/OrganizationInfoFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/OrganizationInfoFragment.java @@ -1,146 +0,0 @@ -package org.mian.gitnex.fragments; - -import android.content.Context; -import android.net.Uri; -import android.os.Bundle; -import androidx.annotation.NonNull; -import androidx.fragment.app.Fragment; -import retrofit2.Call; -import retrofit2.Callback; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.ProgressBar; -import android.widget.TextView; -import com.squareup.picasso.Picasso; -import org.mian.gitnex.R; -import org.mian.gitnex.clients.RetrofitClient; -import org.mian.gitnex.helpers.Authorization; -import org.mian.gitnex.helpers.RoundedTransformation; -import org.mian.gitnex.models.Organization; -import org.mian.gitnex.util.TinyDB; - -/** - * Author M M Arif - */ - -public class OrganizationInfoFragment extends Fragment { - - private Context ctx = getContext(); - private ProgressBar mProgressBar; - private static String orgNameF = "param1"; - - private String orgName; - private ImageView orgAvatar; - private TextView orgDescInfo; - private TextView orgWebsiteInfo; - private TextView orgLocationInfo; - - private RepoInfoFragment.OnFragmentInteractionListener mListener; - - public OrganizationInfoFragment() { - } - - public static OrganizationInfoFragment newInstance(String param1) { - OrganizationInfoFragment fragment = new OrganizationInfoFragment(); - Bundle args = new Bundle(); - args.putString(orgNameF, param1); - fragment.setArguments(args); - return fragment; - } - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - if (getArguments() != null) { - orgName = getArguments().getString(orgNameF); - } - } - - @Override - public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - - View v = inflater.inflate(R.layout.fragment_organization_info, container, false); - - TinyDB tinyDb = new TinyDB(getContext()); - final String instanceUrl = tinyDb.getString("instanceUrl"); - final String loginUid = tinyDb.getString("loginUid"); - final String instanceToken = "token " + tinyDb.getString(loginUid + "-token"); - - mProgressBar = v.findViewById(R.id.progress_bar); - orgAvatar = v.findViewById(R.id.orgAvatar); - TextView orgNameInfo = v.findViewById(R.id.orgNameInfo); - orgDescInfo = v.findViewById(R.id.orgDescInfo); - orgWebsiteInfo = v.findViewById(R.id.orgWebsiteInfo); - orgLocationInfo = v.findViewById(R.id.orgLocationInfo); - - orgNameInfo.setText(orgName); - - getOrgInfo(instanceUrl, Authorization.returnAuthentication(getContext(), loginUid, instanceToken), orgName); - - return v; - - } - - private void getOrgInfo(String instanceUrl, String token, final String owner) { - - Call call = RetrofitClient - .getInstance(instanceUrl) - .getApiInterface() - .getOrganization(token, owner); - - call.enqueue(new Callback() { - - @Override - public void onResponse(@NonNull Call call, @NonNull retrofit2.Response response) { - - Organization orgInfo = response.body(); - - if (response.isSuccessful()) { - - if (response.code() == 200) { - - assert orgInfo != null; - Picasso.get().load(orgInfo.getAvatar_url()).transform(new RoundedTransformation(100, 0)).resize(200, 200).centerCrop().into(orgAvatar); - orgDescInfo.setText(orgInfo.getDescription()); - orgWebsiteInfo.setText(orgInfo.getWebsite()); - orgLocationInfo.setText(orgInfo.getLocation()); - - mProgressBar.setVisibility(View.GONE); - - } - - } - else { - Log.e("onFailure", String.valueOf(response.code())); - } - - } - - @Override - public void onFailure(@NonNull Call call, @NonNull Throwable t) { - Log.e("onFailure", t.toString()); - } - }); - - } - - public void onButtonPressed(Uri uri) { - if (mListener != null) { - mListener.onFragmentInteraction(uri); - } - } - - @Override - public void onDetach() { - super.onDetach(); - mListener = null; - } - - public interface OnFragmentInteractionListener { - void onFragmentInteraction(Uri uri); - } -} diff --git a/app/src/main/java/org/mian/gitnex/fragments/ProfileFragment.java b/app/src/main/java/org/mian/gitnex/fragments/ProfileFragment.java index 7ae4dd24..e69de29b 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/ProfileFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/ProfileFragment.java @@ -1,125 +0,0 @@ -package org.mian.gitnex.fragments; - -import android.content.Context; -import android.os.Bundle; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentManager; -import androidx.fragment.app.FragmentStatePagerAdapter; -import androidx.viewpager.widget.ViewPager; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.TextView; -import com.google.android.material.tabs.TabLayout; -import com.squareup.picasso.Picasso; -import org.mian.gitnex.R; -import org.mian.gitnex.activities.MainActivity; -import org.mian.gitnex.helpers.RoundedTransformation; -import org.mian.gitnex.util.TinyDB; -import java.util.Objects; - -/** - * Author M M Arif - */ - -public class ProfileFragment extends Fragment { - - private Context ctx = getContext(); - - @Nullable - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - - View v = inflater.inflate(R.layout.fragment_profile, container, false); - ((MainActivity) Objects.requireNonNull(getActivity())).setActionBarTitle(getResources().getString(R.string.pageTitleProfile)); - setHasOptionsMenu(true); - - TinyDB tinyDb = new TinyDB(getContext()); - - TextView userFullName = v.findViewById(R.id.userFullName); - ImageView userAvatar = v.findViewById(R.id.userAvatar); - TextView userLogin = v.findViewById(R.id.userLogin); - TextView userEmail = v.findViewById(R.id.userEmail); - - userFullName.setText(tinyDb.getString("userFullname")); - Picasso.get().load(tinyDb.getString("userAvatar")).transform(new RoundedTransformation(100, 0)).resize(180, 180).centerCrop().into(userAvatar); - userLogin.setText(getString(R.string.usernameWithAt, tinyDb.getString("userLogin"))); - userEmail.setText(tinyDb.getString("userEmail")); - - ProfileFragment.SectionsPagerAdapter mSectionsPagerAdapter = new ProfileFragment.SectionsPagerAdapter(getFragmentManager()); - - ViewPager mViewPager = v.findViewById(R.id.container); - mViewPager.setAdapter(mSectionsPagerAdapter); - - TabLayout tabLayout = v.findViewById(R.id.tabs); - - mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); - tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager)); - - return v; - - } - - public class SectionsPagerAdapter extends FragmentStatePagerAdapter { - - SectionsPagerAdapter(FragmentManager fm) { - super(fm); - } - - @NonNull - @Override - public Fragment getItem(int position) { - - Fragment fragment = null; - switch (position) { - case 0: // followers - return ProfileFollowersFragment.newInstance("repoOwner", "repoName"); - case 1: // following - return ProfileFollowingFragment.newInstance("repoOwner", "repoName"); - case 2: // emails - return ProfileEmailsFragment.newInstance("repoOwner", "repoName"); - } - return fragment; - } - - @Override - public int getCount() { - return 3; - } - - } - - @Override - public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { - menu.clear(); - Objects.requireNonNull(getActivity()).getMenuInflater().inflate(R.menu.profile_dotted_menu, menu); - super.onCreateOptionsMenu(menu, inflater); - } - - @Override - public boolean onOptionsItemSelected(@NonNull MenuItem item) { - - int id = item.getItemId(); - - switch (id) { - case android.R.id.home: - ((MainActivity)ctx).finish(); - return true; - case R.id.profileMenu: - ProfileBottomSheetFragment bottomSheet = new ProfileBottomSheetFragment(); - assert getFragmentManager() != null; - bottomSheet.show(getFragmentManager(), "profileBottomSheet"); - return true; - default: - return super.onOptionsItemSelected(item); - } - - } - -} diff --git a/app/src/main/res/layout/activity_issue_detail.xml b/app/src/main/res/layout/activity_issue_detail.xml index f6755e27..e69de29b 100644 --- a/app/src/main/res/layout/activity_issue_detail.xml +++ b/app/src/main/res/layout/activity_issue_detail.xml @@ -1,206 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/admin_users_list.xml b/app/src/main/res/layout/admin_users_list.xml index 4be63b5f..e69de29b 100644 --- a/app/src/main/res/layout/admin_users_list.xml +++ b/app/src/main/res/layout/admin_users_list.xml @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/fragment_profile.xml b/app/src/main/res/layout/fragment_profile.xml index 5c3a6328..e69de29b 100644 --- a/app/src/main/res/layout/fragment_profile.xml +++ b/app/src/main/res/layout/fragment_profile.xml @@ -1,113 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/issue_comments.xml b/app/src/main/res/layout/issue_comments.xml index ac37f823..e69de29b 100644 --- a/app/src/main/res/layout/issue_comments.xml +++ b/app/src/main/res/layout/issue_comments.xml @@ -1,106 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/my_repos_list.xml b/app/src/main/res/layout/my_repos_list.xml index 3507b16c..e69de29b 100644 --- a/app/src/main/res/layout/my_repos_list.xml +++ b/app/src/main/res/layout/my_repos_list.xml @@ -1,143 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/nav_header.xml b/app/src/main/res/layout/nav_header.xml index b77b83c2..e69de29b 100644 --- a/app/src/main/res/layout/nav_header.xml +++ b/app/src/main/res/layout/nav_header.xml @@ -1,73 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/organizations_list.xml b/app/src/main/res/layout/organizations_list.xml index fbe08f2d..e69de29b 100644 --- a/app/src/main/res/layout/organizations_list.xml +++ b/app/src/main/res/layout/organizations_list.xml @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/profile_followers_list.xml b/app/src/main/res/layout/profile_followers_list.xml index eea63075..e69de29b 100644 --- a/app/src/main/res/layout/profile_followers_list.xml +++ b/app/src/main/res/layout/profile_followers_list.xml @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/profile_following_list.xml b/app/src/main/res/layout/profile_following_list.xml index eea63075..e69de29b 100644 --- a/app/src/main/res/layout/profile_following_list.xml +++ b/app/src/main/res/layout/profile_following_list.xml @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/repos_list.xml b/app/src/main/res/layout/repos_list.xml index 7194eae2..e69de29b 100644 --- a/app/src/main/res/layout/repos_list.xml +++ b/app/src/main/res/layout/repos_list.xml @@ -1,143 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/repositories_by_org_list.xml b/app/src/main/res/layout/repositories_by_org_list.xml index 7194eae2..e69de29b 100644 --- a/app/src/main/res/layout/repositories_by_org_list.xml +++ b/app/src/main/res/layout/repositories_by_org_list.xml @@ -1,143 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/starred_repos_list.xml b/app/src/main/res/layout/starred_repos_list.xml index 5b3400fd..e69de29b 100644 --- a/app/src/main/res/layout/starred_repos_list.xml +++ b/app/src/main/res/layout/starred_repos_list.xml @@ -1,143 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -