Skip to content

Commit ce3c645

Browse files
authored
Merge pull request #1395 from Neamar/revert-1377-remove-tag-menu
Add back feature: tag menu
2 parents ba6349b + 17a7abc commit ce3c645

File tree

6 files changed

+408
-39
lines changed

6 files changed

+408
-39
lines changed

app/src/main/java/fr/neamar/kiss/MainActivity.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -526,8 +526,10 @@ public void onMenuButtonClicked(View menuButton) {
526526
if (!isViewingSearchResults()) {
527527
return;
528528
}
529-
this.menuButton.showContextMenu();
530-
this.menuButton.performHapticFeedback(LONG_PRESS);
529+
if (!forwarderManager.onMenuButtonClicked(this.menuButton)) {
530+
this.menuButton.showContextMenu();
531+
this.menuButton.performHapticFeedback(LONG_PRESS);
532+
}
531533
}
532534

533535
@Override

app/src/main/java/fr/neamar/kiss/SettingsActivity.java

Lines changed: 74 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import android.view.Menu;
2222
import android.view.MenuInflater;
2323
import android.view.MenuItem;
24+
import android.view.View;
2425
import android.widget.Toast;
2526
import android.widget.Toolbar;
2627

@@ -36,6 +37,7 @@
3637
import fr.neamar.kiss.broadcast.IncomingCallHandler;
3738
import fr.neamar.kiss.dataprovider.simpleprovider.SearchProvider;
3839
import fr.neamar.kiss.dataprovider.simpleprovider.TagsProvider;
40+
import fr.neamar.kiss.forwarder.TagsMenu;
3941
import fr.neamar.kiss.pojo.AppPojo;
4042
import fr.neamar.kiss.pojo.Pojo;
4143
import fr.neamar.kiss.pojo.TagDummyPojo;
@@ -135,6 +137,7 @@ protected void onCreate(Bundle savedInstanceState) {
135137

136138
SettingsActivity.this.addCustomSearchProvidersPreferences(prefs);
137139

140+
SettingsActivity.this.addHiddenTagsTogglesInformation(prefs);
138141
SettingsActivity.this.addTagsFavInformation();
139142
};
140143

@@ -175,7 +178,12 @@ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preferen
175178
Toolbar toolbar = PreferenceScreenHelper.findToolbar((PreferenceScreen) preference);
176179

177180
if (toolbar != null) {
178-
toolbar.setNavigationOnClickListener(v -> dialog.dismiss());
181+
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
182+
@Override
183+
public void onClick(View v) {
184+
dialog.dismiss();
185+
}
186+
});
179187
}
180188
}
181189

@@ -193,7 +201,12 @@ private void addExcludedAppSettings() {
193201

194202
PreferenceScreen excludedAppsScreen = ExcludePreferenceScreen.getInstance(
195203
this,
196-
AppPojo::isExcluded,
204+
new ExcludePreferenceScreen.IsExcludedCallback() {
205+
@Override
206+
public boolean isExcluded(@NonNull AppPojo app) {
207+
return app.isExcluded();
208+
}
209+
},
197210
new ExcludePreferenceScreen.OnExcludedListener() {
198211
@Override
199212
public void onExcluded(final @NonNull AppPojo app) {
@@ -218,7 +231,12 @@ private void addExcludedFromHistoryAppSettings() {
218231

219232
PreferenceScreen excludedAppsScreen = ExcludePreferenceScreen.getInstance(
220233
this,
221-
AppPojo::isExcludedFromHistory,
234+
new ExcludePreferenceScreen.IsExcludedCallback() {
235+
@Override
236+
public boolean isExcluded(@NonNull AppPojo app) {
237+
return app.isExcludedFromHistory();
238+
}
239+
},
222240
new ExcludePreferenceScreen.OnExcludedListener() {
223241
@Override
224242
public void onExcluded(final @NonNull AppPojo app) {
@@ -324,35 +342,37 @@ private void addCustomSearchProvidersDelete(final SharedPreferences prefs) {
324342
multiPreference.setOrder(20);
325343
PreferenceGroup category = (PreferenceGroup) findPreference("web-providers");
326344

327-
multiPreference.setOnPreferenceChangeListener((preference, newValue) -> {
328-
Set<String> searchProvidersToDelete = (Set<String>) newValue;
329-
Set<String> availableSearchProviders1 = PreferenceManager.getDefaultSharedPreferences(SettingsActivity.this).getStringSet("available-search-providers", SearchProvider.getDefaultSearchProviders(SettingsActivity.this));
345+
multiPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
346+
@Override
347+
public boolean onPreferenceChange(Preference preference, Object newValue) {
348+
Set<String> searchProvidersToDelete = (Set<String>) newValue;
349+
Set<String> availableSearchProviders = PreferenceManager.getDefaultSharedPreferences(SettingsActivity.this).getStringSet("available-search-providers", SearchProvider.getDefaultSearchProviders(SettingsActivity.this));
330350

331-
Set<String> updatedProviders = new TreeSet<>(PreferenceManager.getDefaultSharedPreferences(SettingsActivity.this).getStringSet("available-search-providers", SearchProvider.getDefaultSearchProviders(SettingsActivity.this)));
351+
Set<String> updatedProviders = new TreeSet<>(PreferenceManager.getDefaultSharedPreferences(SettingsActivity.this).getStringSet("available-search-providers", SearchProvider.getDefaultSearchProviders(SettingsActivity.this)));
332352

333-
assert availableSearchProviders1 != null;
334-
for (String searchProvider : availableSearchProviders1) {
335-
for (String providerToDelete : searchProvidersToDelete) {
336-
if (searchProvider.startsWith(providerToDelete + "|")) {
337-
updatedProviders.remove(searchProvider);
353+
for (String searchProvider : availableSearchProviders) {
354+
for (String providerToDelete : searchProvidersToDelete) {
355+
if (searchProvider.startsWith(providerToDelete + "|")) {
356+
updatedProviders.remove(searchProvider);
357+
}
338358
}
339359
}
340-
}
341-
SharedPreferences.Editor editor = prefs.edit();
342-
editor.putStringSet("available-search-providers", updatedProviders);
343-
editor.putStringSet("deleting-search-providers-names", updatedProviders);
344-
editor.apply();
360+
SharedPreferences.Editor editor = prefs.edit();
361+
editor.putStringSet("available-search-providers", updatedProviders);
362+
editor.putStringSet("deleting-search-providers-names", updatedProviders);
363+
editor.apply();
345364

346-
if (searchProvidersToDelete.size() > 0) {
347-
Toast.makeText(SettingsActivity.this, R.string.search_provider_deleted, Toast.LENGTH_LONG).show();
348-
}
365+
if (searchProvidersToDelete.size() > 0) {
366+
Toast.makeText(SettingsActivity.this, R.string.search_provider_deleted, Toast.LENGTH_LONG).show();
367+
}
349368

350-
// Reload search list
351-
final SearchProvider provider = KissApplication.getApplication(SettingsActivity.this).getDataHandler().getSearchProvider();
352-
if (provider != null) {
353-
provider.reload();
369+
// Reload search list
370+
final SearchProvider provider = KissApplication.getApplication(SettingsActivity.this).getDataHandler().getSearchProvider();
371+
if (provider != null) {
372+
provider.reload();
373+
}
374+
return true;
354375
}
355-
return true;
356376
});
357377

358378
category.addPreference(multiPreference);
@@ -422,14 +442,12 @@ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, Strin
422442
}
423443
} else if ("pref-fav-tags-list".equals(key)) {
424444
// after we edit the fav tags list update DataHandler
425-
Set<String> favTags = sharedPreferences.getStringSet(key, Collections.emptySet());
426-
assert favTags != null;
445+
Set<String> favTags = sharedPreferences.getStringSet(key, Collections.<String>emptySet());
427446
DataHandler dh = KissApplication.getApplication(this).getDataHandler();
428447
ArrayList<Pojo> favoritesPojo = dh.getFavorites();
429-
for (Pojo pojo : favoritesPojo) {
448+
for (Pojo pojo : favoritesPojo)
430449
if (pojo instanceof TagDummyPojo && !favTags.contains(pojo.getName()))
431450
dh.removeFromFavorites(pojo.id);
432-
}
433451
for (String tagName : favTags)
434452
dh.addToFavorites(TagsProvider.generateUniqueId(tagName));
435453
}
@@ -485,12 +503,15 @@ private void fixSummaries() {
485503
if (historyLength < 300) {
486504
getPreferenceScreen().removePreference(rateApp);
487505
} else {
488-
rateApp.setOnPreferenceClickListener(preference -> {
489-
Intent intent = new Intent(Intent.ACTION_VIEW);
490-
intent.setData(Uri.parse("market://details?id=" + getApplicationContext().getPackageName()));
491-
startActivity(intent);
492-
493-
return true;
506+
rateApp.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
507+
@Override
508+
public boolean onPreferenceClick(Preference preference) {
509+
Intent intent = new Intent(Intent.ACTION_VIEW);
510+
intent.setData(Uri.parse("market://details?id=" + getApplicationContext().getPackageName()));
511+
startActivity(intent);
512+
513+
return true;
514+
}
494515
});
495516
}
496517
}
@@ -514,6 +535,24 @@ private void setListPreferenceIconsPacksData(ListPreference lp) {
514535
lp.setEntryValues(entryValues);
515536
}
516537

538+
private void addHiddenTagsTogglesInformation(SharedPreferences prefs) {
539+
Set<String> menuTags = TagsMenu.getPrefTags(prefs, getApplicationContext());
540+
MultiSelectListPreference selectListPreference = (MultiSelectListPreference) findPreference("pref-toggle-tags-list");
541+
Set<String> tagsSet = KissApplication.getApplication(this)
542+
.getDataHandler()
543+
.getTagsHandler()
544+
.getAllTagsAsSet();
545+
546+
// append tags that are available to toggle now
547+
tagsSet.addAll(menuTags);
548+
549+
String[] tagArray = tagsSet.toArray(new String[0]);
550+
Arrays.sort(tagArray);
551+
selectListPreference.setEntries(tagArray);
552+
selectListPreference.setEntryValues(tagArray);
553+
selectListPreference.setValues(menuTags);
554+
}
555+
517556
private void addTagsFavInformation() {
518557
Set<String> favTags = getFavTags(getApplicationContext());
519558
MultiSelectListPreference selectListPreference = (MultiSelectListPreference) findPreference("pref-fav-tags-list");

app/src/main/java/fr/neamar/kiss/forwarder/ForwarderManager.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public class ForwarderManager extends Forwarder {
1818
private final Favorites favoritesForwarder;
1919
private final Permission permissionForwarder;
2020
private final OreoShortcuts shortcutsForwarder;
21+
private final TagsMenu tagsMenu;
2122
private final Notification notificationForwarder;
2223

2324

@@ -32,6 +33,7 @@ public ForwarderManager(MainActivity mainActivity) {
3233
this.permissionForwarder = new Permission(mainActivity);
3334
this.shortcutsForwarder = new OreoShortcuts(mainActivity);
3435
this.notificationForwarder = new Notification(mainActivity);
36+
this.tagsMenu = new TagsMenu(mainActivity);
3537
}
3638

3739
public void onCreate() {
@@ -40,6 +42,8 @@ public void onCreate() {
4042
interfaceTweaks.onCreate();
4143
experienceTweaks.onCreate();
4244
shortcutsForwarder.onCreate();
45+
tagsMenu.onCreate();
46+
4347
}
4448

4549
public void onStart() {
@@ -50,6 +54,7 @@ public void onResume() {
5054
interfaceTweaks.onResume();
5155
experienceTweaks.onResume();
5256
notificationForwarder.onResume();
57+
tagsMenu.onResume();
5358
}
5459

5560
public void onPause() {
@@ -102,4 +107,12 @@ public void onFavoriteChange() {
102107
public void onDisplayKissBar(Boolean display) {
103108
experienceTweaks.onDisplayKissBar(display);
104109
}
110+
111+
public boolean onMenuButtonClicked(View menuButton) {
112+
if (tagsMenu.isTagMenuEnabled()) {
113+
mainActivity.registerPopup(tagsMenu.showMenu(menuButton));
114+
return true;
115+
}
116+
return false;
117+
}
105118
}

0 commit comments

Comments
 (0)