package pt.rupeal.invoicexpress.fragments;
import java.util.ArrayList;
import pt.rupeal.invoicexpress.MainActivity;
import pt.rupeal.invoicexpress.R;
import pt.rupeal.invoicexpress.activities.AuthenticationActivity;
import pt.rupeal.invoicexpress.enums.FragmentTagsEnum;
import pt.rupeal.invoicexpress.server.InvoiceXpress;
import pt.rupeal.invoicexpress.layouts.LinkLayout;
import pt.rupeal.invoicexpress.layouts.SubTitleLayout;
import pt.rupeal.invoicexpress.model.AccountModel;
import android.accounts.Account;
import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Vibrator;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
public class MoreFragment extends Fragment {
// view is an attribute because the onResume method
private View view;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
((MainActivity) getActivity()).getActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.more, container, false);
((Button) view.findViewById(R.id.logout)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// vibrate - time in milliseconds
((Vibrator) getActivity().getSystemService(Context.VIBRATOR_SERVICE)).vibrate(50);
Account[] accounts = InvoiceXpress.getInstance().getInvoiceXpressAccount();
if(accounts.length > 0){
// remove accounts data
InvoiceXpress.getInstance().getAccounts().clear();
InvoiceXpress.getInstance().getAccounts().addAll(new ArrayList<AccountModel>());
InvoiceXpress.getInstance().setActiveAccount(null);
InvoiceXpress.getInstance().setActiveAccountDetails(null);
// remove android invoiceXpress account
InvoiceXpress.getInstance().getAccountManager().removeAccount(accounts[0], null, null);
// start authentication activity
Intent intent = new Intent(getActivity(), AuthenticationActivity.class);
getActivity().startActivityForResult(intent, 2);
}
}
});
((SubTitleLayout) view.findViewById(R.id.account)).setTextToTextViewLeft(R.string.more_account);
((LinkLayout) view.findViewById(R.id.active_account)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// vibrate - time in milliseconds
((Vibrator) getActivity().getSystemService(Context.VIBRATOR_SERVICE)).vibrate(50);
// set account details fragment
((MainActivity) getActivity()).addFragment(AccountDetailsFragment.class,
FragmentTagsEnum.ACCOUNTS_DETAILS);
}
});
((LinkLayout) view.findViewById(R.id.change_account)).setLabel(R.string.more_change_account);
((LinkLayout) view.findViewById(R.id.change_account)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// vibrate - time in milliseconds
((Vibrator) getActivity().getSystemService(Context.VIBRATOR_SERVICE)).vibrate(50);
((MainActivity) getActivity()).addFragment(AccountsFragment.class,
FragmentTagsEnum.ACCOUNTS);
}
});
((SubTitleLayout) view.findViewById(R.id.invoiceXpress)).setTextToTextViewLeft(R.string.more_invoiceXpress);
((LinkLayout) view.findViewById(R.id.about)).setLabel(R.string.more_about);
((LinkLayout) view.findViewById(R.id.about)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// vibrate - time in milliseconds
((Vibrator) getActivity().getSystemService(Context.VIBRATOR_SERVICE)).vibrate(50);
((MainActivity) getActivity()).addFragment(AboutFragment.class,
FragmentTagsEnum.ABOUT);
}
});
return view;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// just clear
menu.clear();
}
@Override
public void onResume() {
if(InvoiceXpress.getInstance().getActiveAccount() != null){
// get link layout
LinkLayout activeAccountLinkLayout = ((LinkLayout) view.findViewById(R.id.active_account));
// resize active account name isn't need, the api return a valid short name
// set link layout label
activeAccountLinkLayout.setLabel(InvoiceXpress.getInstance().getActiveAccount().getName());
}
super.onResume();
}
}