Java tutorial
/* 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; import android.app.Dialog; import android.app.ProgressDialog; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.os.Bundle; import android.os.IBinder; import android.support.annotation.NonNull; import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentManager; import android.support.v7.app.AppCompatActivity; import android.view.MenuItem; import android.view.Window; import android.view.WindowManager; import android.widget.LinearLayout; import com.inovex.zabbixmobile.R; import com.inovex.zabbixmobile.data.ZabbixDataService; import com.inovex.zabbixmobile.data.ZabbixDataService.ZabbixDataBinder; import com.inovex.zabbixmobile.listeners.OnGraphDataLoadedListener; import com.inovex.zabbixmobile.listeners.OnGraphsLoadedListener; import com.inovex.zabbixmobile.model.Graph; import com.inovex.zabbixmobile.model.Item; import com.inovex.zabbixmobile.model.ZaxPreferences; import com.inovex.zabbixmobile.util.GraphUtil; import com.jjoe64.graphview.LineGraphView; /** * Activity showing a graph in fullscreen landscape mode. */ public class GraphFullscreenActivity extends AppCompatActivity implements ServiceConnection { private LinearLayout mLayout; private long mItemId; private long mGraphId; protected ZabbixDataService mZabbixDataService; @Override protected void onCreate(Bundle savedInstanceState) { ZaxPreferences prefs = ZaxPreferences.getInstance(getApplicationContext()); if (prefs.isDarkTheme()) setTheme(R.style.AppThemeDark); else setTheme(R.style.AppTheme); requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) return; bindService(); mItemId = getIntent().getLongExtra("itemid", -1); mGraphId = getIntent().getLongExtra("graphid", -1); if (mItemId == -1 && mGraphId == -1) { finish(); return; } mLayout = new LinearLayout(this); setContentView(mLayout); } /** * Binds the Zabbix service. */ protected void bindService() { Intent intent = new Intent(this, ZabbixDataService.class); getApplicationContext().bindService(intent, this, Context.BIND_AUTO_CREATE); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (super.onOptionsItemSelected(item)) return true; switch (item.getItemId()) { case android.R.id.home: finish(); return true; } return false; } @Override public void onServiceConnected(ComponentName className, IBinder binder) { ZabbixDataBinder zabbixBinder = (ZabbixDataBinder) binder; mZabbixDataService = zabbixBinder.getService(); loadGraphData(); } private void loadGraphData() { FragmentManager fm = getSupportFragmentManager(); final LoadingDialogFragment loadingDlg = new LoadingDialogFragment(); loadingDlg.show(fm, LoadingDialogFragment.TAG); // load data by item if (mItemId != -1) { final Item item = mZabbixDataService.getItemById(mItemId); if (item == null) return; mZabbixDataService.loadHistoryDetailsByItem(item, false, new OnGraphDataLoadedListener() { @Override public void onGraphDataLoaded() { LineGraphView graph = GraphUtil.createItemGraphFullscreen(GraphFullscreenActivity.this, item); if (mLayout != null) { mLayout.addView(graph); } if (loadingDlg != null) { loadingDlg.dismiss(); } } @Override public void onGraphDataProgressUpdate(int progress) { // TODO Auto-generated method stub } }); } // load data by graph else if (mGraphId != -1) { final Graph graph = mZabbixDataService.getGraphById(mGraphId); if (graph == null) return; mZabbixDataService.loadGraph(graph, new OnGraphsLoadedListener() { @Override public void onGraphsLoaded() { LineGraphView graphview = GraphUtil.createScreenGraphFullscreen(GraphFullscreenActivity.this, graph); if (mLayout != null) { mLayout.addView(graphview); } if (loadingDlg != null) { loadingDlg.dismiss(); } } @Override public void onGraphsProgressUpdate(int progress) { // TODO Auto-generated method stub } }); } } /** * The dialog displayed when an event shall be acknowledged. * */ public static class LoadingDialogFragment extends DialogFragment { public static final String TAG = LoadingDialogFragment.class.getSimpleName(); @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { ProgressDialog mLoadingDlg = new ProgressDialog(getActivity()); mLoadingDlg.setMessage(getActivity().getResources().getString(R.string.loading)); return mLoadingDlg; } } @Override public void onServiceDisconnected(ComponentName name) { // TODO Auto-generated method stub } }