diff --git a/app/src/main/java/com/keepassdroid/activities/GroupActivity.java b/app/src/main/java/com/keepassdroid/activities/GroupActivity.java
index d903a1c0d..9e4c2b9b6 100644
--- a/app/src/main/java/com/keepassdroid/activities/GroupActivity.java
+++ b/app/src/main/java/com/keepassdroid/activities/GroupActivity.java
@@ -61,18 +61,19 @@ import com.keepassdroid.dialogs.IconPickerDialogFragment;
import com.keepassdroid.password.PasswordActivity;
import com.keepassdroid.search.SearchResultsActivity;
import com.keepassdroid.tasks.ProgressTask;
-import com.keepassdroid.view.ListNodesWithAddButtonView;
+import com.keepassdroid.view.AddNodeView;
import com.kunzisoft.keepass.R;
public class GroupActivity extends ListNodesActivity
implements GroupEditDialogFragment.EditGroupListener, IconPickerDialogFragment.IconPickerListener {
+ private AddNodeView addNodeView;
+
protected boolean addGroupEnabled = false;
protected boolean addEntryEnabled = false;
protected boolean isRoot = false;
protected boolean readOnly = false;
protected EditGroupDialogAction editGroupDialogAction = EditGroupDialogAction.NONE;
- private ListNodesWithAddButtonView rootView;
private AutofillHelper autofillHelper;
@@ -124,31 +125,30 @@ public class GroupActivity extends ListNodesActivity
}
// Construct main view
- rootView = new ListNodesWithAddButtonView(this);
- rootView.enableAddGroup(addGroupEnabled);
- rootView.enableAddEntry(addEntryEnabled);
- setContentView(rootView);
+ setContentView(getLayoutInflater().inflate(R.layout.list_nodes_with_add_button, null));
- Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+ addNodeView = findViewById(R.id.add_node_button);
+ addNodeView.enableAddGroup(addGroupEnabled);
+ addNodeView.enableAddEntry(addEntryEnabled);
+ // Hide when scroll
+ RecyclerView recyclerView = findViewById(R.id.nodes_list);
+ recyclerView.addOnScrollListener(addNodeView.hideButtonOnScrollListener());
+
+ Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setTitle("");
setSupportActionBar(toolbar);
if ( mCurrentGroup.getParent() != null )
toolbar.setNavigationIcon(R.drawable.ic_arrow_up_white_24dp);
- rootView.setAddGroupClickListener(new View.OnClickListener() {
- public void onClick(View v) {
- editGroupDialogAction = EditGroupDialogAction.CREATION;
- GroupEditDialogFragment groupEditDialogFragment = new GroupEditDialogFragment();
- groupEditDialogFragment.show(getSupportFragmentManager(),
- GroupEditDialogFragment.TAG_CREATE_GROUP);
- }
- });
- rootView.setAddEntryClickListener(new View.OnClickListener() {
- public void onClick(View v) {
- EntryEditActivity.Launch(GroupActivity.this, mCurrentGroup);
- }
+ addNodeView.setAddGroupClickListener(v -> {
+ editGroupDialogAction = EditGroupDialogAction.CREATION;
+ GroupEditDialogFragment groupEditDialogFragment = new GroupEditDialogFragment();
+ groupEditDialogFragment.show(getSupportFragmentManager(),
+ GroupEditDialogFragment.TAG_CREATE_GROUP);
});
+ addNodeView.setAddEntryClickListener(v ->
+ EntryEditActivity.Launch(GroupActivity.this, mCurrentGroup));
setGroupTitle();
setGroupIcon();
@@ -276,7 +276,14 @@ public class GroupActivity extends ListNodesActivity
protected void onResume() {
super.onResume();
// Show button on resume
- rootView.showButton();
+ addNodeView.showButton();
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ // Hide button
+ addNodeView.hideButton();
}
@Override
@@ -291,9 +298,8 @@ public class GroupActivity extends ListNodesActivity
@Override
public void onSortSelected(SortNodeEnum sortNodeEnum, boolean ascending, boolean groupsBefore, boolean recycleBinBottom) {
super.onSortSelected(sortNodeEnum, ascending, groupsBefore, recycleBinBottom);
-
// Show button if hide after sort
- rootView.showButton();
+ addNodeView.showButton();
}
protected void setGroupIcon() {
diff --git a/app/src/main/java/com/keepassdroid/view/ListNodesWithAddButtonView.java b/app/src/main/java/com/keepassdroid/view/AddNodeView.java
similarity index 91%
rename from app/src/main/java/com/keepassdroid/view/ListNodesWithAddButtonView.java
rename to app/src/main/java/com/keepassdroid/view/AddNodeView.java
index f4c5900f8..8d3635282 100644
--- a/app/src/main/java/com/keepassdroid/view/ListNodesWithAddButtonView.java
+++ b/app/src/main/java/com/keepassdroid/view/AddNodeView.java
@@ -20,7 +20,6 @@
package com.keepassdroid.view;
import android.content.Context;
-import android.graphics.Rect;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.view.ViewCompat;
import android.support.v4.view.ViewPropertyAnimatorListener;
@@ -36,7 +35,7 @@ import android.widget.RelativeLayout;
import com.kunzisoft.keepass.R;
-public class ListNodesWithAddButtonView extends RelativeLayout {
+public class AddNodeView extends RelativeLayout {
private enum State {
OPEN, CLOSE
@@ -58,11 +57,11 @@ public class ListNodesWithAddButtonView extends RelativeLayout {
private ViewMenuAnimation viewMenuAnimationAddGroup;
private long animationDuration;
- public ListNodesWithAddButtonView(Context context) {
+ public AddNodeView(Context context) {
this(context, null);
}
- public ListNodesWithAddButtonView(Context context, AttributeSet attrs) {
+ public AddNodeView(Context context, AttributeSet attrs) {
super(context, attrs);
inflate(context);
}
@@ -70,12 +69,12 @@ public class ListNodesWithAddButtonView extends RelativeLayout {
protected void inflate(Context context) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
assert inflater != null;
- inflater.inflate(R.layout.list_nodes_with_add_button, this);
+ inflater.inflate(R.layout.add_node_button, this);
addEntryEnable = true;
addGroupEnable = true;
- addButton = (FloatingActionButton) findViewById(R.id.add_button);
+ addButton = findViewById(R.id.add_button);
addEntry = findViewById(R.id.add_entry);
addGroup = findViewById(R.id.add_group);
@@ -88,12 +87,9 @@ public class ListNodesWithAddButtonView extends RelativeLayout {
allowAction = true;
state = State.CLOSE;
- onAddButtonClickListener = new OnClickListener() {
- @Override
- public void onClick(View v) {
- if (allowAction && state.equals(State.CLOSE)) {
- startGlobalAnimation();
- }
+ onAddButtonClickListener = v -> {
+ if (allowAction) {
+ startGlobalAnimation();
}
};
addButton.setOnClickListener(onAddButtonClickListener);
@@ -111,10 +107,10 @@ public class ListNodesWithAddButtonView extends RelativeLayout {
addButton.setOnClickListener(onAddButtonClickListener);
}
};
+ }
- // Hide when scroll
- RecyclerView recyclerView = (RecyclerView) findViewById(R.id.nodes_list);
- recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
+ public RecyclerView.OnScrollListener hideButtonOnScrollListener() {
+ return new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
@@ -126,8 +122,8 @@ public class ListNodesWithAddButtonView extends RelativeLayout {
}
}
}
- });
- }
+ };
+ }
public void showButton() {
addButton.show(onAddButtonVisibilityChangedListener);
@@ -139,6 +135,8 @@ public class ListNodesWithAddButtonView extends RelativeLayout {
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
+ /*
+ TODO Dispatch event to close
Rect viewRectG = new Rect();
getGlobalVisibleRect(viewRectG);
if (viewRectG.contains((int) ev.getRawX(), (int) ev.getRawY())) {
@@ -146,6 +144,7 @@ public class ListNodesWithAddButtonView extends RelativeLayout {
startGlobalAnimation();
}
}
+ */
return super.dispatchTouchEvent(ev);
}
@@ -171,12 +170,18 @@ public class ListNodesWithAddButtonView extends RelativeLayout {
public void setAddGroupClickListener(OnClickListener onClickListener) {
if (addGroupEnable)
- addGroup.setOnClickListener(onClickListener);
+ addGroup.setOnClickListener(view -> {
+ onClickListener.onClick(view);
+ startGlobalAnimation();
+ });
}
public void setAddEntryClickListener(OnClickListener onClickListener) {
if (addEntryEnable)
- addEntry.setOnClickListener(onClickListener);
+ addEntry.setOnClickListener(view -> {
+ onClickListener.onClick(view);
+ startGlobalAnimation();
+ });
}
private void startGlobalAnimation() {
diff --git a/app/src/main/res/layout/add_node_button.xml b/app/src/main/res/layout/add_node_button.xml
new file mode 100644
index 000000000..a4db3c651
--- /dev/null
+++ b/app/src/main/res/layout/add_node_button.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/list_nodes_with_add_button.xml b/app/src/main/res/layout/list_nodes_with_add_button.xml
index 5bc435daf..2857480dc 100644
--- a/app/src/main/res/layout/list_nodes_with_add_button.xml
+++ b/app/src/main/res/layout/list_nodes_with_add_button.xml
@@ -72,38 +72,11 @@
android:layout_below="@+id/toolbar" />
-
-
-
-
-
+ android:layout_height="wrap_content" />
\ No newline at end of file