package com.mblog.activites;
import java.util.ArrayList;
import android.app.TabActivity;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;
import com.mblog.Constants;
import com.mblog.activites.listener.SettingsTabChangeListener;
import com.mblog.activites.listener.handler.settings.BloggerSettingsHandler;
import com.mblog.model.blogger.AvailableBlogModel;
import com.mblog.model.blogger.BlogsArrayAdapter;
import com.mblog.util.StringUtils;
/**
* Setting activity
*
* @author aliaksandr_spichakou
*
*/
public class SettingsActivity extends TabActivity implements Constants {
/**
* Main tab host
*/
private TabHost mTabHost;
/**
* Application preferences
*/
private SharedPreferences mPreferences;
/**
* Setting handler;
*/
private BloggerSettingsHandler handler;
/**
* Tab change listener
*/
private SettingsTabChangeListener settingsTabChangeListener;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.settings);
mPreferences = getSharedPreferences(APP_SETTINGS, MODE_PRIVATE);
mTabHost = getTabHost();
final Resources resources = getResources();
// Twitter settings tab
final TabSpec twitterTabSpec = mTabHost.newTabSpec(SettingsTabChangeListener.TAB_TWITTER);
final CharSequence twitterTabText = resources.getText(R.string.twitterSettingsTabStr);
final Drawable twitterIco = resources.getDrawable(R.drawable.twitter_ico);
final TabSpec twitterIndicator = twitterTabSpec.setIndicator(twitterTabText, twitterIco);
final TabSpec twitterTabContentSpec = twitterIndicator.setContent(R.id.TwitterSettings);
mTabHost.addTab(twitterTabContentSpec);
// Blogger settings tab
final TabSpec bloggerTabSpec = mTabHost.newTabSpec(SettingsTabChangeListener.TAB_BLOGGER);
final CharSequence bloggerTabText = resources.getText(R.string.bloggerSettingsTabStr);
final Drawable bloggerIco = resources.getDrawable(R.drawable.blogger_ico);
final TabSpec bloggerIndicator = bloggerTabSpec.setIndicator(bloggerTabText, bloggerIco);
final TabSpec bloggerTabContentSpec = bloggerIndicator.setContent(R.id.BloggerSettings);
mTabHost.addTab(bloggerTabContentSpec);
// Blogs spinner
final Spinner sBlogs = (Spinner) findViewById(R.id.availableBlogsSpin);
final BlogsArrayAdapter adapterBlogs = new BlogsArrayAdapter(this, android.R.layout.simple_spinner_item, new ArrayList<AvailableBlogModel>());
adapterBlogs.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sBlogs.setAdapter(adapterBlogs);
handler = new BloggerSettingsHandler(adapterBlogs, sBlogs);
settingsTabChangeListener = new SettingsTabChangeListener(resources, this, handler);
mTabHost.setOnTabChangedListener(settingsTabChangeListener);
// restore settings
restoreSettings();
mTabHost.setCurrentTab(0);
}
/**
* Refresh blog list
*
* @param view
*/
public void refreshBlogList(View view) {
saveBloggerSettings(view);
handler.set2Refresh();
settingsTabChangeListener.onTabChanged(SettingsTabChangeListener.TAB_BLOGGER);
}
/**
* Restore settings
*/
private void restoreSettings() {
final String bloggerLogin = mPreferences.getString(BLOGGER_LOGIN, "");
final String twitterLogin = mPreferences.getString(TWITTER_LOGIN, "");
final EditText bloggerLoginView = (EditText) findViewById(R.id.BloggerUsernameEditText);
bloggerLoginView.setText(bloggerLogin);
final EditText twitterLoginView = (EditText) findViewById(R.id.TwitterUsernameEditText);
twitterLoginView.setText(twitterLogin);
final EditText bloggerPasswordView = (EditText) findViewById(R.id.BloggerPasswordEditText);
bloggerPasswordView.setText(PASSWORD_STR);
final EditText twitterPasswordView = (EditText) findViewById(R.id.TwitterPasswordEditText);
twitterPasswordView.setText(PASSWORD_STR);
}
/**
* Save blogger settings
* @param view
*/
public void saveBloggerSettings(View view) {
final Editor edit = mPreferences.edit();
final EditText bloggerLogin = (EditText) findViewById(R.id.BloggerUsernameEditText);
final CharSequence bloggerLoginText = bloggerLogin.getText();
final EditText bloggerPassword = (EditText) findViewById(R.id.BloggerPasswordEditText);
final CharSequence bloggerPasswordText = bloggerPassword.getText();
// Blogger settings
edit.putString(BLOGGER_LOGIN, bloggerLoginText.toString());
final String bloggerPasswordStr = bloggerPasswordText.toString();
if (!StringUtils.isEmpty(bloggerPasswordStr) && !PASSWORD_STR.equals(bloggerPasswordStr)) {
edit.putString(BLOGGER_PASSWORD, bloggerPasswordStr);
}
// Blogger
final Spinner sBlogs = (Spinner) findViewById(R.id.availableBlogsSpin);
final AvailableBlogModel selectedItemBlog = (AvailableBlogModel) sBlogs.getSelectedItem();
if (selectedItemBlog != null) {
final String blogId = selectedItemBlog.getBlogId();
edit.putString(BLOGGER_BLOG_ID, blogId);
}
edit.commit();
}
/**
* Save twitter settings
* @param view
*/
public void saveTwitterSettings(View view) {
final Editor edit = mPreferences.edit();
final EditText twitterLogin = (EditText) findViewById(R.id.TwitterUsernameEditText);
final CharSequence twitterLoginText = twitterLogin.getText();
final EditText twitterPassword = (EditText) findViewById(R.id.TwitterPasswordEditText);
final CharSequence twitterPasswordText = twitterPassword.getText();
// Twitter settings
edit.putString(TWITTER_LOGIN, twitterLoginText.toString());
final String twitterPasswordStr = twitterPasswordText.toString();
if (!StringUtils.isEmpty(twitterPasswordStr) && !PASSWORD_STR.equals(twitterPasswordStr)) {
edit.putString(TWITTER_PASSWORD, twitterPasswordStr);
}
edit.commit();
}
}
|