/**
* This file is part of FileSpace for Android, an app for managing your server (files, talks...).
* <p/>
* Copyright (c) 2014-2015 FileSpace for Android contributors (http://mercandalli.com)
* <p/>
* LICENSE:
* <p/>
* FileSpace for Android 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.
* <p/>
* FileSpace for Android 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.
*
* @author Jonathan Mercandalli
* @license http://www.gnu.org/licenses/gpl.html
* @copyright 2014-2015 FileSpace for Android contributors (http://mercandalli.com)
*/
package com.mercandalli.android.apps.files.file.text;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.Toolbar;
import android.view.KeyEvent;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.ProgressBar;
import com.mercandalli.android.apps.files.R;
import com.mercandalli.android.apps.files.common.listener.IPostExecuteListener;
import com.mercandalli.android.apps.files.common.net.TaskGet;
import com.mercandalli.android.apps.files.file.FileModel;
import com.mercandalli.android.apps.files.file.FileTypeModelENUM;
import com.mercandalli.android.apps.files.main.ApplicationActivity;
import org.json.JSONObject;
/**
* An {@link Activity} for displaying the text file: online or offline.
*/
public class FileTextActivity extends ApplicationActivity implements IPostExecuteListener {
@NonNull
private static final String EXTRA_MODEL_FILE_URL = "FileTextActivity.Extra.EXTRA_MODEL_FILE_URL";
@NonNull
private static final String EXTRA_MODEL_FILE_ONLINE = "FileTextActivity.Extra.EXTRA_MODEL_FILE_ONLINE";
@NonNull
private static final String EXTRA_MODEL_FILE_ARTICLE_CONTENT_1 = "FileTextActivity.Extra.EXTRA_MODEL_FILE_ARTICLE_CONTENT_1";
@NonNull
private static final String KEY_SAVED_TEXT = "FileTextActivity.Saved.mInitialText";
private String mInitialText;
private String mUrl;
private boolean mIsOnline;
private EditText mEditText;
private ProgressBar mProgressBar;
public static void start(
@NonNull final Activity activity,
final FileModel fileModel,
final boolean isOnline) {
final Intent intent = new Intent(activity, FileTextActivity.class);
intent.putExtra(EXTRA_MODEL_FILE_URL, "" + fileModel.getOnlineUrl());
if (FileTypeModelENUM.FILESPACE.type.equals(fileModel.getType())) {
intent.putExtra(EXTRA_MODEL_FILE_ARTICLE_CONTENT_1, "" + fileModel.getContent().getArticle().article_content_1);
}
intent.putExtra(EXTRA_MODEL_FILE_ONLINE, isOnline);
activity.startActivity(intent);
activity.overridePendingTransition(R.anim.left_in, R.anim.left_out);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_file_text);
final Toolbar toolbar = (Toolbar) findViewById(R.id.my_toolbar);
if (toolbar != null) {
setSupportActionBar(toolbar);
final ActionBar supportActionBar = getSupportActionBar();
if (supportActionBar != null) {
supportActionBar.setDisplayHomeAsUpEnabled(true);
}
}
mEditText = (EditText) findViewById(R.id.txt);
mProgressBar = (ProgressBar) findViewById(R.id.circularProgressBar);
// Visibility
mEditText.setVisibility(View.GONE);
mProgressBar.setVisibility(View.VISIBLE);
final Bundle extras = getIntent().getExtras();
if (extras == null) {
finish();
overridePendingTransition(R.anim.right_in, R.anim.right_out);
return;
}
if (extras.containsKey(EXTRA_MODEL_FILE_ARTICLE_CONTENT_1)) {
mInitialText = extras.getString(EXTRA_MODEL_FILE_ARTICLE_CONTENT_1);
mEditText.setText(mInitialText);
mEditText.setVisibility(View.VISIBLE);
mProgressBar.setVisibility(View.GONE);
} else {
mUrl = extras.getString(EXTRA_MODEL_FILE_URL);
mIsOnline = extras.getBoolean(EXTRA_MODEL_FILE_ONLINE);
if (savedInstanceState == null) {
new TaskGet(this, this.mUrl, this).execute();
} else {
mProgressBar.setVisibility(View.GONE);
}
}
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putString(KEY_SAVED_TEXT, mInitialText);
super.onSaveInstanceState(savedInstanceState);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
mInitialText = savedInstanceState.getString(KEY_SAVED_TEXT);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
this.finish();
this.overridePendingTransition(R.anim.right_in, R.anim.right_out);
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
this.finish();
this.overridePendingTransition(R.anim.right_in, R.anim.right_out);
}
return super.onKeyDown(keyCode, event);
}
@Override
public void onPostExecute(JSONObject json, String body) {
mInitialText = body;
mEditText.setText(mInitialText);
mEditText.setVisibility(View.VISIBLE);
mProgressBar.setVisibility(View.GONE);
}
}