package com.mozu.mozuandroidinstoreassistant.app.settings;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import com.mozu.api.security.AppAuthenticator;
import com.mozu.mozuandroidinstoreassistant.app.ChooseTenantAndSiteActivity;
import com.mozu.mozuandroidinstoreassistant.app.R;
import com.mozu.mozuandroidinstoreassistant.app.models.UserPreferences;
import com.mozu.mozuandroidinstoreassistant.app.models.authentication.UserAuthenticationStateMachine;
import com.mozu.mozuandroidinstoreassistant.app.models.authentication.UserAuthenticationStateMachineProducer;
import com.mozu.mozuandroidinstoreassistant.app.webview.WebViewActivity;
import butterknife.ButterKnife;
import butterknife.InjectView;
public class SettingsFragment extends DialogFragment {
@InjectView(R.id.imageView_close) ImageView mImageClose;
@InjectView(R.id.default_store_value) TextView mDefaultStore;
@InjectView(R.id.website_value) TextView mWebsiteValue;
@InjectView(R.id.clear_search) Button mClearSearch;
@InjectView(R.id.update_store) Button mUpdateStore;
private UserAuthenticationStateMachine mUserState;
public static SettingsFragment getInstance() {
return new SettingsFragment();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.settings_fragment_layout, null);
mUserState = UserAuthenticationStateMachineProducer.getInstance(getActivity());
ButterKnife.inject(this, view);
mUserState = UserAuthenticationStateMachineProducer.getInstance(getActivity());
setUpViews();
return view;
}
private void setUpViews(){
StringBuilder store = new StringBuilder();
if (mUserState.getTenantName() != null && mUserState.getSiteName() != null) {
if (mUserState.getTenantName() != null) {
store.append(mUserState.getTenantName());
} else {
store.append(getActivity().getResources().getString(R.string.not_available));
}
store.append(" (");
if (mUserState.getSiteName() != null) {
store.append(mUserState.getSiteName());
} else {
store.append(getActivity().getResources().getString(R.string.not_available));
}
store.append(") ");
} else {
store.append(getActivity().getResources().getString(R.string.not_set));
}
mDefaultStore.setText(store.toString());
mUpdateStore.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent tenantChooser = new Intent(getActivity(), ChooseTenantAndSiteActivity.class);
tenantChooser.putExtra(ChooseTenantAndSiteActivity.LAUNCH_FROM_SETTINGS, true);
startActivity(tenantChooser);
}
});
mWebsiteValue.setText(mUserState.getSiteDomain());
mWebsiteValue.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String httpString = (AppAuthenticator.isUseSSL()) ? "https:" : "http:";
StringBuilder siteDomainBuilder = new StringBuilder(httpString).append("//").append(mUserState.getSiteDomain());
Intent browse = new Intent(getActivity(), WebViewActivity.class);
browse.putExtra(WebViewActivity.URL, siteDomainBuilder.toString());
startActivity(browse);
}
});
mImageClose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getDialog().dismiss();
}
});
if (enableClearSearch()) {
mClearSearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(getActivity().getResources().getString(R.string.clear_history_prompt));
builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
clearSearch();
}
});
builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
AlertDialog dialog = builder.show();
TextView messageText = (TextView)dialog.findViewById(android.R.id.message);
messageText.setGravity(Gravity.CENTER);
dialog.show();
}
});
} else {
mClearSearch.setEnabled(false);
}
}
private boolean enableClearSearch(){
UserPreferences prefs = mUserState.getCurrentUsersPreferences();
if (prefs.getRecentCustomerSearches().size() > 0) {
return true;
}
if (prefs.getRecentGlobalSearchs().size() > 0) {
return true;
}
if (prefs.getRecentProductSearches().size() > 0) {
return true;
}
if (prefs.getRecentOrderSearches().size() > 0) {
return true;
}
return false;
}
private void clearSearch(){
UserPreferences prefs = mUserState.getCurrentUsersPreferences();
prefs.getRecentCustomerSearches().clear();
prefs.getRecentOrderSearches().clear();
prefs.getRecentProductSearches().clear();
prefs.getRecentGlobalSearchs().clear();
mUserState.updateUserPreferences();
mClearSearch.setEnabled(false);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
return dialog;
}
}