MythTV  master
imagemanager.h
Go to the documentation of this file.
1 
9 /* Myth uses two Gallery instances;
10  *
11  * One runs on the BE to manage the 'Photographs' Storage Group. The (permanent)
12  * database table is synchronised to SG files, thumbnails are generated and stored
13  * in the Temp SG, and BE messages for these images are handled.
14  *
15  * A separate instance runs on each FE to manage local/removeable media. This uses
16  * a temporary, memory Db table that is synchronised to images on USB/CDs etc,
17  * as they are mounted. Thumbnails are generated/stored on the FE and operations on
18  * these images are handled locally. The Db table and all thumbnails are removed
19  * when the FE exits.
20  *
21  * The UI integrates images/functions from both instances seamlessly.
22  *
23  * Commonality is provided by using an adapter layer for database and filesystem access.
24  * Functionality is segregated into local classes, which are layered on an
25  * adapter to assemble singletons for a BE manager & FE manager - the only
26  * elements intended for external use.
27  *
28  * Device manager
29  * |
30  * Common Adapter
31  * / \
32  * BE adapter FE adapter
33  * | Common Db API |
34  * | / \ |
35  * BE Db functions FE Db functions
36  * | Common Handler |
37  * | / \ |
38  * BE manager UI Db API
39  * |
40  * FE manager
41  *
42  * Implemented using templates rather than polymorphism for speed/efficiency.
43  */
44 
45 #ifndef IMAGEMANAGER_H
46 #define IMAGEMANAGER_H
47 
48 #include <utility>
49 
50 // Qt headers
51 #include <QTemporaryDir>
52 
53 // MythTV headers
55 #include "libmythbase/mythdirs.h"
57 
58 #include "imagescanner.h"
59 #include "imagemetadata.h"
60 
61 
62 // Builtin storage groups as per storagegroup.cpp
63 static constexpr const char* IMAGE_STORAGE_GROUP { "Photographs" };
64 static constexpr const char* THUMBNAIL_STORAGE_GROUP { "Temp" };
65 
66 // Filesystem dir within config dir used by TEMP SG
67 static constexpr const char* TEMP_SUBDIR { "tmp" };
68 // Filesystem dir within tmp config dir where thumbnails reside
69 static constexpr const char* THUMBNAIL_SUBDIR { "Images" };
70 
71 static constexpr int DEVICE_INVALID { -1 };
72 
73 class MythMediaDevice;
74 class MythMediaEvent;
75 
79  kPicOnly = 1,
81 };
82 
83 class Device;
84 
95 {
96 public:
97  QStringList CloseDevices(int devId, const QString &action);
98  QString DeviceMount(int devId) const;
99  QString DeviceName(int devId) const;
100  int DeviceCount() const { return m_devices.size(); }
101  QString ThumbDir(int fs) const;
102 
103 protected:
104  int OpenDevice(const QString &name, const QString &mount,
105  MythMediaDevice *media = nullptr,
106  QTemporaryDir *dir = nullptr);
107 
108  int LocateMount(const QString &mount) const;
109  StringMap GetDeviceDirs() const;
110  QList<int> GetAbsentees();
111 
112  DeviceManager() = default;
113  ~DeviceManager();
114 
115 private:
116  using DeviceMap = QMap<int, Device*>;
117 
120 };
121 
122 
125 {
126 public:
127  static QStringList SupportedImages();
128 
129  static QStringList SupportedVideos();
130 
132  static QString ConstructPath(const QString &path, const QString &name)
133  { return path.isEmpty() ? name : path + "/" + name; }
134 
136  static QString BaseNameOf(const QString &path)
137  { QString result = path.section('/', -1); return result.isNull() ? "" : result; }
138 
140  static QString PathOf(const QString &path)
141  { QString result = path.section('/', 0, -2); return result.isNull() ? "" : result; }
142 
143  static QString FormatSize(int sizeKib)
144  { return (sizeKib < 10000) ? QString("%L1 KiB").arg(sizeKib)
145  : QString("%L1 MiB").arg(sizeKib / 1024.0, 0, 'f', 1); }
146 
148  static QString GetAbsThumbPath(const QString &devPath, const QString &path)
149  {
150  QString dirFmt = QString("%1/") % TEMP_SUBDIR % "/%2/%3";
151  return dirFmt.arg(GetConfDir(), devPath, path);
152  }
153 
155  static QString ThumbPath(const ImageItem &im)
156  { return im.m_type != kVideoFile ? im.m_filePath : im.m_filePath + ".jpg"; }
157 
165  QDir GetImageFilters() const { return m_dirFilter; }
166 
168  ImageNodeType GetImageType(const QString &ext) const
169  { return m_imageFileExt.contains(ext)
170  ? kImageFile
171  : m_videoFileExt.contains(ext) ? kVideoFile : kUnknown; }
172 protected:
174  virtual ~ImageAdapterBase() = default;
175 
176 private:
180  QStringList m_imageFileExt;
182  QStringList m_videoFileExt;
183 };
184 
185 
193 {
194 public:
195  ImageAdapterLocal() = default;
196 
197  ImageItem *CreateItem(const QFileInfo &fi, int parentId, int devId,
198  const QString &base) const;
199 
201  StringMap GetScanDirs() const { return GetDeviceDirs(); }
202 
204  static QString GetAbsFilePath(const ImagePtrK &im)
205  { return im->m_filePath; }
206 
208  static QString MakeFileUrl(const QString &path) { return path; }
209 
211  static QString MakeThumbUrl(const QString &devPath, const QString &path = "")
212  { return GetAbsThumbPath(devPath, path); }
213 
214  static void Notify(const QString &mesg, const QStringList &extra) ;
215 
216 protected:
217  // Adapter functions used by Database for local images. Negate ids in & out
218  static int ImageId(int id) { return ImageItem::ToLocalId(id); }
219  static QString ImageId(const QString &id) { return ImageItem::ToLocalId(id); }
220  static int DbId(int id) { return ImageItem::ToDbId(id); }
221  static QString DbIds(const QString &ids) { return ImageItem::ToDbId(ids); }
222 };
223 
224 
231 {
232 public:
234  m_hostname(gCoreContext->GetMasterHostName()),
235  m_hostport(MythCoreContext::GetMasterServerPort()),
237 
238  ImageItem *CreateItem(const QFileInfo &fi, int parentId, int devId,
239  const QString &base) const;
240  StringMap GetScanDirs() const;
241  QString GetAbsFilePath(const ImagePtrK &im) const;
242 
244  QString MakeFileUrl(const QString &path) const
247 
249  QString MakeThumbUrl(const QString &devPath, const QString &path = "") const
251  devPath + "/" + path,
253 
254  static void Notify(const QString &mesg, const QStringList &extra) ;
255 
256 protected:
257  // Adapter functions used by Database for remote images. Do nothing
258  static int ImageId(int id) { return id; }
259  static QString ImageId(const QString &id) { return id; }
260  static int DbId(int id) { return id; }
261  static QString DbIds(const QString &ids) { return ids; }
262 
263 private:
265  QString m_hostname;
268  // Marked mutable as storagegroup.h does not enforce const-correctness
270 };
271 
272 
276 template <class FS>
277 class META_PUBLIC ImageDb : public FS
278 {
279 public:
280  // Handler support
281  int GetImages(const QString &ids, ImageList &files, ImageList &dirs,
282  const QString &refine = "") const;
283  bool GetDescendants(const QString &ids,
284  ImageList &files, ImageList &dirs) const;
285  int InsertDbImage(ImageItemK &im, bool checkForDuplicate = false) const;
286  bool UpdateDbImage(ImageItemK &im) const;
287  QStringList RemoveFromDB(const ImageList &imList) const;
288 
289  bool SetHidden(bool hide, const QString &ids) const;
290  bool SetCover(int dir, int id) const;
291  bool SetOrientation(int id, int orientation) const;
292 
293  // Scanner support
294  bool ReadAllImages(ImageHash &files, ImageHash &dirs) const;
295  void ClearDb(int devId, const QString &action);
296 
297  // ImageReader support
298  int GetChildren(const QString &ids, ImageList &files, ImageList &dirs,
299  const QString &refine = "") const;
300  bool GetImageTree(int id, ImageList &files, const QString &refine) const;
301  int GetDirectory(int id, ImagePtr &parent, ImageList &files, ImageList &dirs,
302  const QString &refine) const;
303  void GetDescendantCount(int id, bool all, int &dirs, int &pics,
304  int &videos, int &sizeKb) const;
305 
306 protected:
307  explicit ImageDb(QString table) : FS(), m_table(std::move(table)) {}
308 
309  ImageItem *CreateImage(const MSqlQuery &query) const;
310  int ReadImages(ImageList &dirs, ImageList &files,
311  const QString &selector) const;
313  QString m_table;
314 };
315 
316 
318 class META_PUBLIC ImageDbSg : public ImageDb<ImageAdapterSg>
319 {
320 public:
321  ImageDbSg();
322 };
323 
324 
326 class META_PUBLIC ImageDbLocal : public ImageDb<ImageAdapterLocal>
327 {
328 protected:
329  ImageDbLocal();
330  ~ImageDbLocal() override { DropTable(); }
331  bool CreateTable();
332  bool m_dbExists { false };
333 
334 private:
335  void DropTable();
336 };
337 
338 
340 template <class DBFS>
341 class META_PUBLIC ImageHandler : protected DBFS
342 {
343 public:
344  QStringList HandleRename(const QString &id, const QString &newBase) const;
345  QStringList HandleDelete(const QString &ids) const;
346  QStringList HandleDbCreate(QStringList defs) const;
347  QStringList HandleDbMove(const QString &ids, const QString &srcPath, QString destPath) const;
348  QStringList HandleHide(bool hide, const QString &ids) const;
349  QStringList HandleTransform(int transform, const QString &ids) const;
350  QStringList HandleDirs(const QString &destId, bool rescan,
351  const QStringList &relPaths) const;
352  QStringList HandleCover(int dir, int cover) const;
353  QStringList HandleIgnore(const QString &exclusions) const;
354  QStringList HandleScanRequest(const QString &command, int devId = DEVICE_INVALID) const;
355  QStringList HandleCreateThumbnails(const QStringList &message) const;
356  QStringList HandleGetMetadata(const QString &id) const;
357 
358 protected:
359  ImageHandler() : DBFS(),
360  m_thumbGen(new ImageThumb<DBFS>(this)),
361  m_scanner(new ImageScanThread<DBFS>(this, m_thumbGen)) {}
362 
363  ~ImageHandler() override
364  {
365  delete m_scanner;
366  delete m_thumbGen;
367  }
368 
369  void RemoveFiles(ImageList &images) const;
370 
371  ImageThumb<DBFS> *m_thumbGen {nullptr};
372  ImageScanThread<DBFS> *m_scanner {nullptr};
373 };
374 
375 
381 class META_PUBLIC ImageManagerBe : protected QObject, public ImageHandler<ImageDbSg>
382 {
383 public:
384  static ImageManagerBe* getInstance();
385 
386 protected:
388  {
389  // Cleanup & terminate child threads before application exits
390  connect(qApp, &QCoreApplication::aboutToQuit, this, &QObject::deleteLater);
391  }
392 
395 };
396 
397 
403 class META_PUBLIC ImageDbReader : protected ImageHandler<ImageDbLocal>
404 {
405 public:
406  ~ImageDbReader() override { delete m_remote; }
407 
408  int GetType() const { return m_showType; }
409  bool GetVisibility() const { return m_showHidden; }
410 
411  void SetType(int showType)
412  { m_showType = showType; SetRefinementClause(); }
413 
414  void SetSortOrder(int order, int dirOrder)
415  { m_dirOrder = dirOrder; m_fileOrder = order; SetRefinementClause(); }
416 
417  void SetVisibility(bool showHidden)
418  { m_showHidden = showHidden; SetRefinementClause(); }
419 
420  int GetImages(const ImageIdList& ids, ImageList &files, ImageList &dirs) const;
421  int GetChildren(int id, ImageList &files, ImageList &dirs) const;
422  int GetDirectory(int id, ImagePtr &parent,
423  ImageList &files, ImageList &dirs) const;
424  void GetDescendants(const ImageIdList &ids,
425  ImageList &files, ImageList &dirs) const;
426  void GetImageTree(int id, ImageList &files) const;
427  void GetDescendantCount(int id, int &dirs, int &pics, int &videos,
428  int &sizeKb) const;
429 protected:
430  ImageDbReader(int order, int dirOrder, bool showAll, int showType)
431  : m_remote(new ImageDbSg()),
432  m_dirOrder(dirOrder), m_fileOrder(order),
433  m_showHidden(showAll), m_showType(showType)
434  { SetRefinementClause(); }
435 
436  void SetRefinementClause();
437 
438  static QString TypeSelector(int type);
439  static QString OrderSelector(int order);
440 
442 
447  QString m_refineClause;
448 };
449 
450 
459 class META_PUBLIC ImageManagerFe : protected QObject, public ImageDbReader
460 {
461  Q_DECLARE_TR_FUNCTIONS(ImageManagerFe);
462 public:
463  static ImageManagerFe &getInstance();
464 
465  // UI actions on all images
466  void CreateThumbnails(const ImageIdList &ids, bool forFolder);
467  QString ScanImagesAction(bool start, bool local = false);
468  static QStringList ScanQuery();
469  QString HideFiles(bool hidden, const ImageIdList &ids);
470  QString ChangeOrientation(ImageFileTransform transform, const ImageIdList &ids);
471  QString SetCover(int parent, int cover);
472  void RequestMetaData(int id);
473  static QString IgnoreDirs(const QString &excludes);
474  QString MakeDir(int parent, const QStringList &names, bool rescan = true);
475  QString RenameFile(const ImagePtrK& im, const QString &name);
476  QString CreateImages(int destId, const ImageListK &images);
477  QString MoveDbImages(const ImagePtrK& destDir, ImageListK &images, const QString &srcPath);
478  QString DeleteFiles(const ImageIdList &ids);
479  static void ClearStorageGroup();
480  void CloseDevices(int devId = DEVICE_INVALID, bool eject = false);
481 
483 
484  // Local Device management
485  bool DetectLocalDevices();
486  void DeviceEvent(MythMediaEvent *event);
487  QString CreateImport();
490 
491  // UI helper functions
492  void SetDateFormat(const QString &format) { m_dateFormat = format; }
493  static QString LongDateOf(const ImagePtrK &im) ;
494  QString ShortDateOf(const ImagePtrK &im) const;
495  QString DeviceCaption(ImageItemK &im) const;
496  QString CrumbName(ImageItemK &im, bool getPath = false) const;
497 
499  QString BuildTransferUrl(const QString &path, bool local) const
500  { return local ? ImageDbReader::MakeFileUrl(path)
501  : m_remote->MakeFileUrl(path); }
502 
503 protected:
504  ImageManagerFe(int order, int dirOrder, bool showAll, int showType,
505  QString dateFormat)
506  : ImageDbReader(order, dirOrder, showAll, showType),
507  m_dateFormat(std::move(dateFormat))
508  {
509  // Cleanup & terminate child threads before application exits
510  connect(qApp, &QCoreApplication::aboutToQuit, this, &QObject::deleteLater);
511  }
512 
515 
517  QString m_dateFormat;
518 };
519 
520 
521 #endif // IMAGEMANAGER_H
ImageManagerBe::s_instance
static ImageManagerBe * s_instance
BE Gallery instance.
Definition: imagemanager.h:394
kPicAndVideo
@ kPicAndVideo
Show Pictures & Videos.
Definition: imagemanager.h:78
ImageManagerFe::m_dateFormat
QString m_dateFormat
UI format for thumbnail date captions.
Definition: imagemanager.h:517
ImageAdapterLocal::DbIds
static QString DbIds(const QString &ids)
Definition: imagemanager.h:221
ImageManagerFe::ImageManagerFe
ImageManagerFe(int order, int dirOrder, bool showAll, int showType, QString dateFormat)
Definition: imagemanager.h:504
ImagePtrK
QSharedPointer< ImageItemK > ImagePtrK
Definition: imagetypes.h:165
MSqlQuery
QSqlQuery wrapper that fetches a DB connection from the connection pool.
Definition: mythdbcon.h:128
ImageDbReader::m_showType
int m_showType
Type of images to display - pic only/video only/both.
Definition: imagemanager.h:446
ImageAdapterLocal::MakeFileUrl
static QString MakeFileUrl(const QString &path)
Construct URL of a local image, which is an absolute path.
Definition: imagemanager.h:208
ImageAdapterLocal::ImageAdapterLocal
ImageAdapterLocal()=default
DeviceManager::GetDeviceDirs
StringMap GetDeviceDirs() const
Get all known devices.
Definition: imagemanager.cpp:253
ImageAdapterBase::ConstructPath
static QString ConstructPath(const QString &path, const QString &name)
Assembles a canonical file path without corrupting its absolute/relative nature.
Definition: imagemanager.h:132
ImageAdapterBase::BaseNameOf
static QString BaseNameOf(const QString &path)
Extracts file name (incl extension) from a filepath.
Definition: imagemanager.h:136
ImageItem::m_type
int m_type
Type of node: dir, video etc.
Definition: imagetypes.h:97
ImageNodeType
ImageNodeType
Type of image node.
Definition: imagetypes.h:34
kVideoFile
@ kVideoFile
A video.
Definition: imagetypes.h:40
false
VERBOSE_PREAMBLE false
Definition: verbosedefs.h:89
ImageItem::ToLocalId
static int ToLocalId(int id)
Converts a DB id (positive) to an id of a local image (negative)
Definition: imagetypes.h:127
ImageManagerFe::BuildTransferUrl
QString BuildTransferUrl(const QString &path, bool local) const
Generate Myth URL for a local or remote path.
Definition: imagemanager.h:499
ImageManagerFe::s_instance
static ImageManagerFe * s_instance
FE Gallery instance.
Definition: imagemanager.h:514
ImageDbReader::m_showHidden
bool m_showHidden
Whether hidden images are displayed.
Definition: imagemanager.h:445
ImageAdapterLocal::DbId
static int DbId(int id)
Definition: imagemanager.h:220
ImageDb::ImageDb
ImageDb(QString table)
Definition: imagemanager.h:307
ImageAdapterSg::m_hostport
int m_hostport
Definition: imagemanager.h:266
ImageAdapterSg::ImageId
static int ImageId(int id)
Definition: imagemanager.h:258
DeviceManager::DeviceCount
int DeviceCount() const
Definition: imagemanager.h:100
ImageAdapterBase::m_videoFileExt
QStringList m_videoFileExt
List of file extensions recognised as videos.
Definition: imagemanager.h:182
RemoveFromDB
bool RemoveFromDB(Bookmark *site)
Definition: browserdbutil.cpp:158
ImageAdapterSg::Notify
static void Notify(const QString &mesg, const QStringList &extra)
Send message to all clients about remote ids.
Definition: imagemanager.cpp:480
ImageHandler::~ImageHandler
~ImageHandler() override
Definition: imagemanager.h:363
ImageAdapterSg::m_sg
StorageGroup m_sg
Images storage group.
Definition: imagemanager.h:269
ImageManagerFe::SetDateFormat
void SetDateFormat(const QString &format)
Definition: imagemanager.h:492
ImageDbReader::ImageDbReader
ImageDbReader(int order, int dirOrder, bool showAll, int showType)
Definition: imagemanager.h:430
Device
A device containing images (ie. USB stick, CD, storage group etc)
Definition: imagemanager.cpp:35
mythdirs.h
ImageAdapterSg::m_hostname
QString m_hostname
Host of SG.
Definition: imagemanager.h:265
ImageManagerBe::ImageManagerBe
ImageManagerBe()
Definition: imagemanager.h:387
ImageDbReader::SetVisibility
void SetVisibility(bool showHidden)
Definition: imagemanager.h:417
ImageAdapterLocal::GetAbsFilePath
static QString GetAbsFilePath(const ImagePtrK &im)
Get absolute filepath for a local image.
Definition: imagemanager.h:204
ImageAdapterSg::DbIds
static QString DbIds(const QString &ids)
Definition: imagemanager.h:261
ImageAdapterLocal::CreateItem
ImageItem * CreateItem(const QFileInfo &fi, int parentId, int devId, const QString &base) const
Construct a local image from a file.
Definition: imagemanager.cpp:365
ImageAdapterLocal::MakeThumbUrl
static QString MakeThumbUrl(const QString &devPath, const QString &path="")
Construct URL of the thumbnail of a local image (An absolute path)
Definition: imagemanager.h:211
ImageThumb
Definition: imagethumbs.h:127
ImageDbReader::m_refineClause
QString m_refineClause
SQL clause for image filtering/ordering.
Definition: imagemanager.h:447
ImageFileTransform
ImageFileTransform
Image transformations.
Definition: imagemetadata.h:46
ImageAdapterSg::MakeFileUrl
QString MakeFileUrl(const QString &path) const
Construct URL of a remote image.
Definition: imagemanager.h:244
ImageHash
QHash< QString, ImagePtr > ImageHash
Definition: imagetypes.h:161
THUMBNAIL_STORAGE_GROUP
static constexpr const char * THUMBNAIL_STORAGE_GROUP
Definition: imagemanager.h:64
MythCoreContext::GenMythURL
static QString GenMythURL(const QString &host=QString(), int port=0, QString path=QString(), const QString &storageGroup=QString())
Definition: mythcorecontext.cpp:759
GetConfDir
QString GetConfDir(void)
Definition: mythdirs.cpp:256
kPicOnly
@ kPicOnly
Hide videos.
Definition: imagemanager.h:79
ImageDbReader::SetSortOrder
void SetSortOrder(int order, int dirOrder)
Definition: imagemanager.h:414
ImageAdapterBase
Common filesystem facilities.
Definition: imagemanager.h:124
IMAGE_STORAGE_GROUP
static constexpr const char * IMAGE_STORAGE_GROUP
Definition: imagemanager.h:63
StringMap
QMap< int, QString > StringMap
Definition: imagetypes.h:63
ImageAdapterBase::GetImageFilters
QDir GetImageFilters() const
Get filters for detecting recognised images/videos.
Definition: imagemanager.h:165
ImageAdapterSg
Filesystem adapter for Backend, managing Photographs storage group.
Definition: imagemanager.h:230
ImageDbReader::GetType
int GetType() const
Definition: imagemanager.h:408
ImageHandler
A handler for image operations. Requires a database/filesystem adapter.
Definition: imagemanager.h:341
ImageAdapterBase::FormatSize
static QString FormatSize(int sizeKib)
Definition: imagemanager.h:143
MythMediaEvent
Definition: mythmedia.h:183
ImageDbReader::~ImageDbReader
~ImageDbReader() override
Definition: imagemanager.h:406
ImageAdapterLocal::ImageId
static int ImageId(int id)
Definition: imagemanager.h:218
ImageAdapterBase::PathOf
static QString PathOf(const QString &path)
Extracts path from a filepath.
Definition: imagemanager.h:140
imagescanner.h
Synchronises image database to filesystem.
ImageListK
QList< ImagePtrK > ImageListK
Definition: imagetypes.h:166
ImageDbLocal::~ImageDbLocal
~ImageDbLocal() override
Definition: imagemanager.h:330
ImageDbReader
Provides read access to local & remote images.
Definition: imagemanager.h:403
DeviceManager::DeviceMap
QMap< int, Device * > DeviceMap
Definition: imagemanager.h:116
storagegroup.h
ImageDbReader::GetVisibility
bool GetVisibility() const
Definition: imagemanager.h:409
gCoreContext
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
Definition: mythcorecontext.cpp:55
ImageDisplayType
ImageDisplayType
Display filter.
Definition: imagemanager.h:77
ImageList
QVector< ImagePtr > ImageList
Definition: imagetypes.h:160
ImageAdapterLocal
Filesystem adapter for Frontend, managing local devices iaw MediaMonitor.
Definition: imagemanager.h:192
ImageAdapterBase::GetAbsThumbPath
static QString GetAbsThumbPath(const QString &devPath, const QString &path)
Get absolute filepath for thumbnail of an image.
Definition: imagemanager.h:148
ImageAdapterSg::ImageId
static QString ImageId(const QString &id)
Definition: imagemanager.h:259
ImageAdapterLocal::GetScanDirs
StringMap GetScanDirs() const
Returns local device dirs to scan.
Definition: imagemanager.h:201
kImageFile
@ kImageFile
A picture.
Definition: imagetypes.h:39
ImageAdapterBase::m_dirFilter
QDir m_dirFilter
A pre-configured dir for reading image/video files.
Definition: imagemanager.h:178
MythCoreContext
This class contains the runtime context for MythTV.
Definition: mythcorecontext.h:63
ImagePtr
QSharedPointer< ImageItem > ImagePtr
Definition: imagetypes.h:159
ImageDbReader::SetType
void SetType(int showType)
Definition: imagemanager.h:411
mythcorecontext.h
ImageManagerFe
The image manager for use by Frontends.
Definition: imagemanager.h:459
ImageScanThread
Image Scanner thread requires a database/filesystem adapter.
Definition: imagescanner.h:25
ImageAdapterSg::ImageAdapterSg
ImageAdapterSg()
Definition: imagemanager.h:233
ImageDbReader::m_fileOrder
int m_fileOrder
Display ordering of pics/videos.
Definition: imagemanager.h:444
ImageDbReader::m_remote
ImageDbSg * m_remote
Remote database access.
Definition: imagemanager.h:441
ImageItem
Represents a picture, video or directory.
Definition: imagetypes.h:68
imagemetadata.h
Handles Exif/FFMpeg metadata tags for images.
TEMP_SUBDIR
static constexpr const char * TEMP_SUBDIR
Definition: imagemanager.h:67
std
Definition: mythchrono.h:23
ImageItem::ToDbId
static int ToDbId(int id)
Converts local image ids (negative) to Db ids (positive)
Definition: imagetypes.h:131
DeviceManager::OpenDevice
int OpenDevice(const QString &name, const QString &mount, MythMediaDevice *media=nullptr, QTemporaryDir *dir=nullptr)
Define a new device and assign it a unique id. If the device is already known, its existing id is ret...
Definition: imagemanager.cpp:160
ImageDb< ImageAdapterLocal >::SetCover
bool SetCover(int dir, int id) const
Set the thumbnail(s) to be used for a dir.
Definition: imagemanager.cpp:947
ImageIdList
QList< int > ImageIdList
Definition: imagetypes.h:60
ImageAdapterBase::ThumbPath
static QString ThumbPath(const ImageItem &im)
Thumbnails of videos are a JPEG snapshot with jpg suffix appended.
Definition: imagemanager.h:155
DeviceManager
Manages image sources, ie.
Definition: imagemanager.h:94
ImageAdapterLocal::ImageId
static QString ImageId(const QString &id)
Definition: imagemanager.h:219
THUMBNAIL_SUBDIR
static constexpr const char * THUMBNAIL_SUBDIR
Definition: imagemanager.h:69
ImageAdapterSg::GetAbsFilePath
QString GetAbsFilePath(const ImagePtrK &im) const
Get absolute filepath for a remote image.
Definition: imagemanager.cpp:508
StorageGroup
Definition: storagegroup.h:11
build_compdb.action
action
Definition: build_compdb.py:9
ImageDbReader::m_dirOrder
int m_dirOrder
Display ordering of dirs.
Definition: imagemanager.h:443
DeviceManager::CloseDevices
QStringList CloseDevices(int devId, const QString &action)
Remove a device (or all devices)
Definition: imagemanager.cpp:196
ImageAdapterLocal::Notify
static void Notify(const QString &mesg, const QStringList &extra)
Send local message to UI about local ids.
Definition: imagemanager.cpp:415
ImageDbSg
A Database API with SG adapter for remote images.
Definition: imagemanager.h:318
ImageAdapterSg::MakeThumbUrl
QString MakeThumbUrl(const QString &devPath, const QString &path="") const
Construct URL of the thumbnail of a remote image.
Definition: imagemanager.h:249
ImageAdapterSg::GetScanDirs
StringMap GetScanDirs() const
Returns SG dirs.
Definition: imagemanager.cpp:491
MythMediaDevice
Definition: mythmedia.h:48
ImageHandler::ImageHandler
ImageHandler()
Definition: imagemanager.h:359
ImageDb::m_table
QString m_table
Db table name.
Definition: imagemanager.h:313
ImageDb
Database API.
Definition: imagemanager.h:277
ImageAdapterSg::CreateItem
ImageItem * CreateItem(const QFileInfo &fi, int parentId, int devId, const QString &base) const
Construct a remote image from a file.
Definition: imagemanager.cpp:431
ImageManagerBe
The image manager to be used by the Backend.
Definition: imagemanager.h:381
DeviceManager::m_devices
DeviceMap m_devices
Device store.
Definition: imagemanager.h:119
ImageAdapterBase::GetImageType
ImageNodeType GetImageType(const QString &ext) const
Determine file type from its extension.
Definition: imagemanager.h:168
kUnknown
@ kUnknown
Unprocessable file type.
Definition: imagetypes.h:35
ImageAdapterSg::DbId
static int DbId(int id)
Definition: imagemanager.h:260
META_PUBLIC
#define META_PUBLIC
Definition: mythmetaexp.h:9
ImageAdapterBase::m_imageFileExt
QStringList m_imageFileExt
List of file extensions recognised as pictures.
Definition: imagemanager.h:180
kVideoOnly
@ kVideoOnly
Hide pictures.
Definition: imagemanager.h:80
DEVICE_INVALID
static constexpr int DEVICE_INVALID
Definition: imagemanager.h:71
ImageItem::m_filePath
QString m_filePath
Absolute for local images. Usually SG-relative for remotes.
Definition: imagetypes.h:93
ImageDbLocal
A Database with device adapter for local images.
Definition: imagemanager.h:326