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: