New input design (#725)

Update missing buttons

update libs

login screen

Merge pr screen

create new file screen

This will be replaced later by custom built mentions, so removing the dependency.

create repo screen

comment screen

edit issue/pr screen and minor ui fixes

collaborator screen

release screen

label and milestone screens

move org, new team, new team member to new design

Add new user input transition

Co-authored-by: M M Arif <mmarif@swatian.com>
Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/725
Reviewed-by: opyale <opyale@noreply.codeberg.org>
This commit is contained in:
M M Arif 2020-10-20 20:09:07 +02:00 committed by 6543
parent 9e19945ad4
commit 044f6191bf
32 changed files with 1349 additions and 1555 deletions

View File

@ -78,7 +78,6 @@ Thanks to all the open source libraries, contributors and donators.
- Amulyakhare/textdrawable - Amulyakhare/textdrawable
- Vdurmont/emoji-java - Vdurmont/emoji-java
- Pes/materialcolorpicker - Pes/materialcolorpicker
- Hendraanggrian/socialview
- HamidrezaAmz/BreadcrumbsView - HamidrezaAmz/BreadcrumbsView
- Chrisbanes/PhotoView - Chrisbanes/PhotoView
- Pddstudio/highlightjs-android - Pddstudio/highlightjs-android

View File

@ -60,10 +60,10 @@ dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs') implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.3.0-alpha02' implementation 'androidx.appcompat:appcompat:1.3.0-alpha02'
implementation 'com.google.android.material:material:1.3.0-alpha03' implementation 'com.google.android.material:material:1.3.0-alpha03'
implementation 'androidx.constraintlayout:constraintlayout:2.0.1' implementation 'androidx.constraintlayout:constraintlayout:2.0.2'
implementation "androidx.legacy:legacy-support-v4:1.0.0" implementation "androidx.legacy:legacy-support-v4:1.0.0"
implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
testImplementation "junit:junit:4.13" testImplementation 'junit:junit:4.13.1'
androidTestImplementation 'androidx.test:runner:1.3.0' androidTestImplementation 'androidx.test:runner:1.3.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.0' implementation 'com.squareup.okhttp3:okhttp:4.9.0'
@ -92,8 +92,6 @@ dependencies {
implementation "io.noties.markwon:syntax-highlight:$markwon_version" implementation "io.noties.markwon:syntax-highlight:$markwon_version"
implementation "com.caverock:androidsvg:1.4" implementation "com.caverock:androidsvg:1.4"
implementation "pl.droidsonroids.gif:android-gif-drawable:1.2.19" implementation "pl.droidsonroids.gif:android-gif-drawable:1.2.19"
implementation "com.hendraanggrian.appcompat:socialview:0.2"
implementation "com.hendraanggrian.appcompat:socialview-commons:0.2"
implementation "com.github.HamidrezaAmz:BreadcrumbsView:0.2.9" implementation "com.github.HamidrezaAmz:BreadcrumbsView:0.2.9"
implementation "commons-io:commons-io:20030203.000550" implementation "commons-io:commons-io:20030203.000550"
implementation 'org.apache.commons:commons-lang3:3.11' implementation 'org.apache.commons:commons-lang3:3.11'

View File

@ -63,7 +63,7 @@ public class AddCollaboratorToRepositoryActivity extends BaseActivity {
ImageView closeActivity = findViewById(R.id.close); ImageView closeActivity = findViewById(R.id.close);
addCollaboratorSearch = findViewById(R.id.addCollaboratorSearch); addCollaboratorSearch = findViewById(R.id.addCollaboratorSearch);
mRecyclerView = findViewById(R.id.recyclerViewUserSearch); mRecyclerView = findViewById(R.id.recyclerViewUserSearch);
mProgressBar = findViewById(R.id.progress_bar); mProgressBar = findViewById(R.id.progressBar);
noData = findViewById(R.id.noData); noData = findViewById(R.id.noData);
addCollaboratorSearch.requestFocus(); addCollaboratorSearch.requestFocus();
@ -76,7 +76,10 @@ public class AddCollaboratorToRepositoryActivity extends BaseActivity {
addCollaboratorSearch.setOnEditorActionListener((v, actionId, event) -> { addCollaboratorSearch.setOnEditorActionListener((v, actionId, event) -> {
if (actionId == EditorInfo.IME_ACTION_SEND) { if (actionId == EditorInfo.IME_ACTION_SEND) {
if(!addCollaboratorSearch.getText().toString().equals("")) { if(!addCollaboratorSearch.getText().toString().equals("")) {
mProgressBar.setVisibility(View.VISIBLE);
loadUserSearchList(instanceUrl, instanceToken, addCollaboratorSearch.getText().toString(), loginUid); loadUserSearchList(instanceUrl, instanceToken, addCollaboratorSearch.getText().toString(), loginUid);
} }
} }
@ -99,10 +102,15 @@ public class AddCollaboratorToRepositoryActivity extends BaseActivity {
@Override @Override
public void onResponse(@NonNull Call<UserSearch> call, @NonNull Response<UserSearch> response) { public void onResponse(@NonNull Call<UserSearch> call, @NonNull Response<UserSearch> response) {
if (response.isSuccessful()) { mProgressBar.setVisibility(View.GONE);
if (response.code() == 200) {
assert response.body() != null; assert response.body() != null;
getUsersList(response.body().getData(), ctx); getUsersList(response.body().getData(), ctx);
} else { }
else {
Log.i("onResponse", String.valueOf(response.code())); Log.i("onResponse", String.valueOf(response.code()));
} }
@ -129,11 +137,13 @@ public class AddCollaboratorToRepositoryActivity extends BaseActivity {
mProgressBar.setVisibility(View.VISIBLE); mProgressBar.setVisibility(View.VISIBLE);
if(adapter.getItemCount() > 0) { if(adapter.getItemCount() > 0) {
mRecyclerView.setAdapter(adapter); mRecyclerView.setAdapter(adapter);
noData.setVisibility(View.GONE); noData.setVisibility(View.GONE);
mProgressBar.setVisibility(View.GONE); mProgressBar.setVisibility(View.GONE);
} }
else { else {
noData.setVisibility(View.VISIBLE); noData.setVisibility(View.VISIBLE);
mProgressBar.setVisibility(View.GONE); mProgressBar.setVisibility(View.GONE);
} }

View File

@ -5,12 +5,11 @@ import android.os.Bundle;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button; import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
@ -44,7 +43,7 @@ public class CreateFileActivity extends BaseActivity {
private EditText newFileContent; private EditText newFileContent;
private EditText newFileBranchName; private EditText newFileBranchName;
private EditText newFileCommitMessage; private EditText newFileCommitMessage;
private Spinner newFileBranchesSpinner; private AutoCompleteTextView newFileBranchesSpinner;
private String filePath; private String filePath;
private String fileSha; private String fileSha;
private int fileAction = 0; // 0 = create, 1 = delete, 2 = edit private int fileAction = 0; // 0 = create, 1 = delete, 2 = edit
@ -54,6 +53,14 @@ public class CreateFileActivity extends BaseActivity {
List<Branches> branchesList = new ArrayList<>(); List<Branches> branchesList = new ArrayList<>();
private String instanceUrl;
private String loginUid;
private String repoOwner;
private String repoName;
private String instanceToken;
private String selectedBranch;
@Override @Override
protected int getLayoutResourceId(){ protected int getLayoutResourceId(){
return R.layout.activity_new_file; return R.layout.activity_new_file;
@ -70,23 +77,20 @@ public class CreateFileActivity extends BaseActivity {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
final String instanceUrl = tinyDb.getString("instanceUrl"); instanceUrl = tinyDb.getString("instanceUrl");
final String loginUid = tinyDb.getString("loginUid"); loginUid = tinyDb.getString("loginUid");
String repoFullName = tinyDb.getString("repoFullName"); String repoFullName = tinyDb.getString("repoFullName");
String[] parts = repoFullName.split("/"); String[] parts = repoFullName.split("/");
final String repoOwner = parts[0]; repoOwner = parts[0];
final String repoName = parts[1]; repoName = parts[1];
final String instanceToken = "token " + tinyDb.getString(loginUid + "-token"); instanceToken = "token " + tinyDb.getString(loginUid + "-token");
closeActivity = findViewById(R.id.close); closeActivity = findViewById(R.id.close);
newFileName = findViewById(R.id.newFileName); newFileName = findViewById(R.id.newFileName);
newFileContent = findViewById(R.id.newFileContent); newFileContent = findViewById(R.id.newFileContent);
newFileBranchName = findViewById(R.id.newFileBranchName); newFileBranchName = findViewById(R.id.newFileBranchName);
newFileCommitMessage = findViewById(R.id.newFileCommitMessage); newFileCommitMessage = findViewById(R.id.newFileCommitMessage);
TextView branchNameId = findViewById(R.id.branchNameId);
TextView branchNameHintText = findViewById(R.id.branchNameHintText);
TextView toolbarTitle = findViewById(R.id.toolbarTitle); TextView toolbarTitle = findViewById(R.id.toolbarTitle);
TextView fileNameHint = findViewById(R.id.fileNameHint);
newFileName.requestFocus(); newFileName.requestFocus();
assert imm != null; assert imm != null;
@ -99,7 +103,6 @@ public class CreateFileActivity extends BaseActivity {
if(getIntent().getStringExtra("filePath") != null && getIntent().getIntExtra("fileAction", 1) == 1) { if(getIntent().getStringExtra("filePath") != null && getIntent().getIntExtra("fileAction", 1) == 1) {
fileNameHint.setVisibility(View.GONE);
fileAction = getIntent().getIntExtra("fileAction", 1); fileAction = getIntent().getIntExtra("fileAction", 1);
filePath = getIntent().getStringExtra("filePath"); filePath = getIntent().getStringExtra("filePath");
@ -120,7 +123,6 @@ public class CreateFileActivity extends BaseActivity {
if(getIntent().getStringExtra("filePath") != null && getIntent().getIntExtra("fileAction", 2) == 2) { if(getIntent().getStringExtra("filePath") != null && getIntent().getIntExtra("fileAction", 2) == 2) {
fileNameHint.setVisibility(View.GONE);
fileAction = getIntent().getIntExtra("fileAction", 2); fileAction = getIntent().getIntExtra("fileAction", 2);
filePath = getIntent().getStringExtra("filePath"); filePath = getIntent().getStringExtra("filePath");
@ -143,32 +145,6 @@ public class CreateFileActivity extends BaseActivity {
newFileBranchesSpinner = findViewById(R.id.newFileBranchesSpinner); newFileBranchesSpinner = findViewById(R.id.newFileBranchesSpinner);
getBranches(instanceUrl, instanceToken, repoOwner, repoName, loginUid); getBranches(instanceUrl, instanceToken, repoOwner, repoName, loginUid);
newFileBranchesSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> arg0,
View arg1, int arg2, long arg3)
{
Branches bModelValue = (Branches) newFileBranchesSpinner.getSelectedItem();
if(bModelValue.toString().equals("No branch")) {
newFileBranchName.setEnabled(true);
newFileBranchName.setVisibility(View.VISIBLE);
branchNameId.setVisibility(View.VISIBLE);
branchNameHintText.setVisibility(View.VISIBLE);
}
else {
newFileBranchName.setEnabled(false);
newFileBranchName.setVisibility(View.GONE);
branchNameId.setVisibility(View.GONE);
branchNameHintText.setVisibility(View.GONE);
newFileBranchName.setText("");
}
}
public void onNothingSelected(AdapterView<?> arg0) {}
});
disableProcessButton(); disableProcessButton();
if(!connToInternet) { if(!connToInternet) {
@ -188,37 +164,27 @@ public class CreateFileActivity extends BaseActivity {
boolean connToInternet = AppUtil.hasNetworkConnection(appCtx); boolean connToInternet = AppUtil.hasNetworkConnection(appCtx);
AppUtil appUtil = new AppUtil(); AppUtil appUtil = new AppUtil();
TinyDB tinyDb = new TinyDB(appCtx);
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];
String newFileName_ = newFileName.getText().toString(); String newFileName_ = newFileName.getText().toString();
String newFileContent_ = newFileContent.getText().toString(); String newFileContent_ = newFileContent.getText().toString();
String newFileBranchName_ = newFileBranchName.getText().toString(); String newFileBranchName_ = newFileBranchName.getText().toString();
String newFileCommitMessage_ = newFileCommitMessage.getText().toString(); String newFileCommitMessage_ = newFileCommitMessage.getText().toString();
Branches currentBranch = (Branches) newFileBranchesSpinner.getSelectedItem(); //Branches currentBranch = (Branches) newFileBranchesSpinner.getSelectedItem();
if(!connToInternet) { if(!connToInternet) {
Toasty.error(ctx, getResources().getString(R.string.checkNetConnection)); Toasty.error(ctx, getResources().getString(R.string.checkNetConnection));
return; return;
} }
if(newFileName_.equals("") || newFileContent_.equals("") || newFileCommitMessage_.equals("")) { if(newFileName_.equals("") || newFileContent_.equals("") || newFileCommitMessage_.equals("")) {
Toasty.error(ctx, getString(R.string.newFileRequiredFields)); Toasty.error(ctx, getString(R.string.newFileRequiredFields));
return; return;
} }
if(currentBranch.toString().equals("No branch")) { if(selectedBranch.equals("No branch")) {
if(newFileBranchName_.equals("")) { if(newFileBranchName_.equals("")) {
Toasty.error(ctx, getString(R.string.newFileRequiredFieldNewBranchName)); Toasty.error(ctx, getString(R.string.newFileRequiredFieldNewBranchName));
@ -229,7 +195,6 @@ public class CreateFileActivity extends BaseActivity {
Toasty.error(ctx, getString(R.string.newFileInvalidBranchName)); Toasty.error(ctx, getString(R.string.newFileInvalidBranchName));
return; return;
} }
} }
@ -238,7 +203,6 @@ public class CreateFileActivity extends BaseActivity {
if(appUtil.charactersLength(newFileCommitMessage_) > 255) { if(appUtil.charactersLength(newFileCommitMessage_) > 255) {
Toasty.warning(ctx, getString(R.string.newFileCommitMessageError)); Toasty.warning(ctx, getString(R.string.newFileCommitMessageError));
} }
else { else {
@ -247,17 +211,17 @@ public class CreateFileActivity extends BaseActivity {
if(fileAction == 1) { if(fileAction == 1) {
deleteFile(instanceUrl, Authorization.returnAuthentication(ctx, loginUid, instanceToken), repoOwner, repoName, filePath, deleteFile(instanceUrl, Authorization.returnAuthentication(ctx, loginUid, instanceToken), repoOwner, repoName, filePath,
newFileBranchName_, newFileCommitMessage_, currentBranch.toString(), fileSha); newFileBranchName_, newFileCommitMessage_, selectedBranch, fileSha);
} }
else if(fileAction == 2) { else if(fileAction == 2) {
editFile(instanceUrl, Authorization.returnAuthentication(ctx, loginUid, instanceToken), repoOwner, repoName, filePath, editFile(instanceUrl, Authorization.returnAuthentication(ctx, loginUid, instanceToken), repoOwner, repoName, filePath,
appUtil.encodeBase64(newFileContent_), newFileBranchName_, newFileCommitMessage_, currentBranch.toString(), fileSha); appUtil.encodeBase64(newFileContent_), newFileBranchName_, newFileCommitMessage_, selectedBranch, fileSha);
} }
else { else {
createNewFile(instanceUrl, Authorization.returnAuthentication(ctx, loginUid, instanceToken), repoOwner, repoName, newFileName_, createNewFile(instanceUrl, Authorization.returnAuthentication(ctx, loginUid, instanceToken), repoOwner, repoName, newFileName_,
appUtil.encodeBase64(newFileContent_), newFileBranchName_, newFileCommitMessage_, currentBranch.toString()); appUtil.encodeBase64(newFileContent_), newFileBranchName_, newFileCommitMessage_, selectedBranch);
} }
} }
@ -268,9 +232,11 @@ public class CreateFileActivity extends BaseActivity {
NewFile createNewFileJsonStr; NewFile createNewFileJsonStr;
if(currentBranch.equals("No branch")) { if(currentBranch.equals("No branch")) {
createNewFileJsonStr = new NewFile("", fileContent, fileCommitMessage, fileBranchName); createNewFileJsonStr = new NewFile("", fileContent, fileCommitMessage, fileBranchName);
} }
else { else {
createNewFileJsonStr = new NewFile(currentBranch, fileContent, fileCommitMessage, ""); createNewFileJsonStr = new NewFile(currentBranch, fileContent, fileCommitMessage, "");
} }
@ -358,7 +324,6 @@ public class CreateFileActivity extends BaseActivity {
getIntent().removeExtra("fileSha"); getIntent().removeExtra("fileSha");
getIntent().removeExtra("fileContents"); getIntent().removeExtra("fileContents");
finish(); finish();
} }
else if(response.code() == 401) { else if(response.code() == 401) {
@ -367,7 +332,6 @@ public class CreateFileActivity extends BaseActivity {
getResources().getString(R.string.alertDialogTokenRevokedMessage), getResources().getString(R.string.alertDialogTokenRevokedMessage),
getResources().getString(R.string.alertDialogTokenRevokedCopyNegativeButton), getResources().getString(R.string.alertDialogTokenRevokedCopyNegativeButton),
getResources().getString(R.string.alertDialogTokenRevokedCopyPositiveButton)); getResources().getString(R.string.alertDialogTokenRevokedCopyPositiveButton));
} }
else { else {
@ -430,7 +394,6 @@ public class CreateFileActivity extends BaseActivity {
getIntent().removeExtra("fileContents"); getIntent().removeExtra("fileContents");
tinyDb.putBoolean("fileModified", true); tinyDb.putBoolean("fileModified", true);
finish(); finish();
} }
else if(response.code() == 401) { else if(response.code() == 401) {
@ -439,7 +402,6 @@ public class CreateFileActivity extends BaseActivity {
getResources().getString(R.string.alertDialogTokenRevokedMessage), getResources().getString(R.string.alertDialogTokenRevokedMessage),
getResources().getString(R.string.alertDialogTokenRevokedCopyNegativeButton), getResources().getString(R.string.alertDialogTokenRevokedCopyNegativeButton),
getResources().getString(R.string.alertDialogTokenRevokedCopyPositiveButton)); getResources().getString(R.string.alertDialogTokenRevokedCopyPositiveButton));
} }
else { else {
@ -499,12 +461,29 @@ public class CreateFileActivity extends BaseActivity {
} }
ArrayAdapter<Branches> adapter = new ArrayAdapter<>(CreateFileActivity.this, ArrayAdapter<Branches> adapter = new ArrayAdapter<>(CreateFileActivity.this,
R.layout.spinner_item, branchesList); R.layout.list_spinner_items, branchesList);
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
newFileBranchesSpinner.setAdapter(adapter); newFileBranchesSpinner.setAdapter(adapter);
enableProcessButton(); enableProcessButton();
newFileBranchesSpinner.setOnItemClickListener ((parent, view, position, id) -> {
selectedBranch = branchesList.get(position).getName();
if(selectedBranch.equals("No branch")) {
newFileBranchName.setEnabled(true);
newFileBranchName.setVisibility(View.VISIBLE);
}
else {
newFileBranchName.setEnabled(false);
newFileBranchName.setVisibility(View.GONE);
newFileBranchName.setText("");
}
});
} }
} }
@ -512,6 +491,7 @@ public class CreateFileActivity extends BaseActivity {
@Override @Override
public void onFailure(@NonNull Call<List<Branches>> call, @NonNull Throwable t) { public void onFailure(@NonNull Call<List<Branches>> call, @NonNull Throwable t) {
Log.e("onFailure", t.toString()); Log.e("onFailure", t.toString());
} }
}); });
@ -519,6 +499,7 @@ public class CreateFileActivity extends BaseActivity {
} }
private void initCloseListener() { private void initCloseListener() {
onClickListener = view -> finish(); onClickListener = view -> finish();
} }

View File

@ -5,13 +5,12 @@ import android.os.Bundle;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button; import android.widget.Button;
import android.widget.CheckBox; import android.widget.CheckBox;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.Spinner;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import org.mian.gitnex.R; import org.mian.gitnex.R;
import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.clients.RetrofitClient;
@ -36,7 +35,7 @@ public class CreateReleaseActivity extends BaseActivity {
private View.OnClickListener onClickListener; private View.OnClickListener onClickListener;
public ImageView closeActivity; public ImageView closeActivity;
private EditText releaseTagName; private EditText releaseTagName;
private Spinner releaseBranch; private AutoCompleteTextView releaseBranch;
private EditText releaseTitle; private EditText releaseTitle;
private EditText releaseContent; private EditText releaseContent;
private CheckBox releaseType; private CheckBox releaseType;
@ -44,6 +43,14 @@ public class CreateReleaseActivity extends BaseActivity {
private Button createNewRelease; private Button createNewRelease;
final Context ctx = this; final Context ctx = this;
private Context appCtx; private Context appCtx;
private TinyDB tinyDb;
private String selectedBranch;
private String instanceUrl;
private String loginUid;
private String instanceToken;
private String repoOwner;
private String repoName;
List<Branches> branchesList = new ArrayList<>(); List<Branches> branchesList = new ArrayList<>();
@ -57,19 +64,19 @@ public class CreateReleaseActivity extends BaseActivity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
appCtx = getApplicationContext(); appCtx = getApplicationContext();
tinyDb = new TinyDB(appCtx);
boolean connToInternet = AppUtil.hasNetworkConnection(appCtx); boolean connToInternet = AppUtil.hasNetworkConnection(appCtx);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
TinyDB tinyDb = new TinyDB(appCtx); instanceUrl = tinyDb.getString("instanceUrl");
final String instanceUrl = tinyDb.getString("instanceUrl"); loginUid = tinyDb.getString("loginUid");
final String loginUid = tinyDb.getString("loginUid"); instanceToken = "token " + tinyDb.getString(loginUid + "-token");
final String instanceToken = "token " + tinyDb.getString(loginUid + "-token");
String repoFullName = tinyDb.getString("repoFullName"); String repoFullName = tinyDb.getString("repoFullName");
String[] parts = repoFullName.split("/"); String[] parts = repoFullName.split("/");
final String repoOwner = parts[0]; repoOwner = parts[0];
final String repoName = parts[1]; repoName = parts[1];
closeActivity = findViewById(R.id.close); closeActivity = findViewById(R.id.close);
releaseTagName = findViewById(R.id.releaseTagName); releaseTagName = findViewById(R.id.releaseTagName);
@ -78,26 +85,15 @@ public class CreateReleaseActivity extends BaseActivity {
releaseType = findViewById(R.id.releaseType); releaseType = findViewById(R.id.releaseType);
releaseDraft = findViewById(R.id.releaseDraft); releaseDraft = findViewById(R.id.releaseDraft);
releaseTagName.requestFocus(); releaseTitle.requestFocus();
assert imm != null; assert imm != null;
imm.showSoftInput(releaseTagName, InputMethodManager.SHOW_IMPLICIT); imm.showSoftInput(releaseTitle, InputMethodManager.SHOW_IMPLICIT);
initCloseListener(); initCloseListener();
closeActivity.setOnClickListener(onClickListener); closeActivity.setOnClickListener(onClickListener);
releaseBranch = findViewById(R.id.releaseBranch); releaseBranch = findViewById(R.id.releaseBranch);
getBranches(instanceUrl, Authorization.returnAuthentication(ctx, loginUid, instanceToken), repoOwner, repoName); getBranches(instanceUrl, Authorization.returnAuthentication(ctx, loginUid, instanceToken), repoOwner, repoName);
releaseBranch.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Branches branch = (Branches) parent.getSelectedItem();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
createNewRelease = findViewById(R.id.createNewRelease); createNewRelease = findViewById(R.id.createNewRelease);
disableProcessButton(); disableProcessButton();
@ -119,19 +115,10 @@ public class CreateReleaseActivity extends BaseActivity {
boolean connToInternet = AppUtil.hasNetworkConnection(appCtx); boolean connToInternet = AppUtil.hasNetworkConnection(appCtx);
TinyDB tinyDb = new TinyDB(appCtx);
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];
String newReleaseTagName = releaseTagName.getText().toString(); String newReleaseTagName = releaseTagName.getText().toString();
String newReleaseTitle = releaseTitle.getText().toString(); String newReleaseTitle = releaseTitle.getText().toString();
String newReleaseContent = releaseContent.getText().toString(); String newReleaseContent = releaseContent.getText().toString();
String newReleaseBranch = releaseBranch.getSelectedItem().toString(); String checkBranch = selectedBranch;
boolean newReleaseType = releaseType.isChecked(); boolean newReleaseType = releaseType.isChecked();
boolean newReleaseDraft = releaseDraft.isChecked(); boolean newReleaseDraft = releaseDraft.isChecked();
@ -142,28 +129,32 @@ public class CreateReleaseActivity extends BaseActivity {
} }
if(newReleaseTagName.equals("")) {
Toasty.error(ctx, getString(R.string.tagNameErrorEmpty));
return;
}
if(newReleaseTitle.equals("")) { if(newReleaseTitle.equals("")) {
Toasty.error(ctx, getString(R.string.titleErrorEmpty)); Toasty.error(ctx, getString(R.string.titleErrorEmpty));
return; return;
}
if(newReleaseTagName.equals("")) {
Toasty.error(ctx, getString(R.string.tagNameErrorEmpty));
return;
}
if(checkBranch == null) {
Toasty.error(ctx, getString(R.string.selectBranchError));
return;
} }
disableProcessButton(); disableProcessButton();
createNewReleaseFunc(instanceUrl, Authorization.returnAuthentication(ctx, loginUid, instanceToken), repoOwner, repoName, newReleaseTagName, newReleaseTitle, newReleaseContent, newReleaseBranch, newReleaseType, newReleaseDraft); createNewReleaseFunc(instanceUrl, Authorization.returnAuthentication(ctx, loginUid, instanceToken), repoOwner, repoName, newReleaseTagName, newReleaseTitle, newReleaseContent, selectedBranch, newReleaseType, newReleaseDraft);
} }
private void createNewReleaseFunc(final String instanceUrl, final String token, String repoOwner, String repoName, String newReleaseTagName, String newReleaseTitle, String newReleaseContent, String newReleaseBranch, boolean newReleaseType, boolean newReleaseDraft) { private void createNewReleaseFunc(final String instanceUrl, final String token, String repoOwner, String repoName, String newReleaseTagName, String newReleaseTitle, String newReleaseContent, String selectedBranch, boolean newReleaseType, boolean newReleaseDraft) {
Releases createReleaseJson = new Releases(newReleaseContent, newReleaseDraft, newReleaseTitle, newReleaseType, newReleaseTagName, newReleaseBranch); Releases createReleaseJson = new Releases(newReleaseContent, newReleaseDraft, newReleaseTitle, newReleaseType, newReleaseTagName, selectedBranch);
Call<Releases> call; Call<Releases> call;
@ -179,12 +170,10 @@ public class CreateReleaseActivity extends BaseActivity {
if (response.code() == 201) { if (response.code() == 201) {
TinyDB tinyDb = new TinyDB(appCtx);
tinyDb.putBoolean("updateReleases", true); tinyDb.putBoolean("updateReleases", true);
Toasty.success(ctx, getString(R.string.releaseCreatedText)); Toasty.success(ctx, getString(R.string.releaseCreatedText));
enableProcessButton(); enableProcessButton();
finish(); finish();
} }
else if(response.code() == 401) { else if(response.code() == 401) {
@ -218,6 +207,7 @@ public class CreateReleaseActivity extends BaseActivity {
@Override @Override
public void onFailure(@NonNull Call<Releases> call, @NonNull Throwable t) { public void onFailure(@NonNull Call<Releases> call, @NonNull Throwable t) {
Log.e("onFailure", t.toString()); Log.e("onFailure", t.toString());
enableProcessButton(); enableProcessButton();
} }
@ -244,23 +234,20 @@ public class CreateReleaseActivity extends BaseActivity {
assert branchesList_ != null; assert branchesList_ != null;
if(branchesList_.size() > 0) { if(branchesList_.size() > 0) {
for (int i = 0; i < branchesList_.size(); i++) {
Branches data = new Branches( branchesList.addAll(branchesList_);
branchesList_.get(i).getName()
);
branchesList.add(data);
}
} }
ArrayAdapter<Branches> adapter = new ArrayAdapter<>(CreateReleaseActivity.this, ArrayAdapter<Branches> adapter = new ArrayAdapter<>(CreateReleaseActivity.this,
R.layout.spinner_item, branchesList); R.layout.list_spinner_items, branchesList);
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
releaseBranch.setAdapter(adapter); releaseBranch.setAdapter(adapter);
enableProcessButton(); enableProcessButton();
releaseBranch.setOnItemClickListener ((parent, view, position, id) ->
selectedBranch = branchesList.get(position).getName()
);
} }
} }
else if(response.code() == 401) { else if(response.code() == 401) {
@ -276,6 +263,7 @@ public class CreateReleaseActivity extends BaseActivity {
@Override @Override
public void onFailure(@NonNull Call<List<Branches>> call, @NonNull Throwable t) { public void onFailure(@NonNull Call<List<Branches>> call, @NonNull Throwable t) {
Log.e("onFailure", t.toString()); Log.e("onFailure", t.toString());
} }
}); });
@ -283,12 +271,8 @@ public class CreateReleaseActivity extends BaseActivity {
} }
private void initCloseListener() { private void initCloseListener() {
onClickListener = new View.OnClickListener() {
@Override onClickListener = view -> finish();
public void onClick(View view) {
finish();
}
};
} }
private void disableProcessButton() { private void disableProcessButton() {

View File

@ -2,16 +2,17 @@ package org.mian.gitnex.activities;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button; import android.widget.Button;
import android.widget.CheckBox; import android.widget.CheckBox;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.Spinner;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import org.mian.gitnex.R; import org.mian.gitnex.R;
import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.clients.RetrofitClient;
@ -37,13 +38,21 @@ public class CreateRepoActivity extends BaseActivity {
public ImageView closeActivity; public ImageView closeActivity;
private View.OnClickListener onClickListener; private View.OnClickListener onClickListener;
private Spinner spinner; private AutoCompleteTextView spinner;
private Button createRepo; private Button createRepo;
private EditText repoName; private EditText repoName;
private EditText repoDesc; private EditText repoDesc;
private CheckBox repoAccess; private CheckBox repoAccess;
final Context ctx = this; final Context ctx = this;
private Context appCtx; private Context appCtx;
private TinyDB tinyDb;
private String instanceUrl;
private String loginUid;
private String userLogin;
private String instanceToken;
private String selectedOwner;
List<OrgOwner> organizationsList = new ArrayList<>(); List<OrgOwner> organizationsList = new ArrayList<>();
@ -61,14 +70,14 @@ public class CreateRepoActivity extends BaseActivity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
appCtx = getApplicationContext(); appCtx = getApplicationContext();
tinyDb = new TinyDB(appCtx);
boolean connToInternet = AppUtil.hasNetworkConnection(ctx); boolean connToInternet = AppUtil.hasNetworkConnection(ctx);
TinyDB tinyDb = new TinyDB(appCtx); instanceUrl = tinyDb.getString("instanceUrl");
final String instanceUrl = tinyDb.getString("instanceUrl"); loginUid = tinyDb.getString("loginUid");
final String loginUid = tinyDb.getString("loginUid"); userLogin = tinyDb.getString("userLogin");
final String userLogin = tinyDb.getString("userLogin"); instanceToken = "token " + tinyDb.getString(loginUid + "-token");
final String instanceToken = "token " + tinyDb.getString(loginUid + "-token");
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
@ -87,18 +96,6 @@ public class CreateRepoActivity extends BaseActivity {
spinner = findViewById(R.id.ownerSpinner); spinner = findViewById(R.id.ownerSpinner);
getOrganizations(instanceUrl, Authorization.returnAuthentication(ctx, loginUid, instanceToken), userLogin); getOrganizations(instanceUrl, Authorization.returnAuthentication(ctx, loginUid, instanceToken), userLogin);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
OrgOwner user = (OrgOwner) parent.getSelectedItem();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
createRepo = findViewById(R.id.createNewRepoButton); createRepo = findViewById(R.id.createNewRepoButton);
disableProcessButton(); disableProcessButton();
@ -112,24 +109,15 @@ public class CreateRepoActivity extends BaseActivity {
} }
} }
private View.OnClickListener createRepoListener = new View.OnClickListener() { private View.OnClickListener createRepoListener = v -> processNewRepo();
public void onClick(View v) {
processNewRepo();
}
};
private void processNewRepo() { private void processNewRepo() {
boolean connToInternet = AppUtil.hasNetworkConnection(appCtx); boolean connToInternet = AppUtil.hasNetworkConnection(appCtx);
AppUtil appUtil = new AppUtil(); AppUtil appUtil = new AppUtil();
TinyDB tinyDb = new TinyDB(appCtx);
final String instanceUrl = tinyDb.getString("instanceUrl");
final String loginUid = tinyDb.getString("loginUid");
final String instanceToken = "token " + tinyDb.getString(loginUid + "-token");
String newRepoName = repoName.getText().toString(); String newRepoName = repoName.getText().toString();
String newRepoDesc = repoDesc.getText().toString(); String newRepoDesc = repoDesc.getText().toString();
String repoOwner = spinner.getSelectedItem().toString();
boolean newRepoAccess = repoAccess.isChecked(); boolean newRepoAccess = repoAccess.isChecked();
if(!connToInternet) { if(!connToInternet) {
@ -161,20 +149,24 @@ public class CreateRepoActivity extends BaseActivity {
else if (reservedRepoPatterns.matcher(newRepoName).find()) { else if (reservedRepoPatterns.matcher(newRepoName).find()) {
Toasty.warning(ctx, getString(R.string.repoNameErrorReservedPatterns)); Toasty.warning(ctx, getString(R.string.repoNameErrorReservedPatterns));
}
else if(selectedOwner == null) {
Toasty.error(ctx, getString(R.string.repoOwnerError));
} }
else { else {
disableProcessButton(); disableProcessButton();
createNewRepository(instanceUrl, Authorization.returnAuthentication(ctx, loginUid, instanceToken), loginUid, newRepoName, newRepoDesc, repoOwner, newRepoAccess); createNewRepository(instanceUrl, Authorization.returnAuthentication(ctx, loginUid, instanceToken), loginUid, newRepoName, newRepoDesc, selectedOwner, newRepoAccess);
} }
} }
private void createNewRepository(final String instanceUrl, final String token, String loginUid, String repoName, String repoDesc, String repoOwner, boolean isPrivate) { private void createNewRepository(final String instanceUrl, final String token, String loginUid, String repoName, String repoDesc, String selectedOwner, boolean isPrivate) {
OrganizationRepository createRepository = new OrganizationRepository(true, repoDesc, null, null, repoName, isPrivate, "Default"); OrganizationRepository createRepository = new OrganizationRepository(true, repoDesc, null, null, repoName, isPrivate, "Default");
Call<OrganizationRepository> call; Call<OrganizationRepository> call;
if(repoOwner.equals(loginUid)) { if(selectedOwner.equals(loginUid)) {
call = RetrofitClient call = RetrofitClient
.getInstance(instanceUrl, ctx) .getInstance(instanceUrl, ctx)
@ -186,7 +178,7 @@ public class CreateRepoActivity extends BaseActivity {
call = RetrofitClient call = RetrofitClient
.getInstance(instanceUrl, ctx) .getInstance(instanceUrl, ctx)
.getApiInterface() .getApiInterface()
.createNewUserOrgRepository(token, repoOwner, createRepository); .createNewUserOrgRepository(token, selectedOwner, createRepository);
} }
call.enqueue(new Callback<OrganizationRepository>() { call.enqueue(new Callback<OrganizationRepository>() {
@ -234,8 +226,6 @@ public class CreateRepoActivity extends BaseActivity {
private void getOrganizations(String instanceUrl, String instanceToken, final String userLogin) { private void getOrganizations(String instanceUrl, String instanceToken, final String userLogin) {
TinyDB tinyDb = new TinyDB(appCtx);
Call<List<OrgOwner>> call = RetrofitClient Call<List<OrgOwner>> call = RetrofitClient
.getInstance(instanceUrl, ctx) .getInstance(instanceUrl, ctx)
.getApiInterface() .getApiInterface()
@ -246,7 +236,6 @@ public class CreateRepoActivity extends BaseActivity {
@Override @Override
public void onResponse(@NonNull Call<List<OrgOwner>> call, @NonNull retrofit2.Response<List<OrgOwner>> response) { public void onResponse(@NonNull Call<List<OrgOwner>> call, @NonNull retrofit2.Response<List<OrgOwner>> response) {
if(response.isSuccessful()) {
if(response.code() == 200) { if(response.code() == 200) {
int organizationId = 0; int organizationId = 0;
@ -266,39 +255,39 @@ public class CreateRepoActivity extends BaseActivity {
} }
} }
OrgOwner data = new OrgOwner( OrgOwner data = new OrgOwner(organizationsList_.get(i).getUsername());
organizationsList_.get(i).getUsername()
);
organizationsList.add(data); organizationsList.add(data);
} }
} }
ArrayAdapter<OrgOwner> adapter = new ArrayAdapter<>(CreateRepoActivity.this, ArrayAdapter<OrgOwner> adapter = new ArrayAdapter<>(CreateRepoActivity.this, R.layout.list_spinner_items, organizationsList);
R.layout.spinner_item, organizationsList);
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
spinner.setAdapter(adapter); spinner.setAdapter(adapter);
spinner.setOnItemClickListener ((parent, view, position, id) -> selectedOwner = organizationsList.get(position).getUsername());
if(tinyDb.getBoolean("organizationAction") & organizationId != 0) { if(tinyDb.getBoolean("organizationAction") & organizationId != 0) {
spinner.setSelection(organizationId); int selectOwnerById = organizationId;
new Handler(Looper.getMainLooper()).postDelayed(() -> {
spinner.setText(organizationsList.get(selectOwnerById).getUsername(), false);
selectedOwner = organizationsList.get(selectOwnerById).getUsername();
}, 500);
tinyDb.putBoolean("organizationAction", false); tinyDb.putBoolean("organizationAction", false);
} }
enableProcessButton(); enableProcessButton();
}
}
}
else if(response.code() == 401) { else if(response.code() == 401) {
enableProcessButton(); enableProcessButton();
AlertDialogs.authorizationTokenRevokedDialog(ctx, getResources().getString(R.string.alertDialogTokenRevokedTitle), AlertDialogs.authorizationTokenRevokedDialog(ctx, getResources().getString(R.string.alertDialogTokenRevokedTitle), getResources().getString(R.string.alertDialogTokenRevokedMessage),
getResources().getString(R.string.alertDialogTokenRevokedMessage), getResources().getString(R.string.alertDialogTokenRevokedCopyNegativeButton), getResources().getString(R.string.alertDialogTokenRevokedCopyPositiveButton));
getResources().getString(R.string.alertDialogTokenRevokedCopyNegativeButton),
getResources().getString(R.string.alertDialogTokenRevokedCopyPositiveButton));
} }
} }
@Override @Override

View File

@ -4,21 +4,19 @@ import android.annotation.SuppressLint;
import android.app.DatePickerDialog; import android.app.DatePickerDialog;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button; import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.hendraanggrian.appcompat.socialview.Mention;
import com.hendraanggrian.appcompat.widget.MentionArrayAdapter;
import com.hendraanggrian.appcompat.widget.SocialAutoCompleteTextView;
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.helpers.AlertDialogs; import org.mian.gitnex.helpers.AlertDialogs;
@ -28,7 +26,6 @@ import org.mian.gitnex.helpers.StaticGlobalVariables;
import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.TinyDB;
import org.mian.gitnex.helpers.Toasty; import org.mian.gitnex.helpers.Toasty;
import org.mian.gitnex.helpers.Version; import org.mian.gitnex.helpers.Version;
import org.mian.gitnex.models.Collaborators;
import org.mian.gitnex.models.CreateIssue; import org.mian.gitnex.models.CreateIssue;
import org.mian.gitnex.models.Issues; import org.mian.gitnex.models.Issues;
import org.mian.gitnex.models.Milestones; import org.mian.gitnex.models.Milestones;
@ -39,7 +36,6 @@ import java.util.Calendar;
import java.util.List; import java.util.List;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.Callback; import retrofit2.Callback;
import retrofit2.Response;
/** /**
* Author M M Arif * Author M M Arif
@ -49,19 +45,27 @@ public class EditIssueActivity extends BaseActivity implements View.OnClickListe
final Context ctx = this; final Context ctx = this;
private Context appCtx; private Context appCtx;
private TinyDB tinyDb;
private View.OnClickListener onClickListener; private View.OnClickListener onClickListener;
private int resultLimit = StaticGlobalVariables.resultLimitOldGiteaInstances; private int resultLimit = StaticGlobalVariables.resultLimitOldGiteaInstances;
private EditText editIssueTitle; private EditText editIssueTitle;
private SocialAutoCompleteTextView editIssueDescription; private EditText editIssueDescription;
private TextView editIssueDueDate; private TextView editIssueDueDate;
private Button editIssueButton; private Button editIssueButton;
private Spinner editIssueMilestoneSpinner; private AutoCompleteTextView editIssueMilestoneSpinner;
private String msState = "open"; private String msState = "open";
private int milestoneId;
List<Milestones> milestonesList = new ArrayList<>(); List<Milestones> milestonesList = new ArrayList<>();
private ArrayAdapter<Mention> defaultMentionAdapter;
private String instanceUrl;
private String loginUid;
private String instanceToken;
private String repoOwner;
private String repoName;
private int issueIndex;
@Override @Override
protected int getLayoutResourceId(){ protected int getLayoutResourceId(){
@ -73,19 +77,18 @@ public class EditIssueActivity extends BaseActivity implements View.OnClickListe
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
appCtx = getApplicationContext(); appCtx = getApplicationContext();
tinyDb = new TinyDB(appCtx);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
final TinyDB tinyDb = new TinyDB(appCtx); instanceUrl = tinyDb.getString("instanceUrl");
loginUid = tinyDb.getString("loginUid");
final String instanceUrl = tinyDb.getString("instanceUrl"); instanceToken = "token " + tinyDb.getString(loginUid + "-token");
final String loginUid = tinyDb.getString("loginUid");
final String instanceToken = "token " + tinyDb.getString(loginUid + "-token");
String repoFullName = tinyDb.getString("repoFullName"); String repoFullName = tinyDb.getString("repoFullName");
String[] parts = repoFullName.split("/"); String[] parts = repoFullName.split("/");
final String repoOwner = parts[0]; repoOwner = parts[0];
final String repoName = parts[1]; repoName = parts[1];
final int issueIndex = Integer.parseInt(tinyDb.getString("issueNumber")); issueIndex = Integer.parseInt(tinyDb.getString("issueNumber"));
ImageView closeActivity = findViewById(R.id.close); ImageView closeActivity = findViewById(R.id.close);
editIssueButton = findViewById(R.id.editIssueButton); editIssueButton = findViewById(R.id.editIssueButton);
@ -103,13 +106,8 @@ public class EditIssueActivity extends BaseActivity implements View.OnClickListe
assert imm != null; assert imm != null;
imm.showSoftInput(editIssueTitle, InputMethodManager.SHOW_IMPLICIT); imm.showSoftInput(editIssueTitle, InputMethodManager.SHOW_IMPLICIT);
defaultMentionAdapter = new MentionArrayAdapter<>(this);
loadCollaboratorsList();
editIssueMilestoneSpinner = findViewById(R.id.editIssueMilestoneSpinner); editIssueMilestoneSpinner = findViewById(R.id.editIssueMilestoneSpinner);
editIssueDescription.setMentionAdapter(defaultMentionAdapter);
initCloseListener(); initCloseListener();
closeActivity.setOnClickListener(onClickListener); closeActivity.setOnClickListener(onClickListener);
@ -128,85 +126,16 @@ public class EditIssueActivity extends BaseActivity implements View.OnClickListe
disableProcessButton(); disableProcessButton();
getIssue(instanceUrl, instanceToken, loginUid, repoOwner, repoName, issueIndex, resultLimit); getIssue(instanceUrl, instanceToken, loginUid, repoOwner, repoName, issueIndex, resultLimit);
}
public void loadCollaboratorsList() {
final TinyDB tinyDb = new TinyDB(appCtx);
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];
Call<List<Collaborators>> call = RetrofitClient
.getInstance(instanceUrl, ctx)
.getApiInterface()
.getCollaborators(Authorization.returnAuthentication(ctx, loginUid, instanceToken), repoOwner, repoName);
call.enqueue(new Callback<List<Collaborators>>() {
@Override
public void onResponse(@NonNull Call<List<Collaborators>> call, @NonNull Response<List<Collaborators>> response) {
if (response.isSuccessful()) {
assert response.body() != null;
String fullName = "";
for (int i = 0; i < response.body().size(); i++) {
if(!response.body().get(i).getFull_name().equals("")) {
fullName = response.body().get(i).getFull_name();
}
defaultMentionAdapter.add(
new Mention(response.body().get(i).getUsername(), fullName, response.body().get(i).getAvatar_url()));
}
} else {
Log.i("onResponse", String.valueOf(response.code()));
}
}
@Override
public void onFailure(@NonNull Call<List<Collaborators>> call, @NonNull Throwable t) {
Log.i("onFailure", t.toString());
}
});
} }
private void initCloseListener() { private void initCloseListener() {
onClickListener = new View.OnClickListener() {
@Override onClickListener = view -> finish();
public void onClick(View view) {
finish();
}
};
} }
private void processEditIssue() { private void processEditIssue() {
boolean connToInternet = AppUtil.hasNetworkConnection(appCtx); boolean connToInternet = AppUtil.hasNetworkConnection(appCtx);
TinyDB tinyDb = new TinyDB(appCtx);
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"));
Milestones mModel = (Milestones) editIssueMilestoneSpinner.getSelectedItem();
int editIssueMilestoneId = mModel.getId();
String editIssueTitleForm = editIssueTitle.getText().toString(); String editIssueTitleForm = editIssueTitle.getText().toString();
String editIssueDescriptionForm = editIssueDescription.getText().toString(); String editIssueDescriptionForm = editIssueDescription.getText().toString();
@ -226,30 +155,20 @@ public class EditIssueActivity extends BaseActivity implements View.OnClickListe
} }
/*if (editIssueDescriptionForm.equals("")) {
Toasty.info(ctx, getString(R.string.issueDescriptionEmpty));
return;
}*/
if (editIssueDueDateForm.equals("")) { if (editIssueDueDateForm.equals("")) {
editIssueDueDateForm = null; editIssueDueDateForm = null;
} else { } else {
editIssueDueDateForm = (AppUtil.customDateCombine(AppUtil.customDateFormat(editIssueDueDateForm))); editIssueDueDateForm = (AppUtil.customDateCombine(AppUtil.customDateFormat(editIssueDueDateForm)));
} }
//Log.i("editIssueDueDateForm", String.valueOf(editIssueDueDateForm));
disableProcessButton(); disableProcessButton();
editIssue(instanceUrl, instanceToken, repoOwner, repoName, issueIndex, loginUid, editIssueTitleForm, editIssueDescriptionForm, editIssueDueDateForm, editIssueMilestoneId); editIssue(instanceUrl, instanceToken, repoOwner, repoName, issueIndex, loginUid, editIssueTitleForm, editIssueDescriptionForm, editIssueDueDateForm, milestoneId);
} }
private void editIssue(String instanceUrl, String instanceToken, String repoOwner, String repoName, int issueIndex, String loginUid, String title, String description, String dueDate, int editIssueMilestoneId) { private void editIssue(String instanceUrl, String instanceToken, String repoOwner, String repoName, int issueIndex, String loginUid, String title, String description, String dueDate, int milestoneId) {
final TinyDB tinyDb = new TinyDB(appCtx); CreateIssue issueData = new CreateIssue(title, description, dueDate, milestoneId);
CreateIssue issueData = new CreateIssue(title, description, dueDate, editIssueMilestoneId);
Call<JsonElement> call = RetrofitClient Call<JsonElement> call = RetrofitClient
.getInstance(instanceUrl, ctx) .getInstance(instanceUrl, ctx)
@ -264,9 +183,11 @@ public class EditIssueActivity extends BaseActivity implements View.OnClickListe
if(response.code() == 201) { if(response.code() == 201) {
if(tinyDb.getString("issueType").equalsIgnoreCase("Pull")) { if(tinyDb.getString("issueType").equalsIgnoreCase("Pull")) {
Toasty.success(ctx, getString(R.string.editPrSuccessMessage)); Toasty.success(ctx, getString(R.string.editPrSuccessMessage));
} }
else { else {
Toasty.success(ctx, getString(R.string.editIssueSuccessMessage)); Toasty.success(ctx, getString(R.string.editIssueSuccessMessage));
} }
@ -302,7 +223,6 @@ public class EditIssueActivity extends BaseActivity implements View.OnClickListe
} }
@Override @Override
public void onClick(View v) { public void onClick(View v) {
@ -314,16 +234,7 @@ public class EditIssueActivity extends BaseActivity implements View.OnClickListe
final int mDay = c.get(Calendar.DAY_OF_MONTH); final int mDay = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(this, DatePickerDialog datePickerDialog = new DatePickerDialog(this,
new DatePickerDialog.OnDateSetListener() { (view, year, monthOfYear, dayOfMonth) -> editIssueDueDate.setText(getString(R.string.setDueDate, year, (monthOfYear + 1), dayOfMonth)), mYear, mMonth, mDay);
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
editIssueDueDate.setText(getString(R.string.setDueDate, year, (monthOfYear + 1), dayOfMonth));
}
}, mYear, mMonth, mDay);
datePickerDialog.show(); datePickerDialog.show();
} }
@ -351,9 +262,10 @@ public class EditIssueActivity extends BaseActivity implements View.OnClickListe
editIssueTitle.setText(response.body().getTitle()); editIssueTitle.setText(response.body().getTitle());
editIssueDescription.setText(response.body().getBody()); editIssueDescription.setText(response.body().getBody());
int msId = 0; int currentMilestoneId = 0;
if(response.body().getMilestone() != null) { if(response.body().getMilestone() != null) {
msId = response.body().getMilestone().getId();
currentMilestoneId = response.body().getMilestone().getId();
} }
// get milestones list // get milestones list
@ -364,14 +276,14 @@ public class EditIssueActivity extends BaseActivity implements View.OnClickListe
.getApiInterface() .getApiInterface()
.getMilestones(Authorization.returnAuthentication(ctx, loginUid, instanceToken), repoOwner, repoName, 1, resultLimit, msState); .getMilestones(Authorization.returnAuthentication(ctx, loginUid, instanceToken), repoOwner, repoName, 1, resultLimit, msState);
final int finalMsId = msId; int checkMilestoneId = currentMilestoneId;
call_.enqueue(new Callback<List<Milestones>>() { call_.enqueue(new Callback<List<Milestones>>() {
@Override @Override
public void onResponse(@NonNull Call<List<Milestones>> call, @NonNull retrofit2.Response<List<Milestones>> response_) { public void onResponse(@NonNull Call<List<Milestones>> call, @NonNull retrofit2.Response<List<Milestones>> response_) {
int finalMsId1 = 0; int getSelectedMilestoneId = 0;
if (response_.code() == 200) { if (response_.code() == 200) {
@ -379,31 +291,33 @@ public class EditIssueActivity extends BaseActivity implements View.OnClickListe
milestonesList.add(new Milestones(0, "No milestone")); milestonesList.add(new Milestones(0, "No milestone"));
assert milestonesList_ != null; assert milestonesList_ != null;
if (milestonesList_.size() > 0) { if (milestonesList_.size() > 0) {
milestonesList.addAll(milestonesList_);
for (int i = 0; i < milestonesList_.size(); i++) { for (int i = 0; i < milestonesList_.size(); i++) {
Milestones data = new Milestones( if(checkMilestoneId == milestonesList_.get(i).getId()) {
milestonesList_.get(i).getId(), getSelectedMilestoneId = i + 1;
milestonesList_.get(i).getTitle()
);
milestonesList.add(data);
if(finalMsId == milestonesList_.get(i).getId()) {
finalMsId1 = i + 1;
} }
} }
} }
ArrayAdapter<Milestones> adapter_ = new ArrayAdapter<>(EditIssueActivity.this, ArrayAdapter<Milestones> adapter = new ArrayAdapter<>(EditIssueActivity.this,
R.layout.spinner_item, milestonesList); R.layout.list_spinner_items, milestonesList);
adapter_.setDropDownViewResource(R.layout.spinner_dropdown_item); editIssueMilestoneSpinner.setAdapter(adapter);
editIssueMilestoneSpinner.setAdapter(adapter_);
editIssueMilestoneSpinner.setOnItemClickListener ((parent, view, position, id) -> milestoneId = milestonesList.get(position).getId());
int finalMsId = getSelectedMilestoneId;
new Handler(Looper.getMainLooper()).postDelayed(() -> {
editIssueMilestoneSpinner.setText(milestonesList.get(finalMsId).getTitle(),false);
milestoneId = milestonesList.get(finalMsId).getId();
}, 500);
if(milestonesList_.size() > 0) {
editIssueMilestoneSpinner.setSelection(finalMsId1);
}
enableProcessButton(); enableProcessButton();
} }
@ -412,6 +326,7 @@ public class EditIssueActivity extends BaseActivity implements View.OnClickListe
@Override @Override
public void onFailure(@NonNull Call<List<Milestones>> call, @NonNull Throwable t) { public void onFailure(@NonNull Call<List<Milestones>> call, @NonNull Throwable t) {
Log.e("onFailure", t.toString()); Log.e("onFailure", t.toString());
} }
}); });
@ -444,6 +359,7 @@ public class EditIssueActivity extends BaseActivity implements View.OnClickListe
@Override @Override
public void onFailure(@NonNull Call<Issues> call, @NonNull Throwable t) { public void onFailure(@NonNull Call<Issues> call, @NonNull Throwable t) {
Log.e("onFailure", t.toString()); Log.e("onFailure", t.toString());
} }
}); });

View File

@ -771,6 +771,7 @@ public class IssueDetailActivity extends BaseActivity implements LabelsListAdapt
} }
if(singleIssue.getMilestone() != null) { if(singleIssue.getMilestone() != null) {
viewBinding.issueMilestone.setVisibility(View.VISIBLE);
viewBinding.issueMilestone.setText(getString(R.string.issueMilestone, singleIssue.getMilestone().getTitle())); viewBinding.issueMilestone.setText(getString(R.string.issueMilestone, singleIssue.getMilestone().getTitle()));
} }
else { else {

View File

@ -5,12 +5,11 @@ import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button; import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
import android.widget.RadioGroup; import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
@ -53,10 +52,10 @@ public class LoginActivity extends BaseActivity {
private Button loginButton; private Button loginButton;
private EditText instanceUrlET, loginUidET, loginPassword, otpCode, loginTokenCode; private EditText instanceUrlET, loginUidET, loginPassword, otpCode, loginTokenCode;
private Spinner protocolSpinner; private AutoCompleteTextView protocolSpinner;
private TextView otpInfo;
private RadioGroup loginMethod; private RadioGroup loginMethod;
private String device_id = "token"; private String device_id = "token";
private String selectedProtocol;
@Override @Override
protected int getLayoutResourceId() { protected int getLayoutResourceId() {
@ -78,45 +77,47 @@ public class LoginActivity extends BaseActivity {
loginUidET = findViewById(R.id.login_uid); loginUidET = findViewById(R.id.login_uid);
loginPassword = findViewById(R.id.login_passwd); loginPassword = findViewById(R.id.login_passwd);
otpCode = findViewById(R.id.otpCode); otpCode = findViewById(R.id.otpCode);
otpInfo = findViewById(R.id.otpInfo);
protocolSpinner = findViewById(R.id.httpsSpinner); protocolSpinner = findViewById(R.id.httpsSpinner);
loginMethod = findViewById(R.id.loginMethod); loginMethod = findViewById(R.id.loginMethod);
loginTokenCode = findViewById(R.id.loginTokenCode); loginTokenCode = findViewById(R.id.loginTokenCode);
((TextView) findViewById(R.id.appVersion)).setText(AppUtil.getAppVersion(appCtx)); ((TextView) findViewById(R.id.appVersion)).setText(AppUtil.getAppVersion(appCtx));
ArrayAdapter<Protocol> adapterProtocols = new ArrayAdapter<>(LoginActivity.this, R.layout.spinner_item, Protocol.values()); ArrayAdapter<Protocol> adapterProtocols = new ArrayAdapter<>(LoginActivity.this, R.layout.list_spinner_items, Protocol.values());
adapterProtocols.setDropDownViewResource(R.layout.spinner_dropdown_item);
protocolSpinner.setAdapter(adapterProtocols); protocolSpinner.setAdapter(adapterProtocols);
protocolSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { protocolSpinner.setOnItemClickListener((parent, view, position, id) -> {
if(protocolSpinner.getSelectedItem() == Protocol.HTTP) { selectedProtocol = String.valueOf(parent.getItemAtPosition(position));
if(selectedProtocol.equals(String.valueOf(Protocol.HTTP))) {
Toasty.warning(ctx, getResources().getString(R.string.protocolError)); Toasty.warning(ctx, getResources().getString(R.string.protocolError));
} }
}
public void onNothingSelected(AdapterView<?> parent) {
}
}); });
if(R.id.loginToken == loginMethod.getCheckedRadioButtonId()) {
AppUtil.setMultiVisibility(View.GONE, findViewById(R.id.login_uidLayout), findViewById(R.id.login_passwdLayout), findViewById(R.id.otpCodeLayout));
findViewById(R.id.loginTokenCodeLayout).setVisibility(View.VISIBLE);
}
else {
AppUtil.setMultiVisibility(View.VISIBLE, findViewById(R.id.login_uidLayout), findViewById(R.id.login_passwdLayout), findViewById(R.id.otpCodeLayout));
findViewById(R.id.loginTokenCodeLayout).setVisibility(View.GONE);
}
loginMethod.setOnCheckedChangeListener((group, checkedId) -> { loginMethod.setOnCheckedChangeListener((group, checkedId) -> {
if(checkedId == R.id.loginToken) { if(checkedId == R.id.loginToken) {
AppUtil.setMultiVisibility(View.GONE, loginUidET, loginPassword, otpCode, otpInfo); AppUtil.setMultiVisibility(View.GONE, findViewById(R.id.login_uidLayout), findViewById(R.id.login_passwdLayout), findViewById(R.id.otpCodeLayout));
loginTokenCode.setVisibility(View.VISIBLE); findViewById(R.id.loginTokenCodeLayout).setVisibility(View.VISIBLE);
} }
else { else {
AppUtil.setMultiVisibility(View.VISIBLE, loginUidET, loginPassword, otpCode, otpInfo); AppUtil.setMultiVisibility(View.VISIBLE, findViewById(R.id.login_uidLayout), findViewById(R.id.login_passwdLayout), findViewById(R.id.otpCodeLayout));
loginTokenCode.setVisibility(View.GONE); findViewById(R.id.loginTokenCodeLayout).setVisibility(View.GONE);
} }
}); });
@ -149,16 +150,22 @@ public class LoginActivity extends BaseActivity {
try { try {
if(selectedProtocol == null) {
Toasty.error(ctx, getResources().getString(R.string.protocolEmptyError));
enableProcessButton();
return;
}
String loginUid = loginUidET.getText().toString(); String loginUid = loginUidET.getText().toString();
String loginPass = loginPassword.getText().toString(); String loginPass = loginPassword.getText().toString();
String loginToken = loginTokenCode.getText().toString().trim(); String loginToken = loginTokenCode.getText().toString().trim();
Protocol protocol = (Protocol) protocolSpinner.getSelectedItem();
LoginType loginType = (loginMethod.getCheckedRadioButtonId() == R.id.loginUsernamePassword) ? LoginType.BASIC : LoginType.TOKEN; LoginType loginType = (loginMethod.getCheckedRadioButtonId() == R.id.loginUsernamePassword) ? LoginType.BASIC : LoginType.TOKEN;
URI rawInstanceUrl = UrlBuilder.fromString(UrlHelper.fixScheme(instanceUrlET.getText().toString(), "http")).toUri(); URI rawInstanceUrl = UrlBuilder.fromString(UrlHelper.fixScheme(instanceUrlET.getText().toString(), "http")).toUri();
URI instanceUrl = UrlBuilder.fromUri(rawInstanceUrl).withScheme(protocol.name().toLowerCase()).withPath(PathsHelper.join(rawInstanceUrl.getPath(), "/api/v1/")) URI instanceUrl = UrlBuilder.fromUri(rawInstanceUrl).withScheme(selectedProtocol.toLowerCase()).withPath(PathsHelper.join(rawInstanceUrl.getPath(), "/api/v1/"))
.toUri(); .toUri();
tinyDB.putString("loginType", loginType.name().toLowerCase()); tinyDB.putString("loginType", loginType.name().toLowerCase());
@ -170,7 +177,6 @@ public class LoginActivity extends BaseActivity {
Toasty.error(ctx, getResources().getString(R.string.emptyFieldURL)); Toasty.error(ctx, getResources().getString(R.string.emptyFieldURL));
enableProcessButton(); enableProcessButton();
return; return;
} }
if(loginType == LoginType.BASIC) { if(loginType == LoginType.BASIC) {
@ -180,14 +186,12 @@ public class LoginActivity extends BaseActivity {
Toasty.warning(ctx, getResources().getString(R.string.loginOTPTypeError)); Toasty.warning(ctx, getResources().getString(R.string.loginOTPTypeError));
enableProcessButton(); enableProcessButton();
return; return;
} }
if(rawInstanceUrl.getUserInfo() != null) { if(rawInstanceUrl.getUserInfo() != null) {
tinyDB.putString("basicAuthPassword", loginPass); tinyDB.putString("basicAuthPassword", loginPass);
tinyDB.putBoolean("basicAuthFlag", true); tinyDB.putBoolean("basicAuthFlag", true);
} }
if(loginUid.equals("")) { if(loginUid.equals("")) {
@ -195,7 +199,6 @@ public class LoginActivity extends BaseActivity {
Toasty.error(ctx, getResources().getString(R.string.emptyFieldUsername)); Toasty.error(ctx, getResources().getString(R.string.emptyFieldUsername));
enableProcessButton(); enableProcessButton();
return; return;
} }
if(loginPass.equals("")) { if(loginPass.equals("")) {
@ -203,7 +206,6 @@ public class LoginActivity extends BaseActivity {
Toasty.error(ctx, getResources().getString(R.string.emptyFieldPassword)); Toasty.error(ctx, getResources().getString(R.string.emptyFieldPassword));
enableProcessButton(); enableProcessButton();
return; return;
} }
int loginOTP = (otpCode.length() > 0) ? Integer.parseInt(otpCode.getText().toString().trim()) : 0; int loginOTP = (otpCode.length() > 0) ? Integer.parseInt(otpCode.getText().toString().trim()) : 0;

View File

@ -6,12 +6,9 @@ import android.os.Bundle;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.hendraanggrian.appcompat.socialview.Mention;
import com.hendraanggrian.appcompat.widget.MentionArrayAdapter;
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.databinding.ActivityMergePullRequestBinding; import org.mian.gitnex.databinding.ActivityMergePullRequestBinding;
@ -21,15 +18,13 @@ import org.mian.gitnex.helpers.Authorization;
import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.TinyDB;
import org.mian.gitnex.helpers.Toasty; import org.mian.gitnex.helpers.Toasty;
import org.mian.gitnex.helpers.Version; import org.mian.gitnex.helpers.Version;
import org.mian.gitnex.models.Collaborators;
import org.mian.gitnex.models.MergePullRequest; import org.mian.gitnex.models.MergePullRequest;
import org.mian.gitnex.models.MergePullRequestSpinner; import org.mian.gitnex.models.MergePullRequestSpinner;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.Objects;
import okhttp3.ResponseBody; import okhttp3.ResponseBody;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.Callback; import retrofit2.Callback;
import retrofit2.Response;
/** /**
* Author M M Arif * Author M M Arif
@ -40,9 +35,17 @@ public class MergePullRequestActivity extends BaseActivity {
private View.OnClickListener onClickListener; private View.OnClickListener onClickListener;
final Context ctx = this; final Context ctx = this;
private Context appCtx; private Context appCtx;
private TinyDB tinyDb;
private String instanceUrl;
private String loginUid;
private String instanceToken;
private String repoOwner;
private String repoName;
private int prIndex;
private ActivityMergePullRequestBinding viewBinding; private ActivityMergePullRequestBinding viewBinding;
private ArrayAdapter<Mention> defaultMentionAdapter;
private String Do; private String Do;
@Override @Override
@ -57,13 +60,22 @@ public class MergePullRequestActivity extends BaseActivity {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
appCtx = getApplicationContext(); appCtx = getApplicationContext();
tinyDb = new TinyDB(appCtx);
viewBinding = ActivityMergePullRequestBinding.inflate(getLayoutInflater()); viewBinding = ActivityMergePullRequestBinding.inflate(getLayoutInflater());
View view = viewBinding.getRoot(); View view = viewBinding.getRoot();
setContentView(view); setContentView(view);
instanceUrl = tinyDb.getString("instanceUrl");
loginUid = tinyDb.getString("loginUid");
instanceToken = "token " + tinyDb.getString(loginUid + "-token");
String repoFullName = tinyDb.getString("repoFullName");
String[] parts = repoFullName.split("/");
repoOwner = parts[0];
repoName = parts[1];
prIndex = Integer.parseInt(tinyDb.getString("issueNumber"));
boolean connToInternet = AppUtil.hasNetworkConnection(appCtx); boolean connToInternet = AppUtil.hasNetworkConnection(appCtx);
TinyDB tinyDb = new TinyDB(appCtx);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
@ -73,29 +85,8 @@ public class MergePullRequestActivity extends BaseActivity {
setMergeAdapter(); setMergeAdapter();
viewBinding.mergeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
MergePullRequestSpinner mergeId = (MergePullRequestSpinner) parent.getSelectedItem();
Do = mergeId.getId();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
defaultMentionAdapter = new MentionArrayAdapter<>(this);
loadCollaboratorsList();
viewBinding.mergeDescription.setMentionAdapter(defaultMentionAdapter);
if(!tinyDb.getString("issueTitle").isEmpty()) { if(!tinyDb.getString("issueTitle").isEmpty()) {
viewBinding.toolbarTitle.setText(tinyDb.getString("issueTitle")); viewBinding.toolbarTitle.setText(tinyDb.getString("issueTitle"));
viewBinding.mergeTitle.setText(tinyDb.getString("issueTitle") + " (#" + tinyDb.getString("issueNumber") + ")"); viewBinding.mergeTitle.setText(tinyDb.getString("issueTitle") + " (#" + tinyDb.getString("issueNumber") + ")");
} }
@ -136,8 +127,6 @@ public class MergePullRequestActivity extends BaseActivity {
private void setMergeAdapter() { private void setMergeAdapter() {
TinyDB tinyDb = new TinyDB(appCtx);
ArrayList<MergePullRequestSpinner> mergeList = new ArrayList<>(); ArrayList<MergePullRequestSpinner> mergeList = new ArrayList<>();
mergeList.add(new MergePullRequestSpinner("merge", getResources().getString(R.string.mergeOptionMerge))); mergeList.add(new MergePullRequestSpinner("merge", getResources().getString(R.string.mergeOptionMerge)));
@ -148,58 +137,14 @@ public class MergePullRequestActivity extends BaseActivity {
mergeList.add(new MergePullRequestSpinner("squash", getResources().getString(R.string.mergeOptionSquash))); mergeList.add(new MergePullRequestSpinner("squash", getResources().getString(R.string.mergeOptionSquash)));
} }
ArrayAdapter<MergePullRequestSpinner> adapter = new ArrayAdapter<>(MergePullRequestActivity.this, R.layout.spinner_item, mergeList); ArrayAdapter<MergePullRequestSpinner> adapter = new ArrayAdapter<>(MergePullRequestActivity.this, R.layout.list_spinner_items, mergeList);
adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
viewBinding.mergeSpinner.setAdapter(adapter); viewBinding.mergeSpinner.setAdapter(adapter);
} viewBinding.mergeSpinner.setOnItemClickListener ((parent, view, position, id) -> {
public void loadCollaboratorsList() {
final TinyDB tinyDb = new TinyDB(appCtx);
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];
Call<List<Collaborators>> call = RetrofitClient.getInstance(instanceUrl, ctx).getApiInterface().getCollaborators(Authorization.returnAuthentication(ctx, loginUid, instanceToken), repoOwner, repoName);
call.enqueue(new Callback<List<Collaborators>>() {
@Override
public void onResponse(@NonNull Call<List<Collaborators>> call, @NonNull Response<List<Collaborators>> response) {
if(response.isSuccessful()) {
assert response.body() != null;
String fullName = "";
for(int i = 0; i < response.body().size(); i++) {
if(!response.body().get(i).getFull_name().equals("")) {
fullName = response.body().get(i).getFull_name();
}
defaultMentionAdapter.add(new Mention(response.body().get(i).getUsername(), fullName, response.body().get(i).getAvatar_url()));
}
}
else {
Log.i("onResponse", String.valueOf(response.code()));
}
}
@Override
public void onFailure(@NonNull Call<List<Collaborators>> call, @NonNull Throwable t) {
Log.i("onFailure", t.toString());
}
Do = mergeList.get(position).getId();
}); });
} }
private void initCloseListener() { private void initCloseListener() {
@ -211,8 +156,8 @@ public class MergePullRequestActivity extends BaseActivity {
private void processMergePullRequest() { private void processMergePullRequest() {
String mergePRDesc = viewBinding.mergeDescription.getText().toString(); String mergePRDesc = Objects.requireNonNull(viewBinding.mergeDescription.getText()).toString();
String mergePRTitle = viewBinding.mergeTitle.getText().toString(); String mergePRTitle = Objects.requireNonNull(viewBinding.mergeTitle.getText()).toString();
boolean deleteBranch = viewBinding.deleteBranch.isChecked(); boolean deleteBranch = viewBinding.deleteBranch.isChecked();
boolean connToInternet = AppUtil.hasNetworkConnection(appCtx); boolean connToInternet = AppUtil.hasNetworkConnection(appCtx);
@ -221,27 +166,21 @@ public class MergePullRequestActivity extends BaseActivity {
Toasty.error(ctx, getResources().getString(R.string.checkNetConnection)); Toasty.error(ctx, getResources().getString(R.string.checkNetConnection));
return; return;
} }
if(Do == null) {
Toasty.error(ctx, getResources().getString(R.string.selectMergeStrategy));
}
else {
disableProcessButton(); disableProcessButton();
mergeFunction(Do, mergePRDesc, mergePRTitle, deleteBranch); mergeFunction(Do, mergePRDesc, mergePRTitle, deleteBranch);
}
} }
private void mergeFunction(String Do, String mergePRDT, String mergeTitle, boolean deleteBranch) { private void mergeFunction(String Do, String mergePRDT, String mergeTitle, boolean deleteBranch) {
final TinyDB tinyDb = new TinyDB(appCtx);
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 prIndex = Integer.parseInt(tinyDb.getString("issueNumber"));
MergePullRequest mergePR = new MergePullRequest(Do, mergePRDT, mergeTitle); MergePullRequest mergePR = new MergePullRequest(Do, mergePRDT, mergeTitle);
Call<ResponseBody> call = RetrofitClient.getInstance(instanceUrl, ctx).getApiInterface().mergePullRequest(Authorization.returnAuthentication(ctx, loginUid, instanceToken), repoOwner, repoName, prIndex, mergePR); Call<ResponseBody> call = RetrofitClient.getInstance(instanceUrl, ctx).getApiInterface().mergePullRequest(Authorization.returnAuthentication(ctx, loginUid, instanceToken), repoOwner, repoName, prIndex, mergePR);
@ -268,7 +207,6 @@ public class MergePullRequestActivity extends BaseActivity {
tinyDb.putBoolean("prMerged", true); tinyDb.putBoolean("prMerged", true);
tinyDb.putBoolean("resumePullRequests", true); tinyDb.putBoolean("resumePullRequests", true);
finish(); finish();
} }
else { else {
@ -283,7 +221,6 @@ public class MergePullRequestActivity extends BaseActivity {
tinyDb.putBoolean("prMerged", true); tinyDb.putBoolean("prMerged", true);
tinyDb.putBoolean("resumePullRequests", true); tinyDb.putBoolean("resumePullRequests", true);
finish(); finish();
} }
} }
@ -293,7 +230,6 @@ public class MergePullRequestActivity extends BaseActivity {
tinyDb.putBoolean("prMerged", true); tinyDb.putBoolean("prMerged", true);
tinyDb.putBoolean("resumePullRequests", true); tinyDb.putBoolean("resumePullRequests", true);
finish(); finish();
} }
} }
@ -301,19 +237,16 @@ public class MergePullRequestActivity extends BaseActivity {
enableProcessButton(); enableProcessButton();
AlertDialogs.authorizationTokenRevokedDialog(ctx, getResources().getString(R.string.alertDialogTokenRevokedTitle), getResources().getString(R.string.alertDialogTokenRevokedMessage), getResources().getString(R.string.alertDialogTokenRevokedCopyNegativeButton), getResources().getString(R.string.alertDialogTokenRevokedCopyPositiveButton)); AlertDialogs.authorizationTokenRevokedDialog(ctx, getResources().getString(R.string.alertDialogTokenRevokedTitle), getResources().getString(R.string.alertDialogTokenRevokedMessage), getResources().getString(R.string.alertDialogTokenRevokedCopyNegativeButton), getResources().getString(R.string.alertDialogTokenRevokedCopyPositiveButton));
} }
else if(response.code() == 404) { else if(response.code() == 404) {
enableProcessButton(); enableProcessButton();
Toasty.warning(ctx, getString(R.string.mergePR404ErrorMsg)); Toasty.warning(ctx, getString(R.string.mergePR404ErrorMsg));
} }
else { else {
enableProcessButton(); enableProcessButton();
Toasty.error(ctx, getString(R.string.genericError)); Toasty.error(ctx, getString(R.string.genericError));
} }
} }
@ -331,11 +264,6 @@ public class MergePullRequestActivity extends BaseActivity {
private void deleteBranchFunction(String repoOwner, String repoName) { private void deleteBranchFunction(String repoOwner, String repoName) {
TinyDB tinyDb = new TinyDB(appCtx);
String instanceUrl = tinyDb.getString("instanceUrl");
String loginUid = tinyDb.getString("loginUid");
String instanceToken = "token " + tinyDb.getString(loginUid + "-token");
String branchName = tinyDb.getString("prHeadBranch"); String branchName = tinyDb.getString("prHeadBranch");
Call<JsonElement> call = RetrofitClient Call<JsonElement> call = RetrofitClient
@ -351,7 +279,6 @@ public class MergePullRequestActivity extends BaseActivity {
if(response.code() == 204) { if(response.code() == 204) {
Log.i("deleteBranch", "Branch deleted successfully"); Log.i("deleteBranch", "Branch deleted successfully");
} }
} }
@ -361,7 +288,6 @@ public class MergePullRequestActivity extends BaseActivity {
Log.e("onFailure", t.toString()); Log.e("onFailure", t.toString());
enableProcessButton(); enableProcessButton();
} }
}); });

View File

@ -11,15 +11,12 @@ import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.widget.ArrayAdapter;
import android.widget.Button; import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.widget.Toolbar; import androidx.appcompat.widget.Toolbar;
import com.hendraanggrian.appcompat.socialview.Mention;
import com.hendraanggrian.appcompat.widget.MentionArrayAdapter;
import com.hendraanggrian.appcompat.widget.SocialAutoCompleteTextView;
import org.mian.gitnex.R; import org.mian.gitnex.R;
import org.mian.gitnex.actions.IssueActions; import org.mian.gitnex.actions.IssueActions;
import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.clients.RetrofitClient;
@ -30,13 +27,10 @@ import org.mian.gitnex.helpers.Authorization;
import org.mian.gitnex.helpers.StaticGlobalVariables; import org.mian.gitnex.helpers.StaticGlobalVariables;
import org.mian.gitnex.helpers.TinyDB; import org.mian.gitnex.helpers.TinyDB;
import org.mian.gitnex.helpers.Toasty; import org.mian.gitnex.helpers.Toasty;
import org.mian.gitnex.models.Collaborators;
import org.mian.gitnex.models.Issues; import org.mian.gitnex.models.Issues;
import java.util.List;
import java.util.Objects; import java.util.Objects;
import retrofit2.Call; import retrofit2.Call;
import retrofit2.Callback; import retrofit2.Callback;
import retrofit2.Response;
/** /**
* Author M M Arif * Author M M Arif
@ -51,8 +45,7 @@ public class ReplyToIssueActivity extends BaseActivity {
private Context appCtx; private Context appCtx;
private TextView draftSaved; private TextView draftSaved;
private SocialAutoCompleteTextView addComment; private EditText addComment;
private ArrayAdapter<Mention> defaultMentionAdapter;
private Button replyButton; private Button replyButton;
private String TAG = StaticGlobalVariables.replyToIssueActivity; private String TAG = StaticGlobalVariables.replyToIssueActivity;
private long draftIdOnCreate; private long draftIdOnCreate;
@ -79,11 +72,6 @@ public class ReplyToIssueActivity extends BaseActivity {
addComment = findViewById(R.id.addComment); addComment = findViewById(R.id.addComment);
addComment.setShowSoftInputOnFocus(true); addComment.setShowSoftInputOnFocus(true);
defaultMentionAdapter = new MentionArrayAdapter<>(ctx);
loadCollaboratorsList();
addComment.setMentionAdapter(defaultMentionAdapter);
closeActivity = findViewById(R.id.close); closeActivity = findViewById(R.id.close);
TextView toolbar_title = findViewById(R.id.toolbar_title); TextView toolbar_title = findViewById(R.id.toolbar_title);
@ -121,13 +109,11 @@ public class ReplyToIssueActivity extends BaseActivity {
if(getIntent().getBooleanExtra("cursorToEnd", false)) { if(getIntent().getBooleanExtra("cursorToEnd", false)) {
addComment.setSelection(addComment.length()); addComment.setSelection(addComment.length());
} }
} }
if(getIntent().getStringExtra("draftTitle") != null) { if(getIntent().getStringExtra("draftTitle") != null) {
toolbar_title.setText(getIntent().getStringExtra("draftTitle")); toolbar_title.setText(getIntent().getStringExtra("draftTitle"));
} }
if(getIntent().getStringExtra("commentAction") != null && Objects.equals(getIntent().getStringExtra("commentAction"), "edit") && !Objects.equals(getIntent().getStringExtra("commentId"), "new")) { if(getIntent().getStringExtra("commentAction") != null && Objects.equals(getIntent().getStringExtra("commentAction"), "edit") && !Objects.equals(getIntent().getStringExtra("commentId"), "new")) {
@ -144,14 +130,12 @@ public class ReplyToIssueActivity extends BaseActivity {
} }
public void beforeTextChanged(CharSequence s, int start, int count, int after) { public void beforeTextChanged(CharSequence s, int start, int count, int after) {
} }
public void onTextChanged(CharSequence s, int start, int before, int count) { public void onTextChanged(CharSequence s, int start, int before, int count) {
saveDraft(addComment.getText().toString(), commentId, draftIdOnCreate); saveDraft(addComment.getText().toString(), commentId, draftIdOnCreate);
draftSaved.setVisibility(View.VISIBLE); draftSaved.setVisibility(View.VISIBLE);
} }
}); });
@ -161,7 +145,6 @@ public class ReplyToIssueActivity extends BaseActivity {
disableProcessButton(); disableProcessButton();
assert commentId != null; assert commentId != null;
IssueActions.editIssueComment(ctx, Integer.parseInt(commentId), addComment.getText().toString(), draftIdOnCreate); IssueActions.editIssueComment(ctx, Integer.parseInt(commentId), addComment.getText().toString(), draftIdOnCreate);
}); });
return; return;
@ -171,18 +154,15 @@ public class ReplyToIssueActivity extends BaseActivity {
addComment.addTextChangedListener(new TextWatcher() { addComment.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) { public void afterTextChanged(Editable s) {
} }
public void beforeTextChanged(CharSequence s, int start, int count, int after) { public void beforeTextChanged(CharSequence s, int start, int count, int after) {
} }
public void onTextChanged(CharSequence s, int start, int before, int count) { public void onTextChanged(CharSequence s, int start, int before, int count) {
saveDraft(addComment.getText().toString(), "new", draftIdOnCreate); saveDraft(addComment.getText().toString(), "new", draftIdOnCreate);
draftSaved.setVisibility(View.VISIBLE); draftSaved.setVisibility(View.VISIBLE);
} }
}); });
@ -190,12 +170,10 @@ public class ReplyToIssueActivity extends BaseActivity {
if(!connToInternet) { if(!connToInternet) {
disableProcessButton(); disableProcessButton();
} }
else { else {
replyButton.setOnClickListener(replyToIssue); replyButton.setOnClickListener(replyToIssue);
} }
} }
@ -234,57 +212,6 @@ public class ReplyToIssueActivity extends BaseActivity {
} }
public void loadCollaboratorsList() {
final TinyDB tinyDb = new TinyDB(appCtx);
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];
Call<List<Collaborators>> call = RetrofitClient
.getInstance(instanceUrl, ctx)
.getApiInterface()
.getCollaborators(Authorization.returnAuthentication(ctx, loginUid, instanceToken), repoOwner, repoName);
call.enqueue(new Callback<List<Collaborators>>() {
@Override
public void onResponse(@NonNull Call<List<Collaborators>> call, @NonNull Response<List<Collaborators>> response) {
if (response.isSuccessful()) {
assert response.body() != null;
String fullName = "";
for(int i = 0; i < response.body().size(); i++) {
if(!response.body().get(i).getFull_name().equals("")) {
fullName = response.body().get(i).getFull_name();
}
defaultMentionAdapter.add(new Mention(response.body().get(i).getUsername(), fullName, response.body().get(i).getAvatar_url()));
}
}
else {
Log.i(TAG, String.valueOf(response.code()));
}
}
@Override
public void onFailure(@NonNull Call<List<Collaborators>> call, @NonNull Throwable t) {
Log.e(TAG, t.toString());
}
});
}
private void initCloseListener() { private void initCloseListener() {
onClickListener = view -> finish(); onClickListener = view -> finish();
@ -301,19 +228,16 @@ public class ReplyToIssueActivity extends BaseActivity {
Toasty.error(ctx, getResources().getString(R.string.checkNetConnection)); Toasty.error(ctx, getResources().getString(R.string.checkNetConnection));
return; return;
} }
if(newReplyDT.equals("")) { if(newReplyDT.equals("")) {
Toasty.error(ctx, getString(R.string.commentEmptyError)); Toasty.error(ctx, getString(R.string.commentEmptyError));
} }
else { else {
disableProcessButton(); disableProcessButton();
replyComment(newReplyDT); replyComment(newReplyDT);
} }
} }

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout <LinearLayout android:layout_width="match_parent"
android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
android:background="?attr/primaryBackgroundColor"> android:background="?attr/primaryBackgroundColor">
@ -42,24 +42,52 @@
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<EditText <com.google.android.material.progressindicator.ProgressIndicator
android:id="@+id/progressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/Widget.MaterialComponents.ProgressIndicator.Linear.Indeterminate"
android:visibility="gone"
app:indicatorColor="?attr/progressIndicatorColor" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/addCollaboratorSearchLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColorHint="?attr/hintColor"
app:hintTextColor="?attr/hintColor"
app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:startIconDrawable="@drawable/ic_search"
app:startIconTint="?attr/iconsColor"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/addCollaboratorSearchHint">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/addCollaboratorSearch" android:id="@+id/addCollaboratorSearch"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="10dp"
android:textSize="14sp"
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:inputType="text"
android:labelFor="@+id/addCollaboratorSearch"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor" android:imeOptions="actionSend"
android:hint="@string/addCollaboratorSearchHint" android:inputType="text"
android:imeOptions="actionSend" /> android:textSize="16sp" />
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
<TextView <TextView
android:id="@+id/noData" android:id="@+id/noData"
@ -72,14 +100,6 @@
android:textSize="20sp" android:textSize="20sp"
android:visibility="gone" /> android:visibility="gone" />
<ProgressBar
android:id="@+id/progress_bar"
style="@style/Base.Widget.AppCompat.ProgressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="true"
android:visibility="gone" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerViewUserSearch" android:id="@+id/recyclerViewUserSearch"
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@ -140,7 +140,6 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="60dp" android:layout_height="60dp"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_marginBottom="15dp"
android:text="@string/addNewAccountText" android:text="@string/addNewAccountText"
android:textColor="@color/btnTextColor" android:textColor="@color/btnTextColor"
android:textSize="16sp" /> android:textSize="16sp" />

View File

@ -50,24 +50,43 @@
style="@style/Widget.MaterialComponents.ProgressIndicator.Linear.Indeterminate" style="@style/Widget.MaterialComponents.ProgressIndicator.Linear.Indeterminate"
app:indicatorColor="?attr/progressIndicatorColor" /> app:indicatorColor="?attr/progressIndicatorColor" />
<EditText <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/addNewTeamMemberLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColorHint="?attr/hintColor"
app:hintTextColor="?attr/hintColor"
app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:startIconDrawable="@drawable/ic_search"
app:startIconTint="?attr/iconsColor"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/addCollaboratorSearchHint">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/addNewTeamMember" android:id="@+id/addNewTeamMember"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:padding="10dp"
android:textSize="14sp"
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:inputType="text"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor" android:inputType="text"
android:hint="@string/addCollaboratorSearchHint" android:textSize="16sp" />
android:imeOptions="actionSend"
android:autofillHints="@string/addCollaboratorSearchHint" /> </com.google.android.material.textfield.TextInputLayout>
</LinearLayout>
<TextView <TextView
android:id="@+id/noData" android:id="@+id/noData"

View File

@ -13,7 +13,6 @@
android:theme="@style/Widget.AppCompat.SearchView"> android:theme="@style/Widget.AppCompat.SearchView">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/toolbar" android:id="@+id/toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -44,7 +43,6 @@
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<ScrollView <ScrollView
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"> android:background="?attr/primaryBackgroundColor">
@ -104,6 +102,7 @@
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor" android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:gravity="top|start"
android:textSize="16sp" /> android:textSize="16sp" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -207,11 +206,9 @@
<Button <Button
android:id="@+id/createNewIssueButton" android:id="@+id/createNewIssueButton"
android:gravity="center" android:layout_width="match_parent"
android:layout_gravity="end"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="60dp" android:layout_height="60dp"
android:layout_marginTop="8dp"
android:text="@string/newCreateButtonCopy" android:text="@string/newCreateButtonCopy"
android:textColor="@color/btnTextColor" /> android:textColor="@color/btnTextColor" />

View File

@ -1,8 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout <LinearLayout android:layout_width="match_parent"
android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
android:background="?attr/primaryBackgroundColor"> android:background="?attr/primaryBackgroundColor">
@ -49,27 +48,30 @@
android:padding="16dp" android:padding="16dp"
android:orientation="vertical"> android:orientation="vertical">
<TextView <com.google.android.material.textfield.TextInputLayout
android:id="@+id/labelNameLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/labelName" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:textSize="16sp" /> app:hintTextColor="?attr/hintColor"
app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/labelName">
<EditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/labelName" android:id="@+id/labelName"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:inputType="textCapSentences|text"
android:labelFor="@+id/labelName"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor"/> android:textSize="16sp" />
</com.google.android.material.textfield.TextInputLayout>
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
@ -98,11 +100,9 @@
<Button <Button
android:id="@+id/createLabelButton" android:id="@+id/createLabelButton"
android:gravity="center" android:layout_width="match_parent"
android:layout_gravity="end"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="60dp" android:layout_height="60dp"
android:layout_marginTop="8dp"
android:text="@string/newCreateButtonCopy" android:text="@string/newCreateButtonCopy"
android:textColor="@color/btnTextColor" /> android:textColor="@color/btnTextColor" />

View File

@ -1,8 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout <LinearLayout android:layout_width="match_parent"
android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
android:background="?attr/primaryBackgroundColor"> android:background="?attr/primaryBackgroundColor">
@ -54,104 +53,111 @@
android:padding="16dp" android:padding="16dp"
android:orientation="vertical"> android:orientation="vertical">
<TextView <com.google.android.material.textfield.TextInputLayout
android:id="@+id/fullNameLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/userFullNameText" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:textSize="16sp" /> app:hintTextColor="?attr/hintColor"
app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/userFullNameText">
<EditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/fullName" android:id="@+id/fullName"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:inputType="textCapSentences|text"
android:labelFor="@+id/fullName"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor"/> android:textSize="16sp" />
<TextView </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/userUserNameLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/userUserName" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:textSize="16sp" app:hintTextColor="?attr/hintColor"
android:layout_marginTop="10dp" /> app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/userUserName">
<EditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/userUserName" android:id="@+id/userUserName"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:inputType="text"
android:labelFor="@+id/userUserName"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor"/> android:textSize="16sp" />
<TextView </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/userEmailLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/userEmail" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:textSize="16sp" app:hintTextColor="?attr/hintColor"
android:layout_marginTop="10dp" /> app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/userEmail">
<EditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/userEmail" android:id="@+id/userEmail"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:inputType="textEmailAddress"
android:labelFor="@+id/userEmail"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor"/> android:textSize="16sp" />
<TextView </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/userPasswordLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/userPassword" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:textSize="16sp" app:hintTextColor="?attr/hintColor"
android:layout_marginTop="10dp"/> app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/userPassword">
<EditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/userPassword" android:id="@+id/userPassword"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:inputType="textPassword"
android:labelFor="@+id/userPassword"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor"/> android:textSize="16sp" />
</com.google.android.material.textfield.TextInputLayout>
<Button <Button
android:id="@+id/createUserButton" android:id="@+id/createUserButton"
android:gravity="center" android:layout_width="match_parent"
android:layout_gravity="end"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="60dp" android:layout_height="60dp"
android:layout_marginTop="8dp"
android:text="@string/newCreateButtonCopy" android:text="@string/newCreateButtonCopy"
android:textColor="@color/btnTextColor" /> android:textColor="@color/btnTextColor" />

View File

@ -102,6 +102,7 @@
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor" android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:gravity="top|start"
android:textSize="16sp" /> android:textSize="16sp" />
</com.google.android.material.textfield.TextInputLayout> </com.google.android.material.textfield.TextInputLayout>
@ -231,11 +232,9 @@
<Button <Button
android:id="@+id/createPr" android:id="@+id/createPr"
android:gravity="center" android:layout_width="match_parent"
android:layout_gravity="end"
android:layout_marginTop="8dp"
android:layout_width="wrap_content"
android:layout_height="60dp" android:layout_height="60dp"
android:layout_marginTop="8dp"
android:text="@string/newCreateButtonCopy" android:text="@string/newCreateButtonCopy"
android:textColor="@color/btnTextColor" /> android:textColor="@color/btnTextColor" />

View File

@ -1,8 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout <LinearLayout android:layout_width="match_parent"
android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
android:background="?attr/primaryBackgroundColor"> android:background="?attr/primaryBackgroundColor">
@ -54,105 +53,105 @@
android:padding="16dp" android:padding="16dp"
android:orientation="vertical"> android:orientation="vertical">
<TextView <com.google.android.material.textfield.TextInputLayout
android:id="@+id/releaseTitleLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/releaseTagNameText" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="?attr/primaryTextColor"
android:textSize="16sp" />
<EditText
android:id="@+id/releaseTagName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:inputType="text"
android:labelFor="@+id/releaseTagName"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor" /> app:hintTextColor="?attr/hintColor"
app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/releaseTitleText">
<TextView <com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/releaseBranchText"
android:textColor="?attr/primaryTextColor"
android:layout_marginTop="10dp"
android:textSize="16sp" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/shape_dropdown"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp">
<Spinner
android:id="@+id/releaseBranch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:spinnerMode="dropdown"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingStart="5dp" />
</RelativeLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/releaseTitleText"
android:textColor="?attr/primaryTextColor"
android:textSize="16sp"
android:layout_marginTop="10dp" />
<EditText
android:id="@+id/releaseTitle" android:id="@+id/releaseTitle"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:inputType="text"
android:labelFor="@+id/releaseTitle"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor" /> android:textSize="16sp" />
<TextView </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/releaseTagNameLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/releaseContentText" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:textSize="16sp" app:hintTextColor="?attr/hintColor"
android:layout_marginTop="10dp" /> app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/releaseTagNameText">
<EditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/releaseTagName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor"
android:textSize="16sp" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/releaseContentLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColorHint="?attr/hintColor"
app:hintTextColor="?attr/hintColor"
app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/releaseContentText">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/releaseContent" android:id="@+id/releaseContent"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="240dp" android:layout_height="140dp"
android:layout_marginTop="10dp"
android:padding="10dp"
android:maxLines="8"
android:minLines="6"
tools:ignore="Autofill"
android:labelFor="@+id/releaseContent"
android:scrollbars="vertical"
android:gravity="top|start"
android:textSize="14sp"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor" android:gravity="top|start"
android:inputType="textCapSentences|textMultiLine" /> android:textSize="16sp" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/releaseBranchLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColorHint="?attr/hintColor"
app:hintTextColor="?attr/hintColor"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:hint="@string/releaseBranchText"
app:endIconTint="?attr/iconsColor"
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu">
<AutoCompleteTextView
android:id="@+id/releaseBranch"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="none"
android:textColor="?attr/inputTextColor"
android:labelFor="@+id/releaseBranch"
android:textSize="16sp" />
</com.google.android.material.textfield.TextInputLayout>
<CheckBox <CheckBox
android:id="@+id/releaseType" android:id="@+id/releaseType"
@ -176,11 +175,9 @@
<Button <Button
android:id="@+id/createNewRelease" android:id="@+id/createNewRelease"
android:gravity="center" android:layout_width="match_parent"
android:layout_gravity="end"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="60dp" android:layout_height="60dp"
android:layout_marginTop="8dp"
android:text="@string/newCreateButtonCopy" android:text="@string/newCreateButtonCopy"
android:textColor="@color/btnTextColor" /> android:textColor="@color/btnTextColor" />

View File

@ -1,8 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout <LinearLayout android:layout_width="match_parent"
android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
android:background="?attr/primaryBackgroundColor"> android:background="?attr/primaryBackgroundColor">
@ -54,72 +53,83 @@
android:padding="16dp" android:padding="16dp"
android:orientation="vertical"> android:orientation="vertical">
<TextView <com.google.android.material.textfield.TextInputLayout
android:id="@+id/teamNameLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/newTeamTitle" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:textSize="16sp" /> app:hintTextColor="?attr/hintColor"
app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/newTeamTitle">
<EditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/teamName" android:id="@+id/teamName"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:inputType="textCapSentences|text"
android:labelFor="@+id/teamName"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor" /> android:textSize="16sp" />
<TextView </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/teamDescLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/newTeamDesc" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:textSize="16sp" app:hintTextColor="?attr/hintColor"
android:layout_marginTop="10dp" /> app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
app:counterEnabled="true"
app:counterMaxLength="255"
app:counterTextColor="?attr/inputTextColor"
android:hint="@string/newTeamDesc">
<EditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/teamDesc" android:id="@+id/teamDesc"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:inputType="textCapSentences|text"
android:labelFor="@+id/teamDesc"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor" /> android:textSize="16sp" />
<TextView </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/teamPermissionLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/newTeamPermission" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:textSize="16sp" app:hintTextColor="?attr/hintColor"
android:layout_marginTop="10dp" /> app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:hint="@string/newTeamPermission">
<TextView <com.google.android.material.textfield.TextInputEditText
android:id="@+id/teamPermission" android:id="@+id/teamPermission"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor" android:maxLines="1"
android:inputType="none" /> android:focusable="false"
android:textSize="16sp" />
</com.google.android.material.textfield.TextInputLayout>
<TextView <TextView
android:id="@+id/teamPermissionDetail" android:id="@+id/teamPermissionDetail"
@ -130,27 +140,30 @@
android:gravity="start" android:gravity="start"
android:visibility="gone" /> android:visibility="gone" />
<TextView <com.google.android.material.textfield.TextInputLayout
android:id="@+id/teamAccessControlsLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/newTeamAccessControls" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:textSize="16sp" app:hintTextColor="?attr/hintColor"
android:layout_marginTop="10dp" /> app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:hint="@string/newTeamAccessControls">
<TextView <com.google.android.material.textfield.TextInputEditText
android:id="@+id/teamAccessControls" android:id="@+id/teamAccessControls"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor" android:maxLines="1"
android:inputType="none" /> android:focusable="false"
android:textSize="16sp" />
</com.google.android.material.textfield.TextInputLayout>
<TextView <TextView
android:id="@+id/teamAccessControlsArray" android:id="@+id/teamAccessControlsArray"
@ -160,11 +173,9 @@
<Button <Button
android:id="@+id/createTeamButton" android:id="@+id/createTeamButton"
android:gravity="center" android:layout_width="match_parent"
android:layout_gravity="end"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="60dp" android:layout_height="60dp"
android:layout_marginTop="8dp"
android:text="@string/newCreateButtonCopy" android:text="@string/newCreateButtonCopy"
android:textColor="@color/btnTextColor" /> android:textColor="@color/btnTextColor" />

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout <LinearLayout android:layout_width="match_parent"
android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
android:background="?attr/primaryBackgroundColor"> android:background="?attr/primaryBackgroundColor">
@ -13,7 +13,6 @@
android:theme="@style/Widget.AppCompat.SearchView"> android:theme="@style/Widget.AppCompat.SearchView">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/toolbar" android:id="@+id/toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -44,7 +43,6 @@
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<ScrollView <ScrollView
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"> android:background="?attr/primaryBackgroundColor">
@ -55,114 +53,114 @@
android:padding="16dp" android:padding="16dp"
android:orientation="vertical"> android:orientation="vertical">
<TextView <com.google.android.material.textfield.TextInputLayout
android:id="@+id/editIssueTitleLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/newIssueTitle" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:textSize="16sp" /> app:hintTextColor="?attr/hintColor"
app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/newIssueTitle">
<EditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/editIssueTitle" android:id="@+id/editIssueTitle"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:labelFor="@+id/editIssueTitle"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor" /> android:textSize="16sp" />
<TextView </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/editIssueDescriptionLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/newIssueDescriptionTitle" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:textSize="16sp" app:hintTextColor="?attr/hintColor"
android:layout_marginTop="10dp"/> app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/newIssueDescriptionTitle">
<com.hendraanggrian.appcompat.widget.SocialAutoCompleteTextView <com.google.android.material.textfield.TextInputEditText
android:id="@+id/editIssueDescription" android:id="@+id/editIssueDescription"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="240dp" android:layout_height="140dp"
android:layout_marginTop="10dp"
android:padding="10dp"
android:completionThreshold="1"
android:background="@drawable/shape_inputs"
android:maxLines="12"
android:minLines="10"
tools:ignore="Autofill"
android:labelFor="@+id/newReplyToIssue"
android:scrollbars="vertical"
android:gravity="top|start"
android:textSize="14sp"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHint="?attr/primaryBackgroundColor" android:textColorHighlight="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:inputType="textCapSentences|textMultiLine" /> android:gravity="top|start"
android:textSize="16sp" />
<TextView </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/editIssueMilestoneSpinnerLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/newIssueDueDateTitle" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:textSize="16sp" app:hintTextColor="?attr/hintColor"
android:visibility="gone" android:layout_marginTop="8dp"
android:layout_marginTop="10dp" /> android:layout_marginBottom="8dp"
android:hint="@string/newIssueMilestoneTitle"
app:endIconTint="?attr/iconsColor"
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu">
<TextView <AutoCompleteTextView
android:id="@+id/editIssueMilestoneSpinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="none"
android:textColor="?attr/inputTextColor"
android:labelFor="@+id/editIssueMilestoneSpinner"
android:textSize="16sp" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/editIssueDueDateLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColorHint="?attr/hintColor"
app:hintTextColor="?attr/hintColor"
app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:visibility="gone"
android:hint="@string/newIssueDueDateTitle">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/editIssueDueDate" android:id="@+id/editIssueDueDate"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor"
android:maxLines="1"
android:focusable="false" android:focusable="false"
android:layout_marginTop="10dp" android:textSize="16sp" />
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:background="@drawable/shape_inputs"
android:textColor="?attr/primaryTextColor"
android:textColorHint="?attr/primaryTextColor"
android:visibility="gone"
android:textColorHighlight="?attr/primaryTextColor"/>
<TextView </com.google.android.material.textfield.TextInputLayout>
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/newIssueMilestoneTitle"
android:textColor="?attr/primaryTextColor"
android:textSize="16sp"
android:layout_marginTop="10dp"/>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/shape_dropdown"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp" >
<Spinner
android:id="@+id/editIssueMilestoneSpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:spinnerMode="dropdown"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingStart="5dp" />
</RelativeLayout>
<Button <Button
android:id="@+id/editIssueButton" android:id="@+id/editIssueButton"
android:gravity="center" android:layout_width="match_parent"
android:layout_gravity="end"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="60dp" android:layout_height="60dp"
android:layout_marginTop="8dp"
android:text="@string/saveButton" android:text="@string/saveButton"
android:textColor="@color/btnTextColor" /> android:textColor="@color/btnTextColor" />

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:background="?attr/primaryBackgroundColor" android:background="?attr/primaryBackgroundColor"
android:orientation="vertical" android:orientation="vertical"
android:gravity="center" android:gravity="center"
@ -12,7 +12,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical" android:orientation="vertical"
android:padding="20dp" android:padding="16dp"
android:fitsSystemWindows="true" > android:fitsSystemWindows="true" >
<ImageView <ImageView
@ -31,8 +31,6 @@
android:text="@string/loginMethodText" android:text="@string/loginMethodText"
android:textColor="?attr/primaryTextColor" android:textColor="?attr/primaryTextColor"
android:textSize="12sp" android:textSize="12sp"
android:paddingStart="5dp"
android:paddingEnd="5dp"
android:layout_marginBottom="10dp" android:layout_marginBottom="10dp"
android:gravity="start" /> android:gravity="start" />
@ -40,16 +38,14 @@
android:id="@+id/loginMethod" android:id="@+id/loginMethod"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:paddingStart="5dp" android:layout_marginTop="8dp"
android:paddingEnd="5dp" android:layout_marginBottom="8dp"
android:layout_margin="10dp"
android:background="@drawable/shape_inputs"
android:orientation="vertical"> android:orientation="vertical">
<RadioButton <RadioButton
android:id="@+id/loginToken" android:id="@+id/loginToken"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="36dp"
android:text="@string/copyToken" android:text="@string/copyToken"
android:checked="true" android:checked="true"
android:textColor="?attr/primaryTextColor"/> android:textColor="?attr/primaryTextColor"/>
@ -57,142 +53,184 @@
<RadioButton <RadioButton
android:id="@+id/loginUsernamePassword" android:id="@+id/loginUsernamePassword"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="36dp"
android:text="@string/loginViaPassword" android:text="@string/loginViaPassword"
android:layout_marginEnd="30dp"
android:textColor="?attr/primaryTextColor"/> android:textColor="?attr/primaryTextColor"/>
</RadioGroup> </RadioGroup>
<RelativeLayout <com.google.android.material.textfield.TextInputLayout
android:layout_width="wrap_content" android:id="@+id/httpsSpinnerLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/shape_dropdown" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:layout_marginStart="10dp" android:textColorHint="?attr/hintColor"
android:layout_marginTop="10dp" app:hintTextColor="?attr/hintColor"
android:layout_marginBottom="10dp" > android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:hint="@string/protocol"
app:endIconTint="?attr/iconsColor"
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu">
<Spinner <AutoCompleteTextView
android:id="@+id/httpsSpinner" android:id="@+id/httpsSpinner"
android:layout_width="120dp" android:layout_width="match_parent"
android:layout_height="44dp" android:layout_height="wrap_content"
android:spinnerMode="dropdown" android:inputType="none"
android:padding="10dp" /> android:textColor="?attr/inputTextColor"
android:labelFor="@+id/httpsSpinner"
android:textSize="16sp" />
</RelativeLayout> </com.google.android.material.textfield.TextInputLayout>
<EditText <com.google.android.material.textfield.TextInputLayout
android:id="@+id/instance_urlLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColorHint="?attr/hintColor"
app:hintTextColor="?attr/hintColor"
app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:startIconDrawable="@drawable/ic_link"
app:startIconTint="?attr/iconsColor"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/instanceUrl">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/instance_url" android:id="@+id/instance_url"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="10dp"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:drawableStart="@drawable/ic_link"
android:drawablePadding="10dp"
android:inputType="textUri"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/hintColor" android:textColorHighlight="?attr/hintColor"
android:hint="@string/instanceUrl" /> android:textColorHint="?attr/hintColor"
android:inputType="textUri"
android:textSize="16sp" />
<EditText </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/login_uidLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColorHint="?attr/hintColor"
app:hintTextColor="?attr/hintColor"
app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:startIconDrawable="@drawable/ic_person"
app:startIconTint="?attr/iconsColor"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/userName">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/login_uid" android:id="@+id/login_uid"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="10dp"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:drawableStart="@drawable/ic_person"
android:drawablePadding="10dp"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/hintColor" android:textColorHighlight="?attr/hintColor"
android:hint="@string/userName" android:textColorHint="?attr/hintColor"
android:inputType="text" android:textSize="16sp" />
android:visibility="gone" />
<EditText </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/login_passwdLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColorHint="?attr/hintColor"
app:hintTextColor="?attr/hintColor"
app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:startIconDrawable="@drawable/ic_lock"
app:startIconTint="?attr/iconsColor"
app:endIconTint="?attr/iconsColor"
app:endIconMode="password_toggle"
android:hint="@string/passWord">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/login_passwd" android:id="@+id/login_passwd"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="10dp"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:drawableStart="@drawable/ic_lock"
android:drawablePadding="10dp"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/hintColor" android:textColorHighlight="?attr/hintColor"
android:hint="@string/passWord" android:textColorHint="?attr/hintColor"
android:inputType="textPassword" android:inputType="textPassword"
android:visibility="gone" /> android:textSize="16sp" />
<EditText </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/otpCodeLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColorHint="?attr/hintColor"
app:hintTextColor="?attr/hintColor"
app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:startIconDrawable="@drawable/ic_otp"
app:startIconTint="?attr/iconsColor"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
app:helperText="@string/otpMessage"
app:helperTextTextColor="?attr/inputTextColor"
app:helperTextEnabled="true"
android:hint="@string/loginOTP">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/otpCode" android:id="@+id/otpCode"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="10dp"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:drawableStart="@drawable/ic_otp"
android:drawablePadding="10dp"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/hintColor" android:textColorHighlight="?attr/hintColor"
android:hint="@string/loginOTP" android:textColorHint="?attr/hintColor"
android:inputType="number" android:inputType="number"
android:visibility="gone" /> android:textSize="16sp" />
<EditText </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/loginTokenCodeLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColorHint="?attr/hintColor"
app:hintTextColor="?attr/hintColor"
app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:startIconDrawable="@drawable/ic_lock"
app:startIconTint="?attr/iconsColor"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/copyToken">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/loginTokenCode" android:id="@+id/loginTokenCode"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_margin="10dp"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:drawableStart="@drawable/ic_lock"
android:drawablePadding="10dp"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/hintColor" android:textColorHighlight="?attr/hintColor"
android:hint="@string/copyToken" android:textColorHint="?attr/hintColor"
android:inputType="text" android:textSize="16sp" />
android:visibility="visible" />
<TextView </com.google.android.material.textfield.TextInputLayout>
android:id="@+id/otpInfo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/otpMessage"
android:textColor="@color/hintColor"
android:textSize="12sp"
android:paddingStart="10dp"
android:paddingEnd="10dp"
android:gravity="end"
android:visibility="gone" />
<Button <Button
android:id="@+id/login_button"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="60dp" android:layout_height="60dp"
android:layout_marginTop="8dp"
android:text="@string/btnLogin" android:text="@string/btnLogin"
android:layout_marginStart="10dp" android:textColor="@color/btnTextColor" />
android:layout_marginEnd="10dp"
android:layout_marginBottom="15dp"
android:layout_marginTop="15dp"
android:textColor="@color/btnTextColor"
android:textSize="16sp"
android:id="@+id/login_button"/>
<TextView <TextView
android:layout_width="match_parent" android:layout_width="match_parent"

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout <LinearLayout android:layout_width="match_parent"
android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
android:background="?attr/primaryBackgroundColor"> android:background="?attr/primaryBackgroundColor">
@ -13,7 +13,6 @@
android:theme="@style/Widget.AppCompat.SearchView"> android:theme="@style/Widget.AppCompat.SearchView">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/toolbar" android:id="@+id/toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -55,7 +54,6 @@
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<ScrollView <ScrollView
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"> android:background="?attr/primaryBackgroundColor">
@ -66,60 +64,83 @@
android:padding="16dp" android:padding="16dp"
android:orientation="vertical"> android:orientation="vertical">
<EditText <com.google.android.material.textfield.TextInputLayout
android:id="@+id/mergeTitleLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColorHint="?attr/hintColor"
app:hintTextColor="?attr/hintColor"
app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
app:counterEnabled="true"
app:counterMaxLength="255"
app:counterTextColor="?attr/inputTextColor"
android:hint="@string/mergePullRequestButtonText">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/mergeTitle" android:id="@+id/mergeTitle"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor" android:textSize="16sp" />
android:inputType="textCapSentences|text" />
<com.hendraanggrian.appcompat.widget.SocialAutoCompleteTextView </com.google.android.material.textfield.TextInputLayout>
android:id="@+id/mergeDescription"
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/mergeDescriptionLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="10dp" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:padding="10dp"
android:completionThreshold="1"
android:background="@drawable/shape_inputs"
android:maxLines="12"
android:minLines="10"
tools:ignore="Autofill"
android:labelFor="@+id/mergeDescription"
android:scrollbars="vertical"
android:gravity="top|start"
android:textSize="14sp"
android:textColor="?attr/inputTextColor"
android:hint="@string/mergeCommentText"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:inputType="textCapSentences|textMultiLine" app:hintTextColor="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor" /> app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/mergeCommentText">
<RelativeLayout <com.google.android.material.textfield.TextInputEditText
android:layout_width="wrap_content" android:id="@+id/mergeDescription"
android:layout_width="match_parent"
android:layout_height="140dp"
android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor"
android:gravity="top|start"
android:textSize="16sp" />
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/mergeSpinnerLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/shape_dropdown" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:layout_marginTop="10dp" android:textColorHint="?attr/hintColor"
android:layout_marginBottom="10dp" > app:hintTextColor="?attr/hintColor"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:hint="@string/mergeStrategy"
app:endIconTint="?attr/iconsColor"
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu">
<Spinner <AutoCompleteTextView
android:id="@+id/mergeSpinner" android:id="@+id/mergeSpinner"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:spinnerMode="dropdown" android:inputType="none"
android:layout_marginTop="5dp" android:textColor="?attr/inputTextColor"
android:layout_marginBottom="5dp" android:labelFor="@+id/mergeSpinner"
android:paddingLeft="5dp" android:textSize="16sp" />
android:paddingRight="5dp"
android:paddingStart="5dp" />
</RelativeLayout> </com.google.android.material.textfield.TextInputLayout>
<CheckBox <CheckBox
android:id="@+id/deleteBranch" android:id="@+id/deleteBranch"
@ -154,11 +175,9 @@
<Button <Button
android:id="@+id/mergeButton" android:id="@+id/mergeButton"
android:gravity="center" android:layout_width="match_parent"
android:layout_gravity="end"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="60dp" android:layout_height="60dp"
android:layout_marginTop="8dp"
android:text="@string/mergePullRequestButtonText" android:text="@string/mergePullRequestButtonText"
android:textColor="@color/btnTextColor" /> android:textColor="@color/btnTextColor" />

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout <LinearLayout android:layout_width="match_parent"
android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
android:background="?attr/primaryBackgroundColor"> android:background="?attr/primaryBackgroundColor">
@ -13,7 +13,6 @@
android:theme="@style/Widget.AppCompat.SearchView"> android:theme="@style/Widget.AppCompat.SearchView">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/toolbar" android:id="@+id/toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -44,7 +43,6 @@
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<ScrollView <ScrollView
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"> android:background="?attr/primaryBackgroundColor">
@ -55,179 +53,148 @@
android:padding="16dp" android:padding="16dp"
android:orientation="vertical"> android:orientation="vertical">
<TextView <com.google.android.material.textfield.TextInputLayout
android:id="@+id/newFileNameLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/newFileNameTintCopy" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:textSize="16sp" /> app:hintTextColor="?attr/hintColor"
app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
app:helperTextEnabled="true"
app:helperText="@string/newFileNameHintMessage"
app:helperTextTextColor="?attr/inputTextColor"
android:hint="@string/newFileNameTintCopy">
<EditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/newFileName" android:id="@+id/newFileName"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:labelFor="@+id/newFileName"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor" android:textSize="16sp" />
android:inputType="textCapSentences|text" />
<TextView </com.google.android.material.textfield.TextInputLayout>
android:id="@+id/fileNameHint"
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/newFileContentLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/newFileNameHintMessage" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="@color/hintColor" android:textColorHint="?attr/hintColor"
android:textSize="12sp" app:hintTextColor="?attr/hintColor"
android:paddingStart="10dp" app:boxStrokeErrorColor="@color/darkRed"
android:paddingEnd="5dp" android:layout_marginTop="8dp"
android:gravity="end" /> android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/newFileContentTintCopy">
<TextView <com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/newFileContentTintCopy"
android:textColor="?attr/primaryTextColor"
android:textSize="16sp"
android:layout_marginTop="10dp" />
<EditText
android:id="@+id/newFileContent" android:id="@+id/newFileContent"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="240dp" android:layout_height="140dp"
android:layout_marginTop="10dp"
android:padding="10dp"
android:maxLines="16"
android:minLines="14"
tools:ignore="Autofill"
android:labelFor="@+id/newFileContent"
android:scrollbars="vertical"
android:gravity="top|start"
android:textSize="14sp"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor" android:gravity="top|start"
android:inputType="textCapSentences|textMultiLine" /> android:textSize="16sp" />
<TextView </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/newFileBranchesSpinnerLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/newFileOldBranches" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:textSize="16sp" app:hintTextColor="?attr/hintColor"
android:layout_marginTop="10dp"/> android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:hint="@string/newFileOldBranches"
app:endIconTint="?attr/iconsColor"
app:helperTextEnabled="true"
app:helperText="@string/newFileCurrentBranchMessage"
app:helperTextTextColor="?attr/inputTextColor"
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu">
<RelativeLayout <AutoCompleteTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/shape_dropdown"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp" >
<Spinner
android:id="@+id/newFileBranchesSpinner" android:id="@+id/newFileBranchesSpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:spinnerMode="dropdown"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingStart="5dp" />
</RelativeLayout>
<TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/newFileCurrentBranchMessage" android:inputType="none"
android:textColor="@color/hintColor" android:textColor="?attr/inputTextColor"
android:textSize="12sp" android:labelFor="@+id/newFileBranchesSpinner"
android:paddingStart="10dp" android:textSize="16sp" />
android:paddingEnd="5dp"
android:gravity="end" />
<TextView </com.google.android.material.textfield.TextInputLayout>
android:id="@+id/branchNameId"
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/newFileBranchNameLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/newFileBranchTintCopy" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:textSize="16sp" app:hintTextColor="?attr/hintColor"
android:layout_marginTop="10dp" /> app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
app:helperTextEnabled="true"
app:helperText="@string/newFileNewBranchMessage"
app:helperTextTextColor="?attr/inputTextColor"
android:hint="@string/newFileBranchTintCopy">
<EditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/newFileBranchName" android:id="@+id/newFileBranchName"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:labelFor="@+id/newFileBranchName"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor" android:textSize="16sp" />
android:inputType="textCapSentences|text" />
<TextView </com.google.android.material.textfield.TextInputLayout>
android:id="@+id/branchNameHintText"
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/newFileCommitMessageLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/newFileNewBranchMessage" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="@color/hintColor" android:textColorHint="?attr/hintColor"
android:textSize="12sp" app:hintTextColor="?attr/hintColor"
android:paddingStart="10dp" app:boxStrokeErrorColor="@color/darkRed"
android:paddingEnd="5dp" android:layout_marginTop="8dp"
android:gravity="end" /> android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
app:counterEnabled="true"
app:counterMaxLength="255"
app:counterTextColor="?attr/inputTextColor"
android:hint="@string/newFileMessageTintCopy">
<TextView <com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/newFileMessageTintCopy"
android:textColor="?attr/primaryTextColor"
android:textSize="16sp"
android:layout_marginTop="10dp" />
<EditText
android:id="@+id/newFileCommitMessage" android:id="@+id/newFileCommitMessage"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:labelFor="@+id/newFileCommitMessage"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor" android:textSize="16sp" />
android:inputType="textCapSentences|text" />
<TextView </com.google.android.material.textfield.TextInputLayout>
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/characters255Limit"
android:textColor="?attr/hintColor"
android:textSize="12sp"
android:paddingStart="10dp"
android:paddingEnd="5dp"
android:gravity="end" />
<Button <Button
android:id="@+id/newFileCreate" android:id="@+id/newFileCreate"
android:gravity="center" android:layout_width="match_parent"
android:layout_gravity="end"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="60dp" android:layout_height="60dp"
android:layout_marginTop="8dp"
android:text="@string/newFileButtonCopy" android:text="@string/newFileButtonCopy"
android:textColor="@color/btnTextColor" /> android:textColor="@color/btnTextColor" />

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout <LinearLayout android:layout_width="match_parent"
android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
android:background="?attr/primaryBackgroundColor"> android:background="?attr/primaryBackgroundColor">
@ -13,7 +13,6 @@
android:theme="@style/Widget.AppCompat.SearchView"> android:theme="@style/Widget.AppCompat.SearchView">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/toolbar" android:id="@+id/toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -44,7 +43,6 @@
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<ScrollView <ScrollView
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"> android:background="?attr/primaryBackgroundColor">
@ -55,94 +53,92 @@
android:padding="16dp" android:padding="16dp"
android:orientation="vertical"> android:orientation="vertical">
<TextView <com.google.android.material.textfield.TextInputLayout
android:id="@+id/milestoneTitleLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/newMilestoneTitle" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:textSize="16sp" /> app:hintTextColor="?attr/hintColor"
app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/newMilestoneTitle">
<EditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/milestoneTitle" android:id="@+id/milestoneTitle"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:labelFor="@+id/milestoneTitle"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHint="?attr/primaryBackgroundColor" android:textColorHighlight="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:inputType="textCapSentences|text" /> android:textSize="16sp" />
<TextView </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/milestoneDescriptionLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/newMilestoneDescription" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:textSize="16sp" app:hintTextColor="?attr/hintColor"
android:layout_marginTop="10dp" /> app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
app:counterEnabled="true"
app:counterMaxLength="255"
app:counterTextColor="?attr/inputTextColor"
android:hint="@string/newMilestoneDescription">
<EditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/milestoneDescription" android:id="@+id/milestoneDescription"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="160dp" android:layout_height="140dp"
android:layout_marginTop="10dp" android:textColor="?attr/inputTextColor"
android:padding="10dp" android:textColorHighlight="?attr/hintColor"
android:maxLines="8" android:textColorHint="?attr/hintColor"
android:minLines="6"
tools:ignore="Autofill"
android:labelFor="@+id/milestoneDescription"
android:scrollbars="vertical"
android:gravity="top|start" android:gravity="top|start"
android:textSize="14sp" android:textSize="16sp" />
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor"
android:textColorHint="?attr/primaryBackgroundColor"
android:textColorHighlight="?attr/primaryTextColor"
android:inputType="textCapSentences|textMultiLine" />
<TextView </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/milestoneDueDateLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/newOrgDescInfo" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:textSize="12sp" app:hintTextColor="?attr/hintColor"
android:gravity="end" /> app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/newMilestoneDueDate">
<TextView <com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/newMilestoneDueDate"
android:textColor="?attr/primaryTextColor"
android:textSize="16sp"
android:layout_marginTop="10dp" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/milestoneDueDate" android:id="@+id/milestoneDueDate"
android:focusable="false" android:layout_width="match_parent"
android:layout_marginTop="10dp" android:layout_height="wrap_content"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:inputType="date"
android:labelFor="@+id/milestoneDueDate"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHint="?attr/primaryBackgroundColor" android:textColorHighlight="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor"/> android:textColorHint="?attr/hintColor"
android:maxLines="1"
android:focusable="false"
android:textSize="16sp" />
</com.google.android.material.textfield.TextInputLayout>
<Button <Button
android:id="@+id/createNewMilestoneButton" android:id="@+id/createNewMilestoneButton"
android:gravity="center" android:layout_width="match_parent"
android:layout_gravity="end"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="60dp" android:layout_height="60dp"
android:layout_marginTop="8dp"
android:text="@string/newCreateButtonCopy" android:text="@string/newCreateButtonCopy"
android:textColor="@color/btnTextColor" /> android:textColor="@color/btnTextColor" />

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout <LinearLayout android:layout_width="match_parent"
android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
android:background="?attr/primaryBackgroundColor"> android:background="?attr/primaryBackgroundColor">
@ -13,7 +13,6 @@
android:theme="@style/Widget.AppCompat.SearchView"> android:theme="@style/Widget.AppCompat.SearchView">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/toolbar" android:id="@+id/toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -44,7 +43,6 @@
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<ScrollView <ScrollView
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"> android:background="?attr/primaryBackgroundColor">
@ -55,70 +53,65 @@
android:padding="16dp" android:padding="16dp"
android:orientation="vertical"> android:orientation="vertical">
<TextView <com.google.android.material.textfield.TextInputLayout
android:id="@+id/newOrganizationNameLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/newOrgTintCopy" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:textSize="16sp" /> app:hintTextColor="?attr/hintColor"
app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/newOrgTintCopy">
<EditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/newOrganizationName" android:id="@+id/newOrganizationName"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:labelFor="@+id/newOrganizationName"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHint="?attr/primaryBackgroundColor" android:textColorHighlight="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:inputType="textCapSentences|text" /> android:textSize="16sp" />
<TextView </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/newOrganizationDescriptionLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/newOrgDescTintCopy" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:textSize="16sp" app:hintTextColor="?attr/hintColor"
android:layout_marginTop="10dp" /> app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
app:counterEnabled="true"
app:counterMaxLength="255"
app:counterTextColor="?attr/inputTextColor"
android:hint="@string/newOrgDescTintCopy">
<EditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/newOrganizationDescription" android:id="@+id/newOrganizationDescription"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="160dp" android:layout_height="140dp"
android:layout_marginTop="10dp"
android:padding="10dp"
android:maxLines="8"
android:minLines="6"
tools:ignore="Autofill"
android:labelFor="@+id/newOrganizationDescription"
android:scrollbars="vertical"
android:gravity="top|start"
android:textSize="14sp"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHint="?attr/primaryBackgroundColor" android:textColorHighlight="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:inputType="textCapSentences|textMultiLine" /> android:gravity="top|start"
android:textSize="16sp" />
<TextView </com.google.android.material.textfield.TextInputLayout>
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/newOrgDescInfo"
android:textColor="?attr/primaryTextColor"
android:textSize="12sp"
android:gravity="end" />
<Button <Button
android:id="@+id/createNewOrganizationButton" android:id="@+id/createNewOrganizationButton"
android:gravity="center" android:layout_width="match_parent"
android:layout_gravity="end"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="60dp" android:layout_height="60dp"
android:layout_marginTop="8dp"
android:text="@string/newCreateButtonCopy" android:text="@string/newCreateButtonCopy"
android:textColor="@color/btnTextColor" /> android:textColor="@color/btnTextColor" />

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout <LinearLayout android:layout_width="match_parent"
android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
android:background="?attr/primaryBackgroundColor"> android:background="?attr/primaryBackgroundColor">
@ -13,7 +13,6 @@
android:theme="@style/Widget.AppCompat.SearchView"> android:theme="@style/Widget.AppCompat.SearchView">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/toolbar" android:id="@+id/toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize" android:layout_height="?attr/actionBarSize"
@ -44,7 +43,6 @@
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<ScrollView <ScrollView
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"> android:background="?attr/primaryBackgroundColor">
@ -55,89 +53,83 @@
android:padding="16dp" android:padding="16dp"
android:orientation="vertical"> android:orientation="vertical">
<TextView <com.google.android.material.textfield.TextInputLayout
android:id="@+id/ownerSpinnerLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/newRepoOwner" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:textSize="16sp" /> app:hintTextColor="?attr/hintColor"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:hint="@string/newRepoOwner"
app:endIconTint="?attr/iconsColor"
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.ExposedDropdownMenu">
<RelativeLayout <AutoCompleteTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/shape_dropdown"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp" >
<Spinner
android:id="@+id/ownerSpinner" android:id="@+id/ownerSpinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:spinnerMode="dropdown"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:paddingStart="5dp" />
</RelativeLayout>
<TextView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/newRepoTintCopy" android:inputType="none"
android:textColor="?attr/primaryTextColor" android:textColor="?attr/inputTextColor"
android:labelFor="@+id/ownerSpinner"
android:textSize="16sp" /> android:textSize="16sp" />
<EditText </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/newRepoNameLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColorHint="?attr/hintColor"
app:hintTextColor="?attr/hintColor"
app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/newRepoTintCopy">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/newRepoName" android:id="@+id/newRepoName"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:padding="10dp"
android:textSize="14sp"
tools:ignore="Autofill"
android:labelFor="@+id/newRepoName"
android:background="@drawable/shape_inputs"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor" android:textSize="16sp" />
android:inputType="textCapSentences|text" />
<TextView </com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/newRepoDescriptionLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="@string/newRepoDescTintCopy" app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColor="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:textSize="16sp" app:hintTextColor="?attr/hintColor"
android:layout_marginTop="10dp" /> app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
app:counterEnabled="true"
app:counterMaxLength="255"
app:counterTextColor="?attr/inputTextColor"
android:hint="@string/newRepoDescTintCopy">
<EditText <com.google.android.material.textfield.TextInputEditText
android:id="@+id/newRepoDescription" android:id="@+id/newRepoDescription"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="160dp" android:layout_height="140dp"
android:layout_marginTop="10dp"
android:padding="10dp"
android:background="@drawable/shape_inputs"
android:maxLines="8"
android:minLines="6"
tools:ignore="Autofill"
android:labelFor="@+id/newRepoDescription"
android:scrollbars="vertical"
android:gravity="top|start"
android:textSize="14sp"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHighlight="?attr/hintColor"
android:textColorHint="?attr/hintColor" android:textColorHint="?attr/hintColor"
android:inputType="textCapSentences|textMultiLine" android:gravity="top|start"
android:textColorHighlight="?attr/primaryTextColor"/> android:textSize="16sp" />
<TextView </com.google.android.material.textfield.TextInputLayout>
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/newRepoDescInfo"
android:textColor="?attr/primaryTextColor"
android:textSize="12sp"
android:gravity="end" />
<CheckBox <CheckBox
android:id="@+id/newRepoPrivate" android:id="@+id/newRepoPrivate"
@ -151,11 +143,9 @@
<Button <Button
android:id="@+id/createNewRepoButton" android:id="@+id/createNewRepoButton"
android:gravity="center" android:layout_width="match_parent"
android:layout_gravity="end"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="60dp" android:layout_height="60dp"
android:layout_marginTop="8dp"
android:text="@string/newCreateButtonCopy" android:text="@string/newCreateButtonCopy"
android:textColor="@color/btnTextColor" /> android:textColor="@color/btnTextColor" />

View File

@ -77,11 +77,9 @@
<Button <Button
android:id="@+id/addEmailButton" android:id="@+id/addEmailButton"
android:gravity="center" android:layout_width="match_parent"
android:layout_gravity="end"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="60dp" android:layout_height="60dp"
android:layout_marginTop="8dp"
android:text="@string/profileEmailButton" android:text="@string/profileEmailButton"
android:textColor="@color/btnTextColor" /> android:textColor="@color/btnTextColor" />

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout <LinearLayout android:layout_width="match_parent"
android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
android:background="?attr/primaryBackgroundColor"> android:background="?attr/primaryBackgroundColor">
@ -13,7 +13,6 @@
android:theme="@style/Widget.AppCompat.SearchView"> android:theme="@style/Widget.AppCompat.SearchView">
<com.google.android.material.appbar.MaterialToolbar <com.google.android.material.appbar.MaterialToolbar
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/toolbar" android:id="@+id/toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
@ -55,7 +54,6 @@
</com.google.android.material.appbar.AppBarLayout> </com.google.android.material.appbar.AppBarLayout>
<ScrollView <ScrollView
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="?attr/primaryBackgroundColor"> android:background="?attr/primaryBackgroundColor">
@ -66,24 +64,31 @@
android:padding="16dp" android:padding="16dp"
android:orientation="vertical"> android:orientation="vertical">
<com.hendraanggrian.appcompat.widget.SocialAutoCompleteTextView <com.google.android.material.textfield.TextInputLayout
android:id="@+id/addCommentLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:boxBackgroundColor="?attr/inputBackgroundColor"
android:textColorHint="?attr/hintColor"
app:hintTextColor="?attr/hintColor"
app:boxStrokeErrorColor="@color/darkRed"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
app:endIconMode="clear_text"
app:endIconTint="?attr/iconsColor"
android:hint="@string/commentButtonText">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/addComment" android:id="@+id/addComment"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="240dp" android:layout_height="140dp"
android:padding="10dp"
android:completionThreshold="1"
android:background="@drawable/shape_inputs"
android:maxLines="12"
android:minLines="10"
tools:ignore="Autofill"
android:labelFor="@+id/newReplyToIssue"
android:scrollbars="vertical"
android:gravity="top|start"
android:textSize="14sp"
android:textColor="?attr/inputTextColor" android:textColor="?attr/inputTextColor"
android:textColorHint="?attr/primaryBackgroundColor" android:textColorHighlight="?attr/hintColor"
android:textColorHighlight="?attr/primaryTextColor" android:textColorHint="?attr/hintColor"
android:inputType="textCapSentences|textMultiLine" /> android:gravity="top|start"
android:textSize="16sp" />
</com.google.android.material.textfield.TextInputLayout>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -97,11 +102,9 @@
<Button <Button
android:id="@+id/replyButton" android:id="@+id/replyButton"
android:gravity="center" android:layout_width="match_parent"
android:layout_gravity="end"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="60dp" android:layout_height="60dp"
android:layout_marginTop="8dp"
android:text="@string/commentButtonText" android:text="@string/commentButtonText"
android:textColor="@color/btnTextColor" /> android:textColor="@color/btnTextColor" />

View File

@ -36,6 +36,7 @@
<item name="android:actionOverflowButtonStyle">@style/customOverflowButtonStyle</item> <item name="android:actionOverflowButtonStyle">@style/customOverflowButtonStyle</item>
<item name="actionOverflowMenuStyle">@style/customOverflowMenuStyle</item> <item name="actionOverflowMenuStyle">@style/customOverflowMenuStyle</item>
<item name="colorSurface">@color/lightThemeInputBackground</item> <item name="colorSurface">@color/lightThemeInputBackground</item>
<item name="shapeAppearanceSmallComponent">@style/inputsMaterialComponentCorner</item>
</style> </style>
<!-- Light theme --> <!-- Light theme -->
@ -75,6 +76,7 @@
<item name="android:actionOverflowButtonStyle">@style/customOverflowButtonStyle</item> <item name="android:actionOverflowButtonStyle">@style/customOverflowButtonStyle</item>
<item name="actionOverflowMenuStyle">@style/customOverflowMenuStyle</item> <item name="actionOverflowMenuStyle">@style/customOverflowMenuStyle</item>
<item name="colorSurface">@color/retroThemeInputBackground</item> <item name="colorSurface">@color/retroThemeInputBackground</item>
<item name="shapeAppearanceSmallComponent">@style/inputsMaterialComponentCorner</item>
</style> </style>
<!-- Retro theme --> <!-- Retro theme -->

View File

@ -112,6 +112,7 @@
<string name="repoCreated">Repository created successfully</string> <string name="repoCreated">Repository created successfully</string>
<string name="repoCreatedError">Something went wrong, please try again</string> <string name="repoCreatedError">Something went wrong, please try again</string>
<string name="repoExistsError">Repository of this name already exists under selected Owner</string> <string name="repoExistsError">Repository of this name already exists under selected Owner</string>
<string name="repoOwnerError">Select owner for the repository</string>
<string name="orgNameErrorEmpty">Organization name is empty</string> <string name="orgNameErrorEmpty">Organization name is empty</string>
<string name="orgNameErrorInvalid">Organization name is not valid, [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string> <string name="orgNameErrorInvalid">Organization name is not valid, [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
@ -291,6 +292,7 @@
<string name="labelDeleteErrorText">Something went wrong, please try again</string> <string name="labelDeleteErrorText">Something went wrong, please try again</string>
<string name="noDataBranchesTab">No branches found</string> <string name="noDataBranchesTab">No branches found</string>
<string name="selectBranchError">Select a branch for release</string>
<string name="alertDialogTokenRevokedTitle">Authorization Error</string> <string name="alertDialogTokenRevokedTitle">Authorization Error</string>
<string name="alertDialogTokenRevokedMessage">It seems that the Access Token is revoked OR your are not allowed to see these contents.\n\nIn case of revoked Token, please logout and login again</string> <string name="alertDialogTokenRevokedMessage">It seems that the Access Token is revoked OR your are not allowed to see these contents.\n\nIn case of revoked Token, please logout and login again</string>
@ -567,6 +569,8 @@
<string name="mergeOptionRebase">Rebase and Merge</string> <string name="mergeOptionRebase">Rebase and Merge</string>
<string name="mergeOptionRebaseCommit">Rebase and Merge (&#45;&#45;no-ff)</string> <string name="mergeOptionRebaseCommit">Rebase and Merge (&#45;&#45;no-ff)</string>
<string name="mergeOptionSquash">Squash and Merge</string> <string name="mergeOptionSquash">Squash and Merge</string>
<string name="mergeStrategy">Merge Strategy</string>
<string name="selectMergeStrategy">Select merge strategy</string>
<string name="downloadFile">Download This File</string> <string name="downloadFile">Download This File</string>
<string name="waitLoadingDownloadFile">Please wait for the file to load to memory</string> <string name="waitLoadingDownloadFile">Please wait for the file to load to memory</string>

View File

@ -36,6 +36,7 @@
<item name="android:actionOverflowButtonStyle">@style/customOverflowButtonStyle</item> <item name="android:actionOverflowButtonStyle">@style/customOverflowButtonStyle</item>
<item name="actionOverflowMenuStyle">@style/customOverflowMenuStyle</item> <item name="actionOverflowMenuStyle">@style/customOverflowMenuStyle</item>
<item name="colorSurface">@color/inputBackground</item> <item name="colorSurface">@color/inputBackground</item>
<item name="shapeAppearanceSmallComponent">@style/inputsMaterialComponentCorner</item>
</style> </style>
<!-- Dark theme - default --> <!-- Dark theme - default -->
@ -74,6 +75,7 @@
<item name="android:actionOverflowButtonStyle">@style/customOverflowButtonStyle</item> <item name="android:actionOverflowButtonStyle">@style/customOverflowButtonStyle</item>
<item name="actionOverflowMenuStyle">@style/customOverflowMenuStyle</item> <item name="actionOverflowMenuStyle">@style/customOverflowMenuStyle</item>
<item name="colorSurface">@color/lightThemeInputBackground</item> <item name="colorSurface">@color/lightThemeInputBackground</item>
<item name="shapeAppearanceSmallComponent">@style/inputsMaterialComponentCorner</item>
</style> </style>
<!-- Light theme --> <!-- Light theme -->
@ -112,9 +114,15 @@
<item name="android:actionOverflowButtonStyle">@style/customOverflowButtonStyle</item> <item name="android:actionOverflowButtonStyle">@style/customOverflowButtonStyle</item>
<item name="actionOverflowMenuStyle">@style/customOverflowMenuStyle</item> <item name="actionOverflowMenuStyle">@style/customOverflowMenuStyle</item>
<item name="colorSurface">@color/retroThemeInputBackground</item> <item name="colorSurface">@color/retroThemeInputBackground</item>
<item name="shapeAppearanceSmallComponent">@style/inputsMaterialComponentCorner</item>
</style> </style>
<!-- Retro theme --> <!-- Retro theme -->
<style name="inputsMaterialComponentCorner" parent="ShapeAppearance.MaterialComponents.SmallComponent">
<item name="cornerFamily">rounded</item>
<item name="cornerSize">6dp</item>
</style>
<style name="customOverflowButtonStyle"> <style name="customOverflowButtonStyle">
<item name="android:src">@drawable/ic_dotted_menu</item> <item name="android:src">@drawable/ic_dotted_menu</item>
<item name="android:paddingStart">12dp</item> <item name="android:paddingStart">12dp</item>