/* * Copyright (C) 2012 The CyanogenMod Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.cyanogenmod.filemanager.activities; import android.app.Activity; import android.app.AlertDialog; import android.content.BroadcastReceiver; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; import android.content.DialogInterface.OnDismissListener; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.util.Log; import com.cyanogenmod.filemanager.R; import com.cyanogenmod.filemanager.preferences.FileManagerSettings; import com.cyanogenmod.filemanager.ui.ThemeManager; import com.cyanogenmod.filemanager.ui.ThemeManager.Theme; import com.cyanogenmod.filemanager.util.DialogHelper; import java.io.InputStream; /** * The activity for show the changelog of the application */ public class ChangeLogActivity extends Activity implements OnCancelListener, OnDismissListener { private static final String TAG = "ChangeLogActivity"; //$NON-NLS-1$ private static boolean DEBUG = false; private final BroadcastReceiver mNotificationReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (intent != null) { if (intent.getAction().compareTo(FileManagerSettings.INTENT_THEME_CHANGED) == 0) { applyTheme(); } } } }; /** * {@inheritDoc} */ @Override protected void onCreate(Bundle state) { if (DEBUG) { Log.d(TAG, "ChangeLogActivity.onCreate"); //$NON-NLS-1$ } // Register the broadcast receiver IntentFilter filter = new IntentFilter(); filter.addAction(FileManagerSettings.INTENT_THEME_CHANGED); registerReceiver(this.mNotificationReceiver, filter); //Save state super.onCreate(state); init(); } /** * {@inheritDoc} */ @Override protected void onDestroy() { if (DEBUG) { Log.d(TAG, "ChangeLogActivity.onDestroy"); //$NON-NLS-1$ } // Unregister the receiver try { unregisterReceiver(this.mNotificationReceiver); } catch (Throwable ex) { /**NON BLOCK**/ } //All destroy. Continue super.onDestroy(); } /** * Initialize the activity. This method handles the passed intent, opens * the appropriate activity and ends. */ private void init() { InputStream is = getApplicationContext().getResources().openRawResource(R.raw.changelog); if (is == null) { Log.e(TAG, "Changelog file not exists"); //$NON-NLS-1$ finish(); return; } try { // Read the changelog StringBuilder sb = new StringBuilder(); int read = 0; byte[] data = new byte[512]; while ((read = is.read(data, 0, 512)) != -1) { sb.append(new String(data, 0, read)); } // Show a dialog AlertDialog dialog = DialogHelper.createAlertDialog( this, R.drawable.ic_launcher, R.string.changelog_title, sb.toString(), false); dialog.setOnCancelListener(this); dialog.setOnDismissListener(this); DialogHelper.delegateDialogShow(this, dialog); } catch (Exception e) { Log.e(TAG, "Failed to read changelog file", e); //$NON-NLS-1$ finish(); } finally { try { is.close(); } catch (Exception e) {/**NON BLOCK**/} } } /** * {@inheritDoc} */ @Override public void onDismiss(DialogInterface dialog) { // We have to finish here; this activity is only a wrapper finish(); } /** * {@inheritDoc} */ @Override public void onCancel(DialogInterface dialog) { // We have to finish here; this activity is only a wrapper finish(); } /** * Method that applies the current theme to the activity * @hide */ void applyTheme() { Theme theme = ThemeManager.getCurrentTheme(this); theme.setBaseTheme(this, true); } }