mirror of
https://github.com/moparisthebest/open-keychain
synced 2024-11-27 03:02:15 -05:00
remove unused adapter
This commit is contained in:
parent
f7c24a58c4
commit
936e7494b9
@ -1,266 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2013 Dominik Schürmann <dominik@dominikschuermann.de>
|
||||
* Copyright (C) 2011 Gonçalo Ferreira
|
||||
*
|
||||
* 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 org.sufficientlysecure.keychain.util;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.database.DataSetObserver;
|
||||
import android.support.v4.widget.CursorAdapter;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.TextView;
|
||||
|
||||
/**
|
||||
* Originally from https://github.com/monxalo/android-section-adapter
|
||||
*
|
||||
* getCustomGroup() has been modified
|
||||
*/
|
||||
public abstract class SectionCursorAdapter extends CursorAdapter {
|
||||
|
||||
private static final String TAG = "SectionCursorAdapter";
|
||||
private static final boolean LOGV = false;
|
||||
|
||||
private static final int TYPE_NORMAL = 1;
|
||||
private static final int TYPE_HEADER = 0;
|
||||
private static final int TYPE_COUNT = 2;
|
||||
|
||||
private final int mHeaderRes;
|
||||
private final int mGroupColumn;
|
||||
private final LayoutInflater mLayoutInflater;
|
||||
|
||||
private LinkedHashMap<Integer, String> sectionsIndexer;
|
||||
|
||||
public static class ViewHolder {
|
||||
public TextView textView;
|
||||
}
|
||||
|
||||
public SectionCursorAdapter(Context context, Cursor c, int headerLayout, int groupColumn) {
|
||||
super(context, c, 0);
|
||||
|
||||
sectionsIndexer = new LinkedHashMap<Integer, String>();
|
||||
|
||||
mHeaderRes = headerLayout;
|
||||
mGroupColumn = groupColumn;
|
||||
mLayoutInflater = LayoutInflater.from(context);
|
||||
|
||||
if (c != null) {
|
||||
calculateSectionHeaders();
|
||||
c.registerDataSetObserver(mDataSetObserver);
|
||||
}
|
||||
}
|
||||
|
||||
private DataSetObserver mDataSetObserver = new DataSetObserver() {
|
||||
public void onChanged() {
|
||||
calculateSectionHeaders();
|
||||
};
|
||||
|
||||
public void onInvalidated() {
|
||||
sectionsIndexer.clear();
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* This method serve as an intercepter before the sections are calculated so you can transform
|
||||
* some computer data into human readable, e.g. format a unix timestamp, or a status.
|
||||
* </p>
|
||||
*
|
||||
* <p>
|
||||
* By default this method returns the original data for the group column.
|
||||
* </p>
|
||||
*
|
||||
* @param groupData
|
||||
* @return
|
||||
*/
|
||||
protected String getCustomGroup(String groupData) {
|
||||
return groupData.substring(0, 1);
|
||||
}
|
||||
|
||||
private void calculateSectionHeaders() {
|
||||
int i = 0;
|
||||
|
||||
String previous = "";
|
||||
int count = 0;
|
||||
|
||||
final Cursor c = getCursor();
|
||||
|
||||
sectionsIndexer.clear();
|
||||
|
||||
if (c == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
c.moveToPosition(-1);
|
||||
|
||||
while (c.moveToNext()) {
|
||||
final String group = getCustomGroup(c.getString(mGroupColumn));
|
||||
|
||||
if (!previous.equals(group)) {
|
||||
sectionsIndexer.put(i + count, group);
|
||||
previous = group;
|
||||
|
||||
if (LOGV)
|
||||
Log.v(TAG, "Group " + group + "at position: " + (i + count));
|
||||
|
||||
count++;
|
||||
}
|
||||
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
public String getGroupCustomFormat(Object obj) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
int viewType = getItemViewType(position);
|
||||
|
||||
if (viewType == TYPE_NORMAL) {
|
||||
Cursor c = (Cursor) getItem(position);
|
||||
|
||||
if (c == null) {
|
||||
if (LOGV)
|
||||
Log.d(TAG, "getItem(" + position + ") = null");
|
||||
return mLayoutInflater.inflate(mHeaderRes, parent, false);
|
||||
}
|
||||
|
||||
final int mapCursorPos = getSectionForPosition(position);
|
||||
c.moveToPosition(mapCursorPos);
|
||||
|
||||
return super.getView(mapCursorPos, convertView, parent);
|
||||
} else {
|
||||
ViewHolder holder = null;
|
||||
|
||||
if (convertView == null) {
|
||||
if (LOGV)
|
||||
Log.v(TAG, "Creating new view for section");
|
||||
|
||||
holder = new ViewHolder();
|
||||
convertView = mLayoutInflater.inflate(mHeaderRes, parent, false);
|
||||
holder.textView = (TextView) convertView;
|
||||
|
||||
convertView.setTag(holder);
|
||||
} else {
|
||||
if (LOGV)
|
||||
Log.v(TAG, "Reusing view for section");
|
||||
|
||||
holder = (ViewHolder) convertView.getTag();
|
||||
}
|
||||
|
||||
TextView sectionText = holder.textView;
|
||||
|
||||
final String group = sectionsIndexer.get(position);
|
||||
final String customFormat = getGroupCustomFormat(group);
|
||||
|
||||
sectionText.setText(customFormat == null ? group : customFormat);
|
||||
|
||||
return sectionText;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getViewTypeCount() {
|
||||
return TYPE_COUNT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return super.getCount() + sectionsIndexer.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabled(int position) {
|
||||
return getItemViewType(position) == TYPE_NORMAL;
|
||||
}
|
||||
|
||||
public int getPositionForSection(int section) {
|
||||
if (sectionsIndexer.containsKey(section)) {
|
||||
return section + 1;
|
||||
}
|
||||
return section;
|
||||
}
|
||||
|
||||
public int getSectionForPosition(int position) {
|
||||
int offset = 0;
|
||||
for (Integer key : sectionsIndexer.keySet()) {
|
||||
if (position > key) {
|
||||
offset++;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return position - offset;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getItem(int position) {
|
||||
if (getItemViewType(position) == TYPE_NORMAL) {
|
||||
return super.getItem(getSectionForPosition(position));
|
||||
}
|
||||
return super.getItem(position);
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getItemId(int position) {
|
||||
if (getItemViewType(position) == TYPE_NORMAL) {
|
||||
return super.getItemId(getSectionForPosition(position));
|
||||
}
|
||||
return super.getItemId(position);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemViewType(int position) {
|
||||
if (position == getPositionForSection(position)) {
|
||||
return TYPE_NORMAL;
|
||||
}
|
||||
return TYPE_HEADER;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void changeCursor(Cursor cursor) {
|
||||
final Cursor old = swapCursor(cursor);
|
||||
|
||||
if (old != null) {
|
||||
old.close();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public Cursor swapCursor(Cursor newCursor) {
|
||||
if (getCursor() != null) {
|
||||
getCursor().unregisterDataSetObserver(mDataSetObserver);
|
||||
}
|
||||
|
||||
final Cursor oldCursor = super.swapCursor(newCursor);
|
||||
|
||||
calculateSectionHeaders();
|
||||
|
||||
if (newCursor != null) {
|
||||
newCursor.registerDataSetObserver(mDataSetObserver);
|
||||
}
|
||||
|
||||
return oldCursor;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user