LocalProfile fix
This commit is contained in:
parent
8bf5933c88
commit
96edac5ddf
3 changed files with 168 additions and 135 deletions
|
@ -125,6 +125,11 @@ public class NumberPicker extends LinearLayout implements View.OnKeyListener,
|
|||
plusButton.setOnClickListener(this);
|
||||
}
|
||||
|
||||
public void setTextWatcher(TextWatcher textWatcher) {
|
||||
this.textWatcher = textWatcher;
|
||||
editText.addTextChangedListener(textWatcher);
|
||||
}
|
||||
|
||||
public void setParams(Double initValue, Double minValue, Double maxValue, Double step, NumberFormat formater, boolean allowZero, TextWatcher textWatcher) {
|
||||
setParams(initValue, minValue, maxValue, step, formater, allowZero);
|
||||
this.textWatcher = textWatcher;
|
||||
|
@ -139,7 +144,11 @@ public class NumberPicker extends LinearLayout implements View.OnKeyListener,
|
|||
this.formater = formater;
|
||||
this.allowZero = allowZero;
|
||||
|
||||
if (textWatcher != null)
|
||||
editText.removeTextChangedListener(textWatcher);
|
||||
updateEditText();
|
||||
if (textWatcher != null)
|
||||
editText.addTextChangedListener(textWatcher);
|
||||
}
|
||||
|
||||
public void setValue(Double value) {
|
||||
|
|
|
@ -44,7 +44,11 @@ public class TimeListEdit {
|
|||
private LinearLayout layout;
|
||||
private View[] intervals = new View[24];
|
||||
private Spinner[] spinners = new Spinner[24];
|
||||
|
||||
private NumberPicker[] numberPickers1 = new NumberPicker[24];
|
||||
private NumberPicker[] numberPickers2 = new NumberPicker[24];
|
||||
private ImageView[] addButtons = new ImageView[24];
|
||||
private ImageView[] removeButtons = new ImageView[24];
|
||||
ImageView finalAdd;
|
||||
|
||||
private Context context;
|
||||
private View view;
|
||||
|
@ -70,11 +74,8 @@ public class TimeListEdit {
|
|||
}
|
||||
|
||||
private void buildView() {
|
||||
log.debug("buildView start");
|
||||
layout = (LinearLayout) view.findViewById(resLayoutId);
|
||||
|
||||
layout.removeAllViews();
|
||||
|
||||
TextView textlabel = new TextView(context);
|
||||
textlabel.setText(label);
|
||||
textlabel.setGravity(Gravity.LEFT);
|
||||
|
@ -85,110 +86,20 @@ public class TimeListEdit {
|
|||
TextViewCompat.setTextAppearance(textlabel, android.R.style.TextAppearance_Medium);
|
||||
layout.addView(textlabel);
|
||||
|
||||
for (int i = 0; i < itemsCount(); i++) {
|
||||
View childview = intervals[i] = buildInterval(i);
|
||||
layout.addView(childview);
|
||||
}
|
||||
|
||||
if (!(itemsCount() > 0 && secondFromMidnight(itemsCount() - 1) == 23 * ONEHOURINSECONDS)) {
|
||||
ImageView imageView = new ImageView(context);
|
||||
imageView.setImageResource(R.drawable.add);
|
||||
LinearLayout.LayoutParams illp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
|
||||
illp.setMargins(0, 25, 0, 25); // llp.setMargins(left, top, right, bottom);
|
||||
illp.gravity = Gravity.CENTER;
|
||||
layout.addView(imageView);
|
||||
imageView.setLayoutParams(illp);
|
||||
imageView.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
log.debug("gggggggg");
|
||||
addItem(itemsCount(), itemsCount() > 0 ? secondFromMidnight(itemsCount() - 1) + ONEHOURINSECONDS : 0, 0, 0);
|
||||
callSave();
|
||||
log();
|
||||
buildView();
|
||||
}
|
||||
});
|
||||
}
|
||||
log.debug("buildView end");
|
||||
}
|
||||
|
||||
private View buildInterval(int i) {
|
||||
for (int i = 0; i < 24; i++) {
|
||||
LayoutInflater inflater = LayoutInflater.from(context);
|
||||
View childview = inflater.inflate(R.layout.timelistedit_element, layout, false);
|
||||
final Spinner timeSpinner = spinners[i] = (Spinner) childview.findViewById(R.id.timelistedit_time);
|
||||
int previous = i == 0 ? -1 * ONEHOURINSECONDS : secondFromMidnight(i - 1);
|
||||
int next = i == itemsCount() - 1 ? 24 * ONEHOURINSECONDS : secondFromMidnight(i + 1);
|
||||
if (i == 0) next = ONEHOURINSECONDS;
|
||||
fillSpinner(timeSpinner, secondFromMidnight(i), previous, next);
|
||||
View childview = intervals[i] = inflater.inflate(R.layout.timelistedit_element, layout, false);
|
||||
spinners[i] = (Spinner) childview.findViewById(R.id.timelistedit_time);
|
||||
numberPickers1[i] = (NumberPicker) childview.findViewById(R.id.timelistedit_edit1);
|
||||
numberPickers2[i] = (NumberPicker) childview.findViewById(R.id.timelistedit_edit2);
|
||||
addButtons[i] = (ImageView) childview.findViewById(R.id.timelistedit_add);
|
||||
removeButtons[i] = (ImageView) childview.findViewById(R.id.timelistedit_remove);
|
||||
|
||||
final int fixedPos = i;
|
||||
final NumberPicker editText1 = (NumberPicker) childview.findViewById(R.id.timelistedit_edit1);
|
||||
|
||||
TextWatcher tw1 = new TextWatcher() {
|
||||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
log.debug("aaaa");
|
||||
editItem(fixedPos, secondFromMidnight(fixedPos), SafeParse.stringToDouble(editText1.getText()), value2(fixedPos));
|
||||
callSave();
|
||||
log();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence s, int start,
|
||||
int count, int after) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start,
|
||||
int before, int count) {
|
||||
}
|
||||
};
|
||||
|
||||
editText1.setParams(value1(i), 0.1d, 100d, step, formatter, false, tw1);
|
||||
|
||||
final NumberPicker editText2 = (NumberPicker) childview.findViewById(R.id.timelistedit_edit2);
|
||||
|
||||
TextWatcher tw2 = new TextWatcher() {
|
||||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
log.debug("bbbbb");
|
||||
editItem(fixedPos, secondFromMidnight(fixedPos), value1(fixedPos), SafeParse.stringToDouble(editText2.getText()));
|
||||
callSave();
|
||||
log();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence s, int start,
|
||||
int count, int after) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start,
|
||||
int before, int count) {
|
||||
}
|
||||
};
|
||||
editText2.setParams(value2(i), 0.1d, 100d, step, formatter, false, tw2);
|
||||
if (data2 == null) {
|
||||
editText2.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
|
||||
ImageView addbutton = (ImageView) childview.findViewById(R.id.timelistedit_add);
|
||||
ImageView removebutton = (ImageView) childview.findViewById(R.id.timelistedit_remove);
|
||||
|
||||
if (itemsCount() == 1 || i == 0) {
|
||||
removebutton.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
|
||||
if (itemsCount() >= 24 || secondFromMidnight(i) >= 82800) {
|
||||
addbutton.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
|
||||
addbutton.setOnClickListener(new View.OnClickListener() {
|
||||
addButtons[i].setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
log.debug("ccccc");
|
||||
layout.removeAllViews();
|
||||
int seconds = secondFromMidnight(fixedPos);
|
||||
addItem(fixedPos, seconds, 0, 0);
|
||||
// for here for the rest of values
|
||||
|
@ -201,46 +112,155 @@ public class TimeListEdit {
|
|||
removeItem(itemsCount() - 1);
|
||||
callSave();
|
||||
log();
|
||||
buildView();
|
||||
fillView();
|
||||
}
|
||||
});
|
||||
|
||||
removebutton.setOnClickListener(new View.OnClickListener() {
|
||||
removeButtons[i].setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
log.debug("dddd");
|
||||
layout.removeAllViews();
|
||||
removeItem(fixedPos);
|
||||
callSave();
|
||||
log();
|
||||
buildView();
|
||||
fillView();
|
||||
}
|
||||
});
|
||||
|
||||
addSpinnerListener(timeSpinner, i);
|
||||
return childview;
|
||||
}
|
||||
|
||||
private void addSpinnerListener(final Spinner timeSpinner, final int fixedPos) {
|
||||
timeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
||||
spinners[i].setOnItemSelectedListener(
|
||||
new AdapterView.OnItemSelectedListener() {
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||
log.debug("eeeeee");
|
||||
int seconds = DateUtil.toSeconds(timeSpinner.getSelectedItem().toString());
|
||||
int seconds = DateUtil.toSeconds(spinners[fixedPos].getSelectedItem().toString());
|
||||
editItem(fixedPos, seconds, value1(fixedPos), value2(fixedPos));
|
||||
log();
|
||||
callSave();
|
||||
fillView();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> parent) {
|
||||
log.debug("fffff");
|
||||
editItem(fixedPos, 0, value1(fixedPos), value2(fixedPos));
|
||||
log();
|
||||
callSave();
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
numberPickers1[i].setTextWatcher(new TextWatcher() {
|
||||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
log.debug("aaaa");
|
||||
editItem(fixedPos, secondFromMidnight(fixedPos), SafeParse.stringToDouble(numberPickers1[fixedPos].getText()), value2(fixedPos));
|
||||
callSave();
|
||||
log();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence s, int start,
|
||||
int count, int after) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start,
|
||||
int before, int count) {
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
numberPickers2[i].setTextWatcher(new TextWatcher() {
|
||||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
log.debug("bbbbb");
|
||||
editItem(fixedPos, secondFromMidnight(fixedPos), value1(fixedPos), SafeParse.stringToDouble(numberPickers2[fixedPos].getText()));
|
||||
callSave();
|
||||
log();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence s, int start,
|
||||
int count, int after) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start,
|
||||
int before, int count) {
|
||||
}
|
||||
});
|
||||
|
||||
layout.addView(childview);
|
||||
}
|
||||
|
||||
// last "plus" to append new interval
|
||||
finalAdd = new ImageView(context);
|
||||
finalAdd.setImageResource(R.drawable.add);
|
||||
LinearLayout.LayoutParams illp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
|
||||
illp.setMargins(0, 25, 0, 25); // llp.setMargins(left, top, right, bottom);
|
||||
illp.gravity = Gravity.CENTER;
|
||||
layout.addView(finalAdd);
|
||||
finalAdd.setLayoutParams(illp);
|
||||
finalAdd.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
log.debug("gggggggg");
|
||||
addItem(itemsCount(), itemsCount() > 0 ? secondFromMidnight(itemsCount() - 1) + ONEHOURINSECONDS : 0, 0, 0);
|
||||
callSave();
|
||||
log();
|
||||
fillView();
|
||||
}
|
||||
});
|
||||
|
||||
fillView();
|
||||
}
|
||||
|
||||
private void fillView() {
|
||||
for (int i = 0; i < 24; i++) {
|
||||
if (i < itemsCount()) {
|
||||
intervals[i].setVisibility(View.VISIBLE);
|
||||
buildInterval(i);
|
||||
} else
|
||||
intervals[i].setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
if (!(itemsCount() > 0 && secondFromMidnight(itemsCount() - 1) == 23 * ONEHOURINSECONDS)) {
|
||||
finalAdd.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
finalAdd.setVisibility(View.GONE);
|
||||
}
|
||||
}
|
||||
|
||||
private View buildInterval(int i) {
|
||||
Spinner timeSpinner = spinners[i];
|
||||
View childview = intervals[i];
|
||||
final NumberPicker editText1 = numberPickers1[i];
|
||||
final NumberPicker editText2 = numberPickers2[i];
|
||||
|
||||
|
||||
int previous = i == 0 ? -1 * ONEHOURINSECONDS : secondFromMidnight(i - 1);
|
||||
int next = i == itemsCount() - 1 ? 24 * ONEHOURINSECONDS : secondFromMidnight(i + 1);
|
||||
if (i == 0) next = ONEHOURINSECONDS;
|
||||
fillSpinner(timeSpinner, secondFromMidnight(i), previous, next);
|
||||
|
||||
final int fixedPos = i;
|
||||
|
||||
editText1.setParams(value1(i), 0.1d, 100d, step, formatter, false);
|
||||
editText2.setParams(value2(i), 0.1d, 100d, step, formatter, false);
|
||||
|
||||
if (data2 == null) {
|
||||
editText2.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
|
||||
if (itemsCount() == 1 || i == 0) {
|
||||
removeButtons[i].setVisibility(View.INVISIBLE);
|
||||
} else
|
||||
removeButtons[i].setVisibility(View.VISIBLE);
|
||||
|
||||
if (itemsCount() >= 24 || secondFromMidnight(i) >= 82800) {
|
||||
addButtons[i].setVisibility(View.INVISIBLE);
|
||||
} else {
|
||||
addButtons[i].setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
return childview;
|
||||
}
|
||||
|
||||
private void fillSpinner(Spinner spinner, int secondsFromMidnight, int previous, int next) {
|
||||
|
@ -256,7 +276,10 @@ public class TimeListEdit {
|
|||
ArrayAdapter<CharSequence> adapter = new ArrayAdapter<>(context,
|
||||
R.layout.spinner_centered, timeList);
|
||||
spinner.setAdapter(adapter);
|
||||
AdapterView.OnItemSelectedListener l = spinner.getOnItemSelectedListener();
|
||||
spinner.setOnItemSelectedListener(null);
|
||||
spinner.setSelection(posInList, false);
|
||||
spinner.setOnItemSelectedListener(l);
|
||||
}
|
||||
|
||||
private int itemsCount() {
|
||||
|
|
|
@ -12,7 +12,8 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginRight="10dp" />
|
||||
android:layout_marginRight="10dp"
|
||||
android:minWidth="80dp" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
|
|
Loading…
Reference in a new issue