Go to the documentation of this file.
45 #ifndef IMAGEMANAGER_H
46 #define IMAGEMANAGER_H
51 #include <QTemporaryDir>
97 QStringList CloseDevices(
int devId,
const QString &
action);
98 QString DeviceMount(
int devId)
const;
99 QString DeviceName(
int devId)
const;
101 QString ThumbDir(
int fs)
const;
104 int OpenDevice(
const QString &name,
const QString &mount,
106 QTemporaryDir *dir =
nullptr);
108 int LocateMount(
const QString &mount)
const;
110 QList<int> GetAbsentees();
127 static QStringList SupportedImages();
129 static QStringList SupportedVideos();
133 {
return path.isEmpty() ? name : path +
"/" + name; }
137 { QString result = path.section(
'/', -1);
return result.isNull() ?
"" : result; }
140 static QString
PathOf(
const QString &path)
141 { QString result = path.section(
'/', 0, -2);
return result.isNull() ?
"" : result; }
144 {
return (sizeKib < 10000) ? QString(
"%L1 KiB").arg(sizeKib)
145 : QString(
"%L1 MiB").arg(sizeKib / 1024.0, 0,
'f', 1); }
150 QString dirFmt = QString(
"%1/") %
TEMP_SUBDIR %
"/%2/%3";
151 return dirFmt.arg(
GetConfDir(), devPath, path);
170 if (m_imageFileExt.contains(ext))
172 if (m_videoFileExt.contains(ext))
202 const QString &base)
const;
209 {
return im->m_filePath; }
215 static QString
MakeThumbUrl(
const QString &devPath,
const QString &path =
"")
218 static void Notify(
const QString &mesg,
const QStringList &extra) ;
243 const QString &base)
const;
253 QString
MakeThumbUrl(
const QString &devPath,
const QString &path =
"")
const
255 devPath +
"/" + path,
258 static void Notify(
const QString &mesg,
const QStringList &extra) ;
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; }
286 const QString &refine =
"")
const;
287 bool GetDescendants(
const QString &ids,
289 int InsertDbImage(
ImageItemK &im,
bool checkForDuplicate =
false)
const;
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;
299 void ClearDb(
int devId,
const QString &
action);
303 const QString &refine =
"")
const;
304 bool GetImageTree(
int id,
ImageList &files,
const QString &refine)
const;
306 const QString &refine)
const;
307 void GetDescendantCount(
int id,
bool all,
int &dirs,
int &pics,
308 int &videos,
int &sizeKb)
const;
311 explicit ImageDb(QString table) : FS(), m_table(std::move(table)) {}
315 const QString &selector)
const;
336 bool m_dbExists {
false };
344 template <
class DBFS>
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;
373 void RemoveFiles(
ImageList &images)
const;
394 connect(qApp, &QCoreApplication::aboutToQuit,
this, &QObject::deleteLater);
416 { m_showType = showType; SetRefinementClause(); }
419 { m_dirOrder = dirOrder; m_fileOrder = order; SetRefinementClause(); }
422 { m_showHidden = showHidden; SetRefinementClause(); }
426 int GetDirectory(
int id,
ImagePtr &parent,
430 void GetImageTree(
int id,
ImageList &files)
const;
431 void GetDescendantCount(
int id,
int &dirs,
int &pics,
int &videos,
436 m_dirOrder(dirOrder), m_fileOrder(order),
437 m_showHidden(showAll), m_showType(showType)
438 { SetRefinementClause(); }
440 void SetRefinementClause();
442 static QString TypeSelector(
int type);
443 static QString OrderSelector(
int order);
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);
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);
483 static void ClearStorageGroup();
489 bool DetectLocalDevices();
491 QString CreateImport();
497 static QString LongDateOf(
const ImagePtrK &im) ;
498 QString ShortDateOf(
const ImagePtrK &im)
const;
500 QString CrumbName(
ImageItemK &im,
bool getPath =
false)
const;
505 : m_remote->MakeFileUrl(path); }
511 m_dateFormat(std::move(dateFormat))
514 connect(qApp, &QCoreApplication::aboutToQuit,
this, &QObject::deleteLater);
525 #endif // IMAGEMANAGER_H
static ImageManagerBe * s_instance
BE Gallery instance.
QString m_dateFormat
UI format for thumbnail date captions.
static QString DbIds(const QString &ids)
ImageManagerFe(int order, int dirOrder, bool showAll, int showType, QString dateFormat)
QSharedPointer< ImageItemK > ImagePtrK
QSqlQuery wrapper that fetches a DB connection from the connection pool.
int m_showType
Type of images to display - pic only/video only/both.
static QString MakeFileUrl(const QString &path)
Construct URL of a local image, which is an absolute path.
ImageAdapterLocal()=default
StringMap GetDeviceDirs() const
Get all known devices.
static QString ConstructPath(const QString &path, const QString &name)
Assembles a canonical file path without corrupting its absolute/relative nature.
static QString BaseNameOf(const QString &path)
Extracts file name (incl extension) from a filepath.
int m_type
Type of node: dir, video etc.
@ kUnknown
Unprocessable file type.
ImageNodeType
Type of image node.
static int ToLocalId(int id)
Converts a DB id (positive) to an id of a local image (negative)
QString BuildTransferUrl(const QString &path, bool local) const
Generate Myth URL for a local or remote path.
static ImageManagerFe * s_instance
FE Gallery instance.
bool m_showHidden
Whether hidden images are displayed.
static int ImageId(int id)
QStringList m_videoFileExt
List of file extensions recognised as videos.
bool RemoveFromDB(Bookmark *site)
static void Notify(const QString &mesg, const QStringList &extra)
Send message to all clients about remote ids.
StorageGroup m_sg
Images storage group.
void SetDateFormat(const QString &format)
ImageDbReader(int order, int dirOrder, bool showAll, int showType)
A device containing images (ie. USB stick, CD, storage group etc)
QString m_hostname
Host of SG.
void SetVisibility(bool showHidden)
static QString GetAbsFilePath(const ImagePtrK &im)
Get absolute filepath for a local image.
@ kPicAndVideo
Show Pictures & Videos.
static QString DbIds(const QString &ids)
ImageItem * CreateItem(const QFileInfo &fi, int parentId, int devId, const QString &base) const
Construct a local image from a file.
static QString MakeThumbUrl(const QString &devPath, const QString &path="")
Construct URL of the thumbnail of a local image (An absolute path)
QString m_refineClause
SQL clause for image filtering/ordering.
QString MakeFileUrl(const QString &path) const
Construct URL of a remote image.
QHash< QString, ImagePtr > ImageHash
static constexpr const char * THUMBNAIL_STORAGE_GROUP
static QString GenMythURL(const QString &host=QString(), int port=0, QString path=QString(), const QString &storageGroup=QString())
void SetSortOrder(int order, int dirOrder)
Common filesystem facilities.
static constexpr const char * IMAGE_STORAGE_GROUP
QMap< int, QString > StringMap
QDir GetImageFilters() const
Get filters for detecting recognised images/videos.
Filesystem adapter for Backend, managing Photographs storage group.
A handler for image operations. Requires a database/filesystem adapter.
static QString FormatSize(int sizeKib)
~ImageDbReader() override
static int ImageId(int id)
static QString PathOf(const QString &path)
Extracts path from a filepath.
Synchronises image database to filesystem.
QList< ImagePtrK > ImageListK
Provides read access to local & remote images.
QMap< int, Device * > DeviceMap
bool GetVisibility() const
MythCoreContext * gCoreContext
This global variable contains the MythCoreContext instance for the app.
QVector< ImagePtr > ImageList
Filesystem adapter for Frontend, managing local devices iaw MediaMonitor.
static QString GetAbsThumbPath(const QString &devPath, const QString &path)
Get absolute filepath for thumbnail of an image.
static QString ImageId(const QString &id)
StringMap GetScanDirs() const
Returns local device dirs to scan.
QDir m_dirFilter
A pre-configured dir for reading image/video files.
This class contains the runtime context for MythTV.
QSharedPointer< ImageItem > ImagePtr
void SetType(int showType)
The image manager for use by Frontends.
Image Scanner thread requires a database/filesystem adapter.
int m_fileOrder
Display ordering of pics/videos.
ImageDbSg * m_remote
Remote database access.
Represents a picture, video or directory.
static constexpr const char * TEMP_SUBDIR
static int ToDbId(int id)
Converts local image ids (negative) to Db ids (positive)
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...
bool SetCover(int dir, int id) const
Set the thumbnail(s) to be used for a dir.
static QString ThumbPath(const ImageItem &im)
Thumbnails of videos are a JPEG snapshot with jpg suffix appended.
Manages image sources, ie.
static QString ImageId(const QString &id)
static constexpr const char * THUMBNAIL_SUBDIR
QString GetAbsFilePath(const ImagePtrK &im) const
Get absolute filepath for a remote image.
int m_dirOrder
Display ordering of dirs.
QStringList CloseDevices(int devId, const QString &action)
Remove a device (or all devices)
static void Notify(const QString &mesg, const QStringList &extra)
Send local message to UI about local ids.
A Database API with SG adapter for remote images.
QString MakeThumbUrl(const QString &devPath, const QString &path="") const
Construct URL of the thumbnail of a remote image.
StringMap GetScanDirs() const
Returns SG dirs.
QString m_table
Db table name.
ImageDisplayType
Display filter.
ImageItem * CreateItem(const QFileInfo &fi, int parentId, int devId, const QString &base) const
Construct a remote image from a file.
The image manager to be used by the Backend.
DeviceMap m_devices
Device store.
@ kVideoOnly
Hide pictures.
ImageNodeType GetImageType(const QString &ext) const
Determine file type from its extension.
QStringList m_imageFileExt
List of file extensions recognised as pictures.
static constexpr int DEVICE_INVALID
QString m_filePath
Absolute for local images. Usually SG-relative for remotes.
A Database with device adapter for local images.