[SCM] ktp-accounts-kcm packaging branch, master, updated. debian/15.12.1-1-1157-gc4589c5
Maximiliano Curia
maxy at moszumanska.debian.org
Fri May 27 23:59:40 UTC 2016
Gitweb-URL: http://git.debian.org/?p=pkg-kde/applications/ktp-accounts-kcm.git;a=commitdiff;h=dab90df
The following commit has been merged in the master branch:
commit dab90df7395c24f32840d4ed4b1fd7363f2ee4b0
Author: Dario Freddi <drf at kde.org>
Date: Fri Jun 3 10:08:17 2011 +0200
If Tp::AccountManager failed to become ready (because of missing Mission Control), warn the user and "disable" the KCM UI with nice overlay effect.
Reviewed-by: Martin Klapetek
---
src/kcm-telepathy-accounts.cpp | 102 +++++++++++++++++++++++++++++++++++++++--
src/kcm-telepathy-accounts.h | 18 +++++++-
2 files changed, 114 insertions(+), 6 deletions(-)
diff --git a/src/kcm-telepathy-accounts.cpp b/src/kcm-telepathy-accounts.cpp
index b75ed22..3959dbc 100644
--- a/src/kcm-telepathy-accounts.cpp
+++ b/src/kcm-telepathy-accounts.cpp
@@ -27,6 +27,8 @@
#include "edit-account-dialog.h"
#include "accounts-list-delegate.h"
+#include <QLabel>
+
#include <KGenericFactory>
#include <KIcon>
#include <KLocale>
@@ -88,7 +90,7 @@ KCMTelepathyAccounts::KCMTelepathyAccounts(QWidget *parent, const QVariantList&
m_ui->addAccountButton->setIcon(KIcon("list-add"));
m_ui->editAccountButton->setIcon(KIcon("configure"));
m_ui->removeAccountButton->setIcon(KIcon("edit-delete"));
-
+
AccountsListDelegate* delegate = new AccountsListDelegate(m_ui->accountsListView, this);
m_ui->accountsListView->setItemDelegate(delegate);
@@ -147,6 +149,7 @@ void KCMTelepathyAccounts::onAccountManagerReady(Tp::PendingOperation *op)
// Check the pending operation completed successfully.
if (op->isError()) {
kDebug() << "becomeReady() failed:" << op->errorName() << op->errorMessage();
+ new ErrorOverlay(this, op->errorMessage(), this);
return;
}
@@ -212,13 +215,102 @@ void KCMTelepathyAccounts::onRemoveAccountClicked()
kDebug();
QModelIndex index = m_ui->accountsListView->currentIndex();
- if ( KMessageBox::warningContinueCancel( this, i18n( "Are you sure you want to remove the account \"%1\"?", m_accountsListModel->data(index, Qt::DisplayRole).toString()),
- i18n( "Remove Account" ), KGuiItem(i18n( "Remove Account" ), "edit-delete"), KStandardGuiItem::cancel(),
- QString(), KMessageBox::Notify | KMessageBox::Dangerous ) == KMessageBox::Continue )
+ if ( KMessageBox::warningContinueCancel(this, i18n("Are you sure you want to remove the account \"%1\"?", m_accountsListModel->data(index, Qt::DisplayRole).toString()),
+ i18n("Remove Account"), KGuiItem(i18n("Remove Account"), "edit-delete"), KStandardGuiItem::cancel(),
+ QString(), KMessageBox::Notify | KMessageBox::Dangerous) == KMessageBox::Continue)
{
m_accountsListModel->removeAccount(index);
}
}
-#include "kcm-telepathy-accounts.moc"
+/////
+
+ErrorOverlay::ErrorOverlay(QWidget *baseWidget, const QString &details, QWidget *parent) :
+ QWidget(parent ? parent : baseWidget->window()),
+ mBaseWidget(baseWidget)
+{
+ // Build the UI
+ QVBoxLayout *layout = new QVBoxLayout;
+ layout->setSpacing(10);
+
+ QLabel *pixmap = new QLabel();
+ pixmap->setPixmap(KIcon("dialog-error").pixmap(64));
+
+ QLabel *message = new QLabel(i18n("Something went terribly wrong and the IM system could not be initialized"));
+
+ QLabel *detailsLabel = new QLabel(details);
+ QFont font = detailsLabel->font();
+ font.setItalic(true);
+ detailsLabel->setFont(font);
+
+ pixmap->setAlignment(Qt::AlignHCenter);
+ message->setAlignment(Qt::AlignHCenter);
+ detailsLabel->setAlignment(Qt::AlignHCenter);
+
+ layout->addStretch();
+ layout->addWidget(pixmap);
+ layout->addWidget(message);
+ layout->addWidget(detailsLabel);
+ layout->addStretch();
+
+ setLayout(layout);
+
+ // Draw the transparent overlay background
+ QPalette p = palette();
+ p.setColor(backgroundRole(), QColor(0, 0, 0, 128));
+ p.setColor(foregroundRole(), Qt::white);
+ setPalette(p);
+ setAutoFillBackground(true);
+
+ mBaseWidget->installEventFilter(this);
+
+ reposition();
+}
+
+ErrorOverlay::~ErrorOverlay()
+{
+}
+void ErrorOverlay::reposition()
+{
+ if (!mBaseWidget) {
+ return;
+ }
+
+ // reparent to the current top level widget of the base widget if needed
+ // needed eg. in dock widgets
+ if (parentWidget() != mBaseWidget->window()) {
+ setParent(mBaseWidget->window());
+ }
+
+ // follow base widget visibility
+ // needed eg. in tab widgets
+ if (!mBaseWidget->isVisible()) {
+ hide();
+ return;
+ }
+
+ show();
+
+ // follow position changes
+ const QPoint topLevelPos = mBaseWidget->mapTo(window(), QPoint(0, 0));
+ const QPoint parentPos = parentWidget()->mapFrom(window(), topLevelPos);
+ move(parentPos);
+
+ // follow size changes
+ // TODO: hide/scale icon if we don't have enough space
+ resize(mBaseWidget->size());
+}
+
+bool ErrorOverlay::eventFilter(QObject * object, QEvent * event)
+{
+ if (object == mBaseWidget &&
+ (event->type() == QEvent::Move || event->type() == QEvent::Resize ||
+ event->type() == QEvent::Show || event->type() == QEvent::Hide ||
+ event->type() == QEvent::ParentChange)) {
+ reposition();
+ }
+ return QWidget::eventFilter(object, event);
+}
+
+#include "kcm-telepathy-accounts.moc"
diff --git a/src/kcm-telepathy-accounts.h b/src/kcm-telepathy-accounts.h
index 82ef151..11b45cc 100644
--- a/src/kcm-telepathy-accounts.h
+++ b/src/kcm-telepathy-accounts.h
@@ -68,6 +68,22 @@ private:
AccountsListModel *m_accountsListModel;
};
+// Helper class for drawing error overlays
+class ErrorOverlay : public QWidget
+{
+ Q_OBJECT
+public:
+ explicit ErrorOverlay(QWidget *baseWidget, const QString &details, QWidget *parent = 0);
+ ~ErrorOverlay();
-#endif // header guard
+protected:
+ bool eventFilter(QObject *object, QEvent *event);
+
+private:
+ void reposition();
+private:
+ QWidget *mBaseWidget;
+};
+
+#endif // header guard
--
ktp-accounts-kcm packaging
More information about the pkg-kde-commits
mailing list