Hello community,

here is the log from the commit of package plasma-framework for 
openSUSE:Factory checked in at 2015-09-02 07:49:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/plasma-framework (Old)
 and      /work/SRC/openSUSE:Factory/.plasma-framework.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "plasma-framework"

Changes:
--------
--- /work/SRC/openSUSE:Factory/plasma-framework/plasma-framework.changes        
2015-08-10 09:14:03.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.plasma-framework.new/plasma-framework.changes   
2015-09-02 07:49:17.000000000 +0200
@@ -1,0 +2,29 @@
+Tue Aug  4 19:20:52 UTC 2015 - [email protected]
+
+- Update to 5.13.0
+  * The Qt version requirement has been bumped from 5.2 to 5.3
+  * Debug output has been ported to categorized output, for less
+    noise by default
+  * Docbook documentation has been reviewed and updated
+  * Using a pinch gesture one can now switch between the different
+    zoom levels of the calenda
+  * comment about code duplication in icondialog
+  * Slider groove color was hardcoded, modified to use color scheme
+  * Use QBENCHMARK instead of a hard requirement on the machine's
+    performance
+  * Calendar navigation has been significantly improved, providing
+    a year and decade overview
+  * PlasmaCore.Dialog now has an 'opacity' property
+  * Make some space for the radio button
+  * Don't show the circular background if there's a menu
+  * Add X-Plasma-NotificationAreaCategory definition
+  * Set notifications and osd to show on all desktops
+  * Print useful warning when we can not get valid KPluginInfo
+  * Fix potential endless recursion in
+    PlatformStatus::findLookAndFeelPackage()
+  * Rename software-updates.svgz to software.svgz
+  * For more details please see:
+    https://www.kde.org/announcements/kde-frameworks-5.13.0.php
+- Drop 0001-Also-check-for-SharedEngineView.patch, merged upstream
+
+-------------------------------------------------------------------

Old:
----
  0001-Also-check-for-SharedEngineView.patch
  plasma-framework-5.12.0.tar.xz

New:
----
  plasma-framework-5.13.0.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ plasma-framework.spec ++++++
--- /var/tmp/diff_new_pack.zk4vj1/_old  2015-09-02 07:49:19.000000000 +0200
+++ /var/tmp/diff_new_pack.zk4vj1/_new  2015-09-02 07:49:19.000000000 +0200
@@ -17,9 +17,9 @@
 
 
 %bcond_without lang
-%define _tar_path 5.12
+%define _tar_path 5.13
 Name:           plasma-framework
-Version:        5.12.0
+Version:        5.13.0
 Release:        0
 %define kf5_version %{version}
 Summary:        Plasma library and runtime components based upon KF5 and Qt5
@@ -28,8 +28,6 @@
 Url:            https://projects.kde.org/plasma-framework
 Source:         
http://download.kde.org/stable/frameworks/%{_tar_path}/%{name}-%{version}.tar.xz
 Source1:        baselibs.conf
-# PATCH-FIX-UPSTREAM 0001-Also-check-for-SharedEngineView.patch
-Patch0:         0001-Also-check-for-SharedEngineView.patch
 BuildRequires:  extra-cmake-modules >= %{_tar_path}
 BuildRequires:  fdupes
 BuildRequires:  kactivities5-devel >= %{_tar_path}
@@ -54,15 +52,15 @@
 BuildRequires:  kxmlgui-devel >= %{_tar_path}
 BuildRequires:  libxcb-devel
 BuildRequires:  xz
-BuildRequires:  pkgconfig(Qt5Gui) >= 5.2.0
-BuildRequires:  pkgconfig(Qt5Qml) >= 5.2.0
-BuildRequires:  pkgconfig(Qt5Quick) >= 5.2.0
-BuildRequires:  pkgconfig(Qt5Script) >= 5.2.0
-BuildRequires:  pkgconfig(Qt5Sql) >= 5.2.0
-BuildRequires:  pkgconfig(Qt5Svg) >= 5.2.0
-BuildRequires:  pkgconfig(Qt5Test) >= 5.2.0
-BuildRequires:  pkgconfig(Qt5Widgets) >= 5.2.0
-BuildRequires:  pkgconfig(Qt5X11Extras) >= 5.2.0
+BuildRequires:  cmake(Qt5Gui) >= 5.3.0
+BuildRequires:  cmake(Qt5Qml) >= 5.3.0
+BuildRequires:  cmake(Qt5Quick) >= 5.3.0
+BuildRequires:  cmake(Qt5Script) >= 5.3.0
+BuildRequires:  cmake(Qt5Sql) >= 5.3.0
+BuildRequires:  cmake(Qt5Svg) >= 5.3.0
+BuildRequires:  cmake(Qt5Test) >= 5.3.0
+BuildRequires:  cmake(Qt5Widgets) >= 5.3.0
+BuildRequires:  cmake(Qt5X11Extras) >= 5.3.0
 BuildRequires:  pkgconfig(egl)
 %ifarch %arm aarch64
 BuildRequires:  pkgconfig(glesv2)
@@ -112,9 +110,9 @@
 Requires:       kf5-filesystem
 Requires:       kpackage-devel >= %{_tar_path}
 Requires:       kservice-devel >= %{_tar_path}
-Requires:       pkgconfig(Qt5Gui) >= 5.2.0
-Requires:       pkgconfig(Qt5Qml) >= 5.2.0
-Requires:       pkgconfig(Qt5Quick) >= 5.2.0
+Requires:       cmake(Qt5Gui) >= 5.3.0
+Requires:       cmake(Qt5Qml) >= 5.3.0
+Requires:       cmake(Qt5Quick) >= 5.3.0
 
 %description devel
 Plasma library and runtime components based upon KF5 and Qt5
@@ -122,7 +120,6 @@
 %lang_package
 %prep
 %setup -q
-%patch0 -p1
 
 %build
   %cmake_kf5 -d build

++++++ plasma-framework-5.12.0.tar.xz -> plasma-framework-5.13.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plasma-framework-5.12.0/CMakeLists.txt 
new/plasma-framework-5.13.0/CMakeLists.txt
--- old/plasma-framework-5.12.0/CMakeLists.txt  2015-07-05 11:17:34.000000000 
+0200
+++ new/plasma-framework-5.13.0/CMakeLists.txt  2015-08-04 13:46:18.000000000 
+0200
@@ -4,7 +4,7 @@
 
 # ECM setup
 include(FeatureSummary)
-find_package(ECM 5.12.0  NO_MODULE)
+find_package(ECM 5.13.0  NO_MODULE)
 set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake 
Modules." URL 
"https://projects.kde.org/projects/kdesupport/extra-cmake-modules";)
 feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND 
FATAL_ON_MISSING_REQUIRED_PACKAGES)
 
@@ -20,8 +20,8 @@
 include(ECMSetupVersion)
 include(KDEFrameworkCompilerSettings)
 
