From: Boudewijn Rempt Date: Thu, 29 Mar 2012 13:32:18 +0000 Subject: Fix inserting table shape in non-english locale X-Git-Url: http://quickgit.kde.org/?p=calligra.git&a=commitdiff&h=af29c8a7a9d67b476b4de68604e01f1558181b12 --- Fix inserting table shape in non-english locale Comparing a translated name with a fixed text isn't going to work... BUG:297029 BUG:293704 Okay to backport to 2.4? --- --- a/libs/flake/KoDeferredShapeFactoryBase.h +++ b/libs/flake/KoDeferredShapeFactoryBase.h @@ -47,6 +47,8 @@ public: virtual ~KoDeferredShapeFactoryBase(); + virtual QString deferredPluginName() = 0; + /** * This method should be implemented by factories to create a shape that the user * gets when doing a base insert. For example from a script. The created shape --- a/libs/flake/KoShapeFactoryBase.cpp +++ b/libs/flake/KoShapeFactoryBase.cpp @@ -242,19 +242,14 @@ void KoShapeFactoryBase::getDeferredPlug if (d->deferredFactory) return; const QString serviceType = "Calligra/Deferred"; - QString query = QString::fromLatin1("(Type == 'Service') and (Name == '%1')").arg(d->deferredPluginName); - const KService::List offers = KServiceTypeTrader::self()->query(serviceType, query); + const KService::List offers = KServiceTypeTrader::self()->query(serviceType, QString()); Q_ASSERT(offers.size() > 0); foreach(KSharedPtr service, offers) { - QString error = 0; // FIXME: From where does error get a value? KoDeferredShapeFactoryBase *plugin = service->createInstance(this); - if (plugin) { + if (plugin && plugin->deferredPluginName() == d->deferredPluginName) { d->deferredFactory = plugin; } - else { - kWarning(30003) << "loading plugin" << service->name() << "failed, " << error; - } } } --- a/sheets/shape/TableShapeDeferredFactory.h +++ b/sheets/shape/TableShapeDeferredFactory.h @@ -30,6 +30,8 @@ public: TableDeferredShapeFactory(QObject *parent, const QVariantList&); ~TableDeferredShapeFactory(); + virtual QString deferredPluginName() { return "spreadsheetshape-deferred"; } + KoShape *createDefaultShape(KoDocumentResourceManager *documentResources = 0) const; private: KoShapeFactoryBase *m_stubFactory; --- a/sheets/shape/TableShapeFactory.cpp +++ b/sheets/shape/TableShapeFactory.cpp @@ -47,7 +47,7 @@ TableShapePlugin::TableShapePlugin(QObje TableShapeFactory::TableShapeFactory() - : KoShapeFactoryBase(TableShapeId, i18n("Spreadsheet"), "Spreadsheet Shape") + : KoShapeFactoryBase(TableShapeId, i18n("Spreadsheet"), "spreadsheetshape-deferred") { setToolTip(i18n("Spreadsheet Shape")); setIcon("spreadsheetshape"); --- a/sheets/shape/spreadsheetshape-deferred.desktop +++ b/sheets/shape/spreadsheetshape-deferred.desktop @@ -40,3 +40,4 @@ Type=Service X-KDE-Library=spreadsheetshape-deferred X-Flake-MinVersion=4 X-Flake-PluginVersion=4 +X-DeferredID=spreadsheetshape-deferred