-
Notifications
You must be signed in to change notification settings - Fork 183
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Fixes src and dest was swapped on LightLightness * Adds support for controlling groups. Previously this was done in each model configuration view but now model configuration will only allow sending messages to the unicast address itself. * Fixes a documentation bug after renaming callbacks. * All addresses now use ints instead of byte arrays. * Fixes a bug relating to broken parcelable implementations * Added an additional api to override default 5 second attention timer. `identifyNode(@nonnull final UUID deviceUuid, final String nodeName, final int attentionTimer)` * Moved bouncy castle insertion to MeshManagerApi. * Adds support for multiple provisioning capabilities. This includes No OOB, Static OOB, Output OOB and Input OOB methods. Now the user is prompted to pick supported Authentication Method and Authentication action during the provisioning process. - 3 new APIs added - `startProvisioningWithStaticOOB(@nonnull final UnprovisionedMeshNode unprovisionedMeshNode)` - `startProvisioningWithOutputOOB(@nonnull final UnprovisionedMeshNode unprovisionedMeshNode, final OutputOOBAction oobAction)`, - `startProvisioningWithInputOOB(@nonnull final UnprovisionedMeshNode unprovisionedMeshNode, @nonnull final InputOOBAction oobAction)` - Adds ConfigModelPublicationGet message - Adds support for importing and exporting json strings - Fixes a bug relating to vendor models in json serializer/deserializer when importing/exporting mesh networks. * Fixes #152
- Loading branch information
1 parent
bdf148d
commit f268d38
Showing
323 changed files
with
13,152 additions
and
5,313 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
252 changes: 155 additions & 97 deletions
252
...rc/main/java/no/nordicsemi/android/nrfmeshprovisioner/BaseModelConfigurationActivity.java
Large diffs are not rendered by default.
Oops, something went wrong.
122 changes: 0 additions & 122 deletions
122
...-mesh/app/src/main/java/no/nordicsemi/android/nrfmeshprovisioner/BindAppKeysActivity.java
This file was deleted.
Oops, something went wrong.
123 changes: 123 additions & 0 deletions
123
.../main/java/no/nordicsemi/android/nrfmeshprovisioner/BottomSheetDetailsDialogFragment.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,123 @@ | ||
package no.nordicsemi.android.nrfmeshprovisioner; | ||
|
||
import android.app.Activity; | ||
import android.arch.lifecycle.ViewModelProvider; | ||
import android.os.Bundle; | ||
import android.support.annotation.NonNull; | ||
import android.support.annotation.Nullable; | ||
import android.support.design.widget.BottomSheetDialogFragment; | ||
import android.support.design.widget.TextInputEditText; | ||
import android.support.design.widget.TextInputLayout; | ||
import android.support.v7.widget.LinearLayoutManager; | ||
import android.support.v7.widget.RecyclerView; | ||
import android.text.TextUtils; | ||
import android.view.LayoutInflater; | ||
import android.view.View; | ||
import android.view.ViewGroup; | ||
import android.view.inputmethod.InputMethodManager; | ||
import android.widget.Button; | ||
|
||
import java.util.ArrayList; | ||
|
||
import javax.inject.Inject; | ||
|
||
import no.nordicsemi.android.meshprovisioner.Group; | ||
import no.nordicsemi.android.meshprovisioner.transport.Element; | ||
import no.nordicsemi.android.meshprovisioner.transport.MeshModel; | ||
import no.nordicsemi.android.nrfmeshprovisioner.adapter.GroupModelAdapter; | ||
|
||
public class BottomSheetDetailsDialogFragment extends BottomSheetDialogFragment implements GroupModelAdapter.OnItemClickListener { | ||
|
||
private static final String GROUP = "GROUP"; | ||
private static final String ELEMENTS = "ELEMENTS"; | ||
|
||
|
||
@Inject | ||
ViewModelProvider.Factory mViewModelFactory; | ||
|
||
private TextInputLayout mGroupNameInputLayout; | ||
private TextInputEditText mGroupNameTextInput; | ||
|
||
private Group mGroup; | ||
private ArrayList<Element> mElements = new ArrayList<>(); | ||
private GroupModelAdapter mGroupModelsAdapter; | ||
|
||
public interface BottomSheetDetailsListener { | ||
void editModelItem(@NonNull final Element element, @NonNull final MeshModel model); | ||
|
||
void onGroupNameChanged(@NonNull final Group group); | ||
} | ||
|
||
public static BottomSheetDetailsDialogFragment getInstance(final Group group, final ArrayList<Element> elements) { | ||
final BottomSheetDetailsDialogFragment fragment = new BottomSheetDetailsDialogFragment(); | ||
final Bundle args = new Bundle(); | ||
args.putParcelable(GROUP, group); | ||
args.putParcelableArrayList(ELEMENTS, elements); | ||
fragment.setArguments(args); | ||
return fragment; | ||
} | ||
|
||
@Override | ||
public void onCreate(@Nullable final Bundle savedInstanceState) { | ||
super.onCreate(savedInstanceState); | ||
setStyle(STYLE_NORMAL, R.style.CustomBottomSheetDialog); | ||
if (getArguments() != null) { | ||
mGroup = getArguments().getParcelable(GROUP); | ||
mElements = getArguments().getParcelableArrayList(ELEMENTS); | ||
} | ||
} | ||
|
||
@Nullable | ||
@Override | ||
public View onCreateView(@NonNull final LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable final Bundle savedInstanceState) { | ||
final View rootView = inflater.inflate(R.layout.fragment_bottom_sheet_dialog, container, false); | ||
|
||
mGroupNameInputLayout = rootView.findViewById(R.id.text_input_layout); | ||
mGroupNameTextInput = rootView.findViewById(R.id.text_input); | ||
mGroupNameTextInput.setText(mGroup.getName()); | ||
|
||
final RecyclerView recyclerViewGroupItems = rootView.findViewById(R.id.group_items); | ||
recyclerViewGroupItems.setLayoutManager(new LinearLayoutManager(requireContext())); | ||
mGroupModelsAdapter = new GroupModelAdapter(requireContext(), mGroup, mElements); | ||
mGroupModelsAdapter.setOnItemClickListener(this); | ||
recyclerViewGroupItems.setAdapter(mGroupModelsAdapter); | ||
|
||
final Button actionApply = rootView.findViewById(R.id.action_apply); | ||
actionApply.setOnClickListener(v -> { | ||
final String groupName = mGroupNameTextInput.getEditableText().toString(); | ||
if (validateInput(groupName)) { | ||
hideKeyboard(); | ||
mGroupNameTextInput.clearFocus(); | ||
mGroup.setName(groupName); | ||
((BottomSheetDetailsListener) requireActivity()).onGroupNameChanged(mGroup); | ||
} | ||
}); | ||
|
||
return rootView; | ||
} | ||
|
||
@Override | ||
public void onModelItemClick(final Element element, final MeshModel model) { | ||
((BottomSheetDetailsListener) requireActivity()).editModelItem(element, model); | ||
} | ||
|
||
public void updateAdapter(final Group group, final ArrayList<Element> elements) { | ||
if (mGroupModelsAdapter != null) { | ||
mGroup = group; | ||
mElements = elements; | ||
mGroupModelsAdapter.updateAdapter(group, elements); | ||
mGroupModelsAdapter.notifyDataSetChanged(); | ||
} | ||
} | ||
|
||
private boolean validateInput(final String groupName) { | ||
return !TextUtils.isEmpty(groupName); | ||
} | ||
|
||
public void hideKeyboard() { | ||
final InputMethodManager imm = (InputMethodManager) requireActivity().getSystemService(Activity.INPUT_METHOD_SERVICE); | ||
if (imm != null) { | ||
imm.hideSoftInputFromWindow(mGroupNameTextInput.getWindowToken(), 0); | ||
} | ||
} | ||
} |
Oops, something went wrong.