1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
package com.mapswithme.maps.editor;
import android.os.Bundle;
import android.support.annotation.CallSuper;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.mapswithme.maps.R;
import com.mapswithme.maps.base.BaseMwmRecyclerFragment;
import com.mapswithme.maps.editor.data.FeatureCategory;
import com.mapswithme.maps.widget.SearchToolbarController;
import com.mapswithme.maps.widget.ToolbarController;
import com.mapswithme.util.Language;
import com.mapswithme.util.Utils;
import java.util.Arrays;
public class FeatureCategoryFragment extends BaseMwmRecyclerFragment<FeatureCategoryAdapter>
{
private FeatureCategory mSelectedCategory;
protected ToolbarController mToolbarController;
public interface FeatureCategoryListener
{
void onFeatureCategorySelected(FeatureCategory category);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
return inflater.inflate(R.layout.fragment_categories, container, false);
}
@CallSuper
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState)
{
super.onViewCreated(view, savedInstanceState);
if (getArguments() != null && getArguments().containsKey(FeatureCategoryActivity.EXTRA_FEATURE_CATEGORY))
mSelectedCategory = getArguments().getParcelable(FeatureCategoryActivity.EXTRA_FEATURE_CATEGORY);
mToolbarController = new SearchToolbarController(view, getActivity())
{
@Override
protected void onTextChanged(String query)
{
setFilter(query);
}
};
}
private void setFilter(String query)
{
String locale = Language.getDefaultLocale();
String[] creatableTypes = query.isEmpty()
? Editor.nativeGetAllCreatableFeatureTypes(locale)
: Editor.nativeSearchCreatableFeatureTypes(query, locale);
FeatureCategory[] categories = makeFeatureCategoriesFromTypes(creatableTypes);
getAdapter().setCategories(categories);
}
@NonNull
@Override
protected FeatureCategoryAdapter createAdapter()
{
String locale = Language.getDefaultLocale();
String[] creatableTypes = Editor.nativeGetAllCreatableFeatureTypes(locale);
FeatureCategory[] categories = makeFeatureCategoriesFromTypes(creatableTypes);
return new FeatureCategoryAdapter(this, categories, mSelectedCategory);
}
@NonNull
private FeatureCategory[] makeFeatureCategoriesFromTypes(@NonNull String[] creatableTypes)
{
FeatureCategory[] categories = new FeatureCategory[creatableTypes.length];
for (int i = 0; i < creatableTypes.length; ++i)
{
String localizedType = Utils.getLocalizedFeatureType(getContext(), creatableTypes[i]);
categories[i] = new FeatureCategory(creatableTypes[i], localizedType);
}
Arrays.sort(categories, (lhs, rhs) ->
lhs.getLocalizedTypeName().compareTo(rhs.getLocalizedTypeName()));
return categories;
}
public void selectCategory(FeatureCategory category)
{
if (getActivity() instanceof FeatureCategoryListener)
((FeatureCategoryListener) getActivity()).onFeatureCategorySelected(category);
else if (getParentFragment() instanceof FeatureCategoryListener)
((FeatureCategoryListener) getParentFragment()).onFeatureCategorySelected(category);
}
}
|