-set(KF5_VERSION "5.12.0") # handled by release scripts
-set(KF5_DEP_VERSION "5.12.0") # handled by release scripts
+set(KF5_VERSION "5.13.0") # handled by release scripts
+set(KF5_DEP_VERSION "5.13.0") # handled by release scripts
 
 ecm_setup_version(${KF5_VERSION}
                   VARIABLE_PREFIX PLASMA
@@ -43,7 +43,7 @@
 
 ################# now find all used packages #################
 
-set (REQUIRED_QT_VERSION "5.2.0")
+set (REQUIRED_QT_VERSION "5.3.0")
 
 find_package(Qt5 ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE COMPONENTS Quick 
Gui Sql Qml Svg Script)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plasma-framework-5.12.0/README.md 
new/plasma-framework-5.13.0/README.md
--- old/plasma-framework-5.12.0/README.md       2015-07-05 11:17:34.000000000 
+0200
+++ new/plasma-framework-5.13.0/README.md       2015-08-04 13:46:18.000000000 
+0200
@@ -1,5 +1,6 @@
 # Plasma Framework
-The plasma framework provides the foundations that can be used to build a 
primary user interface, from graphical to logical components.
+
+Foundational libraries, components, and tools of the Plasma workspaces
 
 ## Introduction
 The plasma framework provides the following:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/plasma-framework-5.12.0/autotests/packagestructuretest.cpp 
new/plasma-framework-5.13.0/autotests/packagestructuretest.cpp
--- old/plasma-framework-5.12.0/autotests/packagestructuretest.cpp      
2015-07-05 11:17:34.000000000 +0200
+++ new/plasma-framework-5.13.0/autotests/packagestructuretest.cpp      
2015-08-04 13:46:18.000000000 +0200
@@ -76,15 +76,11 @@
     // seed the cache first
     ps.filePath("mainscript");
 
-    QTime t;
-    t.start();
-
-    for (int i = 0; i < 100000; ++i) {
+    QBENCHMARK {
         Plasma::Package foo(ps);
         const QString bar = foo.filePath("mainscript");
+        Q_UNUSED(bar);
     }
-
-    QVERIFY(t.elapsed() < 400);
 }
 
 void PackageStructureTest::mutateAfterCopy()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/plasma-framework-5.12.0/docs/plasmapkg/man-plasmapkg2.1.docbook 
new/plasma-framework-5.13.0/docs/plasmapkg/man-plasmapkg2.1.docbook
--- old/plasma-framework-5.12.0/docs/plasmapkg/man-plasmapkg2.1.docbook 
2015-07-05 11:17:34.000000000 +0200
+++ new/plasma-framework-5.13.0/docs/plasmapkg/man-plasmapkg2.1.docbook 
2015-08-04 13:46:18.000000000 +0200
@@ -7,8 +7,8 @@
 <refentryinfo>
 <title>Plasma Package Manager</title>
 <date>2014-04-25</date>
-<releaseinfo>5.0</releaseinfo>
-<productname>&kde; plasmapkg2</productname>
+<releaseinfo>Frameworks 5.0</releaseinfo>
+<productname>KDE Frameworks</productname>
 </refentryinfo>
 
 <refmeta>
@@ -35,8 +35,6 @@
 <group choice="opt"><option>--list-types</option></group>
 <group choice="opt"><option>-r, --remove</option> <replaceable> 
name</replaceable></group>
 <group choice="opt"><option>-p, --packageroot</option> <replaceable> 
path</replaceable></group>
-<arg choice="opt">KDE Generic Options</arg>
-<arg choice="opt">Qt Generic Options</arg>
 </cmdsynopsis>
 </refsynopsisdiv>
 
@@ -90,7 +88,7 @@
 <varlistentry>
 <term><option>-p, --packageroot</option> <replaceable> 
path</replaceable></term>
 <listitem><para>Absolute path to the package root. If not supplied, then the 
standard data 
-directories for this &kde; session will be searched instead.</para></listitem>
+directories for this &plasma; session will be searched 
instead.</para></listitem>
 </varlistentry>
 
 </variablelist>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/plasma-framework-5.12.0/src/declarativeimports/calendar/calendar.cpp 
new/plasma-framework-5.13.0/src/declarativeimports/calendar/calendar.cpp
--- old/plasma-framework-5.12.0/src/declarativeimports/calendar/calendar.cpp    
2015-07-05 11:17:34.000000000 +0200
+++ new/plasma-framework-5.13.0/src/declarativeimports/calendar/calendar.cpp    
2015-08-04 13:46:18.000000000 +0200
@@ -48,10 +48,22 @@
     if (m_displayedDate == dateTime) {
         return;
     }
+
+    const int oldMonth = m_displayedDate.month();
+    const int oldYear = m_displayedDate.year();
+
     m_displayedDate = dateTime;
+
     //  m_dayHelper->setDate(m_displayedDate.year(), m_displayedDate.month());
+
     updateData();
     emit displayedDateChanged();
+    if (oldMonth != m_displayedDate.month()) {
+        emit monthNameChanged();
+    }
+    if (oldYear != m_displayedDate.year()) {
+        emit yearChanged();
+    }
 }
 
 QDate Calendar::today() const
@@ -222,9 +234,7 @@
         //QDate previousMonth(m_displayedDate.year(), m_displayedDate.month() 
