[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    playground/pim/microblog
From:       Tom Albers <tomalbers () kde ! nl>
Date:       2009-02-16 17:29:00
Message-ID: 1234805340.046425.30661.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 927041 by toma:

Add a delegate, the result is very bad, but my KWidgetItemDelegate foo is not good. \
Maybe someone can help me.


 M  +2 -1      demoapp/CMakeLists.txt  
 M  +41 -42    demoapp/blogmodel.cpp  
 M  +7 -10     demoapp/blogmodel.h  
 M  +5 -5      demoapp/main.cpp  
 M  +37 -34    demoapp/mainwidget.cpp  
 M  +10 -9     demoapp/mainwidget.h  
 M  +7 -7      demoapp/mainwindow.cpp  
 M  +3 -3      demoapp/mainwindow.h  
 A             demoapp/microblogdelegate.cpp   [License: LGPL (v2+)]
 A             demoapp/microblogdelegate.h   [License: LGPL (v2+)]
 M  +4 -2      statusitem.cpp  
 M  +1 -1      statusitem.h  


--- trunk/playground/pim/microblog/demoapp/CMakeLists.txt #927040:927041
@@ -3,6 +3,7 @@
     mainwidget.cpp
     mainwindow.cpp
     blogmodel.cpp
+    microblogdelegate.cpp
     ../statusitem.cpp
 )
 
@@ -11,6 +12,6 @@
 kde4_add_executable(akonablog_bin ${akonablog_bin_SRCS})
 set_target_properties(akonablog_bin PROPERTIES OUTPUT_NAME akonablog)
 
-target_link_libraries( akonablog_bin ${KDE4_AKONADI_LIBS} ${KDE4_KDEUI_LIBS} )
+target_link_libraries( akonablog_bin ${KDE4_AKONADI_LIBS} ${KDE4_KDEUI_LIBS} \
${QT_QTWEBKIT_LIBRARY} )  
 #install(TARGETS akonablog_bin ${INSTALL_TARGETS_DEFAULT_ARGS} )
--- trunk/playground/pim/microblog/demoapp/blogmodel.cpp #927040:927041
@@ -33,76 +33,75 @@
 
 using namespace Akonadi;
 
-class Akonadi::BlogModel::Private
+class BlogModel::Private
 {
-  public:
+public:
 };
 
 BlogModel::BlogModel( QObject *parent ) :
-    ItemModel( parent ),
-    d( new Private() )
+        ItemModel( parent ),
+        d( new Private() )
 {
     fetchScope().fetchFullPayload();
 }
 
 BlogModel::~BlogModel( )
 {
-  delete d;
+    delete d;
 }
 
 int BlogModel::columnCount( const QModelIndex & parent ) const
 {
-  if ( !parent.isValid() )
-    return 3; // keep in sync with the column type enum
+    if ( !parent.isValid() )
+        return 4; // keep in sync with the column type enum
 
-  return 0;
+    return 0;
 }
 
 QVariant BlogModel::data( const QModelIndex & index, int role ) const
 {
-  if ( role != Qt::DisplayRole ) 
-      return QVariant(); 
-  if ( !index.isValid() )
-    return QVariant();
-  if ( index.row() >= rowCount() )
-    return QVariant();
-  Item item = itemForIndex( index );
-  kDebug() << item.hasPayload<StatusItem>();
-  if ( !item.hasPayload<StatusItem>() )
-    return QVariant();
-  StatusItem msg = item.payload<StatusItem>();
-//  kDebug() << index.column() <<  msg.user() <<  msg.text() << msg.date();
-  switch ( index.column() ) {
-      case User:
-        kDebug() <<  msg.user();
-        return msg.user();
-      case Text:
-        kDebug() <<  msg.text();
+    if ( role != Qt::DisplayRole )
+        return QVariant();
+    if ( !index.isValid() )
+        return QVariant();
+    if ( index.row() >= rowCount() )
+        return QVariant();
+    Item item = itemForIndex( index );
+    if ( !item.hasPayload<StatusItem>() )
+        return QVariant();
+    StatusItem msg = item.payload<StatusItem>();
+    switch ( index.column() ) {
+    case User:
+        return msg.value( "user_screen_name" );
+    case Text:
         return msg.text();
-      case Date:
-        kDebug() << msg.date();
+    case Date:
         return msg.date();
-      default:
+    case Picture:
+        return msg.value( "user_profile_image_url" );
+    default:
         return QVariant();
     }
-  return ItemModel::data( index, role );
+    return ItemModel::data( index, role );
 }
 
 QVariant BlogModel::headerData( int section, Qt::Orientation orientation, int role ) \
const  {
-  if ( orientation == Qt::Horizontal && role == Qt::DisplayRole ) {
-    switch ( section ) {
-      case User:
-        return i18nc( "@title:column, message (e.g. email) subject", "User" );
-      case Text:
-        return i18nc( "@title:column, sender of message (e.g. email)", "Text" );
-      case Date:
-        return i18nc( "@title:column, message (e.g. email) timestamp", "Date" );
-      default:
-        return QString();
+    if ( orientation == Qt::Horizontal && role == Qt::DisplayRole ) {
+        switch ( section ) {
+        case User:
+            return i18nc( "@title:column, message (e.g. email) subject", "User" );
+        case Text:
+            return i18nc( "@title:column, sender of message (e.g. email)", "Text" );
+        case Date:
+            return i18nc( "@title:column, message (e.g. email) timestamp", "Date" );
+        case Picture:
+            return i18nc( "@title:column, message (e.g. email) timestamp", "Picture" \
); +        default:
+            return QString();
+        }
     }
-  }
-  return ItemModel::headerData( section, orientation, role );
+    return ItemModel::headerData( section, orientation, role );
 }
 
 #include "blogmodel.moc"
--- trunk/playground/pim/microblog/demoapp/blogmodel.h #927040:927041
@@ -23,23 +23,22 @@
 #include <akonadi/itemmodel.h>
 #include <akonadi/job.h>
 
-namespace Akonadi {
-
 /**
   A flat self-updating message model.
 */
 class BlogModel : public Akonadi::ItemModel
 {
-  Q_OBJECT
+    Q_OBJECT
 
-  public:
+public:
     /**
       Column types.
     */
     enum Column {
-      User, /**< Usre column. */
-      Text, /**< Textr column. */
-      Date /**< Date column. */
+        User, /**< Usre column. */
+        Text, /**< Textr column. */
+        Date, /**< Date column. */
+        Picture /**< url to a profile picture column. */
     };
 
     /**
@@ -69,11 +68,9 @@
      */
     virtual QVariant headerData( int section, Qt::Orientation orientation, int role \
= Qt::DisplayRole ) const;  
-  private:
+private:
     class Private;
     Private* const d;
 };
 
-}
-
 #endif
--- trunk/playground/pim/microblog/demoapp/main.cpp #927040:927041
@@ -26,11 +26,11 @@
 
 int main( int argc, char **argv )
 {
-  KCmdLineArgs::init( argc, argv, "akonablog", 0, ki18n("Akonablog"), "1.0" , \
                ki18n("The blog client Proof-Of-Concept for Akonadi"));
-  KApplication app;
+    KCmdLineArgs::init( argc, argv, "akonablog", 0, ki18n( "Akonablog" ), "1.0" , \
ki18n( "The blog client Proof-Of-Concept for Akonadi" ) ); +    KApplication app;
 
-  MainWindow window;
-  window.show();
+    MainWindow window;
+    window.show();
 
-  return app.exec();
+    return app.exec();
 }
--- trunk/playground/pim/microblog/demoapp/mainwidget.cpp #927040:927041
@@ -21,6 +21,7 @@
 #include "mainwidget.h"
 #include "mainwindow.h"
 #include "blogmodel.h"
+#include "microblogdelegate.h"
 
 #include <akonadi/collection.h>
 #include <akonadi/collectionview.h>
@@ -34,53 +35,55 @@
 #include <QSplitter>
 #include <QTextEdit>
 #include <QtGui/QSortFilterProxyModel>
+#include <QListView>
 
 using namespace Akonadi;
 
-MainWidget::MainWidget( MainWindow * parent) :
-  QWidget( parent ), mMainWindow( parent )
+MainWidget::MainWidget( MainWindow * parent ) :
+        QWidget( parent ), mMainWindow( parent )
 {
-  QHBoxLayout *layout = new QHBoxLayout( this );
+    QHBoxLayout *layout = new QHBoxLayout( this );
 
-  QSplitter *splitter = new QSplitter( Qt::Horizontal, this );
-  layout->addWidget( splitter );
+    QSplitter *splitter = new QSplitter( Qt::Horizontal, this );
+    layout->addWidget( splitter );
 
-  // Left part, collection view
-  mCollectionList = new Akonadi::CollectionView();
-  connect( mCollectionList, SIGNAL(clicked(const Akonadi::Collection &)),
-           SLOT(collectionClicked(const Akonadi::Collection &)) );
-  splitter->addWidget( mCollectionList );
+    // Left part, collection view
+    mCollectionList = new Akonadi::CollectionView();
+    connect( mCollectionList, SIGNAL( clicked( const Akonadi::Collection & ) ),
+             SLOT( collectionClicked( const Akonadi::Collection & ) ) );
+    splitter->addWidget( mCollectionList );
 
-  // Filter the collection to only show the blogs
-  mCollectionModel = new Akonadi::CollectionModel( this );
-  mCollectionList->setModel( mCollectionModel );
-  //mCollectionProxyModel = new Akonadi::CollectionFilterProxyModel(  this );
-  //mCollectionProxyModel->setSourceModel( mCollectionModel );
-  //mCollectionProxyModel->addMimeTypeFilter( QString::fromLatin1( \
                "message/x-microblog" ) );
-  //mCollectionProxyModel->addMimeTypeFilter( QString::fromLatin1( \
"application/x-vnd.kde.microblog" ) ); +    // Filter the collection to only show the \
blogs +    mCollectionModel = new Akonadi::CollectionModel( this );
+    mCollectionList->setModel( mCollectionModel );
+    //mCollectionProxyModel = new Akonadi::CollectionFilterProxyModel(  this );
+    //mCollectionProxyModel->setSourceModel( mCollectionModel );
+    //mCollectionProxyModel->addMimeTypeFilter( QString::fromLatin1( \
"message/x-microblog" ) ); +    //mCollectionProxyModel->addMimeTypeFilter( \
QString::fromLatin1( "application/x-vnd.kde.microblog" ) );  
-  // display collections sorted
-  //QSortFilterProxyModel *sortModel = new QSortFilterProxyModel( this );
-  //sortModel->setDynamicSortFilter( true );
-  //sortModel->setSortCaseSensitivity( Qt::CaseInsensitive );
-  //sortModel->setSourceModel( mCollectionProxyModel );
+    // display collections sorted
+    //QSortFilterProxyModel *sortModel = new QSortFilterProxyModel( this );
+    //sortModel->setDynamicSortFilter( true );
+    //sortModel->setSortCaseSensitivity( Qt::CaseInsensitive );
+    //sortModel->setSourceModel( mCollectionProxyModel );
 
-  // Right part, blog list
-  mMessageList = new QTreeView( this );
-  
-  mMessageList->setDragEnabled( false );
-  mMessageList->setSelectionMode( QAbstractItemView::ExtendedSelection );
+    // Right part, blog list
+    mMessageList = new QListView( this );
+    mMessageList->setDragEnabled( false );
+    mMessageList->setSelectionMode( QAbstractItemView::ExtendedSelection );
+    MicroblogDelegate *delegate = new MicroblogDelegate( this, mMessageList );
+    mMessageList->setItemDelegate( delegate );
 
-  mMessageModel = new BlogModel( this );
-  mMessageList->setModel( mMessageModel );
-  splitter->addWidget( mMessageList );
+    mMessageModel = new BlogModel( this );
+    mMessageList->setModel( mMessageModel );
+    splitter->addWidget( mMessageList );
 
-  splitter->setSizes( QList<int>() << 200 << 500 );
+    splitter->setSizes( QList<int>() << 200 << 200 );
 }
 
-void MainWidget::collectionClicked(const Akonadi::Collection & collection)
+void MainWidget::collectionClicked( const Akonadi::Collection & collection )
 {
-  mCurrentCollection = collection;
-  mMessageModel->setCollection( Collection( mCurrentCollection ) );
+    mCurrentCollection = collection;
+    mMessageModel->setCollection( Collection( mCurrentCollection ) );
 }
 
--- trunk/playground/pim/microblog/demoapp/mainwidget.h #927040:927041
@@ -25,11 +25,12 @@
 #include <akonadi/collection.h>
 
 class QModelIndex;
-class QTreeView;
+class QListView;
 
 class KJob;
 
-namespace Akonadi {
+namespace Akonadi
+{
 class CollectionView;
 class CollectionModel;
 }
@@ -38,20 +39,20 @@
 
 class MainWidget: public QWidget
 {
-  Q_OBJECT
+    Q_OBJECT
 
-  public:
+public:
     MainWidget( MainWindow *parent = 0 );
 
-  private slots:
-    void collectionClicked(const Akonadi::Collection & collection);
+private slots:
+    void collectionClicked( const Akonadi::Collection & collection );
 
-  private:
+private:
     Akonadi::Collection mCurrentCollection;
     Akonadi::CollectionModel *mCollectionModel;
     Akonadi::CollectionView *mCollectionList;
-    Akonadi::BlogModel *mMessageModel;
-    QTreeView *mMessageList;
+    BlogModel *mMessageModel;
+    QListView *mMessageList;
 
     MainWindow *mMainWindow;
 };
--- trunk/playground/pim/microblog/demoapp/mainwindow.cpp #927040:927041
@@ -27,13 +27,13 @@
 #include <akonadi/control.h>
 
 MainWindow::MainWindow( QWidget *parent )
-  : QMainWindow( parent )
+        : QMainWindow( parent )
 {
-  QToolBar *toolBar = new QToolBar( QLatin1String( "Main toolbar" ), this );
-  toolBar->addAction( "Rethread", this, SIGNAL( threadCollection() ) );
-  addToolBar( toolBar );
+    QToolBar *toolBar = new QToolBar( QLatin1String( "Main toolbar" ), this );
+    toolBar->addAction( "Rethread", this, SIGNAL( threadCollection() ) );
+    addToolBar( toolBar );
 
-  Akonadi::Control::start( this );
-  setCentralWidget( new MainWidget( this ) );
-  resize( 700, 500 );
+    Akonadi::Control::start( this );
+    setCentralWidget( new MainWidget( this ) );
+    resize( 700, 500 );
 }
--- trunk/playground/pim/microblog/demoapp/mainwindow.h #927040:927041
@@ -26,12 +26,12 @@
 
 class MainWindow : public QMainWindow
 {
-  Q_OBJECT
+    Q_OBJECT
 
-  public:
+public:
     MainWindow( QWidget *parent = 0 );
 
-  signals:
+signals:
     void threadCollection();
 };
 
--- trunk/playground/pim/microblog/statusitem.cpp #927040:927041
@@ -105,17 +105,19 @@
     return d->data;
 }
 
-QString StatusItem::user() const
+QString StatusItem::value( const QString& value ) const
 {
-    return d->status.value( "user_name" );
+    return d->status.value( value );
 }
 
 QString StatusItem::text() const
 {
+    //linklocater
     return d->status.value( "text" );
 }
 
 QString StatusItem::date() const
 {
+    //return QDateTime
     return d->status.value( "created_at" );
 }
--- trunk/playground/pim/microblog/statusitem.h #927040:927041
@@ -34,7 +34,7 @@
     StatusItem operator=( const StatusItem& );
     void setData( const QByteArray& );
     qlonglong id() const;
-    QString user() const;
+    QString value( const QString& ) const;
     QString text() const;
     QString date() const;
     QByteArray data() const;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic