[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