/**
* Copyright (C) 2013 Romain Guefveneu.
*
* This file is part of naonedbus.
*
* Naonedbus 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.
*
* Naonedbus 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 net.naonedbus.helper;
import net.naonedbus.R;
import net.naonedbus.bean.Favori;
import net.naonedbus.manager.impl.FavoriManager;
import net.naonedbus.service.FavoriService;
import net.naonedbus.utils.InfoDialogUtils;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.text.ClipboardManager;
import android.text.InputType;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.TextView;
/**
* @author romain
*
*/
public class FavorisHelper {
public static abstract class FavorisActionListener {
/**
* Un favori a été renommé
*/
public void onFavoriRenamed(final Favori item) {
};
}
private final Context mContext;
private FavorisActionListener mFavorisActionListener;
public FavorisHelper(final Context context) {
mContext = context;
}
public FavorisHelper(final Context context, final FavorisActionListener favorisActionListener) {
mContext = context;
mFavorisActionListener = favorisActionListener;
}
/**
* Renommer un favori
*
* @param idFavori
*/
public void renameFavori(final int favoriId) {
final FavoriManager favoriManager = FavoriManager.getInstance();
final Favori item = favoriManager.getSingle(mContext.getContentResolver(), favoriId);
final View alertDialogView = LayoutInflater.from(mContext).inflate(R.layout.dialog_input, null);
final EditText input = (EditText) alertDialogView.findViewById(R.id.text);
input.setText(item.getNomFavori());
input.selectAll();
final AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setView(alertDialogView);
builder.setTitle(R.string.action_rename);
builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(final DialogInterface dialog, final int which) {
final String nom = input.getText().toString().trim();
item.setNomFavori((nom.length() == 0) ? null : nom);
favoriManager.setFavori(mContext.getContentResolver(), item);
if (mFavorisActionListener != null) {
mFavorisActionListener.onFavoriRenamed(item);
}
}
});
builder.setNegativeButton(android.R.string.cancel, null);
final AlertDialog alert = builder.create();
alert.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
alert.show();
}
/**
* Sauvegarder les favoris au format Json et envoyer ça dans le cloud
*/
public void exportFavoris() {
final Intent intent = new Intent(mContext, FavoriService.class);
intent.setAction(FavoriService.INTENT_ACTION_EXPORT);
mContext.startService(intent);
}
/**
* Importer les favoris depuis les could
*/
public void importFavoris() {
final LayoutInflater factory = LayoutInflater.from(mContext);
final View alertDialogView = factory.inflate(R.layout.dialog_input, null);
final EditText input = (EditText) alertDialogView.findViewById(R.id.text);
input.setInputType(InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS);
final AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setTitle(R.string.dialog_title_favoris_import);
builder.setNegativeButton(android.R.string.cancel, null);
builder.setPositiveButton(R.string.action_import, new DialogInterface.OnClickListener() {
@Override
public void onClick(final DialogInterface dialog, final int which) {
final String id = input.getText().toString().trim();
if (id.trim().length() == 0) {
showErrorKeyNoValid();
} else {
onImport(id);
}
}
});
builder.setView(alertDialogView);
final AlertDialog alert = builder.create();
alert.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
alert.show();
}
private void showErrorKeyNoValid() {
InfoDialogUtils.show(mContext, R.string.msg_error_export_import, R.string.msg_error_content_favoris_key);
}
private void onImport(final String key) {
final Intent intent = new Intent(mContext, FavoriService.class);
intent.setAction(FavoriService.INTENT_ACTION_IMPORT);
intent.putExtra(FavoriService.INTENT_PARAM_KEY, key);
mContext.startService(intent);
}
public void showExportKey(final String key) {
final LayoutInflater factory = LayoutInflater.from(mContext);
final View alertDialogView = factory.inflate(R.layout.dialog_readonly, null);
final EditText input = (EditText) alertDialogView.findViewById(R.id.text);
final TextView label = (TextView) alertDialogView.findViewById(R.id.comment);
label.setText(R.string.dialog_content_export);
input.setText(key);
input.setFocusable(false);
final AlertDialog.Builder adb = new AlertDialog.Builder(mContext);
adb.setView(alertDialogView);
adb.setTitle(R.string.dialog_title_export);
adb.setPositiveButton(android.R.string.ok, null);
adb.setCancelable(false);
adb.setNeutralButton(R.string.copy, new OnClickListener() {
@Override
public void onClick(final DialogInterface dialog, final int which) {
final ClipboardManager clipboard = (ClipboardManager) mContext
.getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText(key);
}
});
adb.show();
}
}