Skip to content

Commit cf3507a

Browse files
committed
Merge branch 'fix_57' into dev
2 parents 1744819 + 5fddf25 commit cf3507a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+351
-117
lines changed

app/src/main/java/vocabletrainer/heinecke/aron/vocabletrainer/activity/EditorActivity.java

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package vocabletrainer.heinecke.aron.vocabletrainer.activity;
22

3+
import android.content.Context;
34
import android.content.Intent;
45
import android.content.SharedPreferences;
56
import android.os.Bundle;
@@ -13,6 +14,7 @@
1314
import android.util.Log;
1415
import android.view.Menu;
1516
import android.view.MenuItem;
17+
import android.view.inputmethod.InputMethodManager;
1618
import android.widget.ListView;
1719
import android.widget.Toast;
1820

@@ -238,12 +240,18 @@ public boolean onOptionsItemSelected(MenuItem item) {
238240
private void saveEdit() {
239241
ArrayList<VEntry> lst = new ArrayList<>(1);
240242
lst.add(editorEntry);
241-
242-
if (!editorEntry.isExisting()) {
243+
boolean isExisting = editorEntry.isExisting();
244+
if (!isExisting) {
243245
adapter.addEntryUnrendered(editorEntry);
244246
}
245247
db.upsertEntries(lst);
246248
adapter.notifyDataSetChanged();
249+
if(!isExisting) {
250+
addEntry();
251+
} else {
252+
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
253+
inputMethodManager.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
254+
}
247255
}
248256

249257
/**
@@ -266,7 +274,7 @@ private void initListView() {
266274

267275
listView.setAdapter(adapter);
268276

269-
listView.setOnItemClickListener((parent, view, pos, id) -> showEntryEditDialog((VEntry) adapter.getItem(pos), pos));
277+
listView.setOnItemClickListener((parent, view, pos, id) -> showEntryEditDialog((VEntry) adapter.getItem(pos), pos,false));
270278

271279
listView.setOnItemLongClickListener((arg0, arg1, pos, id) -> {
272280
showEntryDeleteDialog((VEntry) adapter.getItem(pos), pos);
@@ -291,7 +299,7 @@ public void addEntry() {
291299
private void showEntryDeleteDialog(final VEntry entry, final int position) {
292300
if (entry.getId() == ID_RESERVED_SKIP)
293301
return;
294-
AlertDialog.Builder delDiag = new AlertDialog.Builder(this);
302+
AlertDialog.Builder delDiag = new AlertDialog.Builder(this,R.style.CustomDialog);
295303

296304
delDiag.setTitle(R.string.Editor_Diag_delete_Title);
297305
delDiag.setMessage(String.format(getString(R.string.Editor_Diag_delete_MSG_part) + "\n %s %s %s", entry.getAString(), entry.getBString(), entry.getTip()));
@@ -339,7 +347,7 @@ public void onDismissed(Snackbar transientBottomBar, int event) {
339347
* @param entry
340348
*/
341349
private void showEntryEditDialog(final VEntry entry) {
342-
showEntryEditDialog(entry,MIN_ID_TRESHOLD-1);
350+
showEntryEditDialog(entry,MIN_ID_TRESHOLD-1, true);
343351
}
344352

345353
/**
@@ -348,12 +356,12 @@ private void showEntryEditDialog(final VEntry entry) {
348356
* @param entry VEntry to edit/create
349357
* @param position edit position in list, if existing
350358
*/
351-
private synchronized void showEntryEditDialog(final VEntry entry, final int position) {
359+
private synchronized void showEntryEditDialog(final VEntry entry, final int position, final boolean forceDialog) {
352360
if (entry.getId() == ID_RESERVED_SKIP) {
353361
showTableInfoDialog();
354362
return;
355363
}
356-
if(editorDialog != null && editorDialog.isAdded()) {
364+
if(!forceDialog && editorDialog != null && editorDialog.isAdded()) {
357365
return;
358366
}
359367

app/src/main/java/vocabletrainer/heinecke/aron/vocabletrainer/activity/FileActivity.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package vocabletrainer.heinecke.aron.vocabletrainer.activity;
22

33
import android.app.Activity;
4+
45
import androidx.lifecycle.ViewModelProviders;
6+
57
import android.content.Intent;
68
import android.content.SharedPreferences;
79
import android.graphics.Color;
810
import android.graphics.PorterDuff;
911
import android.os.Bundle;
1012
import androidx.annotation.NonNull;
13+
1114
import com.google.android.material.snackbar.Snackbar;
1215
import androidx.appcompat.app.ActionBar;
1316
import androidx.appcompat.app.AlertDialog;
@@ -317,8 +320,7 @@ public void onOkPressed(View view) {
317320
.show();
318321
Log.d(TAG,"selection is directory");
319322
} else if (selectedFile.exists()) {
320-
final AlertDialog.Builder alert = new AlertDialog.Builder(this);
321-
323+
final AlertDialog.Builder alert = new AlertDialog.Builder(this,R.style.CustomDialog);
322324
alert.setTitle(R.string.File_Diag_exists_Title);
323325
alert.setMessage(getString(R.string.File_Diag_MSG_part).replace("%f", selectedFile.getName()));
324326

app/src/main/java/vocabletrainer/heinecke/aron/vocabletrainer/activity/MainActivity.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package vocabletrainer.heinecke.aron.vocabletrainer.activity;
22

33
import android.app.Activity;
4+
import android.content.DialogInterface;
45
import android.content.Intent;
56
import android.content.SharedPreferences;
67
import android.os.Bundle;
@@ -9,6 +10,8 @@
910

1011
import androidx.appcompat.app.AlertDialog;
1112
import androidx.appcompat.app.AppCompatActivity;
13+
import androidx.core.content.ContextCompat;
14+
1215
import vocabletrainer.heinecke.aron.vocabletrainer.R;
1316
import vocabletrainer.heinecke.aron.vocabletrainer.dialog.SurveyDialog;
1417
import vocabletrainer.heinecke.aron.vocabletrainer.lib.Database;
@@ -38,7 +41,7 @@ protected void onCreate(Bundle savedInstanceState) {
3841
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
3942
showedDialog = settings.getBoolean(P_KEY_ALPHA_DIALOG, false);
4043
if (!showedDialog) {
41-
final AlertDialog.Builder betaWarnDiag = new AlertDialog.Builder(this);
44+
final AlertDialog.Builder betaWarnDiag = new AlertDialog.Builder(this,R.style.CustomDialog);
4245

4346
betaWarnDiag.setTitle(R.string.Beta_Warning_Diag_Title);
4447
betaWarnDiag.setMessage(R.string.Beta_Warning_Diag_Msg);
@@ -71,6 +74,7 @@ protected void onCreate(Bundle savedInstanceState) {
7174

7275
@Override
7376
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
77+
super.onActivityResult(requestCode, resultCode, data);
7478
if (resultCode == Activity.RESULT_OK) {
7579
switch (requestCode) {
7680
case REQUEST_PERM_EXPORT: {

app/src/main/java/vocabletrainer/heinecke/aron/vocabletrainer/activity/TrainerActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ public void showResultDialog(){
152152
return null;
153153
};
154154
TrainerResultDialog resultDialog = TrainerResultDialog.newInstance(trainer,callable);
155-
resultDialog.show(getFragmentManager(),TAG);
155+
resultDialog.show(getSupportFragmentManager(),TAG);
156156
}
157157
}
158158

app/src/main/java/vocabletrainer/heinecke/aron/vocabletrainer/dialog/ImportLogDialog.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,11 @@ public static ImportLogDialog newInstance(final ImportViewModel.LogData log){
3030
return dialog;
3131
}
3232

33-
@Override
34-
public void onCreate(@Nullable Bundle savedInstanceState) {
35-
super.onCreate(savedInstanceState);
36-
setStyle(DialogFragment.STYLE_NORMAL, R.style.CustomDialog);
37-
}
38-
3933
@NonNull
4034
@Override
4135
public Dialog onCreateDialog(Bundle savedInstanceState) {
4236

43-
AlertDialog.Builder alertDialog = new AlertDialog.Builder(getActivity());
37+
AlertDialog.Builder alertDialog = new AlertDialog.Builder(requireActivity(),R.style.CustomDialog);
4438
alertDialog.setTitle(getArguments().getBoolean(PREVIEW) ?
4539
R.string.Import_Preview_Log_Title : R.string.Import_Finished_Title);
4640
alertDialog.setMessage(getArguments().getString(LOG));

app/src/main/java/vocabletrainer/heinecke/aron/vocabletrainer/dialog/ItemPickerDialog.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,12 +38,6 @@ public void setItemPickerHandler(ItemPickerHandler handler){
3838
this.handler = handler;
3939
}
4040

41-
@Override
42-
public void onCreate(@Nullable Bundle savedInstanceState) {
43-
super.onCreate(savedInstanceState);
44-
setStyle(DialogFragment.STYLE_NORMAL, R.style.CustomDialog);
45-
}
46-
4741
/**
4842
* Creates a new instance
4943
*/
@@ -73,7 +67,7 @@ public void overrideEntry(int id, String value){
7367
public Dialog onCreateDialog(Bundle savedInstanceState) {
7468
int itemArray = getArguments().getInt(P_ITEMS);
7569

76-
AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity());
70+
AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity(),R.style.CustomDialog);
7771
dialog.setTitle(getArguments().getInt(P_TITLE));
7872
String[] values = getResources().getStringArray(itemArray);
7973
if(overrides != null) {

app/src/main/java/vocabletrainer/heinecke/aron/vocabletrainer/dialog/ProgressDialog.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package vocabletrainer.heinecke.aron.vocabletrainer.dialog;
22

33
import android.annotation.SuppressLint;
4+
5+
import androidx.appcompat.app.AppCompatDelegate;
46
import androidx.lifecycle.LiveData;
57
import androidx.lifecycle.MutableLiveData;
68
import android.os.Bundle;
@@ -38,12 +40,6 @@ public class ProgressDialog extends DialogFragment {
3840
private int max = 0;
3941
private @StringRes int title = R.string.Placeholder;
4042

41-
@Override
42-
public void onCreate(@Nullable Bundle savedInstanceState) {
43-
super.onCreate(savedInstanceState);
44-
setStyle(DialogFragment.STYLE_NORMAL, R.style.CustomDialog);
45-
}
46-
4743
@Override
4844
public void onSaveInstanceState(Bundle outState) {
4945
super.onSaveInstanceState(outState);
@@ -131,7 +127,8 @@ public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup c
131127
indeterminateMode = savedInstanceState.getBoolean(P_KEY_MODE);
132128
}
133129
View view = View.inflate(getContext(),R.layout.dialog_progress, null);
134-
130+
// hack to get daynight theme working
131+
view.getContext().getTheme().applyStyle(R.style.CustomDialog, true);
135132
progressBar = view.findViewById(R.id.dialog_progressbar);
136133
messageView = view.findViewById(R.id.dialog_message);
137134
titleView = view.findViewById(R.id.dialog_title);

app/src/main/java/vocabletrainer/heinecke/aron/vocabletrainer/dialog/SurveyDialog.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import androidx.annotation.NonNull;
1717
import androidx.annotation.Nullable;
18+
import androidx.core.content.ContextCompat;
1819
import androidx.fragment.app.DialogFragment;
1920
import androidx.lifecycle.ViewModelProviders;
2021
import vocabletrainer.heinecke.aron.vocabletrainer.R;
@@ -40,7 +41,6 @@ public class SurveyDialog extends DialogFragment {
4041
@Override
4142
public void onCreate(@Nullable Bundle savedInstanceState) {
4243
super.onCreate(savedInstanceState);
43-
setStyle(DialogFragment.STYLE_NORMAL, R.style.CustomDialog);
4444
surveyViewModel = ViewModelProviders.of(getActivity()).get(SurveyViewModel.class);
4545

4646
surveyViewModel.getErrorLiveData().observe(this,err -> {
@@ -96,7 +96,8 @@ public static SurveyDialog newInstance(){
9696
@Override
9797
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
9898
View view = View.inflate(getContext(),R.layout.dialog_survey, null);
99-
99+
/*int color = ContextCompat.getColor(requireContext(), R.color.background);
100+
view.setBackgroundColor(color);*/
100101
progressBar = view.findViewById(R.id.dialog_progressbar);
101102
progressBar.setIndeterminate(true);
102103
progressBar.setVisibility(View.GONE);

app/src/main/java/vocabletrainer/heinecke/aron/vocabletrainer/dialog/TrainerResultDialog.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package vocabletrainer.heinecke.aron.vocabletrainer.dialog;
22

33
import android.app.Dialog;
4-
import android.app.DialogFragment;
4+
import androidx.fragment.app.DialogFragment;
55
import android.content.DialogInterface;
66
import android.os.Bundle;
77
import androidx.annotation.Nullable;
@@ -60,7 +60,7 @@ private void setTrainer(Trainer trainer){
6060
@Override
6161
public Dialog onCreateDialog(Bundle savedInstanceState) {
6262

63-
AlertDialog.Builder alertDialog = new AlertDialog.Builder(getActivity());
63+
AlertDialog.Builder alertDialog = new AlertDialog.Builder(getActivity(),R.style.CustomDialog);
6464
alertDialog.setTitle(R.string.Trainer_Diag_finished_Title);
6565
alertDialog.setMessage(R.string.Trainer_Diag_finished_MSG);
6666

app/src/main/java/vocabletrainer/heinecke/aron/vocabletrainer/dialog/VEntryEditorDialog.java

Lines changed: 40 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,31 @@
11
package vocabletrainer.heinecke.aron.vocabletrainer.dialog;
22

33
import android.app.Dialog;
4+
import android.content.Context;
45
import android.content.DialogInterface;
56
import android.os.Bundle;
6-
import androidx.annotation.NonNull;
7-
import androidx.annotation.Nullable;
8-
import com.google.android.material.textfield.TextInputEditText;
9-
import com.google.android.material.textfield.TextInputLayout;
10-
import androidx.fragment.app.DialogFragment;
11-
import androidx.appcompat.app.AlertDialog;
127
import android.util.Log;
13-
import android.view.KeyEvent;
148
import android.view.View;
159
import android.view.ViewGroup;
10+
import android.view.WindowManager;
1611
import android.view.inputmethod.EditorInfo;
12+
import android.view.inputmethod.InputMethodManager;
13+
import android.widget.EditText;
1714
import android.widget.ImageButton;
1815
import android.widget.LinearLayout;
1916
import android.widget.RelativeLayout;
20-
import android.widget.TextView;
17+
18+
import androidx.annotation.NonNull;
19+
import androidx.annotation.Nullable;
20+
import androidx.appcompat.app.AlertDialog;
21+
import androidx.fragment.app.DialogFragment;
22+
23+
import com.google.android.material.textfield.TextInputEditText;
24+
import com.google.android.material.textfield.TextInputLayout;
2125

2226
import java.util.ArrayList;
2327
import java.util.List;
28+
import java.util.Objects;
2429

2530
import vocabletrainer.heinecke.aron.vocabletrainer.R;
2631
import vocabletrainer.heinecke.aron.vocabletrainer.lib.Function;
@@ -40,6 +45,7 @@ public class VEntryEditorDialog extends DialogFragment {
4045
private final static String KEY_INPUT_B_COUNT = "inputBCount";
4146
private final static String KEY_INPUT_HINT = "inputH";
4247
private final static String KEY_INPUT_ADDITION = "inputAd";
48+
private EditText focusableEditText = null;
4349
private Function<Void,VEntry> okAction;
4450
private Function<Void,VEntry> cancelAction;
4551
private VEntry entry;
@@ -74,9 +80,22 @@ public void setCancelAction(Function<Void,VEntry> cancelAction) {
7480
this.cancelAction = cancelAction;
7581
}
7682

83+
@Override
84+
public void onResume() {
85+
super.onResume();
86+
if(focusableEditText != null) {
87+
focusableEditText.requestFocus();
88+
InputMethodManager imm = (InputMethodManager) requireActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
89+
imm.showSoftInput(focusableEditText, InputMethodManager.SHOW_FORCED);
90+
InputMethodManager inputMethodManager = (InputMethodManager) requireActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
91+
inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
92+
}
93+
}
94+
7795
@Override
7896
public void onCreate(@Nullable Bundle savedInstanceState) {
7997
super.onCreate(savedInstanceState);
98+
// we have to override this one, because we're inflating + using the builder, apparently
8099
setStyle(DialogFragment.STYLE_NORMAL, R.style.CustomDialog);
81100
}
82101

@@ -99,9 +118,12 @@ public void onSaveInstanceState(Bundle outState) {
99118
@NonNull
100119
@Override
101120
public Dialog onCreateDialog(Bundle savedInstanceState) {
102-
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
121+
AlertDialog.Builder builder = new AlertDialog.Builder(requireActivity(),R.style.CustomDialog);
103122

104123
final View view = View.inflate(getActivity(), R.layout.dialog_entry, null);
124+
// and we have to use this one, together with onCreate, because of the inflation here
125+
// to override dialog buttons + inflated view
126+
view.getContext().getTheme().applyStyle(R.style.CustomDialog, true);
105127
builder.setTitle(R.string.Editor_Diag_edit_Title);
106128
builder.setView(view);
107129

@@ -150,6 +172,7 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
150172
okAction();
151173
});
152174
builder.setNegativeButton(R.string.Editor_Diag_edit_btn_CANCEL, (dialog, which) -> callCancelAction());
175+
153176
return builder.create();
154177
}
155178

@@ -263,16 +286,21 @@ public void onClick(View v) {
263286
private View generateMeaning(final String meaning, final String hint,int image, String description, View.OnClickListener listener,
264287
boolean focus){
265288
final RelativeLayout container = (RelativeLayout) View.inflate(getActivity(),R.layout.editor_meaning,null);
266-
267-
container.setTag(tagCounter);
289+
container.getContext().getTheme().applyStyle(R.style.CustomDialog, true);
268290
tagCounter++;
269291
final TextInputLayout layout = container.findViewById(R.id.wrapper_meaning);
270292
final TextInputEditText text = container.findViewById(R.id.meaning);
271293
ImageButton btn = container.findViewById(R.id.btnMeaning);
272294
text.setSingleLine();
273295

274-
if(focus)
296+
if(focus) {
297+
Log.d(TAG,"requesting focus");
275298
layout.requestFocus();
299+
InputMethodManager imm = (InputMethodManager) requireActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
300+
imm.showSoftInput(text, InputMethodManager.SHOW_FORCED);
301+
InputMethodManager inputMethodManager = (InputMethodManager) requireActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
302+
inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
303+
}
276304

277305
layout.setHint(hint);
278306
text.setText(meaning);

0 commit comments

Comments
 (0)