class RubyXL::DocumentPropertiesFile

def add_part_title(name)

def add_part_title(name)
  titles_of_parts.vt_vector.vt_lpstr << RubyXL::StringNode.new(:value => name)
end

def add_parts_count(name, count)

def add_parts_count(name, count)
  return unless count > 0
  heading_pairs.vt_vector.vt_variant << RubyXL::Variant.new(:vt_lpstr => RubyXL::StringNode.new(:value => name))
  heading_pairs.vt_vector.vt_variant << RubyXL::Variant.new(:vt_i4 => RubyXL::IntegerNode.new(:value => count))
end

def before_write_xml

def before_write_xml
  workbook = root.workbook
  self.heading_pairs   = RubyXL::VectorValue.new(:vt_vector => RubyXL::Vector.new(:base_type => 'variant'))
  self.titles_of_parts = RubyXL::VectorValue.new(:vt_vector => RubyXL::Vector.new(:base_type => 'lpstr'))
  worksheets = chartsheets = 0
  workbook.worksheets.each { |sheet|
    add_part_title(sheet.sheet_name)
    case sheet
    when RubyXL::Worksheet  then worksheets += 1
    when RubyXL::Chartsheet then chartsheets += 1
    end
  }
  add_parts_count('Worksheets', worksheets) if worksheets > 0
  add_parts_count('Charts', chartsheets) if chartsheets > 0
  if workbook.defined_names then
    add_parts_count('Named Ranges', workbook.defined_names.size)
    workbook.defined_names.each { |defined_name| add_part_title(defined_name.name) }
  end
  true
end

def xlsx_path

def xlsx_path
  ROOT.join('docProps', 'app.xml')
end