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