package org.softeg.slartus.forpdaplus.devdb; import android.annotation.TargetApi; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.TabLayout; import android.support.v4.view.ViewPager; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import com.afollestad.materialdialogs.MaterialDialog; import org.softeg.slartus.forpdaplus.App; import org.softeg.slartus.forpdaplus.Client; import org.softeg.slartus.forpdaplus.MainActivity; import org.softeg.slartus.forpdaplus.R; import org.softeg.slartus.forpdaplus.classes.common.ExtUrl; import org.softeg.slartus.forpdaplus.common.AppLog; import org.softeg.slartus.forpdaplus.devdb.helpers.DevDbUtils; import org.softeg.slartus.forpdaplus.devdb.helpers.FLifecycleUtil; import org.softeg.slartus.forpdaplus.devdb.helpers.ParseHelper; import org.softeg.slartus.forpdaplus.devdb.helpers.ParsedModel; import org.softeg.slartus.forpdaplus.fragments.GeneralFragment; public class ParentFragment extends GeneralFragment { private static final String DEVICE_ID_KEY = "DeviceId"; private static final String POSITION_ID = "position"; private static final String TOOLBAR_TITLE = "title"; private String m_DeviceId; private int m_Position; private String m_Title; private int LAYOUT = R.layout.dev_db_parent_fragment; private ViewPager viewPager; private MaterialDialog dialog; private DevDbViewPagerAdapter adapter; private TabLayout tabLayout; public ParentFragment() { } public static ParentFragment newInstance(Bundle args) { ParentFragment fragment = new ParentFragment(); fragment.setArguments(args); return fragment; } public static void showDevice(String deviceId, String title) { Bundle args = new Bundle(); args.putString(DEVICE_ID_KEY, deviceId); args.putInt(POSITION_ID, 0); args.putString(TOOLBAR_TITLE, title); MainActivity.addTab(title, deviceId + " more", newInstance(args)); } public static void showDevice(String deviceId) { Bundle args = new Bundle(); args.putString(DEVICE_ID_KEY, deviceId); args.putInt(POSITION_ID, 0); args.putString(TOOLBAR_TITLE, "ForPDA"); MainActivity.addTab(deviceId + " more", newInstance(args)); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override public void onCreate(Bundle savedInstanceState) { // recLifeCycle(getClass(), CALL_TO_SUPER); super.onCreate(savedInstanceState); // recLifeCycle(getClass(), RETURN_FROM_SUPER); setArrow(); Bundle extras = getArguments(); assert extras != null; m_DeviceId = extras.getString(DEVICE_ID_KEY); m_Position = extras.getInt(POSITION_ID); m_Title = extras.getString(TOOLBAR_TITLE); setTitle(m_Title); loading(); Log.e("kek", "DEVICE"+m_DeviceId); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); menu.add(R.string.link) .setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { public boolean onMenuItemClick(MenuItem menuItem) { ExtUrl.showSelectActionDialog(getMainActivity(), getString(R.string.link), m_DeviceId); return true; } }); } @Override public void onPause() { super.onPause(); if (DevDbUtils.isAndroid5()) { getMainActivity().getAppBarLayout().setElevation(6); }else { getMainActivity().getToolbarShadow().setVisibility(View.VISIBLE); } } @Override public void onResume() { super.onResume(); if(DevDbUtils.isAndroid5()) getMainActivity().getAppBarLayout().setElevation(0); else getMainActivity().getToolbarShadow().setVisibility(View.GONE); setArrow(); } @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { // recLifeCycle(getClass(), CALL_TO_SUPER); view = inflater.inflate(LAYOUT, container, false); // recLifeCycle(getClass(), RETURN_FROM_SUPER); getMainActivity().getToolbarShadow().setVisibility(View.GONE); if (DevDbUtils.isAndroid5()) { getMainActivity().getAppBarLayout().setElevation(0); view.findViewById(R.id.dev_toolbar_shadow).setVisibility(View.GONE); } tabLayout = (TabLayout) findViewById(R.id.devDbTabLayout); tabLayout.addTab(tabLayout.newTab().setText(R.string.specifications)); tabLayout.addTab(tabLayout.newTab().setText(R.string.reviews)); tabLayout.addTab(tabLayout.newTab().setText(R.string.discussions)); tabLayout.addTab(tabLayout.newTab().setText(R.string.review)); tabLayout.addTab(tabLayout.newTab().setText(R.string.firmwares)); tabLayout.addTab(tabLayout.newTab().setText(R.string.prices)); return view; } @Override public void onViewCreated(View view, Bundle savedInstanceState) { // recLifeCycle(getClass(), CALL_TO_SUPER); super.onViewCreated(view, savedInstanceState); // recLifeCycle(getClass(), RETURN_FROM_SUPER); } @Override public void onSaveInstanceState(android.os.Bundle outState) { outState.putString(DEVICE_ID_KEY, m_DeviceId); outState.putInt(POSITION_ID, m_Position); outState.putString(TOOLBAR_TITLE, m_Title); // recLifeCycle(getClass(), CALL_TO_SUPER); super.onSaveInstanceState(outState); // recLifeCycle(getClass(), RETURN_FROM_SUPER); } @Override public void onDestroy() { // recLifeCycle(getClass(), CALL_TO_SUPER); super.onDestroy(); // recLifeCycle(getClass(), RETURN_FROM_SUPER); } @Override public void onDetach() { super.onDetach(); } @Override public boolean closeTab() { return false; } private void showTabs(int position) { viewPager.setCurrentItem(position); } private void initUI(ParsedModel parsed) { m_Title = parsed.getTitle(); setTitle(m_Title); App.getInstance().getTabByTag(getTag()).setTitle(m_Title); getMainActivity().notifyTabAdapter(); viewPager = (ViewPager) findViewById(R.id.devDbViewPager); adapter = new DevDbViewPagerAdapter(getMainActivity(), getChildFragmentManager(), parsed); viewPager.setAdapter(adapter); viewPager.setOnPageChangeListener(mChangeListener); tabLayout.removeAllTabs(); tabLayout.setupWithViewPager(viewPager); showTabs(m_Position); } private ViewPager.OnPageChangeListener mChangeListener = new ViewPager.OnPageChangeListener() { int currentPosition = 0; @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {} @Override public void onPageSelected(int position) { FLifecycleUtil showFragment = (FLifecycleUtil) adapter.getItem(position); showFragment.onResumeFragment(); FLifecycleUtil hideFragment = (FLifecycleUtil) adapter.getItem(currentPosition); hideFragment.onPauseFragment(); currentPosition = position; } @Override public void onPageScrollStateChanged(int state) {} }; private void loading() { HelperTask task = new HelperTask(); task.execute(m_DeviceId); } public class HelperTask extends AsyncTask<String, Void, Boolean> { private Throwable ex; private ParseHelper mParseHelper; private ParsedModel parsed; @Override protected Boolean doInBackground(String... params) { try { parsed = new ParseHelper().parseHelper(Client.getInstance().performGet(params[0])); return true; } catch (Throwable e) { ex = e; return false; } } protected void onPreExecute() { dialog = new MaterialDialog.Builder(getActivity()) .progress(true, 0) .cancelable(false) .content(R.string.loading) .build(); dialog.show(); } protected void onPostExecute(final Boolean success) { if (success) { if (dialog.isShowing()) { dialog.dismiss(); } initUI(parsed); } else { if (dialog.isShowing()) { dialog.dismiss(); } if (ex != null) AppLog.e(App.getContext(), ex); } } } }