/*
* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of
* the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* Copyright (c) 2014 Digi International Inc., All Rights Reserved.
*/
package com.digi.android.wva.fragments;
import android.annotation.SuppressLint;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.ListFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.TextView;
import com.digi.android.wva.R;
import com.digi.android.wva.adapters.EndpointsAdapter;
import com.digi.android.wva.model.EndpointConfiguration;
/**
* {@link Fragment} used to display information about alarms and subscriptions
* that have been set up. Currently the implementation simply displays
* "No subscriptions." but in the future we will actually display useful
* information.
* @author mwadsten
*
*/
public class EndpointsFragment extends ListFragment {
private static final String DLG_TAG = "ept_cfg_dialog";
public static EndpointsFragment newInstance() {
return new EndpointsFragment();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
if (getListAdapter() == null)
setListAdapter(EndpointsAdapter.getInstance());
}
// This Lint suppression is because .show() commits the transaction, but
// Lint is not aware of that, so it warns that the fragment transaction is
// not committed.
@SuppressLint("CommitTransaction")
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
FragmentManager fm = getActivity().getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
// Look for pre-existing dialog and remove it if it exists.
// This is needed because if you click an endpoint twice or more in
// rapid succession, it WILL trigger this function more than once, and
// without this check, more than one fragment dialog will appear.
Fragment prev = fm.findFragmentByTag(DLG_TAG);
if (prev != null)
ft.remove(prev);
ft.addToBackStack(null);
EndpointConfiguration conf =
(EndpointConfiguration) getListAdapter().getItem(position);
new EndpointOptionsDialog().setConfig(conf).show(ft, DLG_TAG);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Log.i("AlarmsFragment", "onCreateView");
View v = inflater.inflate(R.layout.list_fragment_with_header, null);
assert v != null;
TextView header = (TextView)v.findViewById(R.id.log_header);
if (header != null)
header.setText(R.string.subscriptions_header);
// Same as calling setEmptyText at whatever is the appropriate time to do that
TextView empty = (TextView)v.findViewById(android.R.id.empty);
if (empty != null)
empty.setText("No endpoints.");
return v;
}
}