diff --git a/res/layout/account_setup_options.xml b/res/layout/account_setup_options.xml index 9f1b9753c..a6e67852b 100644 --- a/res/layout/account_setup_options.xml +++ b/res/layout/account_setup_options.xml @@ -14,6 +14,16 @@ android:id="@+id/account_check_frequency" android:layout_height="wrap_content" android:layout_width="fill_parent" /> + + 60 + + @string/account_setup_options_mail_display_count_10 + @string/account_setup_options_mail_display_count_25 + @string/account_setup_options_mail_display_count_50 + @string/account_setup_options_mail_display_count_100 + + + + 10 + 25 + 50 + 100 + diff --git a/res/values/strings.xml b/res/values/strings.xml index 0afe88c38..4601f1fd8 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -217,6 +217,13 @@ Welcome to K-9 Mail setup. K-9 is an open source email client for Android based Send email from this account by default. Notify me when email arrives. + + Number of emails to display + 10 Messages + 25 Messages + 50 Messages + 100 Messages + Setup could not finish Username or password incorrect.\n(%s) Cannot safely connect to server.\n(%s) @@ -232,6 +239,7 @@ Welcome to K-9 Mail setup. K-9 is an open source email client for Android based Notify in status bar when email arrives Show combined Inbox Email check frequency + Number of emails to display Incoming settings Configure the incoming email server Outgoing settings diff --git a/res/xml/account_settings_preferences.xml b/res/xml/account_settings_preferences.xml index f82f484b2..962a98d19 100644 --- a/res/xml/account_settings_preferences.xml +++ b/res/xml/account_settings_preferences.xml @@ -33,6 +33,12 @@ android:entryValues="@array/account_settings_check_frequency_values" android:dialogTitle="@string/account_settings_mail_check_frequency_label" /> + displayCountsAdapter = new ArrayAdapter(this, + android.R.layout.simple_spinner_item, displayCounts); + displayCountsAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + mDisplayCountView.setAdapter(displayCountsAdapter); + mAccount = (Account)getIntent().getSerializableExtra(EXTRA_ACCOUNT); boolean makeDefault = getIntent().getBooleanExtra(EXTRA_MAKE_DEFAULT, false); @@ -77,6 +96,8 @@ public class AccountSetupOptions extends Activity implements OnClickListener { mNotifyView.setChecked(mAccount.isNotifyNewMail()); SpinnerOption.setSpinnerOptionValue(mCheckFrequencyView, mAccount .getAutomaticCheckIntervalMinutes()); + SpinnerOption.setSpinnerOptionValue(mDisplayCountView, mAccount + .getDisplayCount()); } private void onDone() { @@ -84,6 +105,8 @@ public class AccountSetupOptions extends Activity implements OnClickListener { mAccount.setNotifyNewMail(mNotifyView.isChecked()); mAccount.setAutomaticCheckIntervalMinutes((Integer)((SpinnerOption)mCheckFrequencyView .getSelectedItem()).value); + mAccount.setDisplayCount((Integer)((SpinnerOption)mDisplayCountView + .getSelectedItem()).value); mAccount.save(Preferences.getPreferences(this)); if (mDefaultView.isChecked()) { Preferences.getPreferences(this).setDefaultAccount(mAccount); diff --git a/src/com/fsck/k9/k9.java b/src/com/fsck/k9/k9.java index 6a6ad46ab..84bec0af7 100644 --- a/src/com/fsck/k9/k9.java +++ b/src/com/fsck/k9/k9.java @@ -85,12 +85,12 @@ public class k9 extends Application { * on each new folder and can be incremented with "Load more messages..." by the * VISIBLE_LIMIT_INCREMENT */ - public static final int DEFAULT_VISIBLE_LIMIT = 100; + public static int DEFAULT_VISIBLE_LIMIT = 25; /** * Number of additioanl messages to load when a user selectes "Load more messages..." */ - public static final int VISIBLE_LIMIT_INCREMENT = 100; + public static int VISIBLE_LIMIT_INCREMENT = 25; /** * The maximum size of an attachment we're willing to download (either View or Save) diff --git a/src/com/fsck/k9/mail/Folder.java b/src/com/fsck/k9/mail/Folder.java index 2f951e336..88d599a52 100644 --- a/src/com/fsck/k9/mail/Folder.java +++ b/src/com/fsck/k9/mail/Folder.java @@ -41,6 +41,14 @@ public abstract class Folder { public abstract boolean create(FolderType type) throws MessagingException; + /** + * Create a new folder with a specified display limit. Not abstract to allow + * remote folders to not override or worry about this call if they don't care to. + */ + public boolean create(FolderType type, int displayLimit) throws MessagingException { + return create(type); + } + public abstract boolean exists() throws MessagingException; /** diff --git a/src/com/fsck/k9/mail/store/LocalStore.java b/src/com/fsck/k9/mail/store/LocalStore.java index 5075c53d0..1676cc622 100644 --- a/src/com/fsck/k9/mail/store/LocalStore.java +++ b/src/com/fsck/k9/mail/store/LocalStore.java @@ -242,8 +242,12 @@ public class LocalStore extends Store { } public void resetVisibleLimits() { + resetVisibleLimits(k9.DEFAULT_VISIBLE_LIMIT); + } + + public void resetVisibleLimits(int visibleLimit) { ContentValues cv = new ContentValues(); - cv.put("visible_limit", Integer.toString(k9.DEFAULT_VISIBLE_LIMIT)); + cv.put("visible_limit", Integer.toString(visibleLimit)); mDb.update("folders", cv, null, null); } @@ -405,6 +409,17 @@ public class LocalStore extends Store { return true; } + public boolean create(FolderType type, int visibleLimit) throws MessagingException { + if (exists()) { + throw new MessagingException("Folder " + mName + " already exists."); + } + mDb.execSQL("INSERT INTO folders (name, visible_limit) VALUES (?, ?)", new Object[] { + mName, + visibleLimit + }); + return true; + } + @Override public void close(boolean expunge) throws MessagingException { if (expunge) { diff --git a/src/com/fsck/k9/mail/store/WebDavStore.java b/src/com/fsck/k9/mail/store/WebDavStore.java index b90dae372..39ba2b3c5 100644 --- a/src/com/fsck/k9/mail/store/WebDavStore.java +++ b/src/com/fsck/k9/mail/store/WebDavStore.java @@ -774,24 +774,25 @@ public class WebDavStore extends Store { public Message[] getMessages(String[] uids, MessageRetrievalListener listener) throws MessagingException { ArrayList messageList = new ArrayList(); Message[] messages; - - if (uids == null) { - messages = getMessages(0, k9.DEFAULT_VISIBLE_LIMIT, listener); - } else { - for (int i = 0, count = uids.length; i < count; i++) { - if (listener != null) { - listener.messageStarted(uids[i], i, count); - } - WebDavMessage message = new WebDavMessage(uids[i], this); - messageList.add(message); - - if (listener != null) { - listener.messageFinished(message, i, count); - } - } - messages = messageList.toArray(new Message[] {}); + if (uids == null || + uids.length == 0) { + return messageList.toArray(new Message[] {}); } + + for (int i = 0, count = uids.length; i < count; i++) { + if (listener != null) { + listener.messageStarted(uids[i], i, count); + } + + WebDavMessage message = new WebDavMessage(uids[i], this); + messageList.add(message); + + if (listener != null) { + listener.messageFinished(message, i, count); + } + } + messages = messageList.toArray(new Message[] {}); return messages; }