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 
77 enum ImageDisplayType : std::uint8_t {
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  {
170  if (m_imageFileExt.contains(ext))
171  return kImageFile;
172  if (m_videoFileExt.contains(ext))
173  return kVideoFile;
174  return kUnknown;
175  }
176 protected:
178  virtual ~ImageAdapterBase() = default;
179 
180 private:
184  QStringList m_imageFileExt;
186  QStringList m_videoFileExt;
187 };
188 
189 
197 {
198 public:
199  ImageAdapterLocal() = default;
200 
201  ImageItem *CreateItem(const QFileInfo &fi, int parentId, int devId,
202  const QString &base) const;
203 
205  StringMap GetScanDirs() const { return GetDeviceDirs(); }
206 
208  static QString GetAbsFilePath(const ImagePtrK &im)
209  { return im->m_filePath; }
210 
212  static QString MakeFileUrl(const QString &path) { return path; }
213 
215  static QString MakeThumbUrl(const QString &devPath, const QString &path = "")
216  { return GetAbsThumbPath(devPath, path); }
217 
218  static void Notify(const QString &mesg, const QStringList &extra) ;
219 
220 protected:
221  // Adapter functions used by Database for local images. Negate ids in & out
222  static int ImageId(int id) { return ImageItem::ToLocalId(id); }
223  static QString ImageId(const QString &id) { return ImageItem::ToLocalId(id); }
224  static int DbId(int id) { return ImageItem::ToDbId(id); }
225  static QString DbIds(const QString &ids) { return ImageItem::ToDbId(ids); }
226 };
227 
228 
235 {
236 public:
238  m_hostname(gCoreContext->GetMasterHostName()),
239  m_hostport(MythCoreContext::GetMasterServerPort()),
241 
242  ImageItem *CreateItem(const QFileInfo &fi, int parentId, int devId,
243  const QString &base) const;
244  StringMap GetScanDirs() const;
245  QString GetAbsFilePath(const ImagePtrK &im) const;
246 
248  QString MakeFileUrl(const QString &path) const
251 
253  QString MakeThumbUrl(const QString &devPath, const QString &path = "") const
255  devPath + "/" + path,
257 
258  static void Notify(const QString &mesg, const QStringList &extra) ;
259 
260 protected:
261  // Adapter functions used by Database for remote images. Do nothing
262  static int ImageId(int id) { return id; }
263  static QString ImageId(const QString &id) { return id; }
264  static int DbId(int id) { return id; }
265  static QString DbIds(const QString &ids) { return ids; }
266 
267 private:
269  QString m_hostname;
272  // Marked mutable as storagegroup.h does not enforce const-correctness
274 };
275 
276 
280 template <class FS>
281 class META_PUBLIC ImageDb : public FS
282 {
283 public:
284  // Handler support
285  int GetImages(const QString &ids, ImageList &files, ImageList &dirs,
286  const QString &refine = "") const;
287  bool GetDescendants(const QString &ids,
288  ImageList &files, ImageList &dirs) const;
289  int InsertDbImage(ImageItemK &im, bool checkForDuplicate = false) const;
290  bool UpdateDbImage(ImageItemK &im) const;
291  QStringList RemoveFromDB(const ImageList &imList) const;
292 
293  bool SetHidden(bool hide, const QString &ids) const;
294  bool SetCover(int dir, int id) const;
295  bool SetOrientation(int id, int orientation) const;
296 
297  // Scanner support
298  bool ReadAllImages(ImageHash &files, ImageHash &dirs) const;
299  void ClearDb(int devId, const QString &action);
300 
301  // ImageReader support
302  int GetChildren(const QString &ids, ImageList &files, ImageList &dirs,
303  const QString &refine = "") const;
304  bool GetImageTree(int id, ImageList &files, const QString &refine) const;
305  int GetDirectory(int id, ImagePtr &parent, ImageList &files, ImageList &dirs,
306  const QString &refine) const;
307  void GetDescendantCount(int id, bool all, int &dirs, int &pics,
308  int &videos, int &sizeKb) const;
309 
310 protected:
311  explicit ImageDb(QString table) : FS(), m_table(std::move(table)) {}
312 
313  ImageItem *CreateImage(const MSqlQuery &query) const;
314  int ReadImages(ImageList &dirs, ImageList &files,
315  const QString &selector) const;
317  QString m_table;
318 };
319 
320 
322 class META_PUBLIC ImageDbSg : public ImageDb<ImageAdapterSg>
323 {
324 public:
325  ImageDbSg();
326 };
327 
328 
330 class META_PUBLIC ImageDbLocal : public ImageDb<ImageAdapterLocal>
331 {
332 protected:
333  ImageDbLocal();
334  ~ImageDbLocal() override { DropTable(); }
335  bool CreateTable();
336  bool m_dbExists { false };
337 
338 private:
339  void DropTable();
340 };
341 
342 
344 template <class DBFS>
345 class META_PUBLIC ImageHandler : protected DBFS
346 {
347 public:
348  QStringList HandleRename(const QString &id, const QString &newBase) const;
349  QStringList HandleDelete(const QString &ids) const;
350  QStringList HandleDbCreate(QStringList defs) const;
351  QStringList HandleDbMove(const QString &ids, const QString &srcPath, QString destPath) const;
352  QStringList HandleHide(bool hide, const QString &ids) const;
353  QStringList HandleTransform(int transform, const QString &ids) const;
354  QStringList HandleDirs(const QString &destId, bool rescan,
355  const QStringList &relPaths) const;
356  QStringList HandleCover(int dir, int cover) const;
357  QStringList HandleIgnore(const QString &exclusions) const;
358  QStringList HandleScanRequest(const QString &command, int devId = DEVICE_INVALID) const;
359  QStringList HandleCreateThumbnails(const QStringList &message) const;
360  QStringList HandleGetMetadata(const QString &id) const;
361 
362 protected:
363  ImageHandler() : DBFS(),
364  m_thumbGen(new ImageThumb<DBFS>(this)),
365  m_scanner(new ImageScanThread<DBFS>(this, m_thumbGen)) {}
366 
367  ~ImageHandler() override
368  {
369  delete m_scanner;
370  delete m_thumbGen;
371  }
372 
373  void RemoveFiles(ImageList &images) const;
374 
375  ImageThumb<DBFS> *m_thumbGen {nullptr};
376  ImageScanThread<DBFS> *m_scanner {nullptr};
377 };
378 
379 
385 class META_PUBLIC ImageManagerBe : protected QObject, public ImageHandler<ImageDbSg>
386 {
387 public:
388  static ImageManagerBe* getInstance();
389 
390 protected:
392  {
393  // Cleanup & terminate child threads before application exits
394  connect(qApp, &QCoreApplication::aboutToQuit, this, &QObject::deleteLater);
395  }
396 
399 };
400 
401 
407 class META_PUBLIC ImageDbReader : protected ImageHandler<ImageDbLocal>
408 {
409 public:
410  ~ImageDbReader() override { delete m_remote; }
411 
412  int GetType() const { return m_showType; }
413  bool GetVisibility() const { return m_showHidden; }
414 
415  void SetType(int showType)
416  { m_showType = showType; SetRefinementClause(); }
417 
418  void SetSortOrder(int order, int dirOrder)
419  { m_dirOrder = dirOrder; m_fileOrder = order; SetRefinementClause(); }
420 
421  void SetVisibility(bool showHidden)
422  { m_showHidden = showHidden; SetRefinementClause(); }
423 
424  int GetImages(const ImageIdList& ids, ImageList &files, ImageList &dirs) const;
425  int GetChildren(int id, ImageList &files, ImageList &dirs) const;
426  int GetDirectory(int id, ImagePtr &parent,
427  ImageList &files, ImageList &dirs) const;
428  void GetDescendants(const ImageIdList &ids,
429  ImageList &files, ImageList &dirs) const;
430  void GetImageTree(int id, ImageList &files) const;
431  void GetDescendantCount(int id, int &dirs, int &pics, int &videos,
432  int &sizeKb) const;
433 protected:
434  ImageDbReader(int order, int dirOrder, bool showAll, int showType)
435  : m_remote(new ImageDbSg()),
436  m_dirOrder(dirOrder), m_fileOrder(order),
437  m_showHidden(showAll), m_showType(showType)
438  { SetRefinementClause(); }
439 
440  void SetRefinementClause();
441 
442  static QString TypeSelector(int type);
443  static QString OrderSelector(int order);
444 
446 
451  QString m_refineClause;
452 };
453 
454 
463 class META_PUBLIC ImageManagerFe : protected QObject, public ImageDbReader
464 {
465  Q_DECLARE_TR_FUNCTIONS(ImageManagerFe);
466 public:
467  static ImageManagerFe &getInstance();
468 
469  // UI actions on all images
470  void CreateThumbnails(const ImageIdList &ids, bool forFolder);
471  QString ScanImagesAction(bool start, bool local = false);
472  static QStringList ScanQuery();
473  QString HideFiles(bool hidden, const ImageIdList &ids);
474  QString ChangeOrientation(ImageFileTransform transform, const ImageIdList &ids);
475  QString SetCover(int parent, int cover);
476  void RequestMetaData(int id);
477  static QString IgnoreDirs(const QString &excludes);
478  QString MakeDir(int parent, const QStringList &names, bool rescan = true);
479  QString RenameFile(const ImagePtrK& im, const QString &name);
480  QString CreateImages(int destId, const ImageListK &images);
481  QString MoveDbImages(const ImagePtrK& destDir, ImageListK &images, const QString &srcPath);
482  QString DeleteFiles(const ImageIdList &ids);
483  static void ClearStorageGroup();
484  void CloseDevices(int devId = DEVICE_INVALID, bool eject = false);
485 
487 
488  // Local Device management
489  bool DetectLocalDevices();
490  void DeviceEvent(MythMediaEvent *event);
491  QString CreateImport();
494 
495  // UI helper functions
496  void SetDateFormat(const QString &format) { m_dateFormat = format; }
497  static QString LongDateOf(const ImagePtrK &im) ;
498  QString ShortDateOf(const ImagePtrK &im) const;
499  QString DeviceCaption(ImageItemK &im) const;
500  QString CrumbName(ImageItemK &im, bool getPath = false) const;
501 
503  QString BuildTransferUrl(const QString &path, bool local) const
504  { return local ? ImageDbReader::MakeFileUrl(path)
505  : m_remote->MakeFileUrl(path); }
506 
507 protected:
508  ImageManagerFe(int order, int dirOrder, bool showAll, int showType,
509  QString dateFormat)
510  : ImageDbReader(order, dirOrder, showAll, showType),
511  m_dateFormat(std::move(dateFormat))
512  {
513  // Cleanup & terminate child threads before application exits
514  connect(qApp, &QCoreApplication::aboutToQuit, this, &QObject::deleteLater);
515  }
516 
519 
521  QString m_dateFormat;
522 };
523 
524 
525 #endif // IMAGEMANAGER_H
ImageManagerBe::s_instance
static ImageManagerBe * s_instance
BE Gallery instance.
Definition: imagemanager.h:398
ImageManagerFe::m_dateFormat
QString m_dateFormat
UI format for thumbnail date captions.
Definition: imagemanager.h:521
ImageAdapterLocal::DbIds
static QString DbIds(const QString &ids)
Definition: imagemanager.h:225
ImageManagerFe::ImageManagerFe
ImageManagerFe(int order, int dirOrder, bool showAll, int showType, QString dateFormat)
Definition: imagemanager.h:508
ImagePtrK
QSharedPointer< ImageItemK > ImagePtrK
Definition: imagetypes.h:165
MSqlQuery
QSqlQuery wrapper that fetches a DB connection from the connection pool.
Definition: mythdbcon.h:127
ImageDbReader::m_showType
int m_showType
Type of images to display - pic only/video only/both.
Definition: imagemanager.h:450
ImageAdapterLocal::MakeFileUrl
static QString MakeFileUrl(const QString &path)
Construct URL of a local image, which is an absolute path.
Definition: imagemanager.h:212
ImageAdapterLocal::ImageAdapterLocal
ImageAdapterLocal()=default
DeviceManager::GetDeviceDirs
StringMap GetDeviceDirs() const
Get all known devices.
Definition: imagemanager.cpp:255
ImageFileTransform
ImageFileTransform
Image transformations.
Definition: imagemetadata.h:46
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
kUnknown
@ kUnknown
Unprocessable file type.
Definition: imagetypes.h:35
ImageNodeType
ImageNodeType
Type of image node.
Definition: imagetypes.h:34
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:503
ImageManagerFe::s_instance
static ImageManagerFe * s_instance
FE Gallery instance.
Definition: imagemanager.h:518
ImageDbReader::m_showHidden
bool m_showHidden
Whether hidden images are displayed.
Definition: imagemanager.h:449
ImageAdapterLocal::DbId
static int DbId(int id)
Definition: imagemanager.h:224
ImageDb::ImageDb
ImageDb(QString table)
Definition: imagemanager.h:311
ImageAdapterSg::m_hostport
int m_hostport
Definition: imagemanager.h:270
ImageAdapterSg::ImageId
static int ImageId(int id)
Definition: imagemanager.h:262
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:186
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:463
ImageHandler::~ImageHandler
~ImageHandler() override
Definition: imagemanager.h:367
ImageAdapterSg::m_sg
StorageGroup m_sg
Images storage group.
Definition: imagemanager.h:273
ImageManagerFe::SetDateFormat
void SetDateFormat(const QString &format)
Definition: imagemanager.h:496
ImageDbReader::ImageDbReader
ImageDbReader(int order, int dirOrder, bool showAll, int showType)
Definition: imagemanager.h:434
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:269
ImageManagerBe::ImageManagerBe
ImageManagerBe()
Definition: imagemanager.h:391
ImageDbReader::SetVisibility
void SetVisibility(bool showHidden)
Definition: imagemanager.h:421
kVideoFile
@ kVideoFile
A video.
Definition: imagetypes.h:40
ImageAdapterLocal::GetAbsFilePath
static QString GetAbsFilePath(const ImagePtrK &im)
Get absolute filepath for a local image.
Definition: imagemanager.h:208
kPicAndVideo
@ kPicAndVideo
Show Pictures & Videos.
Definition: imagemanager.h:78
ImageAdapterSg::DbIds
static QString DbIds(const QString &ids)
Definition: imagemanager.h:265
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:348
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:215
ImageThumb
Definition: imagethumbs.h:127
ImageDbReader::m_refineClause
QString m_refineClause
SQL clause for image filtering/ordering.
Definition: imagemanager.h:451
ImageAdapterSg::MakeFileUrl
QString MakeFileUrl(const QString &path) const
Construct URL of a remote image.
Definition: imagemanager.h:248
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:764
GetConfDir
QString GetConfDir(void)
Definition: mythdirs.cpp:263
kImageFile
@ kImageFile
A picture.
Definition: imagetypes.h:39
ImageDbReader::SetSortOrder
void SetSortOrder(int order, int dirOrder)
Definition: imagemanager.h:418
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:234
ImageDbReader::GetType
int GetType() const
Definition: imagemanager.h:412
ImageHandler
A handler for image operations. Requires a database/filesystem adapter.
Definition: imagemanager.h:345
ImageAdapterBase::FormatSize
static QString FormatSize(int sizeKib)
Definition: imagemanager.h:143
MythMediaEvent
Definition: mythmedia.h:183
ImageDbReader::~ImageDbReader
~ImageDbReader() override
Definition: imagemanager.h:410
ImageAdapterLocal::ImageId
static int ImageId(int id)
Definition: imagemanager.h:222
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:334
ImageDbReader
Provides read access to local & remote images.
Definition: imagemanager.h:407
DeviceManager::DeviceMap
QMap< int, Device * > DeviceMap
Definition: imagemanager.h:116
storagegroup.h
ImageDbReader::GetVisibility
bool GetVisibility() const
Definition: imagemanager.h:413
gCoreContext
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
Definition: mythcorecontext.cpp:55
ImageList
QVector< ImagePtr > ImageList
Definition: imagetypes.h:160
ImageAdapterLocal
Filesystem adapter for Frontend, managing local devices iaw MediaMonitor.
Definition: imagemanager.h:196
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:263
ImageAdapterLocal::GetScanDirs
StringMap GetScanDirs() const
Returns local device dirs to scan.
Definition: imagemanager.h:205
ImageAdapterBase::m_dirFilter
QDir m_dirFilter
A pre-configured dir for reading image/video files.
Definition: imagemanager.h:182
MythCoreContext
This class contains the runtime context for MythTV.
Definition: mythcorecontext.h:62
ImagePtr
QSharedPointer< ImageItem > ImagePtr
Definition: imagetypes.h:159
ImageDbReader::SetType
void SetType(int showType)
Definition: imagemanager.h:415
mythcorecontext.h
ImageManagerFe
The image manager for use by Frontends.
Definition: imagemanager.h:463
ImageScanThread
Image Scanner thread requires a database/filesystem adapter.
Definition: imagescanner.h:25
ImageAdapterSg::ImageAdapterSg
ImageAdapterSg()
Definition: imagemanager.h:237
ImageDbReader::m_fileOrder
int m_fileOrder
Display ordering of pics/videos.
Definition: imagemanager.h:448
ImageDbReader::m_remote
ImageDbSg * m_remote
Remote database access.
Definition: imagemanager.h:445
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
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:162
ImageDb< ImageAdapterLocal >::SetCover
bool SetCover(int dir, int id) const
Set the thumbnail(s) to be used for a dir.
Definition: imagemanager.cpp:930
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:223
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:491
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:447
DeviceManager::CloseDevices
QStringList CloseDevices(int devId, const QString &action)
Remove a device (or all devices)
Definition: imagemanager.cpp:198
ImageAdapterLocal::Notify
static void Notify(const QString &mesg, const QStringList &extra)
Send local message to UI about local ids.
Definition: imagemanager.cpp:398
ImageDbSg
A Database API with SG adapter for remote images.
Definition: imagemanager.h:322
ImageAdapterSg::MakeThumbUrl
QString MakeThumbUrl(const QString &devPath, const QString &path="") const
Construct URL of the thumbnail of a remote image.
Definition: imagemanager.h:253
ImageAdapterSg::GetScanDirs
StringMap GetScanDirs() const
Returns SG dirs.
Definition: imagemanager.cpp:474
MythMediaDevice
Definition: mythmedia.h:48
ImageHandler::ImageHandler
ImageHandler()
Definition: imagemanager.h:363
ImageDb::m_table
QString m_table
Db table name.
Definition: imagemanager.h:317
ImageDb
Database API.
Definition: imagemanager.h:281
ImageDisplayType
ImageDisplayType
Display filter.
Definition: imagemanager.h:77
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:414
ImageManagerBe
The image manager to be used by the Backend.
Definition: imagemanager.h:385
kPicOnly
@ kPicOnly
Hide videos.
Definition: imagemanager.h:79
DeviceManager::m_devices
DeviceMap m_devices
Device store.
Definition: imagemanager.h:119
kVideoOnly
@ kVideoOnly
Hide pictures.
Definition: imagemanager.h:80
ImageAdapterBase::GetImageType
ImageNodeType GetImageType(const QString &ext) const
Determine file type from its extension.
Definition: imagemanager.h:168
ImageAdapterSg::DbId
static int DbId(int id)
Definition: imagemanager.h:264
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:184
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:330