forked from pool/kde-cli-tools5
1890 lines
66 KiB
Diff
1890 lines
66 KiB
Diff
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
index d62ee8b..7b8e421 100644
|
|
--- a/CMakeLists.txt
|
|
+++ b/CMakeLists.txt
|
|
@@ -1,7 +1,7 @@
|
|
project(KDE-CLI-Tools)
|
|
|
|
cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
|
|
-set(QT_MIN_VERSION "5.2.0")
|
|
+set(QT_MIN_VERSION "5.3.0")
|
|
|
|
find_package(ECM 0.0.11 REQUIRED NO_MODULE)
|
|
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})
|
|
@@ -15,6 +15,7 @@ include(CheckIncludeFiles)
|
|
find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
|
|
Widgets
|
|
Svg
|
|
+ DBus
|
|
)
|
|
|
|
find_package(Qt5X11Extras ${QT_MIN_VERSION} CONFIG)
|
|
@@ -31,9 +32,12 @@ endif()
|
|
|
|
find_package(KF5 REQUIRED COMPONENTS
|
|
Config
|
|
+ IconThemes
|
|
+ I18n
|
|
KCMUtils
|
|
Su
|
|
KDE4Support
|
|
+ WindowSystem
|
|
)
|
|
|
|
feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
|
|
diff --git a/doc/kdesu/CMakeLists.txt b/doc/kdesu/CMakeLists.txt
|
|
index e43e73a..f5f2eb8 100644
|
|
--- a/doc/kdesu/CMakeLists.txt
|
|
+++ b/doc/kdesu/CMakeLists.txt
|
|
@@ -2,6 +2,6 @@
|
|
#
|
|
|
|
#
|
|
-kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${HTML_INSTALL_DIR}/en)
|
|
+kdoctools_create_handbook(index.docbook INSTALL_DESTINATION ${HTML_INSTALL_DIR}/en SUBDIR kdesu)
|
|
|
|
kdoctools_create_manpage(man-kdesu.1.docbook 1 INSTALL_DESTINATION ${MAN_INSTALL_DIR})
|
|
diff --git a/kdesu/kdesu.cpp b/kdesu/kdesu.cpp
|
|
index d5c7f72..5d40ead 100644
|
|
--- a/kdesu/kdesu.cpp
|
|
+++ b/kdesu/kdesu.cpp
|
|
@@ -81,9 +81,9 @@ int main(int argc, char *argv[])
|
|
if (duser.isEmpty())
|
|
duser = "root";
|
|
|
|
- KAboutData aboutData("kdesu", 0, i18n("KDE su"),
|
|
+ KAboutData aboutData("kdesu", i18n("KDE su"),
|
|
Version, i18n("Runs a program with elevated privileges."),
|
|
- KAboutData::License_Artistic,
|
|
+ KAboutLicense::Artistic,
|
|
i18n("Copyright (c) 1998-2000 Geert Jansen, Pietro Iglio"));
|
|
aboutData.addAuthor(i18n("Geert Jansen"), i18n("Maintainer"),
|
|
"jansen@kde.org", "http://www.stack.nl/~geertj/");
|
|
diff --git a/keditfiletype/CMakeLists.txt b/keditfiletype/CMakeLists.txt
|
|
index 566e76a..45badef 100644
|
|
--- a/keditfiletype/CMakeLists.txt
|
|
+++ b/keditfiletype/CMakeLists.txt
|
|
@@ -10,7 +10,6 @@ set(libfiletypes_SRCS
|
|
mimetypewriter.cpp
|
|
newtypedlg.cpp
|
|
kserviceselectdlg.cpp
|
|
- sharedmimeinfoversion.cpp
|
|
)
|
|
|
|
########### next target ###############
|
|
@@ -19,7 +18,13 @@ set(kcm_filetypes_SRCS filetypesview.cpp ${libfiletypes_SRCS})
|
|
|
|
add_library(kcm_filetypes MODULE ${kcm_filetypes_SRCS})
|
|
|
|
-target_link_libraries(kcm_filetypes KF5::KDE4Support KF5::KIOWidgets)
|
|
+target_link_libraries(kcm_filetypes
|
|
+ KF5::ConfigWidgets
|
|
+ KF5::IconThemes
|
|
+ KF5::I18n
|
|
+ KF5::KIOWidgets
|
|
+ Qt5::DBus
|
|
+)
|
|
|
|
install(TARGETS kcm_filetypes DESTINATION ${PLUGIN_INSTALL_DIR} )
|
|
|
|
@@ -29,7 +34,14 @@ set(keditfiletype_SRCS keditfiletype.cpp ${libfiletypes_SRCS})
|
|
|
|
add_executable(keditfiletype5 ${keditfiletype_SRCS})
|
|
|
|
-target_link_libraries(keditfiletype5 KF5::KDE4Support KF5::KIOWidgets)
|
|
+target_link_libraries(keditfiletype5
|
|
+ KF5::ConfigCore
|
|
+ KF5::IconThemes
|
|
+ KF5::KIOWidgets
|
|
+ KF5::WindowSystem
|
|
+ KF5::I18n
|
|
+ Qt5::DBus
|
|
+)
|
|
if (Q_WS_X11)
|
|
target_link_libraries(keditfiletype5 ${X11_X11_LIB})
|
|
endif ()
|
|
diff --git a/keditfiletype/filegroupdetails.cpp b/keditfiletype/filegroupdetails.cpp
|
|
index c733ba4..579b74d 100644
|
|
--- a/keditfiletype/filegroupdetails.cpp
|
|
+++ b/keditfiletype/filegroupdetails.cpp
|
|
@@ -25,7 +25,7 @@
|
|
#include <QButtonGroup>
|
|
#include <QGroupBox>
|
|
|
|
-#include <klocale.h>
|
|
+#include <klocalizedstring.h>
|
|
|
|
FileGroupDetails::FileGroupDetails(QWidget *parent)
|
|
: QWidget( parent )
|
|
diff --git a/keditfiletype/filetypedetails.cpp b/keditfiletype/filetypedetails.cpp
|
|
index bfcbb07..71acf7e 100644
|
|
--- a/keditfiletype/filetypedetails.cpp
|
|
+++ b/keditfiletype/filetypedetails.cpp
|
|
@@ -19,28 +19,27 @@
|
|
|
|
// Own
|
|
#include "filetypedetails.h"
|
|
-#include "sharedmimeinfoversion.h"
|
|
|
|
// Qt
|
|
#include <QBoxLayout>
|
|
#include <QButtonGroup>
|
|
#include <QCheckBox>
|
|
+#include <QDebug>
|
|
+#include <QInputDialog>
|
|
+#include <QLabel>
|
|
#include <QLayout>
|
|
#include <QListWidget>
|
|
+#include <QPushButton>
|
|
#include <QRadioButton>
|
|
-#include <QLabel>
|
|
|
|
// KDE
|
|
#include <kconfig.h>
|
|
#include <kconfiggroup.h>
|
|
-#include <kdebug.h>
|
|
#include <kicondialog.h>
|
|
-#include <kinputdialog.h>
|
|
#include <klineedit.h>
|
|
+#include <klocalizedstring.h>
|
|
#include <kiconbutton.h>
|
|
-#include <klocale.h>
|
|
-#include <kicon.h>
|
|
-#include <kpushbutton.h>
|
|
+#include <ksharedconfig.h>
|
|
|
|
// Local
|
|
#include "kservicelistwidget.h"
|
|
@@ -51,6 +50,7 @@ FileTypeDetails::FileTypeDetails( QWidget * parent )
|
|
{
|
|
|
|
QVBoxLayout* topLayout = new QVBoxLayout(this);
|
|
+ topLayout->setContentsMargins(0, 0, 0, 0);
|
|
|
|
m_mimeTypeLabel = new QLabel(this);
|
|
topLayout->addWidget(m_mimeTypeLabel, 0, Qt::AlignCenter);
|
|
@@ -66,23 +66,14 @@ FileTypeDetails::FileTypeDetails( QWidget * parent )
|
|
QHBoxLayout *hBox = new QHBoxLayout();
|
|
firstLayout->addLayout(hBox);
|
|
|
|
- if (SharedMimeInfoVersion::supportsIcon()) {
|
|
- iconButton = new KIconButton(firstWidget);
|
|
- iconButton->setIconType(KIconLoader::Desktop, KIconLoader::MimeType);
|
|
- connect(iconButton, SIGNAL(iconChanged(QString)), SLOT(updateIcon(QString)));
|
|
- iconButton->setWhatsThis( i18n("This button displays the icon associated"
|
|
- " with the selected file type. Click on it to choose a different icon.") );
|
|
- iconButton->setFixedSize(70, 70);
|
|
- iconLabel = 0;
|
|
- hBox->addWidget(iconButton);
|
|
- } else {
|
|
- iconButton = 0;
|
|
- iconLabel = new QLabel(firstWidget);
|
|
- iconLabel->setWhatsThis( i18n("This is the icon associated with the selected file type. "
|
|
- "Choosing a different icon requires shared-mime-info to be at least version 0.40.") );
|
|
- iconLabel->setFixedSize(70, 70);
|
|
- hBox->addWidget(iconLabel);
|
|
- }
|
|
+ iconButton = new KIconButton(firstWidget);
|
|
+ iconButton->setIconType(KIconLoader::Desktop, KIconLoader::MimeType);
|
|
+ connect(iconButton, SIGNAL(iconChanged(QString)), SLOT(updateIcon(QString)));
|
|
+ iconButton->setWhatsThis( i18n("This button displays the icon associated"
|
|
+ " with the selected file type. Click on it to choose a different icon.") );
|
|
+ iconButton->setFixedSize(70, 70);
|
|
+ iconLabel = 0;
|
|
+ hBox->addWidget(iconButton);
|
|
|
|
QGroupBox *gb = new QGroupBox(i18n("Filename Patterns"), firstWidget);
|
|
hBox->addWidget(gb);
|
|
@@ -104,16 +95,16 @@ FileTypeDetails::FileTypeDetails( QWidget * parent )
|
|
QVBoxLayout *vbox = new QVBoxLayout();
|
|
hBox->addLayout(vbox);
|
|
|
|
- addExtButton = new KPushButton(i18n("Add..."), gb);
|
|
- addExtButton->setIcon(KIcon("list-add"));
|
|
+ addExtButton = new QPushButton(i18n("Add..."), gb);
|
|
+ addExtButton->setIcon(QIcon::fromTheme("list-add"));
|
|
addExtButton->setEnabled(false);
|
|
connect(addExtButton, SIGNAL(clicked()),
|
|
this, SLOT(addExtension()));
|
|
vbox->addWidget(addExtButton);
|
|
addExtButton->setWhatsThis( i18n("Add a new pattern for the selected file type.") );
|
|
|
|
- removeExtButton = new KPushButton(i18n("Remove"), gb);
|
|
- removeExtButton->setIcon(KIcon("list-remove"));
|
|
+ removeExtButton = new QPushButton(i18n("Remove"), gb);
|
|
+ removeExtButton->setIcon(QIcon::fromTheme("list-remove"));
|
|
removeExtButton->setEnabled(false);
|
|
connect(removeExtButton, SIGNAL(clicked()),
|
|
this, SLOT(removeExtension()));
|
|
@@ -221,8 +212,9 @@ void FileTypeDetails::addExtension()
|
|
return;
|
|
|
|
bool ok;
|
|
- QString ext = KInputDialog::getText( i18n( "Add New Extension" ),
|
|
- i18n( "Extension:" ), "*.", &ok, this );
|
|
+ QString ext = QInputDialog::getText(this,
|
|
+ i18n( "Add New Extension" ), i18n( "Extension:" ),
|
|
+ QLineEdit::Normal, "*.", &ok);
|
|
if (ok) {
|
|
extensionLB->addItem(ext);
|
|
QStringList patt = m_mimeTypeData->patterns();
|
|
@@ -263,6 +255,7 @@ void FileTypeDetails::updateAskSave()
|
|
{
|
|
if ( !m_mimeTypeData )
|
|
return;
|
|
+ QMimeDatabase db;
|
|
|
|
MimeTypeData::AutoEmbed autoEmbed = m_mimeTypeData->autoEmbed();
|
|
if (m_mimeTypeData->isMeta() && autoEmbed == MimeTypeData::UseGroupSetting) {
|
|
@@ -287,11 +280,11 @@ void FileTypeDetails::updateAskSave()
|
|
bool neverAsk = false;
|
|
|
|
if (autoEmbed == MimeTypeData::Yes) {
|
|
- const KMimeType::Ptr mime = KMimeType::mimeType( mimeType );
|
|
- if (mime) {
|
|
+ const QMimeType mime = db.mimeTypeForName( mimeType );
|
|
+ if (mime.isValid()) {
|
|
// SYNC SYNC SYNC SYNC SYNC SYNC SYNC SYNC SYNC SYNC SYNC SYNC SYNC SYNC
|
|
// NOTE: Keep this function in sync with
|
|
- // kdelibs/kparts/browseropenorsavequestion.cpp BrowserOpenOrSaveQuestionPrivate::autoEmbedMimeType
|
|
+ // kparts/src/browseropenorsavequestion.cpp BrowserOpenOrSaveQuestionPrivate::autoEmbedMimeType
|
|
|
|
// Don't ask for:
|
|
// - html (even new tabs would ask, due to about:blank!)
|
|
@@ -300,12 +293,12 @@ void FileTypeDetails::updateAskSave()
|
|
// e.g. postscript is different, because takes longer to read, so
|
|
// it's more likely that the user might want to save it.
|
|
// - multipart/* ("server push", see kmultipart)
|
|
- if ( mime->is( "text/html" ) ||
|
|
- mime->is( "application/xml" ) ||
|
|
- mime->is( "inode/directory" ) ||
|
|
- mimeType.startsWith( QLatin1String("image") ) ||
|
|
- mime->is( "multipart/x-mixed-replace" ) ||
|
|
- mime->is( "multipart/replace" ) )
|
|
+ if (mime.inherits(QStringLiteral("text/html")) ||
|
|
+ mime.inherits(QStringLiteral("application/xml")) ||
|
|
+ mime.inherits(QStringLiteral("inode/directory")) ||
|
|
+ mimeType.startsWith(QLatin1String("image")) ||
|
|
+ mime.inherits(QStringLiteral("multipart/x-mixed-replace")) ||
|
|
+ mime.inherits(QStringLiteral("multipart/replace")))
|
|
{
|
|
neverAsk = true;
|
|
}
|
|
diff --git a/keditfiletype/filetypedetails.h b/keditfiletype/filetypedetails.h
|
|
index 7c0abb4..a050642 100644
|
|
--- a/keditfiletype/filetypedetails.h
|
|
+++ b/keditfiletype/filetypedetails.h
|
|
@@ -32,7 +32,7 @@ class QButtonGroup;
|
|
class QCheckBox;
|
|
class QRadioButton;
|
|
class KLineEdit;
|
|
-class KPushButton;
|
|
+class QPushButton;
|
|
class KServiceListWidget;
|
|
|
|
/**
|
|
@@ -88,7 +88,7 @@ private:
|
|
QLabel* iconLabel; // if icon cannot be changed
|
|
|
|
QListWidget *extensionLB;
|
|
- KPushButton *addExtButton, *removeExtButton;
|
|
+ QPushButton *addExtButton, *removeExtButton;
|
|
KLineEdit *description;
|
|
KServiceListWidget *serviceListWidget;
|
|
|
|
diff --git a/keditfiletype/filetypesview.cpp b/keditfiletype/filetypesview.cpp
|
|
index 886892f..51f2096 100644
|
|
--- a/keditfiletype/filetypesview.cpp
|
|
+++ b/keditfiletype/filetypesview.cpp
|
|
@@ -28,19 +28,18 @@
|
|
#include <QLayout>
|
|
#include <QtCore/QTimer>
|
|
#include <QBoxLayout>
|
|
+#include <QPushButton>
|
|
#include <QStandardPaths>
|
|
#include <qdbusconnection.h>
|
|
#include <qdbusmessage.h>
|
|
+#include <qdebug.h>
|
|
|
|
// KDE
|
|
#include <kbuildsycocaprogressdialog.h>
|
|
-#include <kdebug.h>
|
|
#include <klineedit.h>
|
|
-#include <klocale.h>
|
|
-#include <kpushbutton.h>
|
|
+#include <klocalizedstring.h>
|
|
#include <kservicetypeprofile.h>
|
|
|
|
-#include <kicon.h>
|
|
#include <ksycoca.h>
|
|
|
|
// Local
|
|
@@ -118,15 +117,15 @@ FileTypesView::FileTypesView(QWidget *parent, const QVariantList &)
|
|
QHBoxLayout* btnsLay = new QHBoxLayout();
|
|
leftLayout->addLayout(btnsLay);
|
|
btnsLay->addStretch(1);
|
|
- KPushButton *addTypeB = new KPushButton(i18n("Add..."), this);
|
|
- addTypeB->setIcon(KIcon("list-add"));
|
|
+ QPushButton *addTypeB = new QPushButton(i18n("Add..."), this);
|
|
+ addTypeB->setIcon(QIcon::fromTheme("list-add"));
|
|
connect(addTypeB, SIGNAL(clicked()), SLOT(addType()));
|
|
btnsLay->addWidget(addTypeB);
|
|
|
|
addTypeB->setWhatsThis( i18n("Click here to add a new file type.") );
|
|
|
|
- m_removeTypeB = new KPushButton(i18n("&Remove"), this);
|
|
- m_removeTypeB->setIcon(KIcon("list-remove"));
|
|
+ m_removeTypeB = new QPushButton(i18n("&Remove"), this);
|
|
+ m_removeTypeB->setIcon(QIcon::fromTheme("list-remove"));
|
|
connect(m_removeTypeB, SIGNAL(clicked()), SLOT(removeType()));
|
|
btnsLay->addWidget(m_removeTypeB);
|
|
m_removeTypeB->setEnabled(false);
|
|
@@ -172,9 +171,9 @@ void FileTypesView::setDirty(bool state)
|
|
}
|
|
|
|
// To order the mimetype list
|
|
-static bool mimeTypeLessThan(const KMimeType::Ptr& m1, const KMimeType::Ptr& m2)
|
|
+static bool mimeTypeLessThan(const QMimeType& m1, const QMimeType& m2)
|
|
{
|
|
- return m1->name() < m2->name();
|
|
+ return m1.name() < m2.name();
|
|
}
|
|
|
|
// Note that this method loses any newly-added (and not saved yet) mimetypes.
|
|
@@ -185,11 +184,12 @@ void FileTypesView::readFileTypes()
|
|
m_majorMap.clear();
|
|
m_itemList.clear();
|
|
|
|
- KMimeType::List mimetypes = KMimeType::allMimeTypes();
|
|
+ QMimeDatabase db;
|
|
+ QList<QMimeType> mimetypes = db.allMimeTypes();
|
|
qSort(mimetypes.begin(), mimetypes.end(), mimeTypeLessThan);
|
|
- KMimeType::List::const_iterator it2(mimetypes.constBegin());
|
|
+ auto it2(mimetypes.constBegin());
|
|
for (; it2 != mimetypes.constEnd(); ++it2) {
|
|
- const QString mimetype = (*it2)->name();
|
|
+ const QString mimetype = (*it2).name();
|
|
const int index = mimetype.indexOf('/');
|
|
const QString maj = mimetype.left(index);
|
|
const QString min = mimetype.right(mimetype.length() - index+1);
|
|
@@ -362,16 +362,16 @@ void FileTypesView::updateRemoveButton(TypesListItem* tlitem)
|
|
} else {
|
|
// We can only remove mimetypes that we defined ourselves, not those from freedesktop.org
|
|
const QString mimeType = mimeTypeData.name();
|
|
- kDebug() << mimeType << "hasDefinitionFile:" << MimeTypeWriter::hasDefinitionFile(mimeType);
|
|
+ qDebug() << mimeType << "hasDefinitionFile:" << MimeTypeWriter::hasDefinitionFile(mimeType);
|
|
if (MimeTypeWriter::hasDefinitionFile(mimeType)) {
|
|
canRemove = true;
|
|
|
|
// Is there a global definition for it?
|
|
const QStringList mimeFiles = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, QLatin1String("mime/") + mimeType + ".xml" );
|
|
- kDebug() << mimeFiles;
|
|
+ qDebug() << mimeFiles;
|
|
if (mimeFiles.count() >= 2 /*a local and a global*/) {
|
|
m_removeButtonSaysRevert = true;
|
|
- kDebug() << removedList;
|
|
+ qDebug() << removedList;
|
|
if (removedList.contains(mimeType)) {
|
|
canRemove = false; // already on the "to be reverted" list, user needs to save now
|
|
}
|
|
@@ -415,7 +415,7 @@ void FileTypesView::save()
|
|
while ( it1 != m_majorMap.end() ) {
|
|
TypesListItem *tli = *it1;
|
|
if (tli->mimeTypeData().isDirty()) {
|
|
- kDebug() << "Entry " << tli->name() << " is dirty. Saving.";
|
|
+ qDebug() << "Entry " << tli->name() << " is dirty. Saving.";
|
|
if (tli->mimeTypeData().sync())
|
|
needUpdateMimeDb = true;
|
|
didIt = true;
|
|
@@ -426,7 +426,7 @@ void FileTypesView::save()
|
|
if (tli->mimeTypeData().isDirty()) {
|
|
if (tli->mimeTypeData().isServiceListDirty())
|
|
needUpdateSycoca = true;
|
|
- kDebug() << "Entry " << tli->name() << " is dirty. Saving.";
|
|
+ qDebug() << "Entry " << tli->name() << " is dirty. Saving.";
|
|
if (tli->mimeTypeData().sync())
|
|
needUpdateMimeDb = true;
|
|
didIt = true;
|
|
@@ -470,7 +470,7 @@ void FileTypesView::load()
|
|
|
|
void FileTypesView::slotDatabaseChanged(const QStringList& changedResources)
|
|
{
|
|
- kDebug() << changedResources;
|
|
+ qDebug() << changedResources;
|
|
if ( changedResources.contains("xdgdata-mime") // changes in mimetype definitions
|
|
|| changedResources.contains("services") ) { // changes in .desktop files
|
|
|
|
diff --git a/keditfiletype/filetypesview.h b/keditfiletype/filetypesview.h
|
|
index 82fd0ab..693c18a 100644
|
|
--- a/keditfiletype/filetypesview.h
|
|
+++ b/keditfiletype/filetypesview.h
|
|
@@ -35,7 +35,7 @@
|
|
class QLabel;
|
|
class QTreeWidget;
|
|
class QTreeWidgetItem;
|
|
-class KPushButton;
|
|
+class QPushButton;
|
|
class KLineEdit;
|
|
class FileTypeDetails;
|
|
class FileGroupDetails;
|
|
@@ -69,7 +69,7 @@ private:
|
|
|
|
private:
|
|
QTreeWidget *typesLV;
|
|
- KPushButton *m_removeTypeB;
|
|
+ QPushButton *m_removeTypeB;
|
|
|
|
QStackedWidget * m_widgetStack;
|
|
FileTypeDetails * m_details;
|
|
diff --git a/keditfiletype/keditfiletype.cpp b/keditfiletype/keditfiletype.cpp
|
|
index aab0830..f061b4a 100644
|
|
--- a/keditfiletype/keditfiletype.cpp
|
|
+++ b/keditfiletype/keditfiletype.cpp
|
|
@@ -22,20 +22,25 @@
|
|
#include "mimetypewriter.h"
|
|
|
|
// Qt
|
|
-#include <qdbusconnection.h>
|
|
-#include <qdbusmessage.h>
|
|
-#include <QtCore/QFile>
|
|
+#include <QApplication>
|
|
+#include <QBoxLayout>
|
|
+#include <QCommandLineOption>
|
|
+#include <QCommandLineParser>
|
|
+#include <QDBusConnection>
|
|
+#include <QDBusMessage>
|
|
+#include <QDebug>
|
|
+#include <QDialogButtonBox>
|
|
+#include <QFile>
|
|
+#include <QPushButton>
|
|
|
|
// KDE
|
|
-#include <kapplication.h>
|
|
-#include <k4aboutdata.h>
|
|
+#include <kaboutdata.h>
|
|
#include <kbuildsycocaprogressdialog.h>
|
|
-#include <kdebug.h>
|
|
-#include <kcmdlineargs.h>
|
|
+#include <klocalizedstring.h>
|
|
+
|
|
#include <ksycoca.h>
|
|
#include <kservicetypeprofile.h>
|
|
|
|
-#include <klocale.h>
|
|
#include <kwindowsystem.h>
|
|
|
|
// Local
|
|
@@ -44,12 +49,10 @@
|
|
|
|
|
|
FileTypeDialog::FileTypeDialog( MimeTypeData* mime )
|
|
- : KDialog( 0 ),
|
|
+ : QDialog( 0 ),
|
|
m_mimeTypeData(mime)
|
|
{
|
|
- setButtons( Cancel | Apply | Ok );
|
|
-
|
|
- init();
|
|
+ init();
|
|
}
|
|
|
|
FileTypeDialog::~FileTypeDialog()
|
|
@@ -61,16 +64,28 @@ void FileTypeDialog::init()
|
|
{
|
|
m_details = new FileTypeDetails( this );
|
|
m_details->setMimeTypeData( m_mimeTypeData );
|
|
+ connect(m_details, SIGNAL(changed(bool)), this, SLOT(clientChanged(bool)));
|
|
+
|
|
+ m_buttonBox = new QDialogButtonBox;
|
|
+ m_buttonBox->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Apply | QDialogButtonBox::Cancel);
|
|
+ connect(m_buttonBox, SIGNAL(accepted()), SLOT(accept()));
|
|
+ connect(m_buttonBox->button(QDialogButtonBox::Apply), SIGNAL(clicked()), SLOT(save()));
|
|
+ connect(m_buttonBox, SIGNAL(rejected()), SLOT(reject()));
|
|
|
|
// This code is very similar to kcdialog.cpp
|
|
- setMainWidget( m_details );
|
|
- connect(m_details, SIGNAL(changed(bool)), this, SLOT(clientChanged(bool)));
|
|
+ QVBoxLayout* layout = new QVBoxLayout(this);
|
|
+ layout->addWidget(m_details);
|
|
+ layout->addWidget(m_buttonBox);
|
|
// TODO setHelp()
|
|
- enableButton(Apply, false);
|
|
+
|
|
+ setApplyButtonEnabled(false);
|
|
|
|
connect(KSycoca::self(), SIGNAL(databaseChanged(QStringList)), SLOT(slotDatabaseChanged(QStringList)));
|
|
- connect( this, SIGNAL( okClicked() ), SLOT( slotOk() ) );
|
|
- connect( this, SIGNAL( applyClicked() ), SLOT( slotApply() ) );
|
|
+}
|
|
+
|
|
+void FileTypeDialog::setApplyButtonEnabled(bool enabled)
|
|
+{
|
|
+ m_buttonBox->button(QDialogButtonBox::Apply)->setEnabled(enabled);
|
|
}
|
|
|
|
void FileTypeDialog::save()
|
|
@@ -88,27 +103,21 @@ void FileTypeDialog::save()
|
|
}
|
|
}
|
|
|
|
-void FileTypeDialog::slotOk()
|
|
-{
|
|
- save();
|
|
- accept();
|
|
-}
|
|
-
|
|
-void FileTypeDialog::slotApply()
|
|
+void FileTypeDialog::accept()
|
|
{
|
|
save();
|
|
+ QDialog::accept();
|
|
}
|
|
|
|
void FileTypeDialog::clientChanged(bool state)
|
|
{
|
|
- // enable/disable buttons
|
|
- enableButton(User1, state);
|
|
- enableButton(Apply, state);
|
|
+ m_buttonBox->button(QDialogButtonBox::Ok)->setEnabled(state);
|
|
+ m_buttonBox->button(QDialogButtonBox::Apply)->setEnabled(state);
|
|
}
|
|
|
|
void FileTypeDialog::slotDatabaseChanged(const QStringList& changedResources)
|
|
{
|
|
- kDebug() << changedResources;
|
|
+ qDebug() << changedResources;
|
|
if ( changedResources.contains("xdgdata-mime") // changes in mimetype definitions
|
|
|| changedResources.contains("services") ) { // changes in .desktop files
|
|
m_details->refresh();
|
|
@@ -119,81 +128,85 @@ void FileTypeDialog::slotDatabaseChanged(const QStringList& changedResources)
|
|
|
|
int main(int argc, char ** argv)
|
|
{
|
|
- K4AboutData aboutData( "keditfiletype", "filetypes", ki18n("KEditFileType"), "1.0",
|
|
- ki18n("KDE file type editor - simplified version for editing a single file type"),
|
|
- K4AboutData::License_GPL,
|
|
- ki18n("(c) 2000, KDE developers") );
|
|
- aboutData.addAuthor(ki18n("Preston Brown"),KLocalizedString(), "pbrown@kde.org");
|
|
- aboutData.addAuthor(ki18n("David Faure"),KLocalizedString(), "faure@kde.org");
|
|
- aboutData.setProgramIconName("preferences-desktop-filetype-association");
|
|
-
|
|
- KCmdLineArgs::init( argc, argv, &aboutData );
|
|
-
|
|
- KCmdLineOptions options;
|
|
- options.add("parent <winid>", ki18n("Makes the dialog transient for the window specified by winid"));
|
|
- options.add("+mimetype", ki18n("File type to edit (e.g. text/html)"));
|
|
- KCmdLineArgs::addCmdLineOptions( options ); // Add our own options.
|
|
- KApplication app;
|
|
- KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
|
|
-
|
|
- if (args->count() == 0)
|
|
- KCmdLineArgs::usage();
|
|
-
|
|
- QString arg = args->arg(0);
|
|
- MimeTypeData* mimeTypeData = 0;
|
|
- const bool createType = arg.startsWith('*');
|
|
- if ( createType ) {
|
|
- QString mimeString = "application/x-kdeuser%1";
|
|
- QString mimeTypeName;
|
|
- int inc = 0;
|
|
- bool ok = false;
|
|
- do {
|
|
- ++inc;
|
|
- mimeTypeName = mimeString.arg(inc);
|
|
- ok = !KMimeType::mimeType(mimeTypeName);
|
|
- } while (!ok);
|
|
-
|
|
- QStringList patterns;
|
|
- if ( arg.length() > 2 )
|
|
- patterns << arg.toLower() << arg.toUpper();
|
|
- QString comment;
|
|
- if ( arg.startsWith( QLatin1String("*.") ) && arg.length() >= 3 ) {
|
|
- const QString type = arg.mid( 3 ).prepend( arg[2].toUpper() );
|
|
- comment = i18n( "%1 File", type );
|
|
- }
|
|
-
|
|
- mimeTypeData = new MimeTypeData(mimeTypeName, true); // new mimetype
|
|
- mimeTypeData->setComment(comment);
|
|
- mimeTypeData->setPatterns(patterns);
|
|
- }
|
|
- else {
|
|
- const QString mimeTypeName = arg;
|
|
- KMimeType::Ptr mime = KMimeType::mimeType(mimeTypeName, KMimeType::ResolveAliases);
|
|
- if (!mime) {
|
|
- kError() << "Mimetype" << mimeTypeName << "not found" ;
|
|
- return 1;
|
|
- }
|
|
-
|
|
- mimeTypeData = new MimeTypeData(mime);
|
|
- }
|
|
-
|
|
- FileTypeDialog dlg( mimeTypeData );
|
|
- if( args->isSet( "parent" )) {
|
|
- bool ok;
|
|
- long id = QString(args->getOption("parent")).toLong(&ok);
|
|
- if (ok)
|
|
- KWindowSystem::setMainWindow( &dlg, (WId)id );
|
|
- }
|
|
- args->clear();
|
|
- if ( !createType )
|
|
- dlg.setCaption( i18n("Edit File Type %1", mimeTypeData->name()) );
|
|
- else {
|
|
- dlg.setCaption( i18n("Create New File Type %1", mimeTypeData->name()) );
|
|
- dlg.enableButton( KDialog::Apply, true );
|
|
- }
|
|
-
|
|
- dlg.show(); // non-modal
|
|
-
|
|
- return app.exec();
|
|
+ QApplication app(argc, argv);
|
|
+
|
|
+ KAboutData aboutData( "keditfiletype", i18n("KEditFileType"), "1.0",
|
|
+ i18n("KDE file type editor - simplified version for editing a single file type"),
|
|
+ KAboutLicense::GPL,
|
|
+ i18n("(c) 2000, KDE developers") );
|
|
+ aboutData.addAuthor(i18n("Preston Brown"), QString(), "pbrown@kde.org");
|
|
+ aboutData.addAuthor(i18n("David Faure"), QString(), "faure@kde.org");
|
|
+ aboutData.setProgramIconName("preferences-desktop-filetype-association");
|
|
+ KAboutData::setApplicationData(aboutData);
|
|
+
|
|
+ QCommandLineParser parser;
|
|
+ aboutData.setupCommandLine(&parser);
|
|
+ parser.addHelpOption();
|
|
+ parser.addVersionOption();
|
|
+ parser.addOption(QCommandLineOption(QStringList() << "parent", i18n("Makes the dialog transient for the window specified by winid"), "winid"));
|
|
+ parser.addPositionalArgument("mimetype", i18n("File type to edit (e.g. text/html)"));
|
|
+
|
|
+ parser.process(app);
|
|
+ aboutData.processCommandLine(&parser);
|
|
+
|
|
+ if (parser.positionalArguments().count() == 0)
|
|
+ parser.showHelp();
|
|
+
|
|
+ QMimeDatabase db;
|
|
+ QString arg = parser.positionalArguments().first();
|
|
+ MimeTypeData* mimeTypeData = 0;
|
|
+ const bool createType = arg.startsWith('*');
|
|
+ if ( createType ) {
|
|
+ QString mimeString = "application/x-kdeuser%1";
|
|
+ QString mimeTypeName;
|
|
+ int inc = 0;
|
|
+ bool ok = false;
|
|
+ do {
|
|
+ ++inc;
|
|
+ mimeTypeName = mimeString.arg(inc);
|
|
+ ok = !db.mimeTypeForName(mimeTypeName).isValid();
|
|
+ } while (!ok);
|
|
+
|
|
+ QStringList patterns;
|
|
+ if ( arg.length() > 2 )
|
|
+ patterns << arg.toLower() << arg.toUpper();
|
|
+ QString comment;
|
|
+ if ( arg.startsWith( QLatin1String("*.") ) && arg.length() >= 3 ) {
|
|
+ const QString type = arg.mid( 3 ).prepend( arg[2].toUpper() );
|
|
+ comment = i18n( "%1 File", type );
|
|
+ }
|
|
+
|
|
+ mimeTypeData = new MimeTypeData(mimeTypeName, true); // new mimetype
|
|
+ mimeTypeData->setComment(comment);
|
|
+ mimeTypeData->setPatterns(patterns);
|
|
+ }
|
|
+ else {
|
|
+ const QString mimeTypeName = arg;
|
|
+ QMimeType mime = db.mimeTypeForName(mimeTypeName);
|
|
+ if (!mime.isValid()) {
|
|
+ qCritical() << "Mimetype" << mimeTypeName << "not found" ;
|
|
+ return 1;
|
|
+ }
|
|
+
|
|
+ mimeTypeData = new MimeTypeData(mime);
|
|
+ }
|
|
+
|
|
+ FileTypeDialog dlg( mimeTypeData );
|
|
+ if( parser.isSet( "parent" )) {
|
|
+ bool ok;
|
|
+ long id = parser.value("parent").toLong(&ok);
|
|
+ if (ok)
|
|
+ KWindowSystem::setMainWindow( &dlg, (WId)id );
|
|
+ }
|
|
+ if ( !createType )
|
|
+ dlg.setWindowTitle( i18n("Edit File Type %1", mimeTypeData->name()) );
|
|
+ else {
|
|
+ dlg.setWindowTitle( i18n("Create New File Type %1", mimeTypeData->name()) );
|
|
+ dlg.setApplyButtonEnabled(true);
|
|
+ }
|
|
+
|
|
+ dlg.show(); // non-modal
|
|
+
|
|
+ return app.exec();
|
|
}
|
|
|
|
diff --git a/keditfiletype/keditfiletype.h b/keditfiletype/keditfiletype.h
|
|
index 0b235ce..9a955b6 100644
|
|
--- a/keditfiletype/keditfiletype.h
|
|
+++ b/keditfiletype/keditfiletype.h
|
|
@@ -20,33 +20,40 @@
|
|
#ifndef __keditfiletype_h
|
|
#define __keditfiletype_h
|
|
|
|
-#include <kdialog.h>
|
|
-#include <kmimetype.h>
|
|
+#include <QDialog>
|
|
+#include <QMimeType>
|
|
+#include <QMimeDatabase>
|
|
+
|
|
+class QDialogButtonBox;
|
|
|
|
class MimeTypeData;
|
|
class FileTypeDetails;
|
|
|
|
// A dialog for ONE file type to be edited.
|
|
-class FileTypeDialog : public KDialog
|
|
+class FileTypeDialog : public QDialog
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
FileTypeDialog(MimeTypeData* mime);
|
|
- ~FileTypeDialog();
|
|
+ virtual ~FileTypeDialog();
|
|
+
|
|
+ void setApplyButtonEnabled(bool);
|
|
+
|
|
+public Q_SLOTS:
|
|
+ void accept() Q_DECL_OVERRIDE;
|
|
|
|
protected Q_SLOTS:
|
|
- virtual void slotOk();
|
|
- virtual void slotApply();
|
|
- void clientChanged(bool state);
|
|
- void slotDatabaseChanged(const QStringList& changedResources);
|
|
+ void clientChanged(bool state);
|
|
+ void slotDatabaseChanged(const QStringList& changedResources);
|
|
|
|
-protected:
|
|
- void save();
|
|
+private Q_SLOTS:
|
|
+ void save();
|
|
|
|
private:
|
|
- void init();
|
|
- FileTypeDetails * m_details;
|
|
- MimeTypeData* m_mimeTypeData;
|
|
+ void init();
|
|
+ FileTypeDetails * m_details;
|
|
+ MimeTypeData* m_mimeTypeData;
|
|
+ QDialogButtonBox* m_buttonBox;
|
|
};
|
|
|
|
#endif
|
|
diff --git a/keditfiletype/kservicelistwidget.cpp b/keditfiletype/kservicelistwidget.cpp
|
|
index 88dface..64fc7f1 100644
|
|
--- a/keditfiletype/kservicelistwidget.cpp
|
|
+++ b/keditfiletype/kservicelistwidget.cpp
|
|
@@ -25,21 +25,17 @@
|
|
#include <unistd.h>
|
|
|
|
// Qt
|
|
+#include <QBoxLayout>
|
|
+#include <QDebug>
|
|
#include <QLayout>
|
|
-#include <QHBoxLayout>
|
|
+#include <QPushButton>
|
|
#include <QStandardPaths>
|
|
|
|
// KDE
|
|
-#include <kapplication.h>
|
|
-#include <kdebug.h>
|
|
-#include <klocale.h>
|
|
+#include <klocalizedstring.h>
|
|
#include <kmessagebox.h>
|
|
-#include <knotification.h>
|
|
#include <kopenwithdialog.h>
|
|
#include <kpropertiesdialog.h>
|
|
-#include <kpushbutton.h>
|
|
-#include <kicon.h>
|
|
-#include <kstandarddirs.h>
|
|
|
|
// Local
|
|
#include "kserviceselectdlg.h"
|
|
@@ -59,10 +55,6 @@ KServiceListItem::KServiceListItem( const KService::Ptr& pService, int kind )
|
|
localPath = pService->locateLocal();
|
|
}
|
|
|
|
-bool KServiceListItem::isImmutable() const
|
|
-{
|
|
- return !KStandardDirs::checkAccess(localPath, W_OK);
|
|
-}
|
|
|
|
|
|
|
|
@@ -99,8 +91,8 @@ KServiceListWidget::KServiceListWidget(int kind, QWidget *parent)
|
|
QVBoxLayout *btnsLay= new QVBoxLayout();
|
|
lay->addLayout(btnsLay);
|
|
|
|
- servUpButton = new KPushButton(i18n("Move &Up"), this);
|
|
- servUpButton->setIcon(KIcon("arrow-up"));
|
|
+ servUpButton = new QPushButton(i18n("Move &Up"), this);
|
|
+ servUpButton->setIcon(QIcon::fromTheme("arrow-up"));
|
|
servUpButton->setEnabled(false);
|
|
connect(servUpButton, SIGNAL(clicked()), SLOT(promoteService()));
|
|
btnsLay->addWidget(servUpButton);
|
|
@@ -113,8 +105,8 @@ KServiceListWidget::KServiceListWidget(int kind, QWidget *parent)
|
|
i18n("Assigns a higher priority to the selected\n"
|
|
"service, moving it up in the list."));
|
|
|
|
- servDownButton = new KPushButton(i18n("Move &Down"), this);
|
|
- servDownButton->setIcon(KIcon("arrow-down"));
|
|
+ servDownButton = new QPushButton(i18n("Move &Down"), this);
|
|
+ servDownButton->setIcon(QIcon::fromTheme("arrow-down"));
|
|
servDownButton->setEnabled(false);
|
|
connect(servDownButton, SIGNAL(clicked()), SLOT(demoteService()));
|
|
btnsLay->addWidget(servDownButton);
|
|
@@ -126,24 +118,24 @@ KServiceListWidget::KServiceListWidget(int kind, QWidget *parent)
|
|
i18n("Assigns a lower priority to the selected\n"
|
|
"service, moving it down in the list."));
|
|
|
|
- servNewButton = new KPushButton(i18n("Add..."), this);
|
|
- servNewButton->setIcon(KIcon("list-add"));
|
|
+ servNewButton = new QPushButton(i18n("Add..."), this);
|
|
+ servNewButton->setIcon(QIcon::fromTheme("list-add"));
|
|
servNewButton->setEnabled(false);
|
|
connect(servNewButton, SIGNAL(clicked()), SLOT(addService()));
|
|
btnsLay->addWidget(servNewButton);
|
|
servNewButton->setWhatsThis( i18n( "Add a new application for this file type." ) );
|
|
|
|
|
|
- servEditButton = new KPushButton(i18n("Edit..."), this);
|
|
- servEditButton->setIcon(KIcon("edit-rename"));
|
|
+ servEditButton = new QPushButton(i18n("Edit..."), this);
|
|
+ servEditButton->setIcon(QIcon::fromTheme("edit-rename"));
|
|
servEditButton->setEnabled(false);
|
|
connect(servEditButton, SIGNAL(clicked()), SLOT(editService()));
|
|
btnsLay->addWidget(servEditButton);
|
|
servEditButton->setWhatsThis( i18n( "Edit command line of the selected application." ) );
|
|
|
|
|
|
- servRemoveButton = new KPushButton(i18n("Remove"), this);
|
|
- servRemoveButton->setIcon(KIcon("list-remove"));
|
|
+ servRemoveButton = new QPushButton(i18n("Remove"), this);
|
|
+ servRemoveButton->setIcon(QIcon::fromTheme("list-remove"));
|
|
servRemoveButton->setEnabled(false);
|
|
connect(servRemoveButton, SIGNAL(clicked()), SLOT(removeService()));
|
|
btnsLay->addWidget(servRemoveButton);
|
|
@@ -193,13 +185,11 @@ void KServiceListWidget::setMimeTypeData( MimeTypeData * mimeTypeData )
|
|
void KServiceListWidget::promoteService()
|
|
{
|
|
if (!servicesLB->isEnabled()) {
|
|
- KNotification::beep();
|
|
return;
|
|
}
|
|
|
|
int selIndex = servicesLB->currentRow();
|
|
if (selIndex == 0) {
|
|
- KNotification::beep();
|
|
return;
|
|
}
|
|
|
|
@@ -216,13 +206,11 @@ void KServiceListWidget::promoteService()
|
|
void KServiceListWidget::demoteService()
|
|
{
|
|
if (!servicesLB->isEnabled()) {
|
|
- KNotification::beep();
|
|
return;
|
|
}
|
|
|
|
int selIndex = servicesLB->currentRow();
|
|
if (selIndex == servicesLB->count() - 1) {
|
|
- KNotification::beep();
|
|
return;
|
|
}
|
|
|
|
@@ -365,19 +353,10 @@ void KServiceListWidget::removeService()
|
|
int selected = servicesLB->currentRow();
|
|
|
|
if ( selected >= 0 ) {
|
|
- // Check if service is associated with this mimetype or with one of its parents
|
|
- KServiceListItem *serviceItem = static_cast<KServiceListItem *>(servicesLB->item(selected));
|
|
- if (serviceItem->isImmutable())
|
|
- {
|
|
- KMessageBox::sorry(this, i18n("You are not authorized to remove this service."));
|
|
- }
|
|
- else
|
|
- {
|
|
- delete servicesLB->takeItem( selected );
|
|
- updatePreferredServices();
|
|
+ delete servicesLB->takeItem( selected );
|
|
+ updatePreferredServices();
|
|
|
|
- emit changed(true);
|
|
- }
|
|
+ emit changed(true);
|
|
}
|
|
|
|
// Update buttons and service list again (e.g. to re-add "None")
|
|
diff --git a/keditfiletype/kservicelistwidget.h b/keditfiletype/kservicelistwidget.h
|
|
index c817d24..fbc488a 100644
|
|
--- a/keditfiletype/kservicelistwidget.h
|
|
+++ b/keditfiletype/kservicelistwidget.h
|
|
@@ -25,15 +25,16 @@
|
|
#include <QGroupBox>
|
|
#include <QListWidget>
|
|
#include <kservice.h>
|
|
+
|
|
+class QPushButton;
|
|
+
|
|
class MimeTypeData;
|
|
-class KPushButton;
|
|
class KService;
|
|
|
|
class KServiceListItem : public QListWidgetItem
|
|
{
|
|
public:
|
|
KServiceListItem( const KService::Ptr& pService, int kind );
|
|
- bool isImmutable() const;
|
|
QString storageId;
|
|
QString desktopPath;
|
|
QString localPath;
|
|
@@ -71,8 +72,8 @@ protected:
|
|
private:
|
|
int m_kind;
|
|
QListWidget *servicesLB;
|
|
- KPushButton *servUpButton, *servDownButton;
|
|
- KPushButton *servNewButton, *servEditButton, *servRemoveButton;
|
|
+ QPushButton *servUpButton, *servDownButton;
|
|
+ QPushButton *servNewButton, *servEditButton, *servRemoveButton;
|
|
MimeTypeData *m_mimeTypeData;
|
|
};
|
|
|
|
diff --git a/keditfiletype/kserviceselectdlg.cpp b/keditfiletype/kserviceselectdlg.cpp
|
|
index 09c7c5d..e9fcabc 100644
|
|
--- a/keditfiletype/kserviceselectdlg.cpp
|
|
+++ b/keditfiletype/kserviceselectdlg.cpp
|
|
@@ -19,23 +19,25 @@
|
|
#include "kserviceselectdlg.moc"
|
|
#include "kservicelistwidget.h"
|
|
|
|
-#include <klocale.h>
|
|
-#include <QVBoxLayout>
|
|
+#include <QDialogButtonBox>
|
|
#include <QLabel>
|
|
+#include <QVBoxLayout>
|
|
+
|
|
+#include <KLocalizedString>
|
|
|
|
KServiceSelectDlg::KServiceSelectDlg( const QString& /*serviceType*/, const QString& /*value*/, QWidget *parent )
|
|
- : KDialog( parent )
|
|
+ : QDialog( parent )
|
|
{
|
|
setObjectName( QLatin1String( "serviceSelectDlg" ) );
|
|
setModal( true );
|
|
- setCaption( i18n( "Add Service" ) );
|
|
- setButtons( Ok | Cancel );
|
|
+ setWindowTitle( i18n( "Add Service" ) );
|
|
|
|
- QWidget *vbox = new QWidget( this );
|
|
- QVBoxLayout *layout = new QVBoxLayout( vbox );
|
|
+ QVBoxLayout *layout = new QVBoxLayout(this);
|
|
|
|
- layout->addWidget( new QLabel( i18n( "Select service:" ), vbox ) );
|
|
- m_listbox=new KListWidget( vbox );
|
|
+ layout->addWidget( new QLabel( i18n( "Select service:" ) ) );
|
|
+ m_listbox=new QListWidget();
|
|
+ m_buttonBox = new QDialogButtonBox;
|
|
+ m_buttonBox->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
|
|
|
// Can't make a KTrader query since we don't have a servicetype to give,
|
|
// we want all services that are not applications.......
|
|
@@ -53,20 +55,16 @@ KServiceSelectDlg::KServiceSelectDlg( const QString& /*serviceType*/, const QStr
|
|
m_listbox->setMinimumHeight(350);
|
|
m_listbox->setMinimumWidth(400);
|
|
layout->addWidget( m_listbox );
|
|
- connect(m_listbox,SIGNAL(itemDoubleClicked(QListWidgetItem*)),SLOT(slotOk()));
|
|
- connect( this, SIGNAL(okClicked()), this, SLOT(slotOk()) );
|
|
- setMainWidget(vbox);
|
|
+ layout->addWidget( m_buttonBox );
|
|
+ connect(m_listbox,SIGNAL(itemDoubleClicked(QListWidgetItem*)),SLOT(accept()));
|
|
+ connect(m_buttonBox, SIGNAL(accepted()), SLOT(accept()));
|
|
+ connect(m_buttonBox, SIGNAL(rejected()), SLOT(reject()));
|
|
}
|
|
|
|
KServiceSelectDlg::~KServiceSelectDlg()
|
|
{
|
|
}
|
|
|
|
-void KServiceSelectDlg::slotOk()
|
|
-{
|
|
- accept();
|
|
-}
|
|
-
|
|
KService::Ptr KServiceSelectDlg::service()
|
|
{
|
|
int selIndex = m_listbox->currentRow();
|
|
diff --git a/keditfiletype/kserviceselectdlg.h b/keditfiletype/kserviceselectdlg.h
|
|
index 8e6d0d0..3acabfb 100644
|
|
--- a/keditfiletype/kserviceselectdlg.h
|
|
+++ b/keditfiletype/kserviceselectdlg.h
|
|
@@ -17,10 +17,15 @@
|
|
|
|
#ifndef __kserviceselectdlg_h
|
|
#define __kserviceselectdlg_h
|
|
-#include <kdialog.h>
|
|
+
|
|
+#include <QDialog>
|
|
+#include <QListWidget>
|
|
+
|
|
#include <kservice.h>
|
|
-#include <klistwidget.h>
|
|
-class KServiceSelectDlg : public KDialog
|
|
+
|
|
+class QDialogButtonBox;
|
|
+
|
|
+class KServiceSelectDlg : public QDialog
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
@@ -41,10 +46,10 @@ public:
|
|
* @return the chosen service
|
|
*/
|
|
KService::Ptr service();
|
|
-protected slots:
|
|
- void slotOk();
|
|
+
|
|
private:
|
|
- KListWidget * m_listbox;
|
|
+ QListWidget * m_listbox;
|
|
+ QDialogButtonBox* m_buttonBox;
|
|
};
|
|
|
|
#endif
|
|
diff --git a/keditfiletype/mimetypedata.cpp b/keditfiletype/mimetypedata.cpp
|
|
index 057113f..65af59c 100644
|
|
--- a/keditfiletype/mimetypedata.cpp
|
|
+++ b/keditfiletype/mimetypedata.cpp
|
|
@@ -19,10 +19,9 @@
|
|
*/
|
|
|
|
#include "mimetypedata.h"
|
|
-#include "sharedmimeinfoversion.h"
|
|
#include <kprotocolmanager.h>
|
|
#include "mimetypewriter.h"
|
|
-#include <kdebug.h>
|
|
+#include <qdebug.h>
|
|
#include <kservice.h>
|
|
#include <ksharedconfig.h>
|
|
#include <kconfiggroup.h>
|
|
@@ -37,21 +36,23 @@ MimeTypeData::MimeTypeData(const QString& major)
|
|
m_isGroup(true),
|
|
m_appServicesModified(false),
|
|
m_embedServicesModified(false),
|
|
+ m_userSpecifiedIconModified(false),
|
|
m_major(major)
|
|
{
|
|
m_autoEmbed = readAutoEmbed();
|
|
}
|
|
|
|
-MimeTypeData::MimeTypeData(const KMimeType::Ptr mime)
|
|
+MimeTypeData::MimeTypeData(const QMimeType& mime)
|
|
: m_mimetype(mime),
|
|
m_askSave(AskSaveDefault), // TODO: the code for initializing this is missing. FileTypeDetails initializes the checkbox instead...
|
|
m_bNewItem(false),
|
|
m_bFullInit(false),
|
|
m_isGroup(false),
|
|
m_appServicesModified(false),
|
|
- m_embedServicesModified(false)
|
|
+ m_embedServicesModified(false),
|
|
+ m_userSpecifiedIconModified(false)
|
|
{
|
|
- const QString mimeName = m_mimetype->name();
|
|
+ const QString mimeName = m_mimetype.name();
|
|
const int index = mimeName.indexOf('/');
|
|
if (index != -1) {
|
|
m_major = mimeName.left(index);
|
|
@@ -59,17 +60,18 @@ MimeTypeData::MimeTypeData(const KMimeType::Ptr mime)
|
|
} else {
|
|
m_major = mimeName;
|
|
}
|
|
- initFromKMimeType();
|
|
+ initFromQMimeType();
|
|
}
|
|
|
|
MimeTypeData::MimeTypeData(const QString& mimeName, bool)
|
|
- : m_mimetype(0),
|
|
- m_askSave(AskSaveDefault),
|
|
+ : m_askSave(AskSaveDefault),
|
|
m_bNewItem(true),
|
|
m_bFullInit(false),
|
|
m_isGroup(false),
|
|
m_appServicesModified(false),
|
|
- m_embedServicesModified(false)
|
|
+ m_embedServicesModified(false),
|
|
+ m_userSpecifiedIconModified(false)
|
|
+
|
|
{
|
|
const int index = mimeName.indexOf('/');
|
|
if (index != -1) {
|
|
@@ -82,10 +84,10 @@ MimeTypeData::MimeTypeData(const QString& mimeName, bool)
|
|
// all the rest is empty by default
|
|
}
|
|
|
|
-void MimeTypeData::initFromKMimeType()
|
|
+void MimeTypeData::initFromQMimeType()
|
|
{
|
|
- m_comment = m_mimetype->comment();
|
|
- setPatterns(m_mimetype->patterns());
|
|
+ m_comment = m_mimetype.comment();
|
|
+ setPatterns(m_mimetype.globPatterns());
|
|
m_autoEmbed = readAutoEmbed();
|
|
|
|
// Parse XML file to find out if the user specified a custom icon name
|
|
@@ -141,7 +143,7 @@ MimeTypeData::AutoEmbed MimeTypeData::readAutoEmbed() const
|
|
} else {
|
|
if (group.hasKey(key))
|
|
return group.readEntry(key, false) ? Yes : No;
|
|
- // TODO if ( !mimetype->property( "X-KDE-LocalProtocol" ).toString().isEmpty() )
|
|
+ // TODO if ( !mimetype.property( "X-KDE-LocalProtocol" ).toString().isEmpty() )
|
|
// TODO return MimeTypeData::Yes; // embed by default for zip, tar etc.
|
|
return MimeTypeData::UseGroupSetting;
|
|
}
|
|
@@ -192,7 +194,11 @@ bool MimeTypeData::isEssential() const
|
|
|
|
void MimeTypeData::setUserSpecifiedIcon(const QString& icon)
|
|
{
|
|
+ if (icon == m_userSpecifiedIcon) {
|
|
+ return;
|
|
+ }
|
|
m_userSpecifiedIcon = icon;
|
|
+ m_userSpecifiedIconModified = true;
|
|
}
|
|
|
|
QStringList MimeTypeData::getAppOffers() const
|
|
@@ -247,24 +253,24 @@ bool MimeTypeData::isMimeTypeDirty() const
|
|
if (m_bNewItem)
|
|
return true;
|
|
|
|
- if (!m_mimetype) {
|
|
- kWarning() << "MimeTypeData for" << name() << "says 'not new' but is without a mimetype? Should not happen.";
|
|
+ if (!m_mimetype.isValid()) {
|
|
+ qWarning() << "MimeTypeData for" << name() << "says 'not new' but is without a mimetype? Should not happen.";
|
|
return true;
|
|
}
|
|
|
|
- if (m_mimetype->comment() != m_comment) {
|
|
- kDebug() << "Mimetype Comment Dirty: old=" << m_mimetype->comment() << "m_comment=" << m_comment;
|
|
+ if (m_mimetype.comment() != m_comment) {
|
|
+ qDebug() << "Mimetype Comment Dirty: old=" << m_mimetype.comment() << "m_comment=" << m_comment;
|
|
return true;
|
|
}
|
|
- if (m_mimetype->userSpecifiedIconName() != m_userSpecifiedIcon) {
|
|
- kDebug() << "Mimetype Icon Dirty: old=" << m_mimetype->iconName() << "m_userSpecifiedIcon=" << m_userSpecifiedIcon;
|
|
+ if (m_userSpecifiedIconModified) {
|
|
+ qDebug() << "m_userSpecifiedIcon has changed. Now set to" << m_userSpecifiedIcon;
|
|
return true;
|
|
}
|
|
|
|
- QStringList storedPatterns = m_mimetype->patterns();
|
|
+ QStringList storedPatterns = m_mimetype.globPatterns();
|
|
storedPatterns.sort(); // see ctor
|
|
if ( storedPatterns != m_patterns) {
|
|
- kDebug() << "Mimetype Patterns Dirty: old=" << storedPatterns
|
|
+ qDebug() << "Mimetype Patterns Dirty: old=" << storedPatterns
|
|
<< "m_patterns=" << m_patterns;
|
|
return true;
|
|
}
|
|
@@ -282,7 +288,7 @@ bool MimeTypeData::isServiceListDirty() const
|
|
bool MimeTypeData::isDirty() const
|
|
{
|
|
if ( m_bNewItem ) {
|
|
- kDebug() << "New item, need to save it";
|
|
+ qDebug() << "New item, need to save it";
|
|
return true;
|
|
}
|
|
|
|
@@ -334,17 +340,13 @@ bool MimeTypeData::sync()
|
|
if (isMimeTypeDirty()) {
|
|
MimeTypeWriter mimeTypeWriter(name());
|
|
mimeTypeWriter.setComment(m_comment);
|
|
- if (SharedMimeInfoVersion::supportsIcon()) {
|
|
- // Very important: don't write <icon> if shared-mime-info doesn't support it,
|
|
- // it would abort on it!
|
|
- if (!m_userSpecifiedIcon.isEmpty()) {
|
|
- mimeTypeWriter.setIconName(m_userSpecifiedIcon);
|
|
- }
|
|
+ if (!m_userSpecifiedIcon.isEmpty()) {
|
|
+ mimeTypeWriter.setIconName(m_userSpecifiedIcon);
|
|
}
|
|
mimeTypeWriter.setPatterns(m_patterns);
|
|
if (!mimeTypeWriter.write())
|
|
return false;
|
|
-
|
|
+ m_userSpecifiedIconModified = false;
|
|
needUpdateMimeDb = true;
|
|
}
|
|
|
|
@@ -393,7 +395,7 @@ static QStringList collectStorageIds(const QStringList& services)
|
|
|
|
KService::Ptr pService = KService::serviceByStorageId(*it);
|
|
if (!pService) {
|
|
- kWarning() << "service with storage id" << *it << "not found";
|
|
+ qWarning() << "service with storage id" << *it << "not found";
|
|
continue; // Where did that one go?
|
|
}
|
|
|
|
@@ -434,17 +436,17 @@ void MimeTypeData::refresh()
|
|
{
|
|
if (m_isGroup)
|
|
return;
|
|
-
|
|
- m_mimetype = KMimeType::mimeType( name() );
|
|
- if (m_mimetype) {
|
|
+ QMimeDatabase db;
|
|
+ m_mimetype = db.mimeTypeForName( name() );
|
|
+ if (m_mimetype.isValid()) {
|
|
if (m_bNewItem) {
|
|
- kDebug() << "OK, created" << name();
|
|
+ qDebug() << "OK, created" << name();
|
|
m_bNewItem = false; // if this was a new mimetype, we just created it
|
|
}
|
|
if (!isMimeTypeDirty()) {
|
|
// Update from the xml, in case something was changed from out of this kcm
|
|
// (e.g. using KOpenWithDialog, or keditfiletype + kcmshell filetypes)
|
|
- initFromKMimeType();
|
|
+ initFromQMimeType();
|
|
}
|
|
if (!m_appServicesModified && !m_embedServicesModified) {
|
|
m_bFullInit = false; // refresh services too
|
|
@@ -468,7 +470,7 @@ void MimeTypeData::setAskSave(bool _askSave)
|
|
bool MimeTypeData::canUseGroupSetting() const
|
|
{
|
|
// "Use group settings" isn't available for zip, tar etc.; those have a builtin default...
|
|
- if (!m_mimetype) // e.g. new mimetype
|
|
+ if (!m_mimetype.isValid()) // e.g. new mimetype
|
|
return true;
|
|
const bool hasLocalProtocolRedirect = !KProtocolManager::protocolForArchiveMimetype(name()).isEmpty();
|
|
return !hasLocalProtocolRedirect;
|
|
@@ -478,7 +480,7 @@ void MimeTypeData::setPatterns(const QStringList &p)
|
|
{
|
|
m_patterns = p;
|
|
// Sort them, since update-mime-database doesn't respect order (order of globs file != order of xml),
|
|
- // and this code says things like if (m_mimetype->patterns() == m_patterns).
|
|
+ // and this code says things like if (m_mimetype.patterns() == m_patterns).
|
|
// We could also sort in KMimeType::setPatterns but this would just slow down the
|
|
// normal use case (anything else than this KCM) for no good reason.
|
|
m_patterns.sort();
|
|
@@ -514,7 +516,7 @@ QString MimeTypeData::icon() const
|
|
{
|
|
if (!m_userSpecifiedIcon.isEmpty())
|
|
return m_userSpecifiedIcon;
|
|
- if (m_mimetype)
|
|
- return m_mimetype->iconName();
|
|
+ if (m_mimetype.isValid())
|
|
+ return m_mimetype.iconName();
|
|
return QString();
|
|
}
|
|
diff --git a/keditfiletype/mimetypedata.h b/keditfiletype/mimetypedata.h
|
|
index 042b043..5b00c07 100644
|
|
--- a/keditfiletype/mimetypedata.h
|
|
+++ b/keditfiletype/mimetypedata.h
|
|
@@ -21,11 +21,14 @@
|
|
#ifndef MIMETYPEDATA_H
|
|
#define MIMETYPEDATA_H
|
|
|
|
-#include <kmimetype.h>
|
|
+#include <QMimeType>
|
|
+#include <QMimeDatabase>
|
|
+
|
|
+class KConfigGroup;
|
|
|
|
/**
|
|
* This is a non-gui (data) class, that represents a mimetype.
|
|
- * It is a KMimeType::Ptr plus the changes we made to it.
|
|
+ * It is a QMimeType plus the changes we made to it.
|
|
*/
|
|
class MimeTypeData
|
|
{
|
|
@@ -33,7 +36,7 @@ public:
|
|
// Constructor used for groups
|
|
MimeTypeData(const QString& major);
|
|
// Real constructor, used for an existing mimetype.
|
|
- MimeTypeData(const KMimeType::Ptr mime);
|
|
+ MimeTypeData(const QMimeType& mime);
|
|
// Real constructor, used for a new mimetype.
|
|
MimeTypeData(const QString& mimeName, bool /*unused, just to distinguish from the other QString ctor*/);
|
|
|
|
@@ -67,7 +70,7 @@ public:
|
|
AutoEmbed autoEmbed() const { return m_autoEmbed; }
|
|
void setAutoEmbed( AutoEmbed a ) { m_autoEmbed = a; }
|
|
|
|
- const KMimeType::Ptr& mimeType() const { return m_mimetype; }
|
|
+ const QMimeType& mimeType() const { return m_mimetype; }
|
|
bool canUseGroupSetting() const;
|
|
|
|
void getAskSave(bool &);
|
|
@@ -105,7 +108,7 @@ public:
|
|
bool matchesFilter(const QString& filter) const;
|
|
|
|
private:
|
|
- void initFromKMimeType();
|
|
+ void initFromQMimeType();
|
|
AutoEmbed readAutoEmbed() const;
|
|
void writeAutoEmbed();
|
|
bool isMimeTypeDirty() const; // whether the mimetype definition file needs saving
|
|
@@ -116,7 +119,7 @@ private:
|
|
void saveServices(KConfigGroup & config, const QStringList& services);
|
|
void saveRemovedServices(KConfigGroup & config, const QStringList& services, const QStringList& oldServices);
|
|
|
|
- KMimeType::Ptr m_mimetype; // 0 if this is data for a mimetype group (m_isGroup==true)
|
|
+ QMimeType m_mimetype;
|
|
enum AskSave { AskSaveYes = 0, AskSaveNo = 1, AskSaveDefault = 2 };
|
|
AskSave m_askSave:3;
|
|
AutoEmbed m_autoEmbed:3;
|
|
@@ -125,6 +128,7 @@ private:
|
|
bool m_isGroup:1;
|
|
bool m_appServicesModified:1;
|
|
bool m_embedServicesModified:1;
|
|
+ bool m_userSpecifiedIconModified:1;
|
|
QString m_major, m_minor, m_comment, m_userSpecifiedIcon;
|
|
QStringList m_patterns;
|
|
mutable QStringList m_appServices;
|
|
diff --git a/keditfiletype/mimetypewriter.cpp b/keditfiletype/mimetypewriter.cpp
|
|
index be5e5d4..11963d2 100644
|
|
--- a/keditfiletype/mimetypewriter.cpp
|
|
+++ b/keditfiletype/mimetypewriter.cpp
|
|
@@ -19,23 +19,15 @@
|
|
*/
|
|
|
|
#include "mimetypewriter.h"
|
|
-#include <kmimetype.h>
|
|
|
|
-#include <kdebug.h>
|
|
-#include <kdeversion.h>
|
|
-#include <kprocess.h>
|
|
-
|
|
-
|
|
-#include <QXmlStreamWriter>
|
|
+#include <QDebug>
|
|
#include <QFile>
|
|
+#include <QMimeDatabase>
|
|
+#include <QMimeType>
|
|
#include <QStandardPaths>
|
|
+#include <QXmlStreamWriter>
|
|
|
|
-/// WARNING: this code is duplicated between apps/nsplugins and runtime/filetypes
|
|
-
|
|
-static bool sharedMimeInfoSupportsIcon()
|
|
-{
|
|
- return KMimeType::sharedMimeInfoVersion() >= KDE_MAKE_VERSION(0, 40, 0);
|
|
-}
|
|
+#include <kprocess.h>
|
|
|
|
class MimeTypeWriterPrivate
|
|
{
|
|
@@ -84,10 +76,10 @@ void MimeTypeWriter::setMarker(const QString& marker)
|
|
bool MimeTypeWriter::write()
|
|
{
|
|
const QString packageFileName = d->localFilePath();
|
|
- kDebug() << "writing" << packageFileName;
|
|
+ qDebug() << "writing" << packageFileName;
|
|
QFile packageFile(packageFileName);
|
|
if (!packageFile.open(QIODevice::WriteOnly)) {
|
|
- kError() << "Couldn't open" << packageFileName << "for writing";
|
|
+ qCritical() << "Couldn't open" << packageFileName << "for writing";
|
|
return false;
|
|
}
|
|
QXmlStreamWriter writer(&packageFile);
|
|
@@ -110,11 +102,9 @@ bool MimeTypeWriter::write()
|
|
|
|
if (!d->m_iconName.isEmpty()) {
|
|
// User-specified icon name
|
|
- if (sharedMimeInfoSupportsIcon()) {
|
|
- writer.writeStartElement(nsUri, "icon");
|
|
- writer.writeAttribute("name", d->m_iconName);
|
|
- writer.writeEndElement(); // icon
|
|
- }
|
|
+ writer.writeStartElement(nsUri, "icon");
|
|
+ writer.writeAttribute("name", d->m_iconName);
|
|
+ writer.writeEndElement(); // icon
|
|
}
|
|
|
|
// Allow this local definition to override the global definition
|
|
@@ -142,7 +132,7 @@ void MimeTypeWriter::runUpdateMimeDatabase()
|
|
proc << localPackageDir;
|
|
const int exitCode = proc.execute();
|
|
if (exitCode) {
|
|
- kWarning() << proc.program() << "exited with error code" << exitCode;
|
|
+ qWarning() << proc.program() << "exited with error code" << exitCode;
|
|
}
|
|
}
|
|
|
|
diff --git a/keditfiletype/mimetypewriter.h b/keditfiletype/mimetypewriter.h
|
|
index 5a618a6..3dfca16 100644
|
|
--- a/keditfiletype/mimetypewriter.h
|
|
+++ b/keditfiletype/mimetypewriter.h
|
|
@@ -74,7 +74,7 @@ public:
|
|
*
|
|
* NOTE: this is not the same as testing whether the
|
|
* mimetype is defined in general (for instance by freedesktop.org.xml)
|
|
- * you should use KMimeType::mimeType() for that.
|
|
+ * you should use db.mimeTypeForName() for that.
|
|
* This method is only for mimetypes generated by MimeTypeWriter.
|
|
*/
|
|
static bool hasDefinitionFile(const QString& mimeType);
|
|
diff --git a/keditfiletype/newtypedlg.cpp b/keditfiletype/newtypedlg.cpp
|
|
index c933a8f..78c2fdd 100644
|
|
--- a/keditfiletype/newtypedlg.cpp
|
|
+++ b/keditfiletype/newtypedlg.cpp
|
|
@@ -24,6 +24,7 @@
|
|
// Qt
|
|
#include <QBoxLayout>
|
|
#include <QComboBox>
|
|
+#include <QDialogButtonBox>
|
|
#include <QFrame>
|
|
#include <QFormLayout>
|
|
#include <QLabel>
|
|
@@ -31,23 +32,21 @@
|
|
|
|
// KDE
|
|
#include <klineedit.h>
|
|
-#include <klocale.h>
|
|
+#include <klocalizedstring.h>
|
|
|
|
|
|
NewTypeDialog::NewTypeDialog(const QStringList &groups, QWidget *parent)
|
|
- : KDialog( parent )
|
|
+ : QDialog( parent )
|
|
{
|
|
setModal( true );
|
|
- setCaption( i18n( "Create New File Type" ) );
|
|
- setButtons( Ok | Cancel );
|
|
+ setWindowTitle( i18n( "Create New File Type" ) );
|
|
|
|
- QWidget* main = mainWidget();
|
|
+ QVBoxLayout *mainLayout = new QVBoxLayout(this);
|
|
+ QFormLayout *formLayout = new QFormLayout;
|
|
|
|
- QFormLayout *formLayout = new QFormLayout(main);
|
|
+ QLabel *l = new QLabel(i18n("Group:"));
|
|
|
|
- QLabel *l = new QLabel(i18n("Group:"), main);
|
|
-
|
|
- m_groupCombo = new QComboBox(main);
|
|
+ m_groupCombo = new QComboBox;
|
|
m_groupCombo->setEditable(true);
|
|
m_groupCombo->addItems(groups);
|
|
m_groupCombo->setCurrentIndex(m_groupCombo->findText("application")); // certainly a better default than "all"
|
|
@@ -58,15 +57,24 @@ NewTypeDialog::NewTypeDialog(const QStringList &groups, QWidget *parent)
|
|
|
|
// Line 1: mimetype name
|
|
|
|
- l = new QLabel(i18n("Type name:"), main);
|
|
+ l = new QLabel(i18n("Type name:"));
|
|
|
|
- m_typeEd = new KLineEdit(main);
|
|
+ m_typeEd = new KLineEdit;
|
|
formLayout->addRow(l, m_typeEd);
|
|
|
|
m_typeEd->setWhatsThis(i18n("Type the name of the file type. For instance, if you selected 'image' as category and you type 'custom' here, the file type 'image/custom' will be created."));
|
|
|
|
m_typeEd->setFocus();
|
|
|
|
+ m_buttonBox = new QDialogButtonBox;
|
|
+ m_buttonBox->setStandardButtons(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
|
+
|
|
+ mainLayout->addLayout(formLayout);
|
|
+ mainLayout->addWidget(m_buttonBox);
|
|
+
|
|
+ connect(m_buttonBox, SIGNAL(accepted()), SLOT(accept()));
|
|
+ connect(m_buttonBox, SIGNAL(rejected()), SLOT(reject()));
|
|
+
|
|
// Set a minimum width so that caption is not half-hidden
|
|
setMinimumWidth(300);
|
|
}
|
|
diff --git a/keditfiletype/newtypedlg.h b/keditfiletype/newtypedlg.h
|
|
index fba8385..cc7f9e2 100644
|
|
--- a/keditfiletype/newtypedlg.h
|
|
+++ b/keditfiletype/newtypedlg.h
|
|
@@ -20,8 +20,9 @@
|
|
#ifndef _NEWTYPEDLG_H
|
|
#define _NEWTYPEDLG_H
|
|
|
|
-#include <kdialog.h>
|
|
+#include <QDialog>
|
|
|
|
+class QDialogButtonBox;
|
|
class QStringList;
|
|
class KLineEdit;
|
|
class QComboBox;
|
|
@@ -32,7 +33,7 @@ class QComboBox;
|
|
* - a line-edit for entering the name of the file type
|
|
* The rest (description, patterns, icon, apps) can be set later in the filetypesview anyway.
|
|
*/
|
|
-class NewTypeDialog : public KDialog
|
|
+class NewTypeDialog : public QDialog
|
|
{
|
|
public:
|
|
explicit NewTypeDialog(const QStringList &groups, QWidget *parent);
|
|
@@ -41,6 +42,7 @@ public:
|
|
private:
|
|
KLineEdit *m_typeEd;
|
|
QComboBox *m_groupCombo;
|
|
+ QDialogButtonBox* m_buttonBox;
|
|
};
|
|
|
|
#endif
|
|
diff --git a/keditfiletype/sharedmimeinfoversion.cpp b/keditfiletype/sharedmimeinfoversion.cpp
|
|
deleted file mode 100644
|
|
index 9dabf0e..0000000
|
|
--- a/keditfiletype/sharedmimeinfoversion.cpp
|
|
+++ /dev/null
|
|
@@ -1,28 +0,0 @@
|
|
-/* This file is part of the KDE project
|
|
- Copyright (C) 2009 David Faure <faure@kde.org>
|
|
-
|
|
- 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 2 of the License or ( at
|
|
- your option ) version 3 or, at the discretion of KDE e.V. ( which shall
|
|
- act as a proxy as in section 14 of the GPLv3 ), 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; see the file COPYING. If not, write to
|
|
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
- Boston, MA 02110-1301, USA.
|
|
-*/
|
|
-
|
|
-#include "sharedmimeinfoversion.h"
|
|
-#include <kmimetype.h>
|
|
-#include <kdeversion.h>
|
|
-
|
|
-bool SharedMimeInfoVersion::supportsIcon()
|
|
-{
|
|
- return KMimeType::sharedMimeInfoVersion() >= KDE_MAKE_VERSION(0, 40, 0);
|
|
-}
|
|
diff --git a/keditfiletype/sharedmimeinfoversion.h b/keditfiletype/sharedmimeinfoversion.h
|
|
deleted file mode 100644
|
|
index 9824d7b..0000000
|
|
--- a/keditfiletype/sharedmimeinfoversion.h
|
|
+++ /dev/null
|
|
@@ -1,30 +0,0 @@
|
|
-/* This file is part of the KDE project
|
|
- Copyright (C) 2009 David Faure <faure@kde.org>
|
|
-
|
|
- 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 2 of the License or ( at
|
|
- your option ) version 3 or, at the discretion of KDE e.V. ( which shall
|
|
- act as a proxy as in section 14 of the GPLv3 ), 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; see the file COPYING. If not, write to
|
|
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
- Boston, MA 02110-1301, USA.
|
|
-*/
|
|
-
|
|
-#ifndef SHAREDMIMEINFOVERSION_H
|
|
-#define SHAREDMIMEINFOVERSION_H
|
|
-
|
|
-namespace SharedMimeInfoVersion
|
|
-{
|
|
- bool supportsIcon();
|
|
-}
|
|
-
|
|
-#endif /* SHAREDMIMEINFOVERSION_H */
|
|
-
|
|
diff --git a/keditfiletype/tests/CMakeLists.txt b/keditfiletype/tests/CMakeLists.txt
|
|
index 489bb4d..cee562d 100644
|
|
--- a/keditfiletype/tests/CMakeLists.txt
|
|
+++ b/keditfiletype/tests/CMakeLists.txt
|
|
@@ -6,7 +6,6 @@ add_executable(filetypestest
|
|
filetypestest.cpp
|
|
../mimetypedata.cpp
|
|
../mimetypewriter.cpp
|
|
- ../sharedmimeinfoversion.cpp
|
|
)
|
|
ecm_mark_as_test(filetypestest)
|
|
add_test(filetypestest filetypestest)
|
|
diff --git a/keditfiletype/tests/filetypestest.cpp b/keditfiletype/tests/filetypestest.cpp
|
|
index 68eef26..05dae41 100644
|
|
--- a/keditfiletype/tests/filetypestest.cpp
|
|
+++ b/keditfiletype/tests/filetypestest.cpp
|
|
@@ -19,7 +19,6 @@
|
|
|
|
#include <kprocess.h>
|
|
#include <kservice.h>
|
|
-#include <qtest_kde.h>
|
|
|
|
#include <kconfiggroup.h>
|
|
#include <kdebug.h>
|
|
@@ -27,9 +26,13 @@
|
|
#include <kstandarddirs.h>
|
|
#include <ksycoca.h>
|
|
|
|
+// Qt
|
|
+#include <QDir>
|
|
+#include <QStandardPaths>
|
|
+#include <QTest>
|
|
+
|
|
#include <mimetypedata.h>
|
|
#include <mimetypewriter.h>
|
|
-#include <QStandardPaths>
|
|
|
|
#define KDE_MAKE_VERSION( a,b,c ) (((a) << 16) | ((b) << 8) | (c))
|
|
|
|
@@ -108,7 +111,8 @@ private Q_SLOTS:
|
|
|
|
void testMimeTypeAutoEmbed()
|
|
{
|
|
- MimeTypeData data(KMimeType::mimeType("text/plain"));
|
|
+ QMimeDatabase db;
|
|
+ MimeTypeData data(db.mimeTypeForName("text/plain"));
|
|
QCOMPARE(data.majorType(), QString("text"));
|
|
QCOMPARE(data.minorType(), QString("plain"));
|
|
QCOMPARE(data.name(), QString("text/plain"));
|
|
@@ -121,7 +125,7 @@ private Q_SLOTS:
|
|
QVERIFY(!data.sync()); // save to disk. Should succeed, but return false (no need to run update-mime-database)
|
|
QVERIFY(!data.isDirty());
|
|
// Check what's on disk by creating another MimeTypeData instance
|
|
- MimeTypeData data2(KMimeType::mimeType("text/plain"));
|
|
+ MimeTypeData data2(db.mimeTypeForName("text/plain"));
|
|
QCOMPARE(data2.autoEmbed(), MimeTypeData::Yes);
|
|
QVERIFY(!data2.isDirty());
|
|
data2.setAutoEmbed(MimeTypeData::UseGroupSetting); // revert to default, for next time
|
|
@@ -132,7 +136,8 @@ private Q_SLOTS:
|
|
|
|
void testMimeTypePatterns()
|
|
{
|
|
- MimeTypeData data(KMimeType::mimeType("text/plain"));
|
|
+ QMimeDatabase db;
|
|
+ MimeTypeData data(db.mimeTypeForName("text/plain"));
|
|
QCOMPARE(data.name(), QString("text/plain"));
|
|
QCOMPARE(data.majorType(), QString("text"));
|
|
QCOMPARE(data.minorType(), QString("plain"));
|
|
@@ -141,10 +146,7 @@ private Q_SLOTS:
|
|
QVERIFY(patterns.contains("*.txt"));
|
|
QVERIFY(!patterns.contains("*.toto"));
|
|
const QStringList origPatterns = patterns;
|
|
- if (KMimeType::sharedMimeInfoVersion() >= KDE_MAKE_VERSION(0, 61, 0)) {
|
|
- // <glob-deleteall> is only supported by shared-mime-info > 0.60
|
|
- patterns.removeAll("*.txt");
|
|
- }
|
|
+ patterns.removeAll("*.txt");
|
|
patterns.append("*.toto"); // yes, a french guy wrote this, as you can see
|
|
patterns.sort(); // for future comparisons
|
|
QVERIFY(!data.isDirty());
|
|
@@ -158,7 +160,7 @@ private Q_SLOTS:
|
|
data.refresh(); // reload from the xml
|
|
QCOMPARE(data.patterns(), patterns);
|
|
// Check what's in ksycoca
|
|
- QStringList newPatterns = KMimeType::mimeType("text/plain")->patterns();
|
|
+ QStringList newPatterns = db.mimeTypeForName("text/plain").globPatterns();
|
|
newPatterns.sort();
|
|
QCOMPARE(newPatterns, patterns);
|
|
QVERIFY(!data.isDirty());
|
|
@@ -170,15 +172,16 @@ private Q_SLOTS:
|
|
MimeTypeWriter::runUpdateMimeDatabase();
|
|
//runKBuildSycoca();
|
|
// Check what's in ksycoca
|
|
- newPatterns = KMimeType::mimeType("text/plain")->patterns();
|
|
+ newPatterns = db.mimeTypeForName("text/plain").globPatterns();
|
|
newPatterns.sort();
|
|
QCOMPARE(newPatterns, origPatterns);
|
|
}
|
|
|
|
void testAddService()
|
|
{
|
|
+ QMimeDatabase db;
|
|
const char* mimeTypeName = "application/rtf"; // use inherited mimetype to test #321706
|
|
- MimeTypeData data(KMimeType::mimeType(mimeTypeName));
|
|
+ MimeTypeData data(db.mimeTypeForName(mimeTypeName));
|
|
QStringList appServices = data.appServices();
|
|
//kDebug() << appServices;
|
|
QVERIFY(!appServices.isEmpty());
|
|
@@ -222,9 +225,10 @@ private Q_SLOTS:
|
|
|
|
void testRemoveTwice()
|
|
{
|
|
+ QMimeDatabase db;
|
|
// Remove fakeApplication from image/png
|
|
const char* mimeTypeName = "image/png";
|
|
- MimeTypeData data(KMimeType::mimeType(mimeTypeName));
|
|
+ MimeTypeData data(db.mimeTypeForName(mimeTypeName));
|
|
QStringList appServices = data.appServices();
|
|
kDebug() << "initial list for" << mimeTypeName << appServices;
|
|
QVERIFY(appServices.removeAll(fakeApplication) > 0);
|
|
@@ -264,6 +268,7 @@ private Q_SLOTS:
|
|
|
|
void testCreateMimeType()
|
|
{
|
|
+ QMimeDatabase db;
|
|
const QString mimeTypeName = "fake/unit-test-fake-mimetype";
|
|
// Clean up after previous runs if necessary
|
|
if (MimeTypeWriter::hasDefinitionFile(mimeTypeName))
|
|
@@ -277,19 +282,20 @@ private Q_SLOTS:
|
|
QVERIFY(data.sync());
|
|
MimeTypeWriter::runUpdateMimeDatabase();
|
|
//runKBuildSycoca();
|
|
- KMimeType::Ptr mime = KMimeType::mimeType(mimeTypeName);
|
|
- QVERIFY(mime);
|
|
- QCOMPARE(mime->comment(), QString("Fake MimeType"));
|
|
- QCOMPARE(mime->patterns(), patterns); // must sort them if more than one
|
|
+ QMimeType mime = db.mimeTypeForName(mimeTypeName);
|
|
+ QVERIFY(mime.isValid());
|
|
+ QCOMPARE(mime.comment(), QString("Fake MimeType"));
|
|
+ QCOMPARE(mime.globPatterns(), patterns); // must sort them if more than one
|
|
|
|
// Testcase for the shaman.xml bug
|
|
- QCOMPARE(KMimeType::findByPath("/whatever/foo.pkg.tar.gz")->name(), QString("fake/unit-test-fake-mimetype"));
|
|
+ QCOMPARE(db.mimeTypeForFile("/whatever/foo.pkg.tar.gz").name(), QString("fake/unit-test-fake-mimetype"));
|
|
|
|
m_mimeTypeCreatedSuccessfully = true;
|
|
}
|
|
|
|
void testDeleteMimeType()
|
|
{
|
|
+ QMimeDatabase db;
|
|
if (!m_mimeTypeCreatedSuccessfully)
|
|
QSKIP("This test relies on testCreateMimeType");
|
|
const QString mimeTypeName = "fake/unit-test-fake-mimetype";
|
|
@@ -297,14 +303,15 @@ private Q_SLOTS:
|
|
MimeTypeWriter::removeOwnMimeType(mimeTypeName);
|
|
MimeTypeWriter::runUpdateMimeDatabase();
|
|
//runKBuildSycoca();
|
|
- KMimeType::Ptr mime = KMimeType::mimeType(mimeTypeName);
|
|
- QVERIFY(!mime);
|
|
+ QMimeType mime = db.mimeTypeForName(mimeTypeName);
|
|
+ QVERIFY(mime.isValid());
|
|
}
|
|
|
|
void testModifyMimeTypeComment() // of a system mimetype. And check that it's re-read correctly.
|
|
{
|
|
+ QMimeDatabase db;
|
|
const char* mimeTypeName = "image/png";
|
|
- MimeTypeData data(KMimeType::mimeType(mimeTypeName));
|
|
+ MimeTypeData data(db.mimeTypeForName(mimeTypeName));
|
|
QCOMPARE(data.comment(), QString::fromLatin1("PNG image"));
|
|
const char* fakeComment = "PNG image [testing]";
|
|
data.setComment(fakeComment);
|
|
@@ -312,9 +319,9 @@ private Q_SLOTS:
|
|
QVERIFY(data.sync());
|
|
MimeTypeWriter::runUpdateMimeDatabase();
|
|
//runKBuildSycoca();
|
|
- KMimeType::Ptr mime = KMimeType::mimeType(mimeTypeName);
|
|
- QVERIFY(mime);
|
|
- QCOMPARE(mime->comment(), QString::fromLatin1(fakeComment));
|
|
+ QMimeType mime = db.mimeTypeForName(mimeTypeName);
|
|
+ QVERIFY(mime.isValid());
|
|
+ QCOMPARE(mime.comment(), QString::fromLatin1(fakeComment));
|
|
|
|
// Cleanup
|
|
QVERIFY(MimeTypeWriter::hasDefinitionFile(mimeTypeName));
|
|
@@ -391,7 +398,8 @@ private: // helper methods
|
|
|
|
void checkMimeTypeServices(const QString& mimeTypeName, const QStringList& expectedServices)
|
|
{
|
|
- MimeTypeData data2(KMimeType::mimeType(mimeTypeName));
|
|
+ QMimeDatabase db;
|
|
+ MimeTypeData data2(db.mimeTypeForName(mimeTypeName));
|
|
if (data2.appServices() != expectedServices)
|
|
kDebug() << "got" << data2.appServices() << "expected" << expectedServices;
|
|
QCOMPARE(data2.appServices(), expectedServices);
|
|
@@ -403,6 +411,6 @@ private: // helper methods
|
|
bool m_mimeTypeCreatedSuccessfully;
|
|
};
|
|
|
|
-QTEST_KDEMAIN( FileTypesTest, NoGUI )
|
|
+QTEST_MAIN(FileTypesTest)
|
|
|
|
#include "filetypestest.moc"
|
|
diff --git a/keditfiletype/typeslistitem.cpp b/keditfiletype/typeslistitem.cpp
|
|
index 97cd3c1..44f0ff1 100644
|
|
--- a/keditfiletype/typeslistitem.cpp
|
|
+++ b/keditfiletype/typeslistitem.cpp
|
|
@@ -22,9 +22,8 @@
|
|
// Own
|
|
#include "typeslistitem.h"
|
|
|
|
-// KDE
|
|
-#include <kdebug.h>
|
|
-#include <kicon.h>
|
|
+// Qt
|
|
+#include <QDebug>
|
|
|
|
|
|
TypesListItem::TypesListItem(QTreeWidget *parent, const QString & major)
|
|
@@ -34,7 +33,7 @@ TypesListItem::TypesListItem(QTreeWidget *parent, const QString & major)
|
|
setText(0, major);
|
|
}
|
|
|
|
-TypesListItem::TypesListItem(TypesListItem *parent, KMimeType::Ptr mimetype)
|
|
+TypesListItem::TypesListItem(TypesListItem *parent, QMimeType mimetype)
|
|
: QTreeWidgetItem(parent),
|
|
m_mimetypeData(mimetype)
|
|
{
|
|
@@ -61,7 +60,7 @@ void TypesListItem::setIcon( const QString& icon )
|
|
void TypesListItem::loadIcon(bool forceReload)
|
|
{
|
|
if ((!m_mimetypeData.icon().isEmpty() && icon(0).isNull()) || forceReload) {
|
|
- QTreeWidgetItem::setIcon(0, KIcon(m_mimetypeData.icon()));
|
|
+ QTreeWidgetItem::setIcon(0, QIcon::fromTheme(m_mimetypeData.icon()));
|
|
}
|
|
}
|
|
|
|
diff --git a/keditfiletype/typeslistitem.h b/keditfiletype/typeslistitem.h
|
|
index 05e425a..e86f3a4 100644
|
|
--- a/keditfiletype/typeslistitem.h
|
|
+++ b/keditfiletype/typeslistitem.h
|
|
@@ -24,7 +24,8 @@
|
|
#include "mimetypedata.h"
|
|
#include <QTreeWidgetItem>
|
|
|
|
-#include <kmimetype.h>
|
|
+#include <QMimeType>
|
|
+#include <QMimeDatabase>
|
|
|
|
// TODO different subclasses for mimetypes and groups?
|
|
class TypesListItem : public QTreeWidgetItem
|
|
@@ -38,7 +39,7 @@ public:
|
|
/**
|
|
* Create a filetype item inside a group, for an existing mimetype
|
|
*/
|
|
- TypesListItem(TypesListItem *parent, KMimeType::Ptr mimetype);
|
|
+ TypesListItem(TypesListItem *parent, QMimeType mimetype);
|
|
|
|
/**
|
|
* Create a filetype item inside a group, for a new mimetype
|
|
diff --git a/kioclient/kioclient.cpp b/kioclient/kioclient.cpp
|
|
index 5bd7df1..4cacc1f 100644
|
|
--- a/kioclient/kioclient.cpp
|
|
+++ b/kioclient/kioclient.cpp
|
|
@@ -39,6 +39,7 @@ bool ClientApp::m_ok = true;
|
|
static bool s_interactive = true;
|
|
static KIO::JobFlags s_jobFlags = KIO::DefaultFlags;
|
|
|
|
+// Qt5 TODO: use QUrl::fromUserInput(urlArgs, QDir::currentPath());
|
|
QUrl /*KCmdLineArgs::*/makeURL(const QString &urlArg)
|
|
{
|
|
QFileInfo fileInfo(urlArg);
|
|
@@ -133,9 +134,12 @@ int main( int argc, char **argv )
|
|
QString programName = i18n("KIO Client");
|
|
QString description = i18n("Command-line tool for network-transparent operations");
|
|
QString version = "2.0";
|
|
- KAboutData data(appName, appName, programName, version, description, KAboutData::License_LGPL_V2);
|
|
+ KAboutData data(appName, programName, version, description, KAboutLicense::LGPL_V2);
|
|
+ KAboutData::setApplicationData(data);
|
|
|
|
QCommandLineParser parser;
|
|
+ parser.addVersionOption();
|
|
+ parser.addHelpOption();
|
|
parser.addOption(QCommandLineOption("noninteractive", i18n("Non-interactive use: no message boxes. If you don't want a "
|
|
"graphical connection, use --platform offscreen")));
|
|
|