forked from openkylin/ukui-search
Merge branch '0908dev' into 'dev-unity'
Fix: incomplete file name display;the contents of some files are not fully displayed.
This commit is contained in:
parent
bc877ce406
commit
70d7135e54
|
@ -2,6 +2,7 @@
|
|||
#define COMMON_H
|
||||
#include <QMap>
|
||||
#define UKUI_SEARCH_PIPE_PATH (QDir::homePath()+"/.config/org.ukui/ukui-search/ukuisearch").toLocal8Bit().constData()
|
||||
#define LABEL_MAX_WIDTH 320
|
||||
#define HOME_PATH QDir::homePath()
|
||||
static const QMap<QString, bool> targetFileTypeMap = {
|
||||
std::map<QString, bool>::value_type("doc", true),
|
||||
|
|
|
@ -839,3 +839,32 @@ QString FileUtils::chineseSubString(const std::string &data, int start, int leng
|
|||
}
|
||||
return snippet;
|
||||
}
|
||||
|
||||
QString FileUtils::wrapData(QLabel *p_label, const QString &text)
|
||||
{
|
||||
QString wrapText = text;
|
||||
|
||||
QFontMetrics fontMetrics = p_label->fontMetrics();
|
||||
int textSize = fontMetrics.width(wrapText);
|
||||
|
||||
if(textSize > LABEL_MAX_WIDTH){
|
||||
int lastIndex = 0;
|
||||
int count = 0;
|
||||
|
||||
for(int i = lastIndex; i < wrapText.length(); i++) {
|
||||
|
||||
if(fontMetrics.width(wrapText.mid(lastIndex, i - lastIndex)) == LABEL_MAX_WIDTH) {
|
||||
lastIndex = i;
|
||||
wrapText.insert(i, '\n');
|
||||
count++;
|
||||
} else if(fontMetrics.width(wrapText.mid(lastIndex, i - lastIndex)) > LABEL_MAX_WIDTH) {
|
||||
lastIndex = i;
|
||||
wrapText.insert(i - 1, '\n');
|
||||
count++;
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
return wrapText;
|
||||
}
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
#include <QQueue>
|
||||
#include <QApplication>
|
||||
#include <QFontMetrics>
|
||||
#include <QLabel>
|
||||
|
||||
#include <quazip/quazipfile.h>
|
||||
#include <stdio.h>
|
||||
|
@ -49,6 +50,7 @@
|
|||
#include <uchardet/uchardet.h>
|
||||
//#include <poppler-qt5.h>
|
||||
#include <poppler/qt5/poppler-qt5.h>
|
||||
#include <common.h>
|
||||
|
||||
#include "libsearch_global.h"
|
||||
#include "gobject-template.h"
|
||||
|
@ -86,6 +88,7 @@ public:
|
|||
static void getPdfTextContent(QString &path, QString &textcontent);
|
||||
static void getTxtContent(QString &path, QString &textcontent);
|
||||
static QString chineseSubString(const std::string &data, int start, int length);
|
||||
static QString wrapData(QLabel *p_label, const QString &text);
|
||||
static size_t _max_index_count;
|
||||
static size_t _current_index_count; //this one has been Abandoned,do not use it.
|
||||
static unsigned short _index_status;
|
||||
|
|
|
@ -206,6 +206,7 @@ void SearchDetailView::setAppWidget(const QString &appname, const QString &path,
|
|||
if(description != "" && !description.isEmpty()) {
|
||||
m_detailFrame->show();
|
||||
m_contentLabel->show();
|
||||
m_contentLabel->setWordWrap(true);
|
||||
m_contentLabel->setText(QString(tr("Introduction: %1")).arg(description));
|
||||
}
|
||||
setIcon(iconpath, false);
|
||||
|
@ -216,7 +217,7 @@ void SearchDetailView::setAppWidget(const QString &appname, const QString &path,
|
|||
m_optionView->show();
|
||||
|
||||
QFontMetrics fontMetrics = m_nameLabel->fontMetrics();
|
||||
QString showname = fontMetrics.elidedText(m_name, Qt::ElideRight, 274); //当字体长度超过215时显示为省略号
|
||||
QString showname = fontMetrics.elidedText(m_name, Qt::ElideRight, 215); //当字体长度超过215时显示为省略号
|
||||
// m_nameLabel->setText(showname);
|
||||
m_nameLabel->setText(QString("<h3 style=\"font-weight:normal;\">%1</h3>").arg(escapeHtml(showname)));
|
||||
if(QString::compare(showname, m_name)) {
|
||||
|
@ -257,7 +258,7 @@ QString SearchDetailView::getHtmlText(const QString & text, const QString & keyw
|
|||
if((keyword.toUpper()).contains(QString(text.at(i)).toUpper())) {
|
||||
if(! boldOpenned) {
|
||||
boldOpenned = true;
|
||||
htmlString.append(QString("<b><font size=\"4\">"));
|
||||
htmlString.append(QString("<b><font size=\"3\">"));
|
||||
}
|
||||
htmlString.append(escapeHtml(QString(text.at(i))));
|
||||
} else {
|
||||
|
@ -306,7 +307,8 @@ void SearchDetailView::setupWidget(const int& type, const QString& path) {
|
|||
m_detailFrame->show();
|
||||
if(isContent) { //文件内容区域
|
||||
m_contentLabel->show();
|
||||
m_contentLabel->setText(QApplication::translate("", getHtmlText(m_contentText, m_keyword).toLocal8Bit(), nullptr));
|
||||
m_contentLabel->setWordWrap(false);
|
||||
m_contentLabel->setText(QApplication::translate("", getHtmlText(FileUtils::wrapData(m_contentLabel,m_contentText), m_keyword).toLocal8Bit(),nullptr));
|
||||
}
|
||||
m_pathFrame->show();
|
||||
m_timeFrame->show();
|
||||
|
@ -351,7 +353,7 @@ void SearchDetailView::setupWidget(const int& type, const QString& path) {
|
|||
setIcon(path);
|
||||
QFontMetrics fontMetrics = m_nameLabel->fontMetrics();
|
||||
QString wholeName = FileUtils::getFileName(path);
|
||||
QString name = fontMetrics.elidedText(wholeName, Qt::ElideRight, 274);
|
||||
QString name = fontMetrics.elidedText(wholeName, Qt::ElideRight, 215);
|
||||
// m_nameLabel->setText(name);
|
||||
m_nameLabel->setText(QString("<h3 style=\"font-weight:normal;\">%1</h3>").arg(escapeHtml(name)));
|
||||
if(QString::compare(name, wholeName)) {
|
||||
|
@ -514,8 +516,7 @@ void SearchDetailView::initUI() {
|
|||
|
||||
//文件内容区域
|
||||
m_contentLabel = new QLabel(m_detailFrame);
|
||||
m_contentLabel->setWordWrap(true);
|
||||
m_contentLabel->setContentsMargins(9, 0, 9, 0);
|
||||
m_contentLabel->setContentsMargins(0, 0, 0, 0);
|
||||
m_detailLyt->addWidget(m_contentLabel);
|
||||
|
||||
//路径与修改时间区域
|
||||
|
|
Loading…
Reference in New Issue