Permalink
Browse files

Merge branch 'master' into pull-128

  • Loading branch information...
2 parents 539ab93 + 6350916 commit 81c9fdcb133b51400f5164c9d145692429c9df0b @rabcyr rabcyr committed Apr 9, 2012
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
View
@@ -103,7 +103,6 @@
<SOURCES />
</library>
</orderEntry>
- <orderEntry type="library" scope="PROVIDED" name="Android 2.3.1 Platform" level="application" />
</component>
</module>
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@@ -1,9 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
- <ListView android:id="@+id/android:list"
+
+ <ListView
+ android:id="@+id/android:list"
android:layout_width="fill_parent"
- android:layout_height="wrap_content" />
+ android:layout_height="fill_parent"/>
+
</LinearLayout>
@@ -32,8 +32,9 @@
/>
<item
android:id="@+id/read_receipt"
- android:alphabeticShortcut="r"
- android:title="@string/read_receipt"
+ android:alphabeticShortcut="r"
+ android:title="@string/read_receipt"
+ android:icon="@drawable/ic_menu_reply_receipt"
/>
<item
android:id="@+id/add_attachment_image"
@@ -13,24 +13,30 @@
import com.fsck.k9.helper.ContactItem;
public class EmailAddressList extends K9ListActivity implements OnItemClickListener {
+ public static final String EXTRA_CONTACT_ITEM = "contact";
+ public static final String EXTRA_EMAIL_ADDRESS = "emailAddress";
+
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.email_address_list);
Intent i = getIntent();
- ContactItem contact = (ContactItem) i.getSerializableExtra("contact");
+ ContactItem contact = (ContactItem) i.getSerializableExtra(EXTRA_CONTACT_ITEM);
if (contact == null) {
+ finish();
return;
}
- ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.email_address_list_item, contact.getEmailAddresses());
+ ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
+ R.layout.email_address_list_item, contact.emailAddresses);
ListView listView = getListView();
listView.setOnItemClickListener(this);
listView.setAdapter(adapter);
- setTitle(contact.getDisplayName());
+ setTitle(contact.displayName);
}
@Override
@@ -40,7 +46,7 @@ public void onItemClick(AdapterView<?> parent, View view, int position, long id)
Toast.makeText(EmailAddressList.this, item, Toast.LENGTH_LONG).show();
Intent intent = new Intent();
- intent.putExtra("EMAIL_ADDRESS", item);
+ intent.putExtra(EXTRA_EMAIL_ADDRESS, item);
setResult(RESULT_OK, intent);
finish();
}
@@ -26,7 +26,6 @@
import android.database.Cursor;
import android.net.Uri;
import android.os.AsyncTask;
-import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Parcelable;
@@ -136,8 +135,6 @@
private static final int MSG_DISCARDED_DRAFT = 6;
private static final int ACTIVITY_REQUEST_PICK_ATTACHMENT = 1;
- private static final int ACTIVITY_CHOOSE_IDENTITY = 2;
- private static final int ACTIVITY_CHOOSE_ACCOUNT = 3;
private static final int CONTACT_PICKER_TO = 4;
private static final int CONTACT_PICKER_CC = 5;
private static final int CONTACT_PICKER_BCC = 6;
@@ -1797,14 +1794,14 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
case CONTACT_PICKER_TO:
case CONTACT_PICKER_CC:
case CONTACT_PICKER_BCC:
- ContactItem contact = mContacts.getEmailFromContactPicker(data);
+ ContactItem contact = mContacts.extractInfoFromContactPickerIntent(data);
if (contact == null) {
Toast.makeText(this, getString(R.string.error_contact_address_not_found), Toast.LENGTH_LONG).show();
return;
}
- if (contact.getEmailAddresses().size() > 1) {
+ if (contact.emailAddresses.size() > 1) {
Intent i = new Intent(this, EmailAddressList.class);
- i.putExtra("contact", contact);
+ i.putExtra(EmailAddressList.EXTRA_CONTACT_ITEM, contact);
if (requestCode == CONTACT_PICKER_TO) {
startActivityForResult(i, CONTACT_PICKER_TO2);
@@ -1816,14 +1813,14 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
return;
}
if (K9.DEBUG) {
- ArrayList<String> emails = contact.getEmailAddresses();
+ List<String> emails = contact.emailAddresses;
for (int i = 0; i < emails.size(); i++) {
Log.v(K9.LOG_TAG, "email[" + i + "]: " + emails.get(i));
}
}
- String email = contact.getEmailAddresses().get(0);
+ String email = contact.emailAddresses.get(0);
if (requestCode == CONTACT_PICKER_TO) {
addAddress(mToView, new Address(email, ""));
} else if (requestCode == CONTACT_PICKER_CC) {
@@ -1,24 +1,17 @@
package com.fsck.k9.helper;
import java.io.Serializable;
-import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
public class ContactItem implements Serializable {
private static final long serialVersionUID = 4893328130147843375L;
- private String displayName = null;
- private ArrayList<String> emailAddresses = null;
+ public final String displayName;
+ public final List<String> emailAddresses;
- public String getDisplayName() {
- return displayName;
- }
- public void setDisplayName(String displayName) {
+ public ContactItem(String displayName, List<String> emailAddresses) {
this.displayName = displayName;
- }
- public ArrayList<String> getEmailAddresses() {
- return emailAddresses;
- }
- public void setEmailAddresses(ArrayList<String> emailAddresses) {
- this.emailAddresses = emailAddresses;
+ this.emailAddresses = Collections.unmodifiableList(emailAddresses);
}
}
@@ -175,13 +175,15 @@ protected Contacts(Context context) {
public abstract Intent contactPickerIntent();
/**
- * Given a contact picker intent, returns the primary email address of that
- * contact.
+ * Given a contact picker intent, returns a {@code ContactItem} instance for that contact.
*
- * @param intent The {@link Intent} returned by this contact picker.
- * @return The primary email address of the picked contact.
+ * @param intent
+ * The {@link Intent} returned by the contact picker.
+ *
+ * @return A {@link ContactItem} instance describing the picked contact. Or {@code null} if the
+ * contact doesn't have any email addresses.
*/
- public abstract ContactItem getEmailFromContactPicker(final Intent intent);
+ public abstract ContactItem extractInfoFromContactPickerIntent(final Intent intent);
/**
* Does the device actually have a Contacts application suitable for
@@ -193,45 +193,48 @@ public Intent contactPickerIntent() {
}
@Override
- public ContactItem getEmailFromContactPicker(final Intent data) {
+ public ContactItem extractInfoFromContactPickerIntent(final Intent data) {
Cursor cursor = null;
- Cursor cursor2 = null;
- ContactItem item = new ContactItem();
ArrayList<String> email = new ArrayList<String>();
try {
Uri result = data.getData();
String displayName = null;
- cursor = mContentResolver.query(result, null, null, null, null);
- if (cursor.moveToFirst()) {
- displayName = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
- }
// Get the contact id from the Uri
String id = result.getLastPathSegment();
- cursor2 = mContentResolver.query(Email.CONTENT_URI,
- null, Email.CONTACT_ID + "=?", new String[] { id },
- null);
- if (cursor2 != null) {
- int emailIdx = cursor2.getColumnIndex(Email.DATA);
+ cursor = mContentResolver.query(Email.CONTENT_URI, PROJECTION,
+ Email.CONTACT_ID + "=?", new String[] { id }, null);
+
+ if (cursor != null) {
+ while (cursor.moveToNext()) {
+ String address = cursor.getString(EMAIL_INDEX);
+ if (address != null) {
+ email.add(address);
+ }
- while (cursor2.moveToNext()) {
- email.add(cursor2.getString(emailIdx));
+ if (displayName == null) {
+ displayName = cursor.getString(NAME_INDEX);
+ }
}
+ // Return 'null' if no email addresses have been found
if (email.size() == 0) {
return null;
}
- item.setDisplayName(displayName);
- item.setEmailAddresses(email);
- return item;
+
+ // Use the first email address found as display name
+ if (displayName == null) {
+ displayName = email.get(0);
+ }
+
+ return new ContactItem(displayName, email);
}
} catch (Exception e) {
Log.e(K9.LOG_TAG, "Failed to get email data", e);
} finally {
Utility.closeQuietly(cursor);
- Utility.closeQuietly(cursor2);
}
return null;
@@ -2794,6 +2794,8 @@ public String calculateContentPreview(String text) {
text = text.replaceAll("(?m)^On .*wrote.?$", "");
// Remove a more generic quote header from the preview
text = text.replaceAll("(?m)^.*\\w+:$", "");
+ // Remove horizontal rules.
+ text = text.replaceAll("\\s*([-=_]{30,}+)\\s*", " ");
// URLs in the preview should just be shown as "..." - They're not
// clickable and they usually overwhelm the preview
@@ -2802,6 +2804,9 @@ public String calculateContentPreview(String text) {
text = text.replaceAll("(\\r|\\n)+", " ");
// Collapse whitespace in the preview
text = text.replaceAll("\\s+", " ");
+ // Remove any whitespace at the beginning and end of the string.
+ text = text.trim();
+
if (text.length() <= 512) {
return text;
} else {
@@ -25,6 +25,11 @@
Map<String, TreeMap<Integer, SettingsDescription>> s =
new LinkedHashMap<String, TreeMap<Integer, SettingsDescription>>();
+ /**
+ * When adding new settings here, be sure to increment {@link Settings.VERSION}
+ * and use that for whatever you add here.
+ */
+
s.put("archiveFolderName", Settings.versions(
new V(1, new StringSetting("Archive"))
));
@@ -20,6 +20,11 @@
Map<String, TreeMap<Integer, SettingsDescription>> s =
new LinkedHashMap<String, TreeMap<Integer, SettingsDescription>>();
+ /**
+ * When adding new settings here, be sure to increment {@link Settings.VERSION}
+ * and use that for whatever you add here.
+ */
+
s.put("displayMode", Settings.versions(
new V(1, new EnumSetting(FolderClass.class, FolderClass.NO_CLASS))
));
@@ -26,6 +26,11 @@
Map<String, TreeMap<Integer, SettingsDescription>> s =
new LinkedHashMap<String, TreeMap<Integer, SettingsDescription>>();
+ /**
+ * When adding new settings here, be sure to increment {@link Settings.VERSION}
+ * and use that for whatever you add here.
+ */
+
s.put("animations", Settings.versions(
new V(1, new BooleanSetting(false))
));
@@ -22,6 +22,11 @@
Map<String, TreeMap<Integer, SettingsDescription>> s =
new LinkedHashMap<String, TreeMap<Integer, SettingsDescription>>();
+ /**
+ * When adding new settings here, be sure to increment {@link Settings.VERSION}
+ * and use that for whatever you add here.
+ */
+
s.put("signature", Settings.versions(
new V(1, new SignatureSetting())
));

0 comments on commit 81c9fdc

Please sign in to comment.