diff options
-rw-r--r-- | src/frontends/android/res/layout/remediation_instruction.xml | 55 | ||||
-rw-r--r-- | src/frontends/android/src/org/strongswan/android/ui/RemediationInstructionFragment.java | 109 |
2 files changed, 164 insertions, 0 deletions
diff --git a/src/frontends/android/res/layout/remediation_instruction.xml b/src/frontends/android/res/layout/remediation_instruction.xml new file mode 100644 index 000000000..09c0d43a3 --- /dev/null +++ b/src/frontends/android/res/layout/remediation_instruction.xml @@ -0,0 +1,55 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2013 Tobias Brunner + Hochschule fuer Technik Rapperswil + + This program 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 2 of the License, or (at your + option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. + + This program 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. +--> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical" + android:padding="5dp" > + + <TextView + android:id="@+id/title" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="10dp" + android:textIsSelectable="true" + android:textAppearance="?android:attr/textAppearanceLarge" /> + + <TextView + android:id="@+id/description" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="10dp" + android:textIsSelectable="true" + android:textColor="?android:textColorSecondary" + android:textAppearance="?android:attr/textAppearanceMedium" /> + + <TextView + android:id="@+id/list_header" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginLeft="10dp" + android:layout_marginTop="20dp" + android:textIsSelectable="true" + android:textAppearance="?android:attr/textAppearanceMedium" /> + + <include + layout="@android:layout/list_content" + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_weight="1" + android:layout_margin="5dp" /> + +</LinearLayout> diff --git a/src/frontends/android/src/org/strongswan/android/ui/RemediationInstructionFragment.java b/src/frontends/android/src/org/strongswan/android/ui/RemediationInstructionFragment.java new file mode 100644 index 000000000..04c288bcf --- /dev/null +++ b/src/frontends/android/src/org/strongswan/android/ui/RemediationInstructionFragment.java @@ -0,0 +1,109 @@ +/* + * Copyright (C) 2013 Tobias Brunner + * Hochschule fuer Technik Rapperswil + * + * This program 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 2 of the License, or (at your + * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. + * + * This program 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. + */ + +package org.strongswan.android.ui; + +import org.strongswan.android.R; +import org.strongswan.android.logic.imc.RemediationInstruction; + +import android.app.ListFragment; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.TextView; + +public class RemediationInstructionFragment extends ListFragment +{ + public static final String ARG_REMEDIATION_INSTRUCTION = "instruction"; + private RemediationInstruction mInstruction = null; + private TextView mTitle; + private TextView mDescription; + private TextView mHeader; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) + { + return inflater.inflate(R.layout.remediation_instruction, container, false); + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) + { + super.onActivityCreated(savedInstanceState); + + if (savedInstanceState != null) + { + mInstruction = savedInstanceState.getParcelable(ARG_REMEDIATION_INSTRUCTION); + } + /* show dividers only between list items */ + getListView().setHeaderDividersEnabled(false); + getListView().setFooterDividersEnabled(false); + /* don't show loader while adapter is not set */ + setListShown(true); + mTitle = (TextView)getView().findViewById(R.id.title); + mDescription = (TextView)getView().findViewById(R.id.description); + mHeader = (TextView)getView().findViewById(R.id.list_header); + } + + @Override + public void onSaveInstanceState(Bundle outState) + { + super.onSaveInstanceState(outState); + outState.putParcelable(ARG_REMEDIATION_INSTRUCTION, mInstruction); + } + + @Override + public void onStart() + { + super.onStart(); + + Bundle args = getArguments(); + if (args != null) + { + mInstruction = args.getParcelable(ARG_REMEDIATION_INSTRUCTION); + } + updateView(mInstruction); + } + + public void updateView(RemediationInstruction instruction) + { + mInstruction = instruction; + if (mInstruction != null) + { + mTitle.setText(mInstruction.getTitle()); + mDescription.setText(mInstruction.getDescription()); + if (mInstruction.getHeader() != null) + { + mHeader.setText(mInstruction.getHeader()); + setListAdapter(new ArrayAdapter<String>(getActivity(), + android.R.layout.simple_list_item_1, mInstruction.getItems())); + } + else + { + mHeader.setText(""); + setListAdapter(null); + } + } + else + { + mTitle.setText(""); + mDescription.setText(""); + mHeader.setText(""); + setListAdapter(null); + } + } +} |