/**
* @file BottomBarLayout.java
*
* @revision: none
*
* @version 0.0.01
* @author: Zenki (zhajun), zenki2001cn@163.com
* @date: 2011-6-10 上午11:30:58
*/
package com.easyview.ebook.reader.ui.view;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.easyview.ebook.reader.engine.model.Book;
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.IProgressControllerCallback;
import com.easyview.ebook.reader.ui.controller.IControlCenterService.COMMAND_TYPE;
import com.easyview.ebook.reader.easyviewer.R;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
public class BottomBarLayout extends EVBaseRelativeLayout {
static private final String TAG = "BottomBarLayout";
private TextView mPageNumView;
private TextView mTimeInfoView;
private String mTimeInfo;
private ProgressDisplayerView mProgressDisplayer;
private boolean mQuitTimeLoop = false;
private final int MSG_UPDATE_TIME = 1;
Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_UPDATE_TIME:
mTimeInfoView.setText(mTimeInfo);
break;
default:
break;
}
super.handleMessage(msg);
}
};
public BottomBarLayout(Context context) {
super(context);
}
public BottomBarLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public BottomBarLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onFinishInflate() {
initView();
new ShowTimeThread(mHandler).start();
super.onFinishInflate();
}
private void initView() {
mPageNumView = (TextView) findViewById(R.id.id_page_info);
mTimeInfoView = (TextView) findViewById(R.id.id_time_info);
mProgressDisplayer = (ProgressDisplayerView) findViewById(R.id.id_page_progress);
mProgressDisplayer.setProgressControllerCallback(ipGotoPage);
// 取消跳页功能
//mPageNumView.setOnClickListener(cTvPageNum);
}
public void updatePageInfo(String info) {
mPageNumView.setText(info);
}
public void updatePageProgress(float progress) {
mProgressDisplayer.update(progress);
}
public void quitShowTimeInfo() {
mQuitTimeLoop = true;
}
IProgressControllerCallback ipGotoPage = new IProgressControllerCallback() {
@Override
public void gotoPage(float percent) {
EasyViewer ev = getEasyViewer();
Book book = ev.getBook();
int totalPage = book.getTotalPageNumber();
int temp = (int) (((float) totalPage) * percent);
int page;
if (temp <= 0) {
page = 1;
} else if (temp > totalPage) {
page = totalPage;
} else {
page = temp;
}
Logger.dLog(TAG, "ipGotoPage page = " + page);
ev.pageJumpTo(page);
}
};
private OnClickListener cTvPageNum = new OnClickListener() {
@Override
public void onClick(View v) {
IControlCenterService icc = getControlCenter();
if (icc != null) {
icc.runCommand(COMMAND_TYPE.CMD_SHOW_JUMP);
}
}
};
protected class ShowTimeThread extends Thread {
private Handler handler;
private long mCurrentTime;
protected ShowTimeThread(Handler h) {
handler = h;
mCurrentTime = System.currentTimeMillis();
}
@Override
public void run() {
while (!mQuitTimeLoop) {
long lastTime = System.currentTimeMillis();
if ((lastTime - mCurrentTime) > 2000) {
mCurrentTime = lastTime;
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
mTimeInfo = sdf.format(new Date(lastTime));
if (mHandler != null) {
handler.sendEmptyMessage(MSG_UPDATE_TIME);
}
}
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
super.run();
}
}
}