@ -21,6 +21,7 @@ import android.content.Context;
import android.content.res.Configuration ;
import android.content.res.Configuration ;
import android.view.KeyEvent ;
import android.view.KeyEvent ;
import android.view.LayoutInflater ;
import android.view.LayoutInflater ;
import android.view.View ;
import android.view.ViewGroup ;
import android.view.ViewGroup ;
import org.floens.chan.controller.transition.FadeInTransition ;
import org.floens.chan.controller.transition.FadeInTransition ;
@ -82,6 +83,8 @@ public abstract class Controller {
Logger . test ( getClass ( ) . getSimpleName ( ) + " onShow" ) ;
Logger . test ( getClass ( ) . getSimpleName ( ) + " onShow" ) ;
}
}
view . setVisibility ( View . VISIBLE ) ;
for ( Controller controller : childControllers ) {
for ( Controller controller : childControllers ) {
if ( ! controller . shown ) {
if ( ! controller . shown ) {
controller . onShow ( ) ;
controller . onShow ( ) ;
@ -95,6 +98,8 @@ public abstract class Controller {
Logger . test ( getClass ( ) . getSimpleName ( ) + " onHide" ) ;
Logger . test ( getClass ( ) . getSimpleName ( ) + " onHide" ) ;
}
}
view . setVisibility ( View . GONE ) ;
for ( Controller controller : childControllers ) {
for ( Controller controller : childControllers ) {
if ( controller . shown ) {
if ( controller . shown ) {
controller . onHide ( ) ;
controller . onHide ( ) ;
@ -111,6 +116,10 @@ public abstract class Controller {
while ( childControllers . size ( ) > 0 ) {
while ( childControllers . size ( ) > 0 ) {
removeChildController ( childControllers . get ( 0 ) ) ;
removeChildController ( childControllers . get ( 0 ) ) ;
}
}
if ( AndroidUtils . removeFromParentView ( view ) ) {
Logger . test ( getClass ( ) . getSimpleName ( ) + " view removed onDestroy" ) ;
}
}
}
public void addChildController ( Controller controller ) {
public void addChildController ( Controller controller ) {
@ -125,29 +134,22 @@ public abstract class Controller {
return childControllers . remove ( controller ) ;
return childControllers . remove ( controller ) ;
}
}
public void attach ( ViewGroup parentView , boolean over ) {
public void attachToParentView ( ViewGroup parentView , boolean over ) {
ViewGroup . LayoutParams params = view . getLayoutParams ( ) ;
if ( view . getParent ( ) ! = null ) {
if ( LOG_STATES ) {
if ( params = = null ) {
Logger . test ( getClass ( ) . getSimpleName ( ) + " view removed" ) ;
params = new ViewGroup . LayoutParams ( ViewGroup . LayoutParams . MATCH_PARENT , ViewGroup . LayoutParams . MATCH_PARENT ) ;
}
} else {
AndroidUtils . removeFromParentView ( view ) ;
params . width = ViewGroup . LayoutParams . MATCH_PARENT ;
params . height = ViewGroup . LayoutParams . MATCH_PARENT ;
}
}
view . setLayoutParams ( params ) ;
if ( parentView ! = null ) {
if ( LOG_STATES ) {
if ( over ) {
Logger . test ( getClass ( ) . getSimpleName ( ) + " view attached" ) ;
parentView . addView ( view , view . getLayoutParams ( ) ) ;
}
} else {
attachToView ( parentView , over ) ;
parentView . addView ( view , 0 , view . getLayoutParams ( ) ) ;
}
}
}
}
public void detach ( ) {
AndroidUtils . removeFromParentView ( view ) ;
}
public void onConfigurationChanged ( Configuration newConfig ) {
public void onConfigurationChanged ( Configuration newConfig ) {
for ( Controller controller : childControllers ) {
for ( Controller controller : childControllers ) {
controller . onConfigurationChanged ( newConfig ) ;
controller . onConfigurationChanged ( newConfig ) ;
@ -186,7 +188,7 @@ public abstract class Controller {
controller . presentingByController = this ;
controller . presentingByController = this ;
controller . onCreate ( ) ;
controller . onCreate ( ) ;
controller . attach ( contentView , true ) ;
controller . attachToView ( contentView , true ) ;
controller . onShow ( ) ;
controller . onShow ( ) ;
if ( animated ) {
if ( animated ) {
@ -223,7 +225,6 @@ public abstract class Controller {
private void finishPresenting ( ) {
private void finishPresenting ( ) {
onHide ( ) ;
onHide ( ) ;
detach ( ) ;
onDestroy ( ) ;
onDestroy ( ) ;
}
}
@ -238,4 +239,23 @@ public abstract class Controller {
public ViewGroup inflateRes ( int resId ) {
public ViewGroup inflateRes ( int resId ) {
return ( ViewGroup ) LayoutInflater . from ( context ) . inflate ( resId , null ) ;
return ( ViewGroup ) LayoutInflater . from ( context ) . inflate ( resId , null ) ;
}
}
private void attachToView ( ViewGroup parentView , boolean over ) {
ViewGroup . LayoutParams params = view . getLayoutParams ( ) ;
if ( params = = null ) {
params = new ViewGroup . LayoutParams ( ViewGroup . LayoutParams . MATCH_PARENT , ViewGroup . LayoutParams . MATCH_PARENT ) ;
} else {
params . width = ViewGroup . LayoutParams . MATCH_PARENT ;
params . height = ViewGroup . LayoutParams . MATCH_PARENT ;
}
view . setLayoutParams ( params ) ;
if ( over ) {
parentView . addView ( view , view . getLayoutParams ( ) ) ;
} else {
parentView . addView ( view , 0 , view . getLayoutParams ( ) ) ;
}
}
}
}