File indexing completed on 2024-04-28 15:39:55

0001 // SPDX-FileCopyrightText: 2009 2012 Jesper K. Pedersen <blackie@kde.org>
0002 //
0003 // SPDX-License-Identifier: LicenseRef-KDE-Accepted-GPL
0004 
0005 // krazy:skip
0006 /**
0007   \namespace DB
0008   \brief The core database classes.
0009 
0010   <h2>The Database</h2>
0011   The database is abstracted using the class \ref ImageDB. This interface
0012   is subclasses by \ref XMLDB::Database. You can
0013   get to the global instance of the running database using \ref
0014   ImageDB::instance. The reason for this abstractioin was that for the longest time we also had a SQLDB::Database subclass.
0015 
0016 
0017   <h2>Image information</h2>
0018   All information about an image is stored in the class \ref ImageInfo
0019   (file name, category items for the image, its size etc etc). This class
0020   is rather heavy, and in the early days of KPA lots of methods was given
0021   information about an image or a set of images. To avoid copying the
0022   ImageInfo all the time, or to avoid handing pointers around, the type
0023   \ref ImageInfoPtr was introduced. This is a smart pointer, which results
0024   in \ref ImageInfo's are send around as pointers behind the
0025   screen, without the drawback of pointers.
0026 
0027   <h2>Searching/Browsing</h2>
0028   When the user searches or browses, a \ref ImageSearchInfo instance is
0029   built with information about the current search. This class contains
0030   information about all the parts of the search, like date range, category
0031   items to match etc.
0032 
0033   When the search is to happen, the information about categories are
0034   compiled into a structure that can take care of searching for the
0035   sub component of the category search (A category search may look like
0036   "friends &! Joe".
0037 
0038   The structure consist of these classes:
0039   \li \ref CategoryMatcher - This is the base class for the hierachy of
0040   items.
0041   \li  \ref SimpleCategoryMatcher - Base class for \ref ValueCategoryMatcher.
0042   \li \ref ValueCategoryMatcher - represents an item from the search
0043   ("Joe" or "friend" in the above example)
0044   \li \ref NoTagCategoryMatcher - represents a "No other" item with no other tags (i.e. "None")
0045   \li \ref ExactCategoryMatcher - represents a "No other" item on top of other tags
0046   \li \ref ContainerCategoryMatcher - Base class for \ref
0047   AndCategoryMatcher, \ref NegationCategoryMatcher and \ref OrCategoryMatcher
0048   \li \ref AndCategoryMatcher - represents the components of an "and" expression ("Jesper & Jan & No Other")
0049   \li \ref NegationCategoryMatcher - represents the "!" in "! Joe"
0050   \li \ref OrCategoryMatcher - represents the components of an "or" expression.
0051 
0052 
0053   <h2>Image Dates</h2>
0054   KPhotoAlbum has support for image dates, which are not know with an exact precission -
0055   this might be the case for a images taken with a non-digital
0056   camera. Therefore all dates in KPhotoAlbum are represented using the
0057   class \ref ImageDate, which has a lower and an upper date for the range.
0058   In KPhotoAlbum lingo, such an inexact date is called a fuzzy date.
0059 
0060   The two classes \ref ImageDateCollection and \ref ImageCount work together to support the date bar in its counting of images.
0061   See \ref XMLDB::XMLImageDateCollection::count for a detailed description of this.
0062 
0063   <h2>Undocumented classes</h2>
0064 
0065   \li CategoryCollection
0066   \li Category
0067   \li CategoryItem
0068   \li FileInfo
0069   \li GroupCounter
0070   \li ImageInfoList
0071   \li MD5
0072   \li MD5Map
0073   \li MediaCount
0074   \li NewImageFinder
0075 **/
0076 // vi:expandtab:tabstop=4 shiftwidth=4: