qguiplatformplugin_kde: qt2KdeFilter() and kde2QtFilter() functions optimizations

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2023-06-05 03:34:05 +03:00
parent be89c3a277
commit 3dfc8c65de

View file

@ -48,18 +48,18 @@ static QString qt2KdeFilter(const QString &f)
QString filter; QString filter;
QTextStream str(&filter, QIODevice::WriteOnly); QTextStream str(&filter, QIODevice::WriteOnly);
const QStringList list(f.split(";;").replaceInStrings("/", "\\/")); const QStringList list(f.split(";;").replaceInStrings("/", "\\/"));
bool first=true; bool first = true;
foreach(const QString it, list) { foreach (const QString &it, list) {
int ob = it.lastIndexOf('('), cb = it.lastIndexOf(')'); int ob = it.lastIndexOf('('), cb = it.lastIndexOf(')');
if(cb != -1 && ob < cb) { if (cb != -1 && ob < cb) {
if(first) { if (first) {
first=false; first=false;
} else { } else {
str << '\n'; str << '\n';
} }
str << (it).mid(ob+1, (cb-ob)-1) << '|' << (it).mid(0, ob); str << it.mid(ob+1, (cb-ob)-1) << '|' << it.mid(0, ob);
} }
} }
return filter; return filter;
@ -71,19 +71,17 @@ static QString qt2KdeFilter(const QString &f)
*/ */
static void kde2QtFilter(const QString &orig, const QString &kde, QString *sel) static void kde2QtFilter(const QString &orig, const QString &kde, QString *sel)
{ {
if(sel) if (sel) {
{
const QStringList list(orig.split(";;")); const QStringList list(orig.split(";;"));
int pos; int pos;
foreach(const QString it, list) { foreach (const QString &it, list) {
pos = it.indexOf(kde); pos = it.indexOf(kde);
if(pos != -1 && pos > 0 && if (pos != -1 && pos > 0 &&
(it[pos-1] == '(' || it[pos-1] == ' ') && (it[pos-1] == '(' || it[pos-1] == ' ') &&
it.length() >= (kde.length() + pos) && it.length() >= (kde.length() + pos) &&
(it[pos+kde.length()] == ')' || it[pos+kde.length()] == ' ')) (it[pos+kde.length()] == ')' || it[pos+kde.length()] == ' ')) {
{ *sel = it;
*sel=it;
return; return;
} }
} }
@ -153,24 +151,32 @@ public:
QMetaObject::invokeMethod(this, "init", Qt::QueuedConnection); QMetaObject::invokeMethod(this, "init", Qt::QueuedConnection);
} }
virtual QStringList keys() const { return QStringList() << QLatin1String("kde"); } virtual QStringList keys() const
{
return QStringList() << QLatin1String("kde");
}
virtual QString styleName() virtual QString styleName()
{ {
const KConfigGroup pConfig(KGlobal::config(), "General"); const KConfigGroup pConfig(KGlobal::config(), "General");
return pConfig.readEntry("widgetStyle", KStyle::defaultStyle()); return pConfig.readEntry("widgetStyle", KStyle::defaultStyle());
} }
virtual QPalette palette() virtual QPalette palette()
{ {
return KGlobalSettings::createApplicationPalette(); return KGlobalSettings::createApplicationPalette();
} }
virtual QString systemIconThemeName() virtual QString systemIconThemeName()
{ {
return KIconTheme::current(); return KIconTheme::current();
} }
virtual QStringList iconThemeSearchPaths() virtual QStringList iconThemeSearchPaths()
{ {
return KGlobal::dirs()->resourceDirs("icon"); return KGlobal::dirs()->resourceDirs("icon");
} }
virtual QIcon fileSystemIcon(const QFileInfo &file) virtual QIcon fileSystemIcon(const QFileInfo &file)
{ {
KMimeType::Ptr mime = KMimeType::findByPath(file.filePath(), 0, true); KMimeType::Ptr mime = KMimeType::findByPath(file.filePath(), 0, true);
@ -178,28 +184,31 @@ public:
return QIcon(); return QIcon();
return KIcon(mime->iconName()); return KIcon(mime->iconName());
} }
virtual int platformHint(PlatformHint hint)
virtual int platformHint(QGuiPlatformPlugin::PlatformHint hint)
{ {
switch(hint) switch(hint) {
{ case PH_ToolButtonStyle: {
case PH_ToolButtonStyle: { KConfigGroup group(KGlobal::config(), "Toolbar style");
KConfigGroup group(KGlobal::config(), "Toolbar style"); QString style = group.readEntry("ToolButtonStyle", "TextUnderIcon").toLower();
QString style = group.readEntry("ToolButtonStyle", "TextUnderIcon").toLower(); if (style == "textbesideicon" || style == "icontextright") {
if (style == "textbesideicon" || style == "icontextright") return Qt::ToolButtonTextBesideIcon;
return Qt::ToolButtonTextBesideIcon; } else if (style == "textundericon" || style == "icontextbottom") {
else if (style == "textundericon" || style == "icontextbottom") return Qt::ToolButtonTextUnderIcon;
return Qt::ToolButtonTextUnderIcon; } else if (style == "textonly") {
else if (style == "textonly") return Qt::ToolButtonTextOnly;
return Qt::ToolButtonTextOnly; }
else
return Qt::ToolButtonIconOnly; return Qt::ToolButtonIconOnly;
} }
case PH_ToolBarIconSize: case PH_ToolBarIconSize: {
return KIconLoader::global()->currentSize(KIconLoader::MainToolbar); return KIconLoader::global()->currentSize(KIconLoader::MainToolbar);
case PH_ItemView_ActivateItemOnSingleClick: }
return KGlobalSettings::singleClick(); case PH_ItemView_ActivateItemOnSingleClick: {
default: return KGlobalSettings::singleClick();
break; }
default: {
break;
}
} }
return QGuiPlatformPlugin::platformHint(hint); return QGuiPlatformPlugin::platformHint(hint);
} }
@ -211,6 +220,7 @@ public: // File Dialog integration
K_FD(qfd); K_FD(qfd);
delete kdefd; delete kdefd;
} }
virtual bool fileDialogSetVisible(QFileDialog *qfd, bool visible) virtual bool fileDialogSetVisible(QFileDialog *qfd, bool visible)
{ {
K_FD(qfd); K_FD(qfd);
@ -228,22 +238,25 @@ public: // File Dialog integration
if (visible) { if (visible) {
switch (qfd->fileMode()) { switch (qfd->fileMode()) {
case QFileDialog::AnyFile: case QFileDialog::AnyFile: {
kdefd->setMode(KFile::LocalOnly | KFile::File); kdefd->setMode(KFile::LocalOnly | KFile::File);
break; break;
case QFileDialog::ExistingFile: }
case QFileDialog::ExistingFile: {
kdefd->setMode(KFile::LocalOnly | KFile::File | KFile::ExistingOnly); kdefd->setMode(KFile::LocalOnly | KFile::File | KFile::ExistingOnly);
break; break;
case QFileDialog::ExistingFiles: }
case QFileDialog::ExistingFiles: {
kdefd->setMode(KFile::LocalOnly | KFile::Files | KFile::ExistingOnly); kdefd->setMode(KFile::LocalOnly | KFile::Files | KFile::ExistingOnly);
break; break;
}
case QFileDialog::Directory: case QFileDialog::Directory:
case QFileDialog::DirectoryOnly: case QFileDialog::DirectoryOnly: {
kdefd->setMode(KFile::LocalOnly | KFile::Directory); kdefd->setMode(KFile::LocalOnly | KFile::Directory);
break; break;
}
} }
kdefd->setOperationMode((qfd->acceptMode() == QFileDialog::AcceptSave) ? KFileDialog::Saving : KFileDialog::Opening); kdefd->setOperationMode((qfd->acceptMode() == QFileDialog::AcceptSave) ? KFileDialog::Saving : KFileDialog::Opening);
kdefd->setCaption(qfd->windowTitle()); kdefd->setCaption(qfd->windowTitle());
kdefd->setConfirmOverwrite(qfd->confirmOverwrite()); kdefd->setConfirmOverwrite(qfd->confirmOverwrite());
@ -252,49 +265,62 @@ public: // File Dialog integration
kdefd->setVisible(visible); kdefd->setVisible(visible);
return true; return true;
} }
virtual QDialog::DialogCode fileDialogResultCode(QFileDialog *qfd) virtual QDialog::DialogCode fileDialogResultCode(QFileDialog *qfd)
{ {
K_FD(qfd); K_FD(qfd);
Q_ASSERT(kdefd); Q_ASSERT(kdefd);
return QDialog::DialogCode(kdefd->result()); return QDialog::DialogCode(kdefd->result());
} }
virtual void fileDialogSetDirectory(QFileDialog *qfd, const QString &directory) virtual void fileDialogSetDirectory(QFileDialog *qfd, const QString &directory)
{ {
K_FD(qfd); K_FD(qfd);
kdefd->setUrl(KUrl::fromPath(directory)); kdefd->setUrl(KUrl::fromPath(directory));
} }
virtual QString fileDialogDirectory(const QFileDialog *qfd) const virtual QString fileDialogDirectory(const QFileDialog *qfd) const
{ {
K_FD(qfd); K_FD(qfd);
Q_ASSERT(kdefd); Q_ASSERT(kdefd);
return kdefd->baseUrl().pathOrUrl(); return kdefd->baseUrl().pathOrUrl();
} }
virtual void fileDialogSelectFile(QFileDialog *qfd, const QString &filename) virtual void fileDialogSelectFile(QFileDialog *qfd, const QString &filename)
{ {
K_FD(qfd); K_FD(qfd);
Q_ASSERT(kdefd); Q_ASSERT(kdefd);
kdefd->setSelection(filename); kdefd->setSelection(filename);
} }
virtual QStringList fileDialogSelectedFiles(const QFileDialog *qfd) const virtual QStringList fileDialogSelectedFiles(const QFileDialog *qfd) const
{ {
K_FD(qfd); K_FD(qfd);
Q_ASSERT(kdefd); Q_ASSERT(kdefd);
return kdefd->selectedFiles(); return kdefd->selectedFiles();
} }
/*virtual void fileDialogSetFilter(QFileDialog *qfd)
#if 0
virtual void fileDialogSetFilter(QFileDialog *qfd)
{ {
K_FD(qfd); K_FD(qfd);
}*/ }
#endif
virtual void fileDialogSetNameFilters(QFileDialog *qfd, const QStringList &filters) virtual void fileDialogSetNameFilters(QFileDialog *qfd, const QStringList &filters)
{ {
K_FD(qfd); K_FD(qfd);
Q_ASSERT(kdefd); Q_ASSERT(kdefd);
kdefd->setFilter(qt2KdeFilter(filters.join(";;"))); kdefd->setFilter(qt2KdeFilter(filters.join(";;")));
} }
/*virtual void fileDialogSelectNameFilter(QFileDialog *qfd, const QString &filter)
#if 0
virtual void fileDialogSelectNameFilter(QFileDialog *qfd, const QString &filter)
{ {
K_FD(qfd); K_FD(qfd);
}*/ }
#endif
virtual QString fileDialogSelectedNameFilter(const QFileDialog *qfd) const virtual QString fileDialogSelectedNameFilter(const QFileDialog *qfd) const
{ {
K_FD(qfd); K_FD(qfd);
@ -303,6 +329,7 @@ public: // File Dialog integration
kde2QtFilter(qfd->nameFilters().join(";;"), kdefd->currentFilter(), &ret); kde2QtFilter(qfd->nameFilters().join(";;"), kdefd->currentFilter(), &ret);
return ret; return ret;
} }
public: // ColorDialog public: // ColorDialog
#define K_CD(QCD) KColorDialogBridge *kdecd = qvariant_cast<KColorDialogBridge *>(QCD->property("_k_bridge")) #define K_CD(QCD) KColorDialogBridge *kdecd = qvariant_cast<KColorDialogBridge *>(QCD->property("_k_bridge"))
virtual void colorDialogDelete(QColorDialog *qcd) virtual void colorDialogDelete(QColorDialog *qcd)
@ -330,6 +357,7 @@ public: // ColorDialog
kdecd->setVisible(visible); kdecd->setVisible(visible);
return true; return true;
} }
virtual void colorDialogSetCurrentColor(QColorDialog *qcd, const QColor &color) virtual void colorDialogSetCurrentColor(QColorDialog *qcd, const QColor &color)
{ {
K_CD(qcd); K_CD(qcd);