diff --git a/app/helpers/queries_helper.rb b/app/helpers/queries_helper.rb
index 7869328551e5a99df33397aa57784ce34bd6b12a..6e5511f08ef968569b78523f313acaef31831f83 100644
--- a/app/helpers/queries_helper.rb
+++ b/app/helpers/queries_helper.rb
@@ -22,24 +22,25 @@ module QueriesHelper
   end
   
   def column_header(column)
-    if column.sortable
-      sort_header_tag(column.sortable, :caption => l("field_#{column.name}"))
-    else
-      content_tag('th', l("field_#{column.name}"))
-    end
+    column.sortable ? sort_header_tag(column.sortable, :caption => column.caption) : content_tag('th', column.caption)
   end
   
   def column_content(column, issue)
-    value = issue.send(column.name)
-    if value.is_a?(Date)
-      format_date(value)
-    elsif value.is_a?(Time)
-      format_time(value)
-    elsif column.name == :subject
-      ((@project.nil? || @project != issue.project) ? "#{issue.project.name} - " : '') +
-        link_to(h(value), :controller => 'issues', :action => 'show', :id => issue)
+    if column.is_a?(QueryCustomFieldColumn)
+      cv = issue.custom_values.detect {|v| v.custom_field_id == column.custom_field.id}
+      show_value(cv)
     else
-      h(value)
+      value = issue.send(column.name)
+      if value.is_a?(Date)
+        format_date(value)
+      elsif value.is_a?(Time)
+        format_time(value)
+      elsif column.name == :subject
+        ((@project.nil? || @project != issue.project) ? "#{issue.project.name} - " : '') +
+          link_to(h(value), :controller => 'issues', :action => 'show', :id => issue)
+      else
+        h(value)
+      end
     end
   end
 end
diff --git a/app/models/query.rb b/app/models/query.rb
index db890652583420ca36df56319a27a38be6c25584..6e8654567902509b07d68f1a09a66961d9f7c46e 100644
--- a/app/models/query.rb
+++ b/app/models/query.rb
@@ -17,13 +17,33 @@
 
 class QueryColumn  
   attr_accessor :name, :sortable
+  include GLoc
   
   def initialize(name, options={})
     self.name = name
     self.sortable = options[:sortable]
   end
   
-  def default?; default end
+  def caption
+    l("field_#{name}")
+  end
+end
+
+class QueryCustomFieldColumn < QueryColumn
+
+  def initialize(custom_field)
+    self.name = "cf_#{custom_field.id}".to_sym
+    self.sortable = false
+    @cf = custom_field
+  end
+  
+  def caption
+    @cf.name
+  end
+  
+  def custom_field
+    @cf
+  end
 end
 
 class Query < ActiveRecord::Base
@@ -203,7 +223,12 @@ class Query < ActiveRecord::Base
   end
 
   def available_columns
-    cols = Query.available_columns
+    return @available_columns if @available_columns
+    @available_columns = Query.available_columns
+    @available_columns += (project ? 
+                            project.custom_fields :
+                            IssueCustomField.find(:all, :conditions => {:is_for_all => true})
+                           ).collect {|cf| QueryCustomFieldColumn.new(cf) }      
   end
   
   def columns
diff --git a/app/views/queries/_columns.rhtml b/app/views/queries/_columns.rhtml
index b03a3277d6b5ef8d7743f744273610b8e3725c05..8d3da7f6a4b2811ed28ecd4efddb933989854213 100644
--- a/app/views/queries/_columns.rhtml
+++ b/app/views/queries/_columns.rhtml
@@ -5,7 +5,7 @@
 <table margin=0>
 	<tr>
 		<td><%= select_tag 'available_columns',
-		          options_for_select((query.available_columns - query.columns).collect {|column| [l("field_#{column.name}"), column.name]}),
+		          options_for_select((query.available_columns - query.columns).collect {|column| [column.caption, column.name]}),
 		          :multiple => true, :size => 10, :style => "width:150px" %>
 		</td>
 		<td align="center" valign="middle">
@@ -15,7 +15,7 @@
 			 onclick="moveOptions(this.form.selected_columns, this.form.available_columns);" />
 		</td>
 		<td><%= select_tag 'query[column_names][]',
-		          options_for_select(@query.columns.collect {|column| [l("field_#{column.name}"), column.name]}),
+		          options_for_select(@query.columns.collect {|column| [column.caption, column.name]}),
 		          :id => 'selected_columns', :multiple => true, :size => 10, :style => "width:150px" %>
 		</td>
 	</tr>
diff --git a/app/views/settings/edit.rhtml b/app/views/settings/edit.rhtml
index d3f994d4f83ef5edc8aa32ee06a37e954769881b..b08b707bfe1878909f1333b193e06322dc791308 100644
--- a/app/views/settings/edit.rhtml
+++ b/app/views/settings/edit.rhtml
@@ -61,9 +61,9 @@
 
 <fieldset class="box"><legend><%= l(:setting_issue_list_default_columns) %></legend>
 <%= hidden_field_tag 'settings[issue_list_default_columns][]', '' %>
-<p><% Query.available_columns.each do |column| %>
+<p><% Query.new.available_columns.each do |column| %>
   <label><%= check_box_tag 'settings[issue_list_default_columns][]', column.name, Setting.issue_list_default_columns.include?(column.name.to_s) %>
-  <%= l("field_#{column.name}") %></label>
+  <%= column.caption %></label>
 <% end %></p>
 </fieldset>