57
I can see your house from here Part 1

I can see your house from here

Embed Size (px)

DESCRIPTION

Joint presentation with Till Adam and Marius Bugge Monsen. The model/view framework is one of the most powerful areas of Qt4, but also one of the most complex. It is elegant in its design, but proves to be difficult to master for many who try in practice. While a lot of effort went into anticipating how developers would use and potentially mis-use this API, real world usage patterns, best practices and common errors turn out to be interestingly deviant. Marius, who was part of the original architecture team behind these classes, and Till, who has taught the concepts to varied audiences and seen a wide range of real world applications of them both in his work on KDEPIM and as a consultant at KDAB, combine their experiences in this presentation to provide a unique joint perspective.

Citation preview

Page 1: I can see your house from here

I can see your house from here

Part 1

Page 2: I can see your house from here
Page 3: I can see your house from here

7.5 Years

Page 4: I can see your house from here

79 Files

Page 5: I can see your house from here

32957 Lines Of Code

Page 6: I can see your house from here

The Beginning

Page 7: I can see your house from here

AuthorClient

DateDescription

Jobs fixed

reggiereggie-piefke2002/12/03 14:43:32nothing yet-

Page 8: I can see your house from here

espenrespenr-deimos2002/12/04 19:30:30Added a FileTableModel and changed main to test it.Reads the columns in the astronomy_large.txt backwardsand will reread the file if you edit it. (Just touch it)-

AuthorClient

DateDescription

Jobs fixed

Page 9: I can see your house from here

mmonsenmmonsen-elysium2002/12/05 15:37:13QItemModel subclass that implements a directory tree as a data source.-

AuthorClient

DateDescription

Jobs fixed

Page 10: I can see your house from here

A Rush of Creativity

Page 11: I can see your house from here

2002/12/09

Page 12: I can see your house from here

2002/12/13

Page 13: I can see your house from here

2002/12/16

Page 14: I can see your house from here

2002/12/18

Page 15: I can see your house from here

2002/12/20

Page 16: I can see your house from here

2003/01/06

Page 17: I can see your house from here

2003/01/07

Page 18: I can see your house from here

2003/01/09

Page 19: I can see your house from here

2003/01/10

Page 20: I can see your house from here

2003/01/016

Page 21: I can see your house from here

2003/01/24

Page 22: I can see your house from here

2003/02/03Last commit by reggie.

Page 23: I can see your house from here

2003/03/04espenr releases Qt 3.1.2

Page 24: I can see your house from here

Decisions

Page 25: I can see your house from here

mmonsenmmonsen-elysium2003/10/23 16:49:51Add QObjectRepository. This is an object pool to avoid new/deletes.Use it on MemModelItems (for testing).-

AuthorClient

DateDescription

Jobs fixed

Page 26: I can see your house from here

mmonsenmmonsen-elysium2003/10/26 16:08:11Introduce the alt_ classes.They are the begining of the implementation of item views usingQModelIndex instead of QGenericModelItem.The model items are just too heavy.-

AuthorClient

DateDescription

Jobs fixed

Page 27: I can see your house from here

haraldharald-morpork2003/11/11 21:26:08Here we go - first implementation of a database model-

AuthorClient

DateDescription

Jobs fixed

Page 28: I can see your house from here

espenrespenr-phobos2004/01/21 11:49:57move new itemviews into qt4 (no they are not finished)-

AuthorClient

DateDescription

Jobs fixed

Page 29: I can see your house from here

espenrespenr-phobos2004/02/11 20:06:25changed QGenericItemModel to have roles (Display, Decoration, ToolTipetc) and removed the use of "elements" everywhere.<snipp>-

AuthorClient

DateDescription

Jobs fixed

Page 30: I can see your house from here

mmonsenmmonsen-elysium2004/02/25 17:06:16QGenericItemModel -> QAbstractItemModel.-

AuthorClient

DateDescription

Jobs fixed

Page 31: I can see your house from here

Complexity

Page 32: I can see your house from here

mmonsenmmonsen-elysium2004/05/04 18:22:39Add QPersistentModelIndex.-

AuthorClient

DateDescription

Jobs fixed

Page 33: I can see your house from here

rraggirraggi-rabagast2004/07/01 17:13:10Initial implementation of the new Property Editor-

AuthorClient

DateDescription

Jobs fixed

Page 34: I can see your house from here

2004/08/21 - 29Akademy 2004

Page 35: I can see your house from here

mmonsenmmonsen-onyx2004/08/26 22:17:16Add QProxyModel.The idea is that you can subclass this model and use it for filtering and sorting.-

AuthorClient

DateDescription

Jobs fixed

Page 36: I can see your house from here

mmonsenmmonsen-elysium2004/10/22 19:25:11Add a model pointer to QModelIndex.-

AuthorClient

DateDescription

Jobs fixed

Page 37: I can see your house from here

Towards the Goal

Page 38: I can see your house from here

espenrespenr-phobos2005/02/27 22:31:42branch 4.0 from main-

AuthorClient

DateDescription

Jobs fixed

Page 39: I can see your house from here

2005/06/28Qt 4.0 Released!!!

Page 40: I can see your house from here

Work Continues

Page 41: I can see your house from here

I can see your house from here

Part 2

Page 42: I can see your house from here

Marius, Espen, I want your baby

Disclaimer:

Page 43: I can see your house from here

the five stages of grief

Page 44: I can see your house from here

Denial

Page 45: I can see your house from here

Anger

Page 46: I can see your house from here

Bargaining

Page 47: I can see your house from here

The Mutz Axiom

“the solution to every engineering problem is QProxyModel”

Page 48: I can see your house from here

View

Stuff

Model

political correctness proxy

sorting proxy

Page 49: I can see your house from here

View

Stuff

Model

sorting proxy

political correctness proxyStuff

Page 50: I can see your house from here

Depression

Page 51: I can see your house from here

- excessive minimalism

- missing error handling guidance

- hard to make transactional

- hard to implement undo

- tree complexity imposed on the table case

Page 52: I can see your house from here

- treacherously public internalId/internalPointer

- unfortunately named QStandardItemModel

- "thou shall not work on foreign indexes" not

enforced (NVI?)

- MVC, but not really

Page 53: I can see your house from here

Acceptance

Page 54: I can see your house from here

QAbstractItemView

QAbstractItemModel

political correctness proxy

sorting proxy

Controller ModelStuff

View

Page 56: I can see your house from here
Page 57: I can see your house from here

Image Credits:

Stuck in Customs on flickrMichelle Smorgon on flickr