[prev in list] [next in list] [prev in thread] [next in thread]
List: kopete-devel
Subject: [kopete-devel] [PATCH] Chat Window Style selection via KNS2
From: Dennis =?iso-8859-1?q?Nienh=FCser?= <earthwings () gentoo ! org>
Date: 2008-04-13 19:02:23
Message-ID: 200804132102.30504.earthwings () gentoo ! org
[Download RAW message or body]
[Attachment #2 (multipart/signed)]
[Attachment #4 (multipart/mixed)]
Hi,
I had another look at KNS2, which now reports changed items and therefore
allows for an easier integration in Kopete.
The patch attached comes up with a behaviour for chat window style downloading
similar to the one in KDE 3.5. The download however is done by KNS2 (which
has a nice integrated download mechanism that doesn't get in one's way) and
the installation deferred to the point where the KNS2 dialog is closed.
Please review and comment.
Regards,
Dennis
["chatstyle_kns2.diff" (text/x-diff)]
Index: kopete/kopete/config/chatwindow/chatwindowconfig.h
===================================================================
--- kopete/kopete/config/chatwindow/chatwindowconfig.h (revision 796013)
+++ kopete/kopete/config/chatwindow/chatwindowconfig.h (working copy)
@@ -52,6 +52,7 @@
private slots:
//----- Style TAB ---------------------
void slotInstallChatStyle();
+ int installChatStyle(const KUrl &styleToInstall);
void slotDeleteChatStyle();
void slotChatStyleSelected();
void slotChatStyleVariantSelected(const QString &variantName);
Index: kopete/kopete/config/chatwindow/chatwindowconfig_style.ui
===================================================================
--- kopete/kopete/config/chatwindow/chatwindowconfig_style.ui (revision 796013)
+++ kopete/kopete/config/chatwindow/chatwindowconfig_style.ui (working copy)
@@ -197,7 +197,7 @@
<item>
<widget class="KPushButton" name="btnGetStyles" >
<property name="enabled" >
- <bool>false</bool>
+ <bool>true</bool>
</property>
<property name="toolTip" >
<string>Get new Chat Window styles over the Internet</string>
Index: kopete/kopete/config/chatwindow/CMakeLists.txt
===================================================================
--- kopete/kopete/config/chatwindow/CMakeLists.txt (revision 796013)
+++ kopete/kopete/config/chatwindow/CMakeLists.txt (working copy)
@@ -21,7 +21,7 @@
kde4_add_plugin(kcm_kopete_chatwindowconfig \
${kcm_kopete_chatwindowconfig_PART_SRCS})
-target_link_libraries(kcm_kopete_chatwindowconfig ${KDE4_KUTILS_LIBS} kopete \
kopetechatwindow_shared ${KDE4_KNEWSTUFF_LIBS} ) \
+target_link_libraries(kcm_kopete_chatwindowconfig ${KDE4_KUTILS_LIBS} kopete \
kopetechatwindow_shared ${KDE4_KNEWSTUFF2_LIBS} )
install(TARGETS kcm_kopete_chatwindowconfig DESTINATION ${PLUGIN_INSTALL_DIR})
Index: kopete/kopete/config/chatwindow/chatwindowconfig.cpp
===================================================================
--- kopete/kopete/config/chatwindow/chatwindowconfig.cpp (revision 796013)
+++ kopete/kopete/config/chatwindow/chatwindowconfig.cpp (working copy)
@@ -45,21 +45,13 @@
#include <kmessagebox.h>
#include <kpushbutton.h>
#include <kstandarddirs.h>
-#include <kurl.h> // KNewStuff
#include <kurlrequesterdialog.h>
#include <krun.h>
#include <kfiledialog.h>
+#include <kurl.h>
-#ifdef __GNUC__
-#warning "Port KNS changes!"
-#endif
-#if 0
-#include <knewstuff/downloaddialog.h> // knewstuff emoticon and chatwindow fetching
-#include <knewstuff/engine.h> // "
-#include <knewstuff/entry.h> // "
-#include <knewstuff/knewstuff.h> // "
-#include <knewstuff/provider.h> // "
-#endif
+// KNewStuff
+#include <knewstuff2/engine.h>
// For Kopete Chat Window Style configuration and preview.
#include <kopetechatwindowstylemanager.h>
@@ -146,63 +138,6 @@
FakeIdentity *m_identity;
};
-
-#ifdef __GNUC__
-#warning "Port KNS changes!"
-#endif
-#if 0
-class KopeteStyleNewStuff : public KNewStuff
-{
-public:
- KopeteStyleNewStuff(const QString &type, QWidget *parentWidget = 0)
- : KNewStuff( type, parentWidget)
- {}
-
- bool createUploadFile(const QString &)
- {
- return false;
- }
-
- bool install(const QString &styleFilename)
- {
- int styleInstallReturn = 0;
- styleInstallReturn = ChatWindowStyleManager::self()->installStyle( styleFilename \
);
-
- switch(styleInstallReturn)
- {
- case ChatWindowStyleManager::StyleInstallOk:
- {
- KMessageBox::queuedMessageBox( this->parentWidget(), KMessageBox::Information, \
i18n("The Chat Window style was successfully installed."), i18n("Install successful") \
);
- return true;
- }
- case ChatWindowStyleManager::StyleCannotOpen:
- {
- KMessageBox::queuedMessageBox( this->parentWidget(), KMessageBox::Error, \
i18n("The specified archive cannot be opened.\nMake sure that the archive is valid \
ZIP or TAR archive."), i18n("Cannot open archive") );
- break;
- }
- case ChatWindowStyleManager::StyleNoDirectoryValid:
- {
- KMessageBox::queuedMessageBox( this->parentWidget(), KMessageBox::Error, \
i18n("Could not find a suitable place to install the Chat Window style in user \
directory."), i18n("Cannot find styles directory") );
- break;
- }
- case ChatWindowStyleManager::StyleNotValid:
- {
- KMessageBox::queuedMessageBox( this->parentWidget(), KMessageBox::Error, \
i18n("The specified archive does not contain a valid Chat Window style."), \
i18n("Invalid Style") );
- break;
- }
-
- case ChatWindowStyleManager::StyleUnknow:
- default:
- {
- KMessageBox::queuedMessageBox( this->parentWidget(), KMessageBox::Error, \
i18n("An unknow error occurred while trying to install the Chat Window style."), \
i18n("Unknow error") );
- break;
- }
- }
- return false;
- }
-};
-#endif
-
ChatWindowConfig::ChatWindowConfig(QWidget *parent, const QVariantList &args )
: KCModule( KopeteChatWindowConfigFactory::componentData(), parent, args ),
m_currentStyle (0L), m_loading(false), m_styleChanged(false),
@@ -446,47 +381,54 @@
void ChatWindowConfig::slotInstallChatStyle()
{
- KUrl styleToInstall = KFileDialog::getOpenUrl( KUrl(), \
QString::fromUtf8("application/zip application/x-compressed-tar \
application/x-bzip-compressed-tar"), this, i18n("Choose Chat Window style to \
install.") ); + int styleInstallReturn = installChatStyle(KFileDialog::getOpenUrl( \
KUrl(), QString::fromUtf8("application/zip application/x-compressed-tar \
application/x-bzip-compressed-tar"), this, i18n("Choose Chat Window Style to \
install.") ));
+ switch(styleInstallReturn)
+ {
+ case ChatWindowStyleManager::StyleCannotOpen:
+ {
+ KMessageBox::queuedMessageBox( this, KMessageBox::Error, i18n("The specified \
archive cannot be opened.\nMake sure that the archive is a valid ZIP or TAR \
archive."), i18n("Cannot open archive") ); + break;
+ }
+ case ChatWindowStyleManager::StyleNoDirectoryValid:
+ {
+ KMessageBox::queuedMessageBox( this, KMessageBox::Error, i18n("Could not find a \
suitable place to install the Chat Window Style."), i18n("Cannot find styles \
directory") ); + break;
+ }
+ case ChatWindowStyleManager::StyleNotValid:
+ KMessageBox::queuedMessageBox( this, KMessageBox::Error, i18n("The specified \
archive does not contain a valid Chat Window Style."), i18n("Invalid Style") ); \
+ break; + case ChatWindowStyleManager::StyleInstallOk:
+ {
+ KMessageBox::queuedMessageBox( this, KMessageBox::Information, i18n("The Chat \
Window Style was successfully installed."), i18n("Install successful") ); + break;
+ }
+ case ChatWindowStyleManager::StyleUnknow:
+ default:
+ {
+ KMessageBox::queuedMessageBox( this, KMessageBox::Error, i18n("An unknown error \
occurred while trying to install the Chat Window Style."), i18n("Unknown error") ); \
+ break; + }
+ }
+}
+
+int ChatWindowConfig::installChatStyle(const KUrl &styleToInstall)
+{
+ int styleInstallReturn = ChatWindowStyleManager::StyleCannotOpen;
+
if( !styleToInstall.isEmpty() )
{
QString stylePath;
if( KIO::NetAccess::download( styleToInstall, stylePath, this ) )
{
- int styleInstallReturn = 0;
styleInstallReturn = ChatWindowStyleManager::self()->installStyle( stylePath );
- switch(styleInstallReturn)
- {
- case ChatWindowStyleManager::StyleCannotOpen:
- {
- KMessageBox::queuedMessageBox( this, KMessageBox::Error, i18n("The specified \
archive cannot be opened.\nMake sure that the archive is valid ZIP or TAR archive."), \
i18n("Cannot open archive") );
- break;
- }
- case ChatWindowStyleManager::StyleNoDirectoryValid:
- {
- KMessageBox::queuedMessageBox( this, KMessageBox::Error, i18n("Could not find a \
suitable place to install the Chat Window style in user directory."), i18n("Cannot \
find styles directory") );
- break;
- }
- case ChatWindowStyleManager::StyleNotValid:
- KMessageBox::queuedMessageBox( this, KMessageBox::Error, i18n("The specified \
archive does not contain a valid Chat Window style."), i18n("Invalid \
Style") );
- break;
- case ChatWindowStyleManager::StyleInstallOk:
- {
- KMessageBox::queuedMessageBox( this, KMessageBox::Information, i18n("The Chat \
Window style was successfully installed."), i18n("Install \
successful") );
- break;
- }
- case ChatWindowStyleManager::StyleUnknow:
- default:
- {
- KMessageBox::queuedMessageBox( this, KMessageBox::Error, i18n("An unknow error \
occurred while trying to install the Chat Window style."), \
i18n("Unknow error") );
- break;
- }
- }
// removeTempFile check if the file is a temp file, so it's ok for local files.
KIO::NetAccess::removeTempFile( stylePath );
}
}
+
+ return styleInstallReturn;
}
void ChatWindowConfig::slotDeleteChatStyle()
@@ -499,35 +441,76 @@
QString styleName = m_styleUi.styleList->selectedItem()->text();
if( ChatWindowStyleManager::self()->removeStyle(styleName) )
{
- KMessageBox::queuedMessageBox(this, KMessageBox::Information, i18nc("@info", "The \
style <resource>%1</resource> was successfully deleted.", styleName)); \
+ KMessageBox::queuedMessageBox(this, KMessageBox::Information, i18nc("@info", "The \
Chat Window Style <resource>%1</resource> was successfully deleted.", styleName)); \
emitChanged(); }
else
{
- KMessageBox::queuedMessageBox(this, KMessageBox::Sorry, i18nc("@info", "An error \
occurred while trying to delete the <resource>%1</resource> style. Your account might \
not have permission to remove it.", styleName)); \
+ KMessageBox::queuedMessageBox(this, KMessageBox::Sorry, i18nc("@info", "An error \
occurred while trying to delete the <resource>%1</resource> Chat Window Style. Your \
account might not have permission to remove it.", styleName)); }
}
void ChatWindowConfig::slotGetChatStyles()
{
-#ifdef __GNUC__
-#warning "Port KNS changes!"
-#endif
-#if 0
- // we need this because KNewStuffGeneric's install function isn't clever enough
- KopeteStyleNewStuff *kopeteNewStuff = new KopeteStyleNewStuff( "kopete/chatstyle", \
this );
- KNS::Engine *engine = new KNS::Engine( kopeteNewStuff, "kopete/chatstyle", this );
- KNS::DownloadDialog *downloadDialog = new KNS::DownloadDialog( engine, this );
- downloadDialog->setCategory( "kopete/chatstyle" );
- // you have to do this by hand when providing your own Engine
- KNS::ProviderLoader *provider = new KNS::ProviderLoader( this );
- QObject::connect( provider, SIGNAL( providersLoaded(Provider::List*) ), \
downloadDialog, SLOT( slotProviders (Provider::List *) ) );
- provider->load( "kopete/chatstyle", \
"http://download.kde.org/khotnewstuff/kopetestyles12-providers.xml" \
);
- downloadDialog->exec();
- delete downloadDialog;
- delete kopeteNewStuff;
+ KConfigGroup configGrp(KGlobal::config(), "KNewStuff2");
+ configGrp.writeEntry("ProvidersUrl", \
"http://download.kde.org/khotnewstuff/kopetestyles12-providers.xml"); \
+ configGrp.writeEntry("TargetDir", "kopete_chatstyles"); + configGrp.sync();
+
+ KNS::Engine *engine = new KNS::Engine();
+ engine->init(configGrp.config()->name());
+
+ KNS::Entry::List entries = engine->downloadDialogModal(this);
+
+ if ( entries.size() > 0 )
+ {
+ int correctlyInstalled(0);
+ foreach( KNS::Entry* entry, entries )
+ {
+ if ( entry->status() == KNS::Entry::Installed && entry->installedFiles().size() > \
0 ) + {
+ KUrl styleFile( entry->installedFiles().at(0) );
+ int result = installChatStyle( styleFile );
+
+ QString packageName(entry->name().representation());
+ QString errorTitle = i18nc("@title:window", "Chat Window Style \
<resource>%1</resource> installation", packageName); + switch(result)
+ {
+ case ChatWindowStyleManager::StyleCannotOpen:
+ {
+ KMessageBox::queuedMessageBox( this, KMessageBox::Error, i18nc("@info", "The \
specified archive <filename>%1</filename> cannot be opened.\nMake sure that the \
archive is a valid ZIP or TAR archive.", styleFile.pathOrUrl()), errorTitle); \
+ break; + }
+ case ChatWindowStyleManager::StyleNoDirectoryValid:
+ {
+ KMessageBox::queuedMessageBox( this, KMessageBox::Error, i18nc("@info", "Could \
not find a suitable place to install the Chat Window Style <resource>%1</resource>.", \
packageName), errorTitle ); + break;
+ }
+ case ChatWindowStyleManager::StyleNotValid:
+ KMessageBox::queuedMessageBox( this, KMessageBox::Error, i18nc("@info", "The \
specified archive <filename>%1</filename> does not contain a valid Chat Window \
Style.", styleFile.pathOrUrl()), errorTitle ); + break;
+ case ChatWindowStyleManager::StyleInstallOk:
+ {
+ ++correctlyInstalled;
+ break;
+ }
+ case ChatWindowStyleManager::StyleUnknow:
+ default:
+ {
+ KMessageBox::queuedMessageBox( this, KMessageBox::Error, i18nc("@info", "An \
unknown error occurred while trying to install the Chat Window Style \
<resource>%1</resource>.", packageName), errorTitle ); + break;
+ }
+ }
+ }
+ }
+
+ if ( correctlyInstalled > 0)
+ {
+ KMessageBox::queuedMessageBox(this, KMessageBox::Information, i18np("One Chat \
Window Style package has been installed.", "%1 Chat Window Style packages have been \
installed.", correctlyInstalled)); + }
+ }
+
delete engine;
-#endif
}
void ChatWindowConfig::createPreviewChatSession()
@@ -601,7 +584,7 @@
// This is a UTF-8 string btw.
Kopete::Message msgRightToLeft( m_myself, m_jack );
- msgRightToLeft.setPlainBody( i18nc("This special UTF-8 string is to test if the \
style support Right-to-Left language display.", "הודעות טקסט") ); \
+ msgRightToLeft.setPlainBody( i18nc("This special UTF-8 string is to test if the \
style supports Right-to-Left language display.", "הודעות טקסט") ); \
msgRightToLeft.setDirection( Kopete::Message::Outbound );
Kopete::Message msgBye ( m_myself, m_jack );
@@ -719,10 +702,10 @@
QString themeName = selected->text();
- QString question=i18n("<qt>Are you sure you want to remove the "
- "<strong>%1</strong> emoticon theme?<br />"
+ QString question=i18nc("@info", "Are you sure you want to remove the "
+ "<resource>%1</resource> emoticon theme?<br />"
"<br />"
- "This will delete the files installed by this theme.</qt>",
+ "<warning>This will delete all files installed by this theme.</warning>",
themeName);
int res = KMessageBox::warningContinueCancel(this, question, \
i18n("Confirmation"),KStandardGuiItem::del()); @@ -737,6 +720,10 @@
void ChatWindowConfig::slotGetEmoticonThemes()
{
+#ifdef __GNUC__
+#warning "Port KNS changes!"
+#endif
+#if 0
KConfigGroup config(KGlobal::config(), "KNewStuff");
config.writeEntry( "ProvidersUrl",
"http://download.kde.org/khotnewstuff/emoticons-providers.xml" );
@@ -744,14 +731,10 @@
config.writeEntry( "Uncompress", "application/x-gzip" );
config.sync();
-#ifdef __GNUC__
-#warning "Port KNS changes!"
-#endif
-#if 0
KNS::DownloadDialog::open( "emoticons", i18n( "Get New Emoticons") );
-#endif
updateEmoticonList();
+#endif
}
["signature.asc" (application/pgp-signature)]
_______________________________________________
kopete-devel mailing list
kopete-devel@kde.org
https://mail.kde.org/mailman/listinfo/kopete-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic