/*
* Copyright 2012 The Stanford MobiSocial Laboratory
*
* 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 mobisocial.musubi.ui;
import java.util.ArrayList;
import java.util.List;
import mobisocial.musubi.App;
import mobisocial.musubi.R;
import mobisocial.musubi.feed.iface.Filterable;
import mobisocial.musubi.model.helpers.IdentitiesManager;
import mobisocial.musubi.obj.ObjHelpers;
import mobisocial.musubi.ui.fragments.AccountLinkDialog;
import mobisocial.musubi.ui.fragments.SettingsFragment;
import mobisocial.musubi.ui.fragments.ViewProfileFragment;
import android.content.Intent;
import android.content.res.Configuration;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.View;
import com.viewpagerindicator.TabPageIndicator;
import com.viewpagerindicator.TitleProvider;
public class SettingsActivity extends MusubiBaseActivity implements Filterable {
public static final String PREFS_NAME = "MusubiPrefsFile";
public static final String PREF_ALREADY_SAW_FACEBOOK_POST = "facebook_posted";
public static final String PREF_ANONYMOUS_STATS = "stats";
public static final String PREF_RINGTONE = "ringtone";
public static final String PREF_SHARE_APPS = "share_apps";
public static final boolean PREF_SHARE_APPS_DEFAULT = true;
public static final String PREF_AUTOPLAY = "autoplay";
public static final boolean PREF_AUTOPLAY_DEFAULT = false;
public static final String PREF_WIFI_FINGERPRINTING = "wifi_fingerprinting";
public static final boolean PREF_WIFI_FINGERPRINTING_DEFAULT = false;
public static final String ACTION = "settings_action";
public static enum SettingsAction {PROFILE, ACCOUNT, SETTINGS};
private static final String TAG = "SettingsActivity";
public static final String PREF_SHARE_CONTACT_ADDRESS = "share_address";
public static final boolean PREF_SHARE_CONTACT_ADDRESS_DEFAULT = false;
private ViewPager mViewPager;
private final List<Fragment> mFragments = new ArrayList<Fragment>();
private final List<String> mLabels = new ArrayList<String>();
private final String[] filterTypes = ObjHelpers.getRenderableTypes();
private boolean[] checked;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tabbed);
checked = new boolean[filterTypes.length];
for(int x = 0; x < filterTypes.length; x++) {
checked[x] = true;
}
setTitle("My Settings");
mLabels.add("Profile");
mLabels.add("Accounts");
mLabels.add("Settings");
SQLiteOpenHelper SQLiteOpenHelper = App.getDatabaseSource(this);
IdentitiesManager identitiesManager = new IdentitiesManager(SQLiteOpenHelper);
long myId = identitiesManager.getOwnedIdentities().get(0).id_;
mFragments.add(ViewProfileFragment.newInstance(myId));
mFragments.add(AccountLinkDialog.newInstance());
mFragments.add(SettingsFragment.newInstance());
PagerAdapter adapter = new ViewFragmentAdapter(getSupportFragmentManager(), mFragments, mLabels);
mViewPager = (ViewPager)findViewById(R.id.feed_pager);
mViewPager.setAdapter(adapter);
//Bind the title indicator to the adapter
TabPageIndicator tabIndicator = (TabPageIndicator)findViewById(R.id.feed_titles);
tabIndicator.setViewPager(mViewPager);
if (getIntent().getStringExtra(ACTION) != null) {
switch (SettingsAction.valueOf(getIntent().getStringExtra(ACTION))) {
case PROFILE :
Log.w(TAG, "viewing profile");
mViewPager.setCurrentItem(0);
break;
case ACCOUNT :
Log.w(TAG, "viewing account");
mViewPager.setCurrentItem(1);
break;
case SETTINGS :
Log.w(TAG, "viewing settings q");
mViewPager.setCurrentItem(2);
break;
default :
mViewPager.setCurrentItem(0);
break;
}
}
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
for (Fragment f : mFragments) {
f.onActivityResult(requestCode, resultCode, data);
}
}
public class ViewFragmentAdapter extends FragmentPagerAdapter implements TitleProvider {
final int NUM_ITEMS;
final List<Fragment> mFragments;
final List<String> mTitles;
public ViewFragmentAdapter(FragmentManager fm, List<Fragment> fragments, List<String> titles) {
super(fm);
mFragments = fragments;
mTitles = titles;
NUM_ITEMS = mFragments.size();
}
@Override
public int getCount() {
return NUM_ITEMS;
}
@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}
@Override
public String getTitle(int position) {
return mTitles.get(position);
}
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
}
private View.OnClickListener mViewSelected = new View.OnClickListener() {
@Override
public void onClick(View v) {
Integer i = (Integer)v.getTag();
mViewPager.setCurrentItem(i);
}
};
@Override
public String[] getFilterTypes() {
return filterTypes;
}
@Override
public boolean[] getFilterCheckboxes() {
return checked;
}
@Override
public void setFilterCheckbox(int position, boolean check) {
checked[position] = check;
}
}