Index: /home/workspace/drupalhispano/sites/all/modules/l10n_server/l10n_community/l10n_community.module
===================================================================
--- /home/workspace/drupalhispano/sites/all/modules/l10n_server/l10n_community/l10n_community.module	(revision 224)
+++ /home/workspace/drupalhispano/sites/all/modules/l10n_server/l10n_community/l10n_community.module	(working copy)
@@ -43,7 +43,12 @@
 /**
  * Translated (and approved) strings only.
  */
-define('L10N_STATUS_TRANSLATED', 3); 
+define('L10N_STATUS_TRANSLATED', 4);
+
+/**
+ * Doesn't have suggested translations.
+ */
+define('L10N_STATUS_NO_SUGGESTION', 8);
 
 // = Core hooks ================================================================
 
Index: /home/workspace/drupalhispano/sites/all/modules/l10n_server/l10n_community/translate.inc
===================================================================
--- /home/workspace/drupalhispano/sites/all/modules/l10n_server/l10n_community/translate.inc	(revision 224)
+++ /home/workspace/drupalhispano/sites/all/modules/l10n_server/l10n_community/translate.inc	(working copy)
@@ -79,7 +79,7 @@
 /**
  * Translate form filter.
  */
-function l10n_community_filter_form($project = NULL, $status = L10N_STATUS_ALL, $release = 'all', $search  = '') {
+function l10n_community_filter_form($project = NULL, $status = L10N_STATUS_ALL,  $release = 'all', $search  = '') {
   $projects = l10n_community_get_projects();
 
   $status_options = array(
@@ -85,8 +85,12 @@
   $status_options = array(
     L10N_STATUS_ALL            => t('All'),
     L10N_STATUS_UNTRANSLATED   => t('Untranslated'),
+    L10N_STATUS_TRANSLATED     => t('Translated'),
+  );
+  $suggestion_options = array(
+    L10N_STATUS_ALL            => t('--'),
     L10N_STATUS_HAS_SUGGESTION => t('Has suggestion'),
-    L10N_STATUS_TRANSLATED     => t('Translated'),
+    L10N_STATUS_NO_SUGGESTION => t('No suggestion'),
   );
   $form['filters'] = array(
     '#title' => t('Show only strings where'),
@@ -138,12 +142,17 @@
       '#default_value' => isset($release) ? $release : 'all',
     );
   }
-  
-  $form['filters']['status'] = array(
+  $form['filters']['status'] = array('#tree' => TRUE);
+  $form['filters']['status']['translation'] = array(
     '#title' => t('Status'),
     '#type' => 'select',
     '#options' => $status_options,
-    '#default_value' => $status,
+    '#default_value' => $status & (L10N_STATUS_TRANSLATED | L10N_STATUS_UNTRANSLATED),
+  );
+  $form['filters']['status']['suggestion'] = array(
+    '#type' => 'select',
+    '#options' => $suggestion_options,
+    '#default_value' => $status & (L10N_STATUS_HAS_SUGGESTION | L10N_STATUS_NO_SUGGESTION),
   );
   $form['filters']['search'] = array(
     '#title' => t('Contains'),
@@ -199,7 +208,8 @@
       }
     }
     if (!empty($form['status'])) {
-      $_SESSION['l10n_community']['status'] = intval($form['status']);
+      // Combined status field, bitwise OR
+      $_SESSION['l10n_community']['status'] = intval($form['status']['translation']) | intval($form['status']['suggestion']);
     }
     if (!empty($form['search'])) {
       $_SESSION['l10n_community']['search'] = $form['search'];
@@ -607,8 +617,8 @@
   }
     
   // Restriction based on string status.
-  switch ($status) {
-    case L10N_STATUS_UNTRANSLATED:
+  $status_sql = '';
+  if ($status & L10N_STATUS_UNTRANSLATED) {
       // We are doing a LEFT JOIN especially to look into the case, when we have nothing 
       // to match in the translation table, but we still have the string. (We get our 
       // records in the result set in this case). The translation field is empty or
@@ -614,16 +624,13 @@
       // records in the result set in this case). The translation field is empty or
       // NULL in this case, as we are not allowing NULL there and only saving an empty
       // translation if there are suggestions but no translation yet.
-      $status_sql = " AND (t.translation is NULL OR t.translation = '')";
+      $status_sql .= " AND (t.translation is NULL OR t.translation = '')";
+  } elseif($status & L10N_STATUS_TRANSLATED) {
+      $status_sql .= " AND t.translation != ''";
       $sql .= $status_sql;
       $sql_count .= $status_sql;
-      break;
-    case L10N_STATUS_TRANSLATED:
-      $status_sql = " AND t.translation != ''";
-      $sql .= $status_sql;
-      $sql_count .= $status_sql;
-      break;
-    case L10N_STATUS_HAS_SUGGESTION:
+  }
+  if ($status & L10N_STATUS_HAS_SUGGESTION) {
       // Note that we are not searching in the suggestions themselfs, only
       // the source and active translation values. The user interface underlines
       // that we are  looking for strings which have suggestions, not the
@@ -628,15 +635,12 @@
       // the source and active translation values. The user interface underlines
       // that we are  looking for strings which have suggestions, not the
       // suggestions themselfs.
-      $status_sql = " AND t.has_suggestion = 1";
-      $sql .= $status_sql;
-      $sql_count .= $status_sql;
-      break;
-    case L10N_STATUS_ALL:
-    default:
-      // Leave query alone on this case.
-      break;
+      $status_sql .= " AND t.has_suggestion = 1";
+  } elseif ($status & L10N_STATUS_NO_SUGGESTION) {
+      $status_sql .= " AND t.has_suggestion = 0";
   }
+  $sql .= $status_sql;
+  $sql_count .= $status_sql;
   
   // Morph "WHERE AND" to "WHERE" and remove closing "WHERE". The first appears
   // if there was no project filtering but further filtering was made. The
