[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: playground/base/plasma
From: Sebastian Kügler <sebas () kde ! org>
Date: 2009-02-17 1:31:22
Message-ID: 1234834282.912420.32109.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 927212 by sebas:
Move logic to manage collections to MailExtender
This is a bit of refactoring that makes it much easier to handle
multiple collections nicely in Lion Mail.
M +1 -0 applets/lionmail/emailmessage/emailwidget.cpp
M +10 -62 applets/lionmail/lionmail.cpp
M +1 -6 applets/lionmail/lionmail.h
M +75 -1 applets/lionmail/mailextender.cpp
M +16 -3 applets/lionmail/mailextender.h
M +1 -1 dataengines/akonadi/akonadiengine.cpp
--- trunk/playground/base/plasma/applets/lionmail/emailmessage/emailwidget.cpp \
#927211:927212 @@ -181,6 +181,7 @@
m_subjectLabel->nativeWidget()->setWordWrap(false);
m_subjectLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
//m_subjectLabel->setMaximumWidth(240);
+ m_subjectLabel->setMinimumWidth(100);
m_layout->addItem(m_subjectLabel, 0, 1, 1, 1, Qt::AlignTop);
setSubject("Re: sell me a beer, mon");
--- trunk/playground/base/plasma/applets/lionmail/lionmail.cpp #927211:927212
@@ -47,7 +47,6 @@
m_fontFrom = Plasma::Theme::defaultTheme()->font(Plasma::Theme::DefaultFont);
m_fontSubject = Plasma::Theme::defaultTheme()->font(Plasma::Theme::DefaultFont);
setPopupIcon("akonadi");
- m_maxEmails = 6;
}
LionMail::~LionMail()
@@ -64,36 +63,16 @@
}
kDebug() << "Active Collection" << m_activeCollection;
- engine = dataEngine("akonadi");
- engine->connectAllSources(this);
- connectCollection(m_activeCollection);
- setBusy(true);
- connect(engine, SIGNAL(sourceAdded(QString)), SLOT(newSource(QString)));
setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
- //resize(300, 400); // move to constraintsevent
+ resize(300, 400);
extender()->setEmptyExtenderMessage(i18n("empty..."));
- initMailExtender();
+ initMailExtender(m_activeCollection);
updateToolTip("", 0);
- m_collections = dataEngine("akonadi")->query("EmailCollections");
}
-void LionMail::connectCollection(QString cid)
-{
- if (cid.isEmpty()) {
- return;
- }
- kDebug() << "connectSource" << m_activeCollection;
- engine->connectSource(cid, this); // pass collection ID as string
-}
-void LionMail::disconnectCollection(QString cid)
-{
- kDebug() << "disconnectSource" << cid;
- engine->disconnectSource(cid, this); // pass collection ID as string
-}
-
void LionMail::createConfigurationInterface(KConfigDialog *parent)
{
Q_UNUSED(parent);
@@ -102,6 +81,7 @@
ui.setupUi(widget);
parent->addPage(widget, i18n("Collections"), Applet::icon());
+ m_collections = dataEngine("akonadi")->query("EmailCollections");
foreach ( QString c, m_collections.keys() ) {
ui.collectionCombo->addItem(m_collections[c].toString(), c);
}
@@ -116,29 +96,23 @@
if (m_activeCollection != cid) {
QString name = ui.collectionCombo->currentText();
- //engine = dataEngine("akonadi");
- m_extenders[0]->setTitle(name);
- disconnectCollection(m_activeCollection);
+ // FIXME: hardcoded to first extender, needs UI change to support more than \
one extender + m_extenders[0]->setCollection(cid);
+
m_activeCollection = cid;
setConfigurationRequired(false);
- connectCollection(m_activeCollection);
-
cg.writeEntry("activeCollection", m_activeCollection);
kDebug() << "Active Collections changed:" << m_activeCollection;
emit configNeedsSaving();
}
}
-void LionMail::initMailExtender()
+void LionMail::initMailExtender(const QString id)
{
- MailExtender* mailView = new MailExtender(this, extender());
- mailView->setName("foobar"); // also make sure we don't recreate this one ...
- mailView->setDescription("Private Emails"); // FIXME: sample text
- mailView->setInfo("2 unread");
-
+ MailExtender* mailView = new MailExtender(this, id, extender());
m_extenders << mailView;
}
@@ -160,40 +134,14 @@
m_collections = data;
return;
}
- EmailMessage* email = 0;
- if (emails.count() < m_maxEmails && !emails.contains(source)) {
- kDebug() << "new ...";
- email = static_cast<EmailMessage*>(Plasma::Applet::load("emailmessage"));
- if (m_extenders.count()) {
- m_extenders[0]->addEmail(email); // FIXME: hardcoded, we need to find a \
way to select the right extender
- emails[source] = email;
- }
- }
- if (emails.contains(source)) {
- email = emails[source];
- }
-
- if (email == 0) {
- return;
- }
- // Only set email-specific properties here, layouttweaks and the like should go \
into MailExtender
- email->m_emailWidget->id = data["Id"].toLongLong();
- email->m_emailWidget->setSubject(data["Subject"].toString());
- email->m_emailWidget->setFrom(data["From"].toString());
- email->m_emailWidget->setTo(data["To"].toStringList());
- email->m_emailWidget->setCc(data["Cc"].toStringList());
- email->m_emailWidget->setBcc(data["Bcc"].toStringList());
-
- m_fromList[0] = data["From"].toString();
- m_subjectList[0] = data["Subject"].toString();
-
+ m_extenders[0]->dataUpdated(source, data);
update();
}
void LionMail::newSource(const QString & source)
{
//kDebug() << "------------- New:" << source;
- engine->connectSource(source, this);
+ dataEngine("akonadi")->connectSource(source, this);
// We could create MailExtenders here ...
}
--- trunk/playground/base/plasma/applets/lionmail/lionmail.h #927211:927212
@@ -60,18 +60,13 @@
void newSource( const QString &source );
private:
- void initMailExtender();
- void connectCollection(QString cid);
- void disconnectCollection(QString cid);
+ void initMailExtender(const QString);
QHash<QString, QVariant> m_collections;
QString m_activeCollection;
- QHash<QString, EmailMessage*> emails;
- int m_maxEmails;
QList<MailExtender*> m_extenders;
Plasma::Svg* m_theme;
- Plasma::DataEngine *engine;
Plasma::ToolTipContent m_toolTip;
Ui::lionmailConfig ui;
--- trunk/playground/base/plasma/applets/lionmail/mailextender.cpp #927211:927212
@@ -38,8 +38,9 @@
#include "emailmessage/emailmessage.h"
-MailExtender::MailExtender(LionMail * applet, Plasma::Extender *ext)
+MailExtender::MailExtender(LionMail * applet, const QString collectionId, \
Plasma::Extender *ext) : Plasma::ExtenderItem(ext),
+ m_id(collectionId),
m_info(0),
m_icon(0),
m_widget(0),
@@ -50,13 +51,86 @@
setTitle("Lion Mail");
setName("Lion Mail ExenderItem");
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
+ setDescription("Some description");
+ m_maxEmails = 6;
+
(void)graphicsWidget();
+ engine = m_applet->dataEngine("akonadi");
+ connectCollection(m_id);
+ setCollection(m_id);
}
+void MailExtender::setCollection(const QString id)
+{
+ disconnectCollection(m_id);
+ m_id = id;
+ connectCollection(m_id);
+ connect(engine, SIGNAL(sourceAdded(QString)), this, SLOT(newSource(QString)));
+}
+
MailExtender::~MailExtender()
{
}
+void MailExtender::setName(const QString name)
+{
+ m_collection = name;
+}
+
+void MailExtender::connectCollection(QString cid)
+{
+ if (cid.isEmpty()) {
+ return;
+ }
+ kDebug() << "connectSource" << cid;
+ engine->connectSource(cid, this); // pass collection ID as string
+}
+
+void MailExtender::disconnectCollection(QString cid)
+{
+ kDebug() << "disconnectSource" << cid;
+ engine->disconnectSource(cid, this); // pass collection ID as string
+}
+
+void MailExtender::newSource(const QString & source)
+{
+ kDebug() << "------------- New:" << source;
+ engine->connectSource(source, this);
+ // We could create MailExtenders here ...
+}
+
+
+void MailExtender::dataUpdated(const QString &source, const Plasma::DataEngine::Data \
&data) +{
+ kDebug() << source;
+ if (source == "Collections") {
+ return;
+ }
+ EmailMessage* email = 0;
+ if (emails.count() < m_maxEmails && !emails.contains(source)) {
+ kDebug() << "new ...";
+ email = static_cast<EmailMessage*>(Plasma::Applet::load("emailmessage"));
+ addEmail(email);
+ emails[source] = email;
+ }
+ if (emails.contains(source)) {
+ email = emails[source];
+ }
+
+ if (email == 0) {
+ return;
+ }
+ // Only set email-specific properties here, layouttweaks and the like should go \
into MailExtender + email->m_emailWidget->id = data["Id"].toLongLong();
+ email->m_emailWidget->setSubject(data["Subject"].toString());
+ email->m_emailWidget->setFrom(data["From"].toString());
+ email->m_emailWidget->setTo(data["To"].toStringList());
+ email->m_emailWidget->setCc(data["Cc"].toStringList());
+ email->m_emailWidget->setBcc(data["Bcc"].toStringList());
+
+ update();
+}
+
QGraphicsWidget* MailExtender::graphicsWidget()
{
/*
--- trunk/playground/base/plasma/applets/lionmail/mailextender.h #927211:927212
@@ -38,9 +38,10 @@
Q_OBJECT
public:
- MailExtender(LionMail * applet, Plasma::Extender *ext = 0);
+ MailExtender(LionMail * applet, const QString collectionId, Plasma::Extender \
*ext = 0); virtual ~MailExtender();
+ void setCollection(const QString id);
QGraphicsWidget* graphicsWidget();
void setIcon(const QString& icon);
@@ -49,18 +50,30 @@
QString icon();
void addEmail(EmailMessage* email);
+ void setName(const QString name);
- private slots:
+ public Q_SLOTS:
+ void dataUpdated(const QString &source, const Plasma::DataEngine::Data \
&data); +
+ private Q_SLOTS:
void updateColors();
+ void newSource( const QString &source );
private:
void buildDialog();
+ void connectCollection(QString cid);
+ void disconnectCollection(QString cid);
+
+ QString m_id;
+ QString m_collection;
QString m_description;
QString m_info;
+ QHash<QString, EmailMessage*> emails;
+ int m_maxEmails;
LionMail* m_applet;
-
+ Plasma::DataEngine* engine;
QGraphicsLinearLayout* m_messageLayout;
QGraphicsGridLayout* m_layout;
Plasma::IconWidget* m_icon;
--- trunk/playground/base/plasma/dataengines/akonadi/akonadiengine.cpp #927211:927212
@@ -137,7 +137,7 @@
if (msg) {
QString source = QString::number( item.id() );
source = "Email-" + source;
- kDebug() << "SOURCE:" << source;
+ kDebug() << "SOURCE:" << source << msg->subject()->asUnicodeString();
setData( source, "Id", item.id() );
setData( source, "Subject", msg->subject()->asUnicodeString() );
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic