diff --git a/app/src/main/java/org/mian/gitnex/activities/OpenRepoInBrowserActivity.java b/app/src/main/java/org/mian/gitnex/activities/OpenRepoInBrowserActivity.java index 65a907f8..84748009 100644 --- a/app/src/main/java/org/mian/gitnex/activities/OpenRepoInBrowserActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/OpenRepoInBrowserActivity.java @@ -30,7 +30,9 @@ public class OpenRepoInBrowserActivity extends AppCompatActivity { try { - URI instanceUrl = new URI(tinyDb.getString("instanceUrlWithProtocol")); + URI instanceUrl = new URI(UrlBuilder.fromString(tinyDb.getString("instanceUrl")) + .withPath("/") + .toString()); String browserPath = PathsHelper.join(instanceUrl.getPath(), getIntent().getStringExtra("repoFullNameBrowser")); diff --git a/app/src/main/java/org/mian/gitnex/activities/OrganizationDetailActivity.java b/app/src/main/java/org/mian/gitnex/activities/OrganizationDetailActivity.java index bee50c8c..b4af52e3 100644 --- a/app/src/main/java/org/mian/gitnex/activities/OrganizationDetailActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/OrganizationDetailActivity.java @@ -1,5 +1,7 @@ package org.mian.gitnex.activities; +import android.content.ClipData; +import android.content.ClipboardManager; import android.content.Context; import android.content.Intent; import android.graphics.Typeface; @@ -24,7 +26,9 @@ import org.mian.gitnex.fragments.OrganizationInfoFragment; import org.mian.gitnex.fragments.RepositoriesByOrgFragment; import org.mian.gitnex.fragments.TeamsByOrgFragment; import org.mian.gitnex.helpers.TinyDB; +import org.mian.gitnex.helpers.Toasty; import java.util.Objects; +import io.mikael.urlbuilder.UrlBuilder; /** * Author M M Arif @@ -34,6 +38,7 @@ public class OrganizationDetailActivity extends BaseActivity implements BottomSh final Context ctx = this; private Context appCtx; + private TinyDB tinyDb; @Override protected int getLayoutResourceId(){ @@ -45,6 +50,7 @@ public class OrganizationDetailActivity extends BaseActivity implements BottomSh super.onCreate(savedInstanceState); appCtx = getApplicationContext(); + tinyDb = new TinyDB(appCtx); TinyDB tinyDb = new TinyDB(appCtx); String orgName = tinyDb.getString("orgName"); @@ -105,6 +111,7 @@ public class OrganizationDetailActivity extends BaseActivity implements BottomSh @Override public boolean onCreateOptionsMenu(Menu menu) { + MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.repo_dotted_menu, menu); return true; @@ -132,19 +139,28 @@ public class OrganizationDetailActivity extends BaseActivity implements BottomSh @Override public void onButtonClicked(String text) { - TinyDB tinyDb = new TinyDB(appCtx); - switch (text) { case "repository": + tinyDb.putBoolean("organizationAction", true); startActivity(new Intent(OrganizationDetailActivity.this, CreateRepoActivity.class)); break; case "team": + startActivity(new Intent(OrganizationDetailActivity.this, CreateTeamByOrgActivity.class)); break; - } - //Log.i("clicked", text); + case "copyOrgUrl": + String url = UrlBuilder.fromString(tinyDb.getString("instanceUrl")) + .withPath("/") + .toString(); + ClipboardManager clipboard = (ClipboardManager) Objects.requireNonNull(ctx).getSystemService(Context.CLIPBOARD_SERVICE); + ClipData clip = ClipData.newPlainText("orgUrl", url + tinyDb.getString("orgName")); + assert clipboard != null; + clipboard.setPrimaryClip(clip); + Toasty.info(ctx, ctx.getString(R.string.copyIssueUrlToastMsg)); + break; + } } public class SectionsPagerAdapter extends FragmentPagerAdapter { @@ -157,7 +173,6 @@ public class OrganizationDetailActivity extends BaseActivity implements BottomSh @Override public Fragment getItem(int position) { - TinyDB tinyDb = new TinyDB(appCtx); String orgName; if(getIntent().getStringExtra("orgName") != null || !Objects.equals(getIntent().getStringExtra("orgName"), "")) { orgName = getIntent().getStringExtra("orgName"); diff --git a/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java b/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java index e293f414..26bfba76 100644 --- a/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/RepoDetailActivity.java @@ -1,6 +1,8 @@ package org.mian.gitnex.activities; import android.annotation.SuppressLint; +import android.content.ClipData; +import android.content.ClipboardManager; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; @@ -42,6 +44,7 @@ import org.mian.gitnex.fragments.ReleasesFragment; import org.mian.gitnex.fragments.RepoInfoFragment; import org.mian.gitnex.helpers.Authorization; import org.mian.gitnex.helpers.TinyDB; +import org.mian.gitnex.helpers.Toasty; import org.mian.gitnex.helpers.Version; import org.mian.gitnex.models.Branches; import org.mian.gitnex.models.UserRepositories; @@ -345,6 +348,14 @@ public class RepoDetailActivity extends BaseActivity implements BottomSheetRepoF startActivity(Intent.createChooser(sharingIntent, tinyDB.getString("repoHtmlUrl"))); break; + case "copyRepoUrl": + ClipboardManager clipboard = (ClipboardManager) Objects.requireNonNull(ctx).getSystemService(Context.CLIPBOARD_SERVICE); + ClipData clip = ClipData.newPlainText("repoUrl", tinyDB.getString("repoHtmlUrl")); + assert clipboard != null; + clipboard.setPrimaryClip(clip); + Toasty.info(ctx, ctx.getString(R.string.copyIssueUrlToastMsg)); + break; + case "newFile": startActivity(new Intent(RepoDetailActivity.this, CreateFileActivity.class)); break; diff --git a/app/src/main/java/org/mian/gitnex/adapters/ExploreRepositoriesAdapter.java b/app/src/main/java/org/mian/gitnex/adapters/ExploreRepositoriesAdapter.java index 194ad122..bd9b146a 100644 --- a/app/src/main/java/org/mian/gitnex/adapters/ExploreRepositoriesAdapter.java +++ b/app/src/main/java/org/mian/gitnex/adapters/ExploreRepositoriesAdapter.java @@ -1,6 +1,8 @@ package org.mian.gitnex.adapters; import android.annotation.SuppressLint; +import android.content.ClipData; +import android.content.ClipboardManager; import android.content.Context; import android.content.Intent; import android.graphics.Typeface; @@ -19,9 +21,9 @@ import com.google.android.material.bottomsheet.BottomSheetDialog; import org.mian.gitnex.R; import org.mian.gitnex.activities.OpenRepoInBrowserActivity; import org.mian.gitnex.activities.RepoDetailActivity; +import org.mian.gitnex.activities.RepoForksActivity; import org.mian.gitnex.activities.RepoStargazersActivity; import org.mian.gitnex.activities.RepoWatchersActivity; -import org.mian.gitnex.activities.RepoForksActivity; import org.mian.gitnex.clients.PicassoService; import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.database.api.RepositoriesApi; @@ -32,6 +34,7 @@ import org.mian.gitnex.helpers.Toasty; import org.mian.gitnex.models.UserRepositories; import org.mian.gitnex.models.WatchInfo; import java.util.List; +import java.util.Objects; import retrofit2.Call; import retrofit2.Callback; @@ -41,7 +44,6 @@ import retrofit2.Callback; public class ExploreRepositoriesAdapter extends RecyclerView.Adapter { - private List searchedReposList; private Context mCtx; @@ -65,6 +67,7 @@ public class ExploreRepositoriesAdapter extends RecyclerView.Adapter { @@ -182,6 +186,7 @@ public class ExploreRepositoriesAdapter extends RecyclerView.Adapter { + + ClipboardManager clipboard = (ClipboardManager) Objects.requireNonNull(context).getSystemService(Context.CLIPBOARD_SERVICE); + ClipData clip = ClipData.newPlainText("repoUrl", htmlUrl.getText().toString()); + assert clipboard != null; + clipboard.setPrimaryClip(clip); + + Toasty.info(context, context.getString(R.string.copyIssueUrlToastMsg)); + dialog.dismiss(); + }); + repoOpenInBrowser.setOnClickListener(openInBrowser -> { Intent intentOpenInBrowser = new Intent(context, OpenRepoInBrowserActivity.class); @@ -245,6 +261,7 @@ public class ExploreRepositoriesAdapter extends RecyclerView.Adapter { @@ -179,6 +184,7 @@ public class MyReposListAdapter extends RecyclerView.Adapter { + + ClipboardManager clipboard = (ClipboardManager) Objects.requireNonNull(context).getSystemService(Context.CLIPBOARD_SERVICE); + ClipData clip = ClipData.newPlainText("repoUrl", htmlUrl.getText().toString()); + assert clipboard != null; + clipboard.setPrimaryClip(clip); + + Toasty.info(context, context.getString(R.string.copyIssueUrlToastMsg)); + dialog.dismiss(); + }); + repoOpenInBrowser.setOnClickListener(openInBrowser -> { Intent intentOpenInBrowser = new Intent(context, OpenRepoInBrowserActivity.class); @@ -249,6 +266,7 @@ public class MyReposListAdapter extends RecyclerView.Adapter { @@ -180,6 +185,7 @@ public class ReposListAdapter extends RecyclerView.Adapter { + + ClipboardManager clipboard = (ClipboardManager) Objects.requireNonNull(context).getSystemService(Context.CLIPBOARD_SERVICE); + ClipData clip = ClipData.newPlainText("repoUrl", htmlUrl.getText().toString()); + assert clipboard != null; + clipboard.setPrimaryClip(clip); + + Toasty.info(context, context.getString(R.string.copyIssueUrlToastMsg)); + dialog.dismiss(); + }); + repoOpenInBrowser.setOnClickListener(openInBrowser -> { Intent intentOpenInBrowser = new Intent(context, OpenRepoInBrowserActivity.class); @@ -250,6 +267,7 @@ public class ReposListAdapter extends RecyclerView.Adapter { @@ -175,6 +180,7 @@ public class RepositoriesByOrgAdapter extends RecyclerView.Adapter { + + ClipboardManager clipboard = (ClipboardManager) Objects.requireNonNull(context).getSystemService(Context.CLIPBOARD_SERVICE); + ClipData clip = ClipData.newPlainText("repoUrl", htmlUrl.getText().toString()); + assert clipboard != null; + clipboard.setPrimaryClip(clip); + + Toasty.info(context, context.getString(R.string.copyIssueUrlToastMsg)); + dialog.dismiss(); + }); + repoOpenInBrowser.setOnClickListener(openInBrowser -> { Intent intentOpenInBrowser = new Intent(context, OpenRepoInBrowserActivity.class); @@ -243,6 +260,7 @@ public class RepositoriesByOrgAdapter extends RecyclerView.Adapter { @@ -178,6 +183,7 @@ public class StarredReposListAdapter extends RecyclerView.Adapter { + + ClipboardManager clipboard = (ClipboardManager) Objects.requireNonNull(context).getSystemService(Context.CLIPBOARD_SERVICE); + ClipData clip = ClipData.newPlainText("repoUrl", htmlUrl.getText().toString()); + assert clipboard != null; + clipboard.setPrimaryClip(clip); + + Toasty.info(context, context.getString(R.string.copyIssueUrlToastMsg)); + dialog.dismiss(); + }); + repoOpenInBrowser.setOnClickListener(openInBrowser -> { Intent intentOpenInBrowser = new Intent(context, OpenRepoInBrowserActivity.class); @@ -246,6 +263,7 @@ public class StarredReposListAdapter extends RecyclerView.Adapter { @@ -40,6 +41,12 @@ public class BottomSheetOrganizationFragment extends BottomSheetDialogFragment { dismiss(); }); + copyOrgUrl.setOnClickListener(v1 -> { + + bmListener.onButtonClicked("copyOrgUrl"); + dismiss(); + }); + return v; } diff --git a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetRepoFragment.java b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetRepoFragment.java index 05379586..3be94f4d 100644 --- a/app/src/main/java/org/mian/gitnex/fragments/BottomSheetRepoFragment.java +++ b/app/src/main/java/org/mian/gitnex/fragments/BottomSheetRepoFragment.java @@ -40,6 +40,7 @@ public class BottomSheetRepoFragment extends BottomSheetDialogFragment { TextView watchRepository = v.findViewById(R.id.watchRepository); TextView unWatchRepository = v.findViewById(R.id.unWatchRepository); TextView shareRepository = v.findViewById(R.id.shareRepository); + TextView copyRepoUrl = v.findViewById(R.id.copyRepoUrl); createLabel.setOnClickListener(v112 -> { @@ -93,6 +94,12 @@ public class BottomSheetRepoFragment extends BottomSheetDialogFragment { dismiss(); }); + copyRepoUrl.setOnClickListener(copyUrl -> { + + bmListener.onButtonClicked("copyRepoUrl"); + dismiss(); + }); + newFile.setOnClickListener(v17 -> { bmListener.onButtonClicked("newFile"); diff --git a/app/src/main/res/layout/bottom_sheet_organization.xml b/app/src/main/res/layout/bottom_sheet_organization.xml index db6910bd..e6d6d46a 100644 --- a/app/src/main/res/layout/bottom_sheet_organization.xml +++ b/app/src/main/res/layout/bottom_sheet_organization.xml @@ -41,6 +41,18 @@ android:textSize="16sp" android:padding="12dp" /> + + diff --git a/app/src/main/res/layout/bottom_sheet_repo.xml b/app/src/main/res/layout/bottom_sheet_repo.xml index 3af12b0c..54495a8b 100644 --- a/app/src/main/res/layout/bottom_sheet_repo.xml +++ b/app/src/main/res/layout/bottom_sheet_repo.xml @@ -153,6 +153,18 @@ android:layout_marginStart="64dp" android:background="?attr/dividerColor" /> + + - - + + + + diff --git a/app/src/main/res/layout/list_repositories.xml b/app/src/main/res/layout/list_repositories.xml index 6b6d7dcd..4a5e7dae 100644 --- a/app/src/main/res/layout/list_repositories.xml +++ b/app/src/main/res/layout/list_repositories.xml @@ -18,6 +18,12 @@ android:layout_height="wrap_content" android:visibility="invisible" /> + + Open Closed We cannot reach the server at the moment, please check your server status and try again + Copy URL Translate GitNex with Crowdin