Skip to content

Commit

Permalink
feat: 适配图像分类DBus接口
Browse files Browse the repository at this point in the history
  适配图像分类DBus接口

Log: 适配图像分类DBus接口
  • Loading branch information
starhcq authored and rb-union committed Nov 24, 2023
1 parent 05ca360 commit efad889
Show file tree
Hide file tree
Showing 5 changed files with 67 additions and 16 deletions.
2 changes: 1 addition & 1 deletion src/album/albumview/albumview.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -471,7 +471,7 @@ void AlbumView::initRightView()
//初始化最近删除列表
initTrashWidget();
//初始化图片分类列表
if (Classifyutils::GetInstance()->isLoaded()) {
if (Classifyutils::GetInstance()->isDBusExist()) {
initClassWidget();
} else {
m_pClassWidget = new DWidget();
Expand Down
6 changes: 3 additions & 3 deletions src/album/albumview/leftlistview.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ void LeftListView::initUI()
m_pPhotoLibListView->setItemDelegate(itemDelegate0);

m_pPhotoLibListView->setFixedWidth(LEFT_VIEW_WIDTH_180);
if (Classifyutils::GetInstance()->isLoaded())
if (Classifyutils::GetInstance()->isDBusExist())
m_pPhotoLibListView->setFixedHeight(160);
else
m_pPhotoLibListView->setFixedHeight(120);
Expand Down Expand Up @@ -145,7 +145,7 @@ void LeftListView::initUI()
m_pPhotoLibListView->setItemWidget(pListWidgetItem2, pAlbumLeftTabItem2);

// 图片分类
if (Classifyutils::GetInstance()->isLoaded()) {
if (Classifyutils::GetInstance()->isDBusExist()) {
QListWidgetItem *pListWidgetItem3 = new QListWidgetItem(m_pPhotoLibListView);
pListWidgetItem3->setSizeHint(QSize(LEFT_VIEW_LISTITEM_WIDTH_160, LEFT_VIEW_LISTITEM_HEIGHT_40));
AlbumLeftTabItem *pAlbumLeftTabItem3 = new AlbumLeftTabItem(COMMON_STR_CLASS, -1);
Expand Down Expand Up @@ -290,7 +290,7 @@ void LeftListView::updatePhotoListView()
m_pPhotoLibListView->setItemWidget(pListWidgetItem2, pAlbumLeftTabItem2);

// 图片分类
if (Classifyutils::GetInstance()->isLoaded()) {
if (Classifyutils::GetInstance()->isDBusExist()) {
QListWidgetItem *pListWidgetItem3 = new QListWidgetItem(m_pPhotoLibListView);
pListWidgetItem3->setSizeHint(QSize(LEFT_VIEW_LISTITEM_WIDTH_160, LEFT_VIEW_LISTITEM_HEIGHT_40));

Expand Down
2 changes: 1 addition & 1 deletion src/album/imageengine/imageenginethread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ DBImgInfo getDBInfo(const QString &srcpath, bool isVideo)
auto mds = getAllMetaData(srcpath);
QString value = mds.value("DateTimeOriginal");
dbi.itemType = ItemTypePic;
if (Classifyutils::GetInstance()->isLoaded()) {
if (Classifyutils::GetInstance()->isDBusExist()) {
if (srcfi.exists() && utils::base::isSupportClassify(srcpath))
dbi.className = Classifyutils::GetInstance()->imageClassify(srcpath.toStdString().c_str());
else
Expand Down
21 changes: 13 additions & 8 deletions src/album/utils/classifyutils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include <QLibrary>
#include <QLibraryInfo>

const QString ImageClassifyDBusServicePath = "/usr/share/dbus-1/system-services/com.deepin.imageclassify.service";
Classifyutils *Classifyutils::m_pInstance = nullptr;
Classifyutils *Classifyutils::GetInstance()
{
Expand All @@ -17,22 +18,26 @@ Classifyutils *Classifyutils::GetInstance()

QString Classifyutils::imageClassify(const QString &path)
{
if (!imageClassifyFunc)
if (!isDBusExist())
return "";

return imageClassifyFunc(path.toStdString().c_str());
return m_dbus->imageClassify(path);
}

bool Classifyutils::isLoaded()
bool Classifyutils::isDBusExist()
{
return imageClassifyFunc;
return m_bDBusExist;
}

Classifyutils::Classifyutils()
{
QLibrary library("libimageclassify.so");
imageClassifyFunc = reinterpret_cast<const char* (*)(const char *)>(library.resolve("getImageClassification"));
m_dbus = new DaemonImageClassifyInterface(this);
if (!m_dbus->isValid() && !m_dbus->lastError().message().isEmpty()) {
qCritical() << "dbus com.deepin.logviewer isValid false error:" << m_dbus->lastError() << m_dbus->lastError().message();
}

QFileInfo fi(ImageClassifyDBusServicePath);
m_bDBusExist = fi.exists();

if (!imageClassifyFunc)
return;
qDebug() << "dbus com.deepin.logviewer isValid true";
}
52 changes: 49 additions & 3 deletions src/album/utils/classifyutils.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,64 @@
#ifndef CLASSIFYUTILS_H
#define CLASSIFYUTILS_H
#include <QString>
#include <QtDBus/QtDBus>
/*
* Proxy class for interface com.deepin.logviewer
*/
class DaemonImageClassifyInterface : public QDBusAbstractInterface
{
Q_OBJECT
public:
static inline const char *staticInterfaceName()
{ return "com.deepin.imageclassify"; }
static inline const char *staticServiceName()
{ return "com.deepin.imageclassify"; }
static inline const char *staticObjectPath()
{ return "/com/deepin/imageclassify"; }

public:
DaemonImageClassifyInterface(QObject *parent = nullptr)
: QDBusAbstractInterface(staticServiceName(), staticObjectPath(), staticInterfaceName(), QDBusConnection::systemBus(), parent)
{

}

~DaemonImageClassifyInterface()
{

class Classifyutils
}

public Q_SLOTS: // METHODS
inline QDBusPendingReply<QString> imageClassify(const QString &filePath)
{
QList<QVariant> argumentList;
argumentList << QVariant::fromValue(filePath);
return asyncCallWithArgumentList(QStringLiteral("imageClassify"), argumentList);
}

Q_SIGNALS: // SIGNALS
};

namespace com {
namespace deepin {
typedef ::DaemonImageClassifyInterface imageclassify;
}
} // namespace com

class Classifyutils : public QObject
{
Q_OBJECT

public:
static Classifyutils *GetInstance();
QString imageClassify(const QString &path);
bool isLoaded();
bool isDBusExist();
private :
static Classifyutils *m_pInstance;
Classifyutils();

const char* (*imageClassifyFunc)(const char*) = nullptr;
bool m_bDBusExist{false};
DaemonImageClassifyInterface *m_dbus {nullptr};
};

#endif // CLASSIFYUTILS_H

0 comments on commit efad889

Please sign in to comment.