diff options
44 files changed, 592 insertions, 407 deletions
diff --git a/doc/src/declarative/righttoleft.qdoc b/doc/src/declarative/righttoleft.qdoc index 4427798..58c266c 100644 --- a/doc/src/declarative/righttoleft.qdoc +++ b/doc/src/declarative/righttoleft.qdoc @@ -64,8 +64,7 @@ This default locale-based alignment can be overriden by setting the \c horizonta property for the text element, or by enabling layout mirroring using the \l LayoutMirroring attached property, which causes any explicit left and right horizontal alignments to be mirrored. Note that when \l LayoutMirroring is set, the \c horizontalAlignment property value remains unchanged; -the effective alignment of the text element that takes the mirroring into account can be read from the -\c effectiveHorizontalAlignment property. +use the property \c LayoutMirroring.enabled instead to query whether the mirroring is in effect. \snippet doc/src/snippets/declarative/righttoleft.qml 0 @@ -79,9 +78,9 @@ property for controlling the horizontal direction of the layouts. Setting \c lay the left-to-right layout direction. The horizontal layout direction can also be reversed through the \l LayoutMirroring attached property. -This causes the effective \c layoutDirection of positioners and views to be mirrored. Note the actual value -of the \c layoutDirection property will remain unchanged; the effective layout direction of positioners and -views that takes the mirroring into account can be read from the \c effectiveLayoutDirection property. +This causes the effective \c layoutDirection of positioners and views to be mirrored. Note though that the actual +value of the \c layoutDirection property will remain unchanged; use the property \c LayoutMirroring.enabled instead +to query whether the mirroring is in effect. \snippet doc/src/snippets/declarative/righttoleft.qml 1 @@ -101,12 +100,8 @@ Or set all child elements to also inherit the layout direction: \snippet doc/src/snippets/declarative/righttoleft.qml 3 Applying mirroring in this manner does not change the actual value of the relevant anchor, -\c layoutDirection or \c horizontalAlignment properties. The separate read-only property -\c effectiveLayoutDirection can be used to query the effective layout -direction of positioners and model views that takes the mirroring into account. Similarly the \l Text, -\l TextInput and \l TextEdit elements have gained the read-only property \c effectiveHorizontalAlignment -for querying the effective visual alignment of text. For anchors, the read only -\l {Item::anchors}{anchors.mirrored} property reflects whether anchors have been mirrored. +\c layoutDirection or \c horizontalAlignment properties. You can use \c LayoutMirroring.enabled to +query whether the mirroring is in effect. Note that application layouts and animations that are defined using \l {Item::}{x} property values (as opposed to anchors or positioner elements) are not affected by the \l LayoutMirroring attached property. diff --git a/doc/src/declarative/whatsnew.qdoc b/doc/src/declarative/whatsnew.qdoc index 9e13e98..77f8eb0 100644 --- a/doc/src/declarative/whatsnew.qdoc +++ b/doc/src/declarative/whatsnew.qdoc @@ -41,13 +41,6 @@ PinchArea provides support for the common two finger pinch gesture. \l {LayoutMirroring}{Layout mirroring} is useful when you need to support both left-to-right and right-to-left layout versions of your application that target different language areas. -\section2 Anchors - -Added the following property: -\list -\o \l {Item::}{anchors.mirrored} -\endlist - \section2 Text Added the following properties: @@ -57,7 +50,6 @@ Added the following properties: \o \l {Text::}{lineCount} \o \l {Text::}{maximumLineCount} \o \l {Text::}{truncated} -\o \l {Text::}{effectiveHorizontalAlignment} \endlist horizontalAlignment now accepts Text.AlignJustify alignment mode. @@ -70,7 +62,6 @@ Added the following properties, methods and signal handlers: \o \l {TextEdit::}{lineCount} \o \l {TextEdit::}{inputMethodComposing} \o \l {TextEdit::}{mouseSelectionMode} -\o \l {TextEdit::}{effectiveHorizontalAlignment} \o \l {TextEdit::}{deselect()} \o \l {TextEdit::}{isRightToLeft()} \o \l {TextEdit::}{moveCursorSelection()} to enable selection by word @@ -84,7 +75,6 @@ Added the following properties and methods: \o \l {TextInput::}{canPaste} \o \l {TextInput::}{inputMethodComposing} \o \l {TextInput::}{mouseSelectionMode} -\o \l {TextInput::}{effectiveHorizontalAlignment} \o \l {TextInput::}{deselect()} \o \l {TextInput::}{isRightToLeft()} \o \l {TextInput::}{moveCursorSelection()} to enable selection by word @@ -125,17 +115,15 @@ Added the following property: Added the following properties and methods: \list \o \l{ListView::}{layoutDirection} -\o \l{ListView::}{effectiveLayoutDirection} \o \l{ListView::}{positionViewAtBeginning()} \o \l{ListView::}{positionViewAtEnd()} \endlist \section2 Flow, Grid and Row -Added the following properties: +Added the following property: \list \o \l{Flow::}{layoutDirection} -\o \l{Flow::}{effectiveLayoutDirection} \endlist \section2 Repeater diff --git a/examples/declarative/righttoleft/layoutdirection/layoutdirection.qml b/examples/declarative/righttoleft/layoutdirection/layoutdirection.qml index b4efebe..197ea39 100644 --- a/examples/declarative/righttoleft/layoutdirection/layoutdirection.qml +++ b/examples/declarative/righttoleft/layoutdirection/layoutdirection.qml @@ -226,7 +226,17 @@ Rectangle { Component { id: viewDelegate Item { - width: (listView.effectiveLayoutDirection == Qt.LeftToRight ? (index == 48 - 1) : (index == 0)) ? 40 : 50 + function effectiveLayoutDirection() { + if (LayoutMirroring.enabled) + if (listView.layoutDirection == Qt.LeftToRight) + return Qt.RightToLeft; + else + return Qt.LeftToRight; + else + return listView.layoutDirection; + } + + width: (effectiveLayoutDirection() == Qt.LeftToRight ? (index == 48 - 1) : (index == 0)) ? 40 : 50 Rectangle { width: 40; height: 40 color: Qt.rgba(0.5+(48 - index)*Math.random()/48, diff --git a/src/declarative/declarative.pro b/src/declarative/declarative.pro index f3a7db9..27ceaf0 100644 --- a/src/declarative/declarative.pro +++ b/src/declarative/declarative.pro @@ -26,7 +26,7 @@ include(debugger/debugger.pri) symbian: { TARGET.UID3=0x2001E623 - LIBS += -lefsrv + LIBS += -lefsrv -lhal } linux-g++-maemo:DEFINES += QDECLARATIVEVIEW_NOBACKGROUND diff --git a/src/declarative/graphicsitems/qdeclarativeanchors_p.h b/src/declarative/graphicsitems/qdeclarativeanchors_p.h index d222ef5..cffcd54 100644 --- a/src/declarative/graphicsitems/qdeclarativeanchors_p.h +++ b/src/declarative/graphicsitems/qdeclarativeanchors_p.h @@ -79,7 +79,6 @@ class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeAnchors : public QObject Q_PROPERTY(qreal baselineOffset READ baselineOffset WRITE setBaselineOffset NOTIFY baselineOffsetChanged) Q_PROPERTY(QGraphicsObject *fill READ fill WRITE setFill RESET resetFill NOTIFY fillChanged) Q_PROPERTY(QGraphicsObject *centerIn READ centerIn WRITE setCenterIn RESET resetCenterIn NOTIFY centerInChanged) - Q_PROPERTY(bool mirrored READ mirrored NOTIFY mirroredChanged REVISION 1) public: QDeclarativeAnchors(QObject *parent=0); @@ -184,7 +183,6 @@ Q_SIGNALS: void verticalCenterOffsetChanged(); void horizontalCenterOffsetChanged(); void baselineOffsetChanged(); - Q_REVISION(1) void mirroredChanged(); private: friend class QDeclarativeItem; diff --git a/src/declarative/graphicsitems/qdeclarativeflickable.cpp b/src/declarative/graphicsitems/qdeclarativeflickable.cpp index be10950..4a465cc 100644 --- a/src/declarative/graphicsitems/qdeclarativeflickable.cpp +++ b/src/declarative/graphicsitems/qdeclarativeflickable.cpp @@ -232,8 +232,8 @@ void QDeclarativeFlickablePrivate::AxisData::addVelocitySample(qreal v, qreal ma void QDeclarativeFlickablePrivate::AxisData::updateVelocity() { + velocity = 0; if (velocityBuffer.count() > QML_FLICK_DISCARDSAMPLES) { - velocity = 0; int count = velocityBuffer.count()-QML_FLICK_DISCARDSAMPLES; for (int i = 0; i < count; ++i) { qreal v = velocityBuffer.at(i); diff --git a/src/declarative/graphicsitems/qdeclarativegridview.cpp b/src/declarative/graphicsitems/qdeclarativegridview.cpp index d78e2c4..afc3eac 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview.cpp +++ b/src/declarative/graphicsitems/qdeclarativegridview.cpp @@ -206,7 +206,6 @@ public: void mirrorChange() { Q_Q(QDeclarativeGridView); regenerate(); - emit q->effectiveLayoutDirectionChanged(); } qreal position() const { @@ -1802,9 +1801,12 @@ void QDeclarativeGridView::setHighlightRangeMode(HighlightRangeMode mode) on the \l GridView:flow property. \endlist - \bold Note: If GridView::flow is set to GridView.LeftToRight, this is not to be confused if - GridView::layoutDirection is set to Qt.RightToLeft. The GridView.LeftToRight flow value simply - indicates that the flow is horizontal. + When using the attached property \l {LayoutMirroring::enabled} for locale layouts, + the layout direction of the grid view will be mirrored. However, the actual property + \c layoutDirection will remain unchanged. You can use the property + \l {LayoutMirroring::enabled} to determine whether the direction has been mirrored. + + \sa {LayoutMirroring}{LayoutMirroring} */ Qt::LayoutDirection QDeclarativeGridView::layoutDirection() const @@ -1820,21 +1822,9 @@ void QDeclarativeGridView::setLayoutDirection(Qt::LayoutDirection layoutDirectio d->layoutDirection = layoutDirection; d->regenerate(); emit layoutDirectionChanged(); - emit effectiveLayoutDirectionChanged(); } } -/*! - \qmlproperty enumeration GridView::effectiveLayoutDirection - This property holds the effective layout direction of the grid. - - When using the attached property \l {LayoutMirroring::enabled}{LayoutMirroring::enabled} for locale layouts, - the visual layout direction of the grid will be mirrored. However, the - property \l {GridView::layoutDirection}{layoutDirection} will remain unchanged. - - \sa GridView::layoutDirection, {LayoutMirroring}{LayoutMirroring} -*/ - Qt::LayoutDirection QDeclarativeGridView::effectiveLayoutDirection() const { Q_D(const QDeclarativeGridView); diff --git a/src/declarative/graphicsitems/qdeclarativegridview_p.h b/src/declarative/graphicsitems/qdeclarativegridview_p.h index d2dff48..078d033 100644 --- a/src/declarative/graphicsitems/qdeclarativegridview_p.h +++ b/src/declarative/graphicsitems/qdeclarativegridview_p.h @@ -75,7 +75,6 @@ class Q_AUTOTEST_EXPORT QDeclarativeGridView : public QDeclarativeFlickable Q_PROPERTY(Flow flow READ flow WRITE setFlow NOTIFY flowChanged) Q_PROPERTY(Qt::LayoutDirection layoutDirection READ layoutDirection WRITE setLayoutDirection NOTIFY layoutDirectionChanged REVISION 1) - Q_PROPERTY(Qt::LayoutDirection effectiveLayoutDirection READ effectiveLayoutDirection NOTIFY effectiveLayoutDirectionChanged REVISION 1) Q_PROPERTY(bool keyNavigationWraps READ isWrapEnabled WRITE setWrapEnabled NOTIFY keyNavigationWrapsChanged) Q_PROPERTY(int cacheBuffer READ cacheBuffer WRITE setCacheBuffer NOTIFY cacheBufferChanged) Q_PROPERTY(int cellWidth READ cellWidth WRITE setCellWidth NOTIFY cellWidthChanged) @@ -194,7 +193,6 @@ Q_SIGNALS: void delegateChanged(); void flowChanged(); Q_REVISION(1) void layoutDirectionChanged(); - Q_REVISION(1) void effectiveLayoutDirectionChanged(); void keyNavigationWrapsChanged(); void cacheBufferChanged(); void snapModeChanged(); diff --git a/src/declarative/graphicsitems/qdeclarativeitem.cpp b/src/declarative/graphicsitems/qdeclarativeitem.cpp index 91b430d..ccf0de0 100644 --- a/src/declarative/graphicsitems/qdeclarativeitem.cpp +++ b/src/declarative/graphicsitems/qdeclarativeitem.cpp @@ -898,7 +898,6 @@ void QDeclarativeItemPrivate::setLayoutMirror(bool mirror) _anchors->d_func()->fillChanged(); _anchors->d_func()->centerInChanged(); _anchors->d_func()->updateHorizontalAnchors(); - emit _anchors->mirroredChanged(); } mirrorChange(); if (attachedLayoutDirection) { diff --git a/src/declarative/graphicsitems/qdeclarativelistview.cpp b/src/declarative/graphicsitems/qdeclarativelistview.cpp index 8f69685..8695bc6 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview.cpp +++ b/src/declarative/graphicsitems/qdeclarativelistview.cpp @@ -298,7 +298,6 @@ public: void mirrorChange() { Q_Q(QDeclarativeListView); regenerate(); - emit q->effectiveLayoutDirectionChanged(); } bool isRightToLeft() const { @@ -2169,7 +2168,12 @@ void QDeclarativeListView::setOrientation(QDeclarativeListView::Orientation orie \o Qt.RightToLeft - Items will be laid out from right to let. \endlist - \sa ListView::effectiveLayoutDirection + When using the attached property \l {LayoutMirroring::enabled} for locale layouts, + the layout direction of the horizontal list will be mirrored. However, the actual property + \c layoutDirection will remain unchanged. You can use the property + \l {LayoutMirroring::enabled} to determine whether the direction has been mirrored. + + \sa {LayoutMirroring}{LayoutMirroring} */ Qt::LayoutDirection QDeclarativeListView::layoutDirection() const @@ -2185,21 +2189,9 @@ void QDeclarativeListView::setLayoutDirection(Qt::LayoutDirection layoutDirectio d->layoutDirection = layoutDirection; d->regenerate(); emit layoutDirectionChanged(); - emit effectiveLayoutDirectionChanged(); } } -/*! - \qmlproperty enumeration ListView::effectiveLayoutDirection - This property holds the effective layout direction of the horizontal list. - - When using the attached property \l {LayoutMirroring::enabled}{LayoutMirroring::enabled} for locale layouts, - the visual layout direction of the horizontal list will be mirrored. However, the - property \l {ListView::layoutDirection}{layoutDirection} will remain unchanged. - - \sa ListView::layoutDirection, {LayoutMirroring}{LayoutMirroring} -*/ - Qt::LayoutDirection QDeclarativeListView::effectiveLayoutDirection() const { Q_D(const QDeclarativeListView); diff --git a/src/declarative/graphicsitems/qdeclarativelistview_p.h b/src/declarative/graphicsitems/qdeclarativelistview_p.h index 2cd6ba7..00f9bee 100644 --- a/src/declarative/graphicsitems/qdeclarativelistview_p.h +++ b/src/declarative/graphicsitems/qdeclarativelistview_p.h @@ -114,7 +114,6 @@ class Q_AUTOTEST_EXPORT QDeclarativeListView : public QDeclarativeFlickable Q_PROPERTY(qreal spacing READ spacing WRITE setSpacing NOTIFY spacingChanged) Q_PROPERTY(Orientation orientation READ orientation WRITE setOrientation NOTIFY orientationChanged) Q_PROPERTY(Qt::LayoutDirection layoutDirection READ layoutDirection WRITE setLayoutDirection NOTIFY layoutDirectionChanged REVISION 1) - Q_PROPERTY(Qt::LayoutDirection effectiveLayoutDirection READ effectiveLayoutDirection NOTIFY effectiveLayoutDirectionChanged REVISION 1) Q_PROPERTY(bool keyNavigationWraps READ isWrapEnabled WRITE setWrapEnabled NOTIFY keyNavigationWrapsChanged) Q_PROPERTY(int cacheBuffer READ cacheBuffer WRITE setCacheBuffer NOTIFY cacheBufferChanged) Q_PROPERTY(QDeclarativeViewSection *section READ sectionCriteria CONSTANT) @@ -229,7 +228,6 @@ Q_SIGNALS: void spacingChanged(); void orientationChanged(); Q_REVISION(1) void layoutDirectionChanged(); - Q_REVISION(1) void effectiveLayoutDirectionChanged(); void currentIndexChanged(); void currentSectionChanged(); void highlightMoveSpeedChanged(); diff --git a/src/declarative/graphicsitems/qdeclarativemousearea.cpp b/src/declarative/graphicsitems/qdeclarativemousearea.cpp index 20ca0f6..18f008a 100644 --- a/src/declarative/graphicsitems/qdeclarativemousearea.cpp +++ b/src/declarative/graphicsitems/qdeclarativemousearea.cpp @@ -496,9 +496,6 @@ void QDeclarativeMouseArea::mousePressEvent(QGraphicsSceneMouseEvent *event) d->pressAndHoldTimer.start(PressAndHoldDelay, this); setKeepMouseGrab(d->stealMouse); event->setAccepted(setPressed(true)); - - if(!event->isAccepted() && d->forwardToList.count()) - d->forwardEvent(event); } } @@ -576,9 +573,6 @@ void QDeclarativeMouseArea::mouseMoveEvent(QGraphicsSceneMouseEvent *event) me.setX(d->lastPos.x()); me.setY(d->lastPos.y()); emit positionChanged(&me); - - if(!event->isAccepted() && d->forwardToList.count()) - d->forwardEvent(event); } @@ -600,9 +594,6 @@ void QDeclarativeMouseArea::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) if (s && s->mouseGrabberItem() == this) ungrabMouse(); setKeepMouseGrab(false); - - if(!event->isAccepted() && d->forwardToList.count()) - d->forwardEvent(event); } d->doubleClick = false; } @@ -994,11 +985,4 @@ QDeclarativeDrag *QDeclarativeMouseArea::drag() */ -QDeclarativeListProperty<QGraphicsObject> QDeclarativeMouseArea::forwardTo() -{ - Q_D(QDeclarativeMouseArea); - return d->forwardTo; -} - - QT_END_NAMESPACE diff --git a/src/declarative/graphicsitems/qdeclarativemousearea_p.h b/src/declarative/graphicsitems/qdeclarativemousearea_p.h index 8fd453f..f6f970b 100644 --- a/src/declarative/graphicsitems/qdeclarativemousearea_p.h +++ b/src/declarative/graphicsitems/qdeclarativemousearea_p.h @@ -130,7 +130,6 @@ class Q_AUTOTEST_EXPORT QDeclarativeMouseArea : public QDeclarativeItem Q_PROPERTY(bool hoverEnabled READ hoverEnabled WRITE setHoverEnabled NOTIFY hoverEnabledChanged) Q_PROPERTY(QDeclarativeDrag *drag READ drag CONSTANT) //### add flicking to QDeclarativeDrag or add a QDeclarativeFlick ??? Q_PROPERTY(bool preventStealing READ preventStealing WRITE setPreventStealing NOTIFY preventStealingChanged REVISION 1) - Q_PROPERTY(QDeclarativeListProperty<QGraphicsObject> forwardTo READ forwardTo); public: QDeclarativeMouseArea(QDeclarativeItem *parent=0); @@ -158,8 +157,6 @@ public: bool preventStealing() const; void setPreventStealing(bool prevent); - QDeclarativeListProperty<QGraphicsObject> forwardTo(); - Q_SIGNALS: void hoveredChanged(); void pressedChanged(); diff --git a/src/declarative/graphicsitems/qdeclarativemousearea_p_p.h b/src/declarative/graphicsitems/qdeclarativemousearea_p_p.h index 6626c56..f6ea00d 100644 --- a/src/declarative/graphicsitems/qdeclarativemousearea_p_p.h +++ b/src/declarative/graphicsitems/qdeclarativemousearea_p_p.h @@ -70,8 +70,6 @@ public: : absorb(true), hovered(false), pressed(false), longPress(false), moved(false), stealMouse(false), doubleClick(false), preventStealing(false), drag(0) { - Q_Q(QDeclarativeMouseArea); - forwardTo = QDeclarativeListProperty<QGraphicsObject>(q, forwardToList); } ~QDeclarativeMouseAreaPrivate(); @@ -91,18 +89,6 @@ public: lastModifiers = event->modifiers(); } - void forwardEvent(QGraphicsSceneMouseEvent* event) - { - Q_Q(QDeclarativeMouseArea); - for(int i=0; i < forwardToList.count(); i++){ - event->setPos(forwardToList[i]->mapFromScene(event->scenePos())); - forwardToList[i]->scene()->sendEvent(forwardToList[i], event); - if(event->isAccepted()) - break; - } - event->setPos(q->mapFromScene(event->scenePos())); - } - bool isPressAndHoldConnected() { Q_Q(QDeclarativeMouseArea); static int idx = QObjectPrivate::get(q)->signalIndex("pressAndHold(QDeclarativeMouseEvent*)"); @@ -135,9 +121,6 @@ public: Qt::MouseButtons lastButtons; Qt::KeyboardModifiers lastModifiers; QBasicTimer pressAndHoldTimer; - - QDeclarativeListProperty<QGraphicsObject> forwardTo; - QList<QGraphicsObject*> forwardToList; }; QT_END_NAMESPACE diff --git a/src/declarative/graphicsitems/qdeclarativepositioners.cpp b/src/declarative/graphicsitems/qdeclarativepositioners.cpp index 3f4d6de..f3d1a68 100644 --- a/src/declarative/graphicsitems/qdeclarativepositioners.cpp +++ b/src/declarative/graphicsitems/qdeclarativepositioners.cpp @@ -597,7 +597,12 @@ QDeclarativeRow::QDeclarativeRow(QDeclarativeItem *parent) the right anchor remains to the right of the row. \endlist - \sa Grid::layoutDirection, Flow::layoutDirection, {declarative/righttoleft/layoutdirection}{Layout directions example} + When using the attached property \l {LayoutMirroring::enabled} for locale layouts, + the visual layout direction of the row positioner will be mirrored. However, the + property \c layoutDirection will remain unchanged. You can use the property + \l {LayoutMirroring::enabled} to determine whether the direction has been mirrored. + + \sa Grid::layoutDirection, Flow::layoutDirection, {declarative/righttoleft/layoutdirection}{Layout directions example}, {LayoutMirroring}{LayoutMirroring} */ Qt::LayoutDirection QDeclarativeRow::layoutDirection() const { @@ -616,21 +621,9 @@ void QDeclarativeRow::setLayoutDirection(Qt::LayoutDirection layoutDirection) d->removeItemChangeListener(d, QDeclarativeItemPrivate::Geometry); prePositioning(); emit layoutDirectionChanged(); - emit effectiveLayoutDirectionChanged(); } } -/*! - \qmlproperty enumeration Row::effectiveLayoutDirection - This property holds the effective layout direction of the row positioner. - - When using the attached property \l {LayoutMirroring::enabled}{LayoutMirroring::enabled} for locale layouts, - the visual layout direction of the row positioner will be mirrored. However, the - property \l {Row::layoutDirection}{layoutDirection} will remain unchanged. - - \sa Row::layoutDirection, {LayoutMirroring}{LayoutMirroring} -*/ - Qt::LayoutDirection QDeclarativeRow::effectiveLayoutDirection() const { return QDeclarativeBasePositionerPrivate::getEffectiveLayoutDirection(this); @@ -900,7 +893,12 @@ void QDeclarativeGrid::setFlow(Flow flow) \l Grid::flow property. \endlist - \sa Flow::layoutDirection, Row::layoutDirection, {declarative/righttoleft/layoutdirection}{Layout directions example} + When using the attached property \l {LayoutMirroring::enabled} for locale layouts, + the visual layout direction of the grid positioner will be mirrored. However, the + property \c layoutDirection will remain unchanged. You can use the property + \l {LayoutMirroring::enabled} to determine whether the direction has been mirrored. + + \sa Flow::layoutDirection, Row::layoutDirection, {declarative/righttoleft/layoutdirection}{Layout directions example}, {LayoutMirroring}{LayoutMirroring} */ Qt::LayoutDirection QDeclarativeGrid::layoutDirection() const { @@ -918,22 +916,10 @@ void QDeclarativeGrid::setLayoutDirection(Qt::LayoutDirection layoutDirection) else d->removeItemChangeListener(d, QDeclarativeItemPrivate::Geometry); prePositioning(); - emit layoutDirectionChanged(); - emit effectiveLayoutDirectionChanged(); + emit layoutDirectionChanged();; } } -/*! - \qmlproperty enumeration Grid::effectiveLayoutDirection - This property holds the effective layout direction of the grid positioner. - - When using the attached property \l {LayoutMirroring::enabled}{LayoutMirroring::enabled} for locale layouts, - the visual layout direction of the grid positioner will be mirrored. However, the - property \l {Grid::layoutDirection}{layoutDirection} will remain unchanged. - - \sa Grid::layoutDirection, {LayoutMirroring}{LayoutMirroring} -*/ - Qt::LayoutDirection QDeclarativeGrid::effectiveLayoutDirection() const { return QDeclarativeBasePositionerPrivate::getEffectiveLayoutDirection(this); @@ -1265,7 +1251,12 @@ void QDeclarativeFlow::setFlow(Flow flow) \l Flow::flow property. \endlist - \sa Grid::layoutDirection, Row::layoutDirection, {declarative/righttoleft/layoutdirection}{Layout directions example} + When using the attached property \l {LayoutMirroring::enabled} for locale layouts, + the visual layout direction of the flow positioner will be mirrored. However, the + property \c layoutDirection will remain unchanged. You can use the property + \l {LayoutMirroring::enabled} to determine whether the direction has been mirrored. + + \sa Grid::layoutDirection, Row::layoutDirection, {declarative/righttoleft/layoutdirection}{Layout directions example}, {LayoutMirroring}{LayoutMirroring} */ Qt::LayoutDirection QDeclarativeFlow::layoutDirection() const @@ -1281,21 +1272,9 @@ void QDeclarativeFlow::setLayoutDirection(Qt::LayoutDirection layoutDirection) d->layoutDirection = layoutDirection; prePositioning(); emit layoutDirectionChanged(); - emit effectiveLayoutDirectionChanged(); } } -/*! - \qmlproperty enumeration Flow::effectiveLayoutDirection - This property holds the effective layout direction of the flow positioner. - - When using the attached property \l {LayoutMirroring::enabled}{LayoutMirroring::enabled} for locale layouts, - the visual layout direction of the grid positioner will be mirrored. However, the - property \l {Flow::layoutDirection}{layoutDirection} will remain unchanged. - - \sa Flow::layoutDirection, {LayoutMirroring}{LayoutMirroring} -*/ - Qt::LayoutDirection QDeclarativeFlow::effectiveLayoutDirection() const { return QDeclarativeBasePositionerPrivate::getEffectiveLayoutDirection(this); diff --git a/src/declarative/graphicsitems/qdeclarativepositioners_p.h b/src/declarative/graphicsitems/qdeclarativepositioners_p.h index 3d62a88..1e6c118 100644 --- a/src/declarative/graphicsitems/qdeclarativepositioners_p.h +++ b/src/declarative/graphicsitems/qdeclarativepositioners_p.h @@ -130,7 +130,6 @@ class Q_AUTOTEST_EXPORT QDeclarativeRow: public QDeclarativeBasePositioner { Q_OBJECT Q_PROPERTY(Qt::LayoutDirection layoutDirection READ layoutDirection WRITE setLayoutDirection NOTIFY layoutDirectionChanged REVISION 1) - Q_PROPERTY(Qt::LayoutDirection effectiveLayoutDirection READ effectiveLayoutDirection NOTIFY effectiveLayoutDirectionChanged REVISION 1) public: QDeclarativeRow(QDeclarativeItem *parent=0); @@ -140,7 +139,6 @@ public: Q_SIGNALS: Q_REVISION(1) void layoutDirectionChanged(); - Q_REVISION(1) void effectiveLayoutDirectionChanged(); protected: virtual void doPositioning(QSizeF *contentSize); @@ -156,7 +154,6 @@ class Q_AUTOTEST_EXPORT QDeclarativeGrid : public QDeclarativeBasePositioner Q_PROPERTY(int columns READ columns WRITE setColumns NOTIFY columnsChanged) Q_PROPERTY(Flow flow READ flow WRITE setFlow NOTIFY flowChanged) Q_PROPERTY(Qt::LayoutDirection layoutDirection READ layoutDirection WRITE setLayoutDirection NOTIFY layoutDirectionChanged REVISION 1) - Q_PROPERTY(Qt::LayoutDirection effectiveLayoutDirection READ effectiveLayoutDirection NOTIFY effectiveLayoutDirectionChanged REVISION 1) public: QDeclarativeGrid(QDeclarativeItem *parent=0); @@ -180,7 +177,6 @@ Q_SIGNALS: void columnsChanged(); void flowChanged(); Q_REVISION(1) void layoutDirectionChanged(); - Q_REVISION(1) void effectiveLayoutDirectionChanged(); protected: virtual void doPositioning(QSizeF *contentSize); @@ -199,7 +195,6 @@ class Q_AUTOTEST_EXPORT QDeclarativeFlow: public QDeclarativeBasePositioner Q_OBJECT Q_PROPERTY(Flow flow READ flow WRITE setFlow NOTIFY flowChanged) Q_PROPERTY(Qt::LayoutDirection layoutDirection READ layoutDirection WRITE setLayoutDirection NOTIFY layoutDirectionChanged REVISION 1) - Q_PROPERTY(Qt::LayoutDirection effectiveLayoutDirection READ effectiveLayoutDirection NOTIFY effectiveLayoutDirectionChanged REVISION 1) public: QDeclarativeFlow(QDeclarativeItem *parent=0); @@ -214,7 +209,6 @@ public: Q_SIGNALS: void flowChanged(); Q_REVISION(1) void layoutDirectionChanged(); - Q_REVISION(1) void effectiveLayoutDirectionChanged(); protected: virtual void doPositioning(QSizeF *contentSize); diff --git a/src/declarative/graphicsitems/qdeclarativetext.cpp b/src/declarative/graphicsitems/qdeclarativetext.cpp index 195cb33..91c12d2 100644 --- a/src/declarative/graphicsitems/qdeclarativetext.cpp +++ b/src/declarative/graphicsitems/qdeclarativetext.cpp @@ -1063,7 +1063,6 @@ void QDeclarativeText::setStyleColor(const QColor &color) /*! \qmlproperty enumeration Text::horizontalAlignment \qmlproperty enumeration Text::verticalAlignment - \qmlproperty enumeration Text::effectiveHorizontalAlignment Sets the horizontal and vertical alignment of the text within the Text items width and height. By default, the text is vertically aligned to the top. Horizontal @@ -1079,10 +1078,10 @@ void QDeclarativeText::setStyleColor(const QColor &color) need to either modify the Item::anchors, or set horizontalAlignment to Text.AlignHCenter and bind the width to that of the parent. - When using the attached property LayoutMirroring::enabled to mirror application + When using the attached property \l {LayoutMirroring::enabled} to mirror application layouts, the horizontal alignment of text will also be mirrored. However, the property \c horizontalAlignment will remain unchanged. To query the effective horizontal alignment - of Text, use the read-only property \c effectiveHorizontalAlignment. + of Text, use the property \l {LayoutMirroring::enabled}. */ QDeclarativeText::HAlignment QDeclarativeText::hAlign() const { @@ -1132,10 +1131,7 @@ bool QDeclarativeTextPrivate::setHAlign(QDeclarativeText::HAlignment alignment, if (hAlign != alignment || forceAlign) { QDeclarativeText::HAlignment oldEffectiveHAlign = q->effectiveHAlign(); hAlign = alignment; - emit q->horizontalAlignmentChanged(hAlign); - if (oldEffectiveHAlign != q->effectiveHAlign()) - emit q->effectiveHorizontalAlignmentChanged(); return true; } return false; @@ -1157,7 +1153,6 @@ void QDeclarativeTextPrivate::mirrorChange() if (q->isComponentComplete()) { if (!hAlignImplicit && (hAlign == QDeclarativeText::AlignRight || hAlign == QDeclarativeText::AlignLeft)) { updateLayout(); - emit q->effectiveHorizontalAlignmentChanged(); } } } diff --git a/src/declarative/graphicsitems/qdeclarativetext_p.h b/src/declarative/graphicsitems/qdeclarativetext_p.h index b711582..1004b71 100644 --- a/src/declarative/graphicsitems/qdeclarativetext_p.h +++ b/src/declarative/graphicsitems/qdeclarativetext_p.h @@ -70,7 +70,6 @@ class Q_DECLARATIVE_PRIVATE_EXPORT QDeclarativeText : public QDeclarativeImplici Q_PROPERTY(TextStyle style READ style WRITE setStyle NOTIFY styleChanged) Q_PROPERTY(QColor styleColor READ styleColor WRITE setStyleColor NOTIFY styleColorChanged) Q_PROPERTY(HAlignment horizontalAlignment READ hAlign WRITE setHAlign RESET resetHAlign NOTIFY horizontalAlignmentChanged) - Q_PROPERTY(HAlignment effectiveHorizontalAlignment READ effectiveHAlign NOTIFY effectiveHorizontalAlignmentChanged REVISION 1) Q_PROPERTY(VAlignment verticalAlignment READ vAlign WRITE setVAlign NOTIFY verticalAlignmentChanged) Q_PROPERTY(WrapMode wrapMode READ wrapMode WRITE setWrapMode NOTIFY wrapModeChanged) Q_PROPERTY(int lineCount READ lineCount NOTIFY lineCountChanged REVISION 1) @@ -191,7 +190,6 @@ Q_SIGNALS: void paintedSizeChanged(); Q_REVISION(1) void lineHeightChanged(qreal lineHeight); Q_REVISION(1) void lineHeightModeChanged(LineHeightMode mode); - Q_REVISION(1) void effectiveHorizontalAlignmentChanged(); protected: void mousePressEvent(QGraphicsSceneMouseEvent *event); diff --git a/src/declarative/graphicsitems/qdeclarativetextedit.cpp b/src/declarative/graphicsitems/qdeclarativetextedit.cpp index fbeabcd..42c520c 100644 --- a/src/declarative/graphicsitems/qdeclarativetextedit.cpp +++ b/src/declarative/graphicsitems/qdeclarativetextedit.cpp @@ -459,7 +459,6 @@ void QDeclarativeTextEdit::setSelectedTextColor(const QColor &color) /*! \qmlproperty enumeration TextEdit::horizontalAlignment \qmlproperty enumeration TextEdit::verticalAlignment - \qmlproperty enumeration TextEdit::effectiveHorizontalAlignment Sets the horizontal and vertical alignment of the text within the TextEdit item's width and height. By default, the text alignment follows the natural alignment @@ -481,10 +480,10 @@ void QDeclarativeTextEdit::setSelectedTextColor(const QColor &color) \o TextEdit.AlignVCenter \endlist - When using the attached property LayoutMirroring::enabled to mirror application + When using the attached property \l {LayoutMirroring::enabled} to mirror application layouts, the horizontal alignment of text will also be mirrored. However, the property \c horizontalAlignment will remain unchanged. To query the effective horizontal alignment - of TextEdit, use the read-only property \c effectiveHorizontalAlignment. + of TextEdit, use the property \l {LayoutMirroring::enabled}. */ QDeclarativeTextEdit::HAlignment QDeclarativeTextEdit::hAlign() const { @@ -539,8 +538,6 @@ bool QDeclarativeTextEditPrivate::setHAlign(QDeclarativeTextEdit::HAlignment ali QDeclarativeTextEdit::HAlignment oldEffectiveHAlign = q->effectiveHAlign(); hAlign = alignment; emit q->horizontalAlignmentChanged(alignment); - if (oldEffectiveHAlign != q->effectiveHAlign()) - emit q->effectiveHorizontalAlignmentChanged(); return true; } return false; @@ -563,7 +560,6 @@ void QDeclarativeTextEditPrivate::mirrorChange() if (!hAlignImplicit && (hAlign == QDeclarativeTextEdit::AlignRight || hAlign == QDeclarativeTextEdit::AlignLeft)) { updateDefaultTextOption(); q->updateSize(); - emit q->effectiveHorizontalAlignmentChanged(); } } } diff --git a/src/declarative/graphicsitems/qdeclarativetextedit_p.h b/src/declarative/graphicsitems/qdeclarativetextedit_p.h index f9a6c73..d8fc3bc 100644 --- a/src/declarative/graphicsitems/qdeclarativetextedit_p.h +++ b/src/declarative/graphicsitems/qdeclarativetextedit_p.h @@ -73,7 +73,6 @@ class Q_AUTOTEST_EXPORT QDeclarativeTextEdit : public QDeclarativeImplicitSizePa Q_PROPERTY(QColor selectedTextColor READ selectedTextColor WRITE setSelectedTextColor NOTIFY selectedTextColorChanged) Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged) Q_PROPERTY(HAlignment horizontalAlignment READ hAlign WRITE setHAlign RESET resetHAlign NOTIFY horizontalAlignmentChanged) - Q_PROPERTY(HAlignment effectiveHorizontalAlignment READ effectiveHAlign NOTIFY effectiveHorizontalAlignmentChanged REVISION 1) Q_PROPERTY(VAlignment verticalAlignment READ vAlign WRITE setVAlign NOTIFY verticalAlignmentChanged) Q_PROPERTY(WrapMode wrapMode READ wrapMode WRITE setWrapMode NOTIFY wrapModeChanged) Q_PROPERTY(int lineCount READ lineCount NOTIFY lineCountChanged REVISION 1) @@ -249,7 +248,6 @@ Q_SIGNALS: Q_REVISION(1) void linkActivated(const QString &link); Q_REVISION(1) void canPasteChanged(); Q_REVISION(1) void inputMethodComposingChanged(); - Q_REVISION(1) void effectiveHorizontalAlignmentChanged(); public Q_SLOTS: void selectAll(); diff --git a/src/declarative/graphicsitems/qdeclarativetextinput.cpp b/src/declarative/graphicsitems/qdeclarativetextinput.cpp index af6da60..c59c919 100644 --- a/src/declarative/graphicsitems/qdeclarativetextinput.cpp +++ b/src/declarative/graphicsitems/qdeclarativetextinput.cpp @@ -326,7 +326,6 @@ void QDeclarativeTextInput::setSelectedTextColor(const QColor &color) /*! \qmlproperty enumeration TextInput::horizontalAlignment - \qmlproperty enumeration TextInput::effectiveHorizontalAlignment Sets the horizontal alignment of the text within the TextInput item's width and height. By default, the text alignment follows the natural alignment @@ -342,10 +341,10 @@ void QDeclarativeTextInput::setSelectedTextColor(const QColor &color) The valid values for \c horizontalAlignment are \c TextInput.AlignLeft, \c TextInput.AlignRight and \c TextInput.AlignHCenter. - When using the attached property LayoutMirroring::enabled to mirror application + When using the attached property \l {LayoutMirroring::enabled} to mirror application layouts, the horizontal alignment of text will also be mirrored. However, the property \c horizontalAlignment will remain unchanged. To query the effective horizontal alignment - of TextInput, use the read-only property \c effectiveHorizontalAlignment. + of TextInput, use the property \l {LayoutMirroring::enabled}. */ QDeclarativeTextInput::HAlignment QDeclarativeTextInput::hAlign() const { @@ -398,8 +397,6 @@ bool QDeclarativeTextInputPrivate::setHAlign(QDeclarativeTextInput::HAlignment a QDeclarativeTextInput::HAlignment oldEffectiveHAlign = q->effectiveHAlign(); hAlign = alignment; emit q->horizontalAlignmentChanged(alignment); - if (oldEffectiveHAlign != q->effectiveHAlign()) - emit q->effectiveHorizontalAlignmentChanged(); return true; } return false; @@ -422,7 +419,7 @@ void QDeclarativeTextInputPrivate::mirrorChange() if (q->isComponentComplete()) { if (!hAlignImplicit && (hAlign == QDeclarativeTextInput::AlignRight || hAlign == QDeclarativeTextInput::AlignLeft)) { q->updateCursorRectangle(); - emit q->effectiveHorizontalAlignmentChanged(); + updateHorizontalScroll(); } } } diff --git a/src/declarative/graphicsitems/qdeclarativetextinput_p.h b/src/declarative/graphicsitems/qdeclarativetextinput_p.h index 8b7fff9..2c2f230 100644 --- a/src/declarative/graphicsitems/qdeclarativetextinput_p.h +++ b/src/declarative/graphicsitems/qdeclarativetextinput_p.h @@ -71,7 +71,6 @@ class Q_AUTOTEST_EXPORT QDeclarativeTextInput : public QDeclarativeImplicitSizeP Q_PROPERTY(QColor selectedTextColor READ selectedTextColor WRITE setSelectedTextColor NOTIFY selectedTextColorChanged) Q_PROPERTY(QFont font READ font WRITE setFont NOTIFY fontChanged) Q_PROPERTY(HAlignment horizontalAlignment READ hAlign WRITE setHAlign RESET resetHAlign NOTIFY horizontalAlignmentChanged) - Q_PROPERTY(HAlignment effectiveHorizontalAlignment READ effectiveHAlign NOTIFY effectiveHorizontalAlignmentChanged REVISION 1) Q_PROPERTY(bool readOnly READ isReadOnly WRITE setReadOnly NOTIFY readOnlyChanged) Q_PROPERTY(bool cursorVisible READ isCursorVisible WRITE setCursorVisible NOTIFY cursorVisibleChanged) Q_PROPERTY(int cursorPosition READ cursorPosition WRITE setCursorPosition NOTIFY cursorPositionChanged) @@ -247,7 +246,6 @@ Q_SIGNALS: Q_REVISION(1) void mouseSelectionModeChanged(SelectionMode mode); Q_REVISION(1) void canPasteChanged(); Q_REVISION(1) void inputMethodComposingChanged(); - Q_REVISION(1) void effectiveHorizontalAlignmentChanged(); protected: virtual void geometryChanged(const QRectF &newGeometry, diff --git a/src/declarative/qml/qperformancetimer.cpp b/src/declarative/qml/qperformancetimer.cpp index f249798..9d76b26 100644 --- a/src/declarative/qml/qperformancetimer.cpp +++ b/src/declarative/qml/qperformancetimer.cpp @@ -45,14 +45,15 @@ #include <sys/time.h> #include <unistd.h> #include <mach/mach_time.h> -#elif defined(Q_OS_UNIX) -#include <sys/time.h> -#include <time.h> -#include <unistd.h> #elif defined(Q_OS_SYMBIAN) #include <e32std.h> #include <sys/time.h> #include <hal.h> +#include <hal_data.h> +#elif defined(Q_OS_UNIX) +#include <sys/time.h> +#include <time.h> +#include <unistd.h> #elif defined(Q_OS_WIN) #include <windows.h> #endif @@ -84,6 +85,29 @@ qint64 QPerformanceTimer::elapsed() const return absoluteToNSecs(cpu_time - t1); } +////////////////////////////// Symbian ////////////////////////////// +#elif defined(Q_OS_SYMBIAN) + +static qint64 getTimeFromTick(quint64 elapsed) +{ + static TInt freq = 0; + if (!freq) + HAL::Get(HALData::EFastCounterFrequency, freq); + + return (elapsed * 1000000000) / freq; +} + +void QPerformanceTimer::start() +{ + t1 = User::FastCounter(); +} + +qint64 QPerformanceTimer::elapsed() const +{ + return getTimeFromTick(User::FastCounter() - t1); +} + + ////////////////////////////// Unix ////////////////////////////// #elif defined(Q_OS_UNIX) @@ -158,29 +182,6 @@ qint64 QPerformanceTimer::elapsed() const return sec * Q_INT64_C(1000000000) + frac; } -////////////////////////////// Symbian ////////////////////////////// -#elif defined(Q_OS_SYMBIAN) - -static qint64 getTimeFromTick(quint64 elapsed) -{ - static TInt freq; - if (!freq) - HAL::Get(HALData::EFastCounterFrequency, freq); - - // ### not sure on units - return elapsed / freq; -} - -void QPerformanceTimer::start() -{ - t1 = User::FastCounter(); -} - -qint64 QPerformanceTimer::elapsed() const -{ - return getTimeFromTick(User::FastCounter() - t1); -} - ////////////////////////////// Windows ////////////////////////////// #elif defined(Q_OS_WIN) diff --git a/src/declarative/util/qdeclarativepixmapcache.cpp b/src/declarative/util/qdeclarativepixmapcache.cpp index 07d3977..3557425 100644 --- a/src/declarative/util/qdeclarativepixmapcache.cpp +++ b/src/declarative/util/qdeclarativepixmapcache.cpp @@ -584,6 +584,7 @@ public: void unreferencePixmap(QDeclarativePixmapData *); void referencePixmap(QDeclarativePixmapData *); + void flushCache(); protected: virtual void timerEvent(QTimerEvent *); @@ -682,6 +683,14 @@ void QDeclarativePixmapStore::timerEvent(QTimerEvent *) } } +/* + Remove all unreferenced pixmaps from the cache. +*/ +void QDeclarativePixmapStore::flushCache() +{ + shrinkCache(m_unreferencedCost); +} + QDeclarativePixmapReply::QDeclarativePixmapReply(QDeclarativePixmapData *d) : data(d), reader(0), requestSize(d->requestSize), loading(false), redirectCount(0) { @@ -1075,6 +1084,11 @@ bool QDeclarativePixmap::connectDownloadProgress(QObject *object, int method) return QMetaObject::connect(d->reply, QDeclarativePixmapReply::downloadProgressIndex, object, method); } +void QDeclarativePixmap::flushCache() +{ + pixmapStore()->flushCache(); +} + QT_END_NAMESPACE #include <qdeclarativepixmapcache.moc> diff --git a/src/declarative/util/qdeclarativepixmapcache_p.h b/src/declarative/util/qdeclarativepixmapcache_p.h index 396c196..4976906 100644 --- a/src/declarative/util/qdeclarativepixmapcache_p.h +++ b/src/declarative/util/qdeclarativepixmapcache_p.h @@ -103,6 +103,8 @@ public: bool connectDownloadProgress(QObject *, const char *); bool connectDownloadProgress(QObject *, int); + static void flushCache(); + private: Q_DISABLE_COPY(QDeclarativePixmap) QDeclarativePixmapData *d; diff --git a/src/gui/image/qpixmap_mac.cpp b/src/gui/image/qpixmap_mac.cpp index aac159e..6872cfa 100644 --- a/src/gui/image/qpixmap_mac.cpp +++ b/src/gui/image/qpixmap_mac.cpp @@ -637,7 +637,7 @@ void QMacPixmapData::macCreatePixels() } if (pixels) - memcpy(base_pixels, pixels, pixelsSize); + memcpy(base_pixels, pixels, qMin(pixelsSize, (uint) numBytes)); pixels = base_pixels; pixelsSize = numBytes; } diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp index 01b22da..cd9206c 100644 --- a/src/gui/painting/qpaintengine_raster.cpp +++ b/src/gui/painting/qpaintengine_raster.cpp @@ -3105,7 +3105,15 @@ void QRasterPaintEngine::drawCachedGlyphs(int numGlyphs, const glyph_t *glyphs, Q_D(QRasterPaintEngine); QRasterPaintEngineState *s = state(); - QFontEngineGlyphCache::Type glyphType = fontEngine->glyphFormat >= 0 ? QFontEngineGlyphCache::Type(fontEngine->glyphFormat) : d->glyphCacheType; + QFontEngineGlyphCache::Type glyphType; + if (fontEngine->glyphFormat >= 0) { + glyphType = QFontEngineGlyphCache::Type(fontEngine->glyphFormat); + } else if (s->matrix.type() > QTransform::TxTranslate + && d->glyphCacheType == QFontEngineGlyphCache::Raster_RGBMask) { + glyphType = QFontEngineGlyphCache::Raster_A8; + } else { + glyphType = d->glyphCacheType; + } QImageTextureGlyphCache *cache = static_cast<QImageTextureGlyphCache *>(fontEngine->glyphCache(0, glyphType, s->matrix)); diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp index dfb9a04..a4ab00a 100644 --- a/src/gui/painting/qpainter.cpp +++ b/src/gui/painting/qpainter.cpp @@ -2788,6 +2788,9 @@ void QPainter::setClipRect(const QRect &rect, Qt::ClipOperation op) return; } + if (d->state->clipOperation == Qt::NoClip && op == Qt::IntersectClip) + op = Qt::ReplaceClip; + d->state->clipRegion = rect; d->state->clipOperation = op; if (op == Qt::NoClip || op == Qt::ReplaceClip) @@ -2843,6 +2846,9 @@ void QPainter::setClipRegion(const QRegion &r, Qt::ClipOperation op) return; } + if (d->state->clipOperation == Qt::NoClip && op == Qt::IntersectClip) + op = Qt::ReplaceClip; + d->state->clipRegion = r; d->state->clipOperation = op; if (op == Qt::NoClip || op == Qt::ReplaceClip) @@ -3248,6 +3254,9 @@ void QPainter::setClipPath(const QPainterPath &path, Qt::ClipOperation op) return; } + if (d->state->clipOperation == Qt::NoClip && op == Qt::IntersectClip) + op = Qt::ReplaceClip; + d->state->clipPath = path; d->state->clipOperation = op; if (op == Qt::NoClip || op == Qt::ReplaceClip) diff --git a/src/gui/painting/qtextureglyphcache.cpp b/src/gui/painting/qtextureglyphcache.cpp index 16df6c1..2c1da24 100644 --- a/src/gui/painting/qtextureglyphcache.cpp +++ b/src/gui/painting/qtextureglyphcache.cpp @@ -178,14 +178,10 @@ bool QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const QImage QTextureGlyphCache::textureMapForGlyph(glyph_t g) const { #if defined(Q_WS_X11) - if (m_transform.type() > QTransform::TxTranslate && m_current_fontengine->type() == QFontEngine::Freetype) { + if (m_type != Raster_RGBMask && m_transform.type() > QTransform::TxTranslate && m_current_fontengine->type() == QFontEngine::Freetype) { QFontEngineFT::GlyphFormat format = QFontEngineFT::Format_None; QImage::Format imageFormat = QImage::Format_Invalid; switch (m_type) { - case Raster_RGBMask: - format = QFontEngineFT::Format_A32; - imageFormat = QImage::Format_RGB32; - break; case Raster_A8: format = QFontEngineFT::Format_A8; imageFormat = QImage::Format_Indexed8; @@ -266,7 +262,7 @@ void QImageTextureGlyphCache::fillTexture(const Coord &c, glyph_t g) } #endif - if (m_type == QFontEngineGlyphCache::Raster_RGBMask) { + if (m_type == QFontEngineGlyphCache::Raster_RGBMask) { QImage ref(m_image.bits() + (c.x * 4 + c.y * m_image.bytesPerLine()), qMax(mask.width(), c.w), qMax(mask.height(), c.h), m_image.bytesPerLine(), m_image.format()); diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp index c4e89d5..1056aed 100644 --- a/src/gui/text/qfontengine_ft.cpp +++ b/src/gui/text/qfontengine_ft.cpp @@ -762,9 +762,18 @@ QFontEngineFT::Glyph *QFontEngineFT::loadGlyphMetrics(QGlyphSet *set, uint glyph return g; int load_flags = FT_LOAD_DEFAULT | default_load_flags; + int load_target = default_hint_style == HintLight + ? FT_LOAD_TARGET_LIGHT + : FT_LOAD_TARGET_NORMAL; + if (set->outline_drawing) load_flags = FT_LOAD_NO_BITMAP; + if (default_hint_style == HintNone) + load_flags |= FT_LOAD_NO_HINTING; + else + load_flags |= load_target; + // apply our matrix to this, but note that the metrics will not be affected by this. FT_Face face = lockFace(); FT_Matrix matrix = this->matrix; diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index 806779a..9271f34 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -2697,6 +2697,75 @@ QFixed QTextEngine::leadingSpaceWidth(const QScriptLine &line) return width(line.from + pos, line.length - pos); } +// Scan in logClusters[from..to-1] for glyph_pos +int QTextEngine::getClusterLength(unsigned short *logClusters, + const HB_CharAttributes *attributes, + int from, int to, int glyph_pos, int *start) +{ + int clusterLength = 0; + for (int i = from; i < to; i++) { + if (logClusters[i] == glyph_pos && attributes[i].charStop) { + if (*start < 0) + *start = i; + clusterLength++; + } + else if (clusterLength) + break; + } + return clusterLength; +} + +int QTextEngine::positionInLigature(const QScriptItem *si, int end, + QFixed x, QFixed edge, int glyph_pos, + bool cursorOnCharacter) +{ + unsigned short *logClusters = this->logClusters(si); + int clusterStart = -1; + int clusterLength = 0; + + if (si->analysis.script != QUnicodeTables::Common && + si->analysis.script != QUnicodeTables::Greek) { + if (glyph_pos == -1) + return si->position + end; + else { + int i; + for (i = 0; i < end; i++) + if (logClusters[i] == glyph_pos) + break; + return si->position + i; + } + } + + if (glyph_pos == -1 && end > 0) + glyph_pos = logClusters[end - 1]; + else { + if (x <= edge) + glyph_pos--; + } + + const HB_CharAttributes *attrs = attributes(); + clusterLength = getClusterLength(logClusters, attrs, 0, end, glyph_pos, &clusterStart); + + if (clusterLength) { + const QGlyphLayout &glyphs = shapedGlyphs(si); + QFixed glyphWidth = glyphs.effectiveAdvance(glyph_pos); + // the approximate width of each individual element of the ligature + QFixed perItemWidth = glyphWidth / clusterLength; + QFixed left = x > edge ? edge : edge - glyphWidth; + int n = ((x - left) / perItemWidth).floor().toInt(); + QFixed dist = x - left - n * perItemWidth; + int closestItem = dist > (perItemWidth / 2) ? n + 1 : n; + if (cursorOnCharacter && closestItem > 0) + closestItem--; + int pos = si->position + clusterStart + closestItem; + // Jump to the next charStop + while (!attrs[pos].charStop && pos < end) + pos++; + return pos; + } + return si->position + end; +} + QStackTextEngine::QStackTextEngine(const QString &string, const QFont &f) : QTextEngine(string, f), _layoutData(string, _memory, MemSize) diff --git a/src/gui/text/qtextengine_p.h b/src/gui/text/qtextengine_p.h index 5e33f21..09610ff 100644 --- a/src/gui/text/qtextengine_p.h +++ b/src/gui/text/qtextengine_p.h @@ -594,6 +594,8 @@ public: void shapeLine(const QScriptLine &line); QFixed leadingSpaceWidth(const QScriptLine &line); + int positionInLigature(const QScriptItem *si, int end, QFixed x, QFixed edge, int glyph_pos, bool cursorOnCharacter); + private: void setBoundary(int strPos) const; void addRequiredBoundaries() const; @@ -608,6 +610,7 @@ private: void splitItem(int item, int pos) const; void resolveAdditionalFormats() const; + int getClusterLength(unsigned short *logClusters, const HB_CharAttributes *attributes, int from, int to, int glyph_pos, int *start); }; class QStackTextEngine : public QTextEngine { diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp index c34a04b..4b3c9e7 100644 --- a/src/gui/text/qtextlayout.cpp +++ b/src/gui/text/qtextlayout.cpp @@ -1011,6 +1011,35 @@ QScriptItem &QTextLineItemIterator::next() return *si; } +static QFixed offsetInLigature(const unsigned short *logClusters, + const QGlyphLayout &glyphs, + int pos, int max, int glyph_pos) +{ + int offsetInCluster = 0; + for (int i = pos - 1; i >= 0; i--) { + if (logClusters[i] == glyph_pos) + offsetInCluster++; + else + break; + } + + // in the case that the offset is inside a (multi-character) glyph, + // interpolate the position. + if (offsetInCluster > 0) { + int clusterLength = 0; + for (int i = pos - offsetInCluster; i < max; i++) { + if (logClusters[i] == glyph_pos) + clusterLength++; + else + break; + } + if (clusterLength) + return glyphs.advances_x[glyph_pos] * offsetInCluster / clusterLength; + } + + return 0; +} + bool QTextLineItemIterator::getSelectionBounds(QFixed *selectionX, QFixed *selectionWidth) const { *selectionX = *selectionWidth = 0; @@ -1050,8 +1079,19 @@ bool QTextLineItemIterator::getSelectionBounds(QFixed *selectionX, QFixed *selec swidth += glyphs.effectiveAdvance(g); } - *selectionX = x + soff; - *selectionWidth = swidth; + // If the starting character is in the middle of a ligature, + // selection should only contain the right part of that ligature + // glyph, so we need to get the width of the left part here and + // add it to *selectionX + QFixed leftOffsetInLigature = offsetInLigature(logClusters, glyphs, from, + to, start_glyph); + *selectionX = x + soff + leftOffsetInLigature; + *selectionWidth = swidth - leftOffsetInLigature; + // If the ending character is also part of a ligature, swidth does + // not contain that part yet, we also need to find out the width of + // that left part + *selectionWidth += offsetInLigature(logClusters, glyphs, to, + eng->length(item), end_glyph); } return true; } @@ -2465,16 +2505,8 @@ qreal QTextLine::cursorToX(int *cursorPos, Edge edge) const if(pos == l) x += si->width; } else { - int offsetInCluster = 0; - for (int i=pos-1; i >= 0; i--) { - if (logClusters[i] == glyph_pos) - offsetInCluster++; - else - break; - } - + int end = qMin(lineEnd, si->position + l) - si->position; if (reverse) { - int end = qMin(lineEnd, si->position + l) - si->position; int glyph_end = end == l ? si->num_glyphs : logClusters[end]; for (int i = glyph_end - 1; i >= glyph_pos; i--) x += glyphs.effectiveAdvance(i); @@ -2484,17 +2516,7 @@ qreal QTextLine::cursorToX(int *cursorPos, Edge edge) const for (int i = glyph_start; i < glyph_pos; i++) x += glyphs.effectiveAdvance(i); } - if (offsetInCluster > 0) { // in the case that the offset is inside a (multi-character) glyph, interpolate the position. - int clusterLength = 0; - for (int i=pos - offsetInCluster; i < line.length; i++) { - if (logClusters[i] == glyph_pos) - clusterLength++; - else - break; - } - if (clusterLength) - x+= glyphs.advances_x[glyph_pos] * offsetInCluster / clusterLength; - } + x += offsetInLigature(logClusters, glyphs, pos, end, glyph_pos); } *cursorPos = pos + si->position; @@ -2600,6 +2622,7 @@ int QTextLine::xToCursor(qreal _x, CursorPosition cpos) const } int glyph_pos = -1; + QFixed edge; // has to be inside run if (cpos == QTextLine::CursorOnCharacter) { if (si.analysis.bidiLevel % 2) { @@ -2610,6 +2633,7 @@ int QTextLine::xToCursor(qreal _x, CursorPosition cpos) const if (pos < x) break; glyph_pos = gs; + edge = pos; break; } pos -= glyphs.effectiveAdvance(gs); @@ -2622,6 +2646,7 @@ int QTextLine::xToCursor(qreal _x, CursorPosition cpos) const if (pos > x) break; glyph_pos = gs; + edge = pos; } pos += glyphs.effectiveAdvance(gs); ++gs; @@ -2634,6 +2659,7 @@ int QTextLine::xToCursor(qreal _x, CursorPosition cpos) const while (gs <= ge) { if (glyphs.attributes[gs].clusterStart && qAbs(x-pos) < dist) { glyph_pos = gs; + edge = pos; dist = qAbs(x-pos); } pos -= glyphs.effectiveAdvance(gs); @@ -2643,6 +2669,7 @@ int QTextLine::xToCursor(qreal _x, CursorPosition cpos) const while (gs <= ge) { if (glyphs.attributes[gs].clusterStart && qAbs(x-pos) < dist) { glyph_pos = gs; + edge = pos; dist = qAbs(x-pos); } pos += glyphs.effectiveAdvance(gs); @@ -2650,15 +2677,12 @@ int QTextLine::xToCursor(qreal _x, CursorPosition cpos) const } } if (qAbs(x-pos) < dist) - return si.position + end; + return eng->positionInLigature(&si, end, x, pos, -1, + cpos == QTextLine::CursorOnCharacter); } Q_ASSERT(glyph_pos != -1); - int j; - for (j = 0; j < eng->length(item); ++j) - if (logClusters[j] == glyph_pos) - break; -// qDebug("at pos %d (in run: %d)", si.position + j, j); - return si.position + j; + return eng->positionInLigature(&si, end, x, edge, glyph_pos, + cpos == QTextLine::CursorOnCharacter); } } // right of last item diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp index 61230fc..d76a5fd 100644 --- a/src/network/access/qhttpnetworkconnection.cpp +++ b/src/network/access/qhttpnetworkconnection.cpp @@ -256,7 +256,17 @@ void QHttpNetworkConnectionPrivate::prepareRequest(HttpMessagePair &messagePair) // set the host value = request.headerField("host"); if (value.isEmpty()) { - QByteArray host = QUrl::toAce(hostName); + QHostAddress add; + QByteArray host; + if(add.setAddress(hostName)) { + if(add.protocol() == QAbstractSocket::IPv6Protocol) { + host = "[" + hostName.toAscii() + "]";//format the ipv6 in the standard way + } else { + host = QUrl::toAce(hostName); + } + } else { + host = QUrl::toAce(hostName); + } int port = request.url().port(); if (port != -1) { diff --git a/src/plugins/bearer/icd/qnetworksession_impl.cpp b/src/plugins/bearer/icd/qnetworksession_impl.cpp index f08d8bf..a99c0a7 100644 --- a/src/plugins/bearer/icd/qnetworksession_impl.cpp +++ b/src/plugins/bearer/icd/qnetworksession_impl.cpp @@ -183,6 +183,12 @@ void QNetworkSessionPrivateImpl::updateState(QNetworkSession::State newState) icdConfig->mutex.lock(); icdConfig->state = QNetworkConfiguration::Defined; icdConfig->mutex.unlock(); + + // Reset the state of the default configuration to Discovered + icdConfig = toIcdConfig(privateConfiguration(publicConfig)); + icdConfig->mutex.lock(); + icdConfig->state = QNetworkConfiguration::Discovered; + icdConfig->mutex.unlock(); } else { if (!activeConfig.isValid()) { // Active configuration (IAP) was removed from system diff --git a/tests/auto/declarative/qdeclarativeanchors/tst_qdeclarativeanchors.cpp b/tests/auto/declarative/qdeclarativeanchors/tst_qdeclarativeanchors.cpp index 3a626bf..541d9a1 100644 --- a/tests/auto/declarative/qdeclarativeanchors/tst_qdeclarativeanchors.cpp +++ b/tests/auto/declarative/qdeclarativeanchors/tst_qdeclarativeanchors.cpp @@ -58,7 +58,6 @@ Q_DECLARE_METATYPE(QDeclarativeAnchors::Anchor) Q_DECLARE_METATYPE(QDeclarativeAnchorLine::AnchorLine) - class tst_qdeclarativeanchors : public QObject { Q_OBJECT @@ -291,7 +290,7 @@ void tst_qdeclarativeanchors::basicAnchorsRTL() QDeclarativeItem* rootItem = qobject_cast<QDeclarativeItem*>(view->rootObject()); foreach(QObject *child, rootItem->children()) { - bool mirrored = QDeclarativeItemPrivate::get(qobject_cast<QDeclarativeItem*>(child))->anchors()->property("mirrored").toBool(); + bool mirrored = QDeclarativeItemPrivate::get(qobject_cast<QDeclarativeItem*>(child))->anchors()->mirrored(); QCOMPARE(mirrored, false); } @@ -299,7 +298,7 @@ void tst_qdeclarativeanchors::basicAnchorsRTL() mirrorAnchors(qobject_cast<QDeclarativeItem*>(child)); foreach(QObject *child, rootItem->children()) { - bool mirrored = QDeclarativeItemPrivate::get(qobject_cast<QDeclarativeItem*>(child))->anchors()->property("mirrored").toBool(); + bool mirrored = QDeclarativeItemPrivate::get(qobject_cast<QDeclarativeItem*>(child))->anchors()->mirrored(); QCOMPARE(mirrored, true); } diff --git a/tests/auto/qtextlayout/tst_qtextlayout.cpp b/tests/auto/qtextlayout/tst_qtextlayout.cpp index ad33b70..df84c8f 100644 --- a/tests/auto/qtextlayout/tst_qtextlayout.cpp +++ b/tests/auto/qtextlayout/tst_qtextlayout.cpp @@ -126,6 +126,8 @@ private slots: void textWidthWithStackedTextEngine(); void textWidthWithLineSeparator(); void textWithSurrogates_qtbug15679(); + void cursorInLigatureWithMultipleLines(); + void xToCursorForLigatures(); private: QFont testFont; @@ -1436,5 +1438,45 @@ void tst_QTextLayout::textWithSurrogates_qtbug15679() QCOMPARE(x[2] - x[0], x[5] - x[3]); } +void tst_QTextLayout::cursorInLigatureWithMultipleLines() +{ +#if !defined(Q_WS_MAC) + QSKIP("This test can only be run on Mac", SkipAll); +#endif + QTextLayout layout("first line finish", QFont("Times", 20)); + layout.beginLayout(); + QTextLine line = layout.createLine(); + line.setLineWidth(70); + line = layout.createLine(); + layout.endLayout(); + + // The second line will be "finish", with "fi" as a ligature + QVERIFY(line.cursorToX(0) != line.cursorToX(1)); +} + +void tst_QTextLayout::xToCursorForLigatures() +{ +#if !defined(Q_WS_MAC) + QSKIP("This test can not be run on Mac", SkipAll); +#endif + QTextLayout layout("fi", QFont("Times", 20)); + layout.beginLayout(); + QTextLine line = layout.createLine(); + layout.endLayout(); + + QVERIFY(line.xToCursor(0) != line.xToCursor(line.naturalTextWidth() / 2)); + + // U+0061 U+0308 + QTextLayout layout2(QString::fromUtf8("\x61\xCC\x88"), QFont("Times", 20)); + + layout2.beginLayout(); + line = layout2.createLine(); + layout2.endLayout(); + + qreal width = line.naturalTextWidth(); + QVERIFY(line.xToCursor(0) == line.xToCursor(width / 2) || + line.xToCursor(width) == line.xToCursor(width / 2)); +} + QTEST_MAIN(tst_QTextLayout) #include "tst_qtextlayout.moc" diff --git a/tools/linguist/phrasebooks/japanese.qph b/tools/linguist/phrasebooks/japanese.qph index 3ecd9e3..b04e525 100644 --- a/tools/linguist/phrasebooks/japanese.qph +++ b/tools/linguist/phrasebooks/japanese.qph @@ -1,4 +1,5 @@ -<!DOCTYPE QPH><QPH language="ja"> +<!DOCTYPE QPH> +<QPH language="ja"> <phrase> <source>About</source> <target>について</target> @@ -1018,4 +1019,16 @@ <source>Yes</source> <target>はい</target> </phrase> +<phrase> + <source>&Next</source> + <target>次を検索(&N)</target> +</phrase> +<phrase> + <source>List View</source> + <target>一覧表示</target> +</phrase> +<phrase> + <source>&Run</source> + <target>実行(&R)</target> +</phrase> </QPH> diff --git a/translations/assistant_ja.ts b/translations/assistant_ja.ts index a3169ab..5c990de 100644 --- a/translations/assistant_ja.ts +++ b/translations/assistant_ja.ts @@ -610,7 +610,7 @@ Reason: </message> <message> <source>Next</source> - <translation>進む</translation> + <translation>次へ</translation> </message> <message> <source>Case Sensitive</source> diff --git a/translations/designer_ja.ts b/translations/designer_ja.ts index ab87644..7fcc66d 100644 --- a/translations/designer_ja.ts +++ b/translations/designer_ja.ts @@ -764,7 +764,7 @@ </message> <message> <source>The skin configuration file '%1' could not be opened.</source> - <translation>スキンの設定ファイル '%1' がオープンできませんでした。</translation> + <translation>スキンの設定ファイル '%1' を開けませんでした。</translation> </message> <message> <source>Syntax error: %1</source> @@ -1060,7 +1060,7 @@ Parsing grid layout minimum size values</extracomment> </message> <message> <source>&Open...</source> - <translation>オープン(&O)...</translation> + <translation>開く(&O)...</translation> </message> <message> <source>&Recent Forms</source> @@ -1304,7 +1304,7 @@ UI ファイルの記述が矛盾しています。</translation> </message> <message> <source>Unknown error</source> - <translation>不明なエラー</translation> + <translation>未知のエラー</translation> </message> <message> <source>An error occurred while running the script for %1: %2 @@ -1451,7 +1451,7 @@ Do you want to update the file location or generate a new form?</source> </message> <message> <source>Could not open file</source> - <translation>ファイルをオープンできませんでした</translation> + <translation>ファイルを開けませんでした</translation> </message> <message> <source>Saved image %1.</source> @@ -1471,7 +1471,7 @@ Do you want to update the file location or generate a new form?</source> </message> <message> <source>Could not write file</source> - <translation>ファイルに書き込むことができませんでした</translation> + <translation>ファイルに書き込めませんでした</translation> </message> <message> <source>&Close Preview</source> @@ -1491,7 +1491,7 @@ Do you want to update the file location or generate a new form?</source> </message> <message> <source>Save &As...</source> - <translation>名前をつけて保存(&A)...</translation> + <translation>名前を付けて保存(&A)...</translation> </message> <message> <source>Save A&ll</source> @@ -1525,7 +1525,7 @@ Do you want to update the file location or generate a new form?</source> <source>The file %1 could not be opened. Reason: %2 Would you like to retry or select a different file?</source> - <translation>ファイル %1 はオープンできませんでした。 + <translation>ファイル %1 を開けませんでした。 原因: %2 リトライしますか、それとも他のファイルを選択しますか?</translation> </message> @@ -1533,7 +1533,7 @@ Would you like to retry or select a different file?</source> <source>It was not possible to write the entire file %1 to disk. Reason:%2 Would you like to retry?</source> - <translation>ファイル %1 の全体をディスクに書き込むことができませんでした。 + <translation>ファイル %1 の全体をディスクに書き込めませんでした。 原因: %2 リトライしますか?</translation> </message> @@ -1876,7 +1876,7 @@ Container pages should only be added by specifying them in XML returned by the d </message> <message> <source>The file <b>%1</b> could not be opened.</source> - <translation>ファイル <b>%1</b> はオープンできませんでした。</translation> + <translation>ファイル <b>%1</b> を開けませんでした。</translation> </message> <message numerus="yes"> <source>There are %n forms with unsaved changes. Do you want to review these changes before quitting?</source> @@ -2164,7 +2164,7 @@ Empty class name passed to widget factory method</extracomment> </message> <message> <source>What's This</source> - <translation>ヘルプ</translation> + <translation>ヒント</translation> </message> <message> <source>Busy</source> @@ -2190,7 +2190,7 @@ Empty class name passed to widget factory method</extracomment> </message> <message> <source>Italic</source> - <translation>イタリック</translation> + <translation>斜体</translation> </message> <message> <source>Underline</source> @@ -2778,7 +2778,7 @@ to </message> <message> <source>Could not write %1: %2</source> - <translation>%1 に書き込むことが出来ませんでした: %2</translation> + <translation>%1 に書き込めませんでした: %2</translation> </message> <message> <source>Open Resource File</source> @@ -2790,11 +2790,11 @@ to </message> <message> <source>Move Up</source> - <translation>上へ移動</translation> + <translation>上に移動</translation> </message> <message> <source>Move Down</source> - <translation>下へ移動</translation> + <translation>下に移動</translation> </message> <message> <source>Add Prefix</source> @@ -3082,7 +3082,7 @@ Do you want overwrite the template?</source> </message> <message> <source>There was an error opening template %1 for writing. Reason: %2</source> - <translation>%1 というテンプレートを書き込み用にオープンしようとしてエラーになりました。理由: %2</translation> + <translation>%1 というテンプレートを書き込み用に開こうととしてエラーになりました。理由: %2</translation> </message> <message> <source>Write Error</source> @@ -3534,7 +3534,7 @@ Do you want overwrite the template?</source> </message> <message> <source>The file %1 could not be opened: %2</source> - <translation>ファイル %1 はオープンできませんでした: %2</translation> + <translation>ファイル %1 を開けませんでした: %2</translation> </message> <message> <source>The file %1 could not be written: %2</source> @@ -3797,19 +3797,19 @@ Do you want overwrite the template?</source> </message> <message> <source>Unable to open the file '%1' for writing: %2</source> - <translation>ファイル '%1' を書き込み用にオープンできませんでした: %2</translation> + <translation>ファイル '%1' を書き込み用に開けません: %2</translation> </message> <message> <source>Open profile</source> - <translation>プロファイルをオープン</translation> + <translation>プロファイルを開く</translation> </message> <message> <source>Open Profile - Error</source> - <translation>プロファイルをオープン - Error</translation> + <translation>プロファイルを開く - エラー</translation> </message> <message> <source>Unable to open the file '%1' for reading: %2</source> - <translation>ファイル '%1' を読み込み用にオープンできませんでした: %2</translation> + <translation>ファイル '%1' を読み込み用に開けません: %2</translation> </message> <message> <source>'%1' is not a valid profile: %2</source> @@ -4558,7 +4558,7 @@ Please select another name.</source> </message> <message> <source>Unable to open the form template file '%1': %2</source> - <translation>フォームのテンプレートファイル '%1' をオープンできません: %2</translation> + <translation>フォームのテンプレートファイル '%1' を開けません: %2</translation> </message> <message> <source>Internal error: No template selected.</source> @@ -4761,7 +4761,7 @@ Please select another name.</source> </message> <message> <source>Refresh</source> - <translation>リフレッシュ</translation> + <translation>更新</translation> </message> <message> <source>Scan for newly installed custom widget plugins.</source> @@ -5256,7 +5256,7 @@ Class: %2</source> </message> <message> <source>&OK</source> - <translation>OK(&O)</translation> + <translation>&OK</translation> </message> <message> <source>&Cancel</source> @@ -5287,7 +5287,7 @@ Class: %2</source> </message> <message> <source>Italic</source> - <translation>イタリック</translation> + <translation>斜体</translation> </message> <message> <source>CTRL+I</source> @@ -5730,7 +5730,7 @@ Class: %2</source> </message> <message> <source>List View</source> - <translation>リスト表示</translation> + <translation>一覧表示</translation> </message> <message> <source>Icon View</source> @@ -5792,7 +5792,7 @@ UI ファイルに矛盾が発生しています。</translation> <name>qdesigner_internal::WizardContainerWidgetTaskMenu</name> <message> <source>Next</source> - <translation>進む</translation> + <translation>次へ</translation> </message> <message> <source>Back</source> diff --git a/translations/linguist_ja.ts b/translations/linguist_ja.ts index 40bb778..9164b75 100644 --- a/translations/linguist_ja.ts +++ b/translations/linguist_ja.ts @@ -84,6 +84,10 @@ <context> <name>DataModel</name> <message> + <source>The translation file '%1' will not be loaded because it is empty.</source> + <translation>翻訳ファイル '%1' が空のためロードできません。</translation> + </message> + <message> <source><qt>Duplicate messages found in '%1':</source> <translation><qt>'%1' に重複したメッセージが見つかりました:</translation> </message> @@ -345,7 +349,7 @@ Return value: 2 on read failures 3 on write failures </source> - <translation type="unfinished"> + <translation> 使い方: lconvert [オプション] <入力ファイル> [<入力ファイル>...] @@ -365,8 +369,8 @@ lconvert は Qt Linguist ツールチェインの一部です。 -i <入力ファイル> --input-file <入力ファイル> 入力ファイルを指定します。<入力ファイル> の指定はダッシュ記号で始まっていてもよいです。 - This option can be used several times to merge inputs. - May be '-' (標準入力) for use in a pipe. + このオプションはマージする入力ファイルを指定する際に複数回使用できます。 + パイプで利用する場合には '-' で標準入力を指定します。 -o <出力ファイル> --output-file <出力ファイル> @@ -382,29 +386,30 @@ lconvert は Qt Linguist ツールチェインの一部です。 出力形式を指定します。-if を参照してください。 --input-codec <コーデック> - Specify encoding for QM and PO input files. Default is 'Latin1' - for QM and 'UTF-8' for PO files. UTF-8 is always tried as well for - QM, corresponding to the possible use of the trUtf8() function. + QM や PO ファイルのエンコーディングを指定します。デフォルトでは + QM ファイルでは 'Latin1' を PO ファイルでは 'UTF-8' を使用します。 + QM ファイルでは通常 trUtf8() 関数が組み合わせて利用されるため、 + UTF-8 の利用も試みます。 --output-codec <コーデック> - Specify encoding for PO output files.デフォルトは 'UTF-8' です。 + PO 出力ファイルのエンコーディングを指定します。デフォルトは 'UTF-8' です。 --drop-tags <正規表現> - Drop named extra tags when writing TS or XLIFF files. - May be specified repeatedly. + TS ファイルや XLIFF ファイルに出力する際に名前付き拡張タグを削除します。 + 複数回指定可能です。 --drop-translations - Drop existing translations and reset the status to 'unfinished'. - 注意: --no-obsolete と同等です。 + 既存の翻訳を削除してステータスを'未完了'にリセットします。 + 注意: --no-obsolete の指定を含みます。 --source-language <language>[_<region>] - Specify/override the language of the source strings. Defaults to - POSIX if not specified and the file does not name it yet. + ソーステキストの言語を指定もしくは上書きします。 + 未指定でファイルにも記述されていない場合、POSIX をデフォルトで使用します。 --target-language <language>[_<region>] - Specify/override the language of the translation. - The target language is guessed from the file name if this option - is not specified and the file contents name no language yet. + 翻訳で使用される言語を指定もしくは上書きします。 + オプションやファイル内で言語が指定されていない場合は、 + ファイル名から言語を推測します。 --no-obsolete 未使用のメッセージを取り除きます。 @@ -416,14 +421,14 @@ lconvert は Qt Linguist ツールチェインの一部です。 出力する TS ファイル内のコンテキストをアルファベット順にソートします。 --locations {absolute|relative|none} - Override how source code references are saved in TS files. - Default is absolute. + TS ファイル内に保存されているソースコードへの参照を上書きします。 + デフォルトは absolute (絶対パス) です。 --no-ui-lines UI ファイルを参照している行番号を取り除きます。 --verbose - be a bit more verbose + より詳しいログを出力します。 長すぎるオプションの指定はダッシュ記号で括る事で1つにできます。 @@ -489,13 +494,14 @@ Options: -version Display the version of lrelease and exit </source> - <translation type="unfinished">使い方: + <translation>使い方: lrelease [オプション] project-file lrelease [オプション] ts-files [-qm qm-file] -lrelease is part of Qt's Linguist tool chain. It can be used as a -stand-alone tool to convert XML-based translations files in the TS -format into the 'compiled' QM format used by QTranslator objects. +lrelease は Qt Linguist ツールチェインの一部です。 +XMLベースの翻訳ファイルであるTSフォーマットを +QTranslatorで利用可能な「コンパイル済み」のQMフォーマットに +変換する事ができるスタンドアロンのツールです。 オプション: -help このヘルプを表示して終了します @@ -506,13 +512,13 @@ format into the 'compiled' QM format used by QTranslator objects. -nounfinished 未完了の翻訳をインクルードしません -removeidentical - If the translated text is the same as - the source text, do not include the message + 翻訳後の文字列がソースと同じ場合、 + メッセージをQMファイルに組み込みません -markuntranslated <プレフィクス> - If a message has no real translation, use the source text - prefixed with the given string instead + メッセージが翻訳されていない場合、ソースの文字列に + <プレフィックス>を追加した文字列を代わりに使用します -silent - 完了した事を通知しません + 実行内容を表示しません -version lrelease のバージョンを表示して終了します </translation> @@ -823,62 +829,62 @@ Options: @lst-file Read additional file names (one per line) from lst-file. </source> - <translation type="unfinished">使い方: + <translation>使い方: lupdate [オプション] [プロジェクトファイル]... lupdate [オプション] [source-file|path|@lst-file]... -ts ts-files|@lst-file -lupdate は Qt' Linguist ツールチェインの一部です。Qt UI ファイル、C++ 、Java、 +lupdate は Qt Linguist ツールチェインの一部です。Qt UI ファイル、C++ 、Java、 JavaScript/QtScript のソースコードからメッセージを抽出します。 -Extracted messages are stored in textual translation source files (typically -Qt TS XML). 新しく追加されたり変更されたメッセージは既存の TS ファイル内のメッセージから -マージされます。 +抽出されたメッセージは原文として翻訳ソースファイル(通常は Qt TS XML)に保存されます。 +新しく追加されたり変更されたメッセージは既存の TS ファイル内のメッセージからマージされます。 オプション: -help このヘルプを表示して終了します。 -no-obsolete - すべての未使用の文字列を取り除きます。 + すべての未使用の文字列を取り除きます。 -extensions <ext>[,<ext>]... - 与えられた拡張子のファイルだけ処理します。 - 拡張子のリストはカンマで区切り、空白スペースを含んではいけません。 - デフォルト: '%1' + 与えられた拡張子のファイルだけを処理します。 + 拡張子のリストはカンマで区切り、空白スペースを含んではいけません。 + デフォルト: '%1' -pluralonly - 複数形のメッセージだけインクルードします。 + 複数形のメッセージだけインクルードします。 -silent - 完了した事を通知しません + 完了した事を通知しません -no-sort - TS ファイル内のコンテキストをソートしません。 + TS ファイル内のコンテキストをソートしません。 -no-recursive - ディレクトリ内を再帰的に処理しません。 + ディレクトリ内を再帰的に処理しません。 -recursive - ディレクトリ内を再帰的に処理します。(デフォルト) + ディレクトリ内を再帰的に処理します。(デフォルト) -I <includepath> or -I<includepath> - Additional location to look for include files. - May be specified multiple times. + include ファイルを検索するパスを追加します。 + 複数回の指定が可能です。 -locations {absolute|relative|none} - Specify/override how source code references are saved in TS files. - Default is absolute. + TS ファイルに保存されるソースコードの参照方法を指定/上書きします。 + デフォルトは absolute (絶対パス)です。 -no-ui-lines - UI ファイルを参照する行番号を記録しません。 + UI ファイルを参照する行番号を記録しません。 -disable-heuristic {sametext|similartext|number} - Disable the named merge heuristic. Can be specified multiple times. + 指定された手法のあいまいマージを行いません。複数回の指定が可能です。 -pro <ファイル名> - .pro ファイルの名前を指定します。Useful for files with .pro file syntax but - different file suffix. Projects are recursed into and merged. + .pro ファイルの名前を指定します。.pro ファイルの書式に従いながら、 + 拡張子が異なる場合に有用です。 + プロジェクトは再帰的に検索し、複数指定時はマージされます。 -source-language <language>[_<region>] - Specify the language of the source strings for new files. - Defaults to POSIX if not specified. + 新しくファイルを作成する場合のソース文字列の言語を指定します。 + 指定されない場合のデフォルトは POSIX です。 -target-language <language>[_<region>] - Specify the language of the translations for new files. - Guessed from the file name if not specified. + 新しくファイルを作成する場合の翻訳言語を指定します。 + 指定されない場合はファイル名から推測されます。 -ts <ts-file>... - 出力ファイルを指定します。This will override the TRANSLATIONS - and nullify the CODECFORTR from possibly specified project files. + 出力ファイルを指定します。プロジェクトファイルで指定された + TRANSLATIONS と CODECFORTR は無視されます。 -codecfortr <codec> - Specify the codec assumed for tr() calls. Effective only with -ts. + tr() の呼び出し時に想定されるコーデックを指定します。-ts オプションを指定した場合にのみ有効です。 -version - lupdate のバージョン情報を表示して終了します。 + lupdate のバージョン情報を表示して終了します。 @lst-file - Read additional file names (one per line) from lst-file. + lst-file を使って追加で読み込むファイル名(1行に1ファイル)を指定します。 </translation> </message> <message> diff --git a/translations/qt_help_ja.ts b/translations/qt_help_ja.ts index 2a725ca..59036e0 100644 --- a/translations/qt_help_ja.ts +++ b/translations/qt_help_ja.ts @@ -43,7 +43,7 @@ </message> <message> <source>Cannot open collection file: %1</source> - <translation>コレクションファイルをオープンできません: %1</translation> + <translation>コレクションファイルを開けません: %1</translation> </message> <message> <source>Cannot create tables in file %1!</source> @@ -67,7 +67,7 @@ </message> <message> <source>Cannot open database '%1' to optimize!</source> - <translation>最適化用にデータベース '%1' をオープンできません!</translation> + <translation>最適化用にデータベース '%1' を開けません!</translation> </message> <message> <source>Cannot create directory: %1</source> @@ -83,7 +83,7 @@ </message> <message> <source>Cannot open documentation file %1!</source> - <translation>ドキュメントファイル %1 をオープンできません!</translation> + <translation>ドキュメントファイル %1 を開けません!</translation> </message> <message> <source>The namespace %1 was not registered!</source> @@ -99,14 +99,14 @@ <message> <source>Cannot open database '%1' '%2': %3</source> <extracomment>The placeholders are: %1 - The name of the database which cannot be opened %2 - The unique id for the connection %3 - The actual error string</extracomment> - <translation>データベース '%1' '%2' がオープンできません: %3</translation> + <translation>データベース '%1' '%2' を開けません: %3</translation> </message> </context> <context> <name>QHelpEngineCore</name> <message> <source>Cannot open documentation file %1: %2!</source> - <translation>ドキュメントファイル %1 をオープンできません: %2!</translation> + <translation>ドキュメントファイル %1 を開けません: %2!</translation> </message> <message> <source>The specified namespace does not exist!</source> @@ -133,7 +133,7 @@ </message> <message> <source>Cannot open data base file %1!</source> - <translation>データベースファイル %1 をオープンできません!</translation> + <translation>データベースファイル %1 を開けません!</translation> </message> <message> <source>Cannot register namespace %1!</source> @@ -177,7 +177,7 @@ </message> <message> <source>Cannot open file %1! Skipping it.</source> - <translation>ファイル %1 をオープンできません! スキップします。</translation> + <translation>ファイル %1 を開けません! スキップします。</translation> </message> <message> <source>The filter %1 is already registered!</source> @@ -209,7 +209,7 @@ </message> <message> <source>File '%1' cannot be opened.</source> - <translation>ファイル '%1' をオープンできません。</translation> + <translation>ファイル '%1' を開けません。</translation> </message> <message> <source>File '%1' contains an invalid link to file '%2'</source> @@ -256,7 +256,7 @@ </message> <message> <source>The input file %1 could not be opened!</source> - <translation>入力ファイル %1 がオープンできません!</translation> + <translation>入力ファイル %1 を開けません!</translation> </message> </context> <context> diff --git a/translations/qt_ja.ts b/translations/qt_ja.ts index db8a917..094e34d 100644 --- a/translations/qt_ja.ts +++ b/translations/qt_ja.ts @@ -75,7 +75,7 @@ </message> <message> <source>Accessibility</source> - <translation>アクセシビリティ</translation> + <translation>ユーザー補助</translation> </message> </context> <context> @@ -136,7 +136,7 @@ libgstreamer-plugins-base はインストールされていますか。</transla </message> <message> <source>Could not open media source.</source> - <translation>メディアソースを開くことができません。</translation> + <translation>メディアソースを開けませんでした。</translation> </message> <message> <source>Invalid source type.</source> @@ -148,11 +148,11 @@ libgstreamer-plugins-base はインストールされていますか。</transla </message> <message> <source>Could not open audio device. The device is already in use.</source> - <translation>オーディオデバイスを開くことができません。デバイスは既に他のプロセスにより使用されています。</translation> + <translation>オーディオデバイスを開けませんでした。デバイスは既に他のプロセスにより使用されています。</translation> </message> <message> <source>Could not decode media source.</source> - <translation>メディアソースを開くことができません。見つからないか、未知の形式です。</translation> + <translation>メディアソースを開けませんでした。見つからないか、未知の形式です。</translation> </message> </context> <context> @@ -320,6 +320,10 @@ libgstreamer-plugins-base はインストールされていますか。</transla <source>Playback complete</source> <translation>再生が終了しました</translation> </message> + <message> + <source>Download error</source> + <translation>ダウンロードエラー</translation> + </message> </context> <context> <name>Phonon::MMF::AbstractVideoPlayer</name> @@ -439,6 +443,10 @@ libgstreamer-plugins-base はインストールされていますか。</transla <source>Error opening source: media type could not be determined</source> <translation>ソースのオープン時にエラーが発生しました: メディアのタイプが不明です</translation> </message> + <message> + <source>Failed to set requested IAP</source> + <translation>要求されたIAPのセットに失敗しました</translation> + </message> </context> <context> <name>Phonon::MMF::StereoWidening</name> @@ -511,7 +519,7 @@ libgstreamer-plugins-base はインストールされていますか。</transla </message> <message> <source>Open </source> - <translation>オープン</translation> + <translation>開く</translation> </message> <message> <source>Select a Directory</source> @@ -559,7 +567,7 @@ libgstreamer-plugins-base はインストールされていますか。</transla </message> <message> <source>&OK</source> - <translation>OK(&O)</translation> + <translation>&OK</translation> </message> <message> <source>Look &in:</source> @@ -607,7 +615,7 @@ libgstreamer-plugins-base はインストールされていますか。</transla </message> <message> <source>Read-only</source> - <translation>読み込み専用</translation> + <translation>読み取り専用</translation> </message> <message> <source>Write-only</source> @@ -643,7 +651,7 @@ libgstreamer-plugins-base はインストールされていますか。</transla </message> <message> <source>Open</source> - <translation>オープン</translation> + <translation>開く</translation> </message> <message> <source>Save As</source> @@ -651,7 +659,7 @@ libgstreamer-plugins-base はインストールされていますか。</transla </message> <message> <source>&Open</source> - <translation>オープン(&O)</translation> + <translation>開く(&O)</translation> </message> <message> <source>&Save</source> @@ -1168,7 +1176,7 @@ to <name>QComboBox</name> <message> <source>Open</source> - <translation>オープン</translation> + <translation>開く</translation> </message> <message> <source>False</source> @@ -1216,6 +1224,11 @@ to <translation>%1: リソース不足です</translation> </message> <message> + <source>%1: permission denied</source> + <comment>QSystemSemaphore</comment> + <translation>%1: 許可されていません</translation> + </message> + <message> <source>%1: unknown error %2</source> <comment>QSystemSemaphore</comment> <translation>%1: 未知のエラー %2</translation> @@ -1290,11 +1303,11 @@ to <name>QDeclarativeAbstractAnimation</name> <message> <source>Cannot animate non-existent property "%1"</source> - <translation>存在しないプロパティ "%1" はアニメーション出来ません</translation> + <translation>存在しないプロパティ "%1" はアニメーションできません</translation> </message> <message> <source>Cannot animate read-only property "%1"</source> - <translation>読込専用のプロパティ "%1" はアニメーション出来ません</translation> + <translation>読込専用のプロパティ "%1" はアニメーションできません</translation> </message> <message> <source>Animation is an abstract class</source> @@ -1320,7 +1333,7 @@ to </message> <message> <source>Cannot anchor to an item that isn't a parent or sibling.</source> - <translation>親でも兄弟でもない要素にはアンカー出来ません。</translation> + <translation>親でも兄弟でもない要素にはアンカーできません。</translation> </message> <message> <source>Possible anchor loop detected on vertical anchor.</source> @@ -1336,15 +1349,15 @@ to </message> <message> <source>Cannot anchor to a null item.</source> - <translation>空の要素にはアンカー出来ません。</translation> + <translation>空の要素にはアンカーできません。</translation> </message> <message> <source>Cannot anchor a horizontal edge to a vertical edge.</source> - <translation>横方向のエッジから縦方向のエッジへはアンカー出来ません。</translation> + <translation>横方向のエッジから縦方向のエッジへはアンカーできません。</translation> </message> <message> <source>Cannot anchor item to self.</source> - <translation>自分自身へはアンカー出来ません。</translation> + <translation>自分自身へはアンカーできません。</translation> </message> <message> <source>Cannot specify top, bottom, and vcenter anchors.</source> @@ -1356,7 +1369,7 @@ to </message> <message> <source>Cannot anchor a vertical edge to a horizontal edge.</source> - <translation>縦方向のエッジから横方向のエッジへはアンカー出来ません。</translation> + <translation>縦方向のエッジから横方向のエッジへはアンカーできません。</translation> </message> </context> <context> @@ -1367,6 +1380,13 @@ to </message> </context> <context> + <name>QDeclarativeApplication</name> + <message> + <source>Application is an abstract class</source> + <translation>Application は抽象クラスです</translation> + </message> +</context> +<context> <name>QDeclarativeBehavior</name> <message> <source>Cannot change the animation assigned to a Behavior.</source> @@ -1494,12 +1514,20 @@ to <translation>仕様が空であるコンポーネントは作成できません</translation> </message> <message> + <source>"%1.%2" is not available in %3 %4.%5.</source> + <translation>%3 %4.%5 で "%1.%2" は利用できません。</translation> + </message> + <message> + <source>"%1.%2" is not available due to component versioning.</source> + <translation>コンポーネントのバージョンの問題により "%1.%2" は利用できません。</translation> + </message> + <message> <source>Incorrectly specified signal assignment</source> <translation>仕様と異なるシグナルが割り当てられています</translation> </message> <message> <source>Cannot assign a value to a signal (expecting a script to be run)</source> - <translation>値をシグナルに割り当てることはできません(ただし、スクリプトは除きます)</translation> + <translation>値はシグナルに割り当てできません(ただし、スクリプトは除きます)</translation> </message> <message> <source>Empty signal assignment</source> @@ -1551,7 +1579,7 @@ to </message> <message> <source>Cannot assign a value directly to a grouped property</source> - <translation>グループ化されたプロパティに直接値を割り当てることはできません</translation> + <translation>グループ化されたプロパティに直接値を割り当てできません</translation> </message> <message> <source>Invalid property use</source> @@ -1563,15 +1591,15 @@ to </message> <message> <source>Single property assignment expected</source> - <translation>プロパティに複数の値は割り当てられません</translation> + <translation>プロパティに複数の値は割り当てできません</translation> </message> <message> <source>Unexpected object assignment</source> - <translation>オブジェクトを割り当てることはできません</translation> + <translation>オブジェクトを割り当てできません</translation> </message> <message> <source>Cannot assign object to list</source> - <translation>オブジェクトをリストに割り当てることはできません</translation> + <translation>オブジェクトをリストに割り当てできません</translation> </message> <message> <source>Can only assign one binding to lists</source> @@ -1579,19 +1607,23 @@ to </message> <message> <source>Cannot assign primitives to lists</source> - <translation>プリミティブをリストに割り当てることはできません</translation> + <translation>プリミティブをリストに割り当てできません</translation> </message> <message> <source>Cannot assign multiple values to a script property</source> - <translation>複数の値をスクリプトプロパティに割り当てることはできません</translation> + <translation>複数の値をスクリプトプロパティに割り当てできません</translation> </message> <message> <source>Invalid property assignment: script expected</source> <translation>無効なプロパティの値: スクリプトを指定してください</translation> </message> <message> + <source>Cannot assign multiple values to a singular property</source> + <translation>複数の値を単数プロパティに割り当てできません</translation> + </message> + <message> <source>Cannot assign object to property</source> - <translation>オブジェクトをプロパティに割り当てることはできません</translation> + <translation>オブジェクトをプロパティに割り当てできません</translation> </message> <message> <source>"%1" cannot operate on "%2"</source> @@ -1647,7 +1679,7 @@ to </message> <message> <source>Cannot override FINAL property</source> - <translation>FINAL プロパティを上書きすることはできません</translation> + <translation>FINAL プロパティは上書きできません</translation> </message> <message> <source>Invalid property type</source> @@ -1675,19 +1707,27 @@ to </message> <message> <source>No property alias location</source> - <translation>プロパティのエイリアスのパスがありません</translation> + <translation>プロパティのエイリアスへのパスがありません</translation> </message> <message> <source>Invalid alias location</source> <translation>無効なエイリアスのパス</translation> </message> <message> + <source>Invalid alias reference. An alias reference must be specified as <id>, <id>.<property> or <id>.<value property>.<property></source> + <translation>無効なエイリアスの参照です。エイリアスの参照先は <ID>, <ID>.<プロパティ> もしくは <ID>.<値プロパティ>.<プロパティ> のいずれかでなくてはいけません</translation> + </message> + <message> + <source>Alias property exceeds alias bounds</source> + <translation>エイリアスプロパティがエイリアスの境界を越えています</translation> + </message> + <message> <source>Invalid alias reference. An alias reference must be specified as <id> or <id>.<property></source> - <translation>無効なエイリアスの参照です。エイリアスの参照先は <ID> もしくは <ID>.<プロパティ> でなくてはいけません</translation> + <translation type="obsolete">無効なエイリアスの参照です。エイリアスの参照先は <ID> もしくは <ID>.<プロパティ> でなくてはいけません</translation> </message> <message> <source>Invalid alias reference. Unable to find id "%1"</source> - <translation>無効なエイリアスの参照です。 ID "%1" が見つかりません</translation> + <translation>無効なエイリアスの参照です。ID "%1" が見つかりません</translation> </message> </context> <context> @@ -1696,6 +1736,10 @@ to <source>Invalid empty URL</source> <translation>空の URL は無効です</translation> </message> + <message> + <source>createObject: value is not an object</source> + <translation>createObject: 値がオブジェクトではありません</translation> + </message> </context> <context> <name>QDeclarativeCompositeTypeManager</name> @@ -1776,6 +1820,10 @@ to <context> <name>QDeclarativeImportDatabase</name> <message> + <source>cannot load module "%1": File name case mismatch for "%2"</source> + <translation>モジュール "%1" がロードできません: ファイル名の大文字小文字が "%2" に合っていません</translation> + </message> + <message> <source>module "%1" definition "%2" not readable</source> <translation>"%1" モジュールの定義 "%2" が読めません</translation> </message> @@ -1831,19 +1879,34 @@ to <source>is not a type</source> <translation>は型ではありません</translation> </message> + <message> + <source>File name case mismatch for "%2"</source> + <translation>ファイル名の大文字小文字が "%2" に合っていません</translation> + </message> </context> <context> <name>QDeclarativeKeyNavigationAttached</name> <message> <source>KeyNavigation is only available via attached properties</source> - <translation>KeyNavigation はアタッチド・プロパティ(Attached Property: 型名.プロパティ名)の形式でのみ利用できます</translation> + <translation>KeyNavigation はアタッチされたプロパティ(Attached Property: 型名.プロパティ名)の形式でのみ利用できます</translation> </message> </context> <context> <name>QDeclarativeKeysAttached</name> <message> <source>Keys is only available via attached properties</source> - <translation>Keys はアタッチド・プロパティ(Attached Property: 型名.プロパティ名)の形式でのみ利用できます</translation> + <translation>Keys はアタッチされたプロパティ(Attached Property: 型名.プロパティ名)の形式でのみ利用できます</translation> + </message> +</context> +<context> + <name>QDeclarativeLayoutMirroringAttached</name> + <message> + <source>LayoutDirection attached property only works with Items</source> + <translation>アタッチされたプロパティ LayoutDirection はアイテムでのみ利用できます</translation> + </message> + <message> + <source>LayoutMirroring is only available via attached properties</source> + <translation>LayoutMirroring はアタッチされたプロパティ(Attached Property: 型名.プロパティ名)の形式でのみ利用できます</translation> </message> </context> <context> @@ -2146,7 +2209,7 @@ to </message> <message> <source>Cannot assign object type %1 with no default method</source> - <translation>型 %1 のオブジェクトをデフォルトメソッドなしに割り当てることはできません</translation> + <translation>デフォルトメソッドの無い型 %1 のオブジェクトは割り当てできません</translation> </message> <message> <source>Cannot connect mismatched signal/slot %1 %vs. %2</source> @@ -2220,7 +2283,7 @@ to <name>QDialog</name> <message> <source>What's This?</source> - <translation>ヒント?</translation> + <translation>ヒント</translation> </message> <message> <source>Done</source> @@ -2267,7 +2330,7 @@ to </message> <message> <source>Open</source> - <translation>オープン</translation> + <translation>開く</translation> </message> <message> <source>&Cancel</source> @@ -2323,7 +2386,7 @@ to </message> <message> <source>&OK</source> - <translation>OK(&O)</translation> + <translation>&OK</translation> </message> </context> <context> @@ -2397,7 +2460,7 @@ to </message> <message> <source>&OK</source> - <translation>OK(&O)</translation> + <translation>&OK</translation> </message> </context> <context> @@ -2420,7 +2483,7 @@ to </message> <message> <source>Cannot open for output</source> - <translation>コピー先のファイルをオープンできません</translation> + <translation>コピー先のファイルを開けません</translation> </message> <message> <source>Failure to write block</source> @@ -2451,7 +2514,7 @@ to </message> <message> <source>&Open</source> - <translation>オープン(&O)</translation> + <translation>開く(&O)</translation> </message> <message> <source>&Save</source> @@ -2459,7 +2522,7 @@ to </message> <message> <source>Open</source> - <translation>オープン</translation> + <translation>開く</translation> </message> <message> <source>%1 already exists. @@ -2477,7 +2540,7 @@ Please verify the correct file name was given.</source> </message> <message> <source>My Computer</source> - <translation>マイ コンピュータ</translation> + <translation>マイコンピュータ</translation> </message> <message> <source>%1 @@ -2692,7 +2755,7 @@ Do you want to delete it anyway?</source> </message> <message> <source>My Computer</source> - <translation>マイ コンピュータ</translation> + <translation>マイコンピュータ</translation> </message> <message> <source>Computer</source> @@ -2732,7 +2795,7 @@ Do you want to delete it anyway?</source> </message> <message> <source>Italic</source> - <translation>イタリック</translation> + <translation>斜体</translation> </message> <message> <source>Oblique</source> @@ -3207,7 +3270,7 @@ Do you want to delete it anyway?</source> <name>QIBaseDriver</name> <message> <source>Error opening database</source> - <translation>データベースのオープンでエラーが発生しました</translation> + <translation>データベースのオープン時にエラーが発生しました</translation> </message> <message> <source>Could not start transaction</source> @@ -3234,7 +3297,7 @@ Do you want to delete it anyway?</source> </message> <message> <source>Unable to open BLOB</source> - <translation>バイナリラージオブジェクトをオープンできません</translation> + <translation>バイナリラージオブジェクトを開けません</translation> </message> <message> <source>Unable to read BLOB</source> @@ -3390,11 +3453,11 @@ Do you want to delete it anyway?</source> </message> <message> <source>Cannot load library %1: %2</source> - <translation>ライブラリ '%1' を読み込むことができません: %2</translation> + <translation>ライブラリ '%1' を読み込めません: %2</translation> </message> <message> <source>Cannot unload library %1: %2</source> - <translation>ライブラリ %1 を解放することができません: %2</translation> + <translation>ライブラリ %1 を解放できません: %2</translation> </message> <message> <source>Cannot resolve symbol "%1" in %2: %3</source> @@ -3502,7 +3565,7 @@ Do you want to delete it anyway?</source> <name>QMYSQLDriver</name> <message> <source>Unable to open database '</source> - <translation>データベースをオープンできません '</translation> + <translation>データベースを開けません '</translation> </message> <message> <source>Unable to connect</source> @@ -3659,7 +3722,7 @@ Do you want to delete it anyway?</source> </message> <message> <source>Open</source> - <translation>オープン</translation> + <translation>開く</translation> </message> <message> <source>Execute</source> @@ -3833,7 +3896,7 @@ Do you want to delete it anyway?</source> <name>QNetworkAccessCacheBackend</name> <message> <source>Error opening %1</source> - <translation>オープンのエラー %1</translation> + <translation>オープン時のエラー %1</translation> </message> </context> <context> @@ -3870,7 +3933,7 @@ Do you want to delete it anyway?</source> </message> <message> <source>Error opening %1: %2</source> - <translation>%1 をオープンする時にエラーが発生しました: %2</translation> + <translation>%1 のオープン時にエラーが発生しました: %2</translation> </message> <message> <source>Write error writing to %1: %2</source> @@ -3878,7 +3941,7 @@ Do you want to delete it anyway?</source> </message> <message> <source>Cannot open %1: Path is a directory</source> - <translation>%1 をオープンできません。指定されたパスはディレクトリです</translation> + <translation>%1 を開けません。指定されたパスはディレクトリです</translation> </message> <message> <source>Read error reading from %1: %2</source> @@ -3893,7 +3956,7 @@ Do you want to delete it anyway?</source> </message> <message> <source>Cannot open %1: is a directory</source> - <translation>%1 をオープンできません。指定されたパスはディレクトリです</translation> + <translation>%1 を開けません。指定されたパスはディレクトリです</translation> </message> <message> <source>Logging in to %1 failed: authentication required</source> @@ -4623,7 +4686,7 @@ Please choose a different file name.</source> <name>QPrintPreviewDialog</name> <message> <source>Page Setup</source> - <translation>ページの設定</translation> + <translation>ページ設定</translation> </message> <message> <source>%1%</source> @@ -4691,7 +4754,7 @@ Please choose a different file name.</source> </message> <message> <source>Page setup</source> - <translation>ページの設定</translation> + <translation>ページ設定</translation> </message> <message> <source>Close</source> @@ -4847,11 +4910,11 @@ Please choose a different file name.</source> <name>QProcess</name> <message> <source>Could not open input redirection for reading</source> - <translation>標準入力リダイレクトを読み込みのためにオープンすることができません</translation> + <translation>標準入力リダイレクトを読み込みのために開けませんでした</translation> </message> <message> <source>Could not open output redirection for writing</source> - <translation>標準出力リダイレクトを書き込みのためにオープンすることができません</translation> + <translation>標準出力リダイレクトを書き込みのために開けませんでした</translation> </message> <message> <source>Resource error (fork failure): %1</source> @@ -4893,7 +4956,7 @@ Please choose a different file name.</source> <name>QPushButton</name> <message> <source>Open</source> - <translation>オープン</translation> + <translation>開く</translation> </message> </context> <context> @@ -4954,7 +5017,7 @@ Please choose a different file name.</source> <name>QSQLite2Driver</name> <message> <source>Error opening database</source> - <translation>データベースのオープンでエラーが発生しました</translation> + <translation>データベースのオープン時にエラーが発生しました</translation> </message> <message> <source>Unable to begin transaction</source> @@ -4984,11 +5047,11 @@ Please choose a different file name.</source> <name>QSQLiteDriver</name> <message> <source>Error opening database</source> - <translation>データベースのオープンでエラーが発生しました</translation> + <translation>データベースのオープン時にエラーが発生しました</translation> </message> <message> <source>Error closing database</source> - <translation>データベースのクローズでエラーが発生しました</translation> + <translation>データベースのクローズ時にエラーが発生しました</translation> </message> <message> <source>Unable to begin transaction</source> @@ -5495,11 +5558,11 @@ Please choose a different file name.</source> </message> <message> <source>Pause</source> - <translation>Pause</translation> + <translation>一時停止</translation> </message> <message> <source>Print</source> - <translation>Print</translation> + <translation>印刷</translation> </message> <message> <source>SysReq</source> @@ -6113,11 +6176,11 @@ Please choose a different file name.</source> </message> <message> <source>Insert</source> - <translation>Insert</translation> + <translation>挿入</translation> </message> <message> <source>Delete</source> - <translation>Delete</translation> + <translation>削除</translation> </message> <message> <source>Escape</source> @@ -6129,7 +6192,7 @@ Please choose a different file name.</source> </message> <message> <source>Select</source> - <translation>Select</translation> + <translation>選択</translation> </message> <message> <source>Yes</source> @@ -6430,7 +6493,7 @@ Please choose a different file name.</source> </message> <message> <source>Select</source> - <translation>セレクト</translation> + <translation>選択</translation> </message> <message> <source>Done</source> @@ -6554,6 +6617,10 @@ Please choose a different file name.</source> <translation>SSL ハンドシェーク時にエラーが発生しました: %1</translation> </message> <message> + <source>The peer certificate is blacklisted</source> + <translation>通信相手の証明書がブラックリストに載っています</translation> + </message> + <message> <source>No error</source> <translation>エラーはありません</translation> </message> @@ -6760,7 +6827,7 @@ Please choose a different file name.</source> </message> <message> <source>Open</source> - <translation>オープン</translation> + <translation>開く</translation> </message> </context> <context> @@ -6906,7 +6973,7 @@ Please choose a different file name.</source> <message> <source>Choose File</source> <comment>title for file button used in HTML forms</comment> - <translation>ファイルを選ぶ</translation> + <translation>ファイルを選択</translation> </message> <message> <source>No file selected</source> @@ -7061,7 +7128,7 @@ Please choose a different file name.</source> <message> <source>Italic</source> <comment>Italic context menu item</comment> - <translation>イタリック</translation> + <translation>斜体</translation> </message> <message> <source>Underline</source> @@ -7141,7 +7208,7 @@ Please choose a different file name.</source> <message> <source>Slider</source> <comment>Media controller element</comment> - <translation>スライダ</translation> + <translation>スライダー</translation> </message> <message> <source>Slider Thumb</source> @@ -7586,7 +7653,7 @@ Please choose a different file name.</source> <name>QWhatsThisAction</name> <message> <source>What's This?</source> - <translation>ヒント?</translation> + <translation>ヒント</translation> </message> </context> <context> diff --git a/translations/qtconfig_ja.ts b/translations/qtconfig_ja.ts index cf3ec13..8440389 100644 --- a/translations/qtconfig_ja.ts +++ b/translations/qtconfig_ja.ts @@ -4,6 +4,26 @@ <context> <name>MainWindow</name> <message> + <source><p><b><font size+=2>Appearance</font></b></p><hr><p>Use this tab to customize the appearance of your Qt applications.</p><p>You can select the default GUI Style from the drop down list and customize the colors.</p><p>Any GUI Style plugins in your plugin path will automatically be added to the list of built-in Qt styles. (See the Library Paths tab for information on adding new plugin paths.)</p><p>When you choose 3-D Effects and Window Background colors, the Qt Configuration program will automatically generate a palette for you. To customize colors further, press the Tune Palette button to open the advanced palette editor.<p>The Preview Window shows what the selected Style and colors look like.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source><p><b><font size+=2>Fonts</font></b></p><hr><p>Use this tab to select the default font for your Qt applications. The selected font is shown (initially as 'Sample Text') in the line edit below the Family, Style and Point Size drop down lists.</p><p>Qt has a powerful font substitution feature that allows you to specify a list of substitute fonts. Substitute fonts are used when a font cannot be loaded, or if the specified font doesn't have a particular character.<p>For example, if you select the font Lucida, which doesn't have Korean characters, but need to show some Korean text using the Mincho font family you can do so by adding Mincho to the list. Once Mincho is added, any Korean characters that are not found in the Lucida font will be taken from the Mincho font. Because the font substitutions are lists, you can also select multiple families, such as Song Ti (for use with Chinese text).</source> + <translation type="unfinished"></translation> + </message> + <message> + <source><p><b><font size+=2>Interface</font></b></p><hr><p>Use this tab to customize the feel of your Qt applications.</p><p>If the Resolve Symlinks checkbox is checked Qt will follow symlinks when handling URLs. For example, in the file dialog, if this setting is turned on and /usr/tmp is a symlink to /var/tmp, entering the /usr/tmp directory will cause the file dialog to change to /var/tmp. With this setting turned off, symlinks are not resolved or followed.</p><p>The Global Strut setting is useful for people who require a minimum size for all widgets (e.g. when using a touch panel or for users who are visually impaired). Leaving the Global Strut width and height at 0 will disable the Global Strut feature</p><p>XIM (Extended Input Methods) are used for entering characters in languages that have large character sets, for example, Chinese and Japanese.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source><p><b><font size+=2>Printer</font></b></p><hr><p>Use this tab to configure the way Qt generates output for the printer.You can specify if Qt should try to embed fonts into its generated output.If you enable font embedding, the resulting postscript will be more portable and will more accurately reflect the visual output on the screen; however the resulting postscript file size will be bigger.<p>When using font embedding you can select additional directories where Qt should search for embeddable font files. By default, the X server font path is used.</source> + <translation type="unfinished"></translation> + </message> + <message> + <source><p><b><font size+=2>Phonon</font></b></p><hr><p>Use this tab to configure the Phonon GStreamer multimedia backend. <p>It is reccommended to leave all settings on "Auto" to let Phonon determine your settings automatically.</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Desktop Settings (Default)</source> <translation>デスクトップの設定(デフォルト)</translation> </message> @@ -364,7 +384,7 @@ </message> <message> <source>Browse...</source> - <translation>ブラウズ...</translation> + <translation>参照...</translation> </message> <message> <source>Press the <b>Browse</b> button or enter a directory and press Enter to add them to the list.</source> |