/** * Android ownCloud News * * @author David Luhmer * @copyright 2013 David Luhmer david-dev@live.de * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE * License as published by the Free Software Foundation; either * version 3 of the License, or any later version. * * This library 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 AFFERO GENERAL PUBLIC LICENSE for more details. * * You should have received a copy of the GNU Affero General Public * License along with this library. If not, see <http://www.gnu.org/licenses/>. * */ package de.luhmer.owncloudnewsreader; import android.app.AlertDialog; import android.app.Dialog; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.view.LayoutInflater; import android.view.View; import android.view.WindowManager.LayoutParams; import android.widget.ProgressBar; import android.widget.TextView; import java.io.IOException; import java.util.Formatter; import de.luhmer.owncloudnewsreader.async_tasks.DownloadChangelogTask; import de.luhmer.owncloudnewsreader.view.ChangeLogFileListView; /** * Displays current app version and changelog. */ public class VersionInfoDialogFragment extends DialogFragment { @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // load views LayoutInflater inflater = getActivity().getLayoutInflater(); View view = inflater.inflate(R.layout.dialog_version_info, null); ChangeLogFileListView clListView = (ChangeLogFileListView) view.findViewById(R.id.changelog_listview); final ProgressBar progressBar = (ProgressBar) view.findViewById(R.id.changeLogLoadingProgressBar); TextView versionTextView = (TextView) view.findViewById(R.id.tv_androidAppVersion); // build dialog AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()) .setView(view) .setTitle(getString(R.string.menu_About_Changelog)); // set current version versionTextView.setText(getVersionString()); // load changelog into view loadChangeLog(clListView, progressBar); return builder.create(); } /* (non-Javadoc) * @see android.support.v4.app.DialogFragment#onStart() */ @Override public void onStart() { //Use the full screen for this dialog even in Landscape Mode. LayoutParams params = getDialog().getWindow().getAttributes(); params.width = LayoutParams.MATCH_PARENT; getDialog().getWindow().setAttributes(params); super.onStart(); } private String getVersionString() { String version = "?"; try { PackageInfo pInfo = getActivity().getPackageManager().getPackageInfo(getActivity().getPackageName(), 0); version = pInfo.versionName; } catch (PackageManager.NameNotFoundException e){ e.printStackTrace(); } Formatter formatter = new Formatter(); String versionString = getString(R.string.current_version); return formatter.format(versionString, version).toString(); } /** * Loads changelog into the given view and hides progress bar when done. */ private void loadChangeLog(ChangeLogFileListView clListView, final ProgressBar progressBar) { new DownloadChangelogTask(getContext(), clListView, new DownloadChangelogTask.Listener() { @Override public void onSuccess() { progressBar.setVisibility(View.GONE); } @Override public void onError(IOException e) { progressBar.setVisibility(View.GONE); e.printStackTrace(); } }).execute(); } }