package net.ggelardi.flucso; import net.ggelardi.flucso.data.SubscrAllAdapter; import net.ggelardi.flucso.data.SubscrAllAdapter.Scope; import net.ggelardi.flucso.serv.FFAPI.FeedList.SectionItem; import android.content.Intent; import android.os.Bundle; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.EditText; import android.widget.ListView; import android.widget.RadioButton; import android.widget.Spinner; import android.widget.TabHost; import android.widget.Toast; public class SearchActivity extends BaseActivity { private SubscrAllAdapter feeds; private TabHost tabs; private EditText edtFWhat; private Spinner spFWhere; private ListView lvFFeeds; private RadioButton rbPScop1; private RadioButton rbPScop2; private RadioButton rbPScop3; private RadioButton rbPScop4; private RadioButton rbPScop5; private Spinner spPLists; private EditText edtPUser; private EditText edtPRoom; private EditText edtPWhat; private EditText edtPTitl; private EditText edtPComm; private EditText edtPCmBy; private EditText edtPLkBy; private EditText edtPMinC; private EditText edtPMinL; private OnCheckedChangeListener rbListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_search); feeds = new SubscrAllAdapter(this); tabs = (TabHost) findViewById(android.R.id.tabhost); edtFWhat = (EditText) findViewById(R.id.edt_srcf_what); spFWhere = (Spinner) findViewById(R.id.sp_srcf_scope); lvFFeeds = (ListView) findViewById(R.id.lv_srcf_feeds); rbPScop1 = (RadioButton) findViewById(R.id.rb_srcp_scp1); rbPScop2 = (RadioButton) findViewById(R.id.rb_srcp_scp2); rbPScop3 = (RadioButton) findViewById(R.id.rb_srcp_scp3); rbPScop4 = (RadioButton) findViewById(R.id.rb_srcp_scp4); rbPScop5 = (RadioButton) findViewById(R.id.rb_srcp_scp5); spPLists = (Spinner) findViewById(R.id.sp_srcp_lists); edtPUser = (EditText) findViewById(R.id.edt_srcp_user); edtPRoom = (EditText) findViewById(R.id.edt_srcp_room); edtPWhat = (EditText) findViewById(R.id.edt_srcp_what); edtPTitl = (EditText) findViewById(R.id.edt_srcp_title); edtPComm = (EditText) findViewById(R.id.edt_srcp_comm); edtPCmBy = (EditText) findViewById(R.id.edt_srcp_comby); edtPLkBy = (EditText) findViewById(R.id.edt_srcp_likby); edtPMinC = (EditText) findViewById(R.id.edt_srcp_minc); edtPMinL = (EditText) findViewById(R.id.edt_srcp_minl); // setup tabs.setup(); tabs.addTab(tabs.newTabSpec("tabF").setContent(R.id.ll_srcf_tab).setIndicator(getString(R.string.search_tabf), getResources().getDrawable(R.drawable.ic_action_group))); tabs.addTab(tabs.newTabSpec("tabP").setContent(R.id.sv_srcp_tab).setIndicator(getString(R.string.search_tabp), getResources().getDrawable(R.drawable.ic_action_storage))); lvFFeeds.setAdapter(feeds); lvFFeeds.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent result = new Intent(); result.putExtra("feed", feeds.getItem(position).id); result.putExtra("name", feeds.getItem(position).name); setResult(RESULT_OK, result); finish(); } }); edtFWhat.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { feeds.getFilter().filter(s); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { } }); spFWhere.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { feeds.setScope(Scope.fromValue(position)).getFilter().filter(edtFWhat.getText().toString()); } @Override public void onNothingSelected(AdapterView<?> parent) { } }); final RadioButton[] scopes = new RadioButton[] { rbPScop1, rbPScop2, rbPScop3, rbPScop4, rbPScop5 }; rbListener = new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) for (RadioButton rb : scopes) if (rb.getId() != buttonView.getId()) rb.setChecked(false); } }; for (RadioButton rb : scopes) { rb.setOnCheckedChangeListener(rbListener); } if (session.getNavigation().lists == null || session.getNavigation().lists.length <= 0) { rbPScop3.setEnabled(false); spPLists.setVisibility(View.GONE); } else { ArrayAdapter<String> spData = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item); for (SectionItem si : session.getNavigation().lists) spData.add(si.name); spData.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spPLists.setAdapter(spData); } Button btnprun = (Button) findViewById(R.id.btn_srcp_exec); btnprun.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String query = edtPWhat.getText().toString(); String tmp = edtPTitl.getText().toString(); if (!TextUtils.isEmpty(tmp)) query += "+intitle:" + tmp; tmp = edtPComm.getText().toString(); if (!TextUtils.isEmpty(tmp)) query += "+incomment:" + tmp; tmp = edtPCmBy.getText().toString(); if (!TextUtils.isEmpty(tmp)) query += "+comment:" + tmp; tmp = edtPLkBy.getText().toString(); if (!TextUtils.isEmpty(tmp)) query += "+like:" + tmp; tmp = edtPMinC.getText().toString(); if (!TextUtils.isEmpty(tmp)) query += "+comments:" + tmp; tmp = edtPMinL.getText().toString(); if (!TextUtils.isEmpty(tmp)) query += "+likes:" + tmp; if (rbPScop2.isChecked()) query += "+friends:" + session.getUsername(); else if (rbPScop3.isChecked()) query += "+list:" + spPLists.getSelectedItem().toString(); else if (rbPScop4.isChecked()) { tmp = edtPUser.getText().toString(); if (TextUtils.isEmpty(tmp)) { Toast.makeText(getApplicationContext(), getString(R.string.search_error), Toast.LENGTH_LONG).show(); return; } query += "+from:" + tmp; } else if (rbPScop5.isChecked()) { tmp = edtPRoom.getText().toString(); if (TextUtils.isEmpty(tmp)) { Toast.makeText(getApplicationContext(), getString(R.string.search_error), Toast.LENGTH_LONG).show(); return; } query += "+group:" + tmp; } Intent result = new Intent(); result.putExtra("query", query); setResult(RESULT_OK, result); finish(); } }); } @Override protected void profileReady() { // nothing here } }