package com.openfarmanager.android.dialogs; import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.os.Handler; import android.util.Pair; import android.view.View; import android.view.Window; import android.widget.AdapterView; import android.widget.CheckBox; import android.widget.ListView; import com.jcraft.jsch.ChannelSftp; import com.openfarmanager.android.App; import com.openfarmanager.android.R; import com.openfarmanager.android.adapters.SelectEncodingAdapter; import com.openfarmanager.android.model.NetworkEnum; import static com.openfarmanager.android.controllers.EditViewController.*; import java.io.File; import java.nio.charset.Charset; /** * author: Vlad Namashko */ public class SelectEncodingDialog extends Dialog { private Handler mHandler; private File mSelectedFile; private NetworkEnum mNetworkType; private View mDialogView; private CheckBox mSaveAsDefault; private boolean mShowSaveOption; public SelectEncodingDialog(Context context, Handler handler, File selectedFile) { this(context, handler, selectedFile, true); } public SelectEncodingDialog(Context context, Handler handler, NetworkEnum networkType, boolean showSaveOption) { this(context, handler, (File) null, showSaveOption); mNetworkType = networkType; } public SelectEncodingDialog(Context context, Handler handler, File selectedFile, boolean showSaveOption) { super(context, R.style.Action_Dialog); mHandler = handler; mSelectedFile = selectedFile; mShowSaveOption = showSaveOption; setCancelable(false); } @Override public void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_NO_TITLE); mDialogView = View.inflate(App.sInstance.getApplicationContext(), R.layout.dialog_select_encoding, null); mSaveAsDefault = (CheckBox) mDialogView.findViewById(R.id.save_as_default); mSaveAsDefault.setVisibility(mShowSaveOption ? View.VISIBLE : View.GONE); ListView encodings = (ListView) mDialogView.findViewById(R.id.encoding_list); SelectEncodingAdapter adapter = new SelectEncodingAdapter(mSelectedFile, getDefaultCharset()); encodings.setAdapter(adapter); encodings.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Charset character = (Charset) view.getTag(); mHandler.sendMessage(mHandler.obtainMessage(MSG_SELECT_ENCODING, new SelectedEncodingInfo(mSaveAsDefault.isChecked(), character, mNetworkType))); dismiss(); } }); encodings.setSelection(adapter.getDefaultItemPosition()); setContentView(mDialogView); } private String getDefaultCharset() { String charset = App.sInstance.getSettings().getDefaultCharset(); return charset != null ? charset : Charset.defaultCharset().name(); } public static class SelectedEncodingInfo { public boolean saveAsDefault; public Charset charset; public NetworkEnum networkType; public SelectedEncodingInfo(boolean saveAsDefault, Charset charset, NetworkEnum networkType) { this.saveAsDefault = saveAsDefault; this.charset = charset; this.networkType = networkType; } } }