package com.zhan_dui.dictionary; import java.io.File; import org.holoeverywhere.app.AlertDialog; import android.annotation.SuppressLint; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v4.app.Fragment; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import com.actionbarsherlock.view.MenuItem; import com.actionbarsherlock.widget.SearchView; import com.slidingmenu.lib.SlidingMenu; import com.slidingmenu.lib.SlidingMenu.OnClosedListener; import com.slidingmenu.lib.app.SlidingFragmentActivity; import com.umeng.fb.NotificationType; import com.umeng.fb.UMFeedbackService; import com.zhan_dui.dictionary.fragments.AboutMeFragment; import com.zhan_dui.dictionary.fragments.DictionaryManageFragment; import com.zhan_dui.dictionary.fragments.QueryWordFragment; import com.zhan_dui.dictionary.fragments.SimpleWordsFragment; import com.zhan_dui.dictionary.listeners.StartMovingBaseDictionaryListener; import com.zhan_dui.dictionary.utils.Constants; import com.zhan_dui.dictionary.utils.ThemeUtils; public class GeneralActivity extends SlidingFragmentActivity implements OnClickListener, OnClosedListener { public static SlidingMenu mSlidingMenu; private View mMenuView; private Button mSearch, mAbout, mOfflineManage, mSetting, mRate, mWords; private int mClickMenuID = 0; private Context mContext; @Override public void onCreate(Bundle savedInstanceState) { ThemeUtils.onActivityCreateSetTheme(this); super.onCreate(savedInstanceState); getSupportActionBar().setDisplayHomeAsUpEnabled(true); mContext = this; setBehindContentView(R.layout.sliding_menu); setContentView(R.layout.activity_main); mSlidingMenu = getSlidingMenu(); mSlidingMenu.setBehindOffsetRes(R.dimen.slidingmenu_offset); mSlidingMenu.setFadeDegree(0.35f); mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); mSlidingMenu.setMode(SlidingMenu.LEFT); mMenuView = mSlidingMenu.getMenu(); // start finding ui widget mSearch = (Button) mMenuView.findViewById(R.id.search); mSetting = (Button) mMenuView.findViewById(R.id.setting); mOfflineManage = (Button) mMenuView.findViewById(R.id.offline_manage); mSetting = (Button) mMenuView.findViewById(R.id.setting); mAbout = (Button) mMenuView.findViewById(R.id.about); mRate = (Button) mMenuView.findViewById(R.id.star); mWords = (Button) mMenuView.findViewById(R.id.words); mSetting.setOnClickListener(this); mOfflineManage.setOnClickListener(this); mSearch.setOnClickListener(this); mAbout.setOnClickListener(this); mRate.setOnClickListener(this); mAbout.setOnClickListener(this); mWords.setOnClickListener(this); mSlidingMenu.setOnClosedListener(this); // SlidingMenu init; getSupportFragmentManager().beginTransaction() .replace(R.id.content_frame, new QueryWordFragment(), mTag) .commit(); mCurrentShowID = R.id.search; if (isBaseDictionaryExist() == false) { AlertDialog.Builder builder = new AlertDialog.Builder(mContext); builder.setTitle(R.string.tips); builder.setMessage(R.string.init); builder.setPositiveButton(R.string.init_start, new StartMovingBaseDictionaryListener(mContext)); builder.setNegativeButton(R.string.init_not_now, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { GeneralActivity.this.finish(); } }); builder.show(); } UMFeedbackService.enableNewReplyNotification(this, NotificationType.AlertDialog); Boolean first = PreferenceManager.getDefaultSharedPreferences(mContext) .getBoolean(Constants.PREFER_FIRST, true); if (first) { Intent intent = new Intent(this, GuideActivity.class); startActivity(intent); } } @Override public void onClick(View v) { if (v.getId() == R.id.setting) { mSlidingMenu.toggle(false); Intent intent = new Intent(mContext, SettingActivity.class); mContext.startActivity(intent); overridePendingTransition(R.anim.anim_window_in, R.anim.anim_window_out_solid); return; } mSlidingMenu.toggle(); mClickMenuID = v.getId(); } private int mCurrentShowID; private final String mTag = "currentFragment"; @Override public void onClosed() { if (mClickMenuID == mCurrentShowID) return; removeCurrentFragment(); mCurrentShowID = mClickMenuID; switch (mClickMenuID) { case R.id.offline_manage: getSupportFragmentManager() .beginTransaction() .replace(R.id.content_frame, new DictionaryManageFragment(), mTag).commit(); break; case R.id.search: getSupportFragmentManager().beginTransaction() .replace(R.id.content_frame, new QueryWordFragment(), mTag) .commit(); break; case R.id.about: getSupportFragmentManager().beginTransaction() .replace(R.id.content_frame, new AboutMeFragment(), mTag) .commit(); break; case R.id.words: getSupportFragmentManager() .beginTransaction() .replace(R.id.content_frame, new SimpleWordsFragment(), mTag).commit(); default: break; } } public int getCurrentFragmentID() { return mCurrentShowID; } @SuppressLint("Recycle") private void removeCurrentFragment() { Fragment currentFragment = getSupportFragmentManager() .findFragmentByTag(mTag); if (currentFragment != null) { getSupportFragmentManager().beginTransaction().remove( currentFragment); mCurrentShowID = 0; } } private void removerCurrentAndReplaceFragment(int id, Fragment fragment, boolean force) { if (id == mCurrentShowID && !force) { return; } removeCurrentFragment(); setFragment(id, fragment); } public void setFragment(int id, Fragment fragment) { getSupportFragmentManager().beginTransaction() .replace(R.id.content_frame, fragment, mTag).commit(); mCurrentShowID = id; } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { SearchView searchView = null; switch (keyCode) { case KeyEvent.KEYCODE_SEARCH: if (mSlidingMenu.isMenuShowing()) { mSlidingMenu.toggle(); } if (mCurrentShowID != R.id.search) { removerCurrentAndReplaceFragment(R.id.search, new QueryWordFragment(), false); } searchView = (SearchView) findViewById(android.R.id.inputArea); if (searchView != null) searchView.setIconified(false); return true; case KeyEvent.KEYCODE_MENU: mSlidingMenu.toggle(); break; case KeyEvent.KEYCODE_BACK: if (mSlidingMenu.isMenuShowing()) { mSlidingMenu.toggle(); return true; } searchView = (SearchView) findViewById(android.R.id.inputArea); if (searchView != null && searchView.isIconified() == false) { searchView.clearFocus(); searchView.setIconified(true); return true; } boolean askQuite = PreferenceManager.getDefaultSharedPreferences( mContext).getBoolean("quitetip", true); if (askQuite == true) { AlertDialog.Builder builder = new AlertDialog.Builder(mContext); builder.setTitle(R.string.tips); builder.setMessage(R.string.quite_tips); builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } }); builder.setNeutralButton(R.string.give_suggestion, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { UMFeedbackService .openUmengFeedbackSDK(GeneralActivity.this); } }); builder.setNegativeButton(R.string.cancel, null); builder.show(); } break; default: } return super.onKeyDown(keyCode, event); } @Override protected void onResume() { super.onResume(); if (SettingActivity.sChanged) { finish(); startActivity(new Intent(this, GeneralActivity.class)); SettingActivity.sChanged = false; } } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { mSlidingMenu.toggle(); } return super.onOptionsItemSelected(item); } /** * 检查基础词典是否存在 * * @return */ public boolean isBaseDictionaryExist() { String file_path = Constants.getSDBaseDictionaryPath(); File base_file = new File(file_path); return base_file.exists(); } }