- 1, 1);
         for (int i = 0; i < daysBeforeCurrentMonth; i++) {
             DayData day;
-            day.isCurrentMonth = false;
-            day.isNextMonth = false;
-            day.isPreviousMonth = true;
+            day.isCurrent = false;
             day.dayNumber = previousMonth.daysInMonth() - 
(daysBeforeCurrentMonth - (i + 1));
             day.monthNumber = previousMonth.month();
             day.yearNumber = previousMonth.year();
@@ -235,9 +245,7 @@
 
     for (int i = 0; i < m_displayedDate.daysInMonth(); i++) {
         DayData day;
-        day.isCurrentMonth = true;
-        day.isNextMonth = false;
-        day.isPreviousMonth = false;
+        day.isCurrent = true;
         day.dayNumber = i + 1; // +1 to go form 0 based index to 1 based 
calendar dates
         //  day.containsEventItems = m_dayHelper->containsEventItems(i + 1);
         day.monthNumber = m_displayedDate.month();
@@ -249,9 +257,7 @@
     if (daysAfterCurrentMonth > 0) {
         for (int i = 0; i < daysAfterCurrentMonth; i++) {
             DayData day;
-            day.isCurrentMonth = false;
-            day.isNextMonth = true;
-            day.isPreviousMonth = false;
+            day.isCurrent = false;
             day.dayNumber = i + 1; // +1 to go form 0 based index to 1 based 
calendar dates
             //   day.containsEventItems = false;
             day.monthNumber = m_displayedDate.addMonths(1).month();
@@ -292,36 +298,43 @@
 //    qDebug() << "m_dayList size: " << m_dayList.count();
 //    qDebug() << 
"---------------------------------------------------------------";
 }
+
+void Calendar::nextDecade()
+{
+    setDisplayedDate(m_displayedDate.addYears(10));
+}
+
+void Calendar::previousDecade()
+{
+    setDisplayedDate(m_displayedDate.addYears(-10));
+}
+
 void Calendar::nextYear()
 {
-    m_displayedDate = m_displayedDate.addYears(1);
-    updateData();
-    emit displayedDateChanged();
-    emit yearChanged();
+    setDisplayedDate(m_displayedDate.addYears(1));
 }
 
 void Calendar::previousYear()
 {
-    m_displayedDate = m_displayedDate.addYears(-1);
-    updateData();
-    emit displayedDateChanged();
-    emit yearChanged();
+    setDisplayedDate(m_displayedDate.addYears(-1));
 }
 
 void Calendar::nextMonth()
 {
-    m_displayedDate = m_displayedDate.addMonths(1);
-    updateData();
-    emit displayedDateChanged();
-    emit monthNameChanged();
-    emit yearChanged();
+    setDisplayedDate(m_displayedDate.addMonths(1));
 }
 
 void Calendar::previousMonth()
 {
-    m_displayedDate = m_displayedDate.addMonths(-1);
-    updateData();
-    emit displayedDateChanged();
-    emit monthNameChanged();
-    emit yearChanged();
+    setDisplayedDate(m_displayedDate.addMonths(-1));
+}
+
+void Calendar::goToMonth(int month)
+{
+    setDisplayedDate(QDate(m_displayedDate.year(), month, 
m_displayedDate.day()));
+}
+
+void Calendar::goToYear(int year)
+{
+    setDisplayedDate(QDate(year, m_displayedDate.month(), 
m_displayedDate.day()));
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/plasma-framework-5.12.0/src/declarativeimports/calendar/calendar.h 
new/plasma-framework-5.13.0/src/declarativeimports/calendar/calendar.h
--- old/plasma-framework-5.12.0/src/declarativeimports/calendar/calendar.h      
2015-07-05 11:17:34.000000000 +0200
+++ new/plasma-framework-5.13.0/src/declarativeimports/calendar/calendar.h      
2015-08-04 13:46:18.000000000 +0200
@@ -118,7 +118,7 @@
      */
     Q_PROPERTY(QAbstractListModel *daysModel READ daysModel CONSTANT)
 
-    Q_ENUMS(Type)
+    Q_ENUMS(Type DateMatchingPrecision)
 
 public:
     enum Type {
@@ -129,6 +129,12 @@
     };
     Q_DECLARE_FLAGS(Types, Type)
 
+    enum DateMatchingPrecision {
+        MatchYear,
+        MatchYearAndMonth,
+        MatchYearMonthAndDay
+    };
+
     explicit Calendar(QObject *parent = 0);
 
     // Displayed date
@@ -171,9 +177,13 @@
     Q_INVOKABLE void previousMonth();
     Q_INVOKABLE void nextYear();
     Q_INVOKABLE void previousYear();
+    Q_INVOKABLE void nextDecade();
+    Q_INVOKABLE void previousDecade();
     Q_INVOKABLE QString dayName(int weekday) const;
     Q_INVOKABLE int currentWeek() const;
     Q_INVOKABLE void resetToToday();
+    Q_INVOKABLE void goToMonth(int month);
+    Q_INVOKABLE void goToYear(int year);
 
 Q_SIGNALS:
     void displayedDateChanged();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/plasma-framework-5.12.0/src/declarativeimports/calendar/daydata.h 
new/plasma-framework-5.13.0/src/declarativeimports/calendar/daydata.h
--- old/plasma-framework-5.12.0/src/declarativeimports/calendar/daydata.h       
2015-07-05 11:17:34.000000000 +0200
+++ new/plasma-framework-5.13.0/src/declarativeimports/calendar/daydata.h       
2015-08-04 13:46:18.000000000 +0200
@@ -4,9 +4,7 @@
 class DayData
 {
 public:
-    bool isPreviousMonth;
-    bool isCurrentMonth;
-    bool isNextMonth;
+    bool isCurrent;
 //   bool containsHolidayItems;
 //   bool containsEventItems;
 //   bool containsTodoItems;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/plasma-framework-5.12.0/src/declarativeimports/calendar/daysmodel.cpp 
new/plasma-framework-5.13.0/src/declarativeimports/calendar/daysmodel.cpp
--- old/plasma-framework-5.12.0/src/declarativeimports/calendar/daysmodel.cpp   
2015-07-05 11:17:34.000000000 +0200
+++ new/plasma-framework-5.13.0/src/declarativeimports/calendar/daysmodel.cpp   
2015-08-04 13:46:18.000000000 +0200
@@ -26,9 +26,7 @@
 {
     QHash<int, QByteArray> roleNames;
 
-    roleNames.insert(isPreviousMonth,        "isPreviousMonth");
-    roleNames.insert(isCurrentMonth,         "isCurrentMonth");
-    roleNames.insert(isNextMonth,            "isNextMonth");
+    roleNames.insert(isCurrent, "isCurrent");
     //roleNames.insert(containsHolidayItems,   "containsHolidayItems");
     //roleNames.insert(containsEventItems,     "containsEventItems");
     // roleNames.insert(containsTodoItems,      "containsTodoItems");
@@ -63,13 +61,11 @@
 {
     if (index.isValid()) {
 
-        DayData currentData = m_data->at(index.row());
+        const DayData &currentData = m_data->at(index.row());
 
         switch (role) {
-        case isPreviousMonth:
-            return currentData.isPreviousMonth;
-        case isNextMonth:
-            return currentData.isNextMonth;
+        case isCurrent:
+            return currentData.isCurrent;
         //      case containsHolidayItems:
         //          return currentData.containsHolidayItems;
         /* case containsEventItems:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/plasma-framework-5.12.0/src/declarativeimports/calendar/daysmodel.h 
new/plasma-framework-5.13.0/src/declarativeimports/calendar/daysmodel.h
--- old/plasma-framework-5.12.0/src/declarativeimports/calendar/daysmodel.h     
2015-07-05 11:17:34.000000000 +0200
+++ new/plasma-framework-5.13.0/src/declarativeimports/calendar/daysmodel.h     
2015-08-04 13:46:18.000000000 +0200
@@ -28,9 +28,7 @@
     Q_OBJECT
 public:
     enum Roles {
-        isPreviousMonth = Qt::UserRole + 1,
-        isCurrentMonth,
-        isNextMonth,
+        isCurrent = Qt::UserRole + 1,
         //containsHolidayItems,
         //containsEventItems,
         //containsTodoItems,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/plasma-framework-5.12.0/src/declarativeimports/calendar/qml/DayDelegate.qml 
new/plasma-framework-5.13.0/src/declarativeimports/calendar/qml/DayDelegate.qml
--- 
old/plasma-framework-5.12.0/src/declarativeimports/calendar/qml/DayDelegate.qml 
    2015-07-05 11:17:34.000000000 +0200
+++ 
new/plasma-framework-5.13.0/src/declarativeimports/calendar/qml/DayDelegate.qml 
    2015-08-04 13:46:18.000000000 +0200
@@ -1,6 +1,7 @@
 /*
  * Copyright 2013 Heena Mahour <[email protected]>
  * Copyright 2013 Sebastian Kügler <[email protected]>
+ * Copyright 2015 Kai Uwe Broulik <[email protected]>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
@@ -20,26 +21,57 @@
 import org.kde.plasma.core 2.0 as PlasmaCore
 import org.kde.plasma.components 2.0 as Components
 
+import org.kde.plasma.calendar 2.0
 
-Item {
+MouseArea {
     id: dayStyle
-    width: root.cellWidth
-    height: root.cellHeight
 
-    property bool today: root.today.toDateString() == new Date(yearNumber, 
monthNumber - 1, dayNumber).toDateString() // for some reason the comparison 
doesn't work without toDateString()
+    hoverEnabled: true
+
+    signal activated
+
+    readonly property date thisDate: new Date(yearNumber, typeof monthNumber 
!== "undefined" ? monthNumber - 1 : 0, typeof dayNumber !== "undefined" ? 
dayNumber : 1)
+    readonly property bool today: {
+        var today = root.today;
+        var result = true;
+        if (dateMatchingPrecision >= Calendar.MatchYear) {
+            result = result && today.getFullYear() === thisDate.getFullYear()
+        }
+        if (dateMatchingPrecision >= Calendar.MatchYearAndMonth) {
+            result = result && today.getMonth() === thisDate.getMonth()
+        }
+        if (dateMatchingPrecision >= Calendar.MatchYearMonthAndDay) {
+            result = result && today.getDate() === thisDate.getDate()
+        }
+        return result
+    }
+    readonly property bool selected: {
+        var current = root.currentDate
+        var result = true
+        if (dateMatchingPrecision >= Calendar.MatchYear) {
+            result = result && current.getFullYear() === thisDate.getFullYear()
+        }
+        if (dateMatchingPrecision >= Calendar.MatchYearAndMonth) {
+            result = result && current.getMonth() === thisDate.getMonth()
+        }
+        if (dateMatchingPrecision >= Calendar.MatchYearMonthAndDay) {
+            result = result && current.getDate() === thisDate.getDate()
+        }
+        return result
+    }
 
     onHeightChanged: {
         // this is needed here as the text is first rendered, counting with 
the default root.cellHeight
         // then root.cellHeight actually changes to whatever it should be, but 
the Label does not pick
         // it up after that, so we need to change it explicitly after the cell 
size changes
-        label.font.pixelSize = Math.max(theme.smallestFont.pixelSize, 
Math.floor(root.cellHeight / 3))
+        label.font.pixelSize = Math.max(theme.smallestFont.pixelSize, 
Math.floor(daysCalendar.cellHeight / 3))
     }
 
     Rectangle {
         id: todayRect
         anchors.fill: parent
         opacity: {
-            if (calendarGrid.selectedItem == dayStyle && today) {
+            if (selected && today) {
                 0.6
             } else if (today) {
                 0.4
@@ -55,9 +87,9 @@
         id: highlightDate
         anchors.fill: todayRect
         opacity: {
-            if (calendarGrid.selectedItem == dayStyle) {
+            if (selected) {
                 0.6
-            } else if (dateMouse.containsMouse) {
+            } else if (dayStyle.containsMouse) {
                 0.4
             } else {
                 0
@@ -71,28 +103,22 @@
 
     Components.Label {
         id: label
-        anchors.centerIn: parent
-        text: dayNumber
-        opacity: (isPreviousMonth || isNextMonth) ? 0.5: 1.0
-        color: today ? theme.backgroundColor : theme.textColor
-    }
-
-    MouseArea {
-        id: dateMouse
         anchors.fill: parent
-        //z: label.z + 1
-        hoverEnabled: true
-        onClicked: {
-            var rowNumber = Math.floor(index / 7);
-            week = 1+calendarBackend.weeksModel[rowNumber];
-            root.date = model;
-            calendarGrid.selectedItem = dayStyle;
+        horizontalAlignment: Text.AlignHCenter
+        verticalAlignment: Text.AlignVCenter
+        text: model.label || dayNumber
+        opacity: isCurrent ? 1.0 : 0.5
+        wrapMode: Text.NoWrap
+        elide: Text.ElideRight
+        color: today ? theme.backgroundColor : theme.textColor
+        Behavior on color {
+            ColorAnimation { duration: units.shortDuration * 2 }
         }
     }
 
     Component.onCompleted: {
-        if (today) {
-            root.date = model;
+        if (stack.depth === 1 && today) {
+            root.date = model
         }
     }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/plasma-framework-5.12.0/src/declarativeimports/calendar/qml/DaysCalendar.qml
 
new/plasma-framework-5.13.0/src/declarativeimports/calendar/qml/DaysCalendar.qml
--- 
old/plasma-framework-5.12.0/src/declarativeimports/calendar/qml/DaysCalendar.qml
    2015-07-05 11:17:34.000000000 +0200
+++ 
new/plasma-framework-5.13.0/src/declarativeimports/calendar/qml/DaysCalendar.qml
    2015-08-04 13:46:18.000000000 +0200
@@ -1,6 +1,7 @@
 /*
  * Copyright 2013  Heena Mahour <[email protected]>
  * Copyright 2013 Sebastian Kügler <[email protected]>
+ * Copyright 2015 Kai Uwe Broulik <[email protected]>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
@@ -15,23 +16,174 @@
  * You should have received a copy of the GNU General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
-import QtQuick 2.0
+import QtQuick 2.2
+import QtQuick.Controls 1.1
+
 import org.kde.plasma.calendar 2.0
 import org.kde.plasma.core 2.0 as PlasmaCore
 import org.kde.plasma.components 2.0 as Components
 import org.kde.plasma.extras 2.0 as PlasmaExtras
+
 Item {
     id: daysCalendar
 
-    readonly property int gridColumns: root.showWeekNumbers ? 
calendarGrid.columns + 1 : calendarGrid.columns
+    signal headerClicked
+
+    signal previous
+    signal next
+
+    signal activated(int index, var date, var item)
+    // so it forwards it to the delegate which then emits activated with all 
the neccessary data
+    signal activateHighlightedItem
+
+    readonly property int gridColumns: showWeekNumbers ? calendarGrid.columns 
+ 1 : calendarGrid.columns
+
+    property int rows
+    property int columns
+
+    property bool showWeekNumbers
+
+    onShowWeekNumbersChanged: canvas.requestPaint()
+
+    // how precise date matching should be, 3 = day+month+year, 2 = 
month+year, 1 = just year
+    property int dateMatchingPrecision
+
+    property alias headerModel: days.model
+    property alias gridModel: repeater.model
+
+    property alias title: heading.text
+
+    // Take the calendar width, subtract the inner and outer spacings and 
divide by number of columns (==days in week)
+    readonly property int cellWidth: Math.floor((stack.width - 
(daysCalendar.columns + 1) * root.borderWidth) / (daysCalendar.columns + 
(showWeekNumbers ? 1 : 0)))
+    // Take the calendar height, subtract the inner spacings and divide by 
number of rows (root.weeks + one row for day names)
+    readonly property int cellHeight:  Math.floor((stack.height - 
heading.height - (daysCalendar.rows + 1) * root.borderWidth) / 
(daysCalendar.rows + 1))
+
+    property real transformScale: 1
+    property point transformOrigin: Qt.point(width / 2, height / 2)
+
+    transform: Scale {
+        xScale: daysCalendar.transformScale
+        yScale: xScale
+        origin.x: transformOrigin.x
+        origin.y: transformOrigin.y
+    }
+
+    Behavior on scale {
+        id: scaleBehavior
+        ScaleAnimator {
+            duration: units.longDuration
+        }
+    }
+
+    Stack.onStatusChanged: {
+        if (Stack.status === Stack.Inactive) {
+            daysCalendar.transformScale = 1
+            opacity = 1
+        }
+    }
+
+    PlasmaExtras.Heading {
+        id: heading
+
+        anchors {
+            top: parent.top
+            left: parent.left
+            right: parent.right
+        }
+
+        level: 1
+        elide: Text.ElideRight
+        font.capitalization: Font.Capitalize
+
+        MouseArea {
+            id: monthMouse
+            property int previousPixelDelta
+
+            width: heading.paintedWidth
+            anchors {
+                left: parent.left
+                top: parent.top
+                bottom: parent.bottom
+            }
+            onClicked: {
+                if (!stack.busy) {
+                    daysCalendar.headerClicked()
+                }
+            }
+            onExited: previousPixelDelta = 0
+            onWheel: {
+                var delta = wheel.angleDelta.y || wheel.angleDelta.x
+                var pixelDelta = wheel.pixelDelta.y || wheel.pixelDelta.x
+
+                // For high-precision touchpad scrolling, we get a wheel event 
for basically every slightest
+                // finger movement. To prevent the view from suddenly ending 
up in the next century, we
+                // cumulate all the pixel deltas until they're larger than the 
label and then only change
+                // the month. Standard mouse wheel scrolling is unaffected 
since it's fine.
+                if (pixelDelta) {
+                    if (Math.abs(previousPixelDelta) < monthMouse.height) {
+                        previousPixelDelta += pixelDelta
+                        return
+                    }
+                }
+
+                if (delta >= 15) {
+                    daysCalendar.previous()
+                } else if (delta <= -15) {
+                    daysCalendar.next()
+                }
+                previousPixelDelta = 0
+            }
+        }
+    }
+
+    Components.Label {
+        anchors {
+            top: heading.bottom
+            left: parent.left
+            leftMargin: Math.floor(units.largeSpacing / 2)
+        }
+        text: "◀"
+        opacity: leftmouse.containsMouse ? 1 : 0.4
+        Behavior on opacity { NumberAnimation {} }
+
+        MouseArea {
+            id: leftmouse
+            anchors.fill: parent
+            anchors.margins: -units.largeSpacing / 3
+            hoverEnabled: true
+            onClicked: daysCalendar.previous()
+        }
+    }
+
+    Components.Label {
+        anchors {
+            top: heading.bottom
+            right: parent.right
+            rightMargin: Math.floor(units.largeSpacing / 2)
+        }
+        text: "▶"
+        opacity: rightmouse.containsMouse ? 1 : 0.4
+        Behavior on opacity { NumberAnimation {} }
+
+        MouseArea {
+            id: rightmouse
+            anchors.fill: parent
+            anchors.margins: -units.largeSpacing / 3
+            hoverEnabled: true
+            onClicked: daysCalendar.next()
+        }
+    }
 
     // Paints the inner grid and the outer frame
     Canvas {
         id: canvas
 
-        width: (root.cellWidth + root.borderWidth) * gridColumns + 
root.borderWidth
-        height: (root.cellHeight + root.borderWidth) * calendarGrid.rows + 
root.borderWidth
-        anchors.bottom: parent.bottom
+        anchors {
+            horizontalCenter: parent.horizontalCenter
+            bottom: parent.bottom
+        }
+        width: (daysCalendar.cellWidth + root.borderWidth) * gridColumns + 
root.borderWidth
+        height: (daysCalendar.cellHeight + root.borderWidth) * 
calendarGrid.rows + root.borderWidth
 
         opacity: root.borderOpacity
         antialiasing: false
@@ -58,26 +210,26 @@
 
             // horizontal lines
             for (var i = 0; i < calendarGrid.rows + 1; i++) {
-                var lineY = lineBasePoint + (root.cellHeight + 
root.borderWidth) * (i);
+                var lineY = lineBasePoint + (daysCalendar.cellHeight + 
root.borderWidth) * (i);
 
                 if (i == 0 || i == calendarGrid.rows) {
                     ctx.moveTo(0, lineY);
                 } else {
-                    ctx.moveTo(root.showWeekNumbers ? root.cellWidth + 
root.borderWidth : root.borderWidth, lineY);
+                    ctx.moveTo(showWeekNumbers ? daysCalendar.cellWidth + 
root.borderWidth : root.borderWidth, lineY);
                 }
                 ctx.lineTo(width, lineY);
             }
 
             // vertical lines
             for (var i = 0; i < gridColumns + 1; i++) {
-                var lineX = lineBasePoint + (root.cellWidth + 
root.borderWidth) * (i);
+                var lineX = lineBasePoint + (daysCalendar.cellWidth + 
root.borderWidth) * (i);
 
                 // Draw the outer vertical lines in full height so that it 
closes
                 // the outer rectangle
                 if (i == 0 || i == gridColumns) {
                     ctx.moveTo(lineX, 0);
                 } else {
-                    ctx.moveTo(lineX, root.borderWidth + root.cellHeight);
+                    ctx.moveTo(lineX, root.borderWidth + 
daysCalendar.cellHeight);
                 }
                 ctx.lineTo(lineX, height);
             }
@@ -89,13 +241,6 @@
     }
 
     Connections {
-        target: root
-        onShowWeekNumbersChanged: {
-            canvas.requestPaint();
-        }
-    }
-
-    Connections {
         target: theme
         onTextColorChanged: {
             canvas.requestPaint();
@@ -104,7 +249,7 @@
 
     Column {
         id: weeksColumn
-        visible: root.showWeekNumbers
+        visible: showWeekNumbers
         anchors {
             top: canvas.top
             left: parent.left
@@ -112,40 +257,38 @@
             // The borderWidth needs to be counted twice here because it goes
             // in fact through two lines - the topmost one (the outer edge)
             // and then the one below weekday strings
-            topMargin: root.cellHeight + root.borderWidth + root.borderWidth
+            topMargin: daysCalendar.cellHeight + root.borderWidth + 
root.borderWidth
         }
         spacing: root.borderWidth
 
         Repeater {
-            model: root.showWeekNumbers ? calendarBackend.weeksModel : []
+            model: showWeekNumbers ? calendarBackend.weeksModel : []
 
             Components.Label {
-                height: root.cellHeight
-                width: root.cellWidth
+                height: daysCalendar.cellHeight
+                width: daysCalendar.cellWidth
                 horizontalAlignment: Text.AlignHCenter
                 verticalAlignment: Text.AlignVCenter
                 opacity: 0.4
                 text: modelData
-                font.pixelSize: Math.max(theme.smallestFont.pixelSize, 
root.cellHeight / 6)
+                font.pixelSize: Math.max(theme.smallestFont.pixelSize, 
daysCalendar.cellHeight / 6)
             }
         }
     }
 
     Grid {
         id: calendarGrid
-        // Pad the grid to not overlap with the top and left frame
-        // When week numbers are shown, the border needs to be counted twice
-        // because there's one more cell to count with and therefore also
-        // another border to add
-        x: root.showWeekNumbers ? 2 * root.borderWidth + root.cellWidth: 
root.borderWidth
 
         anchors {
+            right: canvas.right
+            rightMargin: root.borderWidth
             bottom: parent.bottom
             bottomMargin: root.borderWidth
         }
 
-        columns: calendarBackend.days
-        rows: calendarBackend.weeks + 1
+        columns: daysCalendar.columns
+        rows: daysCalendar.rows + 1
+
         spacing: root.borderWidth
         property Item selectedItem
         property bool containsEventItems: false // FIXME
@@ -159,17 +302,16 @@
             }
         }
 
-
-
         Repeater {
             id: days
-            model: calendarBackend.days
+
             Item {
-                width: root.cellWidth
-                height: root.cellHeight
+                width: daysCalendar.cellWidth
+                height: daysCalendar.cellHeight
+
                 Components.Label {
                     text: Qt.locale().dayName(calendarBackend.firstDayOfWeek + 
index, Locale.ShortFormat)
-                    font.pixelSize: Math.max(theme.smallestFont.pixelSize, 
root.cellHeight / 6)
+                    font.pixelSize: Math.max(theme.smallestFont.pixelSize, 
daysCalendar.cellHeight / 6)
                     horizontalAlignment: Text.AlignHCenter
                     verticalAlignment: Text.AlignBottom
                     anchors.horizontalCenter: parent.horizontalCenter
@@ -181,9 +323,23 @@
 
         Repeater {
             id: repeater
-            model: calendarBackend.daysModel
 
-            DayDelegate {}
+            DayDelegate {
+                id: delegate
+                width: daysCalendar.cellWidth
+                height: daysCalendar.cellHeight
+
+                onClicked: daysCalendar.activated(index, model, delegate)
+
+                Connections {
+                    target: daysCalendar
+                    onActivateHighlightedItem: {
+                        if (delegate.containsMouse) {
+                            delegate.clicked(null)
+                        }
+                    }
+                }
+            }
         }
     }
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/plasma-framework-5.12.0/src/declarativeimports/calendar/qml/MonthView.qml 
new/plasma-framework-5.13.0/src/declarativeimports/calendar/qml/MonthView.qml
--- 
old/plasma-framework-5.12.0/src/declarativeimports/calendar/qml/MonthView.qml   
    2015-07-05 11:17:34.000000000 +0200
+++ 
new/plasma-framework-5.13.0/src/declarativeimports/calendar/qml/MonthView.qml   
    2015-08-04 13:46:18.000000000 +0200
@@ -1,6 +1,7 @@
 /*
  * Copyright 2013  Heena Mahour <[email protected]>
  * Copyright 2013 Sebastian Kügler <[email protected]>
+ * Copyright 2015 Kai Uwe Broulik <[email protected]>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License as
@@ -16,41 +17,61 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 import QtQuick 2.0
+import QtQuick.Controls 1.1
 import QtQuick.Layouts 1.1
+
 import org.kde.plasma.calendar 2.0
 import org.kde.plasma.core 2.0 as PlasmaCore
 import org.kde.plasma.components 2.0 as PlasmaComponents
 import org.kde.plasma.extras 2.0 as PlasmaExtras
 
-Item {
+PinchArea {
     id: root
 
     anchors.fill: parent
 
-    property QtObject date
-    property date showDate: new Date()
-
     property alias selectedMonth: calendarBackend.monthName
     property alias selectedYear: calendarBackend.year
 
+    property QtObject date
+    property date currentDate
+
+    property date showDate: new Date()
+
     property int borderWidth: 1
     property real borderOpacity: 0.4
 
     property int columns: calendarBackend.days
     property int rows: calendarBackend.weeks
 
-    // Take the calendar width, subtract the inner and outer spacings and 
divide by number of columns (==days in week)
-    property int cellWidth: Math.floor((calendar.width - (root.columns + 1) * 
borderWidth) / (root.columns + (root.showWeekNumbers ? 1 : 0))) 
//prefCellWidth()
-
-    // Take the calendar height, subtract the inner spacings and divide by 
number of rows (root.weeks + one row for day names)
-    property int cellHeight: Math.floor((calendar.height - (root.rows + 1) * 
borderWidth) / (root.rows + 1)) //prefCellHeight()
-
     property Item selectedItem
     property int week;
     property int firstDay: new Date(showDate.getFullYear(), 
showDate.getMonth(), 1).getDay()
     property date today
     property bool showWeekNumbers: false
 
+    onPinchStarted: stack.currentItem.transformOrigin = pinch.center
+    onPinchUpdated: {
+        var item = stack.currentItem
+        if (stack.depth < 3 && pinch.scale < 1) {
+            item.transformScale = pinch.scale
+            item.opacity = pinch.scale
+        } else if (stack.depth > 1 && pinch.scale > 1) {
+            item.transformScale = pinch.scale
+            item.opacity = (2 - pinch.scale / 2)
+        }
+    }
+    onPinchFinished: {
+        var item = stack.currentItem
+        if (item.transformScale < 0.7) {
+            item.headerClicked()
+        } else if (item.transformScale > 1.4) {
+            item.activateHighlightedItem()
+        } else {
+            item.transformScale = 1
+            item.opacity = 1
+        }
+    }
 
     function isToday(date) {
         if (date.toDateString() == new Date().toDateString()) {
@@ -67,6 +88,31 @@
 
     function resetToToday() {
         calendarBackend.resetToToday();
+        stack.pop(null);
+    }
+
+    function updateYearOverview() {
+        var date = calendarBackend.displayedDate;
+        var day = date.getDate();
+        var year = date.getFullYear();
+
+        for (var i = 0, j = monthModel.count; i < j; ++i) {
+            monthModel.setProperty(i, "yearNumber", year);
+        }
+    }
+
+    function updateDecadeOverview() {
+        var date = calendarBackend.displayedDate;
+        var day = date.getDate();
+        var month = date.getMonth() + 1;
+        var year = date.getFullYear();
+        var decade = year - year % 10;
+
+        for (var i = 0, j = yearModel.count; i < j; ++i) {
+            var label = decade - 1 + i;
+            yearModel.setProperty(i, "yearNumber", label);
+            yearModel.setProperty(i, "label", label);
+        }
     }
 
     Calendar {
@@ -76,176 +122,167 @@
         weeks: 6
         firstDayOfWeek: Qt.locale().firstDayOfWeek
         today: root.today
+
+        onYearChanged: {
+            updateYearOverview()
+            updateDecadeOverview()
+        }
     }
 
-    ColumnLayout {
-        // This is to ensure that the inner grid.width is always aligned to be 
divisible by 7,
-        // fixes wrong side margins because of the rounding of cell size
-        // (consider the parent.width to be 404, the cell width would be 56,
-        // but 56*7 + 6 (the inner spacing) is 398, so we split the remaining 
6 to avoid
-        // wrong alignment)
-        anchors {
-            fill: parent
-            leftMargin: Math.floor(((parent.width - (calendar.gridColumns + 1) 
* borderWidth) % calendar.gridColumns) / 2)
-            rightMargin: anchors.leftMargin
-            bottomMargin: anchors.leftMargin
-        }
-
-        PlasmaExtras.Heading {
-            id: monthHeading
-
-            level: 1
-            text: calendarBackend.displayedDate.getFullYear() == new 
Date().getFullYear() ? root.selectedMonth :  root.selectedMonth + ", " + 
root.selectedYear
-            elide: Text.ElideRight
-            font.capitalization: Font.Capitalize
-
-            Loader {
-                id: menuLoader
-                property QtObject calendarBackend: calendarBackend
-            }
-            MouseArea {
-                id: monthMouse
-                property int previousPixelDelta
-
-                width: monthHeading.paintedWidth
-                anchors {
-                    left: parent.left
-                    top: parent.top
-                    bottom: parent.bottom
-                }
-                onClicked: {
-                    if (menuLoader.source == "") {
-                        menuLoader.source = "MonthMenu.qml"
-                    }
-                    menuLoader.item.year = selectedYear
-                    menuLoader.item.open(0, height);
-                }
-                onExited: previousPixelDelta = 0
-                onWheel: {
-                    var delta = wheel.angleDelta.y || wheel.angleDelta.x
-                    var pixelDelta = wheel.pixelDelta.y || wheel.pixelDelta.x
-
-                    // For high-precision touchpad scrolling, we get a wheel 
event for basically every slightest
-                    // finger movement. To prevent the view from suddenly 
ending up in the next century, we
-                    // cumulate all the pixel deltas until they're larger than 
the label and then only change
-                    // the month. Standard mouse wheel scrolling is unaffected 
since it's fine.
-                    if (pixelDelta) {
-                        if (Math.abs(previousPixelDelta) < monthMouse.height) {
-                            previousPixelDelta += pixelDelta
-                            return
-                        }
-                    }
-
-                    if (delta >= 15) {
-                        calendarBackend.previousMonth()
-                    } else if (delta <= -15) {
-                        calendarBackend.nextMonth()
-                    }
-                    previousPixelDelta = 0
-                }
+    ListModel {
+        id: monthModel
+
+        Component.onCompleted: {
+            for (var i = 0; i < 12; ++i) {
+                append({
+                    label: Qt.locale().standaloneMonthName(i, 
Locale.LongFormat),
+                    monthNumber: i + 1,
+                    isCurrent: true
+                })
             }
+            updateYearOverview()
         }
+    }
 
-        DaysCalendar {
-            id: calendar
-
-            Layout.fillWidth: true
-            Layout.fillHeight: true
+    ListModel {
+        id: yearModel
 
-            PlasmaComponents.Label {
-                text: "◀"
-                opacity: leftmouse.containsMouse ? 1 : 0.4
-                Behavior on opacity { NumberAnimation {} }
-                font.pixelSize: Math.max(theme.smallestFont.pixelSize, 
Math.floor(root.cellHeight / 3))
-                anchors {
-                    top: parent.top
-                    left: parent.left
-                    leftMargin: Math.floor(units.largeSpacing / 2) + 
root.borderWidth
-                    topMargin: anchors.leftMargin
-                }
-                MouseArea {
-                    id: leftmouse
-                    anchors.fill: parent
-                    anchors.margins: -units.largeSpacing / 3
-                    hoverEnabled: true
-                    onClicked: {
-                        calendarBackend.previousMonth()
-                    }
-                }
-            }
-            PlasmaComponents.Label {
-                text: "▶"
-                opacity: rightmouse.containsMouse ? 1 : 0.4
-                Behavior on opacity { NumberAnimation {} }
-                font.pixelSize: Math.max(theme.smallestFont.pixelSize, 
Math.floor(root.cellHeight / 3))
-                anchors {
-                    top: parent.top
-                    right: parent.right
-                    rightMargin: Math.floor(units.largeSpacing / 2) + 
root.borderWidth
-                    topMargin: anchors.rightMargin
-                }
-                MouseArea {
-                    id: rightmouse
-                    anchors.fill: parent
-                    anchors.margins: -units.largeSpacing / 3
-                    hoverEnabled: true
-                    onClicked: {
-                        calendarBackend.nextMonth()
-                    }
-                }
+        Component.onCompleted: {
+            for (var i = 0; i < 12; ++i) {
+                append({
+                    isCurrent: (i > 0 && i < 11) // first and last year are 
outside the decade
+                })
             }
+            updateDecadeOverview()
         }
     }
 
+    StackView {
+        id: stack
 
-/*
-    Item {
-        id: calendarToolbar
-        visible: false
-        anchors {
-            left: parent.left
-            right: parent.right
-            bottomMargin: 20
-            bottom: parent.bottom
-        }
+        anchors.fill: parent
 
-        PlasmaComponents.ToolButton {
-            id: currentDate
-            iconSource: "view-pim-calendar"
-            width: height
-            onClicked: {
-                calendarBackend.startDate = today();
+        delegate: StackViewDelegate {
+            pushTransition: StackViewTransition {
+                NumberAnimation {
+                    target: exitItem
+                    duration: units.longDuration
+                    property: "opacity"
+                    from: 1
+                    to: 0
+                }
+                NumberAnimation {
+                    target: enterItem
+                    duration: units.longDuration
+                    property: "opacity"
+                    from: 0
+                    to: 1
+                }
+                NumberAnimation {
+                    target: enterItem
+                    duration: units.longDuration
+                    property: "transformScale"
+                    from: 1.5
+                    to: 1
+                }
             }
-            PlasmaCore.ToolTipArea {
-                id: tool
-                anchors.fill: currentDate
-                mainText: "Select Today"
+            popTransition: StackViewTransition {
+                NumberAnimation {
+                    target: exitItem
+                    duration: units.longDuration
+                    property: "opacity"
+                    from: 1
+                    to: 0
+                }
+                NumberAnimation {
+                    target: exitItem
+                    duration: units.longDuration
+                    property: "transformScale"
+                    // so no matter how much you scaled, it would still fly 
towards you
+                    to: exitItem.transformScale * 1.5
+                }
+                NumberAnimation {
+                    target: enterItem
+                    duration: units.longDuration
+                    property: "opacity"
+                    from: 0
+                    to: 1
+                }
+            }
+        }
+
+        initialItem: DaysCalendar {
+            title: calendarBackend.displayedDate.getFullYear() == new 
Date().getFullYear() ? root.selectedMonth :  root.selectedMonth + ", " + 
root.selectedYear
+
+            columns: calendarBackend.days
+            rows: calendarBackend.weeks
+
+            showWeekNumbers: root.showWeekNumbers
+
+            headerModel: calendarBackend.days
+            gridModel: calendarBackend.daysModel
+
+            dateMatchingPrecision: Calendar.MatchYearMonthAndDay
+
+            onPrevious: calendarBackend.previousMonth()
+            onNext: calendarBackend.nextMonth()
+            onHeaderClicked:  {
+                stack.push(yearOverview)
             }
-            anchors {
-                left: parent.left
+            onActivated: {
+                var rowNumber = Math.floor(index / 7);
+                week = 1 + calendarBackend.weeksModel[rowNumber];
+                root.date = date
+                root.currentDate = new Date(date.yearNumber, date.monthNumber 
- 1, date.dayNumber)
             }
         }
+    }
+
+    Component {
+        id: yearOverview
 
-        PlasmaComponents.TextField {
-            id: dateField
-            text: date == "" ? Qt.formatDateTime ( new Date(), "d/M/yyyy" ): 
date
-            width: calendarOperations.width/3
-            anchors {
-                leftMargin: 20
-                rightMargin: 30
-                left: currentDate.right
-                right: weekField.left
+        DaysCalendar {
+            title: calendarBackend.displayedDate.getFullYear()
+            columns: 3
+            rows: 4
+
+            dateMatchingPrecision: Calendar.MatchYearAndMonth
+
+            gridModel: monthModel
+
+            onPrevious: calendarBackend.previousYear()
+            onNext: calendarBackend.nextYear()
+            onHeaderClicked: stack.push(decadeOverview)
+            onActivated: {
+                calendarBackend.goToMonth(date.monthNumber)
+                stack.pop()
             }
         }
+    }
+
+    Component {
+        id: decadeOverview
+
+        DaysCalendar {
+            readonly property int decade: {
+                var year = calendarBackend.displayedDate.getFullYear()
+                return year - year % 10
+            }
 
-        PlasmaComponents.TextField {
-            id: weekField
-            text: week == 0 ? calendarBackend.currentWeek(): week
-            width: calendarOperations.width/10
-            anchors {
-                right: parent.right
+            title: decade + " – " + (decade + 9)
+            columns: 3
+            rows: 4
+
+            dateMatchingPrecision: Calendar.MatchYear
+
+            gridModel: yearModel
+
+            onPrevious: calendarBackend.previousDecade()
+            onNext: calendarBackend.nextDecade()
+            onActivated: {
+                calendarBackend.goToYear(date.yearNumber)
+                stack.pop()
             }
         }
     }
-    */
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/plasma-framework-5.12.0/src/declarativeimports/core/corebindingsplugin.cpp 
new/plasma-framework-5.13.0/src/declarativeimports/core/corebindingsplugin.cpp
--- 
old/plasma-framework-5.12.0/src/declarativeimports/core/corebindingsplugin.cpp  
    2015-07-05 11:17:34.000000000 +0200
+++ 
new/plasma-framework-5.13.0/src/declarativeimports/core/corebindingsplugin.cpp  
    2015-08-04 13:46:18.000000000 +0200
@@ -49,6 +49,7 @@
 // #include "dataenginebindings_p.h"
 
 #include <QDebug>
+#include <QWindow>
 
 void CoreBindingsPlugin::initializeEngine(QQmlEngine *engine, const char *uri)
 {
@@ -91,6 +92,8 @@
     qmlRegisterType<Plasma::SortFilterModel, 1>(uri, 2, 1, "SortFilterModel");
 
     qmlRegisterType<PlasmaQuick::Dialog>(uri, 2, 0, "Dialog");
+    // HACK make properties like "opacity" work that are in REVISION 1 of 
QWindow
+    qmlRegisterRevision<QWindow, 1>(uri, 2, 0);
     qmlRegisterType<ToolTip>(uri, 2, 0, "ToolTipArea");
 
     qmlRegisterInterface<Plasma::Service>("Service");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/plasma-framework-5.12.0/src/declarativeimports/plasmastyle/MenuStyle.qml 
new/plasma-framework-5.13.0/src/declarativeimports/plasmastyle/MenuStyle.qml
--- 
old/plasma-framework-5.12.0/src/declarativeimports/plasmastyle/MenuStyle.qml    
    2015-07-05 11:17:34.000000000 +0200
+++ 
new/plasma-framework-5.13.0/src/declarativeimports/plasmastyle/MenuStyle.qml    
    2015-08-04 13:46:18.000000000 +0200
@@ -32,6 +32,7 @@
     submenuOverlap: 0
     submenuPopupDelay: 0
     __maxPopupHeight: 0
+    __leftLabelMargin: theme.mSize(theme.defaultFont).height * 2 //see 
RadioButtonStyle size
 
     frame: StyleItem {
         elementType: "menu"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/plasma-framework-5.12.0/src/declarativeimports/plasmastyle/ToolButtonStyle.qml
 
new/plasma-framework-5.13.0/src/declarativeimports/plasmastyle/ToolButtonStyle.qml
--- 
old/plasma-framework-5.12.0/src/declarativeimports/plasmastyle/ToolButtonStyle.qml
  2015-07-05 11:17:34.000000000 +0200
+++ 
new/plasma-framework-5.13.0/src/declarativeimports/plasmastyle/ToolButtonStyle.qml
  2015-08-04 13:46:18.000000000 +0200
@@ -119,7 +119,7 @@
     }
 
     background: {
-        if (control.text.length == 0 && (control.parent && 
control.parent.checkedButton === undefined) && !style.flat) {
+        if (control.text.length == 0 && (control.parent && 
control.parent.checkedButton === undefined) && !style.flat && !control.menu) {
             return roundButtonComponent
         } else {
             return buttonComponent
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/plasma-framework-5.12.0/src/declarativeimports/platformcomponents/icondialog.h
 
new/plasma-framework-5.13.0/src/declarativeimports/platformcomponents/icondialog.h
--- 
old/plasma-framework-5.12.0/src/declarativeimports/platformcomponents/icondialog.h
  2015-07-05 11:17:34.000000000 +0200
+++ 
new/plasma-framework-5.13.0/src/declarativeimports/platformcomponents/icondialog.h
  2015-08-04 13:46:18.000000000 +0200
@@ -26,7 +26,9 @@
 #include "utils/d_ptr.h"
 
 /**
- * Class which handles an icondialog execution.
+ * @class which handles an icondialog execution.
+ *
+ * @deprecated Use IconDialog from org.kde.kquickcontrolsaddons
  *
  * Example:
  * <code>
Files 
old/plasma-framework-5.12.0/src/desktoptheme/breeze/icons/software-updates.svgz 
and 
new/plasma-framework-5.13.0/src/desktoptheme/breeze/icons/software-updates.svgz 
differ
Files old/plasma-framework-5.12.0/src/desktoptheme/breeze/icons/software.svgz 
and new/plasma-framework-5.13.0/src/desktoptheme/breeze/icons/software.svgz 
differ
Files old/plasma-framework-5.12.0/src/desktoptheme/breeze/widgets/slider.svgz 
and new/plasma-framework-5.13.0/src/desktoptheme/breeze/widgets/slider.svgz 
differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/plasma-framework-5.12.0/src/plasma/data/servicetypes/plasma-applet.desktop 
new/plasma-framework-5.13.0/src/plasma/data/servicetypes/plasma-applet.desktop
--- 
old/plasma-framework-5.12.0/src/plasma/data/servicetypes/plasma-applet.desktop  
    2015-07-05 11:17:34.000000000 +0200
+++ 
new/plasma-framework-5.13.0/src/plasma/data/servicetypes/plasma-applet.desktop  
    2015-08-04 13:46:18.000000000 +0200
@@ -58,6 +58,9 @@
 [PropertyDef::X-Plasma-NotificationArea]
 Type=bool
 
+[PropertyDef::X-Plasma-NotificationAreaCategory]
+Type=QString
+
 [PropertyDef::X-Plasma-DBusActivationService]
 Type=QString
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plasma-framework-5.12.0/src/plasma/pluginloader.cpp 
new/plasma-framework-5.13.0/src/plasma/pluginloader.cpp
--- old/plasma-framework-5.12.0/src/plasma/pluginloader.cpp     2015-07-05 
11:17:34.000000000 +0200
+++ new/plasma-framework-5.13.0/src/plasma/pluginloader.cpp     2015-08-04 
13:46:18.000000000 +0200
@@ -574,7 +574,7 @@
         for (auto md : 
KPackage::PackageLoader::self()->findPackages("Plasma/Applet", QString(), 
filter)) {
             auto pi = 
KPluginInfo(KService::serviceByStorageId(md.metaDataFileName()));
             if (!pi.isValid()) {
-                qWarning() << "Could not load plugin info:" << 
md.metaDataFileName()   << "skipping plugin";
+                qWarning() << "Could not load plugin info for plugin :" << 
md.pluginId() << "skipping plugin";
                 continue;
             }
             list << pi;
@@ -600,7 +600,7 @@
         for (auto md : 
KPackage::PackageLoader::self()->findPackages("Plasma/Applet", QString(), 
filter)) {
             auto pi =  
KPluginInfo(KService::serviceByStorageId(md.metaDataFileName()));
             if (!pi.isValid()) {
-                qWarning() << "Could not load plugin info:" << 
md.metaDataFileName()   << "skipping plugin";
+                qWarning() << "Could not load plugin info for plugin :" << 
md.pluginId() << "skipping plugin";
                 continue;
             }
             list << pi;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/plasma-framework-5.12.0/src/plasmaquick/dialog.cpp 
new/plasma-framework-5.13.0/src/plasmaquick/dialog.cpp
--- old/plasma-framework-5.12.0/src/plasmaquick/dialog.cpp      2015-07-05 
11:17:34.000000000 +0200
+++ new/plasma-framework-5.13.0/src/plasmaquick/dialog.cpp      2015-08-04 
13:46:18.000000000 +0200
@@ -35,6 +35,8 @@
 #include <kwindowsystem.h>
 #include <KWindowSystem/KWindowInfo>
 
+#include <kquickaddons/quickviewsharedengine.h>
+
 #include <kwindoweffects.h>
 #include <Plasma/Plasma>
 #include <Plasma/Corona>
@@ -307,7 +309,7 @@
         } else {
             q->setFlags(Qt::FramelessWindowHint | q->flags());
         }
-        if (type == Dialog::Dock) {
+        if (type == Dialog::Dock || type == Dialog::Notification || type == 
Dialog::OnScreenDisplay) {
             KWindowSystem::setOnAllDesktops(q->winId(), true);
         } else {
             KWindowSystem::setOnAllDesktops(q->winId(), false);
@@ -998,7 +1000,7 @@
         }
     }
 
-    if (type == Dock) {
+    if (type == Dock || type == Notification || type == OnScreenDisplay) {
         KWindowSystem::setOnAllDesktops(winId(), true);
     } else {
         KWindowSystem::setOnAllDesktops(winId(), false);
@@ -1038,7 +1040,9 @@
         const QWindow *focusWindow = QGuiApplication::focusWindow();
         bool childHasFocus = focusWindow && ((focusWindow->isActive() && 
isAncestorOf(focusWindow)) || focusWindow->type() & Qt::Popup);
 
-        if (qobject_cast<const View *>(focusWindow) || (!parentHasFocus && 
!childHasFocus)) {
+        const bool viewClicked = qobject_cast<const 
KQuickAddons::QuickViewSharedEngine *>(focusWindow) || qobject_cast<const View 
*>(focusWindow);
+
+        if (viewClicked || (!parentHasFocus && !childHasFocus)) {
             setVisible(false);
             emit windowDeactivated();
         }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/plasma-framework-5.12.0/src/platformstatus/platformstatus.cpp 
new/plasma-framework-5.13.0/src/platformstatus/platformstatus.cpp
--- old/plasma-framework-5.12.0/src/platformstatus/platformstatus.cpp   
2015-07-05 11:17:34.000000000 +0200
+++ new/plasma-framework-5.13.0/src/platformstatus/platformstatus.cpp   
2015-08-04 13:46:18.000000000 +0200
@@ -87,7 +87,7 @@
                             QStandardPaths::LocateDirectory);
         if (path.isEmpty()) {
             if (package != defaultPackage) {
-                group.deleteEntry("LookAndFeel");
+                group.deleteEntry("LookAndFeelPackage");
                 findLookAndFeelPackage(sendSignal);
             }
 


Reply via email to