Skip to content

Commit 705d4b9

Browse files
committed
Search menu for file explorer
1 parent 9071aeb commit 705d4b9

File tree

7 files changed

+126
-70
lines changed

7 files changed

+126
-70
lines changed

app/src/main/java/com/duy/ccppcompiler/packagemanager/PackageManagerActivity.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -207,15 +207,18 @@ public boolean onOptionsItemSelected(MenuItem item) {
207207

208208
} else if (i == R.id.action_repo_mirrors) {
209209
editReposList();
210-
} else if (i == android.R.id.home) {
211-
if (!mSearchView.isIconified()) {
212-
mSearchView.setIconified(true);
213-
return true;
214-
}
215210
}
216211
return super.onOptionsItemSelected(item);
217212
}
218213

214+
@Override
215+
public void onBackPressed() {
216+
if (!mSearchView.isIconified()) {
217+
mSearchView.setIconified(true);
218+
} else {
219+
super.onBackPressed();
220+
}
221+
}
219222

220223
@UiThread
221224
protected void showPackages(List<PackageInfo> repo) {

libeditor/src/main/java/com/duy/file/explorer/FileExplorerActivity.java

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import android.os.Environment;
2525
import android.support.annotation.Nullable;
2626
import android.support.v7.app.AlertDialog;
27+
import android.support.v7.widget.SearchView;
2728
import android.support.v7.widget.Toolbar;
2829
import android.text.TextUtils;
2930
import android.view.Menu;
@@ -65,7 +66,8 @@ public class FileExplorerActivity extends ThemeSupportActivity implements View.O
6566
private String mLastPath;
6667
private String mHomePath;
6768
private FileClipboard fileClipboard;
68-
private MenuItem pasteMenu;
69+
private MenuItem mPasteMenu;
70+
private SearchView mSearchView;
6971

7072
public static void startPickFileActivity(Activity activity,
7173
@Nullable String destFile,
@@ -170,9 +172,26 @@ private void initFileView() {
170172
public boolean onCreateOptionsMenu(Menu menu) {
171173
getMenuInflater().inflate(R.menu.menu_explorer, menu);
172174

175+
// Retrieve the SearchView and plug it into SearchManager
176+
mSearchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
177+
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
178+
@Override
179+
public boolean onQueryTextSubmit(String query) {
180+
return false;
181+
}
182+
183+
@Override
184+
public boolean onQueryTextChange(String newText) {
185+
if (mFileListPagerFragment != null) {
186+
mFileListPagerFragment.filter(newText);
187+
}
188+
return false;
189+
}
190+
});
191+
173192
Preferences preferences = Preferences.getInstance(this);
174193
menu.findItem(R.id.show_hidden_files_menu).setChecked(preferences.isShowHiddenFiles());
175-
pasteMenu = menu.findItem(R.id.paste_menu);
194+
mPasteMenu = menu.findItem(R.id.paste_menu);
176195

177196
int sortId;
178197
switch (preferences.getFileSortType()) {
@@ -195,6 +214,15 @@ public boolean onCreateOptionsMenu(Menu menu) {
195214
return super.onCreateOptionsMenu(menu);
196215
}
197216

217+
@Override
218+
public void onBackPressed() {
219+
if (!mSearchView.isIconified()) {
220+
mSearchView.setIconified(true);
221+
} else {
222+
super.onBackPressed();
223+
}
224+
}
225+
198226
@Override
199227
public boolean onOptionsItemSelected(MenuItem item) {
200228
Preferences preferences = Preferences.getInstance(this);
@@ -333,9 +361,9 @@ public FileClipboard getFileClipboard() {
333361

334362
@Override
335363
public void onClipboardDataChanged() {
336-
if (pasteMenu == null)
364+
if (mPasteMenu == null)
337365
return;
338366

339-
pasteMenu.setVisible(getFileClipboard().canPaste());
367+
mPasteMenu.setVisible(getFileClipboard().canPaste());
340368
}
341369
}

libeditor/src/main/java/com/duy/file/explorer/FileExplorerView.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,6 @@ public interface FileExplorerView {
3030
void refresh();
3131

3232
void finish();
33+
34+
void filter(String query);
3335
}

libeditor/src/main/java/com/duy/file/explorer/FileListPagerFragment.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,14 @@
3636
import android.view.ViewGroup;
3737
import android.widget.Toast;
3838

39-
import com.duy.ide.editor.editor.R;
40-
import com.duy.ide.editor.editor.databinding.FileExplorerFragmentBinding;
4139
import com.duy.file.explorer.adapter.FileListItemAdapter;
4240
import com.duy.file.explorer.adapter.PathButtonAdapter;
4341
import com.duy.file.explorer.io.JecFile;
4442
import com.duy.file.explorer.listener.FileListResultListener;
4543
import com.duy.file.explorer.listener.OnClipboardPasteFinishListener;
4644
import com.duy.file.explorer.util.FileListSorter;
45+
import com.duy.ide.editor.editor.R;
46+
import com.duy.ide.editor.editor.databinding.FileExplorerFragmentBinding;
4747
import com.jecelyin.common.listeners.OnItemClickListener;
4848
import com.jecelyin.common.task.JecAsyncTask;
4949
import com.jecelyin.common.task.TaskListener;
@@ -89,7 +89,7 @@ public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
8989
@Override
9090
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
9191
action = new FileExplorerAction(getContext(), this, ((FileExplorerActivity) getActivity()).getFileClipboard(), this);
92-
adapter = new FileListItemAdapter();
92+
adapter = new FileListItemAdapter(getContext());
9393
adapter.setOnCheckedChangeListener(action);
9494
adapter.setOnItemClickListener(this);
9595
adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
@@ -288,6 +288,13 @@ public void finish() {
288288
getActivity().finish();
289289
}
290290

291+
@Override
292+
public void filter(String query) {
293+
if (adapter != null) {
294+
adapter.filter(query);
295+
}
296+
}
297+
291298
@Override
292299
public JecFile getCurrentDirectory() {
293300
return path;

libeditor/src/main/java/com/duy/file/explorer/adapter/FileListItemAdapter.java

Lines changed: 55 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,14 @@
1818

1919
package com.duy.file.explorer.adapter;
2020

21+
import android.content.Context;
2122
import android.content.res.Resources;
2223
import android.databinding.DataBindingUtil;
24+
import android.graphics.Color;
25+
import android.graphics.PorterDuff;
26+
import android.graphics.drawable.Drawable;
2327
import android.support.annotation.NonNull;
28+
import android.support.v4.content.ContextCompat;
2429
import android.support.v7.widget.RecyclerView;
2530
import android.text.TextUtils;
2631
import android.util.SparseIntArray;
@@ -53,8 +58,10 @@ public class FileListItemAdapter extends RecyclerView.Adapter<BindingViewHolder<
5358
private OnItemClickListener onItemClickListener;
5459
private JecFile[] mOriginalValues;
5560
private int itemCount;
61+
private Context context;
5662

57-
public FileListItemAdapter() {
63+
public FileListItemAdapter(Context context) {
64+
this.context = context;
5865
year = String.valueOf(Calendar.getInstance().get(Calendar.YEAR));
5966
checkedArray = new SparseIntArray();
6067
}
@@ -169,52 +176,52 @@ public void onBindViewHolder(final BindingViewHolder<FileListItemBinding> holder
169176
color = R.color.type_code;
170177
String extension = path.getExtension();
171178
switch (extension.toLowerCase()) {
172-
case "apk":
173-
icon = R.drawable.ic_apk_file_format;
174-
break;
175-
case "class":
176-
icon = R.drawable.ic_class_file_format;
177-
break;
178-
case "cpp":
179-
icon = R.drawable.ic_cpp_file_format;
180-
break;
181-
case "css":
182-
icon = R.drawable.ic_css_file_format;
183-
break;
184-
case "csv":
185-
icon = R.drawable.ic_csv_file_format;
186-
break;
187-
case "dtd":
188-
icon = R.drawable.ic_dtd_file_format;
189-
break;
190-
case "html":
191-
icon = R.drawable.ic_html_file_format;
192-
break;
193-
case "jar":
194-
icon = R.drawable.ic_jar_file_format;
195-
break;
196-
case "js":
197-
icon = R.drawable.ic_js_file_format;
198-
break;
199-
case "lua":
200-
icon = R.drawable.ic_lua_file_format;
201-
break;
202-
case "py":
203-
icon = R.drawable.ic_py_file_format;
204-
break;
205-
case "svg":
206-
icon = R.drawable.ic_svg_file_format;
207-
break;
208-
case "txt":
209-
icon = R.drawable.ic_txt_file_format;
210-
break;
211-
case "xml":
212-
icon = R.drawable.ic_xml_file_format;
213-
break;
179+
// case "apk":
180+
// icon = R.drawable.ic_apk_file_format;
181+
// break;
182+
// case "class":
183+
// icon = R.drawable.ic_class_file_format;
184+
// break;
185+
// case "cpp":
186+
// icon = R.drawable.ic_cpp_file_format;
187+
// break;
188+
// case "css":
189+
// icon = R.drawable.ic_css_file_format;
190+
// break;
191+
// case "csv":
192+
// icon = R.drawable.ic_csv_file_format;
193+
// break;
194+
// case "dtd":
195+
// icon = R.drawable.ic_dtd_file_format;
196+
// break;
197+
// case "html":
198+
// icon = R.drawable.ic_html_file_format;
199+
// break;
200+
// case "jar":
201+
// icon = R.drawable.ic_jar_file_format;
202+
// break;
203+
// case "js":
204+
// icon = R.drawable.ic_js_file_format;
205+
// break;
206+
// case "lua":
207+
// icon = R.drawable.ic_lua_file_format;
208+
// break;
209+
// case "py":
210+
// icon = R.drawable.ic_py_file_format;
211+
// break;
212+
// case "svg":
213+
// icon = R.drawable.ic_svg_file_format;
214+
// break;
215+
// case "txt":
216+
// icon = R.drawable.ic_txt_file_format;
217+
// break;
218+
// case "xml":
219+
// icon = R.drawable.ic_xml_file_format;
220+
// break;
214221
default:
215-
if (path.canExecutable()) {
222+
/* if (path.canExecutable()) {
216223
icon = R.drawable.ic_bin_file_format;
217-
} else if (mimeTypes.isTextFile(path)) {
224+
} else */if (mimeTypes.isTextFile(path)) {
218225
color = R.color.type_text;
219226
icon = R.drawable.file_type_text;
220227
} else {
@@ -226,7 +233,9 @@ public void onBindViewHolder(final BindingViewHolder<FileListItemBinding> holder
226233
}
227234

228235
final FileListItemBinding binding = holder.getBinding();
229-
binding.iconImageView.setDefaultImageResource(icon);
236+
Drawable drawable = ContextCompat.getDrawable(context, icon);
237+
drawable.setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP);
238+
binding.iconImageView.setDefaultImageResource(drawable);
230239
binding.iconImageView.setDefaultBackgroundColor(res.getColor(color));
231240

232241
FileItemModel item = new FileItemModel();

libeditor/src/main/java/com/duy/file/explorer/widget/IconImageView.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
package com.duy.file.explorer.widget;
2020

2121
import android.content.Context;
22-
import android.support.annotation.DrawableRes;
22+
import android.graphics.drawable.Drawable;
2323
import android.util.AttributeSet;
2424
import android.widget.Checkable;
2525

@@ -32,7 +32,7 @@
3232

3333
public class IconImageView extends RoundedImageView implements Checkable {
3434
private int defaultBackgroundColor;
35-
private int defaultImageResource;
35+
private Drawable defaultImageResource;
3636
private boolean checked;
3737

3838
public IconImageView(Context context) {
@@ -52,14 +52,19 @@ public void setDefaultBackgroundColor(int color) {
5252
defaultBackgroundColor = color;
5353
}
5454

55-
public void setDefaultImageResource(@DrawableRes int resId) {
56-
super.setImageResource(resId);
57-
defaultImageResource = resId;
55+
public void setDefaultImageResource(Drawable drawable) {
56+
super.setImageDrawable(drawable);
57+
defaultImageResource = drawable;
5858
}
5959

6060
public void reset() {
6161
setBackgroundColor(defaultBackgroundColor);
62-
setImageResource(defaultImageResource);
62+
setImageDrawable(defaultImageResource);
63+
}
64+
65+
@Override
66+
public boolean isChecked() {
67+
return checked;
6368
}
6469

6570
@Override
@@ -70,15 +75,10 @@ public void setChecked(boolean checked) {
7075
setImageResource(R.drawable.file_checked);
7176
} else {
7277
setBackgroundColor(defaultBackgroundColor);
73-
setImageResource(defaultImageResource);
78+
setImageDrawable(defaultImageResource);
7479
}
7580
}
7681

77-
@Override
78-
public boolean isChecked() {
79-
return checked;
80-
}
81-
8282
@Override
8383
public void toggle() {
8484
checked = !checked;

libeditor/src/main/res-file-expoler/menu/menu_explorer.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,13 @@
3636
android:visible="false"
3737
app:showAsAction="always" />
3838

39+
<item
40+
android:id="@+id/action_search"
41+
android:icon="@drawable/baseline_search_24"
42+
android:title="@string/filter_by_name"
43+
app:actionViewClass="android.support.v7.widget.SearchView"
44+
app:showAsAction="always" />
45+
3946
<item
4047
android:id="@+id/show_hidden_files_menu"
4148
android:checkable="true"

0 commit comments

Comments
 (0)