Search in sources :

Example 1 with SearchLogAdapter

use of com.tencent.wstt.gt.log.SearchLogAdapter in project GT by Tencent.

the class GTLogSearchActivity method openLog.

private void openLog(final String filename) {
    final AsyncTask<Void, Void, LogEntry[]> openFileTask = new AsyncTask<Void, Void, LogEntry[]>() {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            // 转菊花
            proDialog = ProgressDialog.show(GTLogSearchActivity.this, "get data..", "geting data..wait...", true, true);
        }

        @Override
        protected LogEntry[] doInBackground(Void... params) {
            final int maxLines = 1000;
            LogEntry[] logLines = SaveLogHelper.openLog(filename, maxLines);
            return logLines;
        }

        @Override
        protected void onPostExecute(LogEntry[] logLines) {
            super.onPostExecute(logLines);
            // 取消菊花
            proDialog.dismiss();
            proDialog = null;
            dataSet = logLines;
            arrayAdapter = new SearchLogAdapter(GTLogSearchActivity.this, dataSet);
            listView.setAdapter(arrayAdapter);
        }
    };
    openFileTask.execute((Void) null);
}
Also used : SearchLogAdapter(com.tencent.wstt.gt.log.SearchLogAdapter) AsyncTask(android.os.AsyncTask) LogEntry(com.tencent.wstt.gt.ui.model.LogEntry)

Example 2 with SearchLogAdapter

use of com.tencent.wstt.gt.log.SearchLogAdapter in project GT by Tencent.

the class GTLogSearchActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.gt_log_search_activity);
    handler = new Handler();
    tv_count = (TextView) findViewById(R.id.log_search_count);
    btn_pre = (ImageButton) findViewById(R.id.log_msg_pre);
    btn_next = (ImageButton) findViewById(R.id.log_msg_next);
    /*
		 * 用于覆盖整个屏幕的透明ImageView,
		 * 主要帮助点击非filterListView区域使filterListView消失
		 */
    img_empty = (ImageView) findViewById(R.id.log_search_view_empty);
    img_empty.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            switch(event.getAction()) {
                case MotionEvent.ACTION_DOWN:
                    img_empty.setVisibility(View.GONE);
                    filterListView.setVisibility(View.GONE);
                    cancelFilterMsgInput(v);
                    break;
                case MotionEvent.ACTION_UP:
                    v.performClick();
                    break;
                default:
                    break;
            }
            return false;
        }
    });
    // 过滤数据展示列表
    filterListView = (ListView) findViewById(R.id.log_search_spinner_list);
    //		filterLock = new ReentrantLock();
    filterListView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View v, int position, long arg3) {
            img_empty.setVisibility(View.GONE);
            filterListView.setVisibility(View.GONE);
            String sCurSelectedMsg = (String) parent.getAdapter().getItem(position);
            LinkedList<String> curShowDownMsgList = GTLogInternal.getCurShowDownMsgList();
            LinkedList<String> msgHistory = GTLogInternal.getCurSearchMsgHistory();
            GTLogInternal.setCurSearchMsg(sCurSelectedMsg);
            msgWatched = false;
            et_Msg.removeTextChangedListener(msg_watcher);
            String s = curShowDownMsgList.remove(position);
            curShowDownMsgList.addFirst(s);
            msgHistory.remove(s);
            msgHistory.addFirst(s);
            et_Msg.setText(sCurSelectedMsg);
            btn_msg_clear.setVisibility(View.VISIBLE);
            cancelFilterMsgInput(parent);
            //				filterLock.lock();
            ((MsgAdaptor) filterListView.getAdapter()).getFilter().filter(sCurSelectedMsg);
            //				filterLock.unlock();
            doSearch(sCurSelectedMsg);
        }
    });
    // 过滤文本
    et_Msg = (EditText) findViewById(R.id.log_search_msg);
    //		et_Msg.setText(BHLog.getCurSearchMsg());
    et_Msg.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            if (!msgWatched) {
                et_Msg.addTextChangedListener(msg_watcher);
                msgWatched = true;
            }
            MsgAdaptor adapter = new MsgAdaptor(GTLogSearchActivity.this);
            adapter.getFilter().filter(et_Msg.getText().toString());
            //				filterLock.lock();
            filterListView.setAdapter(adapter);
            //				filterLock.unlock();
            if (!filterListView.getAdapter().isEmpty()) {
                filterListView.setVisibility(View.VISIBLE);
                img_empty.setVisibility(View.VISIBLE);
            }
        }
    });
    et_Msg.setOnKeyListener(new View.OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            switch(keyCode) {
                case KeyEvent.KEYCODE_ENTER:
                    // 要先把过滤showdown去掉,否则会多弹出一次
                    msgWatched = false;
                    et_Msg.removeTextChangedListener(msg_watcher);
                    String word = et_Msg.getText().toString();
                    filterListView.setVisibility(View.GONE);
                    img_empty.setVisibility(View.GONE);
                    cancelFilterMsgInput(v);
                    if (word.trim().length() == 0) {
                        return true;
                    }
                    LinkedList<String> curShowDownMsgList = GTLogInternal.getCurShowDownMsgList();
                    LinkedList<String> msgHistory = GTLogInternal.getCurSearchMsgHistory();
                    msgHistory.remove(word);
                    msgHistory.addFirst(word);
                    curShowDownMsgList.remove(word);
                    curShowDownMsgList.addFirst(word);
                    doSearch(word);
                    return true;
            }
            return false;
        }
    });
    // 过滤文本的清理
    btn_msg_clear = (ImageButton) findViewById(R.id.log_msg_search_clear);
    btn_msg_clear.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            et_Msg.setText("");
            // 清理本次搜索标记
            GTLogInternal.clearLastSearchMarks();
            tv_count.setText("0 / 0");
            arrayAdapter.notifyDataSetChanged();
            btn_msg_clear.setVisibility(View.GONE);
        }
    });
    // 改成back功能了
    btn_back = (Button) findViewById(R.id.log_msg_search_cancel);
    btn_back.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // 20130404 改成back功能了
            finish();
        }
    });
    btn_pre.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            int historySeq = GTLogInternal.getLastMatchedSeq();
            if (historySeq > 0) {
                GTLogInternal.setLastMatchedSeq(historySeq - 1);
                listView.setSelection(GTLogInternal.getLastMatchedEntryList().get(historySeq - 1).posionInDataSet);
                tv_count.setText(// 这里注意显示序号要比存储位置多1,因为从1开始算
                historySeq + " / " + GTLogInternal.getLastMatchedEntryList().size());
                handler.post(new Runnable() {

                    @Override
                    public void run() {
                        // 这个刷新需要在UI线程排队,否则会被listView.setSelection方法冲突掉
                        arrayAdapter.notifyDataSetChanged();
                    }
                });
            } else if (historySeq == 0 && GTLogInternal.getLastMatchedEntryList().size() > 0) {
                GTLogInternal.setLastMatchedSeq(GTLogInternal.getLastMatchedEntryList().size() - 1);
                listView.setSelection(GTLogInternal.getLastMatchedEntryList().get(GTLogInternal.getLastMatchedEntryList().size() - 1).posionInDataSet);
                tv_count.setText(GTLogInternal.getLastMatchedEntryList().size() + " / " + GTLogInternal.getLastMatchedEntryList().size());
                handler.post(new Runnable() {

                    @Override
                    public void run() {
                        // 这个刷新需要在UI线程排队,否则会被listView.setSelection方法冲突掉
                        arrayAdapter.notifyDataSetChanged();
                    }
                });
            }
        }
    });
    btn_next.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            int historySeq = GTLogInternal.getLastMatchedSeq();
            if (historySeq < GTLogInternal.getLastMatchedEntryList().size() - 1) {
                GTLogInternal.setLastMatchedSeq(historySeq + 1);
                listView.setSelection(GTLogInternal.getLastMatchedEntryList().get(historySeq + 1).posionInDataSet);
                int viewSeq = historySeq + 2;
                tv_count.setText(// 这里注意显示序号要比存储位置多1,因为从1开始算
                viewSeq + " / " + GTLogInternal.getLastMatchedEntryList().size());
                handler.post(new Runnable() {

                    @Override
                    public void run() {
                        // 这个刷新需要在UI线程排队,否则会被listView.setSelection方法冲突掉
                        arrayAdapter.notifyDataSetChanged();
                    }
                });
            } else if (historySeq == GTLogInternal.getLastMatchedEntryList().size() - 1) {
                GTLogInternal.setLastMatchedSeq(0);
                listView.setSelection(GTLogInternal.getLastMatchedEntryList().get(0).posionInDataSet);
                tv_count.setText(// 这里注意显示序号要比存储位置多1,因为从1开始算
                1 + " / " + GTLogInternal.getLastMatchedEntryList().size());
                handler.post(new Runnable() {

                    @Override
                    public void run() {
                        // 这个刷新需要在UI线程排队,否则会被listView.setSelection方法冲突掉
                        arrayAdapter.notifyDataSetChanged();
                    }
                });
            }
        }
    });
    // 准备日志列表数据
    listView = (ListView) findViewById(R.id.log_search_list);
    Intent intent = getIntent();
    String openFileName = intent.getStringExtra("openFileName");
    if (openFileName == null) {
        // 日志列表
        dataSet = GTLogInternal.getCurFilteredLogs();
        arrayAdapter = new SearchLogAdapter(this, dataSet);
        listView.setAdapter(arrayAdapter);
    } else // 打开历史日志
    {
        openLog(openFileName);
    }
}
Also used : SearchLogAdapter(com.tencent.wstt.gt.log.SearchLogAdapter) OnTouchListener(android.view.View.OnTouchListener) OnItemClickListener(android.widget.AdapterView.OnItemClickListener) Handler(android.os.Handler) Intent(android.content.Intent) ImageView(android.widget.ImageView) View(android.view.View) AdapterView(android.widget.AdapterView) TextView(android.widget.TextView) ListView(android.widget.ListView) LinkedList(java.util.LinkedList) MotionEvent(android.view.MotionEvent) KeyEvent(android.view.KeyEvent) OnClickListener(android.view.View.OnClickListener)

Aggregations

SearchLogAdapter (com.tencent.wstt.gt.log.SearchLogAdapter)2 Intent (android.content.Intent)1 AsyncTask (android.os.AsyncTask)1 Handler (android.os.Handler)1 KeyEvent (android.view.KeyEvent)1 MotionEvent (android.view.MotionEvent)1 View (android.view.View)1 OnClickListener (android.view.View.OnClickListener)1 OnTouchListener (android.view.View.OnTouchListener)1 AdapterView (android.widget.AdapterView)1 OnItemClickListener (android.widget.AdapterView.OnItemClickListener)1 ImageView (android.widget.ImageView)1 ListView (android.widget.ListView)1 TextView (android.widget.TextView)1 LogEntry (com.tencent.wstt.gt.ui.model.LogEntry)1 LinkedList (java.util.LinkedList)1