Android Open Source - retrowatch Message List Adapter






From Project

Back to project page retrowatch.

License

The source code is released under:

Apache License

If you think the Android project retrowatch listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (C) 2014 The Retro Watch - Open source smart watch project
 */*w  w w  .jav  a 2s.  co  m*/
 * Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
 *
 * 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 com.hardcopy.retrowatchle;

import java.util.ArrayList;

import com.hardcopy.retrowatchle.contents.objects.ContentObject;
import com.hardcopy.retrowatchle.contents.objects.FilterObject;
import com.hardcopy.retrowatchle.utils.Utils;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnTouchListener;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MessageListAdapter extends ArrayAdapter<ContentObject> implements IDialogListener {

  public static final String TAG = "MessageListAdapter";
  
  private Context mContext = null;
  private ArrayList<ContentObject> mMessageList = null;
  private IAdapterListener mAdapterListener = null;
  
  public MessageListAdapter(Context c, int resId, ArrayList<ContentObject> itemList) {
    super(c, resId, itemList);
    mContext = c;
    if(itemList == null)
      mMessageList = new ArrayList<ContentObject>();
    else
      mMessageList = itemList;
  }
  
  public void setAdapterParams(IAdapterListener l) {
    mAdapterListener = l;
  }
  
  public void addMessage(ContentObject co) {
    mMessageList.add(co);
  }
  
  public void addMessageAll(ArrayList<ContentObject> itemList) {
    if(itemList == null)
      return;
    for(int i=0; i<itemList.size(); i++)
      addMessage(itemList.get(i));
  }
  
  public void deleteMessage(int id) {
    for(int i = mMessageList.size() - 1; -1 < i; i--) {
      ContentObject co = mMessageList.get(i);
      if(co.mId == id) {
        mMessageList.remove(i);
      }
    }
  }
  
  public void deleteMessageByType(int type) {
    for(int i = mMessageList.size() - 1; -1 < i; i--) {
      ContentObject co = mMessageList.get(i);
      if(co.mContentType == type) {
        mMessageList.remove(i);
      }
    }
  }
  
  public void deleteMessageByTypeAndName(int type, String packageName) {
    for(int i = mMessageList.size() - 1; -1 < i; i--) {
      ContentObject co = mMessageList.get(i);
      if(co.mContentType == type) {
        if(co.mPackageName != null && co.mPackageName.contains(packageName))
          mMessageList.remove(i);
      }
    }
  }
  
  public void deleteMessageAll() {
    mMessageList.clear();
  }
  
  @Override
  public int getCount() {
    return mMessageList.size();
  }
  @Override
  public ContentObject getItem(int position) { 
    return mMessageList.get(position); 
  }
  @Override
  public long getItemId(int position) {
    return position;
  }

  @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    View v = convertView;
    ContentObject co = getItem(position);
    
    if(v == null) {
      LayoutInflater li = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
      v = li.inflate(R.layout.list_message_list, null);
      holder = new ViewHolder();
      
      holder.mItemContainer = (LinearLayout) v.findViewById(R.id.msg_item_container);
      holder.mItemContainer.setOnTouchListener(mListItemTouchListener);
      holder.mTextInfo = (TextView) v.findViewById(R.id.msg_info);
      holder.mTextOrigin = (TextView) v.findViewById(R.id.msg_origin);
      holder.mTextConverted = (TextView) v.findViewById(R.id.msg_converted);
      
      v.setTag(holder);
    } else {
      holder = (ViewHolder) v.getTag();
    }
    
    holder.mContentObject = co;
    
    if (co != null && holder != null) {
      if(co.mIsEnabled)
        holder.mItemContainer.setBackgroundColor(mContext.getResources().getColor(R.color.lightblue1));
      else
        holder.mItemContainer.setBackgroundColor(mContext.getResources().getColor(R.color.graye));
      
      holder.mTextInfo.setText(Utils.getMessageTypeString(co.mContentType) + " : " + co.mPackageName);
      if(co.mOriginalString != null) {
        holder.mTextOrigin.setText(co.mOriginalString);
      } else {
        holder.mTextOrigin.setText("");
      }
      if(co.mFilteredString != null) {
        holder.mTextConverted.setText("--> " + co.mFilteredString);
      } else {
        holder.mTextConverted.setText("");
      }
    }
    
    return v;
  }  // End of getView()
  
  @Override
  public void OnDialogCallback(int msgType, int arg0, int arg1, String arg2, String arg3, Object arg4) {
    switch(msgType) {
    case IDialogListener.CALLBACK_ENABLE_MESSAGE:
      if(arg4 != null) {
        ContentObject co = (ContentObject) arg4;
        FilterObject filter = new FilterObject();
        
        filter.mType = FilterObject.FILTER_TYPE_ALL;
        filter.mCompareType = FilterObject.MATCHING_TYPE_WHOLE_WORD;
        filter.mReplaceType = FilterObject.REPLACE_TYPE_ALL;
        filter.mOriginalString = co.mOriginalString;
        filter.mReplaceString = co.mFilteredString;
        filter.mIconType = 0;
        
        if(mAdapterListener != null) {
          mAdapterListener.OnAdapterCallback(IAdapterListener.CALLBACK_ADD_MESSAGE_FILTER, 0, 0, null, null, filter);
        }
      }
      break;
      
    case IDialogListener.CALLBACK_ENABLE_PACKAGE:
      if(arg4 != null) {
        ContentObject co = (ContentObject) arg4;
        FilterObject filter = new FilterObject();
        
        filter.mType = FilterObject.FILTER_TYPE_PACKAGE_NAME;
        filter.mCompareType = FilterObject.MATCHING_TYPE_WHOLE_WORD;
        filter.mReplaceType = FilterObject.REPLACE_TYPE_SAME_PART;
        filter.mOriginalString = co.mPackageName;
        filter.mReplaceString = co.mOriginalString;
        filter.mIconType = 0;
        
        if(mAdapterListener != null) {
          mAdapterListener.OnAdapterCallback(IAdapterListener.CALLBACK_ADD_PACKAGE_FILTER, 0, 0, null, null, filter);
        }
      }
      break;
      
    case IDialogListener.CALLBACK_CLOSE:
      break;
    }
  }
  
  /**
   * Sometimes onClick listener misses event.
   * Uses touch listener instead.
   */
  private OnTouchListener mListItemTouchListener = new OnTouchListener() {
    private float startx = 0;
    private float starty = 0;
    @Override
    public boolean onTouch(View v, MotionEvent event) {
      if(event.getAction()==MotionEvent.ACTION_DOWN){
        startx = event.getX();
        starty = event.getY();
      }
      if(event.getAction()==MotionEvent.ACTION_UP){
        // if action-up occurred within 30px from start, process as click event. 
        if( (startx - event.getX())*(startx - event.getX()) + (starty - event.getY())*(starty - event.getY()) < 900 ) {
          processOnClickEvent(v);
        }
      }
      return true;
    }
  };  // End of new OnTouchListener
  
  private void processOnClickEvent(View v) {
    switch(v.getId())
    {
      case R.id.msg_item_container:
        if(v.getTag() == null)
          break;
        ContentObject co = ((ViewHolder)v.getTag()).mContentObject;
        if(co != null) {
          MessageListDialog dialog = new MessageListDialog(mContext);
          dialog.setDialogParams(this, null, co);
          dialog.show();
        }
        break;
    }  // End of switch()
  }
  
  public class ViewHolder {
    public LinearLayout mItemContainer = null;
    public TextView mTextInfo = null;
    public TextView mTextOrigin = null;
    public TextView mTextConverted = null;
    
    public ContentObject mContentObject = null;
  }
  
}




Java Source Code List

com.hardcopy.retrowatch.DeviceListActivity.java
com.hardcopy.retrowatch.FiltersAdapter.java
com.hardcopy.retrowatch.FiltersFragment.java
com.hardcopy.retrowatch.IAdapterListener.java
com.hardcopy.retrowatch.IDialogListener.java
com.hardcopy.retrowatch.IFragmentListener.java
com.hardcopy.retrowatch.IWebViewListener.java
com.hardcopy.retrowatch.MessageListAdapter.java
com.hardcopy.retrowatch.MessageListDialog.java
com.hardcopy.retrowatch.MessageListFragment.java
com.hardcopy.retrowatch.RetroWatchActivity.java
com.hardcopy.retrowatch.RetroWatchFragmentAdapter.java
com.hardcopy.retrowatch.RetroWebViewActivity.java
com.hardcopy.retrowatch.RetroWebView.java
com.hardcopy.retrowatch.RssAdapter.java
com.hardcopy.retrowatch.RssFragment.java
com.hardcopy.retrowatch.WatchControlFragment.java
com.hardcopy.retrowatch.connectivity.BluetoothManager.java
com.hardcopy.retrowatch.connectivity.ConnectionInfo.java
com.hardcopy.retrowatch.connectivity.HttpAsyncTask.java
com.hardcopy.retrowatch.connectivity.HttpFileAsyncTask.java
com.hardcopy.retrowatch.connectivity.HttpInterface.java
com.hardcopy.retrowatch.connectivity.HttpListener.java
com.hardcopy.retrowatch.connectivity.HttpRequester.java
com.hardcopy.retrowatch.connectivity.TransactionBuilder.java
com.hardcopy.retrowatch.connectivity.TransactionReceiver.java
com.hardcopy.retrowatch.contents.ContentManager.java
com.hardcopy.retrowatch.contents.FeedManager.java
com.hardcopy.retrowatch.contents.FeedParser.java
com.hardcopy.retrowatch.contents.GmailContract.java
com.hardcopy.retrowatch.contents.IContentManagerListener.java
com.hardcopy.retrowatch.contents.IFeedListener.java
com.hardcopy.retrowatch.contents.objects.CPObject.java
com.hardcopy.retrowatch.contents.objects.ContentObject.java
com.hardcopy.retrowatch.contents.objects.EmergencyObject.java
com.hardcopy.retrowatch.contents.objects.FeedObject.java
com.hardcopy.retrowatch.contents.objects.FilterObject.java
com.hardcopy.retrowatch.contents.objects.MessagingObject.java
com.hardcopy.retrowatch.contents.objects.NotificationObject.java
com.hardcopy.retrowatch.database.DBHelper.java
com.hardcopy.retrowatch.service.NotificationReceiverService.java
com.hardcopy.retrowatch.service.RetroWatchService.java
com.hardcopy.retrowatch.service.ServiceMonitoring.java
com.hardcopy.retrowatch.utils.Constants.java
com.hardcopy.retrowatch.utils.Logs.java
com.hardcopy.retrowatch.utils.RecycleUtils.java
com.hardcopy.retrowatch.utils.Settings.java
com.hardcopy.retrowatch.utils.Utils.java
com.hardcopy.retrowatchle.DeviceListActivity.java
com.hardcopy.retrowatchle.FiltersAdapter.java
com.hardcopy.retrowatchle.FiltersFragment.java
com.hardcopy.retrowatchle.IAdapterListener.java
com.hardcopy.retrowatchle.IDialogListener.java
com.hardcopy.retrowatchle.IFragmentListener.java
com.hardcopy.retrowatchle.IWebViewListener.java
com.hardcopy.retrowatchle.MessageListAdapter.java
com.hardcopy.retrowatchle.MessageListDialog.java
com.hardcopy.retrowatchle.MessageListFragment.java
com.hardcopy.retrowatchle.RetroWatchActivity.java
com.hardcopy.retrowatchle.RetroWatchFragmentAdapter.java
com.hardcopy.retrowatchle.RetroWebViewActivity.java
com.hardcopy.retrowatchle.RetroWebView.java
com.hardcopy.retrowatchle.RssAdapter.java
com.hardcopy.retrowatchle.RssFragment.java
com.hardcopy.retrowatchle.WatchControlFragment.java
com.hardcopy.retrowatchle.connectivity.BluetoothManager.java
com.hardcopy.retrowatchle.connectivity.ConnectionInfo.java
com.hardcopy.retrowatchle.connectivity.HttpAsyncTask.java
com.hardcopy.retrowatchle.connectivity.HttpFileAsyncTask.java
com.hardcopy.retrowatchle.connectivity.HttpInterface.java
com.hardcopy.retrowatchle.connectivity.HttpListener.java
com.hardcopy.retrowatchle.connectivity.HttpRequester.java
com.hardcopy.retrowatchle.connectivity.TransactionBuilder.java
com.hardcopy.retrowatchle.connectivity.TransactionReceiver.java
com.hardcopy.retrowatchle.contents.ContentManager.java
com.hardcopy.retrowatchle.contents.FeedManager.java
com.hardcopy.retrowatchle.contents.FeedParser.java
com.hardcopy.retrowatchle.contents.GmailContract.java
com.hardcopy.retrowatchle.contents.IContentManagerListener.java
com.hardcopy.retrowatchle.contents.IFeedListener.java
com.hardcopy.retrowatchle.contents.objects.CPObject.java
com.hardcopy.retrowatchle.contents.objects.ContentObject.java
com.hardcopy.retrowatchle.contents.objects.EmergencyObject.java
com.hardcopy.retrowatchle.contents.objects.FeedObject.java
com.hardcopy.retrowatchle.contents.objects.FilterObject.java
com.hardcopy.retrowatchle.contents.objects.MessagingObject.java
com.hardcopy.retrowatchle.contents.objects.NotificationObject.java
com.hardcopy.retrowatchle.database.DBHelper.java
com.hardcopy.retrowatchle.service.RetroWatchService.java
com.hardcopy.retrowatchle.service.ServiceMonitoring.java
com.hardcopy.retrowatchle.utils.Constants.java
com.hardcopy.retrowatchle.utils.Logs.java
com.hardcopy.retrowatchle.utils.RecycleUtils.java
com.hardcopy.retrowatchle.utils.Settings.java
com.hardcopy.retrowatchle.utils.Utils.java