Add watcher management in AddPartFragment

fix bug on drawer action change
This commit is contained in:
Schoumi 2016-11-06 15:56:22 +01:00
父節點 41d60365ec
當前提交 0b2cdd3c30
共有 28 個文件被更改,包括 59 次插入23 次删除

查看文件

@ -175,7 +175,7 @@ public class MainActivity extends AppCompatActivity implements NavigationView.O
int id = item.getItemId();
Fragment frag = null;
final FragmentManager manager = getSupportFragmentManager();
final FragmentTransaction transaction = manager.beginTransaction();
FragmentTransaction transaction = manager.beginTransaction();
final Fragment old = manager.findFragmentById(R.id.fragment_container);
if(id == R.id.nav_devices) {
if(!(old instanceof USBListFragment)) {
@ -200,6 +200,7 @@ public class MainActivity extends AppCompatActivity implements NavigationView.O
@Override
public void onEditPress(Long part_id) {
Fragment fragment = AddPartFragment.newInstance(part_id);
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.fragment_container, fragment);
transaction.addToBackStack(null);
transaction.commit();

查看文件

@ -77,45 +77,45 @@ public class AddPartFragment extends Fragment {
final View v = inflater.inflate(R.layout.add_part, container, false);
EditText t = (EditText) v.findViewById(R.id.edit_part_id);
watchers.add(new HexaWatcher(t,this));
t.setText(part != null ? "0x"+String.format("%08x",part.part_id).toUpperCase() : "0x");
t.addTextChangedListener(watchers.get(watchers.size()-1));
t.setText(part != null ? "0x"+String.format("%08x",part.part_id).toUpperCase() : "0x");
t = (EditText) v.findViewById(R.id.edit_flash_base_addr);
watchers.add(new HexaWatcher(t,this));
t.setText(part != null ? "0x"+String.format("%08x",part.flash_base_addr).toUpperCase() : "0x");
t.addTextChangedListener(watchers.get(watchers.size()-1));
t.setText(part != null ? "0x"+String.format("%08x",part.flash_base_addr).toUpperCase() : "0x");
t = (EditText) v.findViewById(R.id.edit_flash_size);
watchers.add(new HexaWatcher(t,this));
t.setText(part != null ? "0x"+String.format("%04x",part.flash_size).toUpperCase() : "0x");
t.addTextChangedListener(watchers.get(watchers.size()-1));
t.setText(part != null ? "0x"+String.format("%04x",part.flash_size).toUpperCase() : "0x");
t = (EditText) v.findViewById(R.id.edit_reset_vector_offset);
watchers.add(new HexaWatcher(t,this));
t.setText(part != null ? "0x"+String.format("%02x",part.reset_vector_offset).toUpperCase() : "0x");
t.addTextChangedListener(watchers.get(watchers.size()-1));
t.setText(part != null ? "0x"+String.format("%02x",part.reset_vector_offset).toUpperCase() : "0x");
t = (EditText) v.findViewById(R.id.edit_ram_base_addr);
watchers.add(new HexaWatcher(t,this));
t.setText(part != null ? "0x"+String.format("%08x",part.ram_base_addr).toUpperCase() : "0x");
t.addTextChangedListener(watchers.get(watchers.size()-1));
t.setText(part != null ? "0x"+String.format("%08x",part.ram_base_addr).toUpperCase() : "0x");
t = (EditText) v.findViewById(R.id.edit_ram_size);
watchers.add(new HexaWatcher(t,this));
t.setText(part != null ? "0x"+String.format("%04x",part.ram_size).toUpperCase() : "0x");
t.addTextChangedListener(watchers.get(watchers.size()-1));
t.setText(part != null ? "0x"+String.format("%04x",part.ram_size).toUpperCase() : "0x");
t = (EditText) v.findViewById(R.id.edit_ram_buf_offset);
watchers.add(new HexaWatcher(t,this));
t.setText(part != null ? "0x"+String.format("%03x",part.ram_buffer_offset).toUpperCase() : "0x");
t.addTextChangedListener(watchers.get(watchers.size()-1));
t.setText(part != null ? "0x"+String.format("%03x",part.ram_buffer_offset).toUpperCase() : "0x");
t = (EditText) v.findViewById(R.id.edit_ram_buf_size);
watchers.add(new HexaWatcher(t,this));
t.setText(part != null ? "0x"+String.format("%03x",part.ram_buffer_size).toUpperCase() : "0x");
t.addTextChangedListener(watchers.get(watchers.size()-1));
t.setText(part != null ? "0x"+String.format("%03x",part.ram_buffer_size).toUpperCase() : "0x");
t = (EditText) v.findViewById(R.id.edit_part_name);
watchers.add(new EmptyWatcher(t,this));
t.setText(part != null ? part.part_name : "");
t.addTextChangedListener(watchers.get(watchers.size()-1));
t.setText(part != null ? part.part_name : "");
t = (EditText) v.findViewById(R.id.edit_flash_nb_sector);
watchers.add(new EmptyWatcher(t,this));
t.setText(part != null ? String.valueOf(part.flash_nb_sectors) : "");
t.addTextChangedListener(watchers.get(watchers.size()-1));
t.setText(part != null ? String.valueOf(part.flash_nb_sectors) : "");
Spinner s = (Spinner) v.findViewById(R.id.spinner_uuencode);
if(part != null)
@ -195,7 +195,8 @@ public class AddPartFragment extends Fragment {
if (v == null)
v = getView();
boolean isValid = true;
assert v != null;
if(v == null)
return;
EditText t = (EditText) v.findViewById(R.id.edit_part_id);
String hexa = t.getText().toString();
if(!hexa.matches("0x[0-9A-F]*"))

查看文件

@ -18,18 +18,22 @@
package fr.mobdev.lpcprog.fragment;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import fr.mobdev.lpcprog.R;
class HexaWatcher implements TextWatcher {
private EditText v;
private Drawable orig;
private AddPartFragment fragment;
HexaWatcher(EditText view,AddPartFragment fragment) {
v = view;
this.fragment = fragment;
orig = v.getBackground();
}
@Override
@ -46,9 +50,9 @@ class HexaWatcher implements TextWatcher {
public void afterTextChanged(Editable editable) {
String hexa = editable.toString();
if(!hexa.matches("0x[0-9A-F]+"))
v.getBackground().setColorFilter(0xFFFF0000, PorterDuff.Mode.SRC);
v.setBackgroundResource(R.drawable.apptheme_edit_text_holo_light);
else
v.getBackground().clearColorFilter();
v.setBackgroundDrawable(orig);
fragment.modifyBt(null);
}
}
@ -57,9 +61,11 @@ class EmptyWatcher implements TextWatcher {
private EditText v;
private AddPartFragment fragment;
private Drawable orig;
EmptyWatcher(EditText view,AddPartFragment fragment) {
v = view;
this.fragment = fragment;
orig = v.getBackground();
}
@Override
@ -75,6 +81,10 @@ class EmptyWatcher implements TextWatcher {
@Override
public void afterTextChanged(Editable editable) {
String data = editable.toString();
if(data.isEmpty())
v.setBackgroundResource(R.drawable.apptheme_edit_text_holo_light);
else
v.setBackgroundDrawable(orig);
fragment.modifyBt(null);
}
}

Binary file not shown.

After

Width:  |  Height:  |  大小: 236 B

Binary file not shown.

After

Width:  |  Height:  |  大小: 261 B

Binary file not shown.

After

Width:  |  Height:  |  大小: 346 B

Binary file not shown.

After

Width:  |  Height:  |  大小: 261 B

Binary file not shown.

After

Width:  |  Height:  |  大小: 311 B

Binary file not shown.

After

Width:  |  Height:  |  大小: 214 B

Binary file not shown.

After

Width:  |  Height:  |  大小: 229 B

Binary file not shown.

After

Width:  |  Height:  |  大小: 274 B

Binary file not shown.

After

Width:  |  Height:  |  大小: 229 B

Binary file not shown.

After

Width:  |  Height:  |  大小: 250 B

Binary file not shown.

After

Width:  |  Height:  |  大小: 267 B

Binary file not shown.

After

Width:  |  Height:  |  大小: 252 B

Binary file not shown.

After

Width:  |  Height:  |  大小: 317 B

Binary file not shown.

After

Width:  |  Height:  |  大小: 252 B

Binary file not shown.

After

Width:  |  Height:  |  大小: 369 B

Binary file not shown.

After

Width:  |  Height:  |  大小: 326 B

Binary file not shown.

After

Width:  |  Height:  |  大小: 321 B

Binary file not shown.

After

Width:  |  Height:  |  大小: 442 B

Binary file not shown.

After

Width:  |  Height:  |  大小: 320 B

Binary file not shown.

After

Width:  |  Height:  |  大小: 445 B

查看文件

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2010 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false" android:state_enabled="true" android:drawable="@drawable/apptheme_textfield_default_holo_light" />
<item android:state_window_focused="false" android:state_enabled="false" android:drawable="@drawable/apptheme_textfield_disabled_holo_light" />
<item android:state_enabled="true" android:state_focused="true" android:drawable="@drawable/apptheme_textfield_activated_holo_light" />
<item android:state_enabled="true" android:state_activated="true" android:drawable="@drawable/apptheme_textfield_focused_holo_light" />
<item android:state_enabled="true" android:drawable="@drawable/apptheme_textfield_default_holo_light" />
<item android:state_focused="true" android:drawable="@drawable/apptheme_textfield_disabled_focused_holo_light" />
<item android:drawable="@drawable/apptheme_textfield_disabled_holo_light" />
</selector>

查看文件

@ -2,5 +2,5 @@
<resources>
<color name="colorPrimaryDark">#000000</color>
<color name="colorPrimary">#000000</color>
<color name="colorAccent">#FFFFFF</color>
<color name="colorAccent">#000000</color>
</resources>

查看文件

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="apptheme_color">#cc0000</color>
</resources>

查看文件

@ -36,15 +36,10 @@
<item>http://</item>
<item>https://</item>
</array>
<string name="title_activity_main">MainActivity</string>
<string name="navigation_drawer_open">Open navigation drawer</string>
<string name="navigation_drawer_close">Close navigation drawer</string>
<string name="action_settings">Settings</string>
<!-- TODO: Remove or change this placeholder text -->
<string name="hello_blank_fragment">Hello blank fragment</string>
<string name="devices_list">Devices List</string>
<string name="parts_management">µC Definitions</string>
<string name="part_name">µC Name</string>
@ -75,7 +70,7 @@
<string name="read_file">Copy file into Memory</string>
<string name="verify_checksum">Verify Checksum</string>
<string name="write_to_flash">Flash Binary</string>
<string name="end_flash">Flash Suceed</string>
<string name="end_flash">Flash Succeed</string>
<string name="step">Step</string>
<array name="uuencode_array">
<item>Yes</item>

查看文件

@ -5,7 +5,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.1'
classpath 'com.android.tools.build:gradle:2.2.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files