package org.ovirt.mobile.movirt.ui.storage;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.LoaderManager;
import android.support.v4.content.Loader;
import android.support.v4.widget.SwipeRefreshLayout;
import android.util.Log;
import android.widget.TextView;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.Background;
import org.androidannotations.annotations.Bean;
import org.androidannotations.annotations.EFragment;
import org.androidannotations.annotations.ViewById;
import org.androidannotations.annotations.res.StringRes;
import org.ovirt.mobile.movirt.R;
import org.ovirt.mobile.movirt.facade.StorageDomainFacade;
import org.ovirt.mobile.movirt.model.StorageDomain;
import org.ovirt.mobile.movirt.provider.ProviderFacade;
import org.ovirt.mobile.movirt.ui.ProgressBarResponse;
import org.ovirt.mobile.movirt.ui.RefreshableLoaderFragment;
import org.ovirt.mobile.movirt.util.usage.MemorySize;
@EFragment(R.layout.fragment_storage_domain_detail_general)
public class StorageDomainDetailGeneralFragment extends RefreshableLoaderFragment implements LoaderManager.LoaderCallbacks<Cursor> {
private static final String TAG = StorageDomainDetailGeneralFragment.class.getSimpleName();
private String storageDomainId = null;
@ViewById
TextView statusView;
@ViewById
TextView domainTypeView;
@ViewById
TextView storageTypeView;
@ViewById
TextView formatView;
@ViewById
TextView freeSpaceView;
@ViewById
TextView totalSpaceView;
@ViewById
SwipeRefreshLayout swipeGeneralContainer;
@StringRes(R.string.details_for_storage_domain)
String STORAGE_DOMAIN_DETAILS;
@Bean
ProviderFacade provider;
@Bean
StorageDomainFacade storageDomainFacade;
@AfterViews
void initLoader() {
Uri storageDomainUri = getActivity().getIntent().getData();
storageDomainId = storageDomainUri.getLastPathSegment();
getLoaderManager().initLoader(0, null, this);
}
@Override
public void restartLoader() {
getLoaderManager().restartLoader(0, null, this);
}
@Override
public void destroyLoader() {
getLoaderManager().destroyLoader(0);
}
@Override
protected SwipeRefreshLayout getSwipeRefreshLayout() {
return swipeGeneralContainer;
}
@Override
@Background
public void onRefresh() {
storageDomainFacade.syncOne(new ProgressBarResponse<StorageDomain>(this), storageDomainId);
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
return provider.query(StorageDomain.class).id(storageDomainId).asLoader();
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
if (!data.moveToNext()) {
Log.e(TAG, "Error loading Storage Domain");
return;
}
renderStorageDomain(storageDomainFacade.mapFromCursor(data));
}
private void renderStorageDomain(StorageDomain storageDomain) {
getActivity().setTitle(String.format(STORAGE_DOMAIN_DETAILS, storageDomain.getName()));
StorageDomain.Status status = storageDomain.getStatus();
statusView.setText(status != null ? status.toString().toLowerCase() : StorageDomain.Status.UNKNOWN.toString().toLowerCase());
if (storageDomain.getType() != null) {
domainTypeView.setText(storageDomain.getType().toString());
} else {
domainTypeView.setText(getString(R.string.NA));
}
if (storageDomain.getStorageType() != null) {
storageTypeView.setText(storageDomain.getStorageType().toString());
} else {
storageTypeView.setText(getString(R.string.NA));
}
formatView.setText(storageDomain.getStorageFormat());
long usedSize = storageDomain.getUsedSize();
long availableSize = storageDomain.getAvailableSize();
if ((usedSize != -1 && availableSize != -1) && (usedSize != 0 || availableSize != 0)) {
freeSpaceView.setText(new MemorySize(availableSize).toString());
totalSpaceView.setText(new MemorySize(availableSize + usedSize).toString());
} else {
freeSpaceView.setText(getString(R.string.NA));
totalSpaceView.setText(getString(R.string.NA));
}
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
// do nothing
}
}