1 /* ownCloud Android client application 
   2  *   Copyright (C) 2012-2013 ownCloud Inc. 
   4  *   This program is free software: you can redistribute it and/or modify 
   5  *   it under the terms of the GNU General Public License as published by 
   6  *   the Free Software Foundation, either version 2 of the License, or 
   7  *   (at your option) any later version. 
   9  *   This program is distributed in the hope that it will be useful, 
  10  *   but WITHOUT ANY WARRANTY; without even the implied warranty of 
  11  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
  12  *   GNU General Public License for more details. 
  14  *   You should have received a copy of the GNU General Public License 
  15  *   along with this program.  If not, see <http://www.gnu.org/licenses/>. 
  19 package com
.owncloud
.android
.ui
.dialog
; 
  21 import java
.io
.InputStream
; 
  22 import java
.util
.Scanner
; 
  24 import android
.app
.AlertDialog
; 
  25 import android
.app
.Dialog
; 
  26 import android
.content
.DialogInterface
; 
  27 import android
.net
.Uri
; 
  28 import android
.os
.Bundle
; 
  29 import android
.view
.LayoutInflater
; 
  30 import android
.view
.View
; 
  31 import android
.webkit
.WebView
; 
  32 import android
.widget
.TextView
; 
  34 import com
.actionbarsherlock
.app
.SherlockDialogFragment
; 
  35 import com
.owncloud
.android
.R
; 
  38  * Dialog to show the contents of res/raw/CHANGELOG.txt 
  40 public class ChangelogDialog 
extends SherlockDialogFragment 
{ 
  42     private static final String ARG_CANCELABLE 
= ChangelogDialog
.class.getCanonicalName() + ".ARG_CANCELABLE"; 
  46      * Public factory method to get dialog instances. 
  48      * @param cancelable    If 'true', the dialog can be cancelled by the user input (BACK button, touch outside...) 
  49      * @return              New dialog instance, ready to show. 
  51     public static ChangelogDialog 
newInstance(boolean cancelable
) { 
  52         ChangelogDialog fragment 
= new ChangelogDialog(); 
  53         Bundle args 
= new Bundle(); 
  54         args
.putBoolean(ARG_CANCELABLE
, cancelable
); 
  55         fragment
.setArguments(args
); 
  64     public Dialog 
onCreateDialog(Bundle savedInstanceState
) { 
  65         /// load the custom view to insert in the dialog, between title and  
  66         WebView webview 
= new WebView(getActivity()); 
  67         webview
.loadUrl("file:///android_res/raw/" + getResources().getResourceEntryName(R
.raw
.changelog
) + ".html"); 
  70         AlertDialog
.Builder builder 
= new AlertDialog
.Builder(getActivity()); 
  71         Dialog dialog 
= builder
.setView(webview
) 
  72                                 .setIcon(R
.drawable
.icon
) 
  73                                 .setTitle(R
.string
.whats_new
) 
  74                                 .setPositiveButton(R
.string
.common_ok
, 
  75                                         new DialogInterface
.OnClickListener() { 
  77                                     public void onClick(DialogInterface dialog
, int which
) { 
  82         dialog
.setCancelable(getArguments().getBoolean(ARG_CANCELABLE
)); 
  90     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
  91         /// load the custom layout 
  92         View view = inflater.inflate(R.layout.fragment_changelog, container); 
  93         mEditText = (EditText) view.findViewById(R.id.txt_your_name); 
  94         getDialog().setTitle(R.string.whats_new); 
  96         /// read full contents of the change log file (don't make it too big) 
  97         InputStream changeLogStream = getResources().openRawResource(R.raw.changelog); 
  98         Scanner scanner = new java.util.Scanner(changeLogStream).useDelimiter("\\A"); 
  99         String text = scanner.hasNext() ? scanner.next() : ""; 
 101         /// make clickable the links in the change log file 
 102         SpannableString sText = new SpannableString(text); 
 103         Linkify.addLinks(sText, Linkify.ALL);