package com.cnblogs.android; import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.os.Bundle; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.CheckBox; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; import android.widget.TextView; import android.widget.Toast; import com.cnblogs.android.services.DownloadServices; import com.cnblogs.android.utility.AppUtil; import com.cnblogs.android.utility.NetHelper; /** * ���tab��Activity�̳д�Activity * * @author walkingp * @date 2012-2-18 */ public class SuperMainView extends SuperView { private static final int DIALOG_OFFLINE_DOWNLOAD_GUID = 0;// �������� private AlertDialog dialogOfflineDownload;// �Ի��� TextView tvSeekBar;// SeekBar��ʾ�ı��� SeekBar seekBar;// SeekBar CheckBox chkBlog;// ���ز��� CheckBox chkNews;// �������� public boolean IsShowQuitHints = true; /** * ���¼����Ϸ��ذ�ť */ public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && IsShowQuitHints) {// ���� AppUtil.QuitHintDialog(this); return true; } else if (keyCode == KeyEvent.KEYCODE_SEARCH) {// ���� Intent intent = new Intent(SuperMainView.this, SearchActivity.class); intent.putExtra("isShowQuitHints", false); startActivity(intent); return true; } else { return super.onKeyDown(keyCode, event); } } /** * �����Ի��� */ protected Dialog onCreateDialog(int dialogGuid) { Context mContext = SuperMainView.this; AlertDialog.Builder builder = new AlertDialog.Builder(mContext); AlertDialog alertDialog = null; switch (dialogGuid) { case DIALOG_OFFLINE_DOWNLOAD_GUID:// �������� LayoutInflater inflater = LayoutInflater.from(mContext); View layout = inflater.inflate(R.layout.dialog_offline_download, null); alertDialog = builder .setTitle(R.string.dialog_offline_bar_title) .setView(layout) .setPositiveButton(R.string.dialog_btn_start_download, clickListener) .setNeutralButton(R.string.com_btn_cancel, clickListener) .create(); seekBar = (SeekBar) layout.findViewById(R.id.seekBar); tvSeekBar = (TextView) layout.findViewById(R.id.tvSeekBar); chkBlog = (CheckBox) layout.findViewById(R.id.chkBlog); chkNews = (CheckBox) layout.findViewById(R.id.chkNews); seekBar.setOnSeekBarChangeListener(seekBarListener); // ��ǰ�������� int seekValue = seekBar.getProgress(); String text = getApplicationContext().getString( R.string.dialog_select_nums_tips); text = text.replace("{0}", String.valueOf(seekValue)); tvSeekBar.setText(text); dialogOfflineDownload = alertDialog; break; } return alertDialog; } /** * ѡ��Ի��� * * @param dialog * @param which * @param isChecked */ OnClickListener clickListener = new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (dialog == dialogOfflineDownload) { switch (which) { case Dialog.BUTTON_POSITIVE:// ��ʼ���� if (!NetHelper.networkIsAvailable(getApplicationContext())) {// ���粻���� Toast.makeText(getApplicationContext(), R.string.sys_network_error, Toast.LENGTH_SHORT) .show(); return; } DownloadServices.EnumDataType dataType = DownloadServices.EnumDataType.BlogAndNews; if (!chkBlog.isChecked()) { if (!chkNews.isChecked()) { Toast.makeText(getApplicationContext(), R.string.dialog_no_select_download, Toast.LENGTH_SHORT).show(); return; } else { dataType = DownloadServices.EnumDataType.News; } } else { if (!chkNews.isChecked()) { dataType = DownloadServices.EnumDataType.Blog; } else { dataType = DownloadServices.EnumDataType.BlogAndNews; } } int size = seekBar.getProgress(); if (size == 0) { Toast.makeText(getApplicationContext(), R.string.dialog_no_select_download, Toast.LENGTH_SHORT).show(); return; } Intent intent = new Intent(SuperMainView.this, DownloadServices.class); intent.putExtra("type", dataType.ordinal()); intent.putExtra("size", size); Toast.makeText(getApplicationContext(), R.string.offline_notification_start_toast, Toast.LENGTH_SHORT).show(); startService(intent); break; case Dialog.BUTTON_NEGATIVE:// ȡ�� break; } } } }; /** * �϶�SeekBar�¼� */ OnSeekBarChangeListener seekBarListener = new OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { int seekValue = seekBar.getProgress(); // ֻ��ѡ��10�ı��� int consult = seekValue / 10; if (seekValue < consult * 10 - 5) { seekValue = (consult - 1) * 10; } else { seekValue = consult * 10; } if (seekValue < 10) { seekValue = 10; } seekBar.setProgress(seekValue); String text = getApplicationContext().getString( R.string.dialog_select_nums_tips); text = text.replace("{0}", String.valueOf(seekValue)); tvSeekBar.setText(text); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }; /** * �����˵� */ @Override public boolean onCreateOptionsMenu(Menu menu) { this.getMenuInflater().inflate(R.menu.main_tab_menu, menu); return true; } /** * ʹ�ò˵� */ @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_main_offline:// �������� showDialog(DIALOG_OFFLINE_DOWNLOAD_GUID); break; case R.id.menu_main_about:// ���� RedirectAboutActivity(); break; case R.id.menu_main_config:// �������� RedirectSettingActivity(); break; case R.id.menu_main_fav:// �ղ� RedirectMyFavActivity(); break; } return false; } /** * ��ת������ */ private void RedirectAboutActivity() { Intent intent = new Intent(); intent.setClass(getApplicationContext(), AboutActivity.class); Bundle bundle = new Bundle(); bundle.putInt("fromActivity", 0); intent.putExtras(bundle); startActivity(intent); } /** * ��ת������ */ private void RedirectSettingActivity() { Intent intent = new Intent(); intent.setClass(getApplicationContext(), SettingActivity.class); Bundle bundle = new Bundle(); bundle.putInt("fromActivity", 0); intent.putExtras(bundle); startActivity(intent); } private void RedirectMyFavActivity() { Intent intent = new Intent(); intent.setClass(getApplicationContext(), MyFavActivity.class); startActivity(intent); } }