summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dist/changes-4.4.02
-rw-r--r--doc/src/examples/plugandpaint.qdoc2
-rw-r--r--doc/src/snippets/code/src_qdbus_qdbusmetatype.cpp1
-rw-r--r--src/3rdparty/clucene/src/CLucene/util/bufferedstream.h2
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/ChangeLog26
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/wtf/VMTags.h39
-rw-r--r--src/3rdparty/javascriptcore/VERSION4
-rw-r--r--src/corelib/io/qdatastream.cpp7
-rw-r--r--src/corelib/io/qfsfileengine_win.cpp8
-rw-r--r--src/corelib/kernel/qeventdispatcher_win.cpp2
-rw-r--r--src/gui/kernel/qapplication_win.cpp25
-rw-r--r--src/gui/kernel/qcocoamenuloader_mac.mm7
-rw-r--r--src/gui/kernel/qcocoasharedwindowmethods_mac_p.h11
-rw-r--r--src/gui/styles/qmacstyle_mac.mm16
-rw-r--r--src/gui/widgets/qabstractscrollarea.cpp1
-rw-r--r--src/gui/widgets/qmenu_mac.mm19
-rw-r--r--src/network/bearer/qnetworkconfigmanager_p.cpp2
-rw-r--r--src/network/kernel/qhostinfo.cpp22
-rw-r--r--src/network/kernel/qhostinfo_p.h3
-rw-r--r--src/plugins/bearer/corewlan/qcorewlanengine.h41
-rw-r--r--src/plugins/bearer/corewlan/qcorewlanengine.mm671
-rw-r--r--src/plugins/bearer/generic/qgenericengine.cpp5
-rw-r--r--src/plugins/bearer/generic/qgenericengine.h1
-rw-r--r--src/plugins/bearer/icd/qicdengine.cpp8
-rw-r--r--src/plugins/bearer/icd/qicdengine.h2
-rw-r--r--src/plugins/bearer/nativewifi/qnativewifiengine.cpp7
-rw-r--r--src/plugins/bearer/nativewifi/qnativewifiengine.h1
-rw-r--r--src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp6
-rw-r--r--src/plugins/bearer/networkmanager/qnetworkmanagerengine.h3
-rw-r--r--src/plugins/bearer/symbian/symbianengine.cpp7
-rw-r--r--src/plugins/bearer/symbian/symbianengine.h1
-rw-r--r--src/script/api/qscriptengine.cpp4
-rw-r--r--src/script/bridge/qscriptqobject.cpp9
-rw-r--r--src/script/bridge/qscriptvariant.cpp6
-rw-r--r--tests/auto/qdiriterator/tst_qdiriterator.cpp10
-rw-r--r--tests/auto/qhostinfo/tst_qhostinfo.cpp45
-rw-r--r--tests/auto/qitemmodel/tst_qitemmodel.cpp2
-rw-r--r--tests/auto/qthread/tst_qthread.cpp4
-rw-r--r--tools/assistant/tools/assistant/helpviewer.cpp11
-rw-r--r--tools/assistant/tools/assistant/helpviewer.h3
-rw-r--r--tools/assistant/tools/assistant/helpviewer_qwv.cpp22
-rw-r--r--tools/designer/src/components/propertyeditor/propertyeditor.cpp2
-rw-r--r--tools/designer/src/lib/shared/filterwidget.cpp14
-rw-r--r--tools/pixeltool/qpixeltool.cpp2
-rw-r--r--tools/qdoc3/config.h1
-rw-r--r--tools/qdoc3/doc.cpp11
-rw-r--r--tools/qdoc3/htmlgenerator.cpp424
-rw-r--r--tools/qdoc3/htmlgenerator.h1
-rw-r--r--tools/qdoc3/test/assistant.qdocconf41
-rw-r--r--tools/qdoc3/test/designer.qdocconf41
-rw-r--r--tools/qdoc3/test/linguist.qdocconf41
-rw-r--r--tools/qdoc3/test/qmake.qdocconf41
-rw-r--r--tools/qdoc3/test/qt-build-docs.qdocconf21
-rw-r--r--tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf20
-rw-r--r--tools/qdoc3/test/qt-html-templates.qdocconf18
-rw-r--r--tools/qdoc3/test/qt.qdocconf21
-rw-r--r--tools/qdoc3/test/qt_zh_CN.qdocconf20
-rw-r--r--tools/qtconfig/mainwindow.cpp2
-rw-r--r--tools/qtestlib/wince/cetest/main.cpp8
-rw-r--r--translations/assistant_de.ts40
-rw-r--r--translations/designer_de.ts95
-rw-r--r--translations/linguist_de.ts27
-rw-r--r--translations/qt_de.ts744
-rw-r--r--translations/qt_help_de.ts26
64 files changed, 1775 insertions, 954 deletions
diff --git a/dist/changes-4.4.0 b/dist/changes-4.4.0
index a33b510..3e7d14d 100644
--- a/dist/changes-4.4.0
+++ b/dist/changes-4.4.0
@@ -1999,7 +1999,7 @@ Qt for Embedded Linux
* Made the SL5000, USB, VR41xx and Yopy drivers available as plugins.
- Decoration drivers
- * Made the Styled, Windows and Default decorations avaiable as plugins
+ * Made the Styled, Windows and Default decorations available as plugins
- Demo applications
* Added embeddedsvgviewer, styledemo & fluidlauncher applications to
diff --git a/doc/src/examples/plugandpaint.qdoc b/doc/src/examples/plugandpaint.qdoc
index a502e18..0e2bfd0 100644
--- a/doc/src/examples/plugandpaint.qdoc
+++ b/doc/src/examples/plugandpaint.qdoc
@@ -513,7 +513,7 @@
Since the approach is identical to
\l{tools/plugandpaintplugins/basictools}{Basic Tools}, we won't
- review the code here. The only part of interes is the
+ review the code here. The only part of interest is the
\c .pro file, since Extra Filters is a dynamic plugin
(\l{tools/plugandpaintplugins/basictools}{Basic Tools} is
linked statically into the Plug & Paint executable).
diff --git a/doc/src/snippets/code/src_qdbus_qdbusmetatype.cpp b/doc/src/snippets/code/src_qdbus_qdbusmetatype.cpp
index d97d61a..800a332 100644
--- a/doc/src/snippets/code/src_qdbus_qdbusmetatype.cpp
+++ b/doc/src/snippets/code/src_qdbus_qdbusmetatype.cpp
@@ -40,5 +40,6 @@
****************************************************************************/
//! [0]
+#include <QDBusMetaType>
qDBusRegisterMetaType<MyClass>();
//! [0]
diff --git a/src/3rdparty/clucene/src/CLucene/util/bufferedstream.h b/src/3rdparty/clucene/src/CLucene/util/bufferedstream.h
index b73ad98..d905955 100644
--- a/src/3rdparty/clucene/src/CLucene/util/bufferedstream.h
+++ b/src/3rdparty/clucene/src/CLucene/util/bufferedstream.h
@@ -46,7 +46,7 @@ protected:
/**
* This function must be implemented by the subclasses.
* It should write a maximum of @p space characters at the buffer
- * position pointed to by @p start. If no more data is avaiable due to
+ * position pointed to by @p start. If no more data is available due to
* end of file, -1 should be returned. If an error occurs, the status
* should be set to Error, an error message should be set and the function
* must return -1.
diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/ChangeLog b/src/3rdparty/javascriptcore/JavaScriptCore/ChangeLog
index 4f6e565..11572b0 100644
--- a/src/3rdparty/javascriptcore/JavaScriptCore/ChangeLog
+++ b/src/3rdparty/javascriptcore/JavaScriptCore/ChangeLog
@@ -1,3 +1,29 @@
+2010-04-14 Kent Hansen <kent.hansen@nokia.com>
+
+ Reviewed by Maciej Stachowiak.
+
+ Mac OS X: Use deployment target to determine whether memory tagging should be enabled
+ https://bugs.webkit.org/show_bug.cgi?id=34888
+
+ When building on (Snow) Leopard but targeting Tiger
+ (TARGETING_TIGER defined, BUILDING_ON_TIGER not defined),
+ WebKit would crash on Tiger because the tags passed to mmap
+ caused those function calls to fail.
+
+ Conversely, when building on Tiger but targeting Leopard
+ (BUILDING_ON_TIGER defined, TARGETING_LEOPARD defined), WebKit
+ would crash on Leopard because the tags passed to vm_map and
+ vm_allocate caused those function calls to fail.
+
+ Solution: Use TARGETING_TIGER rather than BUILDING_ON_TIGER to
+ govern the tag definitions. Use the same tags for vm_map and
+ vm_allocate regardless of target, since they work on
+ both. Fall back to the mmap tags that work on Tiger (that is,
+ "no tags") if targeting Tiger, since those tags also work on
+ Leopard.
+
+ * wtf/VMTags.h:
+
2010-03-29 Patrick Gansterer <paroga@paroga.com>
Reviewed by Darin Adler.
diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/VMTags.h b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/VMTags.h
index 34e2494..75bec11 100644
--- a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/VMTags.h
+++ b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/VMTags.h
@@ -30,25 +30,48 @@
// On Mac OS X, the VM subsystem allows tagging memory requested from mmap and vm_map
// in order to aid tools that inspect system memory use.
-#if OS(DARWIN) && !defined(BUILDING_ON_TIGER)
+#if OS(DARWIN)
#include <mach/vm_statistics.h>
+#if !defined(TARGETING_TIGER)
+
#if defined(VM_MEMORY_TCMALLOC)
#define VM_TAG_FOR_TCMALLOC_MEMORY VM_MAKE_TAG(VM_MEMORY_TCMALLOC)
#else
#define VM_TAG_FOR_TCMALLOC_MEMORY VM_MAKE_TAG(53)
#endif // defined(VM_MEMORY_TCMALLOC)
-#if defined(VM_MEMORY_JAVASCRIPT_CORE) && defined(VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE) && defined(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR) && defined(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR)
-#define VM_TAG_FOR_COLLECTOR_MEMORY VM_MAKE_TAG(VM_MEMORY_JAVASCRIPT_CORE)
-#define VM_TAG_FOR_REGISTERFILE_MEMORY VM_MAKE_TAG(VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE)
+#if defined(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR)
#define VM_TAG_FOR_EXECUTABLEALLOCATOR_MEMORY VM_MAKE_TAG(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR)
#else
-#define VM_TAG_FOR_COLLECTOR_MEMORY VM_MAKE_TAG(63)
#define VM_TAG_FOR_EXECUTABLEALLOCATOR_MEMORY VM_MAKE_TAG(64)
+#endif // defined(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR)
+
+#if defined(VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE)
+#define VM_TAG_FOR_REGISTERFILE_MEMORY VM_MAKE_TAG(VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE)
+#else
#define VM_TAG_FOR_REGISTERFILE_MEMORY VM_MAKE_TAG(65)
-#endif // defined(VM_MEMORY_JAVASCRIPT_CORE) && defined(VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE) && defined(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR) && defined(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR)
+#endif // defined(VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE)
+
+#else // !defined(TARGETING_TIGER)
+
+// mmap on Tiger fails with tags that work on Leopard, so fall
+// back to Tiger-compatible tags (that also work on Leopard)
+// when targeting Tiger.
+#define VM_TAG_FOR_TCMALLOC_MEMORY -1
+#define VM_TAG_FOR_EXECUTABLEALLOCATOR_MEMORY -1
+#define VM_TAG_FOR_REGISTERFILE_MEMORY -1
+
+#endif // !defined(TARGETING_TIGER)
+
+// Tags for vm_map and vm_allocate work on both Tiger and Leopard.
+
+#if defined(VM_MEMORY_JAVASCRIPT_CORE)
+#define VM_TAG_FOR_COLLECTOR_MEMORY VM_MAKE_TAG(VM_MEMORY_JAVASCRIPT_CORE)
+#else
+#define VM_TAG_FOR_COLLECTOR_MEMORY VM_MAKE_TAG(63)
+#endif // defined(VM_MEMORY_JAVASCRIPT_CORE)
#if defined(VM_MEMORY_WEBCORE_PURGEABLE_BUFFERS)
#define VM_TAG_FOR_WEBCORE_PURGEABLE_MEMORY VM_MAKE_TAG(VM_MEMORY_WEBCORE_PURGEABLE_BUFFERS)
@@ -56,7 +79,7 @@
#define VM_TAG_FOR_WEBCORE_PURGEABLE_MEMORY VM_MAKE_TAG(69)
#endif // defined(VM_MEMORY_WEBCORE_PURGEABLE_BUFFERS)
-#else // OS(DARWIN) && !defined(BUILDING_ON_TIGER)
+#else // OS(DARWIN)
#define VM_TAG_FOR_TCMALLOC_MEMORY -1
#define VM_TAG_FOR_COLLECTOR_MEMORY -1
@@ -64,6 +87,6 @@
#define VM_TAG_FOR_REGISTERFILE_MEMORY -1
#define VM_TAG_FOR_WEBCORE_PURGEABLE_MEMORY -1
-#endif // OS(DARWIN) && !defined(BUILDING_ON_TIGER)
+#endif // OS(DARWIN)
#endif // VMTags_h
diff --git a/src/3rdparty/javascriptcore/VERSION b/src/3rdparty/javascriptcore/VERSION
index 2b885a7..9a02027 100644
--- a/src/3rdparty/javascriptcore/VERSION
+++ b/src/3rdparty/javascriptcore/VERSION
@@ -4,8 +4,8 @@ This is a snapshot of JavaScriptCore from
The commit imported was from the
- javascriptcore-snapshot-07042010 branch/tag
+ javascriptcore-snapshot-20042010 branch/tag
and has the sha1 checksum
- 475f8c67522d8b3f3163dc3a6b24d6083fd0ac19
+ c589321ffdda5e93cf77e2cf2cf43afe3e996f6e
diff --git a/src/corelib/io/qdatastream.cpp b/src/corelib/io/qdatastream.cpp
index 2731ae1..3a9d284 100644
--- a/src/corelib/io/qdatastream.cpp
+++ b/src/corelib/io/qdatastream.cpp
@@ -1144,16 +1144,17 @@ QDataStream &QDataStream::operator<<(double f)
CHECK_STREAM_PRECOND(*this)
#ifndef Q_DOUBLE_FORMAT
- if (!noswap) {
+ if (noswap) {
+ dev->write((char *)&f, sizeof(double));
+ } else {
union {
double val1;
quint64 val2;
} x;
x.val1 = f;
x.val2 = qbswap(x.val2);
- f = x.val1;
+ dev->write((char *)&x.val2, sizeof(double));
}
- dev->write((char *)&f, sizeof(double));
#else
union {
double val1;
diff --git a/src/corelib/io/qfsfileengine_win.cpp b/src/corelib/io/qfsfileengine_win.cpp
index eeca07e..ec49f1a 100644
--- a/src/corelib/io/qfsfileengine_win.cpp
+++ b/src/corelib/io/qfsfileengine_win.cpp
@@ -542,11 +542,13 @@ qint64 QFSFileEnginePrivate::nativeSize() const
if (errorCode == ERROR_ACCESS_DENIED || errorCode == ERROR_SHARING_VIOLATION) {
QByteArray path = nativeFilePath;
// path for the FindFirstFile should not end with a trailing slash
- while (path.endsWith('\\'))
- path.chop(1);
+ while (!path.isEmpty() && reinterpret_cast<const wchar_t *>(
+ path.constData() + path.length())[-1] == '\\')
+ path.chop(2);
// FindFirstFile can not handle drives
- if (!path.endsWith(':')) {
+ if (!path.isEmpty() && reinterpret_cast<const wchar_t *>(
+ path.constData() + path.length())[-1] != ':') {
WIN32_FIND_DATA findData;
HANDLE hFind = ::FindFirstFile((const wchar_t*)path.constData(),
&findData);
diff --git a/src/corelib/kernel/qeventdispatcher_win.cpp b/src/corelib/kernel/qeventdispatcher_win.cpp
index 2633a7c..135ec303 100644
--- a/src/corelib/kernel/qeventdispatcher_win.cpp
+++ b/src/corelib/kernel/qeventdispatcher_win.cpp
@@ -595,7 +595,7 @@ void QEventDispatcherWin32Private::registerTimer(WinTimerInfo *t)
} else {
ok = t->fastTimerId = qtimeSetEvent(t->interval, 1, qt_fast_timer_proc, (DWORD_PTR)t,
TIME_CALLBACK_FUNCTION | TIME_PERIODIC | TIME_KILL_SYNCHRONOUS);
- if (ok == 0) { // fall back to normal timer if no more multimedia timers avaiable
+ if (ok == 0) { // fall back to normal timer if no more multimedia timers available
ok = SetTimer(internalHwnd, t->timerId, (uint) t->interval, 0);
}
}
diff --git a/src/gui/kernel/qapplication_win.cpp b/src/gui/kernel/qapplication_win.cpp
index 1d8eb4c..fb2837e 100644
--- a/src/gui/kernel/qapplication_win.cpp
+++ b/src/gui/kernel/qapplication_win.cpp
@@ -79,6 +79,7 @@ extern void qt_wince_hide_taskbar(HWND hwnd); //defined in qguifunctions_wince.c
#include "qlayout.h"
#include "qtooltip.h"
#include "qt_windows.h"
+#include "qscrollbar.h"
#if defined(QT_NON_COMMERCIAL)
#include "qnc_win.h"
#endif
@@ -701,6 +702,21 @@ void QApplicationPrivate::initializeWidgetPaletteHash()
QApplication::setPalette(menu, "QMenuBar");
}
+static void qt_set_windows_updateScrollBar(QWidget *widget)
+{
+ QList<QObject*> children = widget->children();
+ for (int i = 0; i < children.size(); ++i) {
+ QObject *o = children.at(i);
+ if(!o->isWidgetType())
+ continue;
+ if (QWidget *w = static_cast<QWidget *>(o))
+ qt_set_windows_updateScrollBar(w);
+ }
+ if (qobject_cast<QScrollBar*>(widget))
+ widget->updateGeometry();
+}
+
+
/*****************************************************************************
qt_init() - initializes Qt for Windows
*****************************************************************************/
@@ -1930,6 +1946,15 @@ extern "C" LRESULT QT_WIN_CALLBACK QtWndProc(HWND hwnd, UINT message, WPARAM wPa
}
}
}
+ else if (msg.wParam == SPI_SETNONCLIENTMETRICS) {
+ widget = (QETWidget*)QWidget::find(hwnd);
+ if (widget && !widget->parentWidget()) {
+ qt_set_windows_updateScrollBar(widget);
+ QEvent e(QEvent::LayoutRequest);
+ QApplication::sendEvent(widget, &e);
+ }
+ }
+
break;
case WM_PAINT: // paint event
diff --git a/src/gui/kernel/qcocoamenuloader_mac.mm b/src/gui/kernel/qcocoamenuloader_mac.mm
index b58fd7c..8d65aa1 100644
--- a/src/gui/kernel/qcocoamenuloader_mac.mm
+++ b/src/gui/kernel/qcocoamenuloader_mac.mm
@@ -53,6 +53,12 @@
QT_FORWARD_DECLARE_CLASS(QCFString)
QT_FORWARD_DECLARE_CLASS(QString)
+#ifndef QT_NO_TRANSLATION
+ QT_BEGIN_NAMESPACE
+ extern QString qt_mac_applicationmenu_string(int type);
+ QT_END_NAMESPACE
+#endif
+
QT_USE_NAMESPACE
@implementation QT_MANGLE_NAMESPACE(QCocoaMenuLoader)
@@ -226,7 +232,6 @@ QT_USE_NAMESPACE
- (void)qtTranslateApplicationMenu
{
#ifndef QT_NO_TRANSLATION
- extern QString qt_mac_applicationmenu_string(int type);
[servicesItem setTitle: qt_mac_QStringToNSString(qt_mac_applicationmenu_string(0))];
[hideItem setTitle: qt_mac_QStringToNSString(qt_mac_applicationmenu_string(1).arg(qAppName()))];
[hideAllOthersItem setTitle: qt_mac_QStringToNSString(qt_mac_applicationmenu_string(2))];
diff --git a/src/gui/kernel/qcocoasharedwindowmethods_mac_p.h b/src/gui/kernel/qcocoasharedwindowmethods_mac_p.h
index ec00915..e94d247 100644
--- a/src/gui/kernel/qcocoasharedwindowmethods_mac_p.h
+++ b/src/gui/kernel/qcocoasharedwindowmethods_mac_p.h
@@ -101,6 +101,17 @@ QT_END_NAMESPACE
return !(isPopup || isToolTip || isTool);
}
+- (void)becomeMainWindow
+{
+ [super becomeMainWindow];
+ // Cocoa sometimes tell a hidden window to become the
+ // main window (and as such, show it). This can e.g
+ // happend when the application gets activated. If
+ // this is the case, we tell it to hide again:
+ if (![self isVisible])
+ [self orderOut:self];
+}
+
- (void)toggleToolbarShown:(id)sender
{
macSendToolbarChangeEvent([self QT_MANGLE_NAMESPACE(qt_qwidget)]);
diff --git a/src/gui/styles/qmacstyle_mac.mm b/src/gui/styles/qmacstyle_mac.mm
index 074dd89..f5b0b0c 100644
--- a/src/gui/styles/qmacstyle_mac.mm
+++ b/src/gui/styles/qmacstyle_mac.mm
@@ -2143,7 +2143,7 @@ int QMacStyle::pixelMetric(PixelMetric metric, const QStyleOption *opt, const QW
if (qstyleoption_cast<const QStyleOptionComboBox *>(opt) != 0)
ret = 0;
else
- ret = QWindowsStyle::pixelMetric(metric, opt, widget);
+ ret = 1;
break;
case PM_MaximumDragDistance:
ret = -1;
@@ -3099,14 +3099,16 @@ void QMacStyle::drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPai
HIRect hirect = qt_hirectForQRect(opt->rect);
HIThemeDrawButton(&hirect, &bi, cg, kHIThemeOrientationNormal, 0);
break; }
+
case PE_Frame: {
QPen oldPen = p->pen();
- QPen newPen;
- newPen.setBrush(opt->palette.dark());
- p->setPen(newPen);
+ p->setPen(opt->palette.base().color().darker(140));
p->drawRect(opt->rect.adjusted(0, 0, -1, -1));
+ p->setPen(opt->palette.base().color().darker(180));
+ p->drawLine(opt->rect.topLeft(), opt->rect.topRight());
p->setPen(oldPen);
break; }
+
case PE_FrameLineEdit:
if (const QStyleOptionFrame *frame = qstyleoption_cast<const QStyleOptionFrame *>(opt)) {
if (frame->state & State_Sunken) {
@@ -3279,10 +3281,14 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
if (header->orientation == Qt::Horizontal){
switch (header->position) {
case QStyleOptionHeader::Beginning:
+ ir.adjust(-1, -1, 0, 0);
break;
case QStyleOptionHeader::Middle:
+ ir.adjust(-1, -1, 0, 0);
+ break;
+ case QStyleOptionHeader::OnlyOneSection:
case QStyleOptionHeader::End:
- ir.adjust(-1, 0, 0, 0);
+ ir.adjust(-1, -1, 1, 0);
break;
default:
break;
diff --git a/src/gui/widgets/qabstractscrollarea.cpp b/src/gui/widgets/qabstractscrollarea.cpp
index 73ec53e..8cffebd 100644
--- a/src/gui/widgets/qabstractscrollarea.cpp
+++ b/src/gui/widgets/qabstractscrollarea.cpp
@@ -983,6 +983,7 @@ bool QAbstractScrollArea::event(QEvent *e)
case QEvent::StyleChange:
case QEvent::LayoutDirectionChange:
case QEvent::ApplicationLayoutDirectionChange:
+ case QEvent::LayoutRequest:
d->layoutChildren();
// fall through
default:
diff --git a/src/gui/widgets/qmenu_mac.mm b/src/gui/widgets/qmenu_mac.mm
index 6a0eb53..7645c23 100644
--- a/src/gui/widgets/qmenu_mac.mm
+++ b/src/gui/widgets/qmenu_mac.mm
@@ -665,6 +665,7 @@ void qt_mac_set_modal_state_helper_recursive(OSMenuRef menu, OSMenuRef merge, bo
}
}
#else
+ bool modalWindowOnScreen = qApp->activeModalWidget() != 0;
for (NSMenuItem *item in [menu itemArray]) {
OSMenuRef submenu = [item submenu];
if (submenu != merge) {
@@ -674,10 +675,20 @@ void qt_mac_set_modal_state_helper_recursive(OSMenuRef menu, OSMenuRef merge, bo
// The item should follow what the QAction has.
if ([item tag]) {
QAction *action = reinterpret_cast<QAction *>([item tag]);
- syncNSMenuItemEnabled(item, action->isEnabled());
- } else {
- syncNSMenuItemEnabled(item, YES);
- }
+ syncNSMenuItemEnabled(item, action->isEnabled());
+ } else {
+ syncNSMenuItemEnabled(item, YES);
+ }
+ // We sneak in some extra code here to handle a menu problem:
+ // If there is no window on screen, we cannot set 'nil' as
+ // menu item target, because then cocoa will disable the item
+ // (guess it assumes that there will be no first responder to
+ // catch the trigger anyway?) OTOH, If we have a modal window,
+ // then setting the menu loader as target will make cocoa not
+ // deliver the trigger because the loader is then seen as modally
+ // shaddowed). So either way there are shortcomings. Instead, we
+ // decide the target as late as possible:
+ [item setTarget:modalWindowOnScreen ? nil : getMenuLoader()];
} else {
syncNSMenuItemEnabled(item, NO);
}
diff --git a/src/network/bearer/qnetworkconfigmanager_p.cpp b/src/network/bearer/qnetworkconfigmanager_p.cpp
index a651dd1..a7bd2d5 100644
--- a/src/network/bearer/qnetworkconfigmanager_p.cpp
+++ b/src/network/bearer/qnetworkconfigmanager_p.cpp
@@ -381,7 +381,7 @@ void QNetworkConfigurationManagerPrivate::updateConfigurations()
connect(engine, SIGNAL(configurationChanged(QNetworkConfigurationPrivatePointer)),
this, SLOT(configurationChanged(QNetworkConfigurationPrivatePointer)));
- QMetaObject::invokeMethod(engine, "requestUpdate");
+ QMetaObject::invokeMethod(engine, "initialize");
}
}
diff --git a/src/network/kernel/qhostinfo.cpp b/src/network/kernel/qhostinfo.cpp
index baf69e7..7e006e0 100644
--- a/src/network/kernel/qhostinfo.cpp
+++ b/src/network/kernel/qhostinfo.cpp
@@ -488,9 +488,23 @@ QHostInfoLookupManager::~QHostInfoLookupManager()
wasDeleted = true;
// don't qDeleteAll currentLookups, the QThreadPool has ownership
- qDeleteAll(postponedLookups);
- qDeleteAll(scheduledLookups);
- qDeleteAll(finishedLookups);
+ clear();
+}
+
+void QHostInfoLookupManager::clear()
+{
+ {
+ QMutexLocker locker(&mutex);
+ qDeleteAll(postponedLookups);
+ qDeleteAll(scheduledLookups);
+ qDeleteAll(finishedLookups);
+ postponedLookups.clear();
+ scheduledLookups.clear();
+ finishedLookups.clear();
+ }
+
+ threadPool.waitForDone();
+ cache.clear();
}
void QHostInfoLookupManager::work()
@@ -636,7 +650,7 @@ void qt_qhostinfo_clear_cache()
{
QHostInfoLookupManager* manager = theHostInfoLookupManager();
if (manager) {
- manager->cache.clear();
+ manager->clear();
}
}
diff --git a/src/network/kernel/qhostinfo_p.h b/src/network/kernel/qhostinfo_p.h
index 4fc74e9..e11766b 100644
--- a/src/network/kernel/qhostinfo_p.h
+++ b/src/network/kernel/qhostinfo_p.h
@@ -116,7 +116,7 @@ public:
// These functions are outside of the QHostInfo class and strictly internal.
// Do NOT use them outside of QAbstractSocket.
QHostInfo Q_NETWORK_EXPORT qt_qhostinfo_lookup(const QString &name, QObject *receiver, const char *member, bool *valid, int *id);
-void Q_NETWORK_EXPORT qt_qhostinfo_clear_cache();
+void Q_AUTOTEST_EXPORT qt_qhostinfo_clear_cache();
void Q_AUTOTEST_EXPORT qt_qhostinfo_enable_cache(bool e);
class QHostInfoCache
@@ -161,6 +161,7 @@ public:
QHostInfoLookupManager();
~QHostInfoLookupManager();
+ void clear();
void work();
// called from QHostInfo
diff --git a/src/plugins/bearer/corewlan/qcorewlanengine.h b/src/plugins/bearer/corewlan/qcorewlanengine.h
index 5c69299..3c24c54 100644
--- a/src/plugins/bearer/corewlan/qcorewlanengine.h
+++ b/src/plugins/bearer/corewlan/qcorewlanengine.h
@@ -47,15 +47,18 @@
#include <QMap>
#include <QTimer>
#include <SystemConfiguration/SystemConfiguration.h>
+#include <QThread>
#ifndef QT_NO_BEARERMANAGEMENT
QT_BEGIN_NAMESPACE
class QNetworkConfigurationPrivate;
+class QScanThread;
class QCoreWlanEngine : public QBearerEngineImpl
{
+ friend class QScanThread;
Q_OBJECT
public:
@@ -70,6 +73,7 @@ public:
void connectToId(const QString &id);
void disconnectFromId(const QString &id);
+ Q_INVOKABLE void initialize();
Q_INVOKABLE void requestUpdate();
QNetworkSession::State sessionStateForId(const QString &id);
@@ -84,27 +88,52 @@ public:
private Q_SLOTS:
void doRequestUpdate();
+ void networksChanged();
private:
bool isWifiReady(const QString &dev);
- QMap<QString, QString> configurationInterface;
- QStringList scanForSsids(const QString &interfaceName);
-
- bool isKnownSsid(const QString &ssid);
QList<QNetworkConfigurationPrivate *> foundConfigurations;
SCDynamicStoreRef storeSession;
CFRunLoopSourceRef runloopSource;
bool hasWifi;
+ bool scanning;
+ QScanThread *scanThread;
protected:
- QMap<QString, QMap<QString,QString> > userProfiles;
-
void startNetworkChangeLoop();
+
+};
+
+class QScanThread : public QThread
+{
+ Q_OBJECT
+
+public:
+ QScanThread(QObject *parent = 0);
+ ~QScanThread();
+
+ void quit();
+ QList<QNetworkConfigurationPrivate *> getConfigurations();
+ QString interfaceName;
+ QMap<QString, QString> configurationInterface;
void getUserConfigurations();
QString getNetworkNameFromSsid(const QString &ssid);
QString getSsidFromNetworkName(const QString &name);
+ bool isKnownSsid(const QString &ssid);
+ QMap<QString, QMap<QString,QString> > userProfiles;
+
+signals:
+ void networksChanged();
+
+protected:
+ void run();
+
+private:
+ QList<QNetworkConfigurationPrivate *> fetchedConfigurations;
+ QMutex mutex;
QStringList foundNetwork(const QString &id, const QString &ssid, const QNetworkConfiguration::StateFlags state, const QString &interfaceName, const QNetworkConfiguration::Purpose purpose);
+
};
QT_END_NAMESPACE
diff --git a/src/plugins/bearer/corewlan/qcorewlanengine.mm b/src/plugins/bearer/corewlan/qcorewlanengine.mm
index 268126a..3206833 100644
--- a/src/plugins/bearer/corewlan/qcorewlanengine.mm
+++ b/src/plugins/bearer/corewlan/qcorewlanengine.mm
@@ -67,10 +67,6 @@
#include <private/qt_cocoa_helpers_mac_p.h>
#include "private/qcore_mac_p.h"
-#ifndef QT_NO_BEARERMANAGEMENT
-
-QT_BEGIN_NAMESPACE
-
@interface QNSListener : NSObject
{
NSNotificationCenter *center;
@@ -96,7 +92,6 @@ QT_BEGIN_NAMESPACE
QMacCocoaAutoReleasePool pool;
center = [NSNotificationCenter defaultCenter];
currentInterface = [CWInterface interfaceWithName:nil];
-// [center addObserver:self selector:@selector(notificationHandler:) name:kCWLinkDidChangeNotification object:nil];
[center addObserver:self selector:@selector(notificationHandler:) name:kCWPowerDidChangeNotification object:nil];
[locker unlock];
return self;
@@ -130,6 +125,8 @@ QT_BEGIN_NAMESPACE
QNSListener *listener = 0;
+QT_BEGIN_NAMESPACE
+
void networkChangeCallback(SCDynamicStoreRef/* store*/, CFArrayRef changedKeys, void *info)
{
for ( long i = 0; i < CFArrayGetCount(changedKeys); i++) {
@@ -143,20 +140,279 @@ void networkChangeCallback(SCDynamicStoreRef/* store*/, CFArrayRef changedKeys,
return;
}
-QCoreWlanEngine::QCoreWlanEngine(QObject *parent)
-: QBearerEngineImpl(parent)
+
+QScanThread::QScanThread(QObject *parent)
+ :QThread(parent)
{
- startNetworkChangeLoop();
+}
+
+QScanThread::~QScanThread()
+{
+}
+
+void QScanThread::quit()
+{
+ wait();
+}
+
+void QScanThread::run()
+{
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+ QStringList found;
+ mutex.lock();
+ CWInterface *currentInterface = [CWInterface interfaceWithName:qt_mac_QStringToNSString(interfaceName)];
+ mutex.unlock();
+
+ if([currentInterface power]) {
+ NSError *err = nil;
+ NSDictionary *parametersDict = [NSDictionary dictionaryWithObjectsAndKeys:
+ [NSNumber numberWithBool:YES], kCWScanKeyMerge,
+ [NSNumber numberWithInteger:100], kCWScanKeyRestTime, nil];
+
+ NSArray* apArray = [currentInterface scanForNetworksWithParameters:parametersDict error:&err];
+ CWNetwork *apNetwork;
+
+ if (!err) {
+
+ for(uint row=0; row < [apArray count]; row++ ) {
+ apNetwork = [apArray objectAtIndex:row];
+
+ const QString networkSsid = qt_mac_NSStringToQString([apNetwork ssid]);
+ const QString id = QString::number(qHash(QLatin1String("corewlan:") + networkSsid));
+ found.append(id);
+
+ QNetworkConfiguration::StateFlags state = QNetworkConfiguration::Undefined;
+ bool known = isKnownSsid(networkSsid);
+ if( [currentInterface.interfaceState intValue] == kCWInterfaceStateRunning) {
+ if( networkSsid == qt_mac_NSStringToQString( [currentInterface ssid])) {
+ state = QNetworkConfiguration::Active;
+ }
+ }
+ if(state == QNetworkConfiguration::Undefined) {
+ if(known) {
+ state = QNetworkConfiguration::Discovered;
+ } else {
+ state = QNetworkConfiguration::Undefined;
+ }
+ }
+ QNetworkConfiguration::Purpose purpose = QNetworkConfiguration::UnknownPurpose;
+ if([[apNetwork securityMode] intValue] == kCWSecurityModeOpen) {
+ purpose = QNetworkConfiguration::PublicPurpose;
+ } else {
+ purpose = QNetworkConfiguration::PrivatePurpose;
+ }
+
+ found.append(foundNetwork(id, networkSsid, state, interfaceName, purpose));
+
+ } //end row
+// [parametersDict release];
+
+ } //end error
+ } // endwifi power
+ // add known configurations that are not around.
+ QMapIterator<QString, QMap<QString,QString> > i(userProfiles);
+ while (i.hasNext()) {
+ i.next();
+
+ QString networkName = i.key();
+ const QString id = QString::number(qHash(QLatin1String("corewlan:") + networkName));
+
+ if(!found.contains(id)) {
+ QString networkSsid = getSsidFromNetworkName(networkName);
+ const QString ssidId = QString::number(qHash(QLatin1String("corewlan:") + networkSsid));
+ QNetworkConfiguration::StateFlags state = QNetworkConfiguration::Undefined;
+ QString interfaceName;
+ QMapIterator<QString, QString> ij(i.value());
+ while (ij.hasNext()) {
+ ij.next();
+ interfaceName = ij.value();
+ }
+
+ if( [currentInterface.interfaceState intValue] == kCWInterfaceStateRunning) {
+ if( networkSsid == qt_mac_NSStringToQString([currentInterface ssid])) {
+ state = QNetworkConfiguration::Active;
+ }
+ }
+ if(state == QNetworkConfiguration::Undefined) {
+ if( userProfiles.contains(networkName)
+ && found.contains(ssidId)) {
+ state = QNetworkConfiguration::Discovered;
+ }
+ }
+
+ if(state == QNetworkConfiguration::Undefined) {
+ state = QNetworkConfiguration::Defined;
+ }
+
+ found.append(foundNetwork(id, networkName, state, interfaceName, QNetworkConfiguration::UnknownPurpose));
+ }
+ }
+ emit networksChanged();
+ [pool release];
+}
+
+QStringList QScanThread::foundNetwork(const QString &id, const QString &name, const QNetworkConfiguration::StateFlags state, const QString &interfaceName, const QNetworkConfiguration::Purpose purpose)
+{
+ QStringList found;
+ QMutexLocker locker(&mutex);
+ QNetworkConfigurationPrivate *ptr = new QNetworkConfigurationPrivate;
+
+ ptr->name = name;
+ ptr->isValid = true;
+ ptr->id = id;
+ ptr->state = state;
+ ptr->type = QNetworkConfiguration::InternetAccessPoint;
+ ptr->bearer = QLatin1String("WLAN");
+ ptr->purpose = purpose;
+
+ fetchedConfigurations.append( ptr);
+ configurationInterface.insert(ptr->id, interfaceName);
+
+ locker.unlock();
+ locker.relock();
+ found.append(id);
+ return found;
+}
+
+QList<QNetworkConfigurationPrivate *> QScanThread::getConfigurations()
+{
+ QMutexLocker locker(&mutex);
+
+ QList<QNetworkConfigurationPrivate *> foundConfigurations = fetchedConfigurations;
+ fetchedConfigurations.clear();
+
+ return foundConfigurations;
+}
+
+void QScanThread::getUserConfigurations()
+{
+ QMutexLocker locker(&mutex);
QMacCocoaAutoReleasePool pool;
- if([[CWInterface supportedInterfaces] count] > 0 && !listener) {
- listener = [[QNSListener alloc] init];
- listener.engine = this;
- hasWifi = true;
- } else {
- hasWifi = false;
+ userProfiles.clear();
+
+ NSArray *wifiInterfaces = [CWInterface supportedInterfaces];
+ for(uint row=0; row < [wifiInterfaces count]; row++ ) {
+
+ CWInterface *wifiInterface = [CWInterface interfaceWithName: [wifiInterfaces objectAtIndex:row]];
+ NSString *nsInterfaceName = [wifiInterface name];
+// add user configured system networks
+ SCDynamicStoreRef dynRef = SCDynamicStoreCreate(kCFAllocatorSystemDefault, (CFStringRef)@"Qt corewlan", nil, nil);
+ NSDictionary * airportPlist = (NSDictionary *)SCDynamicStoreCopyValue(dynRef, (CFStringRef)[NSString stringWithFormat:@"Setup:/Network/Interface/%@/AirPort", nsInterfaceName]);
+ CFRelease(dynRef);
+
+ NSDictionary *prefNetDict = [airportPlist objectForKey:@"PreferredNetworks"];
+
+ NSArray *thisSsidarray = [prefNetDict valueForKey:@"SSID_STR"];
+ for(NSString *ssidkey in thisSsidarray) {
+ QString thisSsid = qt_mac_NSStringToQString(ssidkey);
+ if(!userProfiles.contains(thisSsid)) {
+ QMap <QString,QString> map;
+ map.insert(thisSsid, qt_mac_NSStringToQString(nsInterfaceName));
+ userProfiles.insert(thisSsid, map);
+ }
+ }
+ CFRelease(airportPlist);
+
+ // 802.1X user profiles
+ QString userProfilePath = QDir::homePath() + "/Library/Preferences/com.apple.eap.profiles.plist";
+ NSDictionary* eapDict = [[[NSDictionary alloc] initWithContentsOfFile:qt_mac_QStringToNSString(userProfilePath)] autorelease];
+ NSString *profileStr= @"Profiles";
+ NSString *nameStr = @"UserDefinedName";
+ NSString *networkSsidStr = @"Wireless Network";
+ for (id profileKey in eapDict) {
+ if ([profileStr isEqualToString:profileKey]) {
+ NSDictionary *itemDict = [eapDict objectForKey:profileKey];
+ for (id itemKey in itemDict) {
+
+ NSInteger dictSize = [itemKey count];
+ id objects[dictSize];
+ id keys[dictSize];
+
+ [itemKey getObjects:objects andKeys:keys];
+ QString networkName;
+ QString ssid;
+ for(int i = 0; i < dictSize; i++) {
+ if([nameStr isEqualToString:keys[i]]) {
+ networkName = qt_mac_NSStringToQString(objects[i]);
+ }
+ if([networkSsidStr isEqualToString:keys[i]]) {
+ ssid = qt_mac_NSStringToQString(objects[i]);
+ }
+ if(!userProfiles.contains(networkName)
+ && !ssid.isEmpty()) {
+ QMap<QString,QString> map;
+ map.insert(ssid, qt_mac_NSStringToQString(nsInterfaceName));
+ userProfiles.insert(networkName, map);
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+QString QScanThread::getSsidFromNetworkName(const QString &name)
+{
+ QMutexLocker locker(&mutex);
+
+ QMapIterator<QString, QMap<QString,QString> > i(userProfiles);
+ while (i.hasNext()) {
+ i.next();
+ QMap<QString,QString> map = i.value();
+ QMapIterator<QString, QString> ij(i.value());
+ while (ij.hasNext()) {
+ ij.next();
+ const QString networkNameHash = QString::number(qHash(QLatin1String("corewlan:") +i.key()));
+ if(name == i.key() || name == networkNameHash) {
+ return ij.key();
+ }
+ }
+ }
+ return QString();
+}
+
+QString QScanThread::getNetworkNameFromSsid(const QString &ssid)
+{
+ QMutexLocker locker(&mutex);
+
+ QMapIterator<QString, QMap<QString,QString> > i(userProfiles);
+ while (i.hasNext()) {
+ i.next();
+ QMap<QString,QString> map = i.value();
+ QMapIterator<QString, QString> ij(i.value());
+ while (ij.hasNext()) {
+ ij.next();
+ if(ij.key() == ssid) {
+ return i.key();
+ }
+ }
}
- QMetaObject::invokeMethod(this, "requestUpdate", Qt::QueuedConnection);
+ return QString();
+}
+
+bool QScanThread::isKnownSsid(const QString &ssid)
+{
+ QMutexLocker locker(&mutex);
+
+ QMapIterator<QString, QMap<QString,QString> > i(userProfiles);
+ while (i.hasNext()) {
+ i.next();
+ QMap<QString,QString> map = i.value();
+ if(map.keys().contains(ssid)) {
+ return true;
+ }
+ }
+ return false;
+}
+
+
+QCoreWlanEngine::QCoreWlanEngine(QObject *parent)
+: QBearerEngineImpl(parent), scanThread(0)
+{
+ scanThread = new QScanThread(this);
+ connect(scanThread, SIGNAL(networksChanged()),
+ this, SLOT(networksChanged()));
}
QCoreWlanEngine::~QCoreWlanEngine()
@@ -167,18 +423,35 @@ QCoreWlanEngine::~QCoreWlanEngine()
[listener release];
}
+void QCoreWlanEngine::initialize()
+{
+ QMutexLocker locker(&mutex);
+
+ if([[CWInterface supportedInterfaces] count] > 0 && !listener) {
+ listener = [[QNSListener alloc] init];
+ listener.engine = this;
+ hasWifi = true;
+ } else {
+ hasWifi = false;
+ }
+ storeSession = NULL;
+
+ startNetworkChangeLoop();
+}
+
+
QString QCoreWlanEngine::getInterfaceFromId(const QString &id)
{
QMutexLocker locker(&mutex);
- return configurationInterface.value(id);
+ return scanThread->configurationInterface.value(id);
}
bool QCoreWlanEngine::hasIdentifier(const QString &id)
{
QMutexLocker locker(&mutex);
- return configurationInterface.contains(id);
+ return scanThread->configurationInterface.contains(id);
}
void QCoreWlanEngine::connectToId(const QString &id)
@@ -195,13 +468,14 @@ void QCoreWlanEngine::connectToId(const QString &id)
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithCapacity:0];
QString wantedSsid;
- bool using8021X = false;
QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.value(id);
- const QString idHash = QString::number(qHash(QLatin1String("corewlan:") + getNetworkNameFromSsid(ptr->name)));
+ const QString idHash = QString::number(qHash(QLatin1String("corewlan:") + ptr->name));
+ const QString idHash2 = QString::number(qHash(QLatin1String("corewlan:") + scanThread->getNetworkNameFromSsid(ptr->name)));
- if (idHash != id) {
+ bool using8021X = false;
+ if (idHash2 != id) {
NSArray *array = [CW8021XProfile allUser8021XProfiles];
for (NSUInteger i = 0; i < [array count]; ++i) {
@@ -210,7 +484,7 @@ void QCoreWlanEngine::connectToId(const QString &id)
const QString ssidHash = QString::number(qHash(QLatin1String("corewlan:") + qt_mac_NSStringToQString([[array objectAtIndex:i] ssid])));
if (id == networkNameHashCheck || id == ssidHash) {
- const QString thisName = getSsidFromNetworkName(id);
+ const QString thisName = scanThread->getSsidFromNetworkName(id);
if (thisName.isEmpty())
wantedSsid = id;
else
@@ -225,24 +499,25 @@ void QCoreWlanEngine::connectToId(const QString &id)
if (!using8021X) {
QString wantedNetwork;
- QMapIterator<QString, QMap<QString,QString> > i(userProfiles);
+ QMapIterator<QString, QMap<QString,QString> > i(scanThread->userProfiles);
while (i.hasNext()) {
i.next();
wantedNetwork = i.key();
const QString networkNameHash = QString::number(qHash(QLatin1String("corewlan:") + wantedNetwork));
if (id == networkNameHash) {
- wantedSsid = getSsidFromNetworkName(wantedNetwork);
+ wantedSsid = scanThread->getSsidFromNetworkName(wantedNetwork);
break;
}
}
}
NSDictionary *scanParameters = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], kCWScanKeyMerge,
+ [NSNumber numberWithInt:kCWScanTypeFast], kCWScanKeyScanType,
[NSNumber numberWithInteger:100], kCWScanKeyRestTime,
qt_mac_QStringToNSString(wantedSsid), kCWScanKeySSID,
nil];
- NSArray *scanArray = [NSArray arrayWithArray:[wifiInterface scanForNetworksWithParameters:scanParameters error:&err]];
+ NSArray *scanArray = [wifiInterface scanForNetworksWithParameters:scanParameters error:&err];
if(!err) {
for(uint row=0; row < [scanArray count]; row++ ) {
@@ -349,7 +624,7 @@ void QCoreWlanEngine::disconnectFromId(const QString &id)
void QCoreWlanEngine::requestUpdate()
{
- getUserConfigurations();
+ scanThread->getUserConfigurations();
doRequestUpdate();
}
@@ -359,228 +634,12 @@ void QCoreWlanEngine::doRequestUpdate()
QMacCocoaAutoReleasePool pool;
- QStringList previous = accessPointConfigurations.keys();
-
NSArray *wifiInterfaces = [CWInterface supportedInterfaces];
for (uint row = 0; row < [wifiInterfaces count]; ++row) {
- foreach (const QString &interface,
- scanForSsids(qt_mac_NSStringToQString([wifiInterfaces objectAtIndex:row]))) {
- previous.removeAll(interface);
- }
+ scanThread->interfaceName = qt_mac_NSStringToQString([wifiInterfaces objectAtIndex:row]);
+ scanThread->start();
}
-
- while (!previous.isEmpty()) {
- QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.take(previous.takeFirst());
-
- configurationInterface.remove(ptr->id);
-
- locker.unlock();
- emit configurationRemoved(ptr);
- locker.relock();
- }
-
locker.unlock();
- emit updateCompleted();
-}
-
-QString QCoreWlanEngine::getSsidFromNetworkName(const QString &name)
-{
- QMapIterator<QString, QMap<QString,QString> > i(userProfiles);
- while (i.hasNext()) {
- i.next();
- QMap<QString,QString> map = i.value();
- QMapIterator<QString, QString> ij(i.value());
- while (ij.hasNext()) {
- ij.next();
- const QString networkNameHash = QString::number(qHash(QLatin1String("corewlan:") + i.key()));
- if (name == i.key() || name == networkNameHash) {
- return ij.key();
- }
- }
- }
- return QString();
-}
-
-QString QCoreWlanEngine::getNetworkNameFromSsid(const QString &ssid)
-{
- QMapIterator<QString, QMap<QString,QString> > i(userProfiles);
- while (i.hasNext()) {
- i.next();
- QMap<QString,QString> map = i.value();
- QMapIterator<QString, QString> ij(i.value());
- while (ij.hasNext()) {
- ij.next();
- if(ij.key() == ssid) {
- return i.key();
- }
- }
- }
- return QString();
-}
-
-QStringList QCoreWlanEngine::scanForSsids(const QString &interfaceName)
-{
- QMutexLocker locker(&mutex);
-
- QStringList found;
-
- if(!hasWifi) {
- return found;
- }
- QMacCocoaAutoReleasePool pool;
-
- CWInterface *currentInterface = [CWInterface interfaceWithName:qt_mac_QStringToNSString(interfaceName)];
- QStringList addedConfigs;
-
- if([currentInterface power]) {
- NSError *err = nil;
- NSDictionary *parametersDict = [NSDictionary dictionaryWithObjectsAndKeys:
- [NSNumber numberWithBool:YES], kCWScanKeyMerge,
- [NSNumber numberWithInt:kCWScanTypeFast], kCWScanKeyScanType, // get the networks in the scan cache
- [NSNumber numberWithInteger:100], kCWScanKeyRestTime, nil];
- NSArray* apArray = [currentInterface scanForNetworksWithParameters:parametersDict error:&err];
- CWNetwork *apNetwork;
- if (!err) {
-
- for(uint row=0; row < [apArray count]; row++ ) {
- apNetwork = [apArray objectAtIndex:row];
-
- const QString networkSsid = qt_mac_NSStringToQString([apNetwork ssid]);
-
- const QString id = QString::number(qHash(QLatin1String("corewlan:") + networkSsid));
- found.append(id);
-
- QNetworkConfiguration::StateFlags state = QNetworkConfiguration::Undefined;
- bool known = isKnownSsid(networkSsid);
- if( [currentInterface.interfaceState intValue] == kCWInterfaceStateRunning) {
- if( networkSsid == qt_mac_NSStringToQString( [currentInterface ssid])) {
- state = QNetworkConfiguration::Active;
- }
- }
- if(state == QNetworkConfiguration::Undefined) {
- if(known) {
- state = QNetworkConfiguration::Discovered;
- } else {
- state = QNetworkConfiguration::Undefined;
- }
- }
- QNetworkConfiguration::Purpose purpose = QNetworkConfiguration::UnknownPurpose;
- if([[apNetwork securityMode] intValue] == kCWSecurityModeOpen) {
- purpose = QNetworkConfiguration::PublicPurpose;
- } else {
- purpose = QNetworkConfiguration::PrivatePurpose;
- }
-
- found.append(foundNetwork(id, networkSsid, state, interfaceName, purpose));
-
- } //end row
- } //end error
- } // endwifi power
-
- // add known configurations that are not around.
- QMapIterator<QString, QMap<QString,QString> > i(userProfiles);
- while (i.hasNext()) {
- i.next();
-
- QString networkName = i.key();
- const QString id = QString::number(qHash(QLatin1String("corewlan:") + networkName));
-
- if(!found.contains(id)) {
- QString networkSsid = getSsidFromNetworkName(networkName);
- const QString ssidId = QString::number(qHash(QLatin1String("corewlan:") + networkSsid));
- QNetworkConfiguration::StateFlags state = QNetworkConfiguration::Undefined;
- QString interfaceName;
- QMapIterator<QString, QString> ij(i.value());
- while (ij.hasNext()) {
- ij.next();
- interfaceName = ij.value();
- }
-
- if( [currentInterface.interfaceState intValue] == kCWInterfaceStateRunning) {
- if( networkSsid == qt_mac_NSStringToQString([currentInterface ssid])) {
- state = QNetworkConfiguration::Active;
- }
- }
- if(state == QNetworkConfiguration::Undefined) {
- if( userProfiles.contains(networkName)
- && found.contains(ssidId)) {
- state = QNetworkConfiguration::Discovered;
- }
- }
-
- if(state == QNetworkConfiguration::Undefined) {
- state = QNetworkConfiguration::Defined;
- }
-
- found.append(foundNetwork(id, networkName, state, interfaceName, QNetworkConfiguration::UnknownPurpose));
- }
- }
- return found;
-}
-
-QStringList QCoreWlanEngine::foundNetwork(const QString &id, const QString &name, const QNetworkConfiguration::StateFlags state, const QString &interfaceName, const QNetworkConfiguration::Purpose purpose)
-{
- QStringList found;
- QMutexLocker locker(&mutex);
- if (accessPointConfigurations.contains(id)) {
- QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.value(id);
-
- bool changed = false;
-
- ptr->mutex.lock();
-
- if (!ptr->isValid) {
- ptr->isValid = true;
- changed = true;
- }
-
- if (ptr->name != name) {
- ptr->name = name;
- changed = true;
- }
-
- if (ptr->id != id) {
- ptr->id = id;
- changed = true;
- }
-
- if (ptr->state != state) {
- ptr->state = state;
- changed = true;
- }
-
- if (ptr->purpose != purpose) {
- ptr->purpose = purpose;
- changed = true;
- }
- ptr->mutex.unlock();
-
- if (changed) {
- locker.unlock();
- emit configurationChanged(ptr);
- locker.relock();
- }
- found.append(id);
- } else {
- QNetworkConfigurationPrivatePointer ptr(new QNetworkConfigurationPrivate);
-
- ptr->name = name;
- ptr->isValid = true;
- ptr->id = id;
- ptr->state = state;
- ptr->type = QNetworkConfiguration::InternetAccessPoint;
- ptr->bearer = QLatin1String("WLAN");
- ptr->purpose = purpose;
-
- accessPointConfigurations.insert(ptr->id, ptr);
- configurationInterface.insert(ptr->id, interfaceName);
-
- locker.unlock();
- emit configurationAdded(ptr);
- locker.relock();
- found.append(id);
- }
- return found;
}
bool QCoreWlanEngine::isWifiReady(const QString &wifiDeviceName)
@@ -596,20 +655,6 @@ bool QCoreWlanEngine::isWifiReady(const QString &wifiDeviceName)
return false;
}
-bool QCoreWlanEngine::isKnownSsid(const QString &ssid)
-{
- QMutexLocker locker(&mutex);
-
- QMapIterator<QString, QMap<QString,QString> > i(userProfiles);
- while (i.hasNext()) {
- i.next();
- QMap<QString,QString> map = i.value();
- if(map.keys().contains(ssid)) {
- return true;
- }
- }
- return false;
-}
QNetworkSession::State QCoreWlanEngine::sessionStateForId(const QString &id)
{
@@ -644,7 +689,6 @@ QNetworkConfigurationManager::Capabilities QCoreWlanEngine::capabilities() const
void QCoreWlanEngine::startNetworkChangeLoop()
{
- storeSession = NULL;
SCDynamicStoreContext dynStoreContext = { 0, this/*(void *)storeSession*/, NULL, NULL, NULL };
storeSession = SCDynamicStoreCreate(NULL,
@@ -711,74 +755,73 @@ bool QCoreWlanEngine::requiresPolling() const
return true;
}
-void QCoreWlanEngine::getUserConfigurations()
+void QCoreWlanEngine::networksChanged()
{
- QMacCocoaAutoReleasePool pool;
- userProfiles.clear();
+ QMutexLocker locker(&mutex);
- NSArray *wifiInterfaces = [CWInterface supportedInterfaces];
- for(uint row=0; row < [wifiInterfaces count]; row++ ) {
+ QStringList previous = accessPointConfigurations.keys();
- CWInterface *wifiInterface = [CWInterface interfaceWithName: [wifiInterfaces objectAtIndex:row]];
- NSString *nsInterfaceName = [wifiInterface name];
-// add user configured system networks
- SCDynamicStoreRef dynRef = SCDynamicStoreCreate(kCFAllocatorSystemDefault, (CFStringRef)@"Qt corewlan", nil, nil);
- NSDictionary *airportPlist = (NSDictionary *)SCDynamicStoreCopyValue(dynRef, (CFStringRef)[[NSString stringWithFormat:@"Setup:/Network/Interface/%@/AirPort", nsInterfaceName] autorelease]);
- CFRelease(dynRef);
+ QList<QNetworkConfigurationPrivate *> foundConfigurations = scanThread->getConfigurations();
+ while (!foundConfigurations.isEmpty()) {
+ QNetworkConfigurationPrivate *cpPriv = foundConfigurations.takeFirst();
- NSDictionary *prefNetDict = [airportPlist objectForKey:@"PreferredNetworks"];
+ previous.removeAll(cpPriv->id);
- NSArray *thisSsidarray = [prefNetDict valueForKey:@"SSID_STR"];
- for(NSString *ssidkey in thisSsidarray) {
- QString thisSsid = qt_mac_NSStringToQString(ssidkey);
- if(!userProfiles.contains(thisSsid)) {
- QMap <QString,QString> map;
- map.insert(thisSsid, qt_mac_NSStringToQString(nsInterfaceName));
- userProfiles.insert(thisSsid, map);
+ if (accessPointConfigurations.contains(cpPriv->id)) {
+ QNetworkConfigurationPrivatePointer ptr = accessPointConfigurations.value(cpPriv->id);
+
+ bool changed = false;
+
+ ptr->mutex.lock();
+
+ if (ptr->isValid != cpPriv->isValid) {
+ ptr->isValid = cpPriv->isValid;
+ changed = true;
}
- }
- CFRelease(airportPlist);
- // 802.1X user profiles
- QString userProfilePath = QDir::homePath() + "/Library/Preferences/com.apple.eap.profiles.plist";
- NSDictionary* eapDict = [[NSDictionary alloc] initWithContentsOfFile:qt_mac_QStringToNSString(userProfilePath)];
- NSString *profileStr= @"Profiles";
- NSString *nameStr = @"UserDefinedName";
- NSString *networkSsidStr = @"Wireless Network";
- for (id profileKey in eapDict) {
- if ([profileStr isEqualToString:profileKey]) {
- NSDictionary *itemDict = [eapDict objectForKey:profileKey];
- for (id itemKey in itemDict) {
+ if (ptr->name != cpPriv->name) {
+ ptr->name = cpPriv->name;
+ changed = true;
+ }
- NSInteger dictSize = [itemKey count];
- id objects[dictSize];
- id keys[dictSize];
+ if (ptr->state != cpPriv->state) {
+ ptr->state = cpPriv->state;
+ changed = true;
+ }
- [itemKey getObjects:objects andKeys:keys];
- QString networkName;
- QString ssid;
- for(int i = 0; i < dictSize; i++) {
- if([nameStr isEqualToString:keys[i]]) {
- networkName = qt_mac_NSStringToQString(objects[i]);
- }
- if([networkSsidStr isEqualToString:keys[i]]) {
- ssid = qt_mac_NSStringToQString(objects[i]);
- }
- if(!userProfiles.contains(networkName)
- && !ssid.isEmpty()) {
- QMap<QString,QString> map;
- map.insert(ssid, qt_mac_NSStringToQString(nsInterfaceName));
- userProfiles.insert(networkName, map);
- }
- }
- }
- [itemDict release];
+ ptr->mutex.unlock();
+
+ if (changed) {
+ locker.unlock();
+ emit configurationChanged(ptr);
+ locker.relock();
}
+
+ delete cpPriv;
+ } else {
+ QNetworkConfigurationPrivatePointer ptr(cpPriv);
+
+ accessPointConfigurations.insert(ptr->id, ptr);
+
+ locker.unlock();
+ emit configurationAdded(ptr);
+ locker.relock();
}
- [eapDict release];
}
+
+ while (!previous.isEmpty()) {
+ QNetworkConfigurationPrivatePointer ptr =
+ accessPointConfigurations.take(previous.takeFirst());
+
+ locker.unlock();
+ emit configurationRemoved(ptr);
+ locker.relock();
+ }
+
+ locker.unlock();
+ emit updateCompleted();
+
}
-QT_END_NAMESPACE
-#endif // QT_NO_BEARERMANAGEMENT
+QT_END_NAMESPACE
diff --git a/src/plugins/bearer/generic/qgenericengine.cpp b/src/plugins/bearer/generic/qgenericengine.cpp
index 41ff3e0..652fe4a 100644
--- a/src/plugins/bearer/generic/qgenericengine.cpp
+++ b/src/plugins/bearer/generic/qgenericengine.cpp
@@ -177,6 +177,11 @@ void QGenericEngine::disconnectFromId(const QString &id)
emit connectionError(id, OperationNotSupported);
}
+void QGenericEngine::initialize()
+{
+ doRequestUpdate();
+}
+
void QGenericEngine::requestUpdate()
{
doRequestUpdate();
diff --git a/src/plugins/bearer/generic/qgenericengine.h b/src/plugins/bearer/generic/qgenericengine.h
index 82d22af..cdbbc9d 100644
--- a/src/plugins/bearer/generic/qgenericengine.h
+++ b/src/plugins/bearer/generic/qgenericengine.h
@@ -70,6 +70,7 @@ public:
void connectToId(const QString &id);
void disconnectFromId(const QString &id);
+ Q_INVOKABLE void initialize();
Q_INVOKABLE void requestUpdate();
QNetworkSession::State sessionStateForId(const QString &id);
diff --git a/src/plugins/bearer/icd/qicdengine.cpp b/src/plugins/bearer/icd/qicdengine.cpp
index fc9b469..9d1bfab 100644
--- a/src/plugins/bearer/icd/qicdengine.cpp
+++ b/src/plugins/bearer/icd/qicdengine.cpp
@@ -225,8 +225,6 @@ QIcdEngine::QIcdEngine(QObject *parent)
: QBearerEngine(parent), iapMonitor(new IapMonitor), m_dbusInterface(0),
firstUpdate(true), m_scanGoingOn(false)
{
- QMetaObject::invokeMethod(this, "doRequestUpdate", Qt::QueuedConnection);
- init();
}
QIcdEngine::~QIcdEngine()
@@ -243,8 +241,10 @@ QNetworkConfigurationManager::Capabilities QIcdEngine::capabilities() const
QNetworkConfigurationManager::NetworkSessionRequired;
}
-void QIcdEngine::init()
+void QIcdEngine::initialize()
{
+ QMutexLocker locker(&mutex);
+
// Setup DBus Interface for ICD
m_dbusInterface = new QDBusInterface(ICD_DBUS_API_INTERFACE,
ICD_DBUS_API_PATH,
@@ -272,6 +272,8 @@ void QIcdEngine::init()
QNetworkConfigurationPrivatePointer ptr(cpPriv);
userChoiceConfigurations.insert(cpPriv->id, ptr);
+
+ doRequestUpdate();
}
static inline QString network_attrs_to_security(uint network_attrs)
diff --git a/src/plugins/bearer/icd/qicdengine.h b/src/plugins/bearer/icd/qicdengine.h
index 841874f..2f9f8ed 100644
--- a/src/plugins/bearer/icd/qicdengine.h
+++ b/src/plugins/bearer/icd/qicdengine.h
@@ -91,6 +91,7 @@ public:
bool hasIdentifier(const QString &id);
+ Q_INVOKABLE void initialize();
Q_INVOKABLE void requestUpdate();
QNetworkConfigurationManager::Capabilities capabilities() const;
@@ -123,7 +124,6 @@ public:
emit configurationChanged(ptr);
}
- void init();
void cleanup();
void addConfiguration(QString &iap_id);
diff --git a/src/plugins/bearer/nativewifi/qnativewifiengine.cpp b/src/plugins/bearer/nativewifi/qnativewifiengine.cpp
index e796df3..9b6ffa0 100644
--- a/src/plugins/bearer/nativewifi/qnativewifiengine.cpp
+++ b/src/plugins/bearer/nativewifi/qnativewifiengine.cpp
@@ -100,8 +100,6 @@ QNativeWifiEngine::QNativeWifiEngine(QObject *parent)
if (result != ERROR_SUCCESS)
qDebug("%s: WlanRegisterNotification failed with error %ld\n", __FUNCTION__, result);
#endif
-
- scanComplete();
}
QNativeWifiEngine::~QNativeWifiEngine()
@@ -472,6 +470,11 @@ void QNativeWifiEngine::disconnectFromId(const QString &id)
}
}
+void QNativeWifiEngine::initialize()
+{
+ scanComplete();
+}
+
void QNativeWifiEngine::requestUpdate()
{
QMutexLocker locker(&mutex);
diff --git a/src/plugins/bearer/nativewifi/qnativewifiengine.h b/src/plugins/bearer/nativewifi/qnativewifiengine.h
index 77764e4..3b21985 100644
--- a/src/plugins/bearer/nativewifi/qnativewifiengine.h
+++ b/src/plugins/bearer/nativewifi/qnativewifiengine.h
@@ -80,6 +80,7 @@ public:
void connectToId(const QString &id);
void disconnectFromId(const QString &id);
+ Q_INVOKABLE void initialize();
Q_INVOKABLE void requestUpdate();
QNetworkSession::State sessionStateForId(const QString &id);
diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp
index 13b2252..3ebc356 100644
--- a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp
+++ b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp
@@ -93,16 +93,16 @@ QNetworkManagerEngine::QNetworkManagerEngine(QObject *parent)
userSettings->setConnections();
connect(userSettings, SIGNAL(newConnection(QDBusObjectPath)),
this, SLOT(newConnection(QDBusObjectPath)));
-
- QMetaObject::invokeMethod(this, "init", Qt::QueuedConnection);
}
QNetworkManagerEngine::~QNetworkManagerEngine()
{
}
-void QNetworkManagerEngine::init()
+void QNetworkManagerEngine::initialize()
{
+ QMutexLocker locker(&mutex);
+
// Get current list of access points.
foreach (const QDBusObjectPath &devicePath, interface->getDevices())
deviceAdded(devicePath);
diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.h b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.h
index 7f8badb..8e95a2c 100644
--- a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.h
+++ b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.h
@@ -73,8 +73,6 @@ public:
QNetworkManagerEngine(QObject *parent = 0);
~QNetworkManagerEngine();
- Q_INVOKABLE void init();
-
bool networkManagerAvailable() const;
QString getInterfaceFromId(const QString &id);
@@ -85,6 +83,7 @@ public:
void connectToId(const QString &id);
void disconnectFromId(const QString &id);
+ Q_INVOKABLE void initialize();
Q_INVOKABLE void requestUpdate();
QNetworkSession::State sessionStateForId(const QString &id);
diff --git a/src/plugins/bearer/symbian/symbianengine.cpp b/src/plugins/bearer/symbian/symbianengine.cpp
index c629d02..8e9675e 100644
--- a/src/plugins/bearer/symbian/symbianengine.cpp
+++ b/src/plugins/bearer/symbian/symbianengine.cpp
@@ -137,7 +137,12 @@ SymbianEngine::SymbianEngine(QObject *parent)
return;
}
#endif
-
+}
+
+void SymbianEngine::initialize()
+{
+ QMutexLocker locker(&mutex);
+
SymbianNetworkConfigurationPrivate *cpPriv = new SymbianNetworkConfigurationPrivate;
cpPriv->name = "UserChoice";
cpPriv->bearer = SymbianNetworkConfigurationPrivate::BearerUnknown;
diff --git a/src/plugins/bearer/symbian/symbianengine.h b/src/plugins/bearer/symbian/symbianengine.h
index dfd12bd..afb37de 100644
--- a/src/plugins/bearer/symbian/symbianengine.h
+++ b/src/plugins/bearer/symbian/symbianengine.h
@@ -110,6 +110,7 @@ public:
bool hasIdentifier(const QString &id);
+ Q_INVOKABLE void initialize();
Q_INVOKABLE void requestUpdate();
QNetworkConfigurationManager::Capabilities capabilities() const;
diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp
index 0b8a2e4..03d535c 100644
--- a/src/script/api/qscriptengine.cpp
+++ b/src/script/api/qscriptengine.cpp
@@ -796,7 +796,7 @@ JSC::JSValue JSC_HOST_CALL functionQsTr(JSC::ExecState *exec, JSC::JSObject*, JS
JSC::UString context;
// The first non-empty source URL in the call stack determines the translation context.
{
- JSC::ExecState *frame = exec->removeHostCallFrameFlag();
+ JSC::ExecState *frame = exec->callerFrame()->removeHostCallFrameFlag();
while (frame) {
if (frame->codeBlock() && frame->codeBlock()->source()
&& !frame->codeBlock()->source()->url().isEmpty()) {
@@ -3404,7 +3404,7 @@ void QScriptEngine::installTranslatorFunctions(const QScriptValue &object)
// unsigned attribs = JSC::DontEnum;
JSC::asObject(jscObject)->putDirectFunction(exec, new (exec)JSC::NativeFunctionWrapper(exec, glob->prototypeFunctionStructure(), 5, JSC::Identifier(exec, "qsTranslate"), QScript::functionQsTranslate));
JSC::asObject(jscObject)->putDirectFunction(exec, new (exec)JSC::NativeFunctionWrapper(exec, glob->prototypeFunctionStructure(), 2, JSC::Identifier(exec, "QT_TRANSLATE_NOOP"), QScript::functionQsTranslateNoOp));
- JSC::asObject(jscObject)->putDirectFunction(exec, new (exec)JSC::PrototypeFunction(exec, glob->prototypeFunctionStructure(), 3, JSC::Identifier(exec, "qsTr"), QScript::functionQsTr));
+ JSC::asObject(jscObject)->putDirectFunction(exec, new (exec)JSC::NativeFunctionWrapper(exec, glob->prototypeFunctionStructure(), 3, JSC::Identifier(exec, "qsTr"), QScript::functionQsTr));
JSC::asObject(jscObject)->putDirectFunction(exec, new (exec)JSC::NativeFunctionWrapper(exec, glob->prototypeFunctionStructure(), 1, JSC::Identifier(exec, "QT_TR_NOOP"), QScript::functionQsTrNoOp));
glob->stringPrototype()->putDirectFunction(exec, new (exec)JSC::NativeFunctionWrapper(exec, glob->prototypeFunctionStructure(), 1, JSC::Identifier(exec, "arg"), QScript::stringProtoFuncArg));
diff --git a/src/script/bridge/qscriptqobject.cpp b/src/script/bridge/qscriptqobject.cpp
index 0477454..5e4f097 100644
--- a/src/script/bridge/qscriptqobject.cpp
+++ b/src/script/bridge/qscriptqobject.cpp
@@ -35,6 +35,7 @@
#include "Error.h"
#include "PrototypeFunction.h"
+#include "NativeFunctionWrapper.h"
#include "PropertyNameArray.h"
#include "JSFunction.h"
#include "JSString.h"
@@ -1753,9 +1754,9 @@ QObjectPrototype::QObjectPrototype(JSC::ExecState* exec, WTF::PassRefPtr<JSC::St
| QScriptEngine::ExcludeSuperClassProperties
| QScriptEngine::ExcludeChildObjects));
- putDirectFunction(exec, new (exec) JSC::PrototypeFunction(exec, prototypeFunctionStructure, /*length=*/0, exec->propertyNames().toString, qobjectProtoFuncToString), JSC::DontEnum);
- putDirectFunction(exec, new (exec) JSC::PrototypeFunction(exec, prototypeFunctionStructure, /*length=*/1, JSC::Identifier(exec, "findChild"), qobjectProtoFuncFindChild), JSC::DontEnum);
- putDirectFunction(exec, new (exec) JSC::PrototypeFunction(exec, prototypeFunctionStructure, /*length=*/1, JSC::Identifier(exec, "findChildren"), qobjectProtoFuncFindChildren), JSC::DontEnum);
+ putDirectFunction(exec, new (exec) JSC::NativeFunctionWrapper(exec, prototypeFunctionStructure, /*length=*/0, exec->propertyNames().toString, qobjectProtoFuncToString), JSC::DontEnum);
+ putDirectFunction(exec, new (exec) JSC::NativeFunctionWrapper(exec, prototypeFunctionStructure, /*length=*/1, JSC::Identifier(exec, "findChild"), qobjectProtoFuncFindChild), JSC::DontEnum);
+ putDirectFunction(exec, new (exec) JSC::NativeFunctionWrapper(exec, prototypeFunctionStructure, /*length=*/1, JSC::Identifier(exec, "findChildren"), qobjectProtoFuncFindChildren), JSC::DontEnum);
this->structure()->setHasGetterSetterProperties(true);
}
@@ -2015,7 +2016,7 @@ QMetaObjectPrototype::QMetaObjectPrototype(
JSC::Structure* prototypeFunctionStructure)
: QMetaObjectWrapperObject(exec, StaticQtMetaObject::get(), /*ctor=*/JSC::JSValue(), structure)
{
- putDirectFunction(exec, new (exec) JSC::PrototypeFunction(exec, prototypeFunctionStructure, /*length=*/0, JSC::Identifier(exec, "className"), qmetaobjectProtoFuncClassName), JSC::DontEnum);
+ putDirectFunction(exec, new (exec) JSC::NativeFunctionWrapper(exec, prototypeFunctionStructure, /*length=*/0, JSC::Identifier(exec, "className"), qmetaobjectProtoFuncClassName), JSC::DontEnum);
}
static const uint qt_meta_data_QObjectConnectionManager[] = {
diff --git a/src/script/bridge/qscriptvariant.cpp b/src/script/bridge/qscriptvariant.cpp
index b2dd3b0..93459a8 100644
--- a/src/script/bridge/qscriptvariant.cpp
+++ b/src/script/bridge/qscriptvariant.cpp
@@ -29,6 +29,8 @@
#include "Error.h"
#include "PrototypeFunction.h"
+#include "JSFunction.h"
+#include "NativeFunctionWrapper.h"
#include "JSString.h"
namespace JSC
@@ -139,8 +141,8 @@ QVariantPrototype::QVariantPrototype(JSC::ExecState* exec, WTF::PassRefPtr<JSC::
{
setDelegate(new QVariantDelegate(QVariant()));
- putDirectFunction(exec, new (exec) JSC::PrototypeFunction(exec, prototypeFunctionStructure, 0, exec->propertyNames().toString, variantProtoFuncToString), JSC::DontEnum);
- putDirectFunction(exec, new (exec) JSC::PrototypeFunction(exec, prototypeFunctionStructure, 0, exec->propertyNames().valueOf, variantProtoFuncValueOf), JSC::DontEnum);
+ putDirectFunction(exec, new (exec) JSC::NativeFunctionWrapper(exec, prototypeFunctionStructure, 0, exec->propertyNames().toString, variantProtoFuncToString), JSC::DontEnum);
+ putDirectFunction(exec, new (exec) JSC::NativeFunctionWrapper(exec, prototypeFunctionStructure, 0, exec->propertyNames().valueOf, variantProtoFuncValueOf), JSC::DontEnum);
}
diff --git a/tests/auto/qdiriterator/tst_qdiriterator.cpp b/tests/auto/qdiriterator/tst_qdiriterator.cpp
index c1db8f2..1a873b8 100644
--- a/tests/auto/qdiriterator/tst_qdiriterator.cpp
+++ b/tests/auto/qdiriterator/tst_qdiriterator.cpp
@@ -85,11 +85,13 @@ private: // convenience functions
return false;
}
- bool createFile(const QString &fileName)
+ enum Cleanup { DoDelete, DontDelete };
+ bool createFile(const QString &fileName, Cleanup cleanup = DoDelete)
{
QFile file(fileName);
if (file.open(QIODevice::WriteOnly)) {
- createdFiles << fileName;
+ if (cleanup == DoDelete)
+ createdFiles << fileName;
return true;
}
return false;
@@ -131,9 +133,9 @@ tst_QDirIterator::tst_QDirIterator()
createDirectory("entrylist");
createDirectory("entrylist/directory");
- createFile("entrylist/file");
+ createFile("entrylist/file", DontDelete);
createFile("entrylist/writable");
- createFile("entrylist/directory/dummy");
+ createFile("entrylist/directory/dummy", DontDelete);
createDirectory("recursiveDirs");
createDirectory("recursiveDirs/dir1");
diff --git a/tests/auto/qhostinfo/tst_qhostinfo.cpp b/tests/auto/qhostinfo/tst_qhostinfo.cpp
index 4282062..c336746 100644
--- a/tests/auto/qhostinfo/tst_qhostinfo.cpp
+++ b/tests/auto/qhostinfo/tst_qhostinfo.cpp
@@ -128,6 +128,7 @@ private slots:
void threadSafety();
void multipleSameLookups();
+ void multipleDifferentLookups_data();
void multipleDifferentLookups();
void cache();
@@ -441,36 +442,46 @@ void tst_QHostInfo::multipleSameLookups()
for (int i = 0; i < COUNT; i++)
QHostInfo::lookupHost("localhost", this, SLOT(resultsReady(const QHostInfo)));
- QTRY_VERIFY(lookupsDoneCounter == COUNT);
-
- // spin two seconds more to see if it is not more :)
- QTestEventLoop::instance().enterLoop(2);
- QTRY_VERIFY(lookupsDoneCounter == COUNT);
+ QElapsedTimer timer;
+ timer.start();
+ while (timer.elapsed() < 10000 && lookupsDoneCounter < COUNT) {
+ QTestEventLoop::instance().enterLoop(2);
+ }
+ QCOMPARE(lookupsDoneCounter, COUNT);
}
// this test is for the multi-threaded QHostInfo rewrite. It is about getting results at all,
// not about getting correct IPs
+void tst_QHostInfo::multipleDifferentLookups_data()
+{
+ QTest::addColumn<int>("repeats");
+ QTest::newRow("1") << 1;
+ QTest::newRow("2") << 2;
+ QTest::newRow("5") << 5;
+ QTest::newRow("10") << 10;
+}
+
void tst_QHostInfo::multipleDifferentLookups()
{
QStringList hostnameList;
hostnameList << "www.ovi.com" << "www.nokia.com" << "qt.nokia.com" << "www.trolltech.com" << "troll.no"
- << "www.qtcentre.org" << "forum.nokia.com" << "www.forum.nokia.com" << "wiki.forum.nokia.com"
- << "www.nokia.no" << "nokia.de" << "127.0.0.1" << "----";
+ << "www.qtcentre.org" << "forum.nokia.com" << "www.nokia.com" << "wiki.forum.nokia.com"
+ << "www.nokia.com" << "nokia.de" << "127.0.0.1" << "----";
+ QFETCH(int, repeats);
const int COUNT = hostnameList.size();
lookupsDoneCounter = 0;
for (int i = 0; i < hostnameList.size(); i++)
- QHostInfo::lookupHost(hostnameList.at(i), this, SLOT(resultsReady(const QHostInfo)));
-
- // give some time
- QTestEventLoop::instance().enterLoop(5);
- // try_verify gives some more time
- QTRY_VERIFY(lookupsDoneCounter == COUNT);
+ for (int j = 0; j < repeats; ++j)
+ QHostInfo::lookupHost(hostnameList.at(i), this, SLOT(resultsReady(const QHostInfo)));
- // spin two seconds more to see if it is not more than expected
- QTestEventLoop::instance().enterLoop(2);
- QTRY_VERIFY(lookupsDoneCounter == COUNT);
+ QElapsedTimer timer;
+ timer.start();
+ while (timer.elapsed() < 10000 && lookupsDoneCounter < repeats*COUNT) {
+ QTestEventLoop::instance().enterLoop(2);
+ }
+ QCOMPARE(lookupsDoneCounter, repeats*COUNT);
}
void tst_QHostInfo::cache()
@@ -517,7 +528,7 @@ void tst_QHostInfo::resultsReady(const QHostInfo &hi)
lookupDone = true;
lookupResults = hi;
lookupsDoneCounter++;
- QTestEventLoop::instance().exitLoop();
+ QMetaObject::invokeMethod(&QTestEventLoop::instance(), "exitLoop", Qt::QueuedConnection);
}
QTEST_MAIN(tst_QHostInfo)
diff --git a/tests/auto/qitemmodel/tst_qitemmodel.cpp b/tests/auto/qitemmodel/tst_qitemmodel.cpp
index f466045..d36df9c 100644
--- a/tests/auto/qitemmodel/tst_qitemmodel.cpp
+++ b/tests/auto/qitemmodel/tst_qitemmodel.cpp
@@ -452,7 +452,7 @@ void checkChildren(QAbstractItemModel *currentModel, const QModelIndex &parent,
QCOMPARE(index.column(), c);
QCOMPARE(currentModel->data(index, Qt::DisplayRole).isValid(), true);
- // If the next test fails here is some somewhat usefull debug you play with.
+ // If the next test fails here is some somewhat useful debug you play with.
/*
if (currentModel->parent(index) != parent) {
qDebug() << r << c << currentDepth << currentModel->data(index).toString()
diff --git a/tests/auto/qthread/tst_qthread.cpp b/tests/auto/qthread/tst_qthread.cpp
index 9a4397e..7a5b053 100644
--- a/tests/auto/qthread/tst_qthread.cpp
+++ b/tests/auto/qthread/tst_qthread.cpp
@@ -442,9 +442,9 @@ void tst_QThread::exit()
thread2.object = 0;
thread2.code = 53;
thread2.result = 0;
+ QMutexLocker locker2(&thread2.mutex);
thread2.start();
thread2.exit(thread2.code);
- QMutexLocker locker2(&thread2.mutex);
thread2.cond.wait(locker2.mutex());
QVERIFY(thread2.wait(five_minutes));
QCOMPARE(thread2.result, thread2.code);
@@ -514,9 +514,9 @@ void tst_QThread::quit()
Quit_Thread thread2;
thread2.object = 0;
thread2.result = -1;
+ QMutexLocker locker2(&thread2.mutex);
thread2.start();
thread2.quit();
- QMutexLocker locker2(&thread2.mutex);
thread2.cond.wait(locker2.mutex());
QVERIFY(thread2.wait(five_minutes));
QCOMPARE(thread2.result, 0);
diff --git a/tools/assistant/tools/assistant/helpviewer.cpp b/tools/assistant/tools/assistant/helpviewer.cpp
index 0c51a02..22b3f30 100644
--- a/tools/assistant/tools/assistant/helpviewer.cpp
+++ b/tools/assistant/tools/assistant/helpviewer.cpp
@@ -52,6 +52,10 @@
QT_BEGIN_NAMESPACE
+QString AbstractHelpViewer::DocPath = QString::fromLatin1("qthelp://com."
+ "trolltech.qt.%1/").arg(QString(QLatin1String(QT_VERSION_STR))
+ .replace(QLatin1String("."), QLatin1String("")));
+
QString AbstractHelpViewer::AboutBlank =
QCoreApplication::translate("HelpViewer", "<title>about:blank</title>");
@@ -128,11 +132,12 @@ bool AbstractHelpViewer::canOpenPage(const QString &url)
return !mimeFromUrl(url).isEmpty();
}
-QString AbstractHelpViewer::mimeFromUrl(const QString &url)
+QString AbstractHelpViewer::mimeFromUrl(const QUrl &url)
{
TRACE_OBJ
- const int index = url.lastIndexOf(QLatin1Char('.'));
- const QByteArray &ext = url.mid(index).toUtf8().toLower();
+ const QString &path = url.path();
+ const int index = path.lastIndexOf(QLatin1Char('.'));
+ const QByteArray &ext = path.mid(index).toUtf8().toLower();
const ExtensionMap *e = extensionMap;
while (e->extension) {
diff --git a/tools/assistant/tools/assistant/helpviewer.h b/tools/assistant/tools/assistant/helpviewer.h
index 6f1f48d..80a6f87 100644
--- a/tools/assistant/tools/assistant/helpviewer.h
+++ b/tools/assistant/tools/assistant/helpviewer.h
@@ -67,13 +67,14 @@ public:
virtual bool handleForwardBackwardMouseButtons(QMouseEvent *e) = 0;
+ static QString DocPath;
static QString AboutBlank;
static QString LocalHelpFile;
static QString PageNotFoundMessage;
static bool isLocalUrl(const QUrl &url);
static bool canOpenPage(const QString &url);
- static QString mimeFromUrl(const QString &url);
+ static QString mimeFromUrl(const QUrl &url);
static bool launchWithExternalApp(const QUrl &url);
};
diff --git a/tools/assistant/tools/assistant/helpviewer_qwv.cpp b/tools/assistant/tools/assistant/helpviewer_qwv.cpp
index db1cd58..a19b29a 100644
--- a/tools/assistant/tools/assistant/helpviewer_qwv.cpp
+++ b/tools/assistant/tools/assistant/helpviewer_qwv.cpp
@@ -129,13 +129,27 @@ QNetworkReply *HelpNetworkAccessManager::createRequest(Operation /*op*/,
const QNetworkRequest &request, QIODevice* /*outgoingData*/)
{
TRACE_OBJ
- const QUrl &url = request.url();
- const QString &mimeType = AbstractHelpViewer::mimeFromUrl(url.toString());
-
+ QString url = request.url().toString();
HelpEngineWrapper &helpEngine = HelpEngineWrapper::instance();
+
+ // TODO: For some reason the url to load is already wrong (passed from webkit)
+ // though the css file and the references inside should work that way. One
+ // possible problem might be that the css is loaded at the same level as the
+ // html, thus a path inside the css like (../images/foo.png) might cd out of
+ // the virtual folder
+ if (!helpEngine.findFile(url).isValid()) {
+ if (url.startsWith(AbstractHelpViewer::DocPath)) {
+ if (!url.startsWith(AbstractHelpViewer::DocPath + QLatin1String("qdoc/"))) {
+ url = url.replace(AbstractHelpViewer::DocPath,
+ AbstractHelpViewer::DocPath + QLatin1String("qdoc/"));
+ }
+ }
+ }
+
+ const QString &mimeType = AbstractHelpViewer::mimeFromUrl(url);
const QByteArray &data = helpEngine.findFile(url).isValid()
? helpEngine.fileData(url)
- : AbstractHelpViewer::PageNotFoundMessage.arg(url.toString()).toUtf8();
+ : AbstractHelpViewer::PageNotFoundMessage.arg(url).toUtf8();
return new HelpNetworkReply(request, data, mimeType.isEmpty()
? QLatin1String("application/octet-stream") : mimeType);
}
diff --git a/tools/designer/src/components/propertyeditor/propertyeditor.cpp b/tools/designer/src/components/propertyeditor/propertyeditor.cpp
index 86d7bdf..a8ca8ad 100644
--- a/tools/designer/src/components/propertyeditor/propertyeditor.cpp
+++ b/tools/designer/src/components/propertyeditor/propertyeditor.cpp
@@ -135,7 +135,7 @@ QSize ElidingLabel::sizeHint() const
return size;
}
-void ElidingLabel::paintEvent(QPaintEvent *e) {
+void ElidingLabel::paintEvent(QPaintEvent *) {
QPainter painter(this);
painter.setPen(QColor(0, 0, 0, 60));
painter.setBrush(QColor(255, 255, 255, 40));
diff --git a/tools/designer/src/lib/shared/filterwidget.cpp b/tools/designer/src/lib/shared/filterwidget.cpp
index f485346..07af901 100644
--- a/tools/designer/src/lib/shared/filterwidget.cpp
+++ b/tools/designer/src/lib/shared/filterwidget.cpp
@@ -80,8 +80,11 @@ void IconButton::paintEvent(QPaintEvent *)
QPainter painter(this);
// Note isDown should really use the active state but in most styles
// this has no proper feedback
- QPixmap iconpixmap = icon().pixmap(ICONBUTTON_SIZE, ICONBUTTON_SIZE, isDown() ?
- QIcon::Selected : QIcon::Normal);
+ QIcon::Mode state = QIcon::Disabled;
+ if (isEnabled())
+ state = isDown() ? QIcon::Selected : QIcon::Normal;
+ QPixmap iconpixmap = icon().pixmap(QSize(ICONBUTTON_SIZE, ICONBUTTON_SIZE),
+ state, QIcon::Off);
QRect pixmapRect = QRect(0, 0, iconpixmap.width(), iconpixmap.height());
pixmapRect.moveCenter(rect().center());
painter.setOpacity(m_fader);
@@ -204,9 +207,12 @@ QString FilterWidget::text() const
return m_editor->text();
}
-void FilterWidget::checkButton(const QString &)
+void FilterWidget::checkButton(const QString &text)
{
- m_button->animateShow(!m_editor->text().isEmpty());
+ static QString oldtext;
+ if (oldtext.isEmpty() || text.isEmpty())
+ m_button->animateShow(!m_editor->text().isEmpty());
+ oldtext = text;
}
void FilterWidget::reset()
diff --git a/tools/pixeltool/qpixeltool.cpp b/tools/pixeltool/qpixeltool.cpp
index c684688..f64dfba 100644
--- a/tools/pixeltool/qpixeltool.cpp
+++ b/tools/pixeltool/qpixeltool.cpp
@@ -356,7 +356,7 @@ void QPixelTool::contextMenuEvent(QContextMenuEvent *e)
freeze.setCheckable(true);
freeze.setChecked(tmpFreeze);
freeze.setShortcut(QKeySequence(Qt::Key_Space));
- QAction autoUpdate(QLatin1String("Continous update"), &menu);
+ QAction autoUpdate(QLatin1String("Continuous update"), &menu);
autoUpdate.setCheckable(true);
autoUpdate.setChecked(m_autoUpdate);
autoUpdate.setShortcut(QKeySequence(Qt::Key_A));
diff --git a/tools/qdoc3/config.h b/tools/qdoc3/config.h
index 980d1fb..c29becc 100644
--- a/tools/qdoc3/config.h
+++ b/tools/qdoc3/config.h
@@ -142,6 +142,7 @@ class Config
#define CONFIG_MACRO "macro"
#define CONFIG_NATURALLANGUAGE "naturallanguage"
#define CONFIG_OBSOLETELINKS "obsoletelinks"
+#define CONFIG_ONLINE "online"
#define CONFIG_OUTPUTDIR "outputdir"
#define CONFIG_OUTPUTENCODING "outputencoding"
#define CONFIG_OUTPUTLANGUAGE "outputlanguage"
diff --git a/tools/qdoc3/doc.cpp b/tools/qdoc3/doc.cpp
index ad4cdde..5716626 100644
--- a/tools/qdoc3/doc.cpp
+++ b/tools/qdoc3/doc.cpp
@@ -3036,7 +3036,7 @@ QString Doc::canonicalTitle(const QString &title)
QString result;
result.reserve(title.size());
- bool slurping = false;
+ bool dashAppended = false;
bool begun = false;
int lastAlnum = 0;
for (int i = 0; i != title.size(); ++i) {
@@ -3047,18 +3047,21 @@ QString Doc::canonicalTitle(const QString &title)
if (alnum) {
result += QLatin1Char(c);
begun = true;
- slurping = false;
+ dashAppended = false;
lastAlnum = result.size();
}
- else if (!slurping) {
+ else if (!dashAppended) {
if (begun)
result += QLatin1Char('-');
- slurping = true;
+ dashAppended = true;
}
+#if 0
+ // This was screwing things up.
else {
result += title[i];
lastAlnum = result.size();
}
+#endif
}
result.truncate(lastAlnum);
return result;
diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp
index a5dc7b7..bf2f724 100644
--- a/tools/qdoc3/htmlgenerator.cpp
+++ b/tools/qdoc3/htmlgenerator.cpp
@@ -204,10 +204,18 @@ static void addLink(const QString &linkTarget,
HtmlGenerator::HtmlGenerator()
- : helpProjectWriter(0), inLink(false), inContents(false),
- inSectionHeading(false), inTableHeader(false), numTableRows(0),
- threeColumnEnumValueTable(true), funcLeftParen("\\S(\\()"),
- myTree(0), slow(false), obsoleteLinks(false)
+ : helpProjectWriter(0),
+ inLink(false),
+ inContents(false),
+ inSectionHeading(false),
+ inTableHeader(false),
+ numTableRows(0),
+ threeColumnEnumValueTable(true),
+ offlineDocs(true),
+ funcLeftParen("\\S(\\()"),
+ myTree(0),
+ slow(false),
+ obsoleteLinks(false)
{
}
@@ -262,7 +270,7 @@ void HtmlGenerator::initializeGenerator(const Config &config)
HTMLGENERATOR_GENERATEMACREFS);
project = config.getString(CONFIG_PROJECT);
-
+ offlineDocs = !config.getBool(CONFIG_ONLINE);
projectDescription = config.getString(CONFIG_DESCRIPTION);
if (projectDescription.isEmpty() && !project.isEmpty())
projectDescription = project + " Reference Documentation";
@@ -406,9 +414,7 @@ void HtmlGenerator::generateTree(const Tree *tree, CodeMarker *marker)
generateIndex(fileBase, projectUrl, projectDescription);
generatePageIndex(outputDir() + "/" + fileBase + ".pageindex", marker);
- //qDebug() << "start helpProjectWriter->generate(myTree)";
helpProjectWriter->generate(myTree);
- //qDebug() << "end helpProjectWriter->generate(myTree)";
}
void HtmlGenerator::startText(const Node * /* relative */,
@@ -506,14 +512,14 @@ int HtmlGenerator::generateAtom(const Atom *atom,
out() << formattingRightMap()[ATOM_FORMATTING_TELETYPE];
break;
case Atom::Code:
- out() << "<pre>"
+ out() << "<pre class=\"highlightedCode\">"
<< trimmedTrailing(highlightedCode(indent(codeIndent,atom->string()),
marker,relative))
<< "</pre>\n";
break;
#ifdef QDOC_QML
case Atom::Qml:
- out() << "<pre>"
+ out() << "<pre class=\"highlightedCode\">"
<< trimmedTrailing(highlightedCode(indent(codeIndent,atom->string()),
marker,relative))
<< "</pre>\n";
@@ -521,7 +527,7 @@ int HtmlGenerator::generateAtom(const Atom *atom,
#endif
case Atom::CodeNew:
out() << "<p>you can rewrite it as</p>\n"
- << "<pre>"
+ << "<pre class=\"highlightedCode\">"
<< trimmedTrailing(highlightedCode(indent(codeIndent,atom->string()),
marker,relative))
<< "</pre>\n";
@@ -530,9 +536,9 @@ int HtmlGenerator::generateAtom(const Atom *atom,
out() << "<p>For example, if you have code like</p>\n";
// fallthrough
case Atom::CodeBad:
- out() << "<pre><font color=\"#404040\">"
+ out() << "<pre class=\"highlightedCode\">"
<< trimmedTrailing(protectEnc(plainCode(indent(codeIndent,atom->string()))))
- << "</font></pre>\n";
+ << "</pre>\n";
break;
case Atom::FootnoteLeft:
// ### For now
@@ -841,7 +847,7 @@ int HtmlGenerator::generateAtom(const Atom *atom,
if (atom->next() != 0)
text = atom->next()->string();
if (atom->type() == Atom::Image)
- out() << "<p align=\"center\">";
+ out() << "<p class=\"centerAlign\">";
if (fileName.isEmpty()) {
out() << "<font color=\"red\">[Missing image "
<< protectEnc(atom->string()) << "]</font>";
@@ -860,7 +866,7 @@ int HtmlGenerator::generateAtom(const Atom *atom,
case Atom::ImageText:
break;
case Atom::LegaleseLeft:
- out() << "<div style=\"padding: 0.5em; background: #e0e0e0; color: black\">";
+ out() << "<div class=\"LegaleseLeft\">";
break;
case Atom::LegaleseRight:
out() << "</div>";
@@ -902,13 +908,13 @@ int HtmlGenerator::generateAtom(const Atom *atom,
else if (atom->string() == ATOM_LIST_VALUE) {
threeColumnEnumValueTable = isThreeColumnEnumValueTable(atom);
if (threeColumnEnumValueTable) {
- out() << "<p><table class=\"valuelist\">"
+ out() << "<table class=\"valuelist\">"
<< "<tr><th>Constant</th>"
<< "<th>Value</th>"
<< "<th>Description</th></tr>\n";
}
else {
- out() << "<p><table class=\"valuelist\">"
+ out() << "<table class=\"valuelist\">"
<< "<tr><th>Constant</th><th>Value</th></tr>\n";
}
}
@@ -943,10 +949,10 @@ int HtmlGenerator::generateAtom(const Atom *atom,
else { // (atom->string() == ATOM_LIST_VALUE)
// ### Trenton
- out() << "<tr><td valign=\"top\"><tt>"
+ out() << "<tr><td class=\"topAlign\"><tt>"
<< protectEnc(plainCode(marker->markedUpEnumValue(atom->next()->string(),
relative)))
- << "</tt></td><td align=\"center\" valign=\"top\">";
+ << "</tt></td><td class=\"centerAlign topAlign\">";
QString itemValue;
if (relative->type() == Node::Enum) {
@@ -972,7 +978,7 @@ int HtmlGenerator::generateAtom(const Atom *atom,
}
else if (atom->string() == ATOM_LIST_VALUE) {
if (threeColumnEnumValueTable) {
- out() << "</td><td valign=\"top\">";
+ out() << "</td><td class=\"topAlign\">";
if (matchAhead(atom, Atom::ListItemRight))
out() << "&nbsp;";
}
@@ -1002,7 +1008,7 @@ int HtmlGenerator::generateAtom(const Atom *atom,
out() << "</dl>\n";
}
else if (atom->string() == ATOM_LIST_VALUE) {
- out() << "</table></p>\n";
+ out() << "</table>\n";
}
else {
out() << "</ol>\n";
@@ -1083,29 +1089,28 @@ int HtmlGenerator::generateAtom(const Atom *atom,
}
if (!atom->string().isEmpty()) {
if (atom->string().contains("%"))
- out() << "<p><table class=\"generic\" width=\"" << atom->string() << "\" "
- << "align=\"center\">\n";
+ out() << "<table class=\"generic centerAlign\" width=\"" << atom->string() << "\">\n ";
else {
- out() << "<p><table class=\"generic\" align=\"center\">\n";
+ out() << "<table class=\"generic centerAlign\">\n";
}
}
else {
- out() << "<p><table class=\"generic\" align=\"center\">\n";
+ out() << "<table class=\"generic centerAlign\">\n";
}
numTableRows = 0;
break;
case Atom::TableRight:
- out() << "</table></p>\n";
+ out() << "</table>\n";
break;
case Atom::TableHeaderLeft:
- out() << "<thead><tr valign=\"top\" class=\"qt-style\">";
+ out() << "<thead><tr class=\"qt-style topAlign\">";
inTableHeader = true;
break;
case Atom::TableHeaderRight:
out() << "</tr>";
if (matchAhead(atom, Atom::TableHeaderLeft)) {
skipAhead = 1;
- out() << "\n<tr valign=\"top\" class=\"qt-style\">";
+ out() << "\n<tr class=\"qt-style topAlign\">";
}
else {
out() << "</thead>\n";
@@ -1114,9 +1119,9 @@ int HtmlGenerator::generateAtom(const Atom *atom,
break;
case Atom::TableRowLeft:
if (++numTableRows % 2 == 1)
- out() << "<tr valign=\"top\" class=\"odd\">";
+ out() << "<tr class=\"odd topAlign\">";
else
- out() << "<tr valign=\"top\" class=\"even\">";
+ out() << "<tr class=\"even topAlign\">";
break;
case Atom::TableRowRight:
out() << "</tr>\n";
@@ -1181,11 +1186,11 @@ int HtmlGenerator::generateAtom(const Atom *atom,
out() << "<a name=\"" << Doc::canonicalTitle(atom->string()) << "\"></a>";
break;
case Atom::UnhandledFormat:
- out() << "<font color=\"red\"><b>&lt;Missing HTML&gt;</b></font>";
+ out() << "<b class=\"redFont\">&lt;Missing HTML&gt;</b>";
break;
case Atom::UnknownCommand:
- out() << "<font color=\"red\"><b><code>\\" << protectEnc(atom->string())
- << "</code></b></font>";
+ out() << "<b class=\"redFont\"><code>\\" << protectEnc(atom->string())
+ << "</code></b>";
break;
#ifdef QDOC_QML
case Atom::QmlText:
@@ -1737,146 +1742,17 @@ void HtmlGenerator::generateHeader(const QString& title,
out() << " <script src=\"scripts/jquery.js\" type=\"text/javascript\"></script>\n";
out() << " <script src=\"scripts/functions.js\" type=\"text/javascript\"></script>\n";
out() << "</head>\n";
-
-#if 0
- out() << "<!DOCTYPE html\n"
- " PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"DTD/xhtml1-strict.dtd\">\n";
- out() << QString("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"%1\" lang=\"%1\">\n").arg(naturalLanguage);
-
- QString shortVersion;
- if ((project != "Qtopia") && (project != "Qt Extended")) {
- shortVersion = project + " " + shortVersion + ": ";
- if (node && !node->doc().location().isEmpty())
- out() << "<!-- " << node->doc().location().fileName() << " -->\n";
-
- shortVersion = myTree->version();
- if (shortVersion.count(QChar('.')) == 2)
- shortVersion.truncate(shortVersion.lastIndexOf(QChar('.')));
- if (!shortVersion.isEmpty()) {
- if (project == "QSA")
- shortVersion = "QSA " + shortVersion + ": ";
- else
- shortVersion = "Qt " + shortVersion + ": ";
- }
- }
-
- out() << "<head>\n"
- " <title>" << shortVersion << protectEnc(title) << "</title>\n";
- out() << QString("<meta http-equiv=\"Content-type\" content=\"text/html; charset=%1\" />").arg(outputEncoding);
-
- if (!style.isEmpty())
- out() << " <style type=\"text/css\">" << style << "</style>\n";
-
- const QMap<QString, QString> &metaMap = node->doc().metaTagMap();
- if (!metaMap.isEmpty()) {
- QMapIterator<QString, QString> i(metaMap);
- while (i.hasNext()) {
- i.next();
- out() << " <meta name=\"" << protectEnc(i.key()) << "\" contents=\""
- << protectEnc(i.value()) << "\" />\n";
- }
- }
-
- navigationLinks.clear();
-
- if (node && !node->links().empty()) {
- QPair<QString,QString> linkPair;
- QPair<QString,QString> anchorPair;
- const Node *linkNode;
-
- if (node->links().contains(Node::PreviousLink)) {
- linkPair = node->links()[Node::PreviousLink];
- linkNode = findNodeForTarget(linkPair.first, node, marker);
- if (!linkNode || linkNode == node)
- anchorPair = linkPair;
- else
- anchorPair = anchorForNode(linkNode);
-
- out() << " <link rel=\"prev\" href=\""
- << anchorPair.first << "\" />\n";
-
- navigationLinks += "[Previous: <a href=\"" + anchorPair.first + "\">";
- if (linkPair.first == linkPair.second && !anchorPair.second.isEmpty())
- navigationLinks += protectEnc(anchorPair.second);
- else
- navigationLinks += protectEnc(linkPair.second);
- navigationLinks += "</a>]\n";
- }
- if (node->links().contains(Node::ContentsLink)) {
- linkPair = node->links()[Node::ContentsLink];
- linkNode = findNodeForTarget(linkPair.first, node, marker);
- if (!linkNode || linkNode == node)
- anchorPair = linkPair;
- else
- anchorPair = anchorForNode(linkNode);
-
- out() << " <link rel=\"contents\" href=\""
- << anchorPair.first << "\" />\n";
- navigationLinks += "[<a href=\"" + anchorPair.first + "\">";
- if (linkPair.first == linkPair.second && !anchorPair.second.isEmpty())
- navigationLinks += protectEnc(anchorPair.second);
- else
- navigationLinks += protectEnc(linkPair.second);
- navigationLinks += "</a>]\n";
- }
- if (node->links().contains(Node::NextLink)) {
- linkPair = node->links()[Node::NextLink];
- linkNode = findNodeForTarget(linkPair.first, node, marker);
- if (!linkNode || linkNode == node)
- anchorPair = linkPair;
- else
- anchorPair = anchorForNode(linkNode);
-
- out() << " <link rel=\"next\" href=\""
- << anchorPair.first << "\" />\n";
-
- navigationLinks += "[Next: <a href=\"" + anchorPair.first + "\">";
- if (linkPair.first == linkPair.second && !anchorPair.second.isEmpty())
- navigationLinks += protectEnc(anchorPair.second);
- else
- navigationLinks += protectEnc(linkPair.second);
- navigationLinks += "</a>]\n";
- }
- if (node->links().contains(Node::IndexLink)) {
- linkPair = node->links()[Node::IndexLink];
- linkNode = findNodeForTarget(linkPair.first, node, marker);
- if (!linkNode || linkNode == node)
- anchorPair = linkPair;
- else
- anchorPair = anchorForNode(linkNode);
- out() << " <link rel=\"index\" href=\""
- << anchorPair.first << "\" />\n";
- }
- if (node->links().contains(Node::StartLink)) {
- linkPair = node->links()[Node::StartLink];
- linkNode = findNodeForTarget(linkPair.first, node, marker);
- if (!linkNode || linkNode == node)
- anchorPair = linkPair;
- else
- anchorPair = anchorForNode(linkNode);
- out() << " <link rel=\"start\" href=\""
- << anchorPair.first << "\" />\n";
- }
- }
-
- foreach (const QString &stylesheet, stylesheets) {
- out() << " <link href=\"" << stylesheet << "\" rel=\"stylesheet\" "
- << "type=\"text/css\" />\n";
- }
-
- foreach (const QString &customHeadElement, customHeadElements) {
- out() << " " << customHeadElement << "\n";
- }
-
- out() << "</head>\n"
- #endif
+ if (offlineDocs)
+ out() << "<body class=\"offline\">\n";
+ else
out() << "<body class=\"\">\n";
+
if (mainPage)
generateMacRef(node, marker);
out() << QString(postHeader).replace("\\" + COMMAND_VERSION, myTree->version());
-#if 0
+#if 0 // Removed for new docf format. MWS
if (node && !node->links().empty())
out() << "<p>\n" << navigationLinks << "</p>\n";
#endif
@@ -1932,7 +1808,7 @@ void HtmlGenerator::generateBrief(const Node *node, CodeMarker *marker,
void HtmlGenerator::generateIncludes(const InnerNode *inner, CodeMarker *marker)
{
if (!inner->includes().isEmpty()) {
- out() << "<pre>"
+ out() << "<pre clas=\"highlightedCode\">"
<< trimmedTrailing(highlightedCode(indent(codeIndent,
marker->markedUpIncludes(inner->includes())),
marker,inner))
@@ -1966,8 +1842,8 @@ void HtmlGenerator::generateTableOfContents(const Node *node,
QString tdTag;
if (numColumns > 1) {
- tdTag = "<td width=\"" + QString::number((100 + numColumns - 1) / numColumns) + "%\">";
- out() << "<p><table class=\"toc\" width=\"100%\">\n<tr valign=\"top\">"
+ tdTag = "<td>"; /* width=\"" + QString::number((100 + numColumns - 1) / numColumns) + "%\">";*/
+ out() << "<table class=\"toc\">\n<tr class=\"topAlign\">"
<< tdTag << "\n";
}
@@ -2019,7 +1895,7 @@ void HtmlGenerator::generateTableOfContents(const Node *node,
}
if (numColumns > 1)
- out() << "</td></tr></table></p>\n";
+ out() << "</td></tr></table>\n";
inContents = false;
inLink = false;
@@ -2104,10 +1980,12 @@ void HtmlGenerator::generateTableOfContents(const Node *node,
}
int numAtoms;
Text headingText = Text::sectionHeading(atom);
+ QString s = headingText.toString();
out() << "<li>";
out() << "<a href=\""
<< "#"
- << Doc::canonicalTitle(headingText.toString())
+ //<< registerRef(s)
+ << Doc::canonicalTitle(s)
<< "\">";
generateAtomList(headingText.firstAtom(), node, marker, true, numAtoms);
out() << "</a></li>\n";
@@ -2128,7 +2006,7 @@ void HtmlGenerator::generateNavigationBar(const NavigationBar& bar,
{
if (bar.prev.begin() != 0 || bar.current.begin() != 0 ||
bar.next.begin() != 0) {
- out() << "<p align=\"right\">";
+ out() << "<p class=\"rightAlign\">";
if (bar.prev.begin() != 0) {
#if 0
out() << "[<a href=\"" << section.previousBaseName()
@@ -2304,7 +2182,7 @@ void HtmlGenerator::generateAnnotatedList(const Node *relative,
CodeMarker *marker,
const NodeMap &nodeMap)
{
- out() << "<p><table class=\"annotated\">\n";
+ out() << "<table class=\"annotated\">\n";
int row = 0;
foreach (const QString &name, nodeMap.keys()) {
@@ -2314,9 +2192,9 @@ void HtmlGenerator::generateAnnotatedList(const Node *relative,
continue;
if (++row % 2 == 1)
- out() << "<tr valign=\"top\" class=\"odd\">";
+ out() << "<tr class=\"odd topAlign\">";
else
- out() << "<tr valign=\"top\" class=\"even\">";
+ out() << "<tr class=\"even topAlign\">";
out() << "<th>";
generateFullName(node, relative, marker);
out() << "</th>";
@@ -2336,7 +2214,7 @@ void HtmlGenerator::generateAnnotatedList(const Node *relative,
}
out() << "</tr>\n";
}
- out() << "</table></p>\n";
+ out() << "</table>\n";
}
/*!
@@ -2489,7 +2367,7 @@ void HtmlGenerator::generateCompactList(const Node *relative,
}
firstOffset[NumColumns] = classMap.count();
- out() << "<p><table class=\"generic\">\n";
+ out() << "<table class=\"generic\">\n";
for (k = 0; k < numRows; k++) {
out() << "<tr>\n";
for (i = 0; i < NumColumns; i++) {
@@ -2510,7 +2388,7 @@ void HtmlGenerator::generateCompactList(const Node *relative,
currentParagraphNo[i] = NumParagraphs - 1;
}
#endif
- out() << "<td align=\"right\">";
+ out() << "<td class=\"rightAlign\">";
if (currentOffsetInParagraph[i] == 0) {
// start a new paragraph
out() << "<b>"
@@ -2553,18 +2431,18 @@ void HtmlGenerator::generateCompactList(const Node *relative,
}
out() << "</tr>\n";
}
- out() << "</table></p>\n";
+ out() << "</table>\n";
}
void HtmlGenerator::generateFunctionIndex(const Node *relative,
CodeMarker *marker)
{
- out() << "<p align=\"center\"><font size=\"+1\"><b>";
+ out() << "<p class=\"centerAlign functionIndex\"><b>";
for (int i = 0; i < 26; i++) {
QChar ch('a' + i);
out() << QString("<a href=\"#%1\">%2</a>&nbsp;").arg(ch).arg(ch.toUpper());
}
- out() << "</b></font></p>\n";
+ out() << "</b></p>\n";
char nextLetter = 'a';
char currentLetter;
@@ -2832,8 +2710,8 @@ void HtmlGenerator::generateSection(const NodeList& nl,
}
else {
if (twoColumn)
- out() << "<p><table class=\"propsummary\">\n"
- << "<tr><td valign=\"top\">";
+ out() << "<table class=\"propsummary\">\n"
+ << "<tr><td class=\"topAlign\">";
out() << "<ul>\n";
}
@@ -2846,12 +2724,11 @@ void HtmlGenerator::generateSection(const NodeList& nl,
}
if (name_alignment) {
- out() << "<tr><td class=\"memItemLeft\" "
- << "align=\"right\" valign=\"top\">";
+ out() << "<tr><td class=\"memItemLeft rightAlign topAlign\"> ";
}
else {
if (twoColumn && i == (int) (nl.count() + 1) / 2)
- out() << "</ul></td><td valign=\"top\"><ul>\n";
+ out() << "</ul></td><td class=\"topAlign\"><ul>\n";
out() << "<li><div class=\"fn\">";
}
@@ -2868,7 +2745,7 @@ void HtmlGenerator::generateSection(const NodeList& nl,
else {
out() << "</ul>\n";
if (twoColumn)
- out() << "</td></tr>\n</table></p>\n";
+ out() << "</td></tr>\n</table>\n";
}
}
}
@@ -2894,8 +2771,8 @@ void HtmlGenerator::generateSectionList(const Section& section,
}
else {
if (twoColumn)
- out() << "<p><table class=\"propsummary\">\n"
- << "<tr><td valign=\"top\">";
+ out() << "<table class=\"propsummary\">\n"
+ << "<tr><td class=\"topAlign\">";
out() << "<ul>\n";
}
@@ -2908,12 +2785,11 @@ void HtmlGenerator::generateSectionList(const Section& section,
}
if (name_alignment) {
- out() << "<tr><td class=\"memItemLeft\" "
- << "align=\"right\" valign=\"top\">";
+ out() << "<tr><td class=\"memItemLeft topAlign rightAlign\"> ";
}
else {
if (twoColumn && i == (int) (section.members.count() + 1) / 2)
- out() << "</ul></td><td valign=\"top\"><ul>\n";
+ out() << "</ul></td><td class=\"topAlign\"><ul>\n";
out() << "<li><div class=\"fn\">";
}
@@ -2930,7 +2806,7 @@ void HtmlGenerator::generateSectionList(const Section& section,
else {
out() << "</ul>\n";
if (twoColumn)
- out() << "</td></tr>\n</table></p>\n";
+ out() << "</td></tr>\n</table>\n";
}
}
@@ -3027,7 +2903,7 @@ QString HtmlGenerator::highlightedCode(const QString& markedCode,
for (int i = 0, n = src.size(); i < n;) {
if (src.at(i) == charLangle && src.at(i + 1).unicode() == '@') {
if (nameAlignment && !done) {// && (i != 0)) Why was this here?
- html += "</td><td class=\"memItemRight\" valign=\"bottom\">";
+ html += "</td><td class=\"memItemRight bottomAlign\">";
done = true;
}
i += 2;
@@ -3192,8 +3068,8 @@ void HtmlGenerator::generateSectionList(const Section& section,
twoColumn = (section.members.count() >= 5);
}
if (twoColumn)
- out() << "<p><table class=\"generic\">\n"
- << "<tr><td valign=\"top\">";
+ out() << "<table class=\"generic\">\n"
+ << "<tr><td class=\"topAlign\">";
out() << "<ul>\n";
int i = 0;
@@ -3205,7 +3081,7 @@ void HtmlGenerator::generateSectionList(const Section& section,
}
if (twoColumn && i == (int) (section.members.count() + 1) / 2)
- out() << "</ul></td><td valign=\"top\"><ul>\n";
+ out() << "</ul></td><td class=\"topAlign\"><ul>\n";
out() << "<li><div class=\"fn\"></div>";
if (style == CodeMarker::Accessors)
@@ -3219,7 +3095,7 @@ void HtmlGenerator::generateSectionList(const Section& section,
}
out() << "</ul>\n";
if (twoColumn)
- out() << "</td></tr>\n</table></p>\n";
+ out() << "</td></tr>\n</table>\n";
}
if (style == CodeMarker::Summary && !section.inherited.isEmpty()) {
@@ -4371,8 +4247,6 @@ void HtmlGenerator::endLink()
inObsoleteLink = false;
}
-QT_END_NAMESPACE
-
#ifdef QDOC_QML
/*!
@@ -4393,15 +4267,15 @@ void HtmlGenerator::generateQmlSummary(const Section& section,
twoColumn = (count >= 5);
}
if (twoColumn)
- out() << "<p><table class=\"qmlsummary\">\n"
- << "<tr><td valign=\"top\">";
+ out() << "<table class=\"qmlsummary\">\n"
+ << "<tr><td class=\"topAlign\">";
out() << "<ul>\n";
int row = 0;
m = section.members.begin();
while (m != section.members.end()) {
if (twoColumn && row == (int) (count + 1) / 2)
- out() << "</ul></td><td valign=\"top\"><ul>\n";
+ out() << "</ul></td><td class=\"topAlign\"><ul>\n";
out() << "<li><div class=\"fn\"></div>";
generateQmlItem(*m,relative,marker,true);
out() << "</li>\n";
@@ -4410,7 +4284,7 @@ void HtmlGenerator::generateQmlSummary(const Section& section,
}
out() << "</ul>\n";
if (twoColumn)
- out() << "</td></tr>\n</table></p>\n";
+ out() << "</td></tr>\n</table>\n";
}
}
@@ -4502,7 +4376,7 @@ void HtmlGenerator::generateQmlInherits(const QmlClassNode* cn,
const Node* n = myTree->findNode(strList,Node::Fake);
if (n && n->subType() == Node::QmlClass) {
const QmlClassNode* qcn = static_cast<const QmlClassNode*>(n);
- out() << "<p style=\"text-align: center\">";
+ out() << "<p class=\"centerAlign\">";
Text text;
text << "[Inherits ";
text << Atom(Atom::LinkNode,CodeMarker::stringForNode(qcn));
@@ -4549,7 +4423,7 @@ void HtmlGenerator::generateQmlInstantiates(const QmlClassNode* qcn,
{
const ClassNode* cn = qcn->classNode();
if (cn && (cn->status() != Node::Internal)) {
- out() << "<p style=\"text-align: center\">";
+ out() << "<p class=\"centerAlign\">";
Text text;
text << "[";
text << Atom(Atom::LinkNode,CodeMarker::stringForNode(qcn));
@@ -4580,7 +4454,7 @@ void HtmlGenerator::generateInstantiatedBy(const ClassNode* cn,
if (cn && cn->status() != Node::Internal && !cn->qmlElement().isEmpty()) {
const Node* n = myTree->root()->findNode(cn->qmlElement(),Node::Fake);
if (n && n->subType() == Node::QmlClass) {
- out() << "<p style=\"text-align: center\">";
+ out() << "<p class=\"centerAlign\">";
Text text;
text << "[";
text << Atom(Atom::LinkNode,CodeMarker::stringForNode(cn));
@@ -4724,3 +4598,139 @@ void HtmlGenerator::generatePageIndex(const QString& fileName, CodeMarker* marke
}
#endif
+
+#if 0 // fossil removed for new doc format MWS 19/04/2010
+ out() << "<!DOCTYPE html\n"
+ " PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"DTD/xhtml1-strict.dtd\">\n";
+ out() << QString("<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"%1\" lang=\"%1\">\n").arg(naturalLanguage);
+
+ QString shortVersion;
+ if ((project != "Qtopia") && (project != "Qt Extended")) {
+ shortVersion = project + " " + shortVersion + ": ";
+ if (node && !node->doc().location().isEmpty())
+ out() << "<!-- " << node->doc().location().fileName() << " -->\n";
+
+ shortVersion = myTree->version();
+ if (shortVersion.count(QChar('.')) == 2)
+ shortVersion.truncate(shortVersion.lastIndexOf(QChar('.')));
+ if (!shortVersion.isEmpty()) {
+ if (project == "QSA")
+ shortVersion = "QSA " + shortVersion + ": ";
+ else
+ shortVersion = "Qt " + shortVersion + ": ";
+ }
+ }
+
+ out() << "<head>\n"
+ " <title>" << shortVersion << protectEnc(title) << "</title>\n";
+ out() << QString("<meta http-equiv=\"Content-type\" content=\"text/html; charset=%1\" />").arg(outputEncoding);
+
+ if (!style.isEmpty())
+ out() << " <style type=\"text/css\">" << style << "</style>\n";
+
+ const QMap<QString, QString> &metaMap = node->doc().metaTagMap();
+ if (!metaMap.isEmpty()) {
+ QMapIterator<QString, QString> i(metaMap);
+ while (i.hasNext()) {
+ i.next();
+ out() << " <meta name=\"" << protectEnc(i.key()) << "\" contents=\""
+ << protectEnc(i.value()) << "\" />\n";
+ }
+ }
+
+ navigationLinks.clear();
+
+ if (node && !node->links().empty()) {
+ QPair<QString,QString> linkPair;
+ QPair<QString,QString> anchorPair;
+ const Node *linkNode;
+
+ if (node->links().contains(Node::PreviousLink)) {
+ linkPair = node->links()[Node::PreviousLink];
+ linkNode = findNodeForTarget(linkPair.first, node, marker);
+ if (!linkNode || linkNode == node)
+ anchorPair = linkPair;
+ else
+ anchorPair = anchorForNode(linkNode);
+
+ out() << " <link rel=\"prev\" href=\""
+ << anchorPair.first << "\" />\n";
+
+ navigationLinks += "[Previous: <a href=\"" + anchorPair.first + "\">";
+ if (linkPair.first == linkPair.second && !anchorPair.second.isEmpty())
+ navigationLinks += protectEnc(anchorPair.second);
+ else
+ navigationLinks += protectEnc(linkPair.second);
+ navigationLinks += "</a>]\n";
+ }
+ if (node->links().contains(Node::ContentsLink)) {
+ linkPair = node->links()[Node::ContentsLink];
+ linkNode = findNodeForTarget(linkPair.first, node, marker);
+ if (!linkNode || linkNode == node)
+ anchorPair = linkPair;
+ else
+ anchorPair = anchorForNode(linkNode);
+
+ out() << " <link rel=\"contents\" href=\""
+ << anchorPair.first << "\" />\n";
+
+ navigationLinks += "[<a href=\"" + anchorPair.first + "\">";
+ if (linkPair.first == linkPair.second && !anchorPair.second.isEmpty())
+ navigationLinks += protectEnc(anchorPair.second);
+ else
+ navigationLinks += protectEnc(linkPair.second);
+ navigationLinks += "</a>]\n";
+ }
+ if (node->links().contains(Node::NextLink)) {
+ linkPair = node->links()[Node::NextLink];
+ linkNode = findNodeForTarget(linkPair.first, node, marker);
+ if (!linkNode || linkNode == node)
+ anchorPair = linkPair;
+ else
+ anchorPair = anchorForNode(linkNode);
+
+ out() << " <link rel=\"next\" href=\""
+ << anchorPair.first << "\" />\n";
+
+ navigationLinks += "[Next: <a href=\"" + anchorPair.first + "\">";
+ if (linkPair.first == linkPair.second && !anchorPair.second.isEmpty())
+ navigationLinks += protectEnc(anchorPair.second);
+ else
+ navigationLinks += protectEnc(linkPair.second);
+ navigationLinks += "</a>]\n";
+ }
+ if (node->links().contains(Node::IndexLink)) {
+ linkPair = node->links()[Node::IndexLink];
+ linkNode = findNodeForTarget(linkPair.first, node, marker);
+ if (!linkNode || linkNode == node)
+ anchorPair = linkPair;
+ else
+ anchorPair = anchorForNode(linkNode);
+ out() << " <link rel=\"index\" href=\""
+ << anchorPair.first << "\" />\n";
+ }
+ if (node->links().contains(Node::StartLink)) {
+ linkPair = node->links()[Node::StartLink];
+ linkNode = findNodeForTarget(linkPair.first, node, marker);
+ if (!linkNode || linkNode == node)
+ anchorPair = linkPair;
+ else
+ anchorPair = anchorForNode(linkNode);
+ out() << " <link rel=\"start\" href=\""
+ << anchorPair.first << "\" />\n";
+ }
+ }
+
+ foreach (const QString &stylesheet, stylesheets) {
+ out() << " <link href=\"" << stylesheet << "\" rel=\"stylesheet\" "
+ << "type=\"text/css\" />\n";
+ }
+
+ foreach (const QString &customHeadElement, customHeadElements) {
+ out() << " " << customHeadElement << "\n";
+ }
+
+ out() << "</head>\n"
+ #endif
+
+ QT_END_NAMESPACE
diff --git a/tools/qdoc3/htmlgenerator.h b/tools/qdoc3/htmlgenerator.h
index 559c968..2a365e9 100644
--- a/tools/qdoc3/htmlgenerator.h
+++ b/tools/qdoc3/htmlgenerator.h
@@ -297,6 +297,7 @@ class HtmlGenerator : public PageGenerator
bool inTableHeader;
int numTableRows;
bool threeColumnEnumValueTable;
+ bool offlineDocs;
QString link;
QStringList sectionNumber;
QRegExp funcLeftParen;
diff --git a/tools/qdoc3/test/assistant.qdocconf b/tools/qdoc3/test/assistant.qdocconf
index 5308afd..65137f5 100644
--- a/tools/qdoc3/test/assistant.qdocconf
+++ b/tools/qdoc3/test/assistant.qdocconf
@@ -16,7 +16,46 @@ qhp.Assistant.file = assistant.qhp
qhp.Assistant.namespace = com.trolltech.assistant.470
qhp.Assistant.virtualFolder = qdoc
qhp.Assistant.indexTitle = Qt Assistant Manual
-qhp.Assistant.extraFiles = classic.css images/qt-logo.png images/trolltech-logo.png
+qhp.Assistant.extraFiles = index.html \
+ images/api_examples.png \
+ images/api_lookup.png \
+ images/api_topics.png \
+ images/bg_l_blank.png \
+ images/bg_ll_blank.png \
+ images/bg_ll.png \
+ images/bg_l.png \
+ images/bg_lr.png \
+ images/bg_r.png \
+ images/bg_ul_blank.png \
+ images/bg_ul.png \
+ images/bg_ur_blank.png \
+ images/bg_ur.png \
+ images/box_bg.png \
+ images/breadcrumb.png \
+ images/bullet_dn.png \
+ images/bullet_gt.png \
+ images/bullet_sq.png \
+ images/bullet_up.png \
+ images/coloreditorfactoryimage.png \
+ images/content_bg.png \
+ images/dynamiclayouts-example.png \
+ images/feedbackground.png \
+ images/form_bg.png \
+ images/horBar.png \
+ images/page_bg.png \
+ images/print.png \
+ images/qt_guide.png \
+ images/qt_icon.png \
+ images/qt-logo.png \
+ images/qt_ref_doc.png \
+ images/qt_tools.png \
+ images/sep.png \
+ images/sprites-combined.png \
+ images/stylesheet-coffee-plastique.png \
+ images/taskmenuextension-example.png \
+ scripts/functions.js \
+ scripts/jquery.js \
+ style/style.css
qhp.Assistant.filterAttributes = qt 4.7.0 tools assistant
qhp.Assistant.customFilters.Assistant.name = Qt Assistant Manual
qhp.Assistant.customFilters.Assistant.filterAttributes = qt tools assistant
diff --git a/tools/qdoc3/test/designer.qdocconf b/tools/qdoc3/test/designer.qdocconf
index 2eb3d96..69e3a90 100644
--- a/tools/qdoc3/test/designer.qdocconf
+++ b/tools/qdoc3/test/designer.qdocconf
@@ -16,7 +16,46 @@ qhp.Designer.file = designer.qhp
qhp.Designer.namespace = com.trolltech.designer.470
qhp.Designer.virtualFolder = qdoc
qhp.Designer.indexTitle = Qt Designer Manual
-qhp.Designer.extraFiles = classic.css images/qt-logo.png images/trolltech-logo.png
+qhp.Designer.extraFiles = index.html \
+ images/api_examples.png \
+ images/api_lookup.png \
+ images/api_topics.png \
+ images/bg_l_blank.png \
+ images/bg_ll_blank.png \
+ images/bg_ll.png \
+ images/bg_l.png \
+ images/bg_lr.png \
+ images/bg_r.png \
+ images/bg_ul_blank.png \
+ images/bg_ul.png \
+ images/bg_ur_blank.png \
+ images/bg_ur.png \
+ images/box_bg.png \
+ images/breadcrumb.png \
+ images/bullet_dn.png \
+ images/bullet_gt.png \
+ images/bullet_sq.png \
+ images/bullet_up.png \
+ images/coloreditorfactoryimage.png \
+ images/content_bg.png \
+ images/dynamiclayouts-example.png \
+ images/feedbackground.png \
+ images/form_bg.png \
+ images/horBar.png \
+ images/page_bg.png \
+ images/print.png \
+ images/qt_guide.png \
+ images/qt_icon.png \
+ images/qt-logo.png \
+ images/qt_ref_doc.png \
+ images/qt_tools.png \
+ images/sep.png \
+ images/sprites-combined.png \
+ images/stylesheet-coffee-plastique.png \
+ images/taskmenuextension-example.png \
+ scripts/functions.js \
+ scripts/jquery.js \
+ style/style.css
qhp.Designer.filterAttributes = qt 4.7.0 tools designer
qhp.Designer.customFilters.Designer.name = Qt Designer Manual
qhp.Designer.customFilters.Designer.filterAttributes = qt tools designer
diff --git a/tools/qdoc3/test/linguist.qdocconf b/tools/qdoc3/test/linguist.qdocconf
index ac536be..e398d29 100644
--- a/tools/qdoc3/test/linguist.qdocconf
+++ b/tools/qdoc3/test/linguist.qdocconf
@@ -16,7 +16,46 @@ qhp.Linguist.file = linguist.qhp
qhp.Linguist.namespace = com.trolltech.linguist.470
qhp.Linguist.virtualFolder = qdoc
qhp.Linguist.indexTitle = Qt Linguist Manual
-qhp.Linguist.extraFiles = classic.css images/qt-logo.png images/trolltech-logo.png
+qhp.Linguist.extraFiles = index.html \
+ images/api_examples.png \
+ images/api_lookup.png \
+ images/api_topics.png \
+ images/bg_l_blank.png \
+ images/bg_ll_blank.png \
+ images/bg_ll.png \
+ images/bg_l.png \
+ images/bg_lr.png \
+ images/bg_r.png \
+ images/bg_ul_blank.png \
+ images/bg_ul.png \
+ images/bg_ur_blank.png \
+ images/bg_ur.png \
+ images/box_bg.png \
+ images/breadcrumb.png \
+ images/bullet_dn.png \
+ images/bullet_gt.png \
+ images/bullet_sq.png \
+ images/bullet_up.png \
+ images/coloreditorfactoryimage.png \
+ images/content_bg.png \
+ images/dynamiclayouts-example.png \
+ images/feedbackground.png \
+ images/form_bg.png \
+ images/horBar.png \
+ images/page_bg.png \
+ images/print.png \
+ images/qt_guide.png \
+ images/qt_icon.png \
+ images/qt-logo.png \
+ images/qt_ref_doc.png \
+ images/qt_tools.png \
+ images/sep.png \
+ images/sprites-combined.png \
+ images/stylesheet-coffee-plastique.png \
+ images/taskmenuextension-example.png \
+ scripts/functions.js \
+ scripts/jquery.js \
+ style/style.css
qhp.Linguist.filterAttributes = qt 4.7.0 tools linguist
qhp.Linguist.customFilters.Linguist.name = Qt Linguist Manual
qhp.Linguist.customFilters.Linguist.filterAttributes = qt tools linguist
diff --git a/tools/qdoc3/test/qmake.qdocconf b/tools/qdoc3/test/qmake.qdocconf
index bd47028..fbb59c0 100644
--- a/tools/qdoc3/test/qmake.qdocconf
+++ b/tools/qdoc3/test/qmake.qdocconf
@@ -16,7 +16,46 @@ qhp.qmake.file = qmake.qhp
qhp.qmake.namespace = com.trolltech.qmake.470
qhp.qmake.virtualFolder = qdoc
qhp.qmake.indexTitle = QMake Manual
-qhp.qmake.extraFiles = classic.css images/qt-logo.png images/trolltech-logo.png
+qhp.qmake.extraFiles = index.html \
+ images/api_examples.png \
+ images/api_lookup.png \
+ images/api_topics.png \
+ images/bg_l_blank.png \
+ images/bg_ll_blank.png \
+ images/bg_ll.png \
+ images/bg_l.png \
+ images/bg_lr.png \
+ images/bg_r.png \
+ images/bg_ul_blank.png \
+ images/bg_ul.png \
+ images/bg_ur_blank.png \
+ images/bg_ur.png \
+ images/box_bg.png \
+ images/breadcrumb.png \
+ images/bullet_dn.png \
+ images/bullet_gt.png \
+ images/bullet_sq.png \
+ images/bullet_up.png \
+ images/coloreditorfactoryimage.png \
+ images/content_bg.png \
+ images/dynamiclayouts-example.png \
+ images/feedbackground.png \
+ images/form_bg.png \
+ images/horBar.png \
+ images/page_bg.png \
+ images/print.png \
+ images/qt_guide.png \
+ images/qt_icon.png \
+ images/qt-logo.png \
+ images/qt_ref_doc.png \
+ images/qt_tools.png \
+ images/sep.png \
+ images/sprites-combined.png \
+ images/stylesheet-coffee-plastique.png \
+ images/taskmenuextension-example.png \
+ scripts/functions.js \
+ scripts/jquery.js \
+ style/style.css
qhp.qmake.filterAttributes = qt 4.7.0 tools qmake
qhp.qmake.customFilters.qmake.name = qmake Manual
qhp.qmake.customFilters.qmake.filterAttributes = qt tools qmake
diff --git a/tools/qdoc3/test/qt-build-docs.qdocconf b/tools/qdoc3/test/qt-build-docs.qdocconf
index dbff4e2..0694748 100644
--- a/tools/qdoc3/test/qt-build-docs.qdocconf
+++ b/tools/qdoc3/test/qt-build-docs.qdocconf
@@ -22,14 +22,12 @@ qhp.Qt.indexTitle = Qt Reference Documentation
# Files not referenced in any qdoc file (last four are needed by qtdemo)
# See also extraimages.HTML
qhp.Qt.extraFiles = index.html \
- style/style.css \
- scripts/functions.js \
- scripts/jquery.js \
images/api_examples.png \
images/api_lookup.png \
images/api_topics.png \
- images/bg_ll.png \
images/bg_l_blank.png \
+ images/bg_ll_blank.png \
+ images/bg_ll.png \
images/bg_l.png \
images/bg_lr.png \
images/bg_r.png \
@@ -37,24 +35,33 @@ qhp.Qt.extraFiles = index.html \
images/bg_ul.png \
images/bg_ur_blank.png \
images/bg_ur.png \
+ images/box_bg.png \
images/breadcrumb.png \
images/bullet_dn.png \
images/bullet_gt.png \
+ images/bullet_sq.png \
+ images/bullet_up.png \
+ images/coloreditorfactoryimage.png \
+ images/content_bg.png \
+ images/dynamiclayouts-example.png \
images/feedbackground.png \
images/form_bg.png \
images/horBar.png \
images/page_bg.png \
images/print.png \
images/qt_guide.png \
+ images/qt_icon.png \
images/qt-logo.png \
images/qt_ref_doc.png \
images/qt_tools.png \
images/sep.png \
images/sprites-combined.png \
+ images/stylesheet-coffee-plastique.png \
images/taskmenuextension-example.png \
- images/coloreditorfactoryimage.png \
- images/dynamiclayouts-example.png \
- images/stylesheet-coffee-plastique.png
+ scripts/functions.js \
+ scripts/jquery.js \
+ style/style.css
+
qhp.Qt.filterAttributes = qt 4.7.0 qtrefdoc
diff --git a/tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf b/tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf
index 461c069..5a3d726 100644
--- a/tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf
+++ b/tools/qdoc3/test/qt-build-docs_zh_CN.qdocconf
@@ -30,14 +30,12 @@ qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.0
# Files not referenced in any qdoc file (last four are needed by qtdemo)
# See also extraimages.HTML
qhp.Qt.extraFiles = index.html \
- style/style.css \
- scripts/functions.js \
- scripts/jquery.js \
images/api_examples.png \
images/api_lookup.png \
images/api_topics.png \
- images/bg_ll.png \
images/bg_l_blank.png \
+ images/bg_ll_blank.png \
+ images/bg_ll.png \
images/bg_l.png \
images/bg_lr.png \
images/bg_r.png \
@@ -45,24 +43,32 @@ qhp.Qt.extraFiles = index.html \
images/bg_ul.png \
images/bg_ur_blank.png \
images/bg_ur.png \
+ images/box_bg.png \
images/breadcrumb.png \
images/bullet_dn.png \
images/bullet_gt.png \
+ images/bullet_sq.png \
+ images/bullet_up.png \
+ images/coloreditorfactoryimage.png \
+ images/content_bg.png \
+ images/dynamiclayouts-example.png \
images/feedbackground.png \
images/form_bg.png \
images/horBar.png \
images/page_bg.png \
images/print.png \
images/qt_guide.png \
+ images/qt_icon.png \
images/qt-logo.png \
images/qt_ref_doc.png \
images/qt_tools.png \
images/sep.png \
images/sprites-combined.png \
+ images/stylesheet-coffee-plastique.png \
images/taskmenuextension-example.png \
- images/coloreditorfactoryimage.png \
- images/dynamiclayouts-example.png \
- images/stylesheet-coffee-plastique.png
+ scripts/functions.js \
+ scripts/jquery.js \
+ style/style.css
language = Cpp
diff --git a/tools/qdoc3/test/qt-html-templates.qdocconf b/tools/qdoc3/test/qt-html-templates.qdocconf
index 67a25f3..158aef3 100644
--- a/tools/qdoc3/test/qt-html-templates.qdocconf
+++ b/tools/qdoc3/test/qt-html-templates.qdocconf
@@ -2,7 +2,7 @@ HTML.stylesheets = style/style.css
HTML.postheader = " <div class=\"header\" id=\"qtdocheader\">\n" \
" <div id=\"nav-logo\">\n" \
" <a href=\"index.html\">Home</a></div>\n" \
- " <a href=\"#\" class=\"qtref\"><span>Qt Reference Documentation</span></a>\n" \
+ " <a href=\"index.html\" class=\"qtref\"><span>Qt Reference Documentation</span></a>\n" \
" <div id=\"nav-topright\">\n" \
" <ul>\n" \
" <li class=\"nav-topright-home\"><a href=\"http://qt.nokia.com/\">Qt HOME</a></li>\n" \
@@ -16,8 +16,8 @@ HTML.postheader = " <div class=\"header\" id=\"qtdocheader\">\n" \
" </div>\n" \
" <div id=\"shortCut\">\n" \
" <ul>\n" \
- " <li class=\"shortCut-topleft-inactive\"><span><a href=\"index.html\">VERSION 4.7</a></span></li>\n" \
- " <li class=\"shortCut-topleft-active\"><a href=\"http://qt.nokia.com/doc/\">ALL QT VERSIONS" \
+ " <li class=\"shortCut-topleft-inactive\"><span><a href=\"index.html\">Qt 4.7</a></span></li>\n" \
+ " <li class=\"shortCut-topleft-active\"><a href=\"http://qt.nokia.com/doc/\">ALL Qt VERSIONS" \
" </a></li>\n" \
" </ul>\n" \
" </div>\n" \
@@ -73,9 +73,9 @@ HTML.postheader = " <div class=\"header\" id=\"qtdocheader\">\n" \
" <ul>\n" \
" <li><a href=\"examples.html\">All examples</a></li>\n" \
" <li><a href=\"tutorials.html\">All tutorials</a></li>\n" \
- " <li><a href=\"#\">Qt Quick examples</a></li>\n" \
- " <li><a href=\"#\">Desktop examples</a></li>\n" \
- " <li><a href=\"#\">Device examples</a></li>\n" \
+ " <li><a href=\"examples.html\">Qt Quick examples</a></li>\n" \
+ " <li><a href=\"examples.html\">Desktop examples</a></li>\n" \
+ " <li><a href=\"examples.html\">Device examples</a></li>\n" \
" </ul>\n" \
" </div>\n" \
" <div class=\"live\">\n" \
@@ -96,7 +96,7 @@ HTML.postheader = " <div class=\"header\" id=\"qtdocheader\">\n" \
" <li id=\"medA\" class=\"t_button active\">A</li>\n" \
" <li id=\"bigA\" class=\"t_button\">A</li>\n" \
" <li id=\"print\" class=\"t_button\"><a href=\"javascript:this.print();\">\n" \
- " <img src=\"images/sep.png\" /><img id=\"printIcon\" src=\"images/print.png\" alt=\"Print this page\" /></a></li>\n" \
+ " <img src=\"images/sep.png\" alt=\"\" /><img id=\"printIcon\" src=\"images/print.png\" alt=\"Print this page\" /></a></li>\n" \
" </ul>\n" \
" </div>\n" \
" </div>\n" \
@@ -110,7 +110,6 @@ HTML.footer = " </div>\n" \
" <div class=\"ft\">\n" \
" <span></span>\n" \
" </div>\n" \
- " </div>\n" \
" <div class=\"footer\">\n" \
" <p>\n" \
" <acronym title=\"Copyright\">&copy;</acronym> 2008-2010 Nokia Corporation and/or its\n" \
@@ -121,10 +120,10 @@ HTML.footer = " </div>\n" \
" href=\"http://qt.nokia.com/about/privacy-policy\">Privacy Policy</a></p>\n" \
" </div>\n" \
" <div id=\"feedbackBox\">\n" \
- " <form action=\"#\">\n" \
" <div id=\"feedcloseX\">\n" \
" <a href=\"#\" onclick=\"\$(\'#feedbackBox\').hide();\$(\'#blurpage\').hide()\">X</a>\n" \
" </div>\n" \
+ " <form action=\"#\">\n" \
" <textarea id=\"feedbox\" rows=\"5\" cols=\"40\">Please submit you feedback...</textarea>\n" \
" <input id=\"feedsubmit\" type=\"submit\" onclick=\"\$(\'#feedbackBox\').hide();\$(\'#blurpage\').hide()\"\n" \
" name=\"feedback\" />\n" \
@@ -132,7 +131,6 @@ HTML.footer = " </div>\n" \
" </div>\n" \
" <div id=\"blurpage\">\n" \
" </div>\n" \
- " <script src=\"scripts/functions.js\" type=\"text/javascript\"></script>\n" \
"<script type=\"text/javascript\">\n" \
" var _gaq = _gaq || [];\n" \
" _gaq.push([\'_setAccount\', \'UA-4457116-5\']);\n" \
diff --git a/tools/qdoc3/test/qt.qdocconf b/tools/qdoc3/test/qt.qdocconf
index cc3e436..69ab4e1 100644
--- a/tools/qdoc3/test/qt.qdocconf
+++ b/tools/qdoc3/test/qt.qdocconf
@@ -9,6 +9,7 @@ versionsym =
version = %VERSION%
description = Qt Reference Documentation
url = http://qt.nokia.com/doc/4.7
+online = true
sourceencoding = UTF-8
outputencoding = UTF-8
@@ -25,14 +26,12 @@ qhp.Qt.indexRoot =
# Files not referenced in any qdoc file (last four are needed by qtdemo)
# See also extraimages.HTML
qhp.Qt.extraFiles = index.html \
- style/style.css \
- scripts/functions.js \
- scripts/jquery.js \
images/api_examples.png \
images/api_lookup.png \
images/api_topics.png \
- images/bg_ll.png \
images/bg_l_blank.png \
+ images/bg_ll_blank.png \
+ images/bg_ll.png \
images/bg_l.png \
images/bg_lr.png \
images/bg_r.png \
@@ -40,24 +39,32 @@ qhp.Qt.extraFiles = index.html \
images/bg_ul.png \
images/bg_ur_blank.png \
images/bg_ur.png \
+ images/box_bg.png \
images/breadcrumb.png \
images/bullet_dn.png \
images/bullet_gt.png \
+ images/bullet_sq.png \
+ images/bullet_up.png \
+ images/coloreditorfactoryimage.png \
+ images/content_bg.png \
+ images/dynamiclayouts-example.png \
images/feedbackground.png \
images/form_bg.png \
images/horBar.png \
images/page_bg.png \
images/print.png \
images/qt_guide.png \
+ images/qt_icon.png \
images/qt-logo.png \
images/qt_ref_doc.png \
images/qt_tools.png \
images/sep.png \
images/sprites-combined.png \
+ images/stylesheet-coffee-plastique.png \
images/taskmenuextension-example.png \
- images/coloreditorfactoryimage.png \
- images/dynamiclayouts-example.png \
- images/stylesheet-coffee-plastique.png
+ scripts/functions.js \
+ scripts/jquery.js \
+ style/style.css
qhp.Qt.filterAttributes = qt 4.7.0 qtrefdoc
qhp.Qt.customFilters.Qt.name = Qt 4.7.0
diff --git a/tools/qdoc3/test/qt_zh_CN.qdocconf b/tools/qdoc3/test/qt_zh_CN.qdocconf
index c5d2c88..a5a65d8 100644
--- a/tools/qdoc3/test/qt_zh_CN.qdocconf
+++ b/tools/qdoc3/test/qt_zh_CN.qdocconf
@@ -32,14 +32,12 @@ qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.0
# Files not referenced in any qdoc file (last four are needed by qtdemo)
# See also extraimages.HTML
qhp.Qt.extraFiles = index.html \
- style/style.css \
- scripts/functions.js \
- scripts/jquery.js \
images/api_examples.png \
images/api_lookup.png \
images/api_topics.png \
- images/bg_ll.png \
images/bg_l_blank.png \
+ images/bg_ll_blank.png \
+ images/bg_ll.png \
images/bg_l.png \
images/bg_lr.png \
images/bg_r.png \
@@ -47,24 +45,32 @@ qhp.Qt.extraFiles = index.html \
images/bg_ul.png \
images/bg_ur_blank.png \
images/bg_ur.png \
+ images/box_bg.png \
images/breadcrumb.png \
images/bullet_dn.png \
images/bullet_gt.png \
+ images/bullet_sq.png \
+ images/bullet_up.png \
+ images/coloreditorfactoryimage.png \
+ images/content_bg.png \
+ images/dynamiclayouts-example.png \
images/feedbackground.png \
images/form_bg.png \
images/horBar.png \
images/page_bg.png \
images/print.png \
images/qt_guide.png \
+ images/qt_icon.png \
images/qt-logo.png \
images/qt_ref_doc.png \
images/qt_tools.png \
images/sep.png \
images/sprites-combined.png \
+ images/stylesheet-coffee-plastique.png \
images/taskmenuextension-example.png \
- images/coloreditorfactoryimage.png \
- images/dynamiclayouts-example.png \
- images/stylesheet-coffee-plastique.png
+ scripts/functions.js \
+ scripts/jquery.js \
+ style/style.css
language = Cpp
diff --git a/tools/qtconfig/mainwindow.cpp b/tools/qtconfig/mainwindow.cpp
index 0de4b43..9675f99 100644
--- a/tools/qtconfig/mainwindow.cpp
+++ b/tools/qtconfig/mainwindow.cpp
@@ -432,7 +432,7 @@ MainWindow::MainWindow()
#endif
#ifndef QT_NO_OPENGL
videomodeCombo->addItem(tr("OpenGL"), QLatin1String("OpenGL"));
- videomodeCombo->setItemData(videomodeCombo->findText(tr("OpenGL")), tr("Use OpenGL if avaiable"), Qt::ToolTipRole);
+ videomodeCombo->setItemData(videomodeCombo->findText(tr("OpenGL")), tr("Use OpenGL if available"), Qt::ToolTipRole);
#endif
videomodeCombo->addItem(tr("Software"), QLatin1String("Software"));
videomodeCombo->setItemData(videomodeCombo->findText(tr("Software")), tr("Use simple software rendering"), Qt::ToolTipRole);
diff --git a/tools/qtestlib/wince/cetest/main.cpp b/tools/qtestlib/wince/cetest/main.cpp
index 9fe5f02..4272a83 100644
--- a/tools/qtestlib/wince/cetest/main.cpp
+++ b/tools/qtestlib/wince/cetest/main.cpp
@@ -285,10 +285,14 @@ int main(int argc, char **argv)
}
// Check wether the project is still in debug/release mode after reading
// If .pro specifies to be one mode only, we need to accept this
- if (project.isActiveConfig("debug"))
+ if (project.isActiveConfig("debug") && !project.isActiveConfig("release")) {
TestConfiguration::testDebug = true;
- else
+ debugOutput("ActiveConfig: debug only in .pro.", 1);
+ }
+ if (!project.isActiveConfig("debug") && project.isActiveConfig("release")) {
TestConfiguration::testDebug = false;
+ debugOutput("ActiveConfig: release only in .pro.", 1);
+ }
// determine what is the real mkspec to use if the default mkspec is being used
if (Option::mkfile::qmakespec.endsWith("/default"))
diff --git a/translations/assistant_de.ts b/translations/assistant_de.ts
index 0a0d37f..bfafc71 100644
--- a/translations/assistant_de.ts
+++ b/translations/assistant_de.ts
@@ -147,7 +147,7 @@ Grund:
<translation>Lesezeichen verwalten...</translation>
</message>
<message>
- <location line="+2"/>
+ <location line="+3"/>
<source>Add Bookmark...</source>
<translation>Lesezeichen hinzufügen ...</translation>
</message>
@@ -190,7 +190,7 @@ Grund:
<context>
<name>CentralWidget</name>
<message>
- <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+117"/>
+ <location filename="../tools/assistant/tools/assistant/centralwidget.cpp" line="+121"/>
<source>Add new page</source>
<translation>Neue Seite hinzufügen</translation>
</message>
@@ -488,19 +488,19 @@ Grund:
<name>MainWindow</name>
<message>
<location filename="../tools/assistant/tools/assistant/mainwindow.cpp" line="+123"/>
- <location line="+366"/>
+ <location line="+369"/>
<source>Index</source>
<translation>Index</translation>
</message>
<message>
- <location line="-360"/>
- <location line="+358"/>
+ <location line="-363"/>
+ <location line="+361"/>
<source>Contents</source>
<translation>Inhalt</translation>
</message>
<message>
- <location line="-351"/>
- <location line="+355"/>
+ <location line="-354"/>
+ <location line="+358"/>
<source>Bookmarks</source>
<translation>Lesezeichen</translation>
</message>
@@ -510,14 +510,14 @@ Grund:
<translation>Suchen</translation>
</message>
<message>
- <location line="-335"/>
- <location line="+672"/>
+ <location line="-338"/>
+ <location line="+680"/>
<location line="+284"/>
<source>Qt Assistant</source>
<translation>Qt Assistant</translation>
</message>
<message>
- <location line="-702"/>
+ <location line="-705"/>
<source>Page Set&amp;up...</source>
<translation>S&amp;eite einrichten ...</translation>
</message>
@@ -532,17 +532,17 @@ Grund:
<translation>&amp;Drucken ...</translation>
</message>
<message>
- <location line="+7"/>
+ <location line="-10"/>
<source>New &amp;Tab</source>
<translation>Neuer &amp;Reiter</translation>
</message>
<message>
- <location line="+3"/>
+ <location line="+17"/>
<source>&amp;Close Tab</source>
<translation>Reiter &amp;schließen</translation>
</message>
<message>
- <location line="+4"/>
+ <location line="+5"/>
<source>&amp;Quit</source>
<translation>&amp;Beenden</translation>
</message>
@@ -662,17 +662,17 @@ Grund:
<translation>Ctrl+Alt+Left</translation>
</message>
<message>
- <location line="+591"/>
+ <location line="+596"/>
<source>Could not register file &apos;%1&apos;: %2</source>
<translation>Die Datei &apos;%1&apos; konnte nicht registriert werden: %2</translation>
</message>
<message>
- <location line="-584"/>
+ <location line="-589"/>
<source>About...</source>
<translation>Über ...</translation>
</message>
<message>
- <location line="+16"/>
+ <location line="+21"/>
<source>Navigation Toolbar</source>
<translation>Navigationsleiste</translation>
</message>
@@ -717,12 +717,12 @@ Grund:
<translation>Suchindex wird aufgebaut</translation>
</message>
<message>
- <location line="-661"/>
+ <location line="-669"/>
<source>Looking for Qt Documentation...</source>
<translation>Suche nach Qt-Dokumentation ...</translation>
</message>
<message>
- <location line="+219"/>
+ <location line="+227"/>
<source>&amp;Window</source>
<translation>&amp;Fenster</translation>
</message>
@@ -742,12 +742,12 @@ Grund:
<translation>Zoom</translation>
</message>
<message>
- <location line="-161"/>
+ <location line="-169"/>
<source>&amp;File</source>
<translation>&amp;Datei</translation>
</message>
<message>
- <location line="+29"/>
+ <location line="+32"/>
<source>&amp;Edit</source>
<translation>&amp;Bearbeiten</translation>
</message>
diff --git a/translations/designer_de.ts b/translations/designer_de.ts
index 475a5d5..b508b7f 100644
--- a/translations/designer_de.ts
+++ b/translations/designer_de.ts
@@ -180,12 +180,12 @@
<context>
<name>BrushPropertyManager</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="+149"/>
+ <location filename="../tools/designer/src/components/propertyeditor/brushpropertymanager.cpp" line="+159"/>
<source>Style</source>
<translation>Stil</translation>
</message>
<message>
- <location line="-97"/>
+ <location line="-107"/>
<source>No brush</source>
<translation>Kein Muster</translation>
</message>
@@ -260,7 +260,7 @@
<translation>Kreuzende Diagonalen</translation>
</message>
<message>
- <location line="+94"/>
+ <location line="+104"/>
<source>Color</source>
<translation>Farbe</translation>
</message>
@@ -741,7 +741,7 @@
<context>
<name>Designer</name>
<message>
- <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+449"/>
+ <location filename="../tools/designer/src/components/formeditor/qdesigner_resource.cpp" line="+446"/>
<source>Qt Designer</source>
<translation>Qt Designer</translation>
</message>
@@ -1202,7 +1202,7 @@
<context>
<name>MainWindowBase</name>
<message>
- <location filename="../tools/designer/src/designer/mainwindow.cpp" line="+119"/>
+ <location filename="../tools/designer/src/designer/mainwindow.cpp" line="+121"/>
<source>Main</source>
<extracomment>Not currently used (main tool bar)</extracomment>
<translation>Haupt-Werkzeugleiste</translation>
@@ -1579,7 +1579,7 @@ Script: %3</source>
<context>
<name>QDesignerActions</name>
<message>
- <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="+178"/>
+ <location filename="../tools/designer/src/designer/qdesigner_actions.cpp" line="+180"/>
<source>Edit Widgets</source>
<translation>Widgets bearbeiten</translation>
</message>
@@ -1604,17 +1604,17 @@ Script: %3</source>
<translation>Einstellungen...</translation>
</message>
<message>
- <location line="+298"/>
+ <location line="+321"/>
<source>Clear &amp;Menu</source>
<translation>Menü &amp;löschen</translation>
</message>
<message>
- <location line="-233"/>
+ <location line="-246"/>
<source>CTRL+SHIFT+S</source>
<translation>CTRL+SHIFT+S</translation>
</message>
<message>
- <location line="+113"/>
+ <location line="+126"/>
<source>CTRL+R</source>
<translation>CTRL+R</translation>
</message>
@@ -1668,7 +1668,7 @@ Script: %3</source>
<translation>Designer-UI-Dateien (*.%1);;Alle Dateien (*)</translation>
</message>
<message>
- <location line="-620"/>
+ <location line="-643"/>
<source>%1 already exists.
Do you want to replace it?</source>
<translation>Die Datei %1 existiert bereits.
@@ -1680,7 +1680,7 @@ Möchten Sie sie überschreiben?</translation>
<translation>Das Formular %1 wurde gespeichert...</translation>
</message>
<message>
- <location line="+371"/>
+ <location line="+394"/>
<source>&amp;Recent Forms</source>
<translation>&amp;Zuletzt bearbeitete Formulare</translation>
</message>
@@ -1764,7 +1764,7 @@ Möchten Sie einen anderen Namen eingeben oder ein neues Formular erzeugen?</tra
<translation>Vorschau &amp;schließen</translation>
</message>
<message>
- <location line="-898"/>
+ <location line="-921"/>
<source>Save &amp;Image...</source>
<translation>&amp;Vorschaubild speichern...</translation>
</message>
@@ -1779,7 +1779,7 @@ Möchten Sie einen anderen Namen eingeben oder ein neues Formular erzeugen?</tra
<translation>&amp;Zusätzliche Schriftarten...</translation>
</message>
<message>
- <location line="+651"/>
+ <location line="+674"/>
<source>The file %1 could not be opened.
Reason: %2
Would you like to retry or select a different file?</source>
@@ -1813,7 +1813,7 @@ Möchten Sie es noch einmal versuchen?</translation>
<translation>Die Datei %1 konnte nicht geschrieben werden.</translation>
</message>
<message>
- <location line="-1163"/>
+ <location line="-1186"/>
<source>&amp;New...</source>
<translation>&amp;Neu...</translation>
</message>
@@ -1844,17 +1844,17 @@ Möchten Sie es noch einmal versuchen?</translation>
</message>
<message>
<location line="+1"/>
- <location line="+901"/>
+ <location line="+924"/>
<source>&amp;Close</source>
<translation>&amp;Schließen</translation>
</message>
<message>
- <location line="-896"/>
+ <location line="-919"/>
<source>View &amp;Code...</source>
<translation>&amp;Code anzeigen...</translation>
</message>
<message>
- <location line="+424"/>
+ <location line="+447"/>
<location line="+248"/>
<source>Save Form As</source>
<translation>Formular unter einem anderen Namen speichern</translation>
@@ -1886,7 +1886,7 @@ Möchten Sie es noch einmal versuchen?</translation>
<translation>%1 wurde gedruckt.</translation>
</message>
<message>
- <location line="-1149"/>
+ <location line="-1162"/>
<source>ALT+CTRL+S</source>
<translation>ALT+CTRL+S</translation>
</message>
@@ -2085,7 +2085,7 @@ Möchten Sie es noch einmal versuchen?</translation>
<context>
<name>QDesignerPropertySheet</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qdesigner_propertysheet.cpp" line="+755"/>
+ <location filename="../tools/designer/src/lib/shared/qdesigner_propertysheet.cpp" line="+758"/>
<source>Dynamic Properties</source>
<translation>Dynamische Eigenschaften</translation>
</message>
@@ -2098,14 +2098,14 @@ Möchten Sie es noch einmal versuchen?</translation>
<translation>Der Layout-Typ &apos;%1&apos; wird nicht unterstützt; es wurde ein Grid-Layout erzeugt.</translation>
</message>
<message>
- <location line="+243"/>
+ <location line="+239"/>
<source>The container extension of the widget &apos;%1&apos; (%2) returned a widget not managed by Designer &apos;%3&apos; (%4) when queried for page #%5.
Container pages should only be added by specifying them in XML returned by the domXml() method of the custom widget.</source>
<translation>Die Container-Extension des Widgets &apos;%1&apos; (%2) gab für Seite %5 ein Widget &apos;%3&apos; (%4) zurück, was nicht von Designer verwaltet wird.
Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifiziert werden.</translation>
</message>
<message>
- <location line="+599"/>
+ <location line="+545"/>
<source>Unexpected element &lt;%1&gt;</source>
<extracomment>Parsing clipboard contents</extracomment>
<translation>Ungültiges Element &lt;%1&gt;</translation>
@@ -2207,12 +2207,12 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<translation>Werkzeugleisten</translation>
</message>
<message>
- <location line="+465"/>
+ <location line="+466"/>
<source>Save Forms?</source>
<translation>Formulare speichern?</translation>
</message>
<message>
- <location line="-494"/>
+ <location line="-495"/>
<source>&amp;View</source>
<translation>&amp;Ansicht</translation>
</message>
@@ -2227,7 +2227,7 @@ Container-Seiten sollten ausschließlich im XML der domXML()-Methode spezifizier
<translation>Widgetbox</translation>
</message>
<message>
- <location line="+292"/>
+ <location line="+293"/>
<source>If you do not review your documents, all your changes will be lost.</source>
<translation>Die Änderungen gehen verloren, wenn Sie sich die Formulare nicht noch einmal ansehen.</translation>
</message>
@@ -3497,7 +3497,7 @@ Dies kann zum Beispiel eine Sprachkennung wie &quot;_de&quot; sein.</translation
<context>
<name>QtResourceView</name>
<message>
- <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="+566"/>
+ <location filename="../tools/designer/src/lib/shared/qtresourceview.cpp" line="+567"/>
<source>Size: %1 x %2
%3</source>
<translation>Größe: %1 x %2
@@ -3908,6 +3908,26 @@ Möchten Sie sie überschreiben?</translation>
</message>
<message>
<location line="+6"/>
+ <source>File</source>
+ <translation>Datei</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Edit</source>
+ <translation>Bearbeiten</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Tools</source>
+ <translation>Werkzeuge</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Form</source>
+ <translation>Formular</translation>
+ </message>
+ <message>
+ <location line="+4"/>
<source>Toolbars</source>
<translation>Werkzeugleisten</translation>
</message>
@@ -4698,9 +4718,14 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::FilterWidget</name>
<message>
- <location filename="../tools/designer/src/lib/shared/filterwidget.cpp" line="+185"/>
- <source>&lt;Filter&gt;</source>
- <translation>&lt;Filter&gt;</translation>
+ <location filename="../tools/designer/src/lib/shared/filterwidget.cpp" line="+160"/>
+ <source>Filter</source>
+ <translation>Filter</translation>
+ </message>
+ <message>
+ <location line="+36"/>
+ <source>Clear text</source>
+ <translation>Text löschen</translation>
</message>
</context>
<context>
@@ -4827,7 +4852,7 @@ Möchten Sie sie überschreiben?</translation>
<context>
<name>qdesigner_internal::FormWindowBase</name>
<message>
- <location filename="../tools/designer/src/lib/shared/formwindowbase.cpp" line="+393"/>
+ <location filename="../tools/designer/src/lib/shared/formwindowbase.cpp" line="+404"/>
<source>Delete</source>
<translation>Löschen</translation>
</message>
@@ -4997,7 +5022,7 @@ Möchten Sie sie überschreiben?</translation>
<translation>Formular&amp;einstellungen...</translation>
</message>
<message>
- <location line="+92"/>
+ <location line="+94"/>
<source>Break Layout</source>
<translation>Layout auflösen</translation>
</message>
@@ -5018,7 +5043,7 @@ Möchten Sie sie überschreiben?</translation>
<translation>Formulareinstellungen - %1</translation>
</message>
<message>
- <location line="-525"/>
+ <location line="-527"/>
<source>Removes empty columns and rows</source>
<translation>Entfernt unbesetzte Zeilen und Spalten</translation>
</message>
@@ -5975,7 +6000,7 @@ ate the goose who was loose.</source>
<context>
<name>qdesigner_internal::PropertyEditor</name>
<message>
- <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="+183"/>
+ <location filename="../tools/designer/src/components/propertyeditor/propertyeditor.cpp" line="+231"/>
<source>Add Dynamic Property...</source>
<translation>Dynamische Eigenschaft hinzufügen...</translation>
</message>
@@ -5995,14 +6020,14 @@ ate the goose who was loose.</source>
<translation>Detailansicht</translation>
</message>
<message>
- <location line="+597"/>
+ <location line="+598"/>
<source>Object: %1
Class: %2</source>
<translation>Objekt: %1
Klasse: %2</translation>
</message>
<message>
- <location line="-600"/>
+ <location line="-601"/>
<source>Sorting</source>
<translation>Sortiert</translation>
</message>
@@ -6012,7 +6037,7 @@ Klasse: %2</translation>
<translation>Farbige Hervorhebung</translation>
</message>
<message>
- <location line="+66"/>
+ <location line="+61"/>
<source>Configure Property Editor</source>
<translation>Anzeige der Eigenschaften konfigurieren</translation>
</message>
diff --git a/translations/linguist_de.ts b/translations/linguist_de.ts
index 14095ba..5597458 100644
--- a/translations/linguist_de.ts
+++ b/translations/linguist_de.ts
@@ -453,7 +453,7 @@ Es wird mit einer einfachen Universalform gearbeitet.</translation>
<translation>Ctrl+Q</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+646"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="+668"/>
<location line="+15"/>
<source>&amp;Save</source>
<translation>&amp;Speichern</translation>
@@ -909,7 +909,7 @@ Es wird mit einer einfachen Universalform gearbeitet.</translation>
<translation>Freigeben unter ...</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-2013"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-2035"/>
<source></source>
<comment>This is the application&apos;s main window.</comment>
<translation></translation>
@@ -1023,12 +1023,12 @@ Soll die erstgenannte Datei übersprungen werden?</translation>
<message>
<location filename="../tools/linguist/linguist/mainwindow.ui"/>
<location filename="../tools/linguist/linguist/mainwindow.cpp" line="+15"/>
- <location line="+1165"/>
+ <location line="+1187"/>
<source>Release</source>
<translation>Freigeben</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1164"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1186"/>
<source>Qt message files for released applications (*.qm)
All files (*)</source>
<translation>Qt-Nachrichtendateien (*.qm)
@@ -1095,7 +1095,7 @@ Alle Dateien (*)</translation>
<location line="+34"/>
<location line="+24"/>
<location line="+22"/>
- <location line="+516"/>
+ <location line="+538"/>
<location line="+1"/>
<location line="+274"/>
<location line="+40"/>
@@ -1104,7 +1104,7 @@ Alle Dateien (*)</translation>
<translation>Qt Linguist</translation>
</message>
<message>
- <location line="-1198"/>
+ <location line="-1220"/>
<location line="+102"/>
<source>Cannot find the string &apos;%1&apos;.</source>
<translation>Kann Zeichenkette &apos;%1&apos; nicht finden.</translation>
@@ -1233,7 +1233,7 @@ Alle Dateien (*)</translation>
<translation>Es wurden alle Übersetzungseinheiten abgearbeitet.</translation>
</message>
<message>
- <location line="+176"/>
+ <location line="+198"/>
<source>&amp;Window</source>
<translation>&amp;Fenster</translation>
</message>
@@ -1493,7 +1493,7 @@ Alle Dateien (*)</translation>
<message>
<location/>
<source>Display information about the Qt toolkit by Nokia.</source>
- <translation type="unfinished"></translation>
+ <translation>Zeigt Informationen über das Qt-Toolkit von Nokia an.</translation>
</message>
</context>
<context>
@@ -1797,7 +1797,7 @@ Zeile: %2</translation>
<translation>Kompilierte Qt-Übersetzungen</translation>
</message>
<message>
- <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1280"/>
+ <location filename="../tools/linguist/linguist/mainwindow.cpp" line="-1302"/>
<source>Translation files (%1);;</source>
<translation>Übersetzungsdateien (%1);;</translation>
</message>
@@ -1818,11 +1818,16 @@ Zeile: %2</translation>
<translation>Qt Linguist</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/po.cpp" line="+658"/>
+ <location filename="../tools/linguist/shared/po.cpp" line="+817"/>
<source>GNU Gettext localization files</source>
<translation>GNU-Gettext-Übersetzungsdateien</translation>
</message>
<message>
+ <location line="+7"/>
+ <source>GNU Gettext localization template files</source>
+ <translation>Vorlagen für GNU-Gettext-Übersetzungsdateien</translation>
+ </message>
+ <message>
<location filename="../tools/linguist/shared/ts.cpp" line="+752"/>
<source>Qt translation sources (format 1.1)</source>
<translation>Qt-Übersetzungsdateien (Formatversion 1.1)</translation>
@@ -1838,7 +1843,7 @@ Zeile: %2</translation>
<translation>Qt-Übersetzungsdateien (aktuelles Format)</translation>
</message>
<message>
- <location filename="../tools/linguist/shared/xliff.cpp" line="+827"/>
+ <location filename="../tools/linguist/shared/xliff.cpp" line="+829"/>
<source>XLIFF localization files</source>
<translation>XLIFF-Übersetzungsdateien</translation>
</message>
diff --git a/translations/qt_de.ts b/translations/qt_de.ts
index ec7e786..86d5edb 100644
--- a/translations/qt_de.ts
+++ b/translations/qt_de.ts
@@ -12,7 +12,7 @@
<context>
<name>FakeReply</name>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp" line="+2200"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp" line="+2217"/>
<source>Fake error !</source>
<translation>Fake error !</translation>
</message>
@@ -25,7 +25,7 @@
<context>
<name>MAC_APPLICATION_MENU</name>
<message>
- <location filename="../src/gui/kernel/qapplication.cpp" line="+2314"/>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="+2316"/>
<source>Services</source>
<translation>Dienste</translation>
</message>
@@ -44,6 +44,21 @@
<source>Show All</source>
<translation>Alle anzeigen</translation>
</message>
+ <message>
+ <location line="+1"/>
+ <source>Preferences...</source>
+ <translation>Einstellungen...</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Quit %1</source>
+ <translation>%1 beenden</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>About %1</source>
+ <translation>Über %1</translation>
+ </message>
</context>
<context>
<name>Phonon::</name>
@@ -81,25 +96,32 @@
<context>
<name>Phonon::AudioOutput</name>
<message>
- <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+385"/>
+ <location filename="../src/3rdparty/phonon/phonon/audiooutput.cpp" line="+444"/>
+ <location line="+34"/>
<source>&lt;html&gt;The audio playback device &lt;b&gt;%1&lt;/b&gt; does not work.&lt;br/&gt;Falling back to &lt;b&gt;%2&lt;/b&gt;.&lt;/html&gt;</source>
<translation>&lt;html&gt;Das Audiogerät &lt;b&gt;%1&lt;/b&gt; funktioniert nicht.&lt;br/&gt;Es wird stattdessen &lt;b&gt;%2&lt;/b&gt; verwendet.&lt;/html&gt;</translation>
</message>
<message>
- <location line="+13"/>
+ <location line="-21"/>
<source>&lt;html&gt;Switching to the audio playback device &lt;b&gt;%1&lt;/b&gt;&lt;br/&gt;which just became available and has higher preference.&lt;/html&gt;</source>
<translation>&lt;html&gt;Das Audiogerät &lt;b&gt;%1&lt;/b&gt; wurde aktiviert,&lt;br/&gt;da es gerade verfügbar und höher priorisiert ist.&lt;/html&gt;</translation>
</message>
<message>
<location line="+3"/>
+ <location line="+14"/>
<source>Revert back to device &apos;%1&apos;</source>
<translation>Zurückschalten zum Gerät &apos;%1&apos;</translation>
</message>
+ <message>
+ <location line="-3"/>
+ <source>&lt;html&gt;Switching to the audio playback device &lt;b&gt;%1&lt;/b&gt;&lt;br/&gt;which has higher preference or is specifically configured for this stream.&lt;/html&gt;</source>
+ <translation>&lt;html&gt;Es wird zum Audiogerät &lt;b&gt;%1&lt;/b&gt; geschaltet, &lt;br/&gt;da es höher priorisiert ist oder spezifisch für diesen Stream konfiguriert wurde.&lt;/html&gt;</translation>
+ </message>
</context>
<context>
<name>Phonon::Gstreamer::Backend</name>
<message>
- <location filename="../src/3rdparty/phonon/gstreamer/backend.cpp" line="+182"/>
+ <location filename="../src/3rdparty/phonon/gstreamer/backend.cpp" line="+188"/>
<source>Warning: You do not seem to have the package gstreamer0.10-plugins-good installed.
Some video features have been disabled.</source>
<translation>Achtung: Das Paket gstreamer0.10-plugins-good ist nicht installiert.
@@ -116,7 +138,7 @@ Die Audio- und Video-Unterstützung steht nicht zur Verfügung.</translation>
<context>
<name>Phonon::Gstreamer::MediaObject</name>
<message>
- <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+90"/>
+ <location filename="../src/3rdparty/phonon/gstreamer/mediaobject.cpp" line="+93"/>
<source>Cannot start playback.
Check your GStreamer installation and make sure you
@@ -126,29 +148,39 @@ have libgstreamer-plugins-base installed.</source>
Bitte überprüfen Sie Ihre GStreamer-Installation und stellen Sie sicher, dass das Paket libgstreamer-plugins-base installiert ist.</translation>
</message>
<message>
- <location line="+113"/>
+ <location line="+129"/>
+ <source>Missing codec helper script assistant.</source>
+ <translation>Der Skript-Hilfsassistent des Codecs fehlt.</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Plugin codec installation failed for codec: %0</source>
+ <translation>Die Installation des Codec-Plugins schlug fehl für: %0</translation>
+ </message>
+ <message>
+ <location line="+11"/>
<source>A required codec is missing. You need to install the following codec(s) to play this content: %0</source>
<translation>Es sind nicht alle erforderlichen Codecs installiert. Um diesen Inhalt abzuspielen, muss der folgende Codec installiert werden: %0</translation>
</message>
<message>
- <location line="+702"/>
- <location line="+8"/>
- <location line="+15"/>
- <location line="+26"/>
+ <location line="+730"/>
<location line="+6"/>
- <location line="+19"/>
- <location line="+339"/>
+ <location line="+13"/>
+ <location line="+24"/>
+ <location line="+6"/>
+ <location line="+18"/>
+ <location line="+434"/>
<location line="+24"/>
<source>Could not open media source.</source>
<translation>Die Medienquelle konnte nicht geöffnet werden.</translation>
</message>
<message>
- <location line="-424"/>
+ <location line="-514"/>
<source>Invalid source type.</source>
<translation>Ungültiger Typ der Medienquelle.</translation>
</message>
<message>
- <location line="+398"/>
+ <location line="+488"/>
<source>Could not locate media source.</source>
<translation>Die Medienquelle konnte nicht gefunden werden.</translation>
</message>
@@ -350,12 +382,40 @@ Bitte überprüfen Sie Ihre GStreamer-Installation und stellen Sie sicher, dass
<translation>Die Lautstärke konnte nicht eingestellt werden</translation>
</message>
<message>
- <location line="+50"/>
+ <location line="+45"/>
+ <source>Loading clip failed</source>
+ <translation>Das Laden des Clips schlug fehl</translation>
+ </message>
+ <message>
+ <location line="+24"/>
<source>Playback complete</source>
<translation>Abspielen beendet</translation>
</message>
</context>
<context>
+ <name>Phonon::MMF::AbstractVideoPlayer</name>
+ <message>
+ <location filename="../src/3rdparty/phonon/mmf/abstractvideoplayer.cpp" line="+108"/>
+ <source>Pause failed</source>
+ <translation>Fehler bei Pause-Funktion</translation>
+ </message>
+ <message>
+ <location line="+16"/>
+ <source>Seek failed</source>
+ <translation>Suchoperation fehlgeschlagen</translation>
+ </message>
+ <message>
+ <location line="+54"/>
+ <source>Getting position failed</source>
+ <translation>Die Position konnte nicht bestimmt werden</translation>
+ </message>
+ <message>
+ <location line="+66"/>
+ <source>Opening clip failed</source>
+ <translation>Der Clip konnte nicht geöffnet werden</translation>
+ </message>
+</context>
+<context>
<name>Phonon::MMF::AudioEqualizer</name>
<message>
<location filename="../src/3rdparty/phonon/mmf/audioequalizer.cpp" line="+92"/>
@@ -370,10 +430,17 @@ Bitte überprüfen Sie Ihre GStreamer-Installation und stellen Sie sicher, dass
<source>Getting position failed</source>
<translation>Die Position konnte nicht bestimmt werden</translation>
</message>
+</context>
+<context>
+ <name>Phonon::MMF::DsaVideoPlayer</name>
<message>
- <location line="+36"/>
- <source>Opening clip failed</source>
- <translation>Der Clip konnte nicht geöffnet werden</translation>
+ <location filename="../src/3rdparty/phonon/mmf/videoplayer_dsa.cpp" line="+238"/>
+ <location line="+15"/>
+ <location line="+8"/>
+ <location line="+22"/>
+ <location line="+22"/>
+ <source>Video display error</source>
+ <translation>Fehler bei der Video-Anzeige</translation>
</message>
</context>
<context>
@@ -450,7 +517,7 @@ Bitte überprüfen Sie Ihre GStreamer-Installation und stellen Sie sicher, dass
<context>
<name>Phonon::MMF::MediaObject</name>
<message>
- <location filename="../src/3rdparty/phonon/mmf/mediaobject.cpp" line="+270"/>
+ <location filename="../src/3rdparty/phonon/mmf/mediaobject.cpp" line="+276"/>
<source>Error opening source: type not supported</source>
<translation>Die Quelle konnte nicht geöffnet werden: Dieser Typ wird nicht unterstützt</translation>
</message>
@@ -469,38 +536,10 @@ Bitte überprüfen Sie Ihre GStreamer-Installation und stellen Sie sicher, dass
</message>
</context>
<context>
- <name>Phonon::MMF::VideoPlayer</name>
- <message>
- <location filename="../src/3rdparty/phonon/mmf/mmf_videoplayer.cpp" line="+125"/>
- <source>Pause failed</source>
- <translation>Fehler bei Pause-Funktion</translation>
- </message>
+ <name>Phonon::MMF::SurfaceVideoPlayer</name>
<message>
+ <location filename="../src/3rdparty/phonon/mmf/videoplayer_surface.cpp" line="+126"/>
<location line="+16"/>
- <source>Seek failed</source>
- <translation>Suchoperation fehlgeschlagen</translation>
- </message>
- <message>
- <location line="+54"/>
- <source>Getting position failed</source>
- <translation>Die Position konnte nicht bestimmt werden</translation>
- </message>
- <message>
- <location line="+26"/>
- <source>Opening clip failed</source>
- <translation>Der Clip konnte nicht geöffnet werden</translation>
- </message>
- <message>
- <location line="+26"/>
- <source>Buffering clip failed</source>
- <translation>Fehler beim Puffern des Clips</translation>
- </message>
- <message>
- <location line="+174"/>
- <location line="+12"/>
- <location line="+176"/>
- <location line="+15"/>
- <location line="+6"/>
<source>Video display error</source>
<translation>Fehler bei der Video-Anzeige</translation>
</message>
@@ -1236,7 +1275,7 @@ nach
<translation>Diese Socket-Operation wird nicht unterstützt</translation>
</message>
<message>
- <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+598"/>
+ <location filename="../src/network/access/qhttpnetworkconnection.cpp" line="+614"/>
<location filename="../src/network/socket/qabstractsocket.cpp" line="+203"/>
<source>Socket operation timed out</source>
<translation>Das Zeitlimit für die Operation wurde überschritten</translation>
@@ -1281,7 +1320,7 @@ nach
<context>
<name>QApplication</name>
<message>
- <location filename="../src/gui/kernel/qapplication.cpp" line="-10"/>
+ <location filename="../src/gui/kernel/qapplication.cpp" line="-13"/>
<source>QT_LAYOUT_DIRECTION</source>
<comment>Translate this string to the string &apos;LTR&apos; in left-to-right languages or to &apos;RTL&apos; in right-to-left languages (such as Hebrew and Arabic) to get proper widget layout.</comment>
<translation>LTR</translation>
@@ -1409,7 +1448,7 @@ nach
<context>
<name>QComboBox</name>
<message>
- <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1771"/>
+ <location filename="../src/plugins/accessible/widgets/complexwidgets.cpp" line="+1772"/>
<location line="+65"/>
<source>Open</source>
<translation>Öffnen</translation>
@@ -1558,7 +1597,7 @@ nach
<context>
<name>QDeclarativeAbstractAnimation</name>
<message>
- <location filename="../src/declarative/util/qdeclarativeanimation.cpp" line="+164"/>
+ <location filename="../src/declarative/util/qdeclarativeanimation.cpp" line="+165"/>
<source>Cannot animate non-existent property &quot;%1&quot;</source>
<translation>Die Eigenschaft &apos;%1&quot; existiert nicht und kann daher nicht animiert werden</translation>
</message>
@@ -1571,19 +1610,19 @@ nach
<context>
<name>QDeclarativeAnchors</name>
<message>
- <location filename="../src/declarative/graphicsitems/qdeclarativeanchors.cpp" line="+176"/>
+ <location filename="../src/declarative/graphicsitems/qdeclarativeanchors.cpp" line="+181"/>
<source>Possible anchor loop detected on fill.</source>
<translation>Bei der Fülloperation wurde eine potentielle Endlosschleife der Anker festgestellt.</translation>
</message>
<message>
- <location line="+28"/>
+ <location line="+29"/>
<source>Possible anchor loop detected on centerIn.</source>
<translation>Bei der Operation &apos;centerIn&apos; wurde eine potentielle Endlosschleife der Anker festgestellt.</translation>
</message>
<message>
- <location line="+170"/>
+ <location line="+201"/>
<location line="+34"/>
- <location line="+607"/>
+ <location line="+610"/>
<location line="+37"/>
<source>Cannot anchor to an item that isn&apos;t a parent or sibling.</source>
<translation>Das Ziel eines Anker muss ein Elternelement oder Element der gleichen Ebene sein.</translation>
@@ -1639,7 +1678,7 @@ nach
<context>
<name>QDeclarativeBehavior</name>
<message>
- <location filename="../src/declarative/util/qdeclarativebehavior.cpp" line="+124"/>
+ <location filename="../src/declarative/util/qdeclarativebehavior.cpp" line="+122"/>
<source>Cannot change the animation assigned to a Behavior.</source>
<translation>Die zu einem Behavior-Element gehörende Animation kann nicht geändert werden.</translation>
</message>
@@ -1647,7 +1686,15 @@ nach
<context>
<name>QDeclarativeBinding</name>
<message>
- <location filename="../src/declarative/qml/qdeclarativebinding.cpp" line="+195"/>
+ <location filename="../src/declarative/qml/qdeclarativebinding.cpp" line="+222"/>
+ <source>Binding loop detected for property &quot;%1&quot;</source>
+ <translation>Bei der für die Eigenschaft &quot;%1&quot; angegebenen Bindung wurde eine Endlosschleife festgestellt</translation>
+ </message>
+</context>
+<context>
+ <name>QDeclarativeCompiledBindings</name>
+ <message>
+ <location filename="../src/declarative/qml/qdeclarativecompiledbindings.cpp" line="+305"/>
<source>Binding loop detected for property &quot;%1&quot;</source>
<translation>Bei der für die Eigenschaft &quot;%1&quot; angegebenen Bindung wurde eine Endlosschleife festgestellt</translation>
</message>
@@ -1655,16 +1702,17 @@ nach
<context>
<name>QDeclarativeCompiler</name>
<message>
- <location filename="../src/declarative/qml/qdeclarativecompiler.cpp" line="+188"/>
- <location line="+1807"/>
+ <location filename="../src/declarative/qml/qdeclarativecompiler.cpp" line="+186"/>
+ <location line="+1654"/>
+ <location line="+187"/>
<location line="+82"/>
<location line="+75"/>
- <location line="+459"/>
+ <location line="+488"/>
<source>Invalid property assignment: &quot;%1&quot; is a read-only property</source>
<translation>Ungültige Zuweisung bei Eigenschaft: &quot;%1&quot; ist schreibgeschützt</translation>
</message>
<message>
- <location line="-2414"/>
+ <location line="-2477"/>
<source>Invalid property assignment: unknown enumeration</source>
<translation>Ungültige Zuweisung bei Eigenschaft: Ungültiger Aufzählungswert</translation>
</message>
@@ -1749,12 +1797,12 @@ nach
<translation>Ungültige Zuweisung bei Eigenschaft: Der Typ &quot;%1&quot; ist nicht unterstützt</translation>
</message>
<message>
- <location line="+259"/>
+ <location line="+269"/>
<source>Element is not creatable.</source>
<translation>Das Element kann nicht erzeugt werden.</translation>
</message>
<message>
- <location line="+548"/>
+ <location line="+603"/>
<source>Component elements may not contain properties other than id</source>
<translation>Komponenten dürfen außer id keine weiteren Eigenschaften enthalten.</translation>
</message>
@@ -1770,12 +1818,12 @@ nach
</message>
<message>
<location line="+6"/>
- <location line="+594"/>
+ <location line="+558"/>
<source>id is not unique</source>
<translation>ID-Wert nicht eindeutig</translation>
</message>
<message>
- <location line="-584"/>
+ <location line="-548"/>
<source>Invalid component body specification</source>
<translation>Inhalt der Komponente ungültig</translation>
</message>
@@ -1785,7 +1833,7 @@ nach
<translation>Es kann keine leere Komponentenangabe erzeugt werden</translation>
</message>
<message>
- <location line="+17"/>
+ <location line="+19"/>
<source>Invalid Script block. Specify either the source property or inline script</source>
<translation>Ungültiges Skript. Es muss die Eigenschaft oder ein eingebettetes Skript angegeben werden</translation>
</message>
@@ -1795,7 +1843,7 @@ nach
<translation>Ungültige Angabe für Skript</translation>
</message>
<message>
- <location line="+24"/>
+ <location line="+25"/>
<source>Properties cannot be set on Script block</source>
<translation>Für ein Skript können keine Eigenschaften angegeben werden</translation>
</message>
@@ -1805,12 +1853,7 @@ nach
<translation>Ungültiges Skript</translation>
</message>
<message>
- <location line="+144"/>
- <source>Incorrectly specified signal</source>
- <translation>Ungültige Signalspezifikation</translation>
- </message>
- <message>
- <location line="+13"/>
+ <location line="+128"/>
<source>Empty signal assignment</source>
<translation>Leere Signalzuweisung</translation>
</message>
@@ -1843,12 +1886,12 @@ nach
</message>
<message>
<location line="+2"/>
- <location line="+361"/>
+ <location line="+355"/>
<source>Cannot assign to non-existent property &quot;%1&quot;</source>
<translation>Es kann keine Zuweisung erfolgen, da keine Eigenschaft des Namens &apos;%1&quot; existiert</translation>
</message>
<message>
- <location line="-330"/>
+ <location line="-324"/>
<source>Invalid use of namespace</source>
<translation>Ungültige Verwendung eines Namensraums</translation>
</message>
@@ -1863,23 +1906,18 @@ nach
<translation>Ungültige Verwendung einer Eigenschaft des Typs &apos;Id&apos;</translation>
</message>
<message>
- <location line="+13"/>
- <source>id conflicts with type name</source>
- <translation>Der Wert der Id ist ungültig, da er bereits als Typnamen vergeben ist</translation>
- </message>
- <message>
- <location line="+2"/>
- <source>id conflicts with namespace prefix</source>
- <translation>Der Wert der Id ist ungültig, da er bereits als Namensraum vergeben ist</translation>
+ <location line="-356"/>
+ <source>Incorrectly specified signal assignment</source>
+ <translation></translation>
</message>
<message>
- <location line="+84"/>
+ <location line="+445"/>
<location line="+2"/>
<source>Property has already been assigned a value</source>
<translation>Der Eigenschaft wurde bereits ein Wert zugewiesen</translation>
</message>
<message>
- <location line="+8"/>
+ <location line="+12"/>
<location line="+8"/>
<source>Invalid grouped property access</source>
<translation>Falsche Gruppierung bei Zugriff auf Eigenschaft</translation>
@@ -1895,7 +1933,7 @@ nach
<translation>Ungültige Verwendung von Eigenschaften</translation>
</message>
<message>
- <location line="+12"/>
+ <location line="+13"/>
<source>Property assignment expected</source>
<translation>Zuweisung an Eigenschaft erwartet</translation>
</message>
@@ -1945,7 +1983,7 @@ nach
<translation>&quot;%1&quot; kann nicht auf &quot;%2&quot; angewandt werden</translation>
</message>
<message>
- <location line="+96"/>
+ <location line="+117"/>
<source>Duplicate default property</source>
<translation>Mehrfaches Auftreten der Vorgabe-Eigenschaft</translation>
</message>
@@ -2000,7 +2038,7 @@ nach
<translation>Ungültiger Typ der Eigenschaft</translation>
</message>
<message>
- <location line="+151"/>
+ <location line="+159"/>
<source>Invalid empty ID</source>
<translation>Ungültiger (leerer) Id-Wert</translation>
</message>
@@ -2050,7 +2088,7 @@ nach
<context>
<name>QDeclarativeComponent</name>
<message>
- <location filename="../src/declarative/qml/qdeclarativecomponent.cpp" line="+442"/>
+ <location filename="../src/declarative/qml/qdeclarativecomponent.cpp" line="+452"/>
<source>Invalid empty URL</source>
<translation>Ungültige (leere) URL</translation>
</message>
@@ -2058,18 +2096,13 @@ nach
<context>
<name>QDeclarativeCompositeTypeManager</name>
<message>
- <location filename="../src/declarative/qml/qdeclarativecompositetypemanager.cpp" line="+415"/>
- <location line="+220"/>
+ <location filename="../src/declarative/qml/qdeclarativecompositetypemanager.cpp" line="+483"/>
+ <location line="+268"/>
<source>Resource %1 unavailable</source>
<translation>Auf die Ressource %1 konnte nicht zugegriffen werden</translation>
</message>
<message>
- <location line="-141"/>
- <source>Import %1 unavailable</source>
- <translation>Import %1 nicht verfügbar</translation>
- </message>
- <message>
- <location line="+30"/>
+ <location line="-119"/>
<source>Namespace %1 cannot be used as a type</source>
<translation>Der Namensraum %1 kann nicht als Typangabe verwendet werden</translation>
</message>
@@ -2079,7 +2112,7 @@ nach
<translation>%1 ist keine Typangabe</translation>
</message>
<message>
- <location line="+42"/>
+ <location line="+46"/>
<source>Type %1 unavailable</source>
<translation>Der Typ %1 ist nicht verfügbar</translation>
</message>
@@ -2142,11 +2175,48 @@ nach
<source>SQL: database version mismatch</source>
<translation>SQL: Die Version der Datenbank entspricht nicht der erwarteten Version</translation>
</message>
+ <message>
+ <location filename="../src/declarative/qml/qdeclarativeengine.cpp" line="+1515"/>
+ <source>module &quot;%1&quot; definition &quot;%2&quot; not readable</source>
+ <translation>Modul &quot;%1&quot; Definition &quot;%2&quot; kann nicht gelesen werden</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>plugin cannot be loaded for module &quot;%1&quot;: %2</source>
+ <translation>Das Plugin des Moduls &quot;%1&quot; konnte nicht geladen werden: %2</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>module &quot;%1&quot; plugin &quot;%2&quot; not found</source>
+ <translation>Modul &quot;%1&quot; Plugin &quot;%2&quot; konnte nicht gefunden werden</translation>
+ </message>
+ <message>
+ <location line="+82"/>
+ <location line="+55"/>
+ <source>module &quot;%1&quot; version %2.%3 is not installed</source>
+ <translation>Modul &quot;%1&quot; Version %2.%3 ist nicht installiert</translation>
+ </message>
+ <message>
+ <location line="-53"/>
+ <source>module &quot;%1&quot; is not installed</source>
+ <translation>Modul &quot;%1&quot; ist nicht installiert</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <location line="+19"/>
+ <source>&quot;%1&quot;: no such directory</source>
+ <translation>Das Verzeichnis &quot;%1&quot; existiert nicht</translation>
+ </message>
+ <message>
+ <location line="-2"/>
+ <source>import &quot;%1&quot; has no qmldir and no namespace</source>
+ <translation>&quot;qmldir&quot; und Namensraum fehlt bei Import &quot;%1&quot;</translation>
+ </message>
</context>
<context>
<name>QDeclarativeFlipable</name>
<message>
- <location filename="../src/declarative/graphicsitems/qdeclarativeflipable.cpp" line="+124"/>
+ <location filename="../src/declarative/graphicsitems/qdeclarativeflipable.cpp" line="+125"/>
<source>front is a write-once property</source>
<translation>&apos;front&apos; kann nur einmal zugewiesen werden</translation>
</message>
@@ -2159,7 +2229,7 @@ nach
<context>
<name>QDeclarativeInfo</name>
<message>
- <location filename="../src/declarative/qml/qdeclarativeinfo.cpp" line="+112"/>
+ <location filename="../src/declarative/qml/qdeclarativeinfo.cpp" line="+113"/>
<location line="+3"/>
<source>unknown location</source>
<translation>Unbekannter Ort</translation>
@@ -2168,50 +2238,51 @@ nach
<context>
<name>QDeclarativeListModel</name>
<message>
- <location filename="../src/declarative/util/qdeclarativelistmodel.cpp" line="+483"/>
+ <location filename="../src/declarative/util/qdeclarativelistmodel.cpp" line="+399"/>
<source>remove: index %1 out of range</source>
<translation>remove: Der Index %1 ist außerhalb des gültigen Bereichs</translation>
</message>
<message>
- <location line="+30"/>
+ <location line="+33"/>
<source>insert: value is not an object</source>
<translation>insert: Der Wert ist kein Objekt</translation>
</message>
<message>
- <location line="+9"/>
+ <location line="+5"/>
<source>insert: index %1 out of range</source>
<translation>insert: Der Index %1 ist außerhalb des gültigen Bereichs</translation>
</message>
<message>
- <location line="+29"/>
+ <location line="+30"/>
<source>move: out of range</source>
<translation>move: Außerhalb des gültigen Bereichs</translation>
</message>
<message>
- <location line="+49"/>
+ <location line="+40"/>
<source>append: value is not an object</source>
<translation>append: Der Wert ist kein Objekt</translation>
</message>
<message>
- <location line="+39"/>
+ <location line="+34"/>
<source>get: index %1 out of range</source>
<translation>get: Der Index %1 ist außerhalb des gültigen Bereichs</translation>
</message>
<message>
- <location line="+33"/>
+ <location line="+25"/>
<source>set: value is not an object</source>
<translation>set: Der Wert ist kein Objekt</translation>
</message>
<message>
<location line="+4"/>
- <location line="+39"/>
+ <location line="+34"/>
<source>set: index %1 out of range</source>
<translation>set: Der Index %1 ist außerhalb des gültigen Bereichs</translation>
</message>
<message>
- <location line="+38"/>
- <source>ListElement: cannot use default property</source>
- <translation>ListElement: Die Vorgabe-Eigenschaft kann nicht verwendet werden</translation>
+ <location line="+39"/>
+ <location line="+15"/>
+ <source>ListElement: cannot contain nested elements</source>
+ <translation>ListElement kann keine geschachtelten Elemente enthalten</translation>
</message>
<message>
<location line="+4"/>
@@ -2219,20 +2290,28 @@ nach
<translation>ListElement: Die &quot;id&quot;-Eigenschaft kann nicht verwendet werden</translation>
</message>
<message>
- <location line="+46"/>
+ <location line="+49"/>
<source>ListElement: cannot use script for property value</source>
<translation>ListElement: Es kann kein Skript für den Wert der Eigenschaft verwendet werden</translation>
</message>
<message>
- <location line="+25"/>
+ <location line="+29"/>
<source>ListModel: undefined property &apos;%1&apos;</source>
<translation>ListModel: Die Eigenschaft &apos;%1&apos; ist nicht definiert</translation>
</message>
</context>
<context>
+ <name>QDeclarativeLoader</name>
+ <message>
+ <location filename="../src/declarative/graphicsitems/qdeclarativeloader.cpp" line="+309"/>
+ <source>Loader does not support loading non-visual elements.</source>
+ <translation>Das Laden nicht-visueller Elemente ist nicht unterstützt.</translation>
+ </message>
+</context>
+<context>
<name>QDeclarativeParentAnimation</name>
<message>
- <location filename="../src/declarative/util/qdeclarativeanimation.cpp" line="+2486"/>
+ <location filename="../src/declarative/util/qdeclarativeanimation.cpp" line="+2370"/>
<source>Unable to preserve appearance under complex transform</source>
<translation>Das Erscheinungsbild kann bei einer komplexen Transformation nicht beibehalten werden</translation>
</message>
@@ -2251,7 +2330,7 @@ nach
<context>
<name>QDeclarativeParentChange</name>
<message>
- <location filename="../src/declarative/util/qdeclarativestateoperations.cpp" line="+93"/>
+ <location filename="../src/declarative/util/qdeclarativestateoperations.cpp" line="+94"/>
<source>Unable to preserve appearance under complex transform</source>
<translation>Das Erscheinungsbild kann bei einer komplexen Transformation nicht beibehalten werden</translation>
</message>
@@ -2270,7 +2349,7 @@ nach
<context>
<name>QDeclarativeParser</name>
<message>
- <location filename="../src/declarative/qml/parser/qdeclarativejslexer.cpp" line="+556"/>
+ <location filename="../src/declarative/qml/parser/qdeclarativejslexer.cpp" line="+558"/>
<source>Illegal character</source>
<translation>Ungültiges Zeichen</translation>
</message>
@@ -2315,7 +2394,7 @@ nach
<translation>Ungültiger Modifikator &apos;%0&apos; bei regulärem Ausdruck</translation>
</message>
<message>
- <location filename="../src/declarative/qml/parser/qdeclarativejsparser.cpp" line="+1781"/>
+ <location filename="../src/declarative/qml/parser/qdeclarativejsparser.cpp" line="+1828"/>
<location line="+67"/>
<source>Syntax error</source>
<translation>Syntaxfehler</translation>
@@ -2332,14 +2411,14 @@ nach
<translation>Es wird das Element &apos;%1&apos; erwartet</translation>
</message>
<message>
- <location filename="../src/declarative/qml/qdeclarativescriptparser.cpp" line="+266"/>
- <location line="+434"/>
+ <location filename="../src/declarative/qml/qdeclarativescriptparser.cpp" line="+264"/>
+ <location line="+481"/>
<location line="+59"/>
<source>Property value set multiple times</source>
<translation>Mehrfache Zuweisung eines Wertes an eine Eigenschaft</translation>
</message>
<message>
- <location line="-482"/>
+ <location line="-529"/>
<source>Expected type name</source>
<translation>Es wird ein Typname erwartet</translation>
</message>
@@ -2349,17 +2428,27 @@ nach
<translation>Ungültige Verwendung von Skript-Blöcken</translation>
</message>
<message>
- <location line="+154"/>
+ <location line="+161"/>
<source>Invalid import qualifier ID</source>
<translation>Ungültige Id-Angabe bei Import</translation>
</message>
<message>
+ <location line="+15"/>
+ <source>Script import qualifiers must be unique.</source>
+ <translation>Der für den Skript-Import angegebene Qualifizierer muss eindeutig sein.</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Script import requires a qualifier</source>
+ <translation>Der Skript-Import erfordert die Angabe eines Qualifizierers.</translation>
+ </message>
+ <message>
<location line="+11"/>
<source>Library import requires a version</source>
<translation>Der Import einer Bibliothek erfordert eine Versionsangabe</translation>
</message>
<message>
- <location line="+53"/>
+ <location line="+60"/>
<source>Expected parameter type</source>
<translation>Es wird eine Typangabe für den Parameter erwartet</translation>
</message>
@@ -2384,7 +2473,7 @@ nach
<translation>&apos;read-only&apos; wird an dieser Stelle noch nicht unterstützt</translation>
</message>
<message>
- <location line="+213"/>
+ <location line="+222"/>
<source>JavaScript declaration outside Script element</source>
<translation>Eine JavaScript-Deklaration ist außerhalb eines Skriptelementes nicht zulässig</translation>
</message>
@@ -2397,15 +2486,39 @@ nach
<context>
<name>QDeclarativePauseAnimation</name>
<message>
- <location filename="../src/declarative/util/qdeclarativeanimation.cpp" line="-2103"/>
+ <location filename="../src/declarative/util/qdeclarativeanimation.cpp" line="-1972"/>
<source>Cannot set a duration of &lt; 0</source>
<translation>Es kann keine Zeitdauer &lt;0 gesetzt werden</translation>
</message>
</context>
<context>
+ <name>QDeclarativePixmapCache</name>
+ <message>
+ <location filename="../src/declarative/util/qdeclarativepixmapcache.cpp" line="+197"/>
+ <source>Error decoding: %1: %2</source>
+ <translation>Fehler beim Decodieren: %1: %2</translation>
+ </message>
+ <message>
+ <location line="+70"/>
+ <source>Failed to get image from provider: %1</source>
+ <translation>Bilddaten konnten nicht erhalten werden: %1</translation>
+ </message>
+ <message>
+ <location line="+19"/>
+ <location line="+342"/>
+ <source>Cannot open: %1</source>
+ <translation>Fehlschlag beim Öffnen: %1</translation>
+ </message>
+ <message>
+ <location line="+37"/>
+ <source>Unknown Error loading %1</source>
+ <translation>Unbekannter Fehler beim Laden von %1</translation>
+ </message>
+</context>
+<context>
<name>QDeclarativePropertyAnimation</name>
<message>
- <location line="+1252"/>
+ <location filename="../src/declarative/util/qdeclarativeanimation.cpp" line="+1100"/>
<source>Cannot set a duration of &lt; 0</source>
<translation>Es kann keine Zeitdauer &lt;0 gesetzt werden</translation>
</message>
@@ -2413,7 +2526,12 @@ nach
<context>
<name>QDeclarativePropertyChanges</name>
<message>
- <location filename="../src/declarative/util/qdeclarativepropertychanges.cpp" line="+380"/>
+ <location filename="../src/declarative/util/qdeclarativepropertychanges.cpp" line="+231"/>
+ <source>PropertyChanges does not support creating state-specific objects.</source>
+ <translation>Die Erzeugung von Objekten, die einem Zustand zugeordnet sind, wird von PropertyChanges nicht unterstützt.</translation>
+ </message>
+ <message>
+ <location line="+151"/>
<source>Cannot assign to non-existent property &quot;%1&quot;</source>
<translation>Es kann keine Zuweisung erfolgen, da keine Eigenschaft des Namens &apos;%1&quot; existiert</translation>
</message>
@@ -2426,7 +2544,7 @@ nach
<context>
<name>QDeclarativeTextInput</name>
<message>
- <location filename="../src/declarative/graphicsitems/qdeclarativetextinput.cpp" line="+594"/>
+ <location filename="../src/declarative/graphicsitems/qdeclarativetextinput.cpp" line="+783"/>
<location line="+9"/>
<source>Could not load cursor delegate</source>
<translation>Cursor-Delegate konnte nicht geladen werden</translation>
@@ -2440,12 +2558,12 @@ nach
<context>
<name>QDeclarativeVME</name>
<message>
- <location filename="../src/declarative/qml/qdeclarativevme.cpp" line="+195"/>
+ <location filename="../src/declarative/qml/qdeclarativevme.cpp" line="+194"/>
<source>Unable to create object of type %1</source>
<translation>Es konnte kein Objekt des Typs %1 erzeugt werden</translation>
</message>
<message>
- <location line="+306"/>
+ <location line="+380"/>
<source>Cannot assign value %1 to property %2</source>
<translation>Der Wert &apos;%1&apos; kann nicht der Eigenschaft %2 zugewiesen werden</translation>
</message>
@@ -2465,7 +2583,7 @@ nach
<translation>Der Signal-Eigenschaft %1 kann kein Objekt zugewiesen werden</translation>
</message>
<message>
- <location line="+147"/>
+ <location line="+153"/>
<source>Cannot assign object to list</source>
<translation>Zuweisung eines Objekts an eine Liste nicht zulässig</translation>
</message>
@@ -2488,7 +2606,7 @@ nach
<context>
<name>QDeclarativeVisualDataModel</name>
<message>
- <location filename="../src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp" line="+1022"/>
+ <location filename="../src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp" line="+1032"/>
<source>Delegate component must be Item type.</source>
<translation>Delegate-Komponente muss vom Typ &apos;Item&apos; sein</translation>
</message>
@@ -2496,7 +2614,7 @@ nach
<context>
<name>QDeclarativeXmlListModelRole</name>
<message>
- <location filename="../src/declarative/util/qdeclarativexmllistmodel_p.h" line="+158"/>
+ <location filename="../src/declarative/util/qdeclarativexmllistmodel_p.h" line="+168"/>
<source>An XmlRole query must not start with &apos;/&apos;</source>
<translation>Eine XmlRole-Abfrage darf nicht mit &apos;/&apos; beginnen</translation>
</message>
@@ -2504,7 +2622,7 @@ nach
<context>
<name>QDeclarativeXmlRoleList</name>
<message>
- <location filename="../src/declarative/util/qdeclarativexmllistmodel.cpp" line="+623"/>
+ <location filename="../src/declarative/util/qdeclarativexmllistmodel.cpp" line="+638"/>
<source>An XmlListModel query must start with &apos;/&apos; or &quot;//&quot;</source>
<translation>Eine XmlListModel-Abfrage muss mit &apos;/&apos; oder &quot;//&quot; beginnen</translation>
</message>
@@ -2530,12 +2648,12 @@ nach
<context>
<name>QDialog</name>
<message>
- <location filename="../src/gui/dialogs/qdialog.cpp" line="+659"/>
+ <location filename="../src/gui/dialogs/qdialog.cpp" line="+645"/>
<source>What&apos;s This?</source>
<translation>Direkthilfe</translation>
</message>
<message>
- <location line="-135"/>
+ <location line="-122"/>
<source>Done</source>
<translation>Fertig</translation>
</message>
@@ -2543,9 +2661,9 @@ nach
<context>
<name>QDialogButtonBox</name>
<message>
- <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1906"/>
+ <location filename="../src/gui/dialogs/qmessagebox.cpp" line="+1920"/>
<location line="+464"/>
- <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+648"/>
+ <location filename="../src/gui/widgets/qdialogbuttonbox.cpp" line="+649"/>
<source>OK</source>
<translation>OK</translation>
</message>
@@ -2757,7 +2875,7 @@ nach
<context>
<name>QFile</name>
<message>
- <location filename="../src/corelib/io/qfile.cpp" line="+698"/>
+ <location filename="../src/corelib/io/qfile.cpp" line="+703"/>
<location line="+155"/>
<source>Destination file exists</source>
<translation>Die Zieldatei existiert bereits</translation>
@@ -2797,7 +2915,7 @@ nach
<name>QFileDialog</name>
<message>
<location filename="../src/gui/dialogs/qfiledialog.cpp" line="+558"/>
- <location line="+471"/>
+ <location line="+481"/>
<source>All Files (*)</source>
<translation>Alle Dateien (*)</translation>
</message>
@@ -2820,13 +2938,13 @@ nach
<translation>Details</translation>
</message>
<message>
- <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+465"/>
+ <location filename="../src/gui/itemviews/qfileiconprovider.cpp" line="+467"/>
<location line="+1"/>
<source>File</source>
<translation>Datei</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-488"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-498"/>
<source>Open</source>
<translation>Öffnen</translation>
</message>
@@ -2836,7 +2954,7 @@ nach
<translation>Speichern unter</translation>
</message>
<message>
- <location line="+699"/>
+ <location line="+709"/>
<location line="+55"/>
<location line="+1532"/>
<source>&amp;Open</source>
@@ -2854,7 +2972,7 @@ nach
<translation>Zuletzt besucht</translation>
</message>
<message>
- <location line="-2530"/>
+ <location line="-2540"/>
<source>&amp;Rename</source>
<translation>&amp;Umbenennen</translation>
</message>
@@ -2869,17 +2987,17 @@ nach
<translation>&amp;Versteckte Dateien anzeigen</translation>
</message>
<message>
- <location line="+1976"/>
+ <location line="+1986"/>
<source>New Folder</source>
<translation>Neues Verzeichnis</translation>
</message>
<message>
- <location line="-2011"/>
+ <location line="-2021"/>
<source>Find Directory</source>
<translation>Verzeichnis suchen</translation>
</message>
<message>
- <location line="+706"/>
+ <location line="+716"/>
<source>Directories</source>
<translation>Verzeichnisse</translation>
</message>
@@ -2889,8 +3007,8 @@ nach
<translation>Alle Dateien (*.*)</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-665"/>
- <location line="+669"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-675"/>
+ <location line="+679"/>
<source>Directory:</source>
<translation>Verzeichnis:</translation>
</message>
@@ -2989,7 +3107,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<translation>Unbekannt</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2130"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-2140"/>
<source>Show </source>
<translation>Anzeigen </translation>
</message>
@@ -3005,7 +3123,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<translation>&amp;Neues Verzeichnis</translation>
</message>
<message>
- <location line="+677"/>
+ <location line="+687"/>
<location line="+43"/>
<source>&amp;Choose</source>
<translation>&amp;Auswählen</translation>
@@ -3016,8 +3134,8 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<translation>Löschen</translation>
</message>
<message>
- <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-713"/>
- <location line="+673"/>
+ <location filename="../src/gui/dialogs/qfiledialog.cpp" line="-723"/>
+ <location line="+683"/>
<source>File &amp;name:</source>
<translation>Datei&amp;name:</translation>
</message>
@@ -3033,12 +3151,42 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<source>Create New Folder</source>
<translation>Neuen Ordner erstellen</translation>
</message>
+ <message>
+ <location/>
+ <source>Go back</source>
+ <translation>Zurück</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Go forward</source>
+ <translation>Vor</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Go to the parent directory</source>
+ <translation>Gehe zum übergeordneten Verzeichnis</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Create a New Folder</source>
+ <translation>Neuen Ordner erstellen</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Change to list view mode</source>
+ <translation>Wechsle zu Listenansicht</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Change to detail view mode</source>
+ <translation>Wechsle zu Detailansicht</translation>
+ </message>
</context>
<context>
<name>QFileSystemModel</name>
<message>
<location filename="../src/gui/dialogs/qfilesystemmodel.cpp" line="+740"/>
- <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+476"/>
+ <location filename="../src/gui/itemviews/qdirmodel.cpp" line="+482"/>
<source>%1 TB</source>
<translation>%1 TB</translation>
</message>
@@ -3418,14 +3566,14 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<translation>Verbindung mit %1 beendet</translation>
</message>
<message>
- <location filename="../src/network/access/qftp.cpp" line="+1377"/>
+ <location filename="../src/network/access/qftp.cpp" line="+1383"/>
<location filename="../src/qt3support/network/q3ftp.cpp" line="-243"/>
<location line="+250"/>
<source>Connection closed</source>
<translation>Verbindung beendet</translation>
</message>
<message>
- <location line="-1489"/>
+ <location line="-1495"/>
<location filename="../src/qt3support/network/q3ftp.cpp" line="-1566"/>
<source>Host %1 not found</source>
<translation>Rechner %1 konnte nicht gefunden werden</translation>
@@ -3450,7 +3598,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<translation>Unbekannter Fehler</translation>
</message>
<message>
- <location line="+891"/>
+ <location line="+897"/>
<location filename="../src/qt3support/network/q3ftp.cpp" line="+77"/>
<source>Connecting to host failed:
%1</source>
@@ -3522,7 +3670,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
%1</translation>
</message>
<message>
- <location line="-1529"/>
+ <location line="-1535"/>
<location filename="../src/qt3support/network/q3ftp.cpp" line="-1356"/>
<source>Not connected</source>
<translation>Keine Verbindung</translation>
@@ -3912,7 +4060,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QIODevice</name>
<message>
- <location filename="../src/corelib/global/qglobal.cpp" line="+2094"/>
+ <location filename="../src/corelib/global/qglobal.cpp" line="+2099"/>
<source>Permission denied</source>
<translation>Zugriff verweigert</translation>
</message>
@@ -3932,7 +4080,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<translation>Kein freier Speicherplatz auf dem Gerät vorhanden</translation>
</message>
<message>
- <location filename="../src/corelib/io/qiodevice.cpp" line="+1564"/>
+ <location filename="../src/corelib/io/qiodevice.cpp" line="+1596"/>
<source>Unknown error</source>
<translation>Unbekannter Fehler</translation>
</message>
@@ -3940,7 +4088,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QInputContext</name>
<message>
- <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+256"/>
+ <location filename="../src/gui/inputmethod/qinputcontextfactory.cpp" line="+301"/>
<source>XIM</source>
<translation>XIM</translation>
</message>
@@ -3996,7 +4144,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<translation>Operation unmap fehlgeschlagen für &apos;%1&apos;: %2</translation>
</message>
<message>
- <location line="+361"/>
+ <location line="+375"/>
<source>The plugin &apos;%1&apos; uses incompatible Qt library. (%2.%3.%4) [%5]</source>
<translation>Das Plugin &apos;%1&apos; verwendet eine inkompatible Qt-Bibliothek. (%2.%3.%4) [%5]</translation>
</message>
@@ -4011,7 +4159,8 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<translation>Unbekannter Fehler</translation>
</message>
<message>
- <location line="-402"/>
+ <location line="-540"/>
+ <location line="+138"/>
<location filename="../src/corelib/plugin/qpluginloader.cpp" line="+343"/>
<source>The shared library was not found.</source>
<translation>Die dynamische Bibliothek konnte nicht gefunden werden.</translation>
@@ -4048,7 +4197,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QLineEdit</name>
<message>
- <location filename="../src/gui/widgets/qlineedit.cpp" line="+2107"/>
+ <location filename="../src/gui/widgets/qlineedit.cpp" line="+2110"/>
<source>Select All</source>
<translation>Alles auswählen</translation>
</message>
@@ -4124,7 +4273,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<message>
<location line="+3"/>
<location filename="../src/network/socket/qlocalsocket_unix.cpp" line="+3"/>
- <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+80"/>
+ <location filename="../src/network/socket/qlocalsocket_win.cpp" line="+79"/>
<location line="+59"/>
<source>%1: Invalid name</source>
<translation>%1: Ungültiger Name</translation>
@@ -4371,7 +4520,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QMediaPlayer</name>
<message>
- <location filename="../src/multimedia/playback/qmediaplayer.cpp" line="+494"/>
+ <location filename="../src/multimedia/playback/qmediaplayer.cpp" line="+496"/>
<source>The QMediaPlayer object does not have a valid service</source>
<translation>Das QMediaPlayer-Objekt verfügt über keinen gültigen Dienst</translation>
</message>
@@ -4462,7 +4611,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<translation>Hilfe</translation>
</message>
<message>
- <location line="-1119"/>
+ <location line="-1129"/>
<source>Show Details...</source>
<translation>Details einblenden...</translation>
</message>
@@ -4735,7 +4884,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QNetworkAccessManager</name>
<message>
- <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+885"/>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="+910"/>
<source>Network access is disabled.</source>
<translation>Der Zugriff auf das Netzwerk ist nicht gestattet.</translation>
</message>
@@ -4748,17 +4897,17 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<translation>Beim Herunterladen von %1 trat ein Fehler auf - Die Antwort des Servers ist: %2</translation>
</message>
<message>
- <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="-801"/>
+ <location filename="../src/network/access/qnetworkreplyimpl.cpp" line="-828"/>
<source>Protocol &quot;%1&quot; is unknown</source>
<translation>Das Protokoll &quot;%1&quot; ist unbekannt</translation>
</message>
<message>
- <location line="+177"/>
+ <location line="+192"/>
<source>Network session error.</source>
<translation>Fehler bei Netzwerkverbindung.</translation>
</message>
<message>
- <location line="+323"/>
+ <location line="+329"/>
<source>Temporary network failure.</source>
<translation>Das Netzwerk ist zur Zeit ausgefallen.</translation>
</message>
@@ -4766,7 +4915,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QNetworkReplyImpl</name>
<message>
- <location line="+110"/>
+ <location line="+111"/>
<location line="+28"/>
<source>Operation canceled</source>
<translation>Operation abgebrochen</translation>
@@ -4775,7 +4924,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QNetworkSession</name>
<message>
- <location filename="../src/network/bearer/qnetworksession.cpp" line="+441"/>
+ <location filename="../src/network/bearer/qnetworksession.cpp" line="+449"/>
<source>Invalid configuration.</source>
<translation>Ungültige Konfiguration.</translation>
</message>
@@ -4783,8 +4932,8 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QNetworkSessionPrivateImpl</name>
<message>
- <location filename="../src/plugins/bearer/qnetworksession_impl.cpp" line="+270"/>
- <location filename="../src/plugins/bearer/symbian/qnetworksession_impl.cpp" line="+215"/>
+ <location filename="../src/plugins/bearer/qnetworksession_impl.cpp" line="+272"/>
+ <location filename="../src/plugins/bearer/symbian/qnetworksession_impl.cpp" line="+227"/>
<source>Unknown session error.</source>
<translation>Unbekannter Fehler bei Netzwerkverbindung.</translation>
</message>
@@ -4813,7 +4962,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<translation>Das Roaming wurde abgebrochen oder ist hier nicht möglich.</translation>
</message>
<message>
- <location filename="../src/plugins/bearer/icd/qnetworksession_impl.cpp" line="+1159"/>
+ <location filename="../src/plugins/bearer/icd/qnetworksession_impl.cpp" line="+1005"/>
<source>Roaming error</source>
<translation>Fehler beim Roaming</translation>
</message>
@@ -4905,12 +5054,12 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QODBCDriver</name>
<message>
- <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1842"/>
+ <location filename="../src/sql/drivers/odbc/qsql_odbc.cpp" line="+1888"/>
<source>Unable to connect</source>
<translation>Es kann keine Verbindung aufgebaut werden</translation>
</message>
<message>
- <location line="+234"/>
+ <location line="+269"/>
<source>Unable to disable autocommit</source>
<translation>&apos;autocommit&apos; konnte nicht deaktiviert werden</translation>
</message>
@@ -4930,7 +5079,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<translation>&apos;autocommit&apos; konnte nicht aktiviert werden</translation>
</message>
<message>
- <location line="-277"/>
+ <location line="-312"/>
<source>Unable to connect - Driver doesn&apos;t support all functionality required</source>
<translation>Es kann keine Verbindung aufgebaut werden weil der Treiber die benötigte Funktionalität nicht vollständig unterstützt</translation>
</message>
@@ -4938,7 +5087,7 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QODBCResult</name>
<message>
- <location line="-940"/>
+ <location line="-941"/>
<location line="+351"/>
<source>QODBCResult::reset: Unable to set &apos;SQL_CURSOR_STATIC&apos; as statement attribute. Please check your ODBC driver configuration</source>
<translation>QODBCResult::reset: &apos;SQL_CURSOR_STATIC&apos; konnte nicht als Attribut des Befehls gesetzt werden. Bitte prüfen Sie die Konfiguration Ihres ODBC-Treibers</translation>
@@ -4990,10 +5139,16 @@ Möchten Sie die Datei trotzdem löschen?</translation>
<context>
<name>QObject</name>
<message>
- <location filename="../src/declarative/util/qdeclarativexmllistmodel.cpp" line="-193"/>
+ <location filename="../src/declarative/util/qdeclarativexmllistmodel.cpp" line="-194"/>
<source>&quot;%1&quot; duplicates a previous role name and will be disabled.</source>
<translation>&quot;%1&quot; ist bereits als Name einer Rolle vergeben und wird daher deaktiviert.</translation>
</message>
+ <message>
+ <location filename="../src/3rdparty/phonon/phonon/pulsesupport.cpp" line="+162"/>
+ <location line="+11"/>
+ <source>PulseAudio Sound Server</source>
+ <translation>PulseAudio Sound Server</translation>
+ </message>
</context>
<context>
<name>QPPDOptionsModel</name>
@@ -5915,7 +6070,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Zeitüberschreitung</translation>
</message>
<message>
- <location filename="../src/corelib/io/qprocess.cpp" line="+856"/>
+ <location filename="../src/corelib/io/qprocess.cpp" line="+866"/>
<location line="+52"/>
<location filename="../src/corelib/io/qprocess_win.cpp" line="-211"/>
<location line="+50"/>
@@ -7535,7 +7690,157 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Umdrehen</translation>
</message>
<message>
- <location line="+603"/>
+ <location line="+4"/>
+ <source>Kanji</source>
+ <translation>Kanji</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Muhenkan</source>
+ <translation>Muhenkan</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Henkan</source>
+ <translation>Henkan</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Romaji</source>
+ <translation>Romaji</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hiragana</source>
+ <translation>Hiragana</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Katakana</source>
+ <translation>Katakana</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hiragana Katakana</source>
+ <translation>Hiragana Katakana</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Zenkaku</source>
+ <translation>Zenkaku</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hankaku</source>
+ <translation>Hankaku</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Zenkaku Hankaku</source>
+ <translation>Zenkaku Hankaku</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Touroku</source>
+ <translation>Touroku</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Massyo</source>
+ <translation>Massyo</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Kana Lock</source>
+ <translation>Kana Lock</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Kana Shift</source>
+ <translation>Kana Shift</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Eisu Shift</source>
+ <translation>Eisu Shift</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Eisu toggle</source>
+ <translation>Eisu toggle</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Code input</source>
+ <translation>Code-Eingabe</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Multiple Candidate</source>
+ <translation>Mehrere Vorschläge</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Previous Candidate</source>
+ <translation>Vorangegangener Vorschlag</translation>
+ </message>
+ <message>
+ <location line="+4"/>
+ <source>Hangul</source>
+ <translation>Hangul</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul Start</source>
+ <translation>Hangul Anfang</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul End</source>
+ <translation>Hangul Ende</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul Hanja</source>
+ <translation>Hangul Hanja</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul Jamo</source>
+ <translation>Hangul Jamo</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul Romaja</source>
+ <translation>Hangul Romaja</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul Jeonja</source>
+ <translation>Hangul Jeonja</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul Banja</source>
+ <translation>Hangul Banja</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul PreHanja</source>
+ <translation>Hangul PreHanja</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul PostHanja</source>
+ <translation>Hangul PostHanja</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Hangul Special</source>
+ <translation>Hangul Special</translation>
+ </message>
+ <message>
+ <location line="+602"/>
<location line="+135"/>
<source>Ctrl</source>
<translation>Strg</translation>
@@ -7569,7 +7874,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>F%1</translation>
</message>
<message>
- <location line="-899"/>
+ <location line="-934"/>
<source>Home Page</source>
<translation>Startseite</translation>
</message>
@@ -7703,7 +8008,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Abbrechen</translation>
</message>
<message>
- <location filename="../src/gui/kernel/qsoftkeymanager_s60.cpp" line="+331"/>
+ <location filename="../src/gui/kernel/qsoftkeymanager_s60.cpp" line="+319"/>
<source>Exit</source>
<translation>Beenden</translation>
</message>
@@ -8039,7 +8344,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QTcpServer</name>
<message>
- <location filename="../src/network/socket/qtcpserver.cpp" line="+282"/>
+ <location filename="../src/network/socket/qtcpserver.cpp" line="+292"/>
<source>Operation on socket is not supported</source>
<translation>Diese Socket-Operation wird nicht unterstützt</translation>
</message>
@@ -8047,7 +8352,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QTextControl</name>
<message>
- <location filename="../src/gui/text/qtextcontrol.cpp" line="+2034"/>
+ <location filename="../src/gui/text/qtextcontrol.cpp" line="+2036"/>
<source>&amp;Undo</source>
<translation>&amp;Rückgängig</translation>
</message>
@@ -8105,7 +8410,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QUdpSocket</name>
<message>
- <location filename="../src/network/socket/qudpsocket.cpp" line="+179"/>
+ <location filename="../src/network/socket/qudpsocket.cpp" line="+189"/>
<source>This platform does not support IPv6</source>
<translation>Diese Plattform unterstützt kein IPv6</translation>
</message>
@@ -8205,7 +8510,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QWebFrame</name>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+712"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp" line="+753"/>
<source>Request cancelled</source>
<translation>Anfrage wurde abgebrochen</translation>
</message>
@@ -8238,7 +8543,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QWebPage</name>
<message>
- <location filename="../src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp" line="+42"/>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp" line="+44"/>
<source>Submit</source>
<comment>default label for Submit buttons in forms on web pages</comment>
<translation>Senden</translation>
@@ -8490,7 +8795,13 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Von rechts nach links</translation>
</message>
<message>
- <location line="+105"/>
+ <location line="+100"/>
+ <source>Missing Plug-in</source>
+ <comment>Label text to be used when a plug-in is missing</comment>
+ <translation>Fehlendes Plugin</translation>
+ </message>
+ <message>
+ <location line="+20"/>
<source>Loading...</source>
<comment>Media controller status message when the media is loading</comment>
<translation>Lädt...</translation>
@@ -8724,7 +9035,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>%1 Sekunden</translation>
</message>
<message>
- <location line="-210"/>
+ <location line="-225"/>
<source>Inspect</source>
<comment>Inspect Element context menu item</comment>
<translation>Prüfen</translation>
@@ -8748,13 +9059,13 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Gespeicherte Suchanfragen löschen</translation>
</message>
<message>
- <location line="+75"/>
+ <location line="+90"/>
<source>Unknown</source>
<comment>Unknown filesize FTP directory listing item</comment>
<translation>Unbekannt</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp" line="+167"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp" line="+236"/>
<source>Web Inspector - %2</source>
<translation>Web Inspector - %2</translation>
</message>
@@ -8765,12 +9076,12 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>%1 (%2x%3 Pixel)</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp" line="+416"/>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/network/qt/QNetworkReplyHandler.cpp" line="+456"/>
<source>Bad HTTP request</source>
<translation>Ungültige HTTP-Anforderung</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp" line="-291"/>
+ <location filename="../src/3rdparty/webkit/WebCore/platform/qt/Localizations.cpp" line="-306"/>
<source>This is a searchable index. Enter search keywords: </source>
<comment>text that appears at the start of nearly-obsolete web pages in the form of a &apos;searchable index&apos;</comment>
<translation>Dieser Index verfügt über eine Suchfunktion. Geben Sie einen Suchbegriff ein:</translation>
@@ -8850,22 +9161,22 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
</translation>
</message>
<message>
- <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1833"/>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp" line="+1959"/>
<source>JavaScript Alert - %1</source>
<translation>JavaScript-Hinweis - %1</translation>
</message>
<message>
- <location line="+16"/>
+ <location line="+17"/>
<source>JavaScript Confirm - %1</source>
<translation>JavaScript-Bestätigung - %1</translation>
</message>
<message>
- <location line="+19"/>
+ <location line="+20"/>
<source>JavaScript Prompt - %1</source>
<translation>JavaScript-Eingabeaufforderung - %1</translation>
</message>
<message>
- <location line="+25"/>
+ <location line="+26"/>
<source>JavaScript Problem - %1</source>
<translation>JavaScript-Problem - %1</translation>
</message>
@@ -8875,7 +9186,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Das Skript dieser Webseite ist fehlerhaft. Möchten Sie es anhalten?</translation>
</message>
<message>
- <location line="+381"/>
+ <location line="+374"/>
<source>Move the cursor to the next character</source>
<translation>Positionsmarke auf folgendes Zeichen setzen</translation>
</message>
@@ -9096,7 +9407,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QWidget</name>
<message>
- <location filename="../src/gui/kernel/qwidget.cpp" line="+5805"/>
+ <location filename="../src/gui/kernel/qwidget.cpp" line="+5809"/>
<source>*</source>
<translation>*</translation>
</message>
@@ -9104,7 +9415,7 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<context>
<name>QWizard</name>
<message>
- <location filename="../src/gui/dialogs/qwizard.cpp" line="+661"/>
+ <location filename="../src/gui/dialogs/qwizard.cpp" line="+701"/>
<source>Cancel</source>
<translation>Abbrechen</translation>
</message>
@@ -11927,4 +12238,27 @@ Bitte wählen Sie einen anderen Dateinamen.</translation>
<translation>Das Attribut &apos;%1&apos; enthält einen ungültigen qualifizierten Namen: %2.</translation>
</message>
</context>
+<context>
+ <name>Widget</name>
+ <message>
+ <location filename="../src/3rdparty/webkit/WebKit/qt/tests/hybridPixmap/widget.ui"/>
+ <source>Widget</source>
+ <translation>Widget</translation>
+ </message>
+ <message>
+ <location/>
+ <source>about:blank</source>
+ <translation>about:blank</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Image from Qt to HTML</source>
+ <translation>Bild von Qt zu HTML</translation>
+ </message>
+ <message>
+ <location/>
+ <source>Pixmap from Qt to HTML</source>
+ <translation>Pixmap von Qt zu HTML</translation>
+ </message>
+</context>
</TS>
diff --git a/translations/qt_help_de.ts b/translations/qt_help_de.ts
index 40d1158..c7a8103 100644
--- a/translations/qt_help_de.ts
+++ b/translations/qt_help_de.ts
@@ -43,7 +43,7 @@
</message>
<message>
<location line="+11"/>
- <location line="+49"/>
+ <location line="+52"/>
<source>Cannot open collection file: %1</source>
<translation>Katalogdatei kann nicht geöffnet werden: %1</translation>
</message>
@@ -58,7 +58,7 @@
<translation>Die Katalogdatei &apos;%1&apos; existiert bereits.</translation>
</message>
<message>
- <location line="+148"/>
+ <location line="+151"/>
<source>Unknown filter &apos;%1&apos;!</source>
<translation>Unbekannter Filter &apos;%1&apos;.</translation>
</message>
@@ -78,12 +78,12 @@
<translation>Die Datenbank &apos;%1&apos; kann nicht zur Optimierung geöffnet werden.</translation>
</message>
<message>
- <location line="-436"/>
+ <location line="-439"/>
<source>Cannot create directory: %1</source>
<translation>Das Verzeichnis kann nicht angelegt werden: %1</translation>
</message>
<message>
- <location line="+23"/>
+ <location line="+26"/>
<source>Cannot copy collection file: %1</source>
<translation>Die Katalogdatei kann nicht kopiert werden: %1</translation>
</message>
@@ -158,7 +158,7 @@
<translation>Die Datenbank-Datei %1 kann nicht geöffnet werden.</translation>
</message>
<message>
- <location line="+11"/>
+ <location line="+14"/>
<source>Cannot register namespace %1!</source>
<translation>Der Namensraum %1 kann nicht registriert werden.</translation>
</message>
@@ -266,7 +266,7 @@
<context>
<name>QHelpProject</name>
<message>
- <location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="+86"/>
+ <location filename="../tools/assistant/lib/qhelpprojectdata.cpp" line="+88"/>
<source>Unknown token.</source>
<translation>Unbekanntes Token.</translation>
</message>
@@ -282,16 +282,16 @@
</message>
<message>
<location line="+14"/>
- <source>A virtual folder must not contain a &apos;/&apos; character!</source>
- <translation>Ein virtuelles Verzeichnis darf kein &apos;/&apos;-Zeichen enthalten.</translation>
+ <source>Virtual folder has invalid syntax.</source>
+ <translation>Ungültige Syntax bei Angabe des virtuellen Verzeichnisses.</translation>
</message>
<message>
- <location line="+6"/>
- <source>A namespace must not contain a &apos;/&apos; character!</source>
- <translation>Ein Namensraum darf kein &apos;/&apos;-Zeichen enthalten.</translation>
+ <location line="+5"/>
+ <source>Namespace has invalid syntax.</source>
+ <translation>Ungültige Syntax der Namensraum-Angabe.</translation>
</message>
<message>
- <location line="+20"/>
+ <location line="+19"/>
<source>Missing namespace in QtHelpProject.</source>
<translation>Fehlender Namensraum in QtHelpProject.</translation>
</message>
@@ -306,7 +306,7 @@
<translation>Fehlendes Attribut in Schlagwort in Zeile %1.</translation>
</message>
<message>
- <location line="+125"/>
+ <location line="+141"/>
<source>The input file %1 could not be opened!</source>
<translation>Die Eingabe-Datei %1 kann nicht geöffnet werden.</translation>
</message>