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