diff -urN --exclude '*.svn*' LogicMail/LogicMail-1.0/LogicMail/src/org/logicprobe/LogicMail/conf/ImapConfig.java workspace/LogicMail/src/org/logicprobe/LogicMail/conf/ImapConfig.java
--- LogicMail/LogicMail-1.0/LogicMail/src/org/logicprobe/LogicMail/conf/ImapConfig.java	2009-03-06 00:38:21.281250000 -0800
+++ workspace/LogicMail/src/org/logicprobe/LogicMail/conf/ImapConfig.java	2009-03-14 21:36:23.015625000 -0700
@@ -40,6 +44,7 @@
 public class ImapConfig extends AccountConfig {
     private String sentFolder;
     private String folderPrefix;
+    private boolean onlySubscribedFolders;
     
     public ImapConfig() {
         super();
@@ -54,6 +59,7 @@
         setServerPort(143);
         sentFolder = null;
         folderPrefix = null;
+        onlySubscribedFolders = false;
     }    
 
     public String toString() {
@@ -77,6 +83,14 @@
         this.folderPrefix = folderPrefix;
     }
 
+    public boolean getOnlySubscribedFolders() {
+    	return onlySubscribedFolders;
+    }
+
+    public void setOnlySubscribedFolders(boolean value) {
+    	this.onlySubscribedFolders = value;
+    }
+
     public void writeConfigItems(SerializableHashtable table) {
         super.writeConfigItems(table);
         if(sentFolder != null) {
@@ -92,6 +106,8 @@
         else {
             table.put("account_imap_folderPrefix", "");
         }
+
+        table.put("account_imap_onlySubscribedFolders", new Integer(onlySubscribedFolders ? 1 : 0));
     }
     
     public void readConfigItems(SerializableHashtable table) {
@@ -113,5 +129,10 @@
                 folderPrefix = null;
             }
         }
+
+        value = table.get("account_imap_onlySubscribedFolders");
+        if(value != null && value instanceof Integer) {
+            onlySubscribedFolders = (((Integer)value).intValue() == 1);
+        }
     }
 }
diff -urN --exclude '*.svn*' LogicMail/LogicMail-1.0/LogicMail/src/org/logicprobe/LogicMail/mail/imap/ImapClient.java workspace/LogicMail/src/org/logicprobe/LogicMail/mail/imap/ImapClient.java
--- LogicMail/LogicMail-1.0/LogicMail/src/org/logicprobe/LogicMail/mail/imap/ImapClient.java	2009-03-06 00:38:20.671875000 -0800
+++ workspace/LogicMail/src/org/logicprobe/LogicMail/mail/imap/ImapClient.java	2009-03-14 22:00:48.140625000 -0700
@@ -59,6 +63,7 @@
     private ImapProtocol imapProtocol;
     private String username;
     private String password;
+    private boolean onlySubscribedFolders;
     private boolean openStarted;
 
     /**
@@ -95,6 +100,7 @@
         imapProtocol = new ImapProtocol(connection);
         username = acctCfg.getServerUser();
         password = acctCfg.getServerPass();
+        onlySubscribedFolders = acctCfg.getOnlySubscribedFolders();
         openStarted = false;
     }
 
@@ -134,7 +140,7 @@
             // so the folder delim will be aquired differently.
             if(nsPersonal == null) {
                 // Discover folder delim
-                Vector resp = imapProtocol.executeList("", "");
+                Vector resp = imapProtocol.executeList("", "", false);
                 if(resp.size() > 0) {
                     folderDelim = ((ImapProtocol.ListResponse)resp.elementAt(0)).delim;
                 }
@@ -237,11 +243,12 @@
 
     private void getFolderTreeImpl(FolderTreeItem baseFolder, int depth, boolean childrenExtension) throws IOException, MailException {
         Vector respList;
+
         if(depth == 0) {
-            respList = imapProtocol.executeList(baseFolder.getPath(), "%");
+            respList = imapProtocol.executeList(baseFolder.getPath(), "%", onlySubscribedFolders);
         }
         else {
-            respList = imapProtocol.executeList(baseFolder.getPath() + baseFolder.getDelim(), "%");
+            respList = imapProtocol.executeList(baseFolder.getPath() + baseFolder.getDelim(), "%", onlySubscribedFolders);
         }
 
         int size = respList.size();
diff -urN --exclude '*.svn*' LogicMail/LogicMail-1.0/LogicMail/src/org/logicprobe/LogicMail/mail/imap/ImapProtocol.java workspace/LogicMail/src/org/logicprobe/LogicMail/mail/imap/ImapProtocol.java
--- LogicMail/LogicMail-1.0/LogicMail/src/org/logicprobe/LogicMail/mail/imap/ImapProtocol.java	2009-03-06 00:38:20.671875000 -0800
+++ workspace/LogicMail/src/org/logicprobe/LogicMail/mail/imap/ImapProtocol.java	2009-03-14 22:03:31.765625000 -0700
@@ -771,7 +771,7 @@
      * @param mboxName Mailbox name or wildcards (i.e. "%")
      * @return Vector of ListResponse objects
      */
-    public Vector executeList(String refName, String mboxName) throws IOException, MailException {
+    public Vector executeList(String refName, String mboxName, boolean onlySubscribedFolders) throws IOException, MailException {
         if(EventLogger.getMinimumLevel() >= EventLogger.DEBUG_INFO) {
             EventLogger.logEvent(
             AppInfo.GUID,
@@ -780,8 +780,12 @@
         }
         
         String[] results;
-        results = execute("LIST", "\""+StringParser.addEscapedChars(refName)+"\" \""+StringParser.addEscapedChars(mboxName)+"\"");
-        
+        String cmd = "LIST";
+        if (onlySubscribedFolders) {
+        	cmd = "LSUB";
+    	}
+        results = execute(cmd, "\""+StringParser.addEscapedChars(refName)+"\" \""+StringParser.addEscapedChars(mboxName)+"\"");
+
         Vector retVec = new Vector(results.length);
         ListResponse response;
         String temp;
diff -urN --exclude '*.svn*' LogicMail/LogicMail-1.0/LogicMail/src/org/logicprobe/LogicMail/ui/AcctCfgScreen.java workspace/LogicMail/src/org/logicprobe/LogicMail/ui/AcctCfgScreen.java
--- LogicMail/LogicMail-1.0/LogicMail/src/org/logicprobe/LogicMail/ui/AcctCfgScreen.java	2009-03-06 00:38:24.375000000 -0800
+++ workspace/LogicMail/src/org/logicprobe/LogicMail/ui/AcctCfgScreen.java	2009-03-14 17:39:02.312500000 -0700
@@ -68,6 +68,7 @@
     private ObjectChoiceField outgoingServerField;
     private ObjectChoiceField sentFolderChoiceField;
     private BasicEditField folderPrefixField;
+    private CheckboxField onlySubscribedFoldersField;
     private ButtonField saveButton;
     
     private boolean acctSaved;
@@ -214,6 +215,9 @@
             
             folderPrefixField = new BasicEditField("Folder prefix: ", imapConfig.getFolderPrefix());
             add(folderPrefixField);
+
+            onlySubscribedFoldersField = new CheckboxField("Subscribed folders only", imapConfig.getOnlySubscribedFolders());
+            add(onlySubscribedFoldersField);
         }
         
         add(new SeparatorField());
@@ -346,6 +350,8 @@
             else {
                 imapConfig.setFolderPrefix(folderPrefix);
             }
+
+            imapConfig.setOnlySubscribedFolders(onlySubscribedFoldersField.getChecked());
         }
         
         acctSaved = true;

