1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_UTILITY_MEDIA_GALLERIES_PICASA_ALBUMS_INDEXER_H_ 6#define CHROME_UTILITY_MEDIA_GALLERIES_PICASA_ALBUMS_INDEXER_H_ 7 8#include <map> 9#include <set> 10#include <string> 11 12#include "base/files/file_path.h" 13#include "chrome/common/media_galleries/picasa_types.h" 14 15namespace picasa { 16 17// Parses a series of INI files and builds up the set of files contained within 18// the albums passed in through |album_uids|. 19// 20// Each INI file only describes the images contained within a single directory. 21// To build the contents of all the albums, we read in all the INI files 22// in all the Picasa folders. 23// 24// The INI albums also contain ".album*" sections describing the albums that 25// have pictures in the same directory as the INI. However, we use the PMP 26// database as the authoritative source on Album metadata, so we ignore those 27// sections. The PMP derived |album_uids| are passed in by the constructor. 28// 29// Example INI File: 30// 31// [.album:e66fb059001aabcc69b262b7009fad90] 32// name=CustomAlbum1 33// token=e66fb059001aabcc69b262b7009fad90 34// date=2013-03-15T14:53:21-07:00 35// [InBoth.jpg] 36// albums=e66fb059001aabcc69b262b7009fad90,18cb2df48aaa98e1c276b45cfcd81c95 37// [.album:18cb2df48aaa98e1c276b45cfcd81c95] 38// name=CustomAlbum1 39// token=18cb2df48aaa98e1c276b45cfcd81c95 40// date=2013-04-01T16:37:34-07:00 41// [InFirst.jpg] 42// albums=e66fb059001aabcc69b262b7009fad90 43// [InSecond.jpg] 44// albums=18cb2df48aaa98e1c276b45cfcd81c95 45class PicasaAlbumsIndexer { 46 public: 47 explicit PicasaAlbumsIndexer(const AlbumUIDSet& album_uids); 48 ~PicasaAlbumsIndexer(); 49 50 // This method should be called once for each Folder in the PMP database. 51 void ParseFolderINI( 52 const std::vector<picasa::FolderINIContents>& folders_inis); 53 54 const AlbumImagesMap& albums_images() const { return albums_images_; } 55 56 private: 57 AlbumImagesMap albums_images_; 58 59 DISALLOW_COPY_AND_ASSIGN(PicasaAlbumsIndexer); 60}; 61 62} // namespace picasa 63 64#endif // CHROME_UTILITY_MEDIA_GALLERIES_PICASA_ALBUMS_INDEXER_H_ 65