///*
// * Copyright (C) 2012-2016 The Android Money Manager Ex Project Team
// *
// * 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 3
// * of the License, or (at your option) any later version.
// *
// * 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.
// *
// * You should have received a copy of the GNU General Public License
// * along with this program. If not, see <http://www.gnu.org/licenses/>.
// */
//package com.money.manager.ex.settings;
//
//import android.annotation.SuppressLint;
//import android.app.Activity;
//import android.content.DialogInterface;
//import android.content.Intent;
//import android.net.Uri;
//import android.os.Build;
//import android.os.Bundle;
//import android.preference.ListPreference;
//import android.preference.Preference;
//import android.preference.PreferenceFragment;
//import android.preference.PreferenceManager;
//import android.preference.PreferenceScreen;
//import android.text.TextUtils;
//import android.view.LayoutInflater;
//import android.view.View;
//import android.webkit.WebView;
//import android.widget.CheckBox;
//import android.widget.CompoundButton;
//import android.widget.LinearLayout;
//import android.widget.TextView;
//import android.widget.Toast;
//
//import com.afollestad.materialdialogs.AlertDialogWrapper;
//import com.money.manager.ex.HelpActivity;
//import com.money.manager.ex.sync.SyncSchedulerBroadcastReceiver;
//import com.money.manager.ex.MoneyManagerApplication;
//import com.money.manager.ex.R;
//import com.money.manager.ex.dropbox.DropboxBrowserActivity;
//import com.money.manager.ex.sync.events.DbFileDownloadedEvent;
//import com.money.manager.ex.fragment.TipsDialogFragment;
//import com.money.manager.ex.settings.events.AppRestartRequiredEvent;
//import com.money.manager.ex.sync.SyncConstants;
//import com.money.manager.ex.utils.MmxFileUtils;
//
//import org.greenrobot.eventbus.EventBus;
//import org.greenrobot.eventbus.Subscribe;
//
//import java.io.File;
//
///**
// * Dropbox settings.
// */
//public class DropboxSettingsFragment
// extends PreferenceFragment {
//
// private static final int REQUEST_DBX_CHOOSER = 10;
// private static final int REQUEST_DROPBOX_FILE = 20;
//
// private DropboxHelper mDropboxHelper = null;
// private boolean mDropboxLoginBegin = false;
//
// @Override
// public void onCreate(Bundle savedInstanceState) {
// super.onCreate(savedInstanceState);
//
// addPreferencesFromResource(R.xml.preferences_dropbox);
// PreferenceManager.getDefaultSharedPreferences(getActivity());
//
// // dropbox preference screen
// mDropboxHelper = DropboxHelper.getInstance(getActivity());
//
// initializeControls();
// }
//
// @Override
// public void onActivityResult(int requestCode, int resultCode, Intent data) {
// super.onActivityResult(requestCode, resultCode, data);
//
// switch (requestCode) {
// case REQUEST_DBX_CHOOSER:
//// handleFileSelectionAll(resultCode, data);
// break;
// case REQUEST_DROPBOX_FILE:
// handleFileSelection(resultCode, data);
// break;
// }
// }
//
// @Override
// public void onStart() {
// super.onStart();
//
// // register as event bus listener
// EventBus.getDefault().register(this);
// }
//
// @Override
// public void onResume() {
// super.onResume();
//
// // complete process authentication
// if (mDropboxLoginBegin) {
// mDropboxHelper.completeAuthenticationDropbox();
// mDropboxHelper.sendBroadcastStartServiceScheduled(SyncSchedulerBroadcastReceiver.ACTION_START);
// mDropboxLoginBegin = false;
// }
//
// // dropbox link and unlink
// if (findPreference(getString(PreferenceConstants.PREF_DROPBOX_LINK)) != null) {
// findPreference(getString(PreferenceConstants.PREF_DROPBOX_LINK)).setSelectable(!mDropboxHelper.isLinked());
// findPreference(getString(PreferenceConstants.PREF_DROPBOX_LINK)).setEnabled(!mDropboxHelper.isLinked());
// }
// if (findPreference(getString(PreferenceConstants.PREF_DROPBOX_UNLINK)) != null) {
// findPreference(getString(PreferenceConstants.PREF_DROPBOX_UNLINK)).setSelectable(mDropboxHelper.isLinked());
// findPreference(getString(PreferenceConstants.PREF_DROPBOX_UNLINK)).setEnabled(mDropboxHelper.isLinked());
// }
// // todo Hide linked file name.
//
// }
//
// @Override
// public void onStop() {
// super.onStop();
//
// EventBus.getDefault().unregister(this);
// }
//
// // event handling
//
// /**
// * Called when file is downloaded from Dropbox.
// */
// @Subscribe
// public void onEvent(DbFileDownloadedEvent event) {
// // set main activity to reload.
//// MainActivity.setRestartActivity(true);
// EventBus.getDefault().post(new AppRestartRequiredEvent());
//
// // open the new database.
// DropboxManager dropbox = new DropboxManager(getActivity(), mDropboxHelper);
// dropbox.openDownloadedDatabase();
// }
//
// // private
//
// private void initializeControls() {
// final PreferenceScreen pDropbox = (PreferenceScreen) findPreference(getString(PreferenceConstants.PREF_DROPBOX_HOWITWORKS));
// if (pDropbox != null) {
// pDropbox.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
//
// @Override
// public boolean onPreferenceClick(Preference preference) {
// showWebTipsDialog(getString(PreferenceConstants.PREF_DROPBOX_HOWITWORKS),
// getString(R.string.dropbox_how_it_works), R.raw.help_dropbox, false);
// return false;
// }
// });
// }
//
// // Login to Dropbox.
//
// final Preference pDropboxLink = findPreference(getString(PreferenceConstants.PREF_DROPBOX_LINK));
// pDropboxLink.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
//
// @Override
// public boolean onPreferenceClick(Preference preference) {
// mDropboxHelper.logIn();
// mDropboxLoginBegin = true;
// return false;
// }
// });
//
// // Logout from dropbox
//
// final Preference pDropboxUnlink = findPreference(getString(PreferenceConstants.PREF_DROPBOX_UNLINK));
// pDropboxUnlink.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
//
// @Override
// public boolean onPreferenceClick(Preference preference) {
// mDropboxHelper.logOut();
// mDropboxHelper.sendBroadcastStartServiceScheduled(SyncSchedulerBroadcastReceiver.ACTION_STOP);
//
// // refresh ui
// onResume();
// return false;
// }
// });
//
// //wiki
// Preference pWiki = findPreference(getString(PreferenceConstants.PREF_DROPBOX_WIKI));
// if (pWiki != null) {
// pWiki.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
//
// @Override
// public boolean onPreferenceClick(Preference preference) {
// //startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://code.google.com/p/android-money-manager-ex/wiki/DropboxSync")));
// Intent intent = new Intent(getActivity(), HelpActivity.class);
// intent.setData(Uri.parse("android.resource://com.money.manager.ex/" + R.raw.help_dropbox));
// //intent.setData(Uri.parse("http://code.google.com/p/android-money-manager-ex/wiki/DropboxSync"));
// startActivity(intent);
// return false;
// }
// });
// }
//
// // Select file from app folder
//
// final Preference pDropboxFile = findPreference(getString(PreferenceConstants.PREF_DROPBOX_LINKED_FILE));
// if (pDropboxFile != null) {
// pDropboxFile.setSummary(mDropboxHelper.getLinkedRemoteFile());
// // check if summary is null and
// if (TextUtils.isEmpty(pDropboxFile.getSummary())) {
// pDropboxFile.setSummary(R.string.click_to_select_file_dropbox);
// }
// // open Dropbox Browser Activity
// pDropboxFile.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
//
// @Override
// public boolean onPreferenceClick(Preference preference) {
// selectFileFromAppDirectory();
// return false;
// }
// });
// }
//
// // Select file anywhere in Dropbox
//
// final Preference dropboxFileAll = findPreference(getString(PreferenceConstants.PREF_DROPBOX_LINKED_FILE_ALL));
// if (dropboxFileAll != null) {
// dropboxFileAll.setSummary(mDropboxHelper.getLinkedRemoteFile());
// // check if summary is null and
// if (TextUtils.isEmpty(dropboxFileAll.getSummary())) {
// dropboxFileAll.setSummary(R.string.dropbox_file_summary_all);
// }
// // open Dropbox Browser Activity
// dropboxFileAll.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
// @Override
// public boolean onPreferenceClick(Preference preference) {
//// showDropboxChooser();
// showNoNonsenseFilePicker();
// return false;
// }
// });
// }
//
// //force download
// PreferenceScreen pDownload = (PreferenceScreen) findPreference(getString(PreferenceConstants.PREF_DROPBOX_DOWNLOAD));
// if (pDownload != null) {
// pDownload.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
//
// @Override
// public boolean onPreferenceClick(Preference preference) {
// downloadFileFromDropbox();
// return true;
// }
// });
// }
//
// //force upload
// PreferenceScreen pUpload = (PreferenceScreen) findPreference(getString(PreferenceConstants.PREF_DROPBOX_UPLOAD));
// if (pUpload != null) {
// pUpload.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
//
// @Override
// public boolean onPreferenceClick(Preference preference) {
// String dropboxFile = mDropboxHelper.getLinkedRemoteFile();
// if (TextUtils.isEmpty(dropboxFile)) {
// dropboxFile = "/" + new File(MoneyManagerApplication.getDatabasePath(getActivity().getApplicationContext())).getName();
// }
// uploadFileToDropbox(dropboxFile);
//
// return false;
// }
// });
// }
//
// //times repeat
// ListPreference pRepeats = (ListPreference) findPreference(getString(PreferenceConstants.PREF_DROPBOX_TIMES_REPEAT));
// if (pRepeats != null) {
// pRepeats.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
//
// @Override
// public boolean onPreferenceChange(Preference preference, Object newValue) {
// mDropboxHelper.sendBroadcastStartServiceScheduled(SyncSchedulerBroadcastReceiver.ACTION_STOP);
// mDropboxHelper.sendBroadcastStartServiceScheduled(SyncSchedulerBroadcastReceiver.ACTION_START);
// return true;
// }
// });
// }
// }
//
// private void handleFileSelection(int resultCode, Intent data) {
// if (resultCode != Activity.RESULT_OK || data == null) return;
//
// final Preference pDropboxFile = findPreference(getString(PreferenceConstants.PREF_DROPBOX_LINKED_FILE));
// if (pDropboxFile == null) return;
//
// CharSequence oldFile = "", newFile;
// if (!TextUtils.isEmpty(pDropboxFile.getSummary())) {
// oldFile = pDropboxFile.getSummary();
// }
// newFile = data.getStringExtra(DropboxBrowserActivity.INTENT_DROBPOXFILE_PATH);
//
// if (newFile == null) return;
//
// // update value
// mDropboxHelper.setLinkedRemoteFile(newFile.toString());
// pDropboxFile.setSummary(newFile);
// // check if files is modified
// if (!oldFile.equals(newFile)) {
// // force download file
// downloadFileFromDropbox();
// }
// }
//
//// private void handleFileSelectionAll(int resultCode, Intent data) {
//// if (resultCode != Activity.RESULT_OK || data == null) return;
////
//// DbxChooser.Result result = new DbxChooser.Result(data);
//// String fileName = result.getName();
//// Uri uri = result.getLink();
//// }
////
//// private void showDropboxChooser() {
//// DbxChooser chooser = new DbxChooser(DropboxHelper.DROPBOX_APP_KEY);
//// chooser.forResultType(DbxChooser.ResultType.DIRECT_LINK)
//// .launch(this, REQUEST_DBX_CHOOSER);
//// // PREVIEW_LINK
//// }
//
// private void showNoNonsenseFilePicker() {
//// Intent i = new Intent(getActivity(), FilePickerActivity.class);
// }
//
// private void selectFileFromAppDirectory() {
// Intent intent = new Intent(getActivity(), DropboxBrowserActivity.class);
// intent.putExtra(DropboxBrowserActivity.INTENT_DROBPOXFILE_PATH, mDropboxHelper.getLinkedRemoteFile());
// startActivityForResult(intent, REQUEST_DROPBOX_FILE);
// }
//
// private void showWebTipsDialog(final String key, final CharSequence title, final int rawResources, boolean force) {
// if (!force) {
// if (getActivity().getSharedPreferences(TipsDialogFragment.PREF_DIALOG, 0).getBoolean(key, false))
// return;
// }
// AlertDialogWrapper.Builder alertDialog = new AlertDialogWrapper.Builder(getActivity())
// .setTitle(title);
// // view body
// @SuppressLint("InflateParams")
// final LinearLayout view = (LinearLayout) LayoutInflater.from(getActivity()).inflate(R.layout.dialog_tips, null);
// // set invisible tips
// final TextView textTips = (TextView) view.findViewById(R.id.textViewTips);
// textTips.setVisibility(View.GONE);
// // set webView
// final WebView webTips = (WebView) view.findViewById(R.id.webViewTips);
// webTips.loadData(MmxFileUtils.getRawAsString(getActivity().getApplicationContext(), rawResources), "text/html", "UTF-8");
// webTips.setVisibility(View.VISIBLE);
//
// final CheckBox checkDont = (CheckBox) view.findViewById(R.id.checkBoxDontShow);
// checkDont.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
// @Override
// public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// getActivity().getSharedPreferences(TipsDialogFragment.PREF_DIALOG, 0).edit().putBoolean(key, isChecked).commit();
// }
// });
// // bug CheckBox object of Android
// if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
// final double scale = getActivity().getResources().getDisplayMetrics().density;
// checkDont.setPadding(checkDont.getPaddingLeft() + (int) (40.0f * scale + 0.5f),
// checkDont.getPaddingTop(),
// checkDont.getPaddingRight(),
// checkDont.getPaddingBottom());
// }
// alertDialog.setView(view);
// // set neutral button
// alertDialog.setNeutralButton(android.R.string.ok, new DialogInterface.OnClickListener() {
//
// @Override
// public void onClick(DialogInterface binaryDialog, int which) {
// binaryDialog.dismiss();
// }
// });
// // set auto close to false
// alertDialog.setCancelable(false);
// // show binaryDialog
// alertDialog.create().show();
// }
//
// private void uploadFileToDropbox(String dropboxFile) {
// // compose intent to launch service for download
// Intent service = new Intent(getActivity().getApplicationContext(), DropboxService.class);
// service.setAction(SyncConstants.INTENT_ACTION_UPLOAD);
// service.putExtra(SyncConstants.INTENT_EXTRA_LOCAL_FILE, MoneyManagerApplication.getDatabasePath(getActivity().getApplicationContext()));
// service.putExtra(SyncConstants.INTENT_EXTRA_REMOTE_FILE, dropboxFile);
// // toast to show
// Toast.makeText(getActivity().getApplicationContext(), R.string.dropbox_upload_is_starting, Toast.LENGTH_LONG).show();
// // start service
// getActivity().startService(service);
// }
//
// private void downloadFileFromDropbox() {
// // must send the parent activity here in order to display the progress binaryDialog.
// SyncPreferencesActivity parent = (SyncPreferencesActivity) getActivity();
// DropboxManager dropbox = new DropboxManager(parent, mDropboxHelper);
// dropbox.downloadFromDropbox();
// }
//}