package com.xiaomai.geek.ui.module.password;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.Snackbar;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.SearchView;
import android.support.v7.widget.Toolbar;
import android.text.TextUtils;
import android.view.MenuItem;
import android.view.View;
import android.widget.RelativeLayout;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.xiaomai.geek.GeekApplication;
import com.xiaomai.geek.R;
import com.xiaomai.geek.common.utils.NotificationUtils;
import com.xiaomai.geek.data.module.Password;
import com.xiaomai.geek.di.IComponent;
import com.xiaomai.geek.di.component.DaggerPasswordComponent;
import com.xiaomai.geek.di.component.PasswordComponent;
import com.xiaomai.geek.di.module.ActivityModule;
import com.xiaomai.geek.di.module.PasswordModule;
import com.xiaomai.geek.presenter.password.PasswordListPresenter;
import com.xiaomai.geek.ui.base.BaseLoadActivity;
import com.xiaomai.mvp.lce.ILceView;
import java.util.List;
import javax.inject.Inject;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* Created by XiaoMai on 2017/5/11.
*/
public class SearchActivity extends BaseLoadActivity implements ILceView<List<Password>>, IComponent {
@BindView(R.id.search_view)
SearchView searchView;
@BindView(R.id.recycler_view)
RecyclerView recyclerView;
@BindView(R.id.empty_root_layout)
RelativeLayout emptyRootLayout;
@BindView(R.id.tool_bar)
Toolbar toolBar;
private String mKeywords;
@Inject
PasswordListPresenter mPresenter;
private PasswordListAdapter mAdapter;
public static void launch(Context context) {
context.startActivity(new Intent(context, SearchActivity.class));
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getComponent().inject(this);
setContentView(R.layout.activity_search_password);
ButterKnife.bind(this);
initViews();
mPresenter.attachView(this);
}
private void initViews() {
setSupportActionBar(toolBar);
setTitle("搜索");
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
mKeywords = query;
mPresenter.getPasswordsByKeywords(mContext, query);
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
mKeywords = newText;
if (!TextUtils.isEmpty(newText)) {
mPresenter.getPasswordsByKeywords(mContext, newText);
}
return false;
}
});
searchView.setIconified(false);
searchView.requestFocusFromTouch();
mAdapter = new PasswordListAdapter(null);
mAdapter.setOnRecyclerViewItemClickListener(
new BaseQuickAdapter.OnRecyclerViewItemClickListener() {
@Override
public void onItemClick(View view, int i) {
Password password = mAdapter.getItem(i);
PasswordDetailActivity.launch(mContext, password);
}
});
mAdapter.setOnPublishClickListener(new PasswordListAdapter.OnPublishClickListener() {
@Override
public void onPublicClick(Password password) {
NotificationUtils.showNotification(mContext, password,
NotificationUtils.TYPE_PASSWORD);
NotificationUtils.showNotification(mContext, password,
NotificationUtils.TYPE_USER_NAME);
Snackbar.make(recyclerView, "账号密码已发送到通知栏", Snackbar.LENGTH_LONG).show();
}
});
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(mAdapter);
}
@Override
public void showContent(List<Password> data) {
mAdapter.setNewData(data);
mAdapter.setKeyWords(mKeywords);
recyclerView.setVisibility(View.VISIBLE);
emptyRootLayout.setVisibility(View.GONE);
}
@Override
public void showError(Throwable e) {
error(e);
}
@Override
public void showEmpty() {
recyclerView.setVisibility(View.GONE);
emptyRootLayout.setVisibility(View.VISIBLE);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public PasswordComponent getComponent() {
return DaggerPasswordComponent.builder()
.applicationComponent(GeekApplication.get(this).getComponent())
.activityModule(new ActivityModule(this))
.passwordModule(new PasswordModule())
.build();
}
@Override
protected void onDestroy() {
super.onDestroy();
mPresenter.detachView();
}
}