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 - hrvoje.senjan@gmail.com
+
+- 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 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 ¤tData = 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
* Copyright 2013 Sebastian Kügler
+ * Copyright 2015 Kai Uwe Broulik
*
* 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
* Copyright 2013 Sebastian Kügler
+ * Copyright 2015 Kai Uwe Broulik
*
* 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
* Copyright 2013 Sebastian Kügler
+ * Copyright 2015 Kai Uwe Broulik
*
* 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(uri, 2, 1, "SortFilterModel");
qmlRegisterTypePlasmaQuick::Dialog(uri, 2, 0, "Dialog");
+ // HACK make properties like "opacity" work that are in REVISION 1 of QWindow
+ qmlRegisterRevision(uri, 2, 0);
qmlRegisterType<ToolTip>(uri, 2, 0, "ToolTipArea");
qmlRegisterInterfacePlasma::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
#include
+#include
+
#include
#include
#include
@@ -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(focusWindow) || (!parentHasFocus && !childHasFocus)) {
+ const bool viewClicked = qobject_cast(focusWindow) || qobject_cast(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);
}