/****************************************************************************** * * Copyright 2014 Paphus Solutions Inc. * * Licensed under the Eclipse Public License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.eclipse.org/legal/epl-v10.html * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ******************************************************************************/ package org.botlibre.sdk.activity; import org.botlibre.sdk.activity.actions.HttpAction; import org.botlibre.sdk.activity.actions.HttpBrowseCategoriesAction; import org.botlibre.sdk.activity.actions.HttpGetCategoriesAction; import org.botlibre.sdk.activity.actions.HttpGetInstancesAction; import org.botlibre.sdk.activity.actions.HttpGetTagsAction; import org.botlibre.sdk.config.BrowseConfig; import org.botlibre.sdk.R; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.CheckBox; import android.widget.EditText; import android.widget.PopupMenu; import android.widget.RadioButton; import android.widget.Spinner; import android.widget.TextView; /** * Search activity for searching instances. */ public abstract class SearchActivity extends LibreActivity { @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_search); CheckBox checkbox = (CheckBox)findViewById(R.id.imagesCheckBox); checkbox.setChecked(MainActivity.showImages); TextView title = (TextView) findViewById(R.id.title); title.setText("Search " + getType() + "s"); Spinner sortSpin = (Spinner) findViewById(R.id.sortSpin); ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, new String[]{ "connects", "connects today", "connects this week", "connects this month", "last connect", "name", "date", "thumbs up", "thumbs down", "stars" }); sortSpin.setAdapter(adapter); Spinner restrictSpin = (Spinner) findViewById(R.id.restrictSpin); adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_dropdown_item, new String[]{ "", "has website", "has subdomain", "external link", "Diamond", "Platinum", "Gold", "Bronze" }); restrictSpin.setAdapter(adapter); HttpAction action = new HttpGetTagsAction(this, getType()); action.execute(); action = new HttpGetCategoriesAction(this, getType()); action.execute(); MainActivity.searching = !MainActivity.browsing; } public void onDestroy() { super.onDestroy(); MainActivity.searching = false; } public void browse(View view) { BrowseConfig config = new BrowseConfig(); config.typeFilter = "Public"; RadioButton radio = (RadioButton)findViewById(R.id.privateRadio); if (radio.isChecked()) { config.typeFilter = "Private"; } radio = (RadioButton)findViewById(R.id.personalRadio); if (radio.isChecked()) { config.typeFilter = "Personal"; } Spinner sortSpin = (Spinner)findViewById(R.id.sortSpin); config.sort = (String)sortSpin.getSelectedItem(); Spinner restrictSpin = (Spinner)findViewById(R.id.restrictSpin); config.restrict = (String)restrictSpin.getSelectedItem(); AutoCompleteTextView tagText = (AutoCompleteTextView)findViewById(R.id.tagsText); config.tag = (String)tagText.getText().toString(); AutoCompleteTextView categoryText = (AutoCompleteTextView)findViewById(R.id.categoriesText); config.category = (String)categoryText.getText().toString(); EditText filterEdit = (EditText)findViewById(R.id.filterText); config.filter = filterEdit.getText().toString(); CheckBox checkbox = (CheckBox)findViewById(R.id.imagesCheckBox); MainActivity.showImages = checkbox.isChecked(); config.type = getType(); HttpAction action = new HttpGetInstancesAction(this, config, MainActivity.browsing); action.execute(); } public abstract String getType(); public void menu(View view) { PopupMenu popup = new PopupMenu(this, view); MenuInflater inflater = popup.getMenuInflater(); inflater.inflate(R.layout.menu_search, popup.getMenu()); onPrepareOptionsMenu(popup.getMenu()); popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { return onOptionsItemSelected(item); } }); popup.show(); } @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(R.layout.menu_search, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menuMyBots: browseMyBots(); return true; case R.id.menuFeatured: browseFeatured(); return true; case R.id.menuCategories: browseCategories(); return true; default: return super.onOptionsItemSelected(item); } } @Override public boolean onPrepareOptionsMenu(Menu menu) { MenuItem item = menu.findItem(R.id.menuMyBots); if (MainActivity.user == null) { item.setEnabled(false); } item.setTitle("My " + getType() + "s"); return true; } public void browseMyBots() { BrowseConfig config = new BrowseConfig(); config.type = getType(); config.typeFilter = "Personal"; HttpGetInstancesAction action = new HttpGetInstancesAction(this, config, MainActivity.browsing); action.execute(); } public void browseFeatured() { BrowseConfig config = new BrowseConfig(); config.type = getType(); config.typeFilter = "Featured"; HttpGetInstancesAction action = new HttpGetInstancesAction(this, config, MainActivity.browsing); action.execute(); } public void browseCategories() { HttpAction action = new HttpBrowseCategoriesAction(this, getType(), MainActivity.browsing); action.execute(); } }