//This is source code of favorite. Copyrightâ“’. Tarks. All Rights Reserved.
package com.tarks.favorite;
import java.lang.reflect.Field;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import com.tarks.favorite.global.Global;
import com.tarks.favorite.page.ProfileActivity;
import com.tarks.favorite.page.document_write;
import com.tarks.favorite.page.page_create;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.Fragment;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.support.v4.widget.ViewDragHelper;
import android.view.KeyEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.support.v4.view.GravityCompat;
public class main extends SherlockFragmentActivity {
// Declare Variables
DrawerLayout mDrawerLayout;
ListView mDrawerList;
ActionBarDrawerToggle mDrawerToggle;
MenuListAdapter mMenuAdapter;
String[] title;
int fragment_position;
//String[] subtitle;
int[] icon;
Fragment fragment1 = new mainfragment();
Fragment fragment2 = new PagePopularFragment();
Fragment contacts_fragment = new contacts_fragment();
Fragment no_favorite = new no_favorite_fragment();
//Fragment fragment3 = new Fragment3();
private CharSequence mDrawerTitle;
private CharSequence mTitle;
private Menu optionsMenu;
int NowPosition;
String user_name;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Get the view from drawer_main.xml
setContentView(R.layout.main);
// Get the Title
mTitle = mDrawerTitle = getTitle();
user_name = Global.NameMaker(getString(R.string.lang), Global.getSetting("name_1", ""), Global.getSetting("name_2", ""));
// Generate title
title = new String[] { user_name ,getString(R.string.favorites), getString(R.string.contacts), getString(R.string.pages),
getString(R.string.create_page), getString(R.string.setting), };
// Generate subtitle
//subtitle = new String[] { "Subtitle Fragment 1", "Subtitle Fragment 2",
// "Subtitle Fragment 3" };
// Generate icon
icon = new int[] {R.drawable.drawer_profile , R.drawable.home ,R.drawable.people_white, R.drawable.ic_list,
R.drawable.add ,R.drawable.settings };
// Locate DrawerLayout in drawer_main.xml
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
//Drag margin
Field mDragger;
try {
mDragger = mDrawerLayout.getClass().getDeclaredField(
"mLeftDragger");
mDragger.setAccessible(true);
ViewDragHelper draggerObj = (ViewDragHelper) mDragger
.get(mDrawerLayout);
Field mEdgeSize = draggerObj.getClass().getDeclaredField(
"mEdgeSize");
mEdgeSize.setAccessible(true);
int edge = mEdgeSize.getInt(draggerObj);
mEdgeSize.setInt(draggerObj, edge * 2);
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}//mRightDragger for right obviously
catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Locate ListView in drawer_main.xml
mDrawerList = (ListView) findViewById(R.id.listview_drawer);
// Set a custom shadow that overlays the main content when the drawer
// opens
// mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow,
// GravityCompat.START);
// Pass string arrays to MenuListAdapter
mMenuAdapter = new MenuListAdapter(main.this, title, icon);
// Set the MenuListAdapter to the ListView
mDrawerList.setAdapter(mMenuAdapter);
//Background Color
// mDrawerLayout.setBackgroundResource(Color.parseColor("#dc7727"));
// Capture listview menu item click
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
// Enable ActionBar app icon to behave as action to toggle nav drawer
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(false);
// ActionBarDrawerToggle ties together the the proper interactions
// between the sliding drawer and the action bar app icon
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.drawable.ic_drawer, R.string.drawer_open,
R.string.drawer_close) {
public void onDrawerClosed(View view) {
// TODO Auto-generated method stub
super.onDrawerClosed(view);
}
public void onDrawerOpened(View drawerView) {
// TODO Auto-generated method stub
// Set the title on the action when drawer open
//getSupportActionBar().setTitle(mDrawerTitle);
super.onDrawerOpened(drawerView);
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
if (savedInstanceState == null) {
selectItem(1);
}
}
public void ChangeUserAlert(){
AlertDialog.Builder builder = new AlertDialog.Builder(
main.this);
builder.setMessage(getString(R.string.change_user_default_des)).setTitle(
getString(R.string.change_user));
builder.setPositiveButton(getString(R.string.yes),
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
ChangeUserAct();
}
});
builder.setNegativeButton(getString(R.string.no), null);
builder.show();
}
public void ChangeUserAct(){
// Setting Editor
SharedPreferences edit = getSharedPreferences("setting",
MODE_PRIVATE);
SharedPreferences.Editor editor = edit.edit();
editor.putString("default_user", "Y");
editor.putString("user_srl", Global.getSetting("default_user_srl", "0"));
editor.putString("user_srl_auth", Global.getSetting("default_user_srl_auth", "null"));
//Commit
editor.commit();
MainActivity.INSTANCE.restartApplication();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
this.optionsMenu = menu;
MenuItem item;
menu.add(0, 1, 0, getString(R.string.create_page)).setIcon(R.drawable.add)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
// menu.add(0, 2, 0, getString(R.string.search)).setIcon(R.drawable.search)
// .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
menu.add(0, 0, 0, getString(R.string.write)).setIcon(R.drawable.write)
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
menu.add(0, 100, 0, getString(R.string.change_user))
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
menu.add(0, 200, 0, getString(R.string.invite))
.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
menu.findItem(0).setVisible(fragment_position == 1 || fragment_position != 2);
menu.findItem(1).setVisible(fragment_position == 3);
//User change
menu.findItem(100).setVisible(Global.getSetting("default_user", "Y").matches("N"));
//Invite
menu.findItem(200).setVisible(fragment_position == 2);
// item = menu.add(0, 1, 0, R.string.Main_MenuAddBookmark);
// item.setIcon(R.drawable.ic_menu_add_bookmark);
return true;
}
public void Drawer(){
if (mDrawerLayout.isDrawerOpen(mDrawerList)) {
mDrawerLayout.closeDrawer(mDrawerList);
} else {
mDrawerLayout.openDrawer(mDrawerList);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
Drawer();
}
if (item.getItemId() == 0) {
Intent intent1 = new Intent(main.this,
document_write.class);
intent1.putExtra("page_srl",Global.getSetting("user_srl", "0"));
intent1.putExtra("page_name",user_name);
startActivityForResult(intent1, 1);
return true;
}
if (item.getItemId() == 1) {
Intent intent1 = new Intent(main.this, page_create.class);
startActivityForResult(intent1, 1);
return true;
}
if (item.getItemId() == 100) {
try{
ChangeUserAlert();
}catch (Exception e){ System.exit(0);}
}
if (item.getItemId() == 200) {
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("text/plain");
share.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.invite));
share.putExtra(Intent.EXTRA_TEXT, getString(R.string.invite_message));
startActivity(Intent.createChooser(share,
getString(R.string.invite)));
return true;
}
return super.onOptionsItemSelected(item);
}
// ListView click listener in the navigation drawer
private class DrawerItemClickListener implements
ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
if(position == 0){
Intent intent = new Intent(main.this, ProfileActivity.class);
intent.putExtra("member_srl", Global.getSetting("user_srl", "0"));
startActivity(intent);
}else selectItem(position);
}
}
public void selectItem(int position) {
fragment_position = position;
invalidateOptionsMenu();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
// Locate Position
switch (position) {
case 0:
//ft.remove(fragment1);
ft.replace(R.id.content_frame, fragment1);
break;
case 1:
setTitle(getString(R.string.my_favorites));
if(!Global.getSetting("favorite", "0").matches("0")){
ft.replace(R.id.content_frame, fragment1);
}else{
ft.replace(R.id.content_frame, no_favorite);
}
//((mainfragment) fragment1).refreshAct();
break;
case 2:
setTitle(getString(R.string.contacts));
ft.replace(R.id.content_frame, contacts_fragment);
break;
case 3:
setTitle(getString(R.string.popularity));
ft.replace(R.id.content_frame, fragment2);
break;
case 4:
Intent intent = new Intent(main.this, page_create.class);
startActivity(intent);
break;
case 5:
Intent intent1 = new Intent(main.this, setting.class);
startActivity(intent1);
break;
}
ft.commit();
mDrawerList.setItemChecked(position, true);
NowPosition = position;
// Get the title followed by the position
//setTitle(title[position]);
// Close drawer
mDrawerLayout.closeDrawer(mDrawerList);
}
/**
* Restart the application.
*/
public void restartApplication() {
PendingIntent intent = PendingIntent.getActivity(this.getBaseContext(),
0, new Intent(getIntent()), getIntent().getFlags());
AlarmManager mgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 2000, intent);
System.exit(2);
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Pass any configuration change to the drawer toggles
mDrawerToggle.onConfigurationChanged(newConfig);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1 && resultCode == Activity.RESULT_OK) {
Intent intent = new Intent(main.this, ProfileActivity.class);
intent.putExtra("member_srl", Global.getSetting("user_srl", "0"));
startActivity(intent);
}
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(KeyEvent.KEYCODE_MENU == keyCode){
Drawer();
//TODO
}
return super.onKeyDown(keyCode, event);
}
@Override
public void onBackPressed() {
if(NowPosition > 1){
selectItem(1);
}else{
this.moveTaskToBack(true);
}
}
// @Override
// public void setTitle(CharSequence title) {
// mTitle = title;
// getSupportActionBar().setTitle(mTitle);
// }
//
}