/*
* Copyright (C) 2015 Naman Dwivedi
*
* Licensed under the GNU General Public License v3
*
* This is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details.
*/
package com.wm.remusic.activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.AppCompatActivity;
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.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import com.wm.remusic.R;
import com.wm.remusic.adapter.SearchAdapter;
import com.wm.remusic.info.MusicInfo;
import com.wm.remusic.provider.SearchHistory;
import com.wm.remusic.uitl.CommonUtils;
import com.wm.remusic.uitl.SearchUtils;
import java.util.ArrayList;
import java.util.List;
public class LocalSearchActivity extends AppCompatActivity implements SearchView.OnQueryTextListener, View.OnTouchListener {
private SearchView mSearchView;
private InputMethodManager mImm;
private String queryString;
private SearchAdapter adapter;
private RecyclerView recyclerView;
private List<MusicInfo> searchResults = new ArrayList<>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_local_search);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setPadding(0, CommonUtils.getStatusHeight(this), 0, 0);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
// SystemBarTintManager tintManager = new SystemBarTintManager(this);
// // enable status bar tint
// tintManager.setStatusBarTintEnabled(true);
// // enable navigation bar tint
// tintManager.setNavigationBarTintEnabled(true);
mImm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setHasFixedSize(true);
adapter = new SearchAdapter(this);
recyclerView.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
getMenuInflater().inflate(R.menu.menu_search, menu);
mSearchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.menu_search));
mSearchView.setOnQueryTextListener(this);
mSearchView.setQueryHint(getResources().getString(R.string.search_local_music));
mSearchView.setIconifiedByDefault(false);
mSearchView.setIconified(false);
MenuItemCompat.setOnActionExpandListener(menu.findItem(R.id.menu_search), new MenuItemCompat.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
return true;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
finish();
return false;
}
});
menu.findItem(R.id.menu_search).expandActionView();
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(final MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
default:
break;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onQueryTextSubmit(final String query) {
onQueryTextChange(query);
hideInputManager();
return true;
}
@Override
public boolean onQueryTextChange(final String newText) {
if (newText.equals(queryString)) {
return true;
}
queryString = newText;
if (!queryString.trim().equals("")) {
this.searchResults = new ArrayList();
List<MusicInfo> songList = SearchUtils.searchSongs(this, queryString);
searchResults.addAll((songList.size() < 10 ? songList : songList.subList(0, 10)));
} else {
searchResults.clear();
adapter.updateSearchResults(searchResults);
adapter.notifyDataSetChanged();
}
adapter.updateSearchResults(searchResults);
adapter.notifyDataSetChanged();
return true;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
hideInputManager();
return false;
}
public void hideInputManager() {
if (mSearchView != null) {
if (mImm != null) {
mImm.hideSoftInputFromWindow(mSearchView.getWindowToken(), 0);
}
mSearchView.clearFocus();
SearchHistory.getInstance(this).addSearchString(queryString);
}
}
@Override
public void onStop() {
super.onStop();
finish();
}
}