/** * @file ControlPanelLayout.java * * @revision: none * * @version 0.0.01 * @author: Zenki (zhajun), zenki2001cn@163.com * @date: 2011-5-30 下午03:55:46 */ package com.easyview.ebook.reader.ui.view.stylegrid; import java.util.ArrayList; import java.util.List; import com.easyview.ebook.reader.easyviewer.EasyViewerApplication; import com.easyview.ebook.reader.engine.core.IActionCall; import com.easyview.ebook.reader.engine.core.IEngineService; import com.easyview.ebook.reader.engine.model.Book; import com.easyview.ebook.reader.engine.model.IBookChapterCursor; import com.easyview.ebook.reader.engine.model.ChapterTreeInfo.Chapter; import com.easyview.ebook.reader.engine.util.Logger; import com.easyview.ebook.reader.ui.controller.EasyViewer; import com.easyview.ebook.reader.ui.controller.IControlCenterService; import com.easyview.ebook.reader.ui.controller.IControlCenterService.COMMAND_TYPE; import com.easyview.ebook.reader.ui.view.ActionDialog; import com.easyview.ebook.reader.ui.view.EVBaseRelativeLayout; import com.easyview.ebook.reader.easyviewer.R; import android.content.Context; import android.text.method.HideReturnsTransformationMethod; import android.util.AttributeSet; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.FrameLayout; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TableLayout; import android.widget.TextView; /** * */ public class ControlPanelLayout extends EVBaseRelativeLayout { static private final String TAG = "ControlPanelLayout"; static final int PANEL_LEVEL_ONE = 1; static final int PANEL_LEVEL_TWO = 2; private int mCurrentLevel = PANEL_LEVEL_ONE; private Button mBtnPanelTopic; private Button mBtnPanelSearch; private Button mBtnPanelBookmark; private Button mBtnPanelJump; private Button mBtnPanel5; private Button mBtnPanel6; private Button mBtnPanel7; private Button mBtnPanel8; private Button mBtnPanelExit; private Button mBtnBack; private TextView mTextTitle; private ListView mTopicListView; private RelativeLayout mLayoutControlPanelWapper; private RelativeLayout mLayoutTopicWapper; private RelativeLayout mLayoutJumpWapper; private RelativeLayout mLayoutTitleWapper; private RelativeLayout mLayoutBookmarkWapper; private View mCurrentEnterView; private ActionDialog mMessageDlg; public ControlPanelLayout(Context context, AttributeSet attrs) { super(context, attrs); } public ControlPanelLayout(Context context) { super(context); } public void setPanelMode(int mode) { switch (mode) { case COMMAND_TYPE.CMD_SHOW_CONTROL_CENTER: case COMMAND_TYPE.CMD_HIDE_CONTROL_CENTER: case COMMAND_TYPE.CMD_CLOSE_CONTROL_CENTER: break; case COMMAND_TYPE.CMD_SHOW_TOPIC: mBtnPanelTopic.performClick(); break; case COMMAND_TYPE.CMD_SHOW_BOOKMARK: mBtnPanelBookmark.performClick(); break; case COMMAND_TYPE.CMD_SHOW_JUMP: mBtnPanelJump.performClick(); break; default: break; } } @Override protected void onFinishInflate() { initView(); Logger.dLog(TAG, "onFinishInflate >>>>>>>>>>>>>>>>>>>> "); super.onFinishInflate(); } private void initView() { mLayoutControlPanelWapper = (RelativeLayout) findViewById(R.id.id_control_panel_wrapper); mLayoutTopicWapper = (RelativeLayout) findViewById(R.id.id_topic_wrapper); mLayoutJumpWapper = (RelativeLayout) findViewById(R.id.id_jump_wrapper); mLayoutBookmarkWapper = (RelativeLayout) findViewById(R.id.id_bookmark_wrapper); mLayoutTitleWapper = (RelativeLayout) findViewById(R.id.id_title_wrapper); mBtnPanelTopic = (Button) findViewById(R.id.id_col1_topic); mBtnPanelJump = (Button) findViewById(R.id.id_col2_jump); mBtnPanelSearch = (Button) findViewById(R.id.id_col3_search); mBtnPanelBookmark = (Button) findViewById(R.id.id_col4_bookmark); mBtnPanelExit = (Button) findViewById(R.id.id_col9_exit); mTextTitle = (TextView) findViewById(R.id.id_panel_title); mBtnBack = (Button) findViewById(R.id.id_back_btn); mTopicListView = (ListView) findViewById(R.id.id_topic_list); mBtnBack.setOnClickListener(cBtnBackListener); mBtnPanelTopic.setOnClickListener(cBtnTopicListener); mBtnPanelExit.setOnClickListener(cBtnExitListener); mBtnPanelJump.setOnClickListener(cBtnJumpListener); mBtnPanelSearch.setOnClickListener(cBtnSearchListener); mBtnPanelBookmark.setOnClickListener(cBtnBookmarkListener); mTopicListView.setOnItemSelectedListener(cListTopicSelected); mTopicListView.setOnItemClickListener(cListTopicClicked); mMessageDlg = getActionDialog(); } private void initTopicContent() { Book book = getEasyViewer().getBook(); IBookChapterCursor bcOps = book.getBookChapterCursor(); if (!bcOps.chapterIsLoad()) { getErengine().getAction().loadChapterInformation(iaPreloadChapter, iaLoadedChapter); } else { iaLoadedChapter.action(); } } IActionCall iaPreloadChapter = new IActionCall() { @Override public boolean action() { Logger.dLog(TAG, "iaPreloadChapter action"); mMessageDlg.setMessage(getContext() .getString(R.string.load_chapter)); mMessageDlg.showDialog(); return true; } }; IActionCall iaLoadedChapter = new IActionCall() { @Override public boolean action() { mMessageDlg.closeDialog(); Book book = getEasyViewer().getBook(); IBookChapterCursor bcOps = book.getBookChapterCursor(); List<Chapter> chapterList = bcOps.getChapterList(); fillTopicListView(chapterList); Logger.dLog(TAG, "iaLoadedChapter action finished"); return true; } }; private void fillTopicListView(List<Chapter> list) { ArrayAdapter<String> adapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_list_item_1); for (Chapter chapter : list) { adapter.add(chapter.title); } mTopicListView.setAdapter(adapter); } private void jumpChapter(int index) { getEasyViewer().chapterJumpTo(index); } private void jumpChapter(String title) { getEasyViewer().chapterJumpTo(title); } private void exitControlPanel() { getControlCenter().runCommand(COMMAND_TYPE.CMD_CLOSE_CONTROL_CENTER); } private void hideAllSubLayout() { if (mLayoutJumpWapper != null) { mLayoutJumpWapper.setVisibility(View.INVISIBLE); } if (mLayoutTopicWapper != null) { mLayoutTopicWapper.setVisibility(View.INVISIBLE); } if (mLayoutBookmarkWapper != null) { mLayoutBookmarkWapper.setVisibility(View.INVISIBLE); } } private void enterLevel2() { mCurrentLevel = PANEL_LEVEL_TWO; hideAllSubLayout(); if (mLayoutControlPanelWapper != null) { mLayoutControlPanelWapper.setVisibility(View.INVISIBLE); } if (mCurrentEnterView != null) { mCurrentEnterView.setVisibility(View.VISIBLE); mTextTitle.setText(mCurrentEnterView.getTag().toString()); } } private void enterLevel1() { mCurrentLevel = PANEL_LEVEL_ONE; hideAllSubLayout(); if (mLayoutControlPanelWapper != null) { mLayoutControlPanelWapper.setVisibility(View.VISIBLE); mTextTitle.setText(mLayoutControlPanelWapper.getTag().toString()); } } private OnClickListener cBtnTopicListener = new OnClickListener() { @Override public void onClick(View v) { mCurrentEnterView = mLayoutTopicWapper; enterLevel2(); initTopicContent(); } }; private OnClickListener cBtnExitListener = new OnClickListener() { @Override public void onClick(View v) { exitControlPanel(); } }; private OnClickListener cBtnJumpListener = new OnClickListener() { @Override public void onClick(View v) { mCurrentEnterView = mLayoutJumpWapper; enterLevel2(); } }; private OnClickListener cBtnSearchListener = new OnClickListener() { @Override public void onClick(View v) { getControlCenter().runCommand(COMMAND_TYPE.CMD_HIDE_CONTROL_CENTER); getControlCenter().runCommand(COMMAND_TYPE.CMD_SHOW_SEARCH); } }; private OnClickListener cBtnBookmarkListener = new OnClickListener() { @Override public void onClick(View v) { mCurrentEnterView = mLayoutBookmarkWapper; enterLevel2(); } }; private OnClickListener cBtnBackListener = new OnClickListener() { @Override public void onClick(View v) { if (mCurrentLevel == PANEL_LEVEL_ONE) { exitControlPanel(); } else if (mCurrentLevel == PANEL_LEVEL_TWO) { enterLevel1(); } } }; private OnItemSelectedListener cListTopicSelected = new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { getControlCenter().runCommand(COMMAND_TYPE.CMD_HIDE_CONTROL_CENTER); jumpChapter(position); } @Override public void onNothingSelected(AdapterView<?> parent) { } }; private OnItemClickListener cListTopicClicked = new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { getControlCenter().runCommand(COMMAND_TYPE.CMD_HIDE_CONTROL_CENTER); jumpChapter(position); } }; }