/*
* Copyright 2012 Javier Pérez Pacheco and Francisco Díaz Rodriguez
* TweetTopics 2.0
* javielinux@gmail.com
*
* 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.javielinux.adapters;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.view.View;
import android.view.ViewGroup;
import android.widget.*;
import com.android.dataframework.DataFramework;
import com.android.dataframework.Entity;
import com.javielinux.components.AlphaTextView;
import com.javielinux.fragments.MyActivityFragment;
import com.javielinux.tweettopics2.R;
import com.javielinux.tweettopics2.ThemeManager;
import com.javielinux.utils.DBUtils;
import com.javielinux.utils.ImageUtils;
import com.javielinux.utils.TweetTopicsUtils;
import com.javielinux.utils.Utils;
import java.util.ArrayList;
public class MyActivityAdapter extends BaseAdapter {
public static final int MY_ACTIVITY_USER = 0;
public static final int MY_ACTIVITY_TITLE_SEARCH = 1;
public static final int MY_ACTIVITY_SEARCH = 2;
public static final int MY_ACTIVITY_NO_USERS = 3;
public static final int MY_ACTIVITY_NO_SEARCHES = 4;
private MyActivityFragment myActivityFragment;
private Context context;
private ThemeManager themeManager;
private ArrayList<MyActivityItem> elements = new ArrayList<MyActivityItem>();
public static class MyActivityItem {
public int type = 0;
public Entity entityUser;
public ArrayList<Entity> entitiesSearch;
public MyActivityItem(int type) {
this.type = type;
}
}
public MyActivityAdapter(Context context, MyActivityFragment myActivityFragment) {
this.context = context;
this.myActivityFragment = myActivityFragment;
themeManager = new ThemeManager(context);
refresh();
}
public void refresh() {
elements.clear();
ArrayList<Entity> users = DataFramework.getInstance().getEntityList("users");
if (users.size() > 0) {
for (Entity entity : users) {
MyActivityItem item = new MyActivityItem(MY_ACTIVITY_USER);
item.entityUser = entity;
elements.add(item);
}
} else {
elements.add(new MyActivityItem(MY_ACTIVITY_NO_USERS));
}
elements.add(new MyActivityItem(MY_ACTIVITY_TITLE_SEARCH));
int columnsSearch = context.getResources().getInteger(R.integer.columns_search_my_activity);
ArrayList<Entity> searches = DataFramework.getInstance().getEntityList("search", "", "is_temp asc");
if (searches.size() > 0) {
ArrayList<Entity> auxEntitiesSearch = new ArrayList<Entity>();
for (Entity entity : searches) {
auxEntitiesSearch.add(entity);
if (auxEntitiesSearch.size() >= columnsSearch) {
MyActivityItem item = new MyActivityItem(MY_ACTIVITY_SEARCH);
item.entitiesSearch = auxEntitiesSearch;
elements.add(item);
auxEntitiesSearch = new ArrayList<Entity>();
}
}
if (auxEntitiesSearch.size() > 0) {
MyActivityItem item = new MyActivityItem(MY_ACTIVITY_SEARCH);
item.entitiesSearch = auxEntitiesSearch;
elements.add(item);
}
} else {
elements.add(new MyActivityItem(MY_ACTIVITY_NO_SEARCHES));
}
}
@Override
public int getCount() {
return elements.size();
}
public int getPositionById(long id) {
for (int i = 0; i < getCount(); i++) {
if (((Entity) getItem(i)).getId() == id) {
return i;
}
}
return -1;
}
@Override
public Object getItem(int position) {
return elements.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
private View inflateView(MyActivityItem element) {
View v = null;
if (element.type == MY_ACTIVITY_USER) {
v = View.inflate(context, R.layout.my_activity_users_row, null);
} else if (element.type == MY_ACTIVITY_SEARCH) {
v = View.inflate(context, R.layout.my_activity_search_row, null);
} else if (element.type == MY_ACTIVITY_NO_USERS) {
v = View.inflate(context, R.layout.my_activity_no_users_row, null);
} else if (element.type == MY_ACTIVITY_NO_SEARCHES) {
v = View.inflate(context, R.layout.my_activity_no_searches_row, null);
} else if (element.type == MY_ACTIVITY_TITLE_SEARCH) {
v = View.inflate(context, R.layout.my_activity_title_search_row, null);
}
v.setTag(element.type);
return v;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MyActivityItem element = elements.get(position);
View v = null;
if (null == convertView) {
v = inflateView(element);
} else {
if (element.type == Integer.valueOf(convertView.getTag().toString())) {
v = convertView;
} else {
v = inflateView(element);
}
}
// crear vista
if (element.type == MY_ACTIVITY_NO_USERS) {
v.findViewById(R.id.my_activity_add_user).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myActivityFragment.showDialogSocialNetworks();
}
});
} else if (element.type == MY_ACTIVITY_NO_SEARCHES) {
v.findViewById(R.id.my_activity_samples_search).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myActivityFragment.showDialogSamples();
}
});
} else if (element.type == MY_ACTIVITY_USER) {
Entity item = element.entityUser;
long id = item.getId();
v.setTag(R.id.item_user_my_activity, item);
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myActivityFragment.clickUser((Entity) view.getTag(R.id.item_user_my_activity));
}
});
//v.setBackgroundDrawable(ImageUtils.createStateListDrawable(context, themeManager.getColor("list_background_row_color")));
ImageView img = (ImageView) v.findViewById(R.id.my_activity_user_icon);
try {
img.setImageBitmap(ImageUtils.getBitmapAvatar(id, Utils.AVATAR_LARGE));
} catch (Exception e) {
e.printStackTrace();
img.setImageResource(R.drawable.avatar);
}
ImageView tag_network = (ImageView) v.findViewById(R.id.my_activity_user_tag_network);
if (item.getString("service").equals("facebook")) {
tag_network.setImageResource(R.drawable.icon_facebook);
} else {
tag_network.setImageResource(R.drawable.icon_twitter);
}
TextView fullname = (TextView) v.findViewById(R.id.my_activity_user_fullname);
if (item.getString("fullname").equals("")) {
fullname.setText(item.getString("name"));
} else {
fullname.setText(item.getString("fullname"));
}
TextView name = (TextView) v.findViewById(R.id.my_activity_user_name);
name.setText(item.getString("name"));
LinearLayout llButtons = (LinearLayout) v.findViewById(R.id.my_activity_buttons);
if (item.getString("service").equals("facebook")) {
llButtons.setVisibility(View.GONE);
} else {
llButtons.setVisibility(View.VISIBLE);
ImageButton imgButtonTimeline = (ImageButton) v.findViewById(R.id.my_activity_timeline);
imgButtonTimeline.setTag(id);
imgButtonTimeline.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myActivityFragment.openUserColumn(Integer.valueOf(view.getTag().toString()), TweetTopicsUtils.COLUMN_TIMELINE);
}
});
int sizeFontNumber = (int)context.getResources().getDimension(R.dimen.size_number_circle_default);
ImageView imgCounterTimeline = (ImageView) v.findViewById(R.id.my_activity_counter_timeline);
int totalTimeline = DataFramework.getInstance().getEntityListCount("tweets_user", "type_id = " + TweetTopicsUtils.TWEET_TYPE_TIMELINE
+ " AND user_tt_id=" + item.getId() + " AND tweet_id >'" + Utils.fillZeros("" + item.getString("last_timeline_id")) + "'");
if (totalTimeline > 0) {
imgCounterTimeline.setVisibility(View.VISIBLE);
imgCounterTimeline.setImageBitmap(ImageUtils.getBitmapNumber(context, totalTimeline, Color.RED, Utils.TYPE_RECTANGLE, sizeFontNumber));
} else {
imgCounterTimeline.setVisibility(View.GONE);
}
ImageButton imgButtonMentions = (ImageButton) v.findViewById(R.id.my_activity_mentions);
imgButtonMentions.setTag(id);
imgButtonMentions.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myActivityFragment.openUserColumn(Integer.valueOf(view.getTag().toString()), TweetTopicsUtils.COLUMN_MENTIONS);
}
});
ImageView imgCounterMentions = (ImageView) v.findViewById(R.id.my_activity_counter_mentions);
int totalMentions = DataFramework.getInstance().getEntityListCount("tweets_user", "type_id = " + TweetTopicsUtils.TWEET_TYPE_MENTIONS
+ " AND user_tt_id=" + item.getId() + " AND tweet_id >'" + Utils.fillZeros("" + item.getString("last_mention_id")) + "'");
if (totalMentions > 0) {
imgCounterMentions.setVisibility(View.VISIBLE);
imgCounterMentions.setImageBitmap(ImageUtils.getBitmapNumber(context, totalMentions, Color.RED, Utils.TYPE_RECTANGLE, sizeFontNumber));
} else {
imgCounterMentions.setVisibility(View.GONE);
}
ImageButton imgButtonDMs = (ImageButton) v.findViewById(R.id.my_activity_directs);
imgButtonDMs.setTag(id);
imgButtonDMs.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myActivityFragment.openUserColumn(Integer.valueOf(view.getTag().toString()), TweetTopicsUtils.COLUMN_DIRECT_MESSAGES);
}
});
ImageView imgCounterDirectMessages = (ImageView) v.findViewById(R.id.my_activity_counter_directs);
int totalDirectMessages = DataFramework.getInstance().getEntityListCount("tweets_user", "type_id = " + TweetTopicsUtils.TWEET_TYPE_DIRECTMESSAGES
+ " AND user_tt_id=" + item.getId() + " AND tweet_id >'" + Utils.fillZeros("" + item.getString("last_direct_id")) + "'");
if (totalDirectMessages > 0) {
imgCounterDirectMessages.setVisibility(View.VISIBLE);
imgCounterDirectMessages.setImageBitmap(ImageUtils.getBitmapNumber(context, totalDirectMessages, Color.RED, Utils.TYPE_RECTANGLE, sizeFontNumber));
} else {
imgCounterDirectMessages.setVisibility(View.GONE);
}
}
} else if (element.type == MY_ACTIVITY_SEARCH) {
((LinearLayout) v).removeAllViews();
ArrayList<Entity> items = element.entitiesSearch;
for (Entity item : items) {
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
params.weight = 1;
((LinearLayout) v).addView(drawSearch(item), params);
}
}
return v;
}
private View drawSearch(Entity item) {
View v = View.inflate(context, R.layout.my_activity_search_item_row, null);
v.setTag(item);
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myActivityFragment.openSearchColumn((Entity) view.getTag());
}
});
v.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
myActivityFragment.longClickSearch((Entity) view.getTag());
return true;
}
});
ImageView img = (ImageView) v.findViewById(R.id.my_activity_search_img);
try {
Drawable d = Utils.getDrawable(v.getContext(), item.getString("icon_big"));
if (d == null) {
img.setImageResource(R.drawable.letter_az);
} else {
img.setImageDrawable(d);
}
} catch (Exception e) {
img.setImageResource(R.drawable.letter_az);
e.printStackTrace();
}
ImageView tagNew = (ImageView) v.findViewById(R.id.my_activity_search_tag_new);
ImageView tagLang = (ImageView) v.findViewById(R.id.my_activity_search_tag_lang);
String name = item.getString("name");
if (item.getString("lang").equals("")) {
tagLang.setVisibility(View.GONE);
} else {
tagLang.setVisibility(View.VISIBLE);
int i = v.getResources().getIdentifier(Utils.packageName + ":drawable/tag_flag_" + item.getString("lang"), null, null);
tagLang.setImageResource(i);
}
if (item.getInt("notifications") == 1) {
tagNew.setVisibility(View.VISIBLE);
try {
int count = DBUtils.getUnreadTweetsSearch(item.getId());
if (count > 0) {
tagNew.setImageBitmap(ImageUtils.getBitmapNumber(context, count, Color.RED, Utils.TYPE_RECTANGLE));
} else {
tagNew.setImageResource(R.drawable.tag_notification);
}
} catch (Exception e) {
tagNew.setImageResource(R.drawable.tag_notification);
}
} else {
tagNew.setVisibility(View.GONE);
}
AlphaTextView lTitle = (AlphaTextView) v.findViewById(R.id.my_activity_search_title);
lTitle.setText(name);
if (item.getInt("is_temp") == 1) {
img.setAlpha(80);
lTitle.onSetAlpha(80);
} else {
img.setAlpha(255);
lTitle.onSetAlpha(255);
}
return v;
}
}