33 #include <QtGui/QLayout>
34 #include <QtXml/qdom.h>
35 #include <QtGui/QToolButton>
63 m_p =
new KMenu(
this);
64 action_install = m_p->addAction(
SmallIcon(
"get-hot-new-stuff"),
66 action_uninstall = m_p->addAction(
i18n(
"Uninstall"));
67 action_comments = m_p->addAction(
SmallIcon(
"help-about"),
69 action_changes = m_p->addAction(
SmallIcon(
"help-about"),
72 m_history =
new KMenu(
this);
73 m_history->setTitle(
i18n(
"Switch version"));
79 action_historysub = m_p->addMenu(m_history);
82 action_info = m_p->addAction(
i18n(
"Provider information"));
84 m_contact =
new KMenu(
this);
85 m_contact->setIcon(
SmallIcon(
"mail-message-new"));
86 m_contact->setTitle(
i18n(
"Contact author"));
89 pcollab->setTitle(
i18n(
"Collaboration"));
91 action_collabrating = pcollab->addAction(
i18n(
"Add Rating"));
92 action_collabcomment = pcollab->addAction(
i18n(
"Add Comment"));
93 action_collabtranslation = pcollab->addAction(
i18n(
"Translate"));
94 action_collabsubscribe = pcollab->addAction(
i18n(
"Subscribe"));
95 action_collabremoval = pcollab->addAction(
i18n(
"Report bad entry"));
96 pcollab->addMenu(m_contact);
99 action_collaboratesub = m_p->addMenu(pcollab);
101 connect(
this, SIGNAL(clicked()), SLOT(
slotClicked()));
103 connect(m_p, SIGNAL(triggered(QAction*)), SLOT(
slotTriggered(QAction*)));
105 connect(m_contact, SIGNAL(triggered(QAction*)), SLOT(
slotTriggered(QAction*)));
106 connect(pcollab, SIGNAL(triggered(QAction*)), SLOT(
slotTriggered(QAction*)));
112 setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
113 setPopupMode(QToolButton::MenuButtonPopup);
128 if (m_engine) setEnabled(
true);
133 setText(
i18n(
"Uninstall"));
134 action_install->setVisible(
false);
135 action_uninstall->setVisible(
true);
138 setText(
i18n(
"Update"));
139 action_uninstall->setVisible(
false);
140 action_install->setVisible(
true);
144 setText(
i18n(
"Install"));
145 action_uninstall->setVisible(
false);
146 action_install->setVisible(
true);
149 setText(
i18n(
"Install"));
150 action_uninstall->setVisible(
false);
151 action_install->setVisible(
true);
155 if (!author.
email().isEmpty()) {
156 m_contact->setEnabled(
true);
157 action_contactbymail = m_contact->addAction(
SmallIcon(
"mail-message-new"),
160 m_contact->setEnabled(
false);
161 if (!author.
jabber().isEmpty()) {
162 action_contactbyjabber = m_contact->addAction(
i18n(
"Contact on Jabber"));
168 m_provider = provider;
170 if (!provider)
return;
176 action_collabrating->setEnabled(
true);
177 action_collabcomment->setEnabled(
true);
178 action_collabtranslation->setEnabled(
true);
179 action_collabsubscribe->setEnabled(
true);
180 action_collabremoval->setEnabled(
true);
182 action_comments->setEnabled(
true);
183 action_changes->setEnabled(
true);
185 m_history->setEnabled(
true);
187 action_collabrating->setEnabled(
false);
188 action_collabcomment->setEnabled(
false);
189 action_collabtranslation->setEnabled(
false);
190 action_collabsubscribe->setEnabled(
false);
191 action_collabremoval->setEnabled(
false);
193 action_comments->setEnabled(
false);
194 action_changes->setEnabled(
false);
196 m_history->setEnabled(
false);
204 if (m_entry) setEnabled(
true);
206 m_dxs =
new KNS::Dxs(m_engine, NULL);
207 m_dxs->
setEndpoint(
KUrl(
"http://new.kstuff.org/cgi-bin/hotstuff-dxs"));
213 SIGNAL(signalInfo(QString,QString,QString)),
214 SLOT(
slotInfo(QString,QString,QString)));
222 SIGNAL(signalComments(QStringList)),
225 SIGNAL(signalChanges(QStringList)),
228 SIGNAL(signalHistory(QStringList)),
231 SIGNAL(signalRemoval(
bool)),
234 SIGNAL(signalSubscription(
bool)),
237 SIGNAL(signalComment(
bool)),
240 SIGNAL(signalRating(
bool)),
243 SIGNAL(signalFault()),
246 SIGNAL(signalError()),
252 QString infostring =
i18n(
"Server: %1", server);
253 infostring +=
'\n' +
i18n(
"Provider: %1", provider);
254 infostring +=
'\n' +
i18n(
"Version: %1", version);
258 i18n(
"Provider information"));
271 for (KNS::Entry::List::Iterator it = entries.begin(); it != entries.end(); ++it) {
281 for (QStringList::const_iterator it = comments.begin(); it != comments.end(); ++it) {
293 for (QStringList::const_iterator it = changes.begin(); it != changes.end(); ++it) {
306 for (QStringList::const_iterator it = entries.begin(); it != entries.end(); ++it) {
315 if (entries.size() == 0) {
321 m_history->setCursor(Qt::ArrowCursor);
328 i18n(
"The removal request was successfully registered."),
329 i18n(
"Removal of entry"));
332 i18n(
"The removal request failed."),
333 i18n(
"Removal of entry"));
341 i18n(
"The subscription was successfully completed."),
342 i18n(
"Subscription to entry"));
345 i18n(
"The subscription request failed."),
346 i18n(
"Subscription to entry"));
354 i18n(
"The rating was submitted successfully."),
355 i18n(
"Rating for entry"));
358 i18n(
"The rating could not be submitted."),
359 i18n(
"Rating for entry"));
367 i18n(
"The comment was submitted successfully."),
368 i18n(
"Comment on entry"));
371 i18n(
"The comment could not be submitted."),
372 i18n(
"Comment on entry"));
379 i18n(
"A protocol fault has occurred. The request has failed."),
380 i18n(
"Desktop Exchange Service"));
386 i18n(
"A network error has occurred. The request has failed."),
387 i18n(
"Desktop Exchange Service"));
392 int version =
id - historyslots;
402 if (action == action_info) {
412 if (action == action_comments) {
415 if (action == action_changes) {
418 if (action == action_contactbymail) {
422 if (action == action_contactbyjabber) {
425 if (action == action_collabtranslation) {
429 ret = translation.exec();
430 if (ret == QDialog::Accepted) {
438 if (action == action_collabremoval) {
442 if (action == action_collabsubscribe) {
446 if (action == action_uninstall) {
448 setText(
i18n(
"Install"));
449 action_uninstall->setVisible(
false);
450 action_install->setVisible(
true);
453 if (action == action_install) {
455 SIGNAL(signalPayloadLoaded(
KUrl)),
463 if (action == action_collabcomment) {
467 ret = comment.exec();
468 if (ret == QDialog::Accepted) {
475 if (action == action_collabrating) {
480 if (ret == QDialog::Accepted) {
493 if (
id == historyinactive) {
495 m_history->setCursor(
QCursor(Qt::WaitCursor));
505 if (action_install->isVisible())
511 bool KDXSButton::authenticate()
513 if ((!m_username.isEmpty()) && (!m_password.isEmpty()))
return true;
516 dlg.setPrompt(
i18n(
"This operation requires authentication."));
517 int ret = dlg.exec();
518 if (ret == QDialog::Accepted) {
519 m_username = dlg.username();
520 m_password = dlg.password();
534 setText(
i18n(
"Uninstall"));
535 action_install->setVisible(
false);
536 action_uninstall->setVisible(
true);
538 setText(
i18n(
"Install"));
539 action_uninstall->setVisible(
false);
540 action_install->setVisible(
true);
551 #include "kdxsbutton.moc"