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

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