Index: src/defaults.h
===================================================================
--- src/defaults.h	(revision 8203c075d505b02bb006555bf5447de09b91bb66)
+++ src/defaults.h	(revision 11086c2defca72c6721801934a247d69d28aedcf)
@@ -46,4 +46,6 @@
 //! Default for "Save main window state and position"
 #define DEF_SAVEPOS false
+//! Default for "Use translucency effects in Vista/7"
+#define DEF_USE_TRANSLUCENCY true
 
 //////// TASK
Index: src/globals.h
===================================================================
--- src/globals.h	(revision 8203c075d505b02bb006555bf5447de09b91bb66)
+++ src/globals.h	(revision 11086c2defca72c6721801934a247d69d28aedcf)
@@ -39,4 +39,6 @@
 // TSPSG Defaults
 #include "defaults.h"
+// Vista/7 Eyecandy
+#include "qtwin.h"
 
 // DEFINES
Index: src/main.cpp
===================================================================
--- src/main.cpp	(revision 8203c075d505b02bb006555bf5447de09b91bb66)
+++ src/main.cpp	(revision 11086c2defca72c6721801934a247d69d28aedcf)
@@ -33,4 +33,6 @@
 #endif
 
+#include "qtwin.h"
+
 #ifdef STATIC_BUILD
 	Q_IMPORT_PLUGIN(qjpeg)
Index: src/mainwindow.cpp
===================================================================
--- src/mainwindow.cpp	(revision 8203c075d505b02bb006555bf5447de09b91bb66)
+++ src/mainwindow.cpp	(revision 11086c2defca72c6721801934a247d69d28aedcf)
@@ -225,6 +225,6 @@
 {
 QPrintPreviewDialog ppd(printer, this);
-    connect(&ppd,SIGNAL(paintRequested(QPrinter *)),SLOT(printPreview(QPrinter *)));
-    ppd.exec();
+	connect(&ppd,SIGNAL(paintRequested(QPrinter *)),SLOT(printPreview(QPrinter *)));
+	ppd.exec();
 }
 
@@ -258,4 +258,7 @@
 			QApplication::restoreOverrideCursor();
 		}
+	}
+	if (sd.translucencyChanged() != 0) {
+		toggleTranclucency(sd.translucencyChanged() == 1);
 	}
 }
@@ -352,4 +355,6 @@
 	txtAbout->moveCursor(QTextCursor::Start);
 
+	bb->button(QDialogButtonBox::Ok)->setCursor(QCursor(Qt::PointingHandCursor));
+
 	vb->addLayout(hb);
 	vb->addWidget(txtAbout);
@@ -361,4 +366,9 @@
 
 	connect(bb, SIGNAL(accepted()), dlg, SLOT(accept()));
+
+	// Adding some eyecandy in Vista and 7 :-)
+	if (QtWin::isCompositionEnabled())  {
+		QtWin::enableBlurBehindWindow(dlg, true);
+	}
 
 	dlg->resize(410, 300);
@@ -758,7 +768,11 @@
 
 #ifdef Q_OS_WINCE
+	menuBar()->setDefaultAction(menuFile->menuAction());
+#endif // Q_OS_WINCE
+
+#ifdef Q_OS_WINCE
 	//! \hack HACK: A little hack for toolbar icons to have a sane size.
 	toolBar->setIconSize(QSize(logicalDpiX() / 4, logicalDpiY() / 4));
-#endif
+#endif // Q_OS_WINCE
 
 	solutionText->document()->setDefaultFont(settings->value("Output/Font",QFont(DEF_FONT_FAMILY,DEF_FONT_SIZE)).value<QFont>());
@@ -794,5 +808,8 @@
 	retranslateUi(false);
 
-	setCentralWidget(tabWidget);
+	// Adding some eyecandy in Vista and 7 :-)
+	if (QtWin::isCompositionEnabled() && settings->value("UseTranslucency", DEF_USE_TRANSLUCENCY).toBool())  {
+		toggleTranclucency(true);
+	}
 }
 
@@ -809,2 +826,13 @@
 #endif // QT_NO_PRINTER
 }
+
+void MainWindow::toggleTranclucency(bool enable)
+{
+	QtWin::enableBlurBehindWindow(this, enable);
+	QtWin::enableBlurBehindWindow(tabWidget, enable);
+
+	if (QtWin::enableBlurBehindWindow(tabTask, enable))
+		tabTask->setAutoFillBackground(enable);
+	if (QtWin::enableBlurBehindWindow(tabSolution, enable))
+		tabSolution->setAutoFillBackground(enable);
+}
Index: src/mainwindow.h
===================================================================
--- src/mainwindow.h	(revision 8203c075d505b02bb006555bf5447de09b91bb66)
+++ src/mainwindow.h	(revision 11086c2defca72c6721801934a247d69d28aedcf)
@@ -101,4 +101,5 @@
 	void setupUi();
 	void toggleSolutionActions(bool enable = true);
+	void toggleTranclucency(bool enable);
 };
 
Index: src/qtwin.cpp
===================================================================
--- src/qtwin.cpp	(revision 11086c2defca72c6721801934a247d69d28aedcf)
+++ src/qtwin.cpp	(revision 11086c2defca72c6721801934a247d69d28aedcf)
@@ -0,0 +1,222 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Use, modification and distribution is allowed without limitation,
+** warranty, liability or support of any kind.
+**
+****************************************************************************/
+
+#include "qtwin.h"
+#include <QLibrary>
+#include <QApplication>
+#include <QWidget>
+#include <QList>
+#include <QPointer>
+
+#ifdef Q_WS_WIN
+
+#include <qt_windows.h>
+
+// Blur behind data structures
+#define DWM_BB_ENABLE                 0x00000001  // fEnable has been specified
+#define DWM_BB_BLURREGION             0x00000002  // hRgnBlur has been specified
+#define DWM_BB_TRANSITIONONMAXIMIZED  0x00000004  // fTransitionOnMaximized has been specified
+#define WM_DWMCOMPOSITIONCHANGED        0x031E    // Composition changed window message
+
+typedef struct _DWM_BLURBEHIND
+{
+    DWORD dwFlags;
+    BOOL fEnable;
+    HRGN hRgnBlur;
+    BOOL fTransitionOnMaximized;
+} DWM_BLURBEHIND, *PDWM_BLURBEHIND;
+
+typedef struct _MARGINS
+{
+    int cxLeftWidth;
+    int cxRightWidth;
+    int cyTopHeight;
+    int cyBottomHeight;
+} MARGINS, *PMARGINS;
+
+typedef HRESULT (WINAPI *PtrDwmIsCompositionEnabled)(BOOL* pfEnabled);
+typedef HRESULT (WINAPI *PtrDwmExtendFrameIntoClientArea)(HWND hWnd, const MARGINS* pMarInset);
+typedef HRESULT (WINAPI *PtrDwmEnableBlurBehindWindow)(HWND hWnd, const DWM_BLURBEHIND* pBlurBehind);
+typedef HRESULT (WINAPI *PtrDwmGetColorizationColor)(DWORD *pcrColorization, BOOL *pfOpaqueBlend);
+
+static PtrDwmIsCompositionEnabled pDwmIsCompositionEnabled= 0;
+static PtrDwmEnableBlurBehindWindow pDwmEnableBlurBehindWindow = 0;
+static PtrDwmExtendFrameIntoClientArea pDwmExtendFrameIntoClientArea = 0;
+static PtrDwmGetColorizationColor pDwmGetColorizationColor = 0;
+
+
+/*
+ * Internal helper class that notifies windows if the
+ * DWM compositing state changes and updates the widget
+ * flags correspondingly.
+ */
+class WindowNotifier : public QWidget
+{
+public:
+    WindowNotifier() { winId(); }
+    void addWidget(QWidget *widget) { widgets.append(widget); }
+    void removeWidget(QWidget *widget) { widgets.removeAll(widget); }
+    bool winEvent(MSG *message, long *result);
+
+private:
+    QWidgetList widgets;
+};
+
+static bool resolveLibs()
+{
+    if (!pDwmIsCompositionEnabled) {
+        QLibrary dwmLib(QString::fromAscii("dwmapi"));
+        pDwmIsCompositionEnabled =(PtrDwmIsCompositionEnabled)dwmLib.resolve("DwmIsCompositionEnabled");
+        pDwmExtendFrameIntoClientArea = (PtrDwmExtendFrameIntoClientArea)dwmLib.resolve("DwmExtendFrameIntoClientArea");
+        pDwmEnableBlurBehindWindow = (PtrDwmEnableBlurBehindWindow)dwmLib.resolve("DwmEnableBlurBehindWindow");
+        pDwmGetColorizationColor = (PtrDwmGetColorizationColor)dwmLib.resolve("DwmGetColorizationColor");
+    }
+    return pDwmIsCompositionEnabled != 0;
+}
+
+#endif
+
+/*!
+  * Chekcs and returns true if Windows DWM composition
+  * is currently enabled on the system.
+  *
+  * To get live notification on the availability of
+  * this feature, you will currently have to
+  * reimplement winEvent() on your widget and listen
+  * for the WM_DWMCOMPOSITIONCHANGED event to occur.
+  *
+  */
+bool QtWin::isCompositionEnabled()
+{
+#ifdef Q_WS_WIN
+    if (resolveLibs()) {
+        HRESULT hr = S_OK;
+        BOOL isEnabled = false;
+        hr = pDwmIsCompositionEnabled(&isEnabled);
+        if (SUCCEEDED(hr))
+            return isEnabled;
+    }
+#endif
+    return false;
+}
+
+/*!
+  * Enables Blur behind on a Widget.
+  *
+  * \a enable tells if the blur should be enabled or not
+  */
+bool QtWin::enableBlurBehindWindow(QWidget *widget, bool enable)
+{
+    Q_ASSERT(widget);
+    bool result = false;
+#ifdef Q_WS_WIN
+    if (resolveLibs()) {
+        DWM_BLURBEHIND bb = {0};
+        HRESULT hr = S_OK;
+        bb.fEnable = enable;
+        bb.dwFlags = DWM_BB_ENABLE;
+        bb.hRgnBlur = NULL;
+        widget->setAttribute(Qt::WA_TranslucentBackground, enable);
+        widget->setAttribute(Qt::WA_NoSystemBackground, enable);
+        hr = pDwmEnableBlurBehindWindow(widget->winId(), &bb);
+        if (SUCCEEDED(hr)) {
+            result = true;
+            windowNotifier()->addWidget(widget);
+        }
+    }
+#endif
+    return result;
+}
+
+/*!
+  * ExtendFrameIntoClientArea.
+  *
+  * This controls the rendering of the frame inside the window.
+  * Note that passing margins of -1 (the default value) will completely
+  * remove the frame from the window.
+  *
+  * \note you should not call enableBlurBehindWindow before calling
+  *       this functions
+  *
+  * \a enable tells if the blur should be enabled or not
+  */
+bool QtWin::extendFrameIntoClientArea(QWidget *widget, int left, int top, int right, int bottom)
+{
+
+    Q_ASSERT(widget);
+    Q_UNUSED(left);
+    Q_UNUSED(top);
+    Q_UNUSED(right);
+    Q_UNUSED(bottom);
+
+    bool result = false;
+#ifdef Q_WS_WIN
+    if (resolveLibs()) {
+        QLibrary dwmLib(QString::fromAscii("dwmapi"));
+        HRESULT hr = S_OK;
+        MARGINS m = {left, top, right, bottom};
+        hr = pDwmExtendFrameIntoClientArea(widget->winId(), &m);
+        if (SUCCEEDED(hr)) {
+            result = true;
+            windowNotifier()->addWidget(widget);
+        }
+        widget->setAttribute(Qt::WA_TranslucentBackground, result);
+    }
+#endif
+    return result;
+}
+
+/*!
+  * Returns the current colorizationColor for the window.
+  *
+  * \a enable tells if the blur should be enabled or not
+  */
+QColor QtWin::colorizatinColor()
+{
+    QColor resultColor = QApplication::palette().window().color();
+
+#ifdef Q_WS_WIN
+    if (resolveLibs()) {
+        DWORD color = 0;
+        BOOL opaque = FALSE;
+        QLibrary dwmLib(QString::fromAscii("dwmapi"));
+        HRESULT hr = S_OK;
+        hr = pDwmGetColorizationColor(&color, &opaque);
+        if (SUCCEEDED(hr))
+            resultColor = QColor(color);
+    }
+#endif
+    return resultColor;
+}
+
+#ifdef Q_WS_WIN
+WindowNotifier *QtWin::windowNotifier()
+{
+    static WindowNotifier *windowNotifierInstance = 0;
+    if (!windowNotifierInstance)
+        windowNotifierInstance = new WindowNotifier;
+    return windowNotifierInstance;
+}
+
+
+/* Notify all enabled windows that the DWM state changed */
+bool WindowNotifier::winEvent(MSG *message, long *result)
+{
+    if (message && message->message == WM_DWMCOMPOSITIONCHANGED) {
+        bool compositionEnabled = QtWin::isCompositionEnabled();
+        foreach(QWidget * widget, widgets) {
+            if (widget) {
+                widget->setAttribute(Qt::WA_NoSystemBackground, compositionEnabled);
+            }
+            widget->update();
+        }
+    }
+    return QWidget::winEvent(message, result);
+}
+#endif
Index: src/qtwin.h
===================================================================
--- src/qtwin.h	(revision 11086c2defca72c6721801934a247d69d28aedcf)
+++ src/qtwin.h	(revision 11086c2defca72c6721801934a247d69d28aedcf)
@@ -0,0 +1,37 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+**
+** Use, modification and distribution is allowed without limitation,
+** warranty, liability or support of any kind.
+**
+****************************************************************************/
+
+#ifndef QTWIN_H
+#define QTWIN_H
+
+#include <QColor>
+#include <QWidget>
+/**
+  * This is a helper class for using the Desktop Window Manager
+  * functionality on Windows 7 and Windows Vista. On other platforms
+  * these functions will simply not do anything.
+  */
+
+class WindowNotifier;
+
+class QtWin
+{
+public:
+    static bool enableBlurBehindWindow(QWidget *widget, bool enable = true);
+    static bool extendFrameIntoClientArea(QWidget *widget,
+                                          int left = -1, int top = -1,
+                                          int right = -1, int bottom = -1);
+    static bool isCompositionEnabled();
+    static QColor colorizatinColor();
+
+private:
+    static WindowNotifier *windowNotifier();
+};
+
+#endif // QTWIN_H
Index: src/settingsdialog.cpp
===================================================================
--- src/settingsdialog.cpp	(revision 8203c075d505b02bb006555bf5447de09b91bb66)
+++ src/settingsdialog.cpp	(revision 11086c2defca72c6721801934a247d69d28aedcf)
@@ -31,5 +31,5 @@
  */
 SettingsDialog::SettingsDialog(QWidget *parent)
-	: QDialog(parent), newFont(false), newColor(false)
+	: QDialog(parent), _newFont(false), _newColor(false), _translucency(0)
 {
 	setupUi(this);
@@ -68,4 +68,14 @@
 QVBoxLayout *vbox1, *vbox2;
 QHBoxLayout *hbox1, *hbox2;
+
+	if (QtWin::isCompositionEnabled()) {
+		cbUseTranslucency = new QCheckBox(bgWhite);
+		cbUseTranslucency->setObjectName("cbUseTranslucency");
+#ifndef QT_NO_STATUSTIP
+		cbUseTranslucency->setStatusTip(tr("Use translucent effect on the Main Window under Windows Vista and 7"));
+#endif // QT_NO_STATUSTIP
+		cbUseTranslucency->setText(tr("Use translucency effects"));
+		cbUseTranslucency->setCursor(QCursor(Qt::PointingHandCursor));
+	}
 
 	cbSaveState = new QCheckBox(bgWhite);
@@ -114,4 +124,8 @@
 	vbox1 = static_cast<QVBoxLayout *>(tabGeneral->layout());
 	vbox1->insertWidget(vbox1->indexOf(cbUseNativeDialogs) + 1, cbSaveState);
+#ifdef Q_OS_WIN32
+	if (QtWin::isCompositionEnabled())
+		vbox1->insertWidget(vbox1->indexOf(cbUseNativeDialogs) + 1, cbUseTranslucency);
+#endif // Q_OS_WIN32
 
 	// Bottom part (with grey bg)
@@ -146,4 +160,8 @@
 	cbAutosize->setChecked(settings->value("Autosize", DEF_AUTOSIZE).toBool());
 	cbUseNativeDialogs->setChecked(settings->value("UseNativeDialogs", DEF_USE_NATIVE_DIALOGS).toBool());
+#ifdef Q_OS_WIN32
+	if (QtWin::isCompositionEnabled())
+		cbUseTranslucency->setChecked(settings->value("UseTranslucency", DEF_USE_TRANSLUCENCY).toBool());
+#endif // Q_OS_WIN32
 #ifndef Q_OS_WINCE
 	cbSaveState->setChecked(settings->value("SavePos", DEF_SAVEPOS).toBool());
@@ -181,5 +199,5 @@
 bool SettingsDialog::colorChanged() const
 {
-	return newColor;
+	return _newColor;
 }
 
@@ -190,5 +208,13 @@
 bool SettingsDialog::fontChanged() const
 {
-	return newFont;
+	return _newFont;
+}
+
+/*!
+ *
+ */
+qint8 SettingsDialog::translucencyChanged() const
+{
+	return _translucency;
 }
 
@@ -200,6 +226,15 @@
 	settings->setValue("SavePos", cbSaveState->isChecked());
 #endif // Q_OS_WINCE
+#ifdef Q_OS_WIN32
+	if (QtWin::isCompositionEnabled()) {
+bool old = settings->value("UseTranslucency", DEF_USE_TRANSLUCENCY).toBool();
+		if ((!old && cbUseTranslucency->isChecked()) || (old && !cbUseTranslucency->isChecked())) {
+			_translucency = old ? -1 : 1;
+		} else
+			_translucency = 0;
+		settings->setValue("UseTranslucency", cbUseTranslucency->isChecked());
+	}
+#endif // Q_OS_WIN32
 	settings->setValue("UseNativeDialogs", cbUseNativeDialogs->isChecked());
-	settings->setValue("Autosize", cbAutosize->isChecked());
 
 	settings->beginGroup("Task");
@@ -216,7 +251,7 @@
 		settings->setValue("ShowMatrixLimit", spinCitiesLimit->value());
 	settings->setValue("ScrollToEnd", cbScrollToEnd->isChecked());
-	if (newFont)
+	if (_newFont)
 		settings->setValue("Font", font);
-	if (newColor)
+	if (_newColor)
 		settings->setValue("Color", color);
 	settings->endGroup();
@@ -229,5 +264,5 @@
 	if (color.isValid() && (this->color != color)) {
 		this->color = color;
-		newColor = true;
+		_newColor = true;
 	}
 }
@@ -239,5 +274,5 @@
 	if (ok && (this->font != font)) {
 		this->font = font;
-		newFont = true;
+		_newFont = true;
 	}
 }
Index: src/settingsdialog.h
===================================================================
--- src/settingsdialog.h	(revision 8203c075d505b02bb006555bf5447de09b91bb66)
+++ src/settingsdialog.h	(revision 11086c2defca72c6721801934a247d69d28aedcf)
@@ -44,12 +44,19 @@
 	bool colorChanged() const;
 	bool fontChanged() const;
+	qint8 translucencyChanged() const;
 
 private:
+	bool _newFont;
+	bool _newColor;
+	qint8 _translucency;
+
 	QColor color;
 	QFont font;
-	bool newFont;
-	bool newColor;
+
 	QSettings *settings;
 	QHBoxLayout *layoutCitiesLimit;
+#ifdef Q_OS_WIN32
+	QCheckBox *cbUseTranslucency;
+#endif // Q_OS_WIN32
 #ifndef Q_OS_WINCE
 	QCheckBox *cbSaveState;
@@ -59,5 +66,5 @@
 
 	bool event(QEvent *ev);
-#endif // Q_OS_WINCE
+#endif
 
 private slots:
