1
0
mirror of https://codeberg.org/gitnex/GitNex synced 2025-03-09 16:10:50 +01:00

Fix visible actions and teams tab (#1112)

Closes #1071

Co-authored-by: qwerty287 <ndev@web.de>
Co-authored-by: M M Arif <mmarif@swatian.com>
Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/1112
Reviewed-by: M M Arif <mmarif@noreply.codeberg.org>
Co-authored-by: qwerty287 <qwerty287@noreply.codeberg.org>
Co-committed-by: qwerty287 <qwerty287@noreply.codeberg.org>
This commit is contained in:
qwerty287 2022-04-20 15:46:50 +02:00 committed by M M Arif
parent fbe55035f2
commit 3f7706de23
5 changed files with 126 additions and 75 deletions

View File

@ -48,6 +48,7 @@ public class FileViewActivity extends BaseActivity implements BottomSheetListene
private ContentsResponse file; private ContentsResponse file;
private RepositoryContext repository; private RepositoryContext repository;
private boolean renderMd = false; private boolean renderMd = false;
private boolean processable = false;
public ActivityResultLauncher<Intent> editFileLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), public ActivityResultLauncher<Intent> editFileLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
result -> { result -> {
@ -108,8 +109,6 @@ public class FileViewActivity extends BaseActivity implements BottomSheetListene
runOnUiThread(() -> binding.progressBar.setVisibility(View.GONE)); runOnUiThread(() -> binding.progressBar.setVisibility(View.GONE));
String fileExtension = FilenameUtils.getExtension(filename); String fileExtension = FilenameUtils.getExtension(filename);
boolean processable = false;
switch(AppUtil.getFileType(fileExtension)) { switch(AppUtil.getFileType(fileExtension)) {
case IMAGE: case IMAGE:
@ -246,7 +245,9 @@ public class FileViewActivity extends BaseActivity implements BottomSheetListene
} else if(id == R.id.genericMenu) { } else if(id == R.id.genericMenu) {
BottomSheetFileViewerFragment bottomSheet = new BottomSheetFileViewerFragment(); BottomSheetFileViewerFragment bottomSheet = new BottomSheetFileViewerFragment();
bottomSheet.setArguments(repository.getBundle()); Bundle opts = repository.getBundle();
opts.putBoolean("editable", processable);
bottomSheet.setArguments(opts);
bottomSheet.show(getSupportFragmentManager(), "fileViewerBottomSheet"); bottomSheet.show(getSupportFragmentManager(), "fileViewerBottomSheet");
return true; return true;

View File

@ -20,6 +20,7 @@ import androidx.fragment.app.FragmentPagerAdapter;
import androidx.viewpager.widget.ViewPager; import androidx.viewpager.widget.ViewPager;
import com.google.android.material.tabs.TabLayout; import com.google.android.material.tabs.TabLayout;
import org.gitnex.tea4j.v2.models.OrganizationPermissions; import org.gitnex.tea4j.v2.models.OrganizationPermissions;
import org.jetbrains.annotations.NotNull;
import org.mian.gitnex.R; import org.mian.gitnex.R;
import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.clients.RetrofitClient;
import org.mian.gitnex.fragments.BottomSheetOrganizationFragment; import org.mian.gitnex.fragments.BottomSheetOrganizationFragment;
@ -43,6 +44,8 @@ import retrofit2.Response;
public class OrganizationDetailActivity extends BaseActivity implements BottomSheetListener { public class OrganizationDetailActivity extends BaseActivity implements BottomSheetListener {
public OrganizationPermissions permissions; public OrganizationPermissions permissions;
private String orgName;
private boolean isMember = false;
@Override @Override
public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {
@ -51,89 +54,118 @@ public class OrganizationDetailActivity extends BaseActivity implements BottomSh
setContentView(R.layout.activity_org_detail); setContentView(R.layout.activity_org_detail);
String orgName = getIntent().getStringExtra("orgName"); orgName = getIntent().getStringExtra("orgName");
Toolbar toolbar = findViewById(R.id.toolbar); Toolbar toolbar = findViewById(R.id.toolbar);
TextView toolbarTitle = findViewById(R.id.toolbar_title);
setSupportActionBar(toolbar); setSupportActionBar(toolbar);
Objects.requireNonNull(getSupportActionBar()).setTitle(orgName); Objects.requireNonNull(getSupportActionBar()).setTitle(orgName);
getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true);
OrganizationDetailActivity.SectionsPagerAdapter mSectionsPagerAdapter = new OrganizationDetailActivity.SectionsPagerAdapter(getSupportFragmentManager()); checkIsMember();
ViewPager mViewPager = findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);
TabLayout tabLayout = findViewById(R.id.tabs);
Typeface myTypeface;
switch(tinyDB.getInt("customFontId", -1)) {
case 0:
myTypeface = Typeface.createFromAsset(ctx.getAssets(), "fonts/roboto.ttf");
break;
case 2:
myTypeface = Typeface.createFromAsset(ctx.getAssets(), "fonts/sourcecodeproregular.ttf");
break;
default:
myTypeface = Typeface.createFromAsset(ctx.getAssets(), "fonts/manroperegular.ttf");
break;
}
toolbarTitle.setTypeface(myTypeface);
toolbarTitle.setText(orgName);
ViewGroup vg = (ViewGroup) tabLayout.getChildAt(0);
int tabsCount = vg.getChildCount();
for (int j = 0; j < tabsCount; j++) {
ViewGroup vgTab = (ViewGroup) vg.getChildAt(j);
int tabChildCount = vgTab.getChildCount();
for (int i = 0; i < tabChildCount; i++) {
View tabViewChild = vgTab.getChildAt(i);
if (tabViewChild instanceof TextView) {
((TextView) tabViewChild).setTypeface(myTypeface);
}
}
}
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));
if(getAccount().requiresVersion("1.16.0")) { if(getAccount().requiresVersion("1.16.0")) {
RetrofitClient.getApiInterface(this) RetrofitClient.getApiInterface(this)
.orgGetUserPermissions(getAccount().getAccount().getUserName(), orgName).enqueue(new Callback<OrganizationPermissions>() { .orgGetUserPermissions(getAccount().getAccount().getUserName(), orgName).enqueue(new Callback<>() {
@Override @Override
public void onResponse(@NonNull Call<OrganizationPermissions> call, @NonNull Response<OrganizationPermissions> response) { public void onResponse(@NonNull Call<OrganizationPermissions> call, @NonNull Response<OrganizationPermissions> response) {
if(response.isSuccessful()) {
permissions = response.body();
}
else {
permissions = null;
}
}
@Override if(response.isSuccessful()) {
public void onFailure(@NonNull Call<OrganizationPermissions> call, @NonNull Throwable t) { permissions = response.body();
permissions = null; }
} else {
}); permissions = null;
}
}
@Override
public void onFailure(@NonNull Call<OrganizationPermissions> call, @NonNull Throwable t) {
permissions = null;
}
});
} else { } else {
permissions = null; permissions = null;
} }
} }
public void checkIsMember() {
RetrofitClient.getApiInterface(this).orgIsMember(orgName, getAccount().getAccount().getUserName()).enqueue(new Callback<>() {
@Override
public void onResponse(@NotNull Call<Void> call, @NotNull Response<Void> response) {
isMember = response.code() != 404;
init();
}
@Override
public void onFailure(@NotNull Call<Void> call, @NotNull Throwable t) {
isMember = false;
init();
}
});
}
public void init() {
OrganizationDetailActivity.SectionsPagerAdapter mSectionsPagerAdapter = new OrganizationDetailActivity.SectionsPagerAdapter(getSupportFragmentManager());
ViewPager mViewPager = findViewById(R.id.container);
mViewPager.setVisibility(View.VISIBLE);
mViewPager.setAdapter(mSectionsPagerAdapter);
TabLayout tabLayout = findViewById(R.id.tabs);
tabLayout.setVisibility(View.VISIBLE);
if(!isMember) {
tabLayout.removeTabAt(3);
}
Typeface myTypeface;
switch(tinyDB.getInt("customFontId", -1)) {
case 0:
myTypeface = Typeface.createFromAsset(ctx.getAssets(), "fonts/roboto.ttf");
break;
case 2:
myTypeface = Typeface.createFromAsset(ctx.getAssets(), "fonts/sourcecodeproregular.ttf");
break;
default:
myTypeface = Typeface.createFromAsset(ctx.getAssets(), "fonts/manroperegular.ttf");
break;
}
TextView toolbarTitle = findViewById(R.id.toolbar_title);
toolbarTitle.setTypeface(myTypeface);
toolbarTitle.setText(orgName);
ViewGroup vg = (ViewGroup) tabLayout.getChildAt(0);
int tabsCount = vg.getChildCount();
for (int j = 0; j < tabsCount; j++) {
ViewGroup vgTab = (ViewGroup) vg.getChildAt(j);
int tabChildCount = vgTab.getChildCount();
for (int i = 0; i < tabChildCount; i++) {
View tabViewChild = vgTab.getChildAt(i);
if (tabViewChild instanceof TextView) {
((TextView) tabViewChild).setTypeface(myTypeface);
}
}
}
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager));
}
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
@ -226,19 +258,29 @@ public class OrganizationDetailActivity extends BaseActivity implements BottomSh
case 2: // labels case 2: // labels
return OrganizationLabelsFragment.newInstance(orgName); return OrganizationLabelsFragment.newInstance(orgName);
case 3: // teams case 3: // teams / members
return TeamsByOrgFragment.newInstance(orgName, permissions); if(isMember) {
return TeamsByOrgFragment.newInstance(orgName, permissions);
} else {
return MembersByOrgFragment.newInstance(orgName);
}
case 4: // members case 4: // members
return MembersByOrgFragment.newInstance(orgName); if(isMember) {
return MembersByOrgFragment.newInstance(orgName);
}
} }
return fragment; return fragment;
} }
@Override @Override
public int getCount() { public int getCount() {
return 5; if(isMember) {
return 5;
} else {
return 4;
}
} }
} }
} }

View File

@ -30,6 +30,8 @@ public class BottomSheetFileViewerFragment extends BottomSheetDialogFragment {
if(!repository.getPermissions().isPush()) { if(!repository.getPermissions().isPush()) {
bottomSheetFileViewerBinding.deleteFile.setVisibility(View.GONE); bottomSheetFileViewerBinding.deleteFile.setVisibility(View.GONE);
bottomSheetFileViewerBinding.editFile.setVisibility(View.GONE); bottomSheetFileViewerBinding.editFile.setVisibility(View.GONE);
} else if(!requireArguments().getBoolean("editable")) {
bottomSheetFileViewerBinding.editFile.setVisibility(View.GONE);
} }
bottomSheetFileViewerBinding.downloadFile.setOnClickListener(v1 -> { bottomSheetFileViewerBinding.downloadFile.setOnClickListener(v1 -> {

View File

@ -264,6 +264,10 @@ public class BottomSheetSingleIssueFragment extends BottomSheetDialogFragment {
binding.commentReactionButtons.setVisibility(View.GONE); binding.commentReactionButtons.setVisibility(View.GONE);
binding.shareDivider.setVisibility(View.GONE); binding.shareDivider.setVisibility(View.GONE);
} }
else if(!canPush) {
binding.addRemoveAssignees.setVisibility(View.GONE);
binding.editLabels.setVisibility(View.GONE);
}
return binding.getRoot(); return binding.getRoot();
} }

View File

@ -43,7 +43,8 @@
android:background="?attr/primaryBackgroundColor" android:background="?attr/primaryBackgroundColor"
app:tabIndicatorColor="?attr/pagerTabIndicatorColor" app:tabIndicatorColor="?attr/pagerTabIndicatorColor"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content"
android:visibility="gone">
<com.google.android.material.tabs.TabItem <com.google.android.material.tabs.TabItem
android:id="@+id/tabItemInfo" android:id="@+id/tabItemInfo"
@ -83,6 +84,7 @@
android:id="@+id/container" android:id="@+id/container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" /> app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:visibility="gone"/>
</androidx.coordinatorlayout.widget.CoordinatorLayout> </androidx.coordinatorlayout.widget.CoordinatorLayout>