BuddiesAddActivity.java :  » Game » bestcardgameever-android » com » scoreloop » android » coreui » Android Open Source

Android Open Source » Game » bestcardgameever android 
bestcardgameever android » com » scoreloop » android » coreui » BuddiesAddActivity.java
/*
 * In derogation of the Scoreloop SDK - License Agreement concluded between
 * Licensor and Licensee, as defined therein, the following conditions shall
 * apply for the source code contained below, whereas apart from that the
 * Scoreloop SDK - License Agreement shall remain unaffected.
 * 
 * Copyright: Scoreloop AG, Germany (Licensor)
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy
 * of the License at 
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations
 * under the License.
 */

package com.scoreloop.android.coreui;

import java.util.ArrayList;
import java.util.List;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;

import com.scoreloop.client.android.core.controller.RequestController;
import com.scoreloop.client.android.core.controller.RequestControllerObserver;
import com.scoreloop.client.android.core.controller.UserController;
import com.scoreloop.client.android.core.controller.UsersController;
import com.scoreloop.client.android.core.model.Session;
import com.scoreloop.client.android.core.model.SocialProvider;
import com.scoreloop.client.android.core.model.User;

//this part is included in the ScoreloopCoreUI doc
import com.geekadoo.R;

public class BuddiesAddActivity extends BaseActivity {

  private class BuddyAddObserver extends UserGenericObserver {
    @Override
    public void requestControllerDidFail(final RequestController requestController, final Exception exception) {
      showDialogSafe(BaseActivity.DIALOG_ERROR_NETWORK);
      setProgressIndicator(false);
    }

    @Override
    public void requestControllerDidReceiveResponse(final RequestController requestController) {
      buddiesAdded++;
      if (!addNextBuddy()) {
        setProgressIndicator(false);
        final int resId = buddiesAdded == 1 ? R.string.sl_buddies_added_one_format
            : R.string.sl_buddies_added_other_format;
        showToast(String.format(getResources().getString(resId), buddiesAdded));
        ((ProfileActivity) getParent()).onBackPressed();
      }
    }
  }

  private class ListItemAdapter extends GenericListItemAdapter {

    public ListItemAdapter(final Context context, final int resource, final List<ListItem> objects) {
      super(context, resource, objects);
    }

    @Override
    public View getView(final int position, View convertView, final ViewGroup parent) {
      convertView = init(position, convertView);

      final LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) image.getLayoutParams();
      layoutParams.height = LayoutParams.WRAP_CONTENT;
      layoutParams.width = LayoutParams.WRAP_CONTENT;
      image.setImageDrawable(getResources().getDrawable(imgRes[position]));
      text0.setVisibility(View.GONE);
      text1.setText(listItem.getLabel());
      text2.setVisibility(View.GONE);

      return convertView;
    }
  }

  private class LoginDialog extends Dialog implements OnClickListener {
    private EditText loginEdit;
    private Button okButton;

    LoginDialog(final Context context) {
      super(context);
    }

    @Override
    public void onClick(final View v) {
      if (v.getId() == R.id.button_ok) {
        dismiss();
        handleDialogClick(loginEdit.getText().toString());
      }
    }

    @Override
    protected void onCreate(final Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.sl_dialog_login);
      setTitle(getResources().getString(R.string.sl_sl_login));
      loginEdit = (EditText) findViewById(R.id.edit_login);
      okButton = (Button) findViewById(R.id.button_ok);
      okButton.setOnClickListener(this);
    }
  }

  private class UsersSearchObserver implements RequestControllerObserver {

    @Override
    public void requestControllerDidFail(final RequestController requestController, final Exception exception) {
      showDialogSafe(BaseActivity.DIALOG_ERROR_NETWORK);
      setProgressIndicator(false);
    }

    @Override
    public void requestControllerDidReceiveResponse(final RequestController requestController) {
      setProgressIndicator(false);

      if (usersSearchController.isOverLimit()) {
        if (usersSearchController.isMaxUserCount()) {
          showToast(getResources().getString(R.string.sl_found_too_many_users));
          ((ProfileActivity) getParent()).onBackPressed();
        } else {
          showToast(String.format(getResources().getString(R.string.sl_found_many_users_format),
              usersSearchController.getCountOfUsers()));
          ((ProfileActivity) getParent()).onBackPressed();
        }

        return;
      }

      usersFound = new ArrayList<User>(usersSearchController.getUsers());
      if (usersFound.isEmpty()) {
        showToast(getResources().getString(R.string.sl_found_no_user));
        ((ProfileActivity) getParent()).onBackPressed();
      } else {
        setProgressIndicator(true);
        buddiesAdded = 0;
        if (!addNextBuddy()) {
          setProgressIndicator(false);
          showToast(getResources().getString(R.string.sl_found_no_user));
          ((ProfileActivity) getParent()).onBackPressed();
        }
      }
    }
  }

  private static final int ADDRESSBOOK = 3;
  private static final int DIALOG_LOGIN = 1000;
  private static final int FACEBOOK = 0;
  private static int[] imgRes = { R.drawable.sl_facebook, R.drawable.sl_myspace, R.drawable.sl_twitter,
      R.drawable.sl_addressbook, R.drawable.sl_login };
  private static final int LOGIN = 4;
  private static final int MYSPACE = 1;

  private static final int TWITTER = 2;

  private int buddiesAdded;
  private UserController buddyAddController;
  private List<User> usersFound;
  private UsersController usersSearchController;

  private boolean addNextBuddy() {
    User user;
    do {
      user = popUser();
    } while ((user != null)
        && (Session.getCurrentSession().getUser().equals(user) || Session.getCurrentSession().getUser()
            .getBuddyUsers().contains(user)));

    if (user != null) {
      buddyAddController.setUser(user);
      buddyAddController.addAsBuddy();
      return true;
    }
    return false;
  }

  private void handleDialogClick(final String login) {
    setProgressIndicator(true);
    usersSearchController.setSearchOperator(UsersController.LoginSearchOperator.EXACT_MATCH);
    usersSearchController.searchByLogin(login);
  }

  private void handleItemClick(final int position) {
    switch (position) {
    case FACEBOOK:
      handleSocialItemClick(facebookProvider);
      break;
    case MYSPACE:
      handleSocialItemClick(myspaceProvider);
      break;
    case TWITTER:
      handleSocialItemClick(twitterProvider);
      break;
    case ADDRESSBOOK:
      setProgressIndicator(true);
      usersSearchController.searchByLocalAddressBook();
      break;
    case LOGIN:
      showDialogSafe(DIALOG_LOGIN);
      break;
    default:
      break;
    }
  }

  private void handleSocialItemClick(final SocialProvider socialProvider) {
    setProgressIndicator(true);
    connectToSocialProvider(socialProvider);
  }

  private User popUser() {
    if (usersFound == null) {
      return null;
    }
    if (usersFound.isEmpty()) {
      return null;
    }
    return usersFound.remove(0);
  }

  @Override
  protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.sl_buddies_add);

    final ListView listView = (ListView) findViewById(R.id.list_view);
    final ListItemAdapter adapter = new ListItemAdapter(BuddiesAddActivity.this, R.layout.sl_buddies_add,
        new ArrayList<ListItem>());
    listView.setAdapter(adapter);
    listView.setOnItemClickListener(new OnItemClickListener() {
      @Override
      public void onItemClick(final AdapterView<?> parent, final View view, final int position, final long id) {
        handleItemClick(position);
      }
    });

    adapter.add(new ListItem(getResources().getString(R.string.sl_facebook)));
    adapter.add(new ListItem(getResources().getString(R.string.sl_myspace)));
    adapter.add(new ListItem(getResources().getString(R.string.sl_twitter)));
    adapter.add(new ListItem(getResources().getString(R.string.sl_addressbook)));
    adapter.add(new ListItem(getResources().getString(R.string.sl_sl_login)));

    usersSearchController = new UsersController(new UsersSearchObserver());
    usersSearchController.setSearchesGlobal(true);

    buddyAddController = new UserController(new BuddyAddObserver());

  }

  @Override
  protected Dialog onCreateDialog(final int id) {
    final Dialog dialog = super.onCreateDialog(id);
    if (dialog != null) {
      return dialog;
    }

    switch (id) {
    case DIALOG_LOGIN:
      return new LoginDialog(this);
    default:
      return null;
    }
  }

  @Override
  void onSocialProviderConnectionStatusChange(final SocialProvider socialProvider) {
    setProgressIndicator(false);
    if (socialProvider.isUserConnected(Session.getCurrentSession().getUser())) {
      setProgressIndicator(true);
      usersSearchController.searchBySocialProvider(socialProvider);
    } else {
      ((ProfileActivity) getParent()).onBackPressed();
    }
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.