Skip to content

Commit 0f45c69

Browse files
committed
Code cleanup + indexing improvements
* Removed unused method * Only index all settings once -> Saves performance * Fixed some SonarLint reported problems
1 parent 52542e0 commit 0f45c69

6 files changed

Lines changed: 29 additions & 51 deletions

File tree

app/src/main/java/org/schabi/newpipe/settings/SettingsActivity.java

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,13 @@
2626
import org.schabi.newpipe.MainActivity;
2727
import org.schabi.newpipe.R;
2828
import org.schabi.newpipe.databinding.SettingsLayoutBinding;
29+
import org.schabi.newpipe.settings.preferencesearch.PreferenceParser;
2930
import org.schabi.newpipe.settings.preferencesearch.PreferenceSearchConfiguration;
3031
import org.schabi.newpipe.settings.preferencesearch.PreferenceSearchFragment;
3132
import org.schabi.newpipe.settings.preferencesearch.PreferenceSearchItem;
3233
import org.schabi.newpipe.settings.preferencesearch.PreferenceSearchResultHighlighter;
3334
import org.schabi.newpipe.settings.preferencesearch.PreferenceSearchResultListener;
35+
import org.schabi.newpipe.settings.preferencesearch.PreferenceSearcher;
3436
import org.schabi.newpipe.util.DeviceUtils;
3537
import org.schabi.newpipe.util.KeyboardUtil;
3638
import org.schabi.newpipe.util.ThemeHelper;
@@ -58,9 +60,8 @@
5860
* along with NewPipe. If not, see <http://www.gnu.org/licenses/>.
5961
*/
6062

61-
public class SettingsActivity extends AppCompatActivity
62-
implements
63-
BasePreferenceFragment.OnPreferenceStartFragmentCallback,
63+
public class SettingsActivity extends AppCompatActivity implements
64+
PreferenceFragmentCompat.OnPreferenceStartFragmentCallback,
6465
PreferenceSearchResultListener {
6566
private static final String TAG = "SettingsActivity";
6667
private static final boolean DEBUG = MainActivity.DEBUG;
@@ -165,6 +166,7 @@ private void showSettingsFragment(final Fragment fragment) {
165166
@Override
166167
protected void onDestroy() {
167168
setMenuSearchItem(null);
169+
searchFragment = null;
168170
super.onDestroy();
169171
}
170172

@@ -183,26 +185,33 @@ private void initSearch(final SettingsLayoutBinding settingsLayoutBinding) {
183185
RxTextView.textChanges(searchEditText)
184186
// Wait some time after the last input before actually searching
185187
.debounce(200, TimeUnit.MILLISECONDS)
186-
.subscribe(v -> runOnUiThread(() -> onSearchChanged()));
188+
.subscribe(v -> runOnUiThread(this::onSearchChanged));
187189

188190
// Configure clear button
189191
searchContainer.findViewById(R.id.toolbar_search_clear)
190192
.setOnClickListener(ev -> resetSearchText());
191193

192-
// Build search configuration using SettingsResourceRegistry
193194
prepareSearchConfig();
194195

196+
// Build search configuration using SettingsResourceRegistry
195197
final PreferenceSearchConfiguration config = new PreferenceSearchConfiguration();
196198
SettingsResourceRegistry.getInstance().getAllEntries().stream()
197199
.filter(SettingsResourceRegistry.SettingRegistryEntry::isSearchable)
198200
.map(SettingsResourceRegistry.SettingRegistryEntry::getPreferencesResId)
199201
.forEach(config::index);
200202

201-
searchFragment = new PreferenceSearchFragment(config);
203+
// Build search items
204+
final PreferenceParser parser = new PreferenceParser(getApplicationContext(), config);
205+
final PreferenceSearcher searcher = new PreferenceSearcher(config);
206+
config.getFiles().stream()
207+
.map(parser::parse)
208+
.forEach(searcher::add);
209+
210+
searchFragment = new PreferenceSearchFragment(searcher);
202211
}
203212

204213
private void prepareSearchConfig() {
205-
// Check if the update settings should be available
214+
// Check if the update settings are available
206215
if (!CheckForNewAppVersion.isReleaseApk(App.getApp())) {
207216
SettingsResourceRegistry.getInstance()
208217
.getEntryByPreferencesResId(R.xml.update_settings)

app/src/main/java/org/schabi/newpipe/settings/preferencesearch/PreferenceFuzzySearchFunction.java

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22

33
import android.text.TextUtils;
44

5-
import androidx.annotation.NonNull;
6-
75
import org.schabi.newpipe.settings.preferencesearch.similarity.FuzzyScore;
86

97
import java.util.Comparator;
@@ -22,7 +20,7 @@ public Stream<PreferenceSearchItem> search(
2220
final Stream<PreferenceSearchItem> allAvailable,
2321
final String keyword
2422
) {
25-
final float maxScore = (keyword.length() + 1) * 3 - 2; // First can't get +2 bonus score
23+
final int maxScore = (keyword.length() + 1) * 3 - 2; // First can't get +2 bonus score
2624

2725
return allAvailable
2826
// General search
@@ -39,14 +37,6 @@ public Stream<PreferenceSearchItem> search(
3937
.limit(20);
4038
}
4139

42-
private float computeFuzzyScore(
43-
@NonNull final PreferenceSearchItem item,
44-
@NonNull final Function<PreferenceSearchItem, String> resolver,
45-
@NonNull final String keyword
46-
) {
47-
return FUZZY_SCORE.fuzzyScore(resolver.apply(item), keyword);
48-
}
49-
5040
static class FuzzySearchGeneralDTO {
5141
private final PreferenceSearchItem item;
5242
private final float score;

app/src/main/java/org/schabi/newpipe/settings/preferencesearch/PreferenceParser.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
/**
1919
* Parses the corresponding preference-file(s).
2020
*/
21-
class PreferenceParser {
21+
public class PreferenceParser {
2222
private static final String TAG = "PreferenceParser";
2323

2424
private static final String NS_ANDROID = "http://schemas.android.com/apk/res/android";
@@ -28,7 +28,7 @@ class PreferenceParser {
2828
private final Map<String, ?> allPreferences;
2929
private final PreferenceSearchConfiguration searchConfiguration;
3030

31-
PreferenceParser(
31+
public PreferenceParser(
3232
final Context context,
3333
final PreferenceSearchConfiguration searchConfiguration
3434
) {

app/src/main/java/org/schabi/newpipe/settings/preferencesearch/PreferenceSearchConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public SearchIndexItem index(@XmlRes final int resId) {
5050
return item;
5151
}
5252

53-
List<SearchIndexItem> getFiles() {
53+
public List<SearchIndexItem> getFiles() {
5454
return itemsToIndex;
5555
}
5656

app/src/main/java/org/schabi/newpipe/settings/preferencesearch/PreferenceSearchFragment.java

Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -24,29 +24,15 @@
2424
public class PreferenceSearchFragment extends Fragment {
2525
public static final String NAME = PreferenceSearchFragment.class.getSimpleName();
2626

27-
private final PreferenceSearchConfiguration searchConfiguration;
28-
2927
private final PreferenceSearcher searcher;
28+
3029
private SearchViewHolder viewHolder;
3130
private PreferenceSearchAdapter adapter;
3231

33-
public PreferenceSearchFragment(final PreferenceSearchConfiguration searchConfiguration) {
34-
this.searchConfiguration = searchConfiguration;
35-
this.searcher = new PreferenceSearcher(searchConfiguration);
36-
}
37-
38-
@Override
39-
public void onCreate(@Nullable final Bundle savedInstanceState) {
40-
super.onCreate(savedInstanceState);
41-
42-
final PreferenceParser parser =
43-
new PreferenceParser(
44-
getContext(),
45-
searchConfiguration);
46-
47-
searchConfiguration.getFiles().stream()
48-
.map(parser::parse)
49-
.forEach(searcher::add);
32+
public PreferenceSearchFragment(
33+
final PreferenceSearcher searcher
34+
) {
35+
this.searcher = searcher;
5036
}
5137

5238
@Nullable
@@ -98,12 +84,6 @@ public void onItemClicked(final PreferenceSearchItem item) {
9884
((PreferenceSearchResultListener) getActivity()).onSearchResultClicked(item);
9985
}
10086

101-
@Override
102-
public void onDestroy() {
103-
searcher.close();
104-
super.onDestroy();
105-
}
106-
10787
private static class SearchViewHolder {
10888
private final RecyclerView recyclerView;
10989
private final View emptyStateView;

app/src/main/java/org/schabi/newpipe/settings/preferencesearch/PreferenceSearcher.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@
66
import java.util.List;
77
import java.util.stream.Collectors;
88

9-
class PreferenceSearcher implements AutoCloseable {
9+
public class PreferenceSearcher {
1010
private final List<PreferenceSearchItem> allEntries = new ArrayList<>();
1111

1212
private final PreferenceSearchConfiguration configuration;
1313

14-
PreferenceSearcher(final PreferenceSearchConfiguration configuration) {
14+
public PreferenceSearcher(final PreferenceSearchConfiguration configuration) {
1515
this.configuration = configuration;
1616
}
1717

18-
void add(final List<PreferenceSearchItem> items) {
18+
public void add(final List<PreferenceSearchItem> items) {
1919
allEntries.addAll(items);
2020
}
2121

@@ -29,8 +29,7 @@ List<PreferenceSearchItem> searchFor(final String keyword) {
2929
.collect(Collectors.toList());
3030
}
3131

32-
@Override
33-
public void close() {
32+
public void clear() {
3433
allEntries.clear();
3534
}
3635
}

0 commit comments

Comments
 (0)