diff --git a/app/src/main/java/com/simplemobiletools/filemanager/Breadcrumbs.java b/app/src/main/java/com/simplemobiletools/filemanager/Breadcrumbs.java
index 6816deae..66e94fe4 100644
--- a/app/src/main/java/com/simplemobiletools/filemanager/Breadcrumbs.java
+++ b/app/src/main/java/com/simplemobiletools/filemanager/Breadcrumbs.java
@@ -10,9 +10,10 @@ import android.view.WindowManager;
import android.widget.LinearLayout;
import android.widget.TextView;
-public class Breadcrumbs extends LinearLayout {
+public class Breadcrumbs extends LinearLayout implements View.OnClickListener {
private LayoutInflater mInflater;
private int mDeviceWidth;
+ private BreadcrumbsListener mListener;
public Breadcrumbs(Context context, AttributeSet attrs) {
super(context, attrs);
@@ -27,15 +28,20 @@ public class Breadcrumbs extends LinearLayout {
mDeviceWidth = deviceDisplay.x;
}
+ public void setListener(BreadcrumbsListener listener) {
+ mListener = listener;
+ }
+
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
final int paddingTop = getPaddingTop();
final int paddingLeft = getPaddingLeft();
- final int childRight = getMeasuredWidth() - getPaddingRight();
+ final int paddingRight = getPaddingRight();
+ final int childRight = getMeasuredWidth() - paddingRight;
final int childBottom = getMeasuredHeight() - getPaddingBottom();
final int childHeight = childBottom - paddingTop;
- final int usableWidth = mDeviceWidth - paddingLeft - getPaddingRight();
+ final int usableWidth = mDeviceWidth - paddingLeft - paddingRight;
int maxHeight = 0;
int curWidth;
int curHeight;
@@ -91,17 +97,30 @@ public class Breadcrumbs extends LinearLayout {
}
public void setInitialBreadcrumb() {
- addBreadcrumb("home");
+ addBreadcrumb(getResources().getString(R.string.initial_breadcrumb));
}
public void addBreadcrumb(String text) {
final View view = mInflater.inflate(R.layout.breadcrumb_item, null, false);
+ view.setTag(getChildCount());
final TextView textView = (TextView) view.findViewById(R.id.breadcrumb_text);
textView.setText(text);
addView(view);
+ view.setOnClickListener(this);
}
public void removeBreadcrumb() {
removeView(getChildAt(getChildCount() - 1));
}
+
+ @Override
+ public void onClick(View v) {
+ if (mListener != null) {
+ mListener.breadcrumbClicked((Integer) v.getTag());
+ }
+ }
+
+ public interface BreadcrumbsListener {
+ void breadcrumbClicked(int id);
+ }
}
diff --git a/app/src/main/java/com/simplemobiletools/filemanager/activities/MainActivity.java b/app/src/main/java/com/simplemobiletools/filemanager/activities/MainActivity.java
index 2be4b366..237f47bd 100644
--- a/app/src/main/java/com/simplemobiletools/filemanager/activities/MainActivity.java
+++ b/app/src/main/java/com/simplemobiletools/filemanager/activities/MainActivity.java
@@ -21,7 +21,7 @@ import com.simplemobiletools.filemanager.models.FileDirItem;
import butterknife.BindView;
import butterknife.ButterKnife;
-public class MainActivity extends AppCompatActivity implements ItemsFragment.ItemInteractionListener {
+public class MainActivity extends AppCompatActivity implements ItemsFragment.ItemInteractionListener, Breadcrumbs.BreadcrumbsListener {
@BindView(R.id.breadcrumbs) Breadcrumbs mBreadcrumbs;
private static final int STORAGE_PERMISSION = 1;
@@ -31,6 +31,7 @@ public class MainActivity extends AppCompatActivity implements ItemsFragment.Ite
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
+ mBreadcrumbs.setListener(this);
tryInitFileManager();
}
@@ -112,4 +113,14 @@ public class MainActivity extends AppCompatActivity implements ItemsFragment.Ite
openPath(item.getPath());
mBreadcrumbs.addBreadcrumb(" -> " + item.getName());
}
+
+ @Override
+ public void breadcrumbClicked(int id) {
+ final int children = mBreadcrumbs.getChildCount() - 1;
+ final int removeCnt = children - id;
+ for (int i = 0; i < removeCnt; i++) {
+ getSupportFragmentManager().popBackStack();
+ mBreadcrumbs.removeBreadcrumb();
+ }
+ }
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 622f2074..a56eaf86 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -23,6 +23,7 @@
Could not write to the selected destination
Could not copy the files
Copying
+ home
- 1 item deleted