Invalidate old QImage data if load()/loadFromData() has failed
[profile/ivi/qtbase.git] / dist / changes-3.1.0-b1
1 Qt 3.1 introduces many significant new features and many improvements
2 over the 3.0.x series. This file provides an overview of the main
3 changes since version 3.0.5. For further details see the online
4 documentation which is included in this distribution, and also
5 available at http://qt.nokia.com/doc/.
6
7 The Qt version 3.1 series is binary compatible with the 3.0.x series:
8 applications compiled for 3.0 will continue to run with 3.1.
9
10
11 ****************************************************************************
12 *                                 General                                  *
13 ****************************************************************************
14
15 Qt Script for Applications
16 --------------------------
17 Qt 3.1 is the first Qt release that can be used with Qt Script for
18 Applications (QSA). QSA provides a scripting engine, an IDE for
19 creating and editing scripts and script forms, and bindings to the Qt
20 API. Script-enabling a Qt application is not difficult and the IDE
21 makes it easy for resellers and end-users to write their own scripts.
22 QSA is due for release after Qt 3.1.
23
24
25 Qt Designer
26 -----------
27 Qt Designer, the visual GUI builder, has undergone several usability
28 improvements. A new dialog for creating and editing signals and slots
29 connections has been created: it is much easier to use and much faster
30 for setting up multiple connections. The widgets are now presented in
31 an easy-to-use toolbox rather than in toolbars (although you can still
32 have the toolbars if you want). The property editor now handles common
33 properties in multiple widgets simultaneously. By popular demand,
34 WYSIWYG support for QWidgetStack has been added. Rich text is now
35 supported with a rich text editor. And the code editor can be used for
36 ordinary member functions as well as for slots.
37
38
39 Qt Assistant
40 ------------
41 Qt Assistant, the Qt documentation browser, can now be used with
42 custom documentation sets. This new functionality combined with the
43 new QAssistantClient class means that you can use Qt Assistant as a
44 help browser for your own applications. Qt Assistant has also been
45 enhanced by the addition of a fast full text search engine.
46
47
48 Motif
49 -----
50 The general industry-wide move away from Motif is leaving more and
51 more companies in need of a migration solution. But converting large
52 legacy applications in one step is often impractical. To minimize
53 risks and to manage the workload companies often want to port code on
54 a module by module basis. Qt 3.1 includeds a completely new Motif
55 module that supports hybrid applications in which Qt code and Motif
56 code coexist. (This obsoletes the earlier rudimentary Qt Xt/Motif
57 extension.)
58
59
60 ActiveX
61 -------
62 With the release of Qt 3.1, customers who use Qt for Microsoft Windows
63 development can now use Qt with ActiveX. The new ActiveQt module
64 provides a simple API for COM and ActiveX. The module can be used to
65 create applications which host ActiveX controls, and also to create
66 applications that serve ActiveX controls (e.g. Internet Explorer
67 plugins).
68
69
70 Qt/Mac
71 ------
72 The introduction of Qt/Mac, a Mac OS X port of Qt, with Qt 3.0 has
73 proved a great success. This port has undergone many improvements in
74 Qt 3.1, especially with respect to Appearance Manager, anti-aliased
75 text and user settings. The Qt OpenGL support is greatly improved, and
76 uses the hardware-accelerated drivers.
77
78
79 Qt/Embedded
80 -----------
81 Graphics, mouse and keyboard drivers can now be compiled as plugins.
82
83
84 Qt library
85 ----------
86 In addition to the new additions and enhancements referred to above,
87 as with all major Qt releases, Qt 3.1 includes hundreds of
88 improvements in the existing class library. Here is a brief summary of
89 the most significant changes:
90
91 - QTextEdit has a new text format: LogText. This is a performance and
92   memory optimized format especially designed for the fast display of
93   large amounts of text. The format supports basic highlighting,
94   including bold and colored text.
95
96 - The new QSyntaxHighlighter class makes it both easy and efficient to
97   add syntax highlighting capabilities to a QTextEdit.
98
99 - QHttp and QFtp in earlier Qt's were implementations of the
100   QNetworkProtocol. Both have been extended to stand in their own
101   right. If you missed some flexibility in the network protocol
102   abstractions of earlier Qt's, the new QHttp and QFtp classes should
103   provide the solution.
104
105 - QAccel, used to handle keyboard shortcuts, now gracefully copes with
106   shortcut clashes. If a clash occurs, a new signal,
107   activatedAmbiguously(), is emitted. Classes that use QAccel, like
108   QButton and QPopupMenu, make use of this new functionality.
109   Futhermore QAccel can now handle multi-key sequences, for example,
110   Ctrl+X,Ctrl+F.
111
112 - QClipboard has been extended to simplify data exchange between
113   programs.
114
115 - Thread support: almost all methods in the tools classes have been
116   made reentrant. QApplication::postEvent() and a few other methods
117   are now thread-safe if Qt is compiled as a multi-threaded library.
118   (The documentation now states if a class or function is thread-safe
119   or reentrant.)
120
121 - A QMutexLocker class has been added to simplify the locking and
122   unlocking of mutexes.
123
124 - Input methods: A selectionLength() function has been added to
125   QIMEvent. Japanese compositions are now handled correctly. Support
126   for AIMM based input methods (those working on non-Asian versions of
127   Win95/98/Me) has been added.
128
129 - Large File support: Qt's internals have been modified to support
130   Large Files (> 2GB). QFileDialog will now correctly display and
131   select Large Files.
132
133 - SQL module: Support for prepared query execution and value binding
134   has been added. Among other benefits, this makes it possible to
135   write large BLOBs (> 2 KB) to Oracle databases, and to write Unicode
136   strings to SQL Server databases.
137
138
139 Build process
140 -------------
141 The build process has been improved:
142
143 - The configure script does not need QTDIR to be set anymore.
144
145
146 ****************************************************************************
147 *                                 Library                                  *
148 ****************************************************************************
149
150 New classes
151 ==================
152
153 - QBackInsertIterator
154 - QEventLoop
155 - QIconFactory
156 - QMutexLocker
157 - QSyntaxHighlighter
158
159
160 QAction
161 ------------------
162 New functions:
163         void setVisible( bool )
164         bool isVisible() const
165
166
167 QCanvas
168 ------------------
169 New functions:
170         void invalidate()
171         bool isValid() const
172
173
174 QColorDialog
175 ------------------
176 New functions:
177         static void setStandardColor( int, QRgb )
178
179
180 QAccel
181 ------------------
182 New signals:
183         void activatedAmbiguously( int id )
184
185
186 QApplication
187 ------------------
188 The event loop has been moved to the QEventLoop class, making it
189 easier to integrate other toolkits with Qt.
190
191 New functions:
192         QEventLoop *eventLoop() const
193         void setEventLoop( QEventLoop * )
194         QString sessionKey() const
195
196
197 QClipboard
198 ------------------
199 New functions:
200         void clear( Mode mode )
201         bool supportsSelection() const
202         bool ownsSelection() const
203         bool ownsClipboard() const
204         QString text( Mode mode )  const
205         QString text( QCString& subtype, Mode mode ) const
206         void setText( const QString &, Mode mode )
207         QMimeSource *data( Mode mode ) const
208         void setData( QMimeSource*, Mode mode )
209         QImage image( Mode mode ) const
210         QPixmap pixmap( Mode mode ) const
211         void setImage( const QImage &, Mode mode )
212         void setPixmap( const QPixmap &, Mode mode )
213
214
215 QDesktopWidget
216 ------------------
217 New functions:
218         const QRect& screenGeometry( QWidget *widget ) const
219         const QRect& screenGeometry( const QPoint &point ) const
220         const QRect& availableGeometry( int screen ) const
221         const QRect& availableGeometry( QWidget *widget ) const
222         const QRect& availableGeometry( const QPoint &point ) const
223
224
225 QFileDialog
226 ------------------
227 Large Files (> 2GB) are now correctly displayed and selected.
228
229
230 QFileInfo
231 ------------------
232 QFileInfo now supports Large Files (> 2GB) internally. To maintain
233 binary compatibility the QFileInfo API cannot be adapted before Qt 4
234 and will truncate file sizes and offsets to 4 GB.
235
236 New functions:
237         bool isHidden() const
238
239
240 QFile
241 ------------------
242 QFile now supports Large Files (> 2GB) internally. To maintain binary
243 compatibility the QFile API cannot be adapted before Qt 4 and will
244 truncate file sizes and offsets to 4 GB.
245
246
247 QDir
248 ------------------
249 QDir now supports Large Files (> 2GB).
250
251
252 QImEvent
253 ------------------
254 New functions:
255         in selectionLength() const
256
257
258 QIconSet
259 ------------------
260 New functions:
261         void installIconFactory( QIconFactory *factory )
262
263
264 QImage
265 ------------------
266 New functions:
267         static QImage fromMimeSource( const QString& abs_name )
268
269
270 QMetaObject
271 ------------------
272 New functions:
273         QStrList enumeratorNames( bool super ) const
274         int numEnumerators( bool super ) const
275         static bool hasMetaObject( const char *class_name )
276
277
278 QMenuData
279 ------------------
280 New functions:
281         bool isItemVisible( int id ) const
282         void setItemVisible( int id, bool visible )
283 Both functions are inherited by QMenuBar and QPopupMenu
284
285
286 QPaintDevice
287 ------------------
288 New functions (x11 only):
289         static Qt::HANDLE x11AppRootWindow()
290         static int x11AppDepth( int screen )
291         static int x11AppCells( int screen )
292         static Qt::HANDLE x11AppRootWindow( int screen )
293         static Qt::HANDLE x11AppColormap( int screen )
294         static void *x11AppVisual( int screen )
295         static bool x11AppDefaultColormap( int screen )
296         static bool x11AppDefaultVisual( int screen )
297         static int x11AppDpiX( int )
298         static int x11AppDpiY( int )
299         static void x11SetAppDpiX( int, int )
300         static void x11SetAppDpiY( int, int )
301
302
303 QPicture
304 ------------------
305 New functions:
306         void setBoundingRect( const QRect &r )
307
308
309 QPixmap
310 ------------------
311 New functions:
312         bool hasAlpha() const
313         static QPixmap fromMimeSource( const QString& abs_name )
314
315
316 QPrinter
317 ------------------
318 New functions:
319         void setMargins( uint top, uint left, uint bottom, uint right )
320         void margins( uint *top, uint *left, uint *bottom, uint *right ) const
321
322 Improvements:
323         Handle masked images and pixmaps correctly. Add code to handle
324         asymmetrical printer margins correctly.
325
326
327 QSessionManager
328 ------------------
329 New functions:
330         QString sessionKey() const
331
332
333 QStyleOption
334 ------------------
335 New functions:
336         QStyleOption( QCheckListItem* i )
337         QCheckListItem* checkListItem() const
338
339 New enums values:
340         PE_CheckListController, PE_CheckListIndicator,
341             PE_CheckListExclusiveIndicator, PE_PanelGroupBox
342         CE_MenuBarEmptyArea
343         CE_DockWindowEmptyArea
344         PM_CheckListButtonSize
345         CT_TabBarTab, CT_Slider, CT_Header, CT_LineEdit
346         SH_GroupBox_TextLabelVerticalAlignment
347
348
349 QThread
350 ------------------
351 New functions:
352         void terminate()
353
354
355 QTranslator
356 ------------------
357 New functions:
358         bool load( const uchar *data, int len )
359
360
361 QVariant
362 ------------------
363 New functions:
364         QVariant( const QPen& )
365         const QPen toPen() const
366         QPen& asPen()
367         bool isNull() const
368
369 New enum values:
370         KeySequence, Pen
371
372
373 QWidget
374 ------------------
375 All top-level widgets will now try to find an appropriate application
376 icon when they're not given one, trying in this order
377  1. Parent widget's icon
378  2. Top-level widget's icon
379  3. Application main widget's icon
380
381 New functions:
382         bool isFullScreen() const
383         void setSizePolicy( QSizePolicy::SizeType hor, QSizePolicy::SizeType ver, bool hfw = FALSE )
384
385 New enum values:
386         AncestorOrigin
387
388
389 QWMatrix
390 ------------------
391 Two different transformation modes for painter transformations are now
392 available. See the QWMatrix documentation for details.
393
394 New functions:
395         QPointArray mapToPolygon( const QRect &r ) const
396         double det() const
397         static void setTransformationMode( QWMatrix::TransformationMode m )
398         static TransformationMode transformationMode()
399
400 New enums:
401         TransformationMode { Points, Areas }
402
403
404 QFtp
405 ------------------
406 While still remaining a subclass of QNetworkProtocol, QFtp can be now
407 used directly for more advanced FTP operations. The QFtp documentation
408 provides details of the extensions to the API.
409
410
411 QHttp
412 ------------------
413 While still remaining a subclass of QNetworkProtocol, QHttp can be now
414 used directly for more advanced HTTP operations. The QHttp
415 documentation provides details of the extensions to the API.
416  
417 Related new classes:
418         QHttpHeader
419         QHttpResponseHeader
420         QHttpRequestHeader
421
422
423 QSqlDriver
424 ------------------
425 New enum values:
426         Unicode, PreparedQueries, OracleBindingStyle, ODBCBindingStyle
427         
428
429 QSqlQuery
430 ------------------
431 New functions:
432         bool isForwardOnly() const
433         void setForwardOnly( bool forward )
434         bool exec()
435         bool prepare( const QString& query )
436         void bindValue( const QString& placeholder, const QVariant& val )
437         void bindValue( int pos, const QVariant& val )
438         void addBindValue( const QVariant& val )
439
440
441 QTableSelection
442 ------------------
443 New functions:
444         QTableSelection( int start_row, int start_col, int end_row, int end_col )
445
446
447 QTable
448 ------------------
449 New properties:
450         int numSelections
451
452 New functions:
453         void selectCells( int start_row, int start_col, int end_row, int end_col )
454         void selectRow( int row )
455         void selectColumn( int col )
456         void updateHeaderStates()
457         void setRowLabels( const QStringList &labels )
458         void setColumnLabels( const QStringList &labels )
459
460
461 QCString
462 ------------------
463 New functions:
464         QCString &replace( char c, const char *after )
465         QCString &replace( const char *, const char * )
466         QCString &replace( char, char )
467
468 New global functions:
469         QByteArray qCompress( const uchar* data, int nbytes )
470         QByteArray qUncompress( const uchar* data, int nbytes )
471         QByteArray qCompress( const QByteArray& data )
472         QByteArray qUncompress( const QByteArray& data )
473 Improvements:
474         Speed optimisations in lots of the old search and replace
475         functions.
476
477
478 QDate
479 ------------------
480 New functions:
481         int weekNumber( int *yearNum = 0 ) const
482         static QDate currentDate( Qt::DateTimeSpec )
483
484
485 QTime
486 ------------------
487 New functions:
488         static QTime currentTime( Qt::DateTimeSpec )
489
490
491 QDateTime
492 ------------------
493 New functions:
494         static QDateTime currentDateTime( Qt::DateTimeSpec )
495
496
497 QPtrList
498 ------------------
499 New functions:
500         bool replace( uint i, const type *d )
501
502
503 QRegExp
504 ------------------
505 New functions:
506         QString errorString()
507         static QString escape( const QString& str )
508         int numCaptures() const
509
510
511 QSettings
512 ------------------
513 New functions:
514         QSettings( Format format )
515         void setPath( const QString &domain, const QString &product, Scope = User )
516         void beginGroup( const QString &group )
517         void endGroup()
518         void resetGroup()
519         QString group() const
520
521 New enums:
522         Format { Native = 0, Ini }
523         Scope { User, Global }
524
525
526 QChar
527 ------------------
528 Updated Unicode tables to Unicode-3.2
529
530
531 QString
532 ------------------
533 New functions:
534         QString &append( const QByteArray & )
535         QString &append( const char * )
536         QString &prepend( const QByteArray & )
537         QString &prepend( const char * )
538         QString &remove( QChar c )
539         QString &remove( char c )
540         QString &remove( const QString & )
541         QString &remove( const QRegExp & )
542         QString &remove( const char * )
543         QString &replace( uint index, uint len, QChar )
544         QString &replace( uint index, uint len, char c )
545         QString &replace( QChar c, const QString & )
546         QString &replace( char c, const QString & after )
547         QString &replace( const QString &, const QString & )
548         QString &replace( QChar, QChar )
549         QString &operator+=( const QByteArray &str )
550         QString &operator+=( const char *str )
551         static QString fromUcs2( const unsigned short *ucs2 )
552         const unsigned short *ucs2() const
553
554 Improvements:
555         find(), findRev() and contains() use either a fast hashing
556         algorithm (for short strings) or an optimized Boyer-Moore
557         implementation for long strings. Lots of smaller performance
558         optimisations.
559
560
561 QTextStream
562 ------------------
563 New functions:
564         QTextCodec *codec()
565
566
567 QTimeEdit
568 ------------------
569 New properties:
570         Display display
571
572 New functions:
573         uint display() const
574         void setDisplay( uint )
575
576 New enums:
577         Display { Hours, Minutes, Seconds, AMPM }
578
579
580 QFrame
581 ------------------
582 New enum values:
583         GroupBoxPanel
584
585
586 QGroupBox
587 ------------------
588 New properties:
589         bool flat
590
591 New functions:
592         bool isFlat() const
593         void setFlat( bool b )
594
595
596 QListBox
597 ------------------
598 New functions:
599         QListBoxItem* selectedItem() const
600
601
602 QListView
603 ------------------
604 New functions:
605         int sortColumn() const
606
607
608 QSlider
609 ------------------
610 New functions:
611         void addLine() ( as slot)
612         void subtractLine() (as slot)
613
614
615 QTextBrowser
616 ------------------
617 New functions:
618         void sourceChanged( const QString& )
619         void anchorClicked( const QString&, const QString& )
620
621
622 QTextEdit
623 ------------------
624 QTextEdit offers another TextFormat (LogText), which is optimized
625 (speed and memory) for displaying large read-only texts normally used
626 for logging.
627
628 New properties:
629         bool allowTabs
630
631 New functions:
632         QString anchorAt( const QPoint& pos, AnchorAttribute a )
633         void setAllowTabs( bool b )
634         bool allowTabs() const
635         void insert( const QString &text, uint insertionFlags = CheckNewLines | RemoveSelected )
636
637 New signals:
638         void clicked( int parag, int index )
639         void doubleClicked( int parag, int index )
640
641 New enums:
642         TextInsertionFlags { RedoIndentation, CheckNewLines, RemoveSelected }
643
644 New enum values:
645         AtWordOrDocumentBoundary
646
647
648 QToolButton
649 ------------------
650 New properties:
651         TextPosition textPosition
652
653 New functions:
654         TextPosition textPosition() const
655         void setTextPosition( TextPosition pos )
656
657 New enums:
658         TextPosition { Right, Under }
659
660
661 QTooltip
662 ------------------
663 New functions:
664         static void setWakeUpDelay( int )
665
666
667 QWhatsThis
668 ------------------
669 New functions:
670         static void setFont( const QFont &font )
671
672
673 QDomDocument
674 ------------------
675 New functions:
676         QString toString( int ) const
677         QCString toCString( int ) const
678
679
680 QFont on X11 
681 ------------------ 
682 Improvements:
683         Safe handling of huge font sizes. Added support for the new
684         Xft2 font library on XFree-4.x.
685
686
687 QRegion on X11 
688 ------------------ 
689 Improvements:
690         Removed the 16 bit size limitation
691
692 ****************************************************************************