/** * $id$ * Copyright 2011-2012 Renren Inc. All rights reserved. */ package com.renren.api.connect.android.photos; import java.util.ArrayList; import java.util.List; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.TextUtils; import android.view.View; import android.view.Window; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import com.renren.api.connect.android.AsyncRenren; import com.renren.api.connect.android.AuthorizationHelper; import com.renren.api.connect.android.R; import com.renren.api.connect.android.Util; import com.renren.api.connect.android.common.AbstractRenrenRequestActivity; import com.renren.api.connect.android.common.AbstractRequestListener; import com.renren.api.connect.android.exception.RenrenAuthError; import com.renren.api.connect.android.exception.RenrenError; import com.renren.api.connect.android.view.ProfileNameView; import com.renren.api.connect.android.view.ProfilePhotoView; import com.renren.api.connect.android.view.RenrenAuthListener; /** * 创建相册的界面<br> * * @author sunting ting.sun@renren-inc.com * */ public class CreateAlbumActivity extends AbstractRenrenRequestActivity { /** * 标识数据状态的消息值,依次为发送成功,出现异常,出现严重错误 */ private final static int DATA_COMPLETE = 0xffff; private final static int DATA_ERROR = 0xfffe; private final static int DATA_FAULT = 0xfffd; /** * 调用createAlbum方法要传递的参数 */ AlbumCreateRequestParam albumRequest = new AlbumCreateRequestParam(); /** * 相册隐私设置,不支持设置密码 */ Spinner albumVisibleValue = null; /** * 相册名称 */ EditText albumNameValue = null; /** * 相册拍照的地点 */ EditText albumLocationValue = null; /** * 相册描述 */ EditText albumDescriptionValue = null; /** * 提交按钮 */ Button submit = null; /** * 取消按钮 */ Button cancel = null; @Override public void onCreate(Bundle savedInstanceState) { // 隐藏标题栏 requestWindowFeature(Window.FEATURE_NO_TITLE); super.onCreate(savedInstanceState); // 使用父类的renren对象 if (renren == null) { // renren对象获取失败,无法执行创建相册的操作,直接退出本Activity Util.logger("renren object is null, can't create album!"); showTip("无法创建相册,请稍后重试!"); finish(); } renren.init(this); // 权限验证,如果用户已经登录并且权限满足,则初始化界面,否则结束Activity AuthorizationHelper.check(renren, CreateAlbumActivity.this, new String[] { PhotoHelper.CREATE_ALBUM_PERMISSION }, new RenrenAuthListener() { @Override public void onRenrenAuthError( RenrenAuthError renrenAuthError) { finish(); } @Override public void onComplete(Bundle values) { initComponents(); } @Override public void onCancelLogin() { finish(); } @Override public void onCancelAuth(Bundle values) { finish(); } }); } private void initComponents() { setContentView(R.layout.renren_sdk_create_album); // 初始化头像和名字控件 ProfilePhotoView profilePhotoView = (ProfilePhotoView) findViewById(R.id.renren_sdk_profile_photo); profilePhotoView.setUid(renren.getCurrentUid()); ProfileNameView profileNameView = (ProfileNameView) findViewById(R.id.renren_sdk_profile_name); profileNameView.setUid(renren.getCurrentUid(), renren); // 设置隐私的选项,由于不支持设置相册密码,所以“用密码访问”那一项要去掉 final List<AlbumPrivacyType> spinnerValues = new ArrayList<AlbumPrivacyType>(); AlbumPrivacyType[] albumPrivacyTypes = AlbumPrivacyType.values(); for (int i = 0; i < albumPrivacyTypes.length; i++) { if (albumPrivacyTypes[i].getOunces() != AlbumPrivacyType.PASSWORD .getOunces()) { spinnerValues.add(albumPrivacyTypes[i]); } } albumVisibleValue = (Spinner) findViewById(R.id.renren_sdk_album_visible_value); ArrayAdapter<AlbumPrivacyType> adapter = new ArrayAdapter<AlbumPrivacyType>( this, android.R.layout.simple_spinner_item, spinnerValues); adapter.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line); albumVisibleValue.setAdapter(adapter); albumVisibleValue .setOnItemSelectedListener(new Spinner.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { albumRequest.setVisible(spinnerValues.get(position)); } @Override public void onNothingSelected(AdapterView<?> parent) { } }); albumNameValue = (EditText) findViewById(R.id.renren_sdk_album_name_value); albumLocationValue = (EditText) findViewById(R.id.renren_sdk_album_location_value); albumDescriptionValue = (EditText) findViewById(R.id.renren_sdk_album_description_value); submit = (Button) findViewById(R.id.renren_sdk_create_album_submit); cancel = (Button) findViewById(R.id.renren_sdk_create_album_cancel); submit.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { String name = albumNameValue.getText().toString(); String location = albumLocationValue.getText().toString(); String description = albumDescriptionValue.getText().toString(); if (name == null || TextUtils.getTrimmedLength(name) == 0) { showTip("相册名称不能为空!"); } else { albumRequest.setName(name); if (!"".equals(location)) { albumRequest.setLocation(location); } if (!"".equals(description)) { albumRequest.setDescription(description); } // 调用接口完成创建相册的工作 new AsyncRenren(renren) .createAlbum( albumRequest, new AbstractRequestListener<AlbumCreateResponseBean>() { @Override public void onRenrenError( RenrenError renrenError) { if (renrenError != null) { handler.sendEmptyMessage(DATA_ERROR); Util.logger("exception in creating album!: " + renrenError.getMessage()); } } @Override public void onFault(Throwable fault) { if (fault != null) { handler.sendEmptyMessage(DATA_FAULT); Util.logger("exception in creating album!: " + fault.getMessage()); } } @Override public void onComplete( AlbumCreateResponseBean albumResponse) { if (albumResponse != null) { handler.sendEmptyMessage(DATA_COMPLETE); Util.logger("success creating an album!\n" + albumResponse); } } }); // 正在创建相册,显示进度框 showProgress("创建中..."); } } }); cancel.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { finish(); } }); } Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case DATA_COMPLETE: // 界面显示完成,结束进度框 finishProgress(); CreateAlbumActivity.this.finish(); break; case DATA_ERROR: finishProgress(); CreateAlbumActivity.this.finish(); break; case DATA_FAULT: finishProgress(); CreateAlbumActivity.this.finish(); break; default: finishProgress(); CreateAlbumActivity.this.finish(); break; } } }; }