content: /*
   * 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();
      }
  
  }
  