com.inovex.zabbixmobile.activities.fragments.ChecksItemsFragment.java Source code

Java tutorial

Introduction

Here is the source code for com.inovex.zabbixmobile.activities.fragments.ChecksItemsFragment.java

Source

/*
This file is part of ZAX.
    
   ZAX is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation, either version 3 of the License, or
   (at your option) any later version.
    
   ZAX is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.
    
   You should have received a copy of the GNU General Public License
   along with ZAX.  If not, see <http://www.gnu.org/licenses/>.
*/

package com.inovex.zabbixmobile.activities.fragments;

import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.widget.ShareActionProvider;
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 android.widget.LinearLayout;
import android.widget.TextView;

import com.inovex.zabbixmobile.R;
import com.inovex.zabbixmobile.adapters.EventsDetailsPagerAdapter;
import com.inovex.zabbixmobile.model.Item;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;

/**
 * Fragment which displays event details using a ViewPager (adapter:
 * {@link EventsDetailsPagerAdapter}).
 * 
 */
public class ChecksItemsFragment extends BaseDetailsPage {

    public static final String TAG = ChecksItemsFragment.class.getSimpleName();

    private Item mItem;

    private boolean mLoadingSpinnerVisible = false;

    private MenuItem mMenuItemShare;

    private ShareActionProvider mShareActionProvider;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
    }

    @Override
    public void setHasOptionsMenu(boolean hasMenu) {
        super.setHasOptionsMenu(hasMenu);
        if (!hasMenu)
            return;
        updateMenu();
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_items_details, container);
    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        if (mLoadingSpinnerVisible)
            showLoadingSpinner();
    }

    @Override
    public void onResume() {
        super.onResume();
        fillDetailsText();
    }

    @Override
    public void onServiceConnected(ComponentName name, IBinder service) {
        super.onServiceConnected(name, service);
        if (mItem != null)
            mZabbixDataService.loadHistoryDetailsByItem(mItem, true, this);
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.severity_details_fragment, menu);

        mMenuItemShare = menu.findItem(R.id.menuitem_share);
        mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(mMenuItemShare);
        updateShareIntent();
    }

    protected void setShareIntent(String text) {
        if (mShareActionProvider == null)
            return;
        Intent shareIntent = new Intent();
        shareIntent.setAction(Intent.ACTION_SEND);
        shareIntent.putExtra(Intent.EXTRA_TEXT, text);
        shareIntent.setType("text/plain");
        mShareActionProvider.setShareIntent(shareIntent);
    }

    public void updateShareIntent() {
        if (mItem != null)
            setShareIntent(mItem.getSharableString(this.getActivity()));
    }

    /**
     * Sets the item for this page. This also triggers an import of history
     * details for displaying the graph.
     * 
     * @param item
     */
    public void setItem(Item item) {
        this.mItem = item;
        if (item == null) {
            if (getView() != null) {
                ((TextView) getView().findViewById(R.id.item_details_name)).setText("");

                ((TextView) getView().findViewById(R.id.latest_data)).setText("");

                ViewGroup layout = (LinearLayout) getView().findViewById(R.id.graphs);
                layout.removeAllViews();
            }
        }
        if (mZabbixDataService != null && item != null) {
            fillDetailsText();
            showGraphProgressBar();
            mZabbixDataService.loadHistoryDetailsByItem(mItem, true, this);
        }
    }

    protected void updateMenu() {
        if (mMenuItemShare == null)
            return;
        if (mItem != null)
            mMenuItemShare.setVisible(true);
        else
            mMenuItemShare.setVisible(false);
        updateShareIntent();
    }

    /**
     * Shows a loading spinner instead of the item details.
     */
    public void showLoadingSpinner() {
        mLoadingSpinnerVisible = true;
        if (getView() != null) {
            LinearLayout progressLayout = (LinearLayout) getView().findViewById(R.id.progress_layout);
            if (progressLayout != null)
                progressLayout.setVisibility(View.VISIBLE);
        }
    }

    /**
     * Dismisses the loading spinner view.
     * 
     * If the view has not yet been created, the status is saved and when the
     * view is created, the spinner will not be shown at all.
     */
    public void dismissLoadingSpinner() {
        mLoadingSpinnerVisible = false;
        if (getView() != null) {
            LinearLayout progressLayout = (LinearLayout) getView().findViewById(R.id.progress_layout);
            if (progressLayout != null) {
                progressLayout.setVisibility(View.GONE);
            }
        }

    }

    @Override
    protected void showGraph() {
        showGraph(mItem);
    }

    @Override
    protected void fillDetailsText() {
        if (mItem != null && getView() != null) {
            ((TextView) getView().findViewById(R.id.item_details_name)).setText(mItem.getDescription());

            Calendar cal = Calendar.getInstance();
            cal.setTimeInMillis(mItem.getLastClock());
            java.text.DateFormat dateFormatter = SimpleDateFormat.getDateTimeInstance(SimpleDateFormat.SHORT,
                    SimpleDateFormat.SHORT, Locale.getDefault());
            ((TextView) getView().findViewById(R.id.latest_data))
                    .setText(mItem.getLastValue() + " " + mItem.getUnits() + " "
                            + getResources().getString(R.string.at) + " " + dateFormatter.format(cal.getTime()));
        }
    }

}