Fix search callbacks being delivered to the wrong controllers

Closes #131
multisite
Floens 10 years ago
parent a3b0a1ff52
commit b96c9b3945
  1. 6
      Clover/app/src/main/java/org/floens/chan/ui/controller/ThemeSettingsController.java
  2. 23
      Clover/app/src/main/java/org/floens/chan/ui/controller/ToolbarNavigationController.java
  3. 14
      Clover/app/src/main/java/org/floens/chan/ui/toolbar/Toolbar.java

@ -232,16 +232,16 @@ public class ThemeSettingsController extends Controller implements View.OnClickL
}
@Override
public void onSearchVisibilityChanged(boolean visible) {
public void onSearchVisibilityChanged(NavigationItem item, boolean visible) {
}
@Override
public String getSearchHint() {
public String getSearchHint(NavigationItem item) {
return null;
}
@Override
public void onSearchEntered(String entered) {
public void onSearchEntered(NavigationItem item, String entered) {
}
});
toolbar.setBackgroundColor(theme.primaryColor.color);

@ -24,6 +24,7 @@ import org.floens.chan.R;
import org.floens.chan.controller.Controller;
import org.floens.chan.controller.ControllerTransition;
import org.floens.chan.controller.NavigationController;
import org.floens.chan.ui.toolbar.NavigationItem;
import org.floens.chan.ui.toolbar.Toolbar;
public abstract class ToolbarNavigationController extends NavigationController implements Toolbar.ToolbarCallback {
@ -96,23 +97,27 @@ public abstract class ToolbarNavigationController extends NavigationController i
}
@Override
public String getSearchHint() {
public String getSearchHint(NavigationItem item) {
return context.getString(R.string.search_hint);
}
@Override
public void onSearchVisibilityChanged(boolean visible) {
Controller top = getTop();
if (top instanceof ToolbarSearchCallback) {
((ToolbarSearchCallback) top).onSearchVisibilityChanged(visible);
public void onSearchVisibilityChanged(NavigationItem item, boolean visible) {
for (Controller controller : childControllers) {
if (controller.navigationItem == item) {
((ToolbarSearchCallback) controller).onSearchVisibilityChanged(visible);
break;
}
}
}
@Override
public void onSearchEntered(String entered) {
Controller top = getTop();
if (top instanceof ToolbarSearchCallback) {
((ToolbarSearchCallback) top).onSearchEntered(entered);
public void onSearchEntered(NavigationItem item, String entered) {
for (Controller controller : childControllers) {
if (controller.navigationItem == item) {
((ToolbarSearchCallback) controller).onSearchEntered(entered);
break;
}
}
}

@ -279,7 +279,7 @@ public class Toolbar extends LinearLayout implements View.OnClickListener {
toItem.search = true;
openKeyboardAfterSearchViewCreated = true;
setNavigationItemInternal(true, false, toItem);
callback.onSearchVisibilityChanged(true);
callback.onSearchVisibilityChanged(toItem, true);
return true;
} else {
return false;
@ -291,7 +291,7 @@ public class Toolbar extends LinearLayout implements View.OnClickListener {
toItem.search = false;
toItem.searchText = null;
setNavigationItemInternal(true, false, toItem);
callback.onSearchVisibilityChanged(false);
callback.onSearchVisibilityChanged(toItem, false);
return true;
} else {
return false;
@ -388,7 +388,7 @@ public class Toolbar extends LinearLayout implements View.OnClickListener {
@Override
public void onSearchEntered(String entered) {
item.searchText = entered;
callback.onSearchEntered(entered);
callback.onSearchEntered(item, entered);
}
});
@ -396,7 +396,7 @@ public class Toolbar extends LinearLayout implements View.OnClickListener {
searchLayout.setText(item.searchText);
}
searchLayout.setHint(callback.getSearchHint());
searchLayout.setHint(callback.getSearchHint(item));
if (openKeyboardAfterSearchViewCreated) {
openKeyboardAfterSearchViewCreated = false;
@ -486,10 +486,10 @@ public class Toolbar extends LinearLayout implements View.OnClickListener {
public interface ToolbarCallback {
void onMenuOrBackClicked(boolean isArrow);
void onSearchVisibilityChanged(boolean visible);
void onSearchVisibilityChanged(NavigationItem item, boolean visible);
String getSearchHint();
String getSearchHint(NavigationItem item);
void onSearchEntered(String entered);
void onSearchEntered(NavigationItem item, String entered);
}
}

Loading…
Cancel
Save