package org.softeg.slartus.forpdaplus.listfragments;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.ContextMenu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import org.softeg.slartus.forpdaapi.ICatalogItem;
import org.softeg.slartus.forpdaapi.devdb.DevCatalog;
import org.softeg.slartus.forpdaapi.devdb.NewDevDbApi;
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.MenuListDialog;
import org.softeg.slartus.forpdaplus.classes.common.ExtUrl;
import org.softeg.slartus.forpdaplus.listfragments.adapters.DevDbAdapter;
import org.softeg.slartus.forpdaplus.listtemplates.DevDbModelsBrickInfo;
import java.util.ArrayList;
import java.util.List;
public class DevDbCatalogFragment extends BaseCatalogFragment {
protected ArrayList<DevCatalog> mData = new ArrayList<>();
protected ArrayList<DevCatalog> mLoadResultList;
public static final String URL_KEY = "URL_KEY";
public DevDbCatalogFragment() {
super();
m_CurrentCatalogItem = new DevCatalog("-1", App.getContext().getString(R.string.catalog)).setType(DevCatalog.ROOT);
}
private String m_Url;
/*
Поддерживает ли загрузку состояния
*/
protected Boolean isSavedInstanceStateEnabled() {
return m_CurrentCatalogItem != null;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
removeArrow();
m_Url = null;
if (getArguments() != null) {
m_Url = getArguments().getString(URL_KEY, null);
}
if (savedInstanceState != null) {
m_CurrentCatalogItem = (DevCatalog) savedInstanceState.getParcelable("CurrentCatalogItem");
m_Url = savedInstanceState.getString(URL_KEY, m_Url);
mData = savedInstanceState.getParcelableArrayList("Data");
}
}
@Override
public void onResume() {
super.onResume();
removeArrow();
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
afterDeliveryResult();
if (m_CurrentCatalogItem != null)
rebuildCrumbs(m_CurrentCatalogItem);
}
@Override
public void onSaveInstanceState(android.os.Bundle outState) {
if (m_CurrentCatalogItem != null)
outState.putString(URL_KEY, m_CurrentCatalogItem.getId().toString());
outState.putParcelable("CurrentCatalogItem", (DevCatalog) m_CurrentCatalogItem);
outState.putParcelableArrayList("Data", mData);
super.onSaveInstanceState(outState);
}
@Override
protected boolean inBackground(boolean isRefresh, ICatalogItem catalogItem) throws Throwable {
if (!TextUtils.isEmpty(m_Url)) {
catalogItem = NewDevDbApi.getCatalog(m_Url);
m_Url = null;
m_LoadingCatalogItem = catalogItem;
}
if (catalogItem == null)
return false;
switch (((DevCatalog) catalogItem).getType()) {
case DevCatalog.ROOT:
mLoadResultList = NewDevDbApi.getStandartDevicesTypes();
for (DevCatalog c : mLoadResultList) {
c.setParent(catalogItem);
}
break;
case DevCatalog.DEVICE_TYPE:
mLoadResultList = NewDevDbApi.parseBrands(Client.getInstance(), catalogItem.getId().toString());
for (DevCatalog c : mLoadResultList) {
c.setParent(catalogItem);
}
break;
default:
return false;
}
return true;
}
@Override
protected void onFailureResult() {
Bundle args = new Bundle();
args.putString(DevDbModelsFragment.BRAND_URL_KEY, m_LoadingCatalogItem.getId().toString());
args.putString(DevDbModelsFragment.BRAND_TITLE_KEY, m_LoadingCatalogItem.getTitle().toString());
MainActivity.showListFragment(m_LoadingCatalogItem.getId().toString(), new DevDbModelsBrickInfo().getName(), args);
}
protected BaseAdapter createAdapter() {
return new DevDbAdapter(getContext(), mData);
}
@Override
protected void deliveryResult(boolean isRefresh) {
super.deliveryResult(isRefresh);
mData.clear();
for (DevCatalog item : mLoadResultList) {
mData.add(item);
}
mLoadResultList.clear();
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
if (info.id == -1) return;
final ICatalogItem topic = (ICatalogItem) getAdapter().getItem((int) info.id);
if (TextUtils.isEmpty(topic.getId())) return;
List<MenuListDialog> list = new ArrayList<>();
ExtUrl.addUrlMenu(mHandler, getContext(), list, topic.getId().toString(), topic.getTitle().toString());
ExtUrl.showContextDialog(getContext(), null, list);
}
}