package net.miz_hi.smileessence.view.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.view.KeyEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import com.viewpagerindicator.TitlePageIndicator;
import net.miz_hi.smileessence.Client;
import net.miz_hi.smileessence.R;
import net.miz_hi.smileessence.core.EnumRequestCode;
import net.miz_hi.smileessence.core.IntentRouter;
import net.miz_hi.smileessence.dialog.ConfirmDialog;
import net.miz_hi.smileessence.listener.PageChangeListener;
import net.miz_hi.smileessence.menu.MainMenu;
import net.miz_hi.smileessence.menu.TabMenu;
import net.miz_hi.smileessence.notification.Notificator;
import net.miz_hi.smileessence.preference.EnumPreferenceKey;
import net.miz_hi.smileessence.statuslist.StatusListManager;
import net.miz_hi.smileessence.system.MainActivitySystem;
import net.miz_hi.smileessence.system.PageController;
import net.miz_hi.smileessence.system.PostSystem;
public class MainActivity extends FragmentActivity
{
private static MainActivity instance;
public MainActivitySystem system;
public PostSystem postSystem;
private ViewPager pager;
public static MainActivity getInstance()
{
return instance;
}
@Override
public void onCreate(Bundle bundle)
{
super.onCreate(bundle);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main_layout);
instance = this;
Client.initialize(this);
system = new MainActivitySystem();
postSystem = PostSystem.init();
StatusListManager.initStatusLists(instance);
initializeViews();
IntentRouter.onNewIntent(getIntent());
}
private void initializeViews()
{
pager = (ViewPager) findViewById(R.id.viewpager);
PageController.init(instance, pager);
pager.setAdapter(PageController.getInstance().getAdapter());
pager.destroyDrawingCache();
pager.setOffscreenPageLimit(pager.getChildCount());
PageController.getInstance().move(1);
TitlePageIndicator indicator = (TitlePageIndicator) findViewById(R.id.indicator);
indicator.setTextSize(21);
indicator.setViewPager(pager);
indicator.setOnPageChangeListener(new PageChangeListener());
indicator.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
new TabMenu(instance).create().show();
}
});
}
@Override
protected void onPostCreate(Bundle savedInstanceState)
{
super.onPostCreate(savedInstanceState);
if(system.checkAccount(instance))
{
system.startTwitter(instance);
system.loadListPage(instance);
system.loadSearchPage(instance);
}
}
@Override
protected void onResume()
{
super.onResume();
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Notificator.start();
}
@Override
protected void onPause()
{
super.onPause();
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Notificator.stop();
}
@Override
protected void onDestroy()
{
super.onDestroy();
Notificator.stop();
system.onDestroyed();
instance = null;
}
@Override
public void onActivityResult(int reqCode, int resultCode, Intent data)
{
if(resultCode != Activity.RESULT_OK)
{
return;
}
if(reqCode == EnumRequestCode.AUTHORIZE.ordinal())
{
system.authorize(instance, data.getData());
}
else if(reqCode == EnumRequestCode.PICTURE.ordinal() || reqCode == EnumRequestCode.CAMERA.ordinal())
{
system.receivePicture(instance, data, reqCode);
}
}
@Override
protected void onNewIntent(Intent intent)
{
IntentRouter.onNewIntent(intent);
}
@Override
public boolean dispatchKeyEvent(KeyEvent event)
{
if(event.getAction() != KeyEvent.ACTION_DOWN)
{
return super.dispatchKeyEvent(event);
}
switch(event.getKeyCode())
{
case KeyEvent.KEYCODE_BACK:
{
finish();
return false;
}
case KeyEvent.KEYCODE_MENU:
{
openMenu();
return true;
}
default:
{
return super.dispatchKeyEvent(event);
}
}
}
@Override
public void finish()
{
if(pager.getCurrentItem() != 1)
{
pager.setCurrentItem(1, true);
}
else
{
finish(!Client.<Boolean>getPreferenceValue(EnumPreferenceKey.CONFIRM_DIALOG));
}
}
private void forceFinish()
{
super.finish();
}
public void finish(boolean force)
{
if(!force)
{
ConfirmDialog.show(this, "終了しますか?", new Runnable()
{
@Override
public void run()
{
forceFinish();
}
});
}
else
{
forceFinish();
}
}
public void openMenu()
{
new MainMenu(instance).create().show();
}
public ViewPager getViewPager()
{
return pager;
}
}