/*
* The MIT License (MIT)
*
* Copyright (c) 2014-2015 Umeng, Inc
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package com.umeng.comm.ui.fragments;
import android.content.Context;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.util.TypedValue;
import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.ToggleButton;
import com.umeng.comm.core.beans.Topic;
import com.umeng.comm.core.listeners.Listeners;
import com.umeng.comm.core.utils.DeviceUtils;
import com.umeng.comm.core.utils.ResFinder;
import com.umeng.comm.ui.adapters.RecommendTopicAdapter.FollowListener;
import com.umeng.comm.ui.adapters.TopicAdapter;
import com.umeng.comm.ui.presenter.impl.RecommendTopicPresenter;
import com.umeng.comm.ui.presenter.impl.TopicFgPresenter;
import java.util.List;
/**
* 主页的三个tab中的话题页面
*/
public class TopicFragment extends RecommendTopicFragment {
protected View mSearchLayout;
private EditText mSearchEdit;
private boolean mIsBackup = false;
private InputMethodManager mInputMan;
private boolean isFirstCreate = true;
public TopicFragment() {
super();
}
public static TopicFragment newTopicFragment() {
return new TopicFragment();
}
@Override
protected int getFragmentLayout() {
return ResFinder.getLayout("umeng_comm_topic_search");
}
@Override
protected void initWidgets() {
initRefreshView(mRootView);
initSearchView(mRootView);
initTitleView(mRootView);
mInputMan = (InputMethodManager) getActivity().getSystemService(
Context.INPUT_METHOD_SERVICE);
}
@Override
protected RecommendTopicPresenter createPresenters() {
return new TopicFgPresenter(this);
}
@Override
protected void initTitleView(View rootView) {
int searchButtonResId = ResFinder.getId("umeng_comm_topic_search");
rootView.findViewById(searchButtonResId).setOnClickListener(
new Listeners.LoginOnViewClickListener() {
@Override
protected void doAfterLogin(View v) {
mInputMan.hideSoftInputFromWindow(mSearchEdit.getWindowToken(), 0);
mAdapter.backupData();
((TopicFgPresenter) mPresenter).executeSearch(mSearchEdit
.getText().toString().trim());
};
});
rootView.findViewById(ResFinder.getId("umeng_comm_back")).setVisibility(View.GONE);
int paddingRight = DeviceUtils.dp2px(getActivity(), 10);
int paddingLeft = mSearchEdit.getPaddingLeft();
int paddingTop = mSearchEdit.getPaddingTop();
int paddingBottom = mSearchEdit.getPaddingBottom();
mSearchEdit.setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);
}
@Override
protected void initAdapter() {
mAdapter = new TopicAdapter(getActivity());
((TopicAdapter) mAdapter).setFollowListener(new FollowListener<Topic>() {
@Override
public void onFollowOrUnFollow(Topic topic, ToggleButton toggleButton,
boolean isFollow) {
mPresenter.checkLoginAndExecuteOp(topic, toggleButton, isFollow);
}
});
mTopicListView.setAdapter(mAdapter);
}
/**
* 初始化搜索话题View跟事件处理</br>
*
* @param rootView
*/
protected void initSearchView(View rootView) {
mSearchLayout = findViewById(ResFinder.getId("umeng_comm_topic_search_title_layout"));
int searchEditResId = ResFinder.getId("umeng_comm_topic_edittext");
mSearchEdit = findViewById(searchEditResId);
mSearchEdit.setOnKeyListener(new android.view.View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_ENTER) {
((TopicFgPresenter) mPresenter).executeSearch(mSearchEdit.getText()
.toString().trim());
}
return false;
}
});
// 话题本地搜索
mSearchEdit.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (!TextUtils.isEmpty(s)) {
if (!mIsBackup) {
mIsBackup = true;
mAdapter.backupData();
}
// 如果keyword不为空,做本地搜索
List<Topic> result = mPresenter.localSearchTopic(s.toString());
mAdapter.updateListViewData(result);
} else {
// 显示本地所有的话题
mAdapter.restoreData();
mIsBackup = false;
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (!isVisibleToUser) {
if (isFirstCreate) {
isFirstCreate = false; // 隐藏且为第一次创建Fragment(初始化时isVisibleToUser为不可见)
} else {
mInputMan.hideSoftInputFromWindow(mSearchEdit.getWindowToken(), 0); // 隐藏且是非第一次创建,则隐藏软键盘
}
}
}
@Override
protected void initRefreshView(View rootView) {
super.initRefreshView(rootView);
mRefreshLvLayout.setProgressViewOffset(false, 60,
(int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 24, getResources()
.getDisplayMetrics()));
mRefreshLvLayout.setRefreshing(true);
mBaseView.setEmptyViewText(ResFinder.getString("umeng_comm_no_topic"));
}
@Override
public void onPause() {
mInputMan.hideSoftInputFromWindow(mSearchEdit.getWindowToken(), 0);
super.onPause();
}
}