Add actions.

This commit is contained in:
iaom 2021-07-05 14:27:14 +08:00
parent f99ce401e6
commit 29e8968938
7 changed files with 36 additions and 21 deletions

View File

@ -138,6 +138,7 @@ QString escapeHtml(const QString & str) {
void DetailWidget::setWidgetInfo(const QString &plugin_name, const SearchPluginIface::ResultInfo &info) void DetailWidget::setWidgetInfo(const QString &plugin_name, const SearchPluginIface::ResultInfo &info)
{ {
clearLayout(m_descFrameLyt);
m_iconLabel->setPixmap(info.icon.pixmap(info.icon.actualSize(ICON_SIZE))); m_iconLabel->setPixmap(info.icon.pixmap(info.icon.actualSize(ICON_SIZE)));
m_iconLabel->show(); m_iconLabel->show();
QFontMetrics fontMetrics = m_nameLabel->fontMetrics(); QFontMetrics fontMetrics = m_nameLabel->fontMetrics();
@ -147,6 +148,7 @@ void DetailWidget::setWidgetInfo(const QString &plugin_name, const SearchPluginI
m_pluginLabel->setText(plugin_name); m_pluginLabel->setText(plugin_name);
m_nameFrame->show(); m_nameFrame->show();
m_line_1->show(); m_line_1->show();
if (info.description.length() > 0) { if (info.description.length() > 0) {
//NEW_TODO 样式待优化 //NEW_TODO 样式待优化
clearLayout(m_descFrameLyt); clearLayout(m_descFrameLyt);
@ -162,10 +164,10 @@ void DetailWidget::setWidgetInfo(const QString &plugin_name, const SearchPluginI
m_line_2->show(); m_line_2->show();
} }
clearLayout(m_actionFrameLyt); clearLayout(m_actionFrameLyt);
// Q_FOREACH (auto action, info.actionList) { Q_FOREACH (SearchPluginIface::Actioninfo actioninfo, SearchPluginManager::getInstance()->getPlugin(plugin_name)->getActioninfo(info.type)) {
// ActionLabel * actionLabel = new ActionLabel(action, info.key, plugin_name, m_actionFrame); ActionLabel * actionLabel = new ActionLabel(actioninfo.displayName, info.actionKey, actioninfo.actionkey, plugin_name, info.type, m_actionFrame);
// m_actionFrameLyt->addWidget(actionLabel); m_actionFrameLyt->addWidget(actionLabel);
// } }
m_actionFrame->show(); m_actionFrame->show();
} }
@ -248,7 +250,7 @@ void DetailWidget::paintEvent(QPaintEvent * event)
void DetailWidget::clearLayout(QLayout *layout) void DetailWidget::clearLayout(QLayout *layout)
{ {
if(! layout) return; if(!layout) return;
QLayoutItem * child; QLayoutItem * child;
while((child = layout->takeAt(0)) != 0) { while((child = layout->takeAt(0)) != 0) {
if(child->widget()) { if(child->widget()) {
@ -259,11 +261,13 @@ void DetailWidget::clearLayout(QLayout *layout)
child = NULL; child = NULL;
} }
ActionLabel::ActionLabel(const QString &action, const QString &key, const QString &plugin, QWidget *parent) : QLabel(parent) ActionLabel::ActionLabel(const QString &action, const QString &key, const int &ActionKey, const QString &pluginId, const int type, QWidget *parent) : QLabel(parent)
{ {
m_action = action; m_action = action;
m_key = key; m_key = key;
m_plugin = plugin; m_actionKey = ActionKey;
m_type = type;
m_pluginId = pluginId;
this->initUi(); this->initUi();
this->installEventFilter(this); this->installEventFilter(this);
} }
@ -287,10 +291,10 @@ bool ActionLabel::eventFilter(QObject *watched, QEvent *event)
this->setForegroundRole(QPalette::Dark); this->setForegroundRole(QPalette::Dark);
return true; return true;
} else if(event->type() == QEvent::MouseButtonRelease) { } else if(event->type() == QEvent::MouseButtonRelease) {
SearchPluginIface *plugin = SearchPluginManager::getInstance()->getPlugin(m_plugin); SearchPluginIface *plugin = SearchPluginManager::getInstance()->getPlugin(m_pluginId);
// if (plugin) if (plugin)
// plugin->openAction(m_action, m_key); plugin->openAction(m_actionKey, m_key, m_type);
// else else
qWarning()<<"Get plugin failed!"; qWarning()<<"Get plugin failed!";
this->setForegroundRole(QPalette::Light); this->setForegroundRole(QPalette::Light);
return true; return true;

View File

@ -25,7 +25,7 @@
#include <QPainter> #include <QPainter>
#include <QStyleOption> #include <QStyleOption>
#include "result-view.h" #include "result-view.h"
#include "plugininterface/search-plugin-iface.h" #include "search-plugin-iface.h"
namespace Zeeker { namespace Zeeker {
class ResultArea : public QScrollArea class ResultArea : public QScrollArea
@ -100,13 +100,15 @@ class ActionLabel : public QLabel
{ {
Q_OBJECT Q_OBJECT
public: public:
ActionLabel(const QString &action, const QString &key, const QString &plugin, QWidget *parent = nullptr); ActionLabel(const QString &action, const QString &key, const int &ActionKey, const QString &pluginId, const int type = 0, QWidget *parent = nullptr);
~ActionLabel() = default; ~ActionLabel() = default;
private: private:
void initUi(); void initUi();
QString m_action; QString m_action;
QString m_key; QString m_key;
QString m_plugin; int m_actionKey;
int m_type = 0;
QString m_pluginId;
protected: protected:
bool eventFilter(QObject *, QEvent *); bool eventFilter(QObject *, QEvent *);

View File

@ -21,7 +21,7 @@
#include "search-page.h" #include "search-page.h"
using namespace Zeeker; using namespace Zeeker;
#define RESULT_WIDTH 240 #define RESULT_WIDTH 298
#define DETAIL_WIDTH 400 #define DETAIL_WIDTH 400
SearchPage::SearchPage(QWidget *parent) : QWidget(parent) SearchPage::SearchPage(QWidget *parent) : QWidget(parent)

View File

@ -42,12 +42,12 @@
#define UKUI_SEARCH_SCHEMAS "org.ukui.search.settings" #define UKUI_SEARCH_SCHEMAS "org.ukui.search.settings"
#define SEARCH_METHOD_KEY "indexSearch" #define SEARCH_METHOD_KEY "indexSearch"
#define WEB_ENGINE_KEY "webEngine" #define WEB_ENGINE_KEY "webEngine"
#define WINDOW_WIDTH 640 #define WINDOW_WIDTH 680
#define WINDOW_HEIGHT 590 #define WINDOW_HEIGHT 600
#define TITLE_HEIGHT 40 #define TITLE_HEIGHT 40
#define WINDOW_ICON_SIZE 24 #define WINDOW_ICON_SIZE 24
#define SETTING_BTN_SIZE 30 #define SETTING_BTN_SIZE 30
#define SEARCH_BAR_SIZE 44 #define SEARCH_BAR_SIZE 48
#define ASK_INDEX_TIME 5*1000 #define ASK_INDEX_TIME 5*1000
#define RESEARCH_TIME 10*1000 #define RESEARCH_TIME 10*1000

View File

@ -12,6 +12,13 @@ void ResultViewDelegate::setSearchKeyword(const QString &regFindKeyWords)
m_regFindKeyWords = regFindKeyWords; m_regFindKeyWords = regFindKeyWords;
} }
QSize ResultViewDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QSize size = QStyledItemDelegate::sizeHint(option,index);
size.setHeight(size.height() + 10);
return size;
}
void ResultViewDelegate::paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const { void ResultViewDelegate::paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const {
QStyleOptionViewItemV4 optionV4 = option; QStyleOptionViewItemV4 optionV4 = option;
initStyleOption(&optionV4, index); initStyleOption(&optionV4, index);
@ -30,7 +37,7 @@ void ResultViewDelegate::paint(QPainter * painter, const QStyleOptionViewItem &
ctx.palette.setColor(QPalette::Text, optionV4.palette.color(QPalette::Active, QPalette::HighlightedText)); ctx.palette.setColor(QPalette::Text, optionV4.palette.color(QPalette::Active, QPalette::HighlightedText));
QRect textRect = style->subElementRect(QStyle::SE_ItemViewItemText, &optionV4); QRect textRect = style->subElementRect(QStyle::SE_ItemViewItemText, &optionV4);
textRect.adjust(0, -5, 0, 0); textRect.adjust(0, 0, 0, 0);
painter->save(); painter->save();
painter->translate(textRect.topLeft()); painter->translate(textRect.topLeft());
painter->setClipRect(textRect.translated(-textRect.topLeft())); painter->setClipRect(textRect.translated(-textRect.topLeft()));

View File

@ -35,6 +35,8 @@ public:
explicit ResultViewDelegate(QObject *parent = nullptr); explicit ResultViewDelegate(QObject *parent = nullptr);
~ResultViewDelegate() = default; ~ResultViewDelegate() = default;
void setSearchKeyword(const QString &); void setSearchKeyword(const QString &);
protected:
QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;
private: private:
QString m_regFindKeyWords = 0; QString m_regFindKeyWords = 0;
void paint(QPainter *, const QStyleOptionViewItem &, const QModelIndex &) const override; void paint(QPainter *, const QStyleOptionViewItem &, const QModelIndex &) const override;

View File

@ -104,11 +104,11 @@ bool AppSearchPlugin::addPanelShortcut(const QString& path) {
if(iface.isValid()) { if(iface.isValid()) {
QDBusReply<bool> isExist = iface.call("CheckIfExist", path); QDBusReply<bool> isExist = iface.call("CheckIfExist", path);
if(isExist) { if(isExist) {
qWarning() << "qDebug: Add shortcut to panel failed, because it is already existed!"; qWarning() << "Add shortcut to panel failed, because it is already existed!";
return false; return false;
} }
QDBusReply<QVariant> ret = iface.call("AddToTaskbar", path); QDBusReply<QVariant> ret = iface.call("AddToTaskbar", path);
qDebug() << "qDebug: Add shortcut to panel successed!"; qDebug() << "Add shortcut to panel successed!";
return true; return true;
} }
return false; return false;