package com.example.android.foldercamera; import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.Message; import android.preference.PreferenceManager; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.ImageButton; import android.widget.ListView; import android.widget.Toast; import java.util.ArrayList; /** * Created by Andrew on 8/12/2015. */ public class CustomDialog extends Dialog implements View.OnClickListener { public static final int DIALOG_LISTVIEW_SELECT = 1; public static final int DIALOG_DELETE_BUTTON = 2; private static final int CODE_SETTING_INTENT=3; private final String SHARED_PREFERENCE_FOLDER_LIST = "fc:folderdialog"; private final String DCIM_PATH = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DCIM).toString(); private Activity mActivity; private ListView listview; private ImageButton button; private EditText editText; private FolderList folderList; private CustomAdapter mAdapter; private SharedPreferences sharedPreferences; private ArrayList<String> folderNameList; private PictureSave mPictureSave; private ImageButton btn_setting; private View.OnClickListener btnSettingsClickListener = new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(mActivity, Settings.class); mActivity.startActivityForResult(intent, CODE_SETTING_INTENT); } }; public CustomDialog(Activity activity, PictureSave pictureSave) { super(activity); mActivity = activity; mPictureSave = pictureSave; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.custom_dialog); btn_setting = (ImageButton)findViewById(R.id.button_settings); btn_setting.setOnClickListener(btnSettingsClickListener); listview = (ListView) findViewById(R.id.dialog_listview); editText = (EditText) findViewById(R.id.dialog_edittext); button = (ImageButton) findViewById(R.id.dialog_button); button.setOnClickListener(this); folderList = new FolderList(getContext()); folderNameList = new ArrayList<String>(); sharedPreferences = PreferenceManager.getDefaultSharedPreferences(mActivity); setTitle("選擇項目"); setupListView(); } private void setupListView() { folderList.getFolderList(sharedPreferences, mActivity.getResources().getString(R.string.pref_folder_list)); folderNameList = folderList.getFolderNameList(); mAdapter = new CustomAdapter(mActivity, android.R.layout.select_dialog_singlechoice, folderList, handler); listview.setAdapter(mAdapter); // listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { // @Override // public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // mPictureSave.setFolderNameAndPath(folderList.getName(position), folderList.getPath(position)); // Toast.makeText(mActivity, "設定照片儲存位置為: " + folderList.getName(position), Toast.LENGTH_SHORT).show(); // dismiss(); // // } // }); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.dialog_button: //if editorText is not empty if (!editText.getText().toString().equals("")) { String folderName = editText.getText().toString(); String folderPath = DCIM_PATH + "/" + folderName; folderList.add(folderName, folderPath); folderList.saveToSharedPreference(sharedPreferences, mActivity.getResources().getString(R.string.pref_folder_list)); folderNameList = folderList.getFolderNameList(); mPictureSave.setFolderNameAndPath(folderName, folderPath); mAdapter.changeData(folderList); Toast.makeText(mActivity, editText.getText().toString(), Toast.LENGTH_SHORT).show(); dismiss(); } } } Handler handler = new Handler() { @Override public void handleMessage(Message msg) { int position = -1; switch (msg.what) { case DIALOG_LISTVIEW_SELECT: position = msg.arg1; mPictureSave.setFolderNameAndPath(folderList.getName(position), folderList.getPath(position)); Toast.makeText(mActivity, "設定照片儲存位置為: " + folderList.getName(position), Toast.LENGTH_SHORT).show(); dismiss(); break; case DIALOG_DELETE_BUTTON: position = msg.arg1; folderList.remove(position); mAdapter.changeData(folderList); break; } } }; }