package org.itsnat.itsnatdroidtest.testact.local.asset;
import android.content.Context;
import android.content.res.Resources;
import android.os.Build;
import android.view.View;
import android.view.ViewStub;
import android.widget.CalendarView;
import android.widget.DatePicker;
import android.widget.LinearLayout;
import android.widget.TabHost;
import org.itsnat.droid.InflatedLayout;
import org.itsnat.itsnatdroidtest.R;
import org.itsnat.itsnatdroidtest.testact.TestActivity;
import org.itsnat.itsnatdroidtest.testact.TestActivityTabFragment;
import org.itsnat.itsnatdroidtest.testact.util.CustomScrollView;
/**
* Created by jmarranz on 16/07/14.
*/
public class TestSetupAssetLayout2 extends TestSetupAssetLayoutBase
{
public TestSetupAssetLayout2(TestActivityTabFragment fragment)
{
super(fragment);
}
public void test()
{
final TestActivity act = fragment.getTestActivity();
final View compiledRootView = loadCompiledAndBindBackReloadButtons(R.layout.test_local_layout_2_compiled);
final View buttonReload = compiledRootView.findViewById(R.id.buttonReload);
buttonReload.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
// TEST de carga dinámica de layout guardado localmente
InflatedLayout layout = loadAssetAndBindBackReloadButtons("res/layout/test_local_layout_2_asset.xml");
View dynamicRootView = layout.getRootView();
initialConfiguration(act, dynamicRootView);
TestAssetLayout2.test((CustomScrollView) compiledRootView, (CustomScrollView) dynamicRootView);
}
});
initialConfiguration(act, compiledRootView);
}
private static void initialConfiguration(TestActivity act, View rootView)
{
CalendarView calendarView = (CalendarView)rootView.findViewById(R.id.calendarViewTestId);
DatePicker datePicker = (DatePicker)rootView.findViewById(R.id.datePickerTestId);
if ("sdk".equals( Build.PRODUCT ) || "sdk_x86".equals( Build.PRODUCT ))
{
// La aceleración hardware hace caer el emulador 4.0.3 en estos componentes
// http://kevsaidwhat.blogspot.com.es/2012/09/intel-atom-emulator-crashes-with.html
calendarView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
datePicker.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
else
{
// Esto es sólo por jugar para asegurar que hay un calendarView y un datePicker en estos tests
calendarView.getLayerType();
datePicker.getLayerType();
}
defineTabHost(act,rootView);
inflateViewStub(act,rootView);
}
private static void defineTabHost(TestActivity act,View rootView)
{
Resources res = act.getResources();
TabHost tabHost = (TabHost)rootView.findViewById(R.id.tabHostTest);
tabHost.setup();
setNewTab(act, tabHost, "tab1", "Tab 1", android.R.drawable.star_on, R.id.tab1);
setNewTab(act, tabHost, "tab2", "Tab 2", android.R.drawable.star_on, R.id.tab2);
setNewTab(act, tabHost, "tab3", "Tab 3", android.R.drawable.star_on, R.id.tab3);
//tabHost.setCurrentTabByTag("tab2"); //-- optional to set a tab programmatically.
}
private static void setNewTab(Context context,final TabHost tabHost, String tag, String title, int icon,final int contentID)
{
TabHost.TabSpec tabSpec = tabHost.newTabSpec(tag);
tabSpec.setIndicator(title, context.getResources().getDrawable(icon));
tabSpec.setContent(contentID);
tabHost.addTab(tabSpec);
}
private static void inflateViewStub(TestActivity act,View rootView)
{
ViewStub stub = (ViewStub)rootView.findViewById(R.id.viewStubTestId);
LinearLayout inflated = (LinearLayout)stub.inflate();
}
}