package org.softeg.slartus.forpdaplus.fragments.qms; import android.content.Context; import android.os.Bundle; import android.support.v4.content.ContextCompat; import android.text.TextUtils; import android.view.ContextMenu; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.imageaware.ImageViewAware; import com.nostra13.universalimageloader.core.listener.PauseOnScrollListener; import org.softeg.slartus.forpdaapi.IListItem; import org.softeg.slartus.forpdaapi.classes.ListData; import org.softeg.slartus.forpdaapi.qms.QmsApi; import org.softeg.slartus.forpdaapi.qms.QmsUser; import org.softeg.slartus.forpdaapi.qms.QmsUsers; import org.softeg.slartus.forpdaplus.App; import org.softeg.slartus.forpdaplus.Client; import org.softeg.slartus.forpdaplus.R; import org.softeg.slartus.forpdaplus.classes.MenuListDialog; import org.softeg.slartus.forpdaplus.classes.common.ExtUrl; import org.softeg.slartus.forpdaplus.common.AppLog; import org.softeg.slartus.forpdaplus.listfragments.BaseLoaderListFragment; import org.softeg.slartus.forpdaplus.prefs.Preferences; import org.softeg.slartus.forpdaplus.tabs.ListViewMethodsBridge; import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by radiationx on 12.11.15. */ public class QmsContactsList extends BaseLoaderListFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setArrow(); } @Override public void onResume() { super.onResume(); setArrow(); if (Preferences.Notifications.Qms.isReadDone()) reloadData(); } @Override public void onPause() { super.onPause(); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); getListView().setOnScrollListener(new PauseOnScrollListener(ImageLoader.getInstance(), false, true)); registerForContextMenu(getListView()); } @Override protected BaseAdapter createAdapter() { return new QmsContactsAdapter(getMainActivity(), getData().getItems(), ImageLoader.getInstance()); } @Override protected int getViewResourceId() { return R.layout.list_fragment; } @Override protected ListData loadData(int loaderId, Bundle args) throws Throwable { ListData listData = new ListData(); ArrayList<QmsUser> users = QmsApi.getQmsSubscribers(Client.getInstance()); listData.getItems().addAll(users); Client.getInstance().setQmsCount(QmsUsers.unreadMessageUsersCount(users)); Client.getInstance().doOnMailListener(); return listData; } @Override public void onItemClick(AdapterView<?> adapterView, View v, int position, long id) { try { id = ListViewMethodsBridge.getItemId(getMainActivity(), position, id); if (id < 0 || getAdapter().getCount() <= id) return; Object o = getAdapter().getItem((int) id); if (o == null) return; final QmsUser qmsUser = (QmsUser) o; //QmsContactThemesActivity.showThemes(getMainActivity(), qmsUser.getId(), qmsUser.getNick().toString()); QmsContactThemes.showThemes(qmsUser.getId(), qmsUser.getNick().toString()); } catch (Throwable ex) { AppLog.e(getMainActivity(), ex); } } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo; if (info.id == -1) return; Object o = getAdapter().getItem((int) info.id); if (o == null) return; final QmsUser qmsUser = (QmsUser) o; if (TextUtils.isEmpty(qmsUser.getId())) return; final List<MenuListDialog> list = new ArrayList<>(); list.add(new MenuListDialog(getString(R.string.delete), () -> new Thread(() -> { try { Map<String, String> additionalHeaders = new HashMap<>(); additionalHeaders.put("act", "qms-xhr"); additionalHeaders.put("action", "del-member"); additionalHeaders.put("del-mid", qmsUser.getId()); Client.getInstance().performPost("http://4pda.ru/forum/index.php", additionalHeaders); reloadData(); } catch (IOException e) { e.printStackTrace(); } }).start())); ExtUrl.showContextDialog(getContext(), null, list); } public class QmsContactsAdapter extends BaseAdapter { private ArrayList<IListItem> dataList; final LayoutInflater inflater; private ImageLoader imageLoader; private Boolean mShowAvatars; public QmsContactsAdapter(Context context, ArrayList<IListItem> dataList, ImageLoader imageLoader) { inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); this.imageLoader = imageLoader; this.dataList = dataList; mShowAvatars = Preferences.Topic.isShowAvatars(); } @Override public void notifyDataSetChanged() { mShowAvatars = Preferences.Topic.isShowAvatars(); super.notifyDataSetChanged(); } @Override public int getCount() { return dataList.size(); } @Override public Object getItem(int p1) { return dataList.get(p1); } @Override public long getItemId(int p1) { return p1; } @Override public View getView(final int position, View convertView, ViewGroup parent) { final ViewHolder holder; if (convertView == null) { convertView = inflater.inflate(R.layout.qms_contact_item, parent, false); holder = new ViewHolder(); assert convertView != null; if(App.getInstance().getPreferences().getBoolean("isSquareAvarars",false)){ holder.imgAvatar = (ImageView) convertView.findViewById(R.id.imgAvatarSquare); }else { holder.imgAvatar = (ImageView) convertView.findViewById(R.id.imgAvatar); } holder.imgAvatar.setVisibility(mShowAvatars ? View.VISIBLE : View.GONE); holder.txtCount = (TextView) convertView.findViewById(R.id.txtMessagesCount); holder.txtNick = (TextView) convertView.findViewById(R.id.txtNick); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } QmsUser user = (QmsUser) this.getItem(position); if (TextUtils.isEmpty(user.getNewMessagesCount())) holder.txtCount.setText(""); else holder.txtCount.setText(user.getNewMessagesCount()); holder.txtNick.setText(user.getNick()); if (!TextUtils.isEmpty(user.getNewMessagesCount())) { holder.txtNick.setTextAppearance(getContext(), R.style.QmsNew); holder.txtCount.setTextAppearance(getContext(), R.style.QmsNew); if (getContext() != null) switch (App.getInstance().getPreferences().getString("mainAccentColor", "pink")) { case "pink": holder.txtCount.setBackgroundResource(R.drawable.qmsnew); break; case "blue": holder.txtCount.setBackgroundResource(R.drawable.qmsnewblue); break; case "gray": holder.txtCount.setBackgroundResource(R.drawable.qmsnewgray); break; } } else { holder.txtCount.setBackgroundColor(ContextCompat.getColor(App.getContext(), android.R.color.transparent)); holder.txtNick.setTextAppearance(getContext(), R.style.QmsOld); holder.txtCount.setTextAppearance(getContext(), R.style.QmsOld); } if (user.getAvatarUrl() != null && mShowAvatars) { imageLoader.displayImage(user.getAvatarUrl(), new ImageViewAware(holder.imgAvatar, false)); } return convertView; } private Context getContext() { return inflater.getContext(); } public class ViewHolder { ImageView imgAvatar; TextView txtNick; TextView txtCount; } } }