ukui-search/libsearch/appdata/app-info-table-private.h

87 lines
2.8 KiB
C++

/*
*
* Copyright (C) 2023, KylinSoft Co., Ltd.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* Authors: iaom <zhangpengfei@kylinos.cn>
*/
#ifndef APPINFOTABLEPRIVATE_H
#define APPINFOTABLEPRIVATE_H
#include "app-info-table.h"
#include <QObject>
#include <QDBusInterface>
#include <QSqlDatabase>
namespace UkuiSearch {
class AppInfoTablePrivate : public QObject
{
Q_OBJECT
friend class AppInfoTable;
public:
explicit AppInfoTablePrivate(AppInfoTable *parent = nullptr);
AppInfoTablePrivate(AppInfoTablePrivate &) = delete;
AppInfoTablePrivate &operator =(const AppInfoTablePrivate &) = delete;
//设置应用的置顶和收藏
void setAppFavoritesState(const QString &desktopfp);
void setAppFavoritesState(const QString &desktopfp, uint num);
void setAppTopState(const QString &desktopfp);
void setAppTopState(const QString &desktopfp, uint num);
void setAppLaunchedState(const QString &desktopFilePath, bool launched);
//搜索接口
bool searchInstallApp(QString &keyWord, QStringList &installAppInfoRes);
bool searchInstallApp(QStringList &keyWord, QStringList &installAppInfoRes);
//数据库错误信息
QString lastError(void) const;
//通过pid查找desktop文件
bool tranPidToDesktopFp(uint pid, QString &desktopfp);
bool desktopFilePathFromName(const QString &desktopFileName, QString &desktopFilePath);
//下面的接口都不外放,暂时没啥用
bool setAppLaunchTimes(const QString &desktopfp, size_t num);
bool updateAppLaunchTimes(const QString &desktopfp);
bool setAppLockState(const QString &desktopfp, size_t num);
private:
~AppInfoTablePrivate();
bool initDateBaseConnection();
bool openDataBase();
void closeDataBase();
QDBusInterface *m_signalTransInterface = nullptr;
QDBusInterface *m_appDBInterface = nullptr;
AppInfoTable *q = nullptr;
QSqlDatabase *m_database = nullptr;
QString m_ConnectionName;
public Q_SLOTS:
void sendAppDBItemsUpdate(ApplicationInfoMap results);
void sendAppDBItemsUpdateAll(QStringList desktopFilePaths);
void sendAppDBItemsAdd(QStringList desktopFilePaths);
void sendAppDBItemsDelete(QStringList desktopFilePaths);
};
}
#endif // APPINFOTABLEPRIVATE_H