Repo created
This commit is contained in:
parent
f2d952b743
commit
3ecd57d1b2
475 changed files with 37130 additions and 2 deletions
139
srcs/juloo.keyboard2/ClipboardPinView.java
Normal file
139
srcs/juloo.keyboard2/ClipboardPinView.java
Normal file
|
|
@ -0,0 +1,139 @@
|
|||
package juloo.keyboard2;
|
||||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.SharedPreferences;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.TextView;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
|
||||
public final class ClipboardPinView extends NonScrollListView
|
||||
{
|
||||
/** Preference file name that store pinned clipboards. */
|
||||
static final String PERSIST_FILE_NAME = "clipboards";
|
||||
/** Preference name for pinned clipboards. */
|
||||
static final String PERSIST_PREF = "pinned";
|
||||
|
||||
List<String> _entries;
|
||||
ClipboardPinEntriesAdapter _adapter;
|
||||
SharedPreferences _persist_store;
|
||||
|
||||
public ClipboardPinView(Context ctx, AttributeSet attrs)
|
||||
{
|
||||
super(ctx, attrs);
|
||||
_entries = new ArrayList<String>();
|
||||
_persist_store =
|
||||
ctx.getSharedPreferences("pinned_clipboards", Context.MODE_PRIVATE);
|
||||
load_from_prefs(_persist_store, _entries);
|
||||
_adapter = this.new ClipboardPinEntriesAdapter();
|
||||
setAdapter(_adapter);
|
||||
}
|
||||
|
||||
/** Pin a clipboard and persist the change. */
|
||||
public void add_entry(String text)
|
||||
{
|
||||
_entries.add(text);
|
||||
_adapter.notifyDataSetChanged();
|
||||
persist();
|
||||
invalidate();
|
||||
}
|
||||
|
||||
/** Remove the entry at index [pos] and persist the change. */
|
||||
public void remove_entry(int pos)
|
||||
{
|
||||
if (pos < 0 || pos >= _entries.size())
|
||||
return;
|
||||
_entries.remove(pos);
|
||||
_adapter.notifyDataSetChanged();
|
||||
persist();
|
||||
invalidate();
|
||||
}
|
||||
|
||||
/** Send the specified entry to the editor. */
|
||||
public void paste_entry(int pos)
|
||||
{
|
||||
ClipboardHistoryService.paste(_entries.get(pos));
|
||||
}
|
||||
|
||||
void persist() { save_to_prefs(_persist_store, _entries); }
|
||||
|
||||
static void load_from_prefs(SharedPreferences store, List<String> dst)
|
||||
{
|
||||
String arr_s = store.getString(PERSIST_PREF, null);
|
||||
if (arr_s == null)
|
||||
return;
|
||||
try
|
||||
{
|
||||
JSONArray arr = new JSONArray(arr_s);
|
||||
for (int i = 0; i < arr.length(); i++)
|
||||
dst.add(arr.getString(i));
|
||||
}
|
||||
catch (JSONException _e) {}
|
||||
}
|
||||
|
||||
static void save_to_prefs(SharedPreferences store, List<String> entries)
|
||||
{
|
||||
JSONArray arr = new JSONArray();
|
||||
for (int i = 0; i < entries.size(); i++)
|
||||
arr.put(entries.get(i));
|
||||
store.edit()
|
||||
.putString(PERSIST_PREF, arr.toString())
|
||||
.commit();
|
||||
}
|
||||
|
||||
class ClipboardPinEntriesAdapter extends BaseAdapter
|
||||
{
|
||||
public ClipboardPinEntriesAdapter() {}
|
||||
|
||||
@Override
|
||||
public int getCount() { return _entries.size(); }
|
||||
@Override
|
||||
public Object getItem(int pos) { return _entries.get(pos); }
|
||||
@Override
|
||||
public long getItemId(int pos) { return _entries.get(pos).hashCode(); }
|
||||
|
||||
@Override
|
||||
public View getView(final int pos, View v, ViewGroup _parent)
|
||||
{
|
||||
if (v == null)
|
||||
v = View.inflate(getContext(), R.layout.clipboard_pin_entry, null);
|
||||
((TextView)v.findViewById(R.id.clipboard_pin_text))
|
||||
.setText(_entries.get(pos));
|
||||
v.findViewById(R.id.clipboard_pin_paste).setOnClickListener(
|
||||
new View.OnClickListener()
|
||||
{
|
||||
@Override
|
||||
public void onClick(View v) { paste_entry(pos); }
|
||||
});
|
||||
v.findViewById(R.id.clipboard_pin_remove).setOnClickListener(
|
||||
new View.OnClickListener()
|
||||
{
|
||||
@Override
|
||||
public void onClick(View v)
|
||||
{
|
||||
AlertDialog d = new AlertDialog.Builder(getContext())
|
||||
.setTitle(R.string.clipboard_remove_confirm)
|
||||
.setPositiveButton(R.string.clipboard_remove_confirmed,
|
||||
new DialogInterface.OnClickListener(){
|
||||
public void onClick(DialogInterface _dialog, int _which)
|
||||
{
|
||||
remove_entry(pos);
|
||||
}
|
||||
})
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
.create();
|
||||
Utils.show_dialog_on_ime(d, v.getWindowToken());
|
||||
}
|
||||
});
|
||||
return v;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue