/** * Wire * Copyright (C) 2016 Wire Swiss GmbH * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.waz.zclient.pages.main.connect; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import com.waz.api.IConversation; import com.waz.zclient.R; import com.waz.zclient.pages.main.connect.views.ConnectRequestInboxRow; import com.waz.zclient.ui.utils.TextViewUtils; import com.waz.zclient.utils.LayoutSpec; import com.waz.zclient.utils.ViewUtils; import java.util.List; public class ConnectRequestInboxAdapter extends BaseAdapter { public static final String TAG = ConnectRequestInboxAdapter.class.getName(); public static final int MAIN_CONNECT_REQUEST_NOT_SPECIFIED_POS = -1; private List<IConversation> connectRequests; private int mainVisibleRequestPosition = MAIN_CONNECT_REQUEST_NOT_SPECIFIED_POS; private int accentColor; private Context context; private ConnectActionsCallback connectActionsCallback; public ConnectRequestInboxAdapter(Context context, ConnectActionsCallback connectActionsCallback) { this.context = context; this.connectActionsCallback = connectActionsCallback; } public void reset() { connectRequests = null; notifyDataSetChanged(); } public void setConnectRequests(List<IConversation> connectRequests) { this.connectRequests = connectRequests; } public int getMainConnectRequestPosition() { return mainVisibleRequestPosition; } public void setMainConnectRequestPosition(int position) { mainVisibleRequestPosition = position; } public void setAccentColor(int accentColor) { this.accentColor = accentColor; } @Override public int getCount() { if (connectRequests == null) { return 0; } return connectRequests.size(); } @Override public IConversation getItem(int position) { if (connectRequests != null && position < getCount()) { return connectRequests.get(position); } return null; } @Override public long getItemId(int position) { return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView == null) { convertView = new ConnectRequestInboxRow(parent.getContext()); viewHolder = new ViewHolder(); viewHolder.nameView = ViewUtils.getView(convertView, R.id.ttv__connect_request__display_name); viewHolder.separatorView = ViewUtils.getView(convertView, R.id.v__connect_request__separator_line); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } // Set valuesCon IConversation request = getItem(position); viewHolder.nameView.setText(request.getName()); TextViewUtils.boldText(viewHolder.nameView); ((ConnectRequestInboxRow) convertView).setConnectActionCallback(connectActionsCallback); ((ConnectRequestInboxRow) convertView).setAccentColor(accentColor); ((ConnectRequestInboxRow) convertView).loadUser(request.getOtherParticipant()); if (LayoutSpec.isPhone(context)) { if (position == 0) { viewHolder.separatorView.setVisibility(View.GONE); } else { viewHolder.separatorView.setVisibility(View.VISIBLE); } } return convertView; } public static class ViewHolder { TextView nameView; View separatorView; } }