[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdepim/akonadi/clients/akonadiconsole
From: Volker Krause <vkrause () kde ! org>
Date: 2008-11-01 18:51:33
Message-ID: 1225565493.987136.7622.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 878755 by vkrause:
Monitor the current item and update the views if necessary. Fixes
changing the same item twice.
M +74 -59 browserwidget.cpp
M +3 -0 browserwidget.h
--- trunk/KDE/kdepim/akonadi/clients/akonadiconsole/browserwidget.cpp #878754:878755
@@ -34,6 +34,7 @@
#include <akonadi/collectionfilterproxymodel.h>
#include <akonadi/collectionpropertiesdialog.h>
#include <akonadi/standardactionmanager.h>
+#include <akonadi/monitor.h>
#include <kcal/kcalmodel.h>
#include <kabc/kabcmodel.h>
@@ -68,7 +69,8 @@
mItemModel( 0 ),
mCurrentCollection( 0 ),
mNepomukModel( 0 ),
- mStdActionManager( 0 )
+ mStdActionManager( 0 ),
+ mMonitor( 0 )
{
Q_ASSERT( xmlGuiWindow );
QVBoxLayout *layout = new QVBoxLayout( this );
@@ -159,73 +161,86 @@
kWarning( 5265 ) << "No item found!";
} else {
const Item item = fetch->items().first();
- mCurrentItem = item;
- if ( item.hasPayload<KABC::Addressee>() ) {
- const KABC::Addressee addr = item.payload<KABC::Addressee>();
+ setItem( item );
+ }
+}
- contentUi.addresseeView->setAddressee( addr );
- contentUi.stack->setCurrentWidget( contentUi.addresseeViewPage );
- } else if ( item.mimeType().startsWith( "application/x-vnd.akonadi.calendar" ) ) \
{
- contentUi.incidenceView->setItem( item );
- contentUi.stack->setCurrentWidget( contentUi.incidenceViewPage );
- } else {
- contentUi.stack->setCurrentWidget( contentUi.unsupportedTypePage );
- }
+void BrowserWidget::setItem( const Akonadi::Item &item )
+{
+ mCurrentItem = item;
+ if ( item.hasPayload<KABC::Addressee>() ) {
+ const KABC::Addressee addr = item.payload<KABC::Addressee>();
- QByteArray data = item.payloadData();
- contentUi.dataView->setPlainText( data );
+ contentUi.addresseeView->setAddressee( addr );
+ contentUi.stack->setCurrentWidget( contentUi.addresseeViewPage );
+ } else if ( item.mimeType().startsWith( "application/x-vnd.akonadi.calendar" ) ) {
+ contentUi.incidenceView->setItem( item );
+ contentUi.stack->setCurrentWidget( contentUi.incidenceViewPage );
+ } else {
+ contentUi.stack->setCurrentWidget( contentUi.unsupportedTypePage );
+ }
- contentUi.id->setText( QString::number( item.id() ) );
- contentUi.remoteId->setText( item.remoteId() );
- contentUi.mimeType->setText( item.mimeType() );
- contentUi.revision->setText( QString::number( item.revision() ) );
- contentUi.size->setText( QString::number( item.size() ) );
- contentUi.modificationtime->setText( item.modificationTime().toString() + ( " \
UTC" ) );
- QStringList flags;
- foreach ( const Item::Flag &f, item.flags() )
- flags << QString::fromUtf8( f );
- contentUi.flags->setItems( flags );
+ QByteArray data = item.payloadData();
+ contentUi.dataView->setPlainText( data );
- Attribute::List list = item.attributes();
- mAttrModel = new QStandardItemModel( list.count(), 2 );
+ contentUi.id->setText( QString::number( item.id() ) );
+ contentUi.remoteId->setText( item.remoteId() );
+ contentUi.mimeType->setText( item.mimeType() );
+ contentUi.revision->setText( QString::number( item.revision() ) );
+ contentUi.size->setText( QString::number( item.size() ) );
+ contentUi.modificationtime->setText( item.modificationTime().toString() + ( " UTC" \
) ); + QStringList flags;
+ foreach ( const Item::Flag &f, item.flags() )
+ flags << QString::fromUtf8( f );
+ contentUi.flags->setItems( flags );
+
+ Attribute::List list = item.attributes();
+ mAttrModel = new QStandardItemModel( list.count(), 2 );
+ QStringList labels;
+ labels << i18n( "Attribute" ) << i18n( "Value" );
+ mAttrModel->setHorizontalHeaderLabels( labels );
+ for ( int i = 0; i < list.count(); ++i ) {
+ QModelIndex index = mAttrModel->index( i, 0 );
+ Q_ASSERT( index.isValid() );
+ mAttrModel->setData( index, QString::fromLatin1( list[i]->type() ) );
+ index = mAttrModel->index( i, 1 );
+ Q_ASSERT( index.isValid() );
+ mAttrModel->setData( index, QString::fromLatin1( list[i]->serialized() ) );
+ mAttrModel->itemFromIndex( index )->setFlags( Qt::ItemIsEditable | \
mAttrModel->flags( index ) ); + }
+ contentUi.attrView->setModel( mAttrModel );
+
+ Nepomuk::Resource res( item.url() );
+ delete mNepomukModel;
+ mNepomukModel = 0;
+ if ( res.isValid() ) {
+ QHash<QUrl, Nepomuk::Variant> props = res.properties();
+ mNepomukModel = new QStandardItemModel( props.count(), 2, this );
QStringList labels;
- labels << i18n( "Attribute" ) << i18n( "Value" );
- mAttrModel->setHorizontalHeaderLabels( labels );
- for ( int i = 0; i < list.count(); ++i ) {
- QModelIndex index = mAttrModel->index( i, 0 );
+ labels << i18n( "Property" ) << i18n( "Value" );
+ mNepomukModel->setHorizontalHeaderLabels( labels );
+ int row = 0;
+ for ( QHash<QUrl, Nepomuk::Variant>::ConstIterator it = props.begin(); it != \
props.end(); ++it, ++row ) { + QModelIndex index = mNepomukModel->index( row, 0 \
); Q_ASSERT( index.isValid() );
- mAttrModel->setData( index, QString::fromLatin1( list[i]->type() ) );
- index = mAttrModel->index( i, 1 );
+ mNepomukModel->setData( index, it.key().toString() );
+ index = mNepomukModel->index( row, 1 );
Q_ASSERT( index.isValid() );
- mAttrModel->setData( index, QString::fromLatin1( list[i]->serialized() ) );
- mAttrModel->itemFromIndex( index )->setFlags( Qt::ItemIsEditable | \
mAttrModel->flags( index ) ); + mNepomukModel->setData( index, \
it.value().toString() ); }
- contentUi.attrView->setModel( mAttrModel );
+ contentUi.nepomukView->setEnabled( true );
+ } else {
+ contentUi.nepomukView->setEnabled( false );
+ }
+ contentUi.nepomukView->setModel( mNepomukModel );
- Nepomuk::Resource res( item.url() );
- delete mNepomukModel;
- mNepomukModel = 0;
- if ( res.isValid() ) {
- QHash<QUrl, Nepomuk::Variant> props = res.properties();
- mNepomukModel = new QStandardItemModel( props.count(), 2, this );
- QStringList labels;
- labels << i18n( "Property" ) << i18n( "Value" );
- mNepomukModel->setHorizontalHeaderLabels( labels );
- int row = 0;
- for ( QHash<QUrl, Nepomuk::Variant>::ConstIterator it = props.begin(); it != \
props.end(); ++it, ++row ) {
- QModelIndex index = mNepomukModel->index( row, 0 );
- Q_ASSERT( index.isValid() );
- mNepomukModel->setData( index, it.key().toString() );
- index = mNepomukModel->index( row, 1 );
- Q_ASSERT( index.isValid() );
- mNepomukModel->setData( index, it.value().toString() );
- }
- contentUi.nepomukView->setEnabled( true );
- } else {
- contentUi.nepomukView->setEnabled( false );
- }
- contentUi.nepomukView->setModel( mNepomukModel );
- }
+ if ( mMonitor )
+ mMonitor->deleteLater(); // might be the one calling us
+ mMonitor = new Monitor( this );
+ mMonitor->setItemMonitored( item );
+ mMonitor->itemFetchScope().fetchFullPayload();
+ mMonitor->itemFetchScope().fetchAllAttributes();
+ connect( mMonitor, SIGNAL(itemChanged(Akonadi::Item,QSet<QByteArray>)), \
SLOT(setItem(Akonadi::Item)) ); }
void BrowserWidget::modelChanged()
--- trunk/KDE/kdepim/akonadi/clients/akonadiconsole/browserwidget.h #878754:878755
@@ -41,6 +41,7 @@
class ItemModel;
class Job;
class StandardActionManager;
+class Monitor;
}
class BrowserWidget: public QWidget
@@ -59,6 +60,7 @@
void saveResult( KJob* job );
void addAttribute();
void delAttribute();
+ void setItem( const Akonadi::Item &item );
private:
Akonadi::CollectionModel *mCollectionModel;
@@ -71,6 +73,7 @@
QStandardItemModel *mAttrModel;
QStandardItemModel *mNepomukModel;
Akonadi::StandardActionManager *mStdActionManager;
+ Akonadi::Monitor *mMonitor;
};
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic