From b130a76d1cf19bdf73c16706b41e1a49e14aee71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonah=20Br=C3=BCchert?= Date: Fri, 7 Jun 2019 13:00:12 +0200 Subject: [PATCH] Remove phonebook A replacement is in development that already has more features and uses modern technology --- CMakeLists.txt | 5 +- phonebook/contents/ui/ContactsList.qml | 187 ---------------- .../contents/ui/CustomSectionScroller.qml | 205 ------------------ phonebook/contents/ui/main.qml | 61 ------ .../contents/ui/private/SectionScroller.js | 71 ------ phonebook/metadata.desktop | 40 ---- 6 files changed, 1 insertion(+), 568 deletions(-) delete mode 100644 phonebook/contents/ui/ContactsList.qml delete mode 100644 phonebook/contents/ui/CustomSectionScroller.qml delete mode 100644 phonebook/contents/ui/main.qml delete mode 100644 phonebook/contents/ui/private/SectionScroller.js delete mode 100644 phonebook/metadata.desktop diff --git a/CMakeLists.txt b/CMakeLists.txt index 33656110..bd3c4fa2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,9 +44,6 @@ plasma_install_package(look-and-feel org.kde.plasma.phone look-and-feel) plasma_install_package(shell org.kde.plasma.phone shells) install(DIRECTORY wallpaper/ DESTINATION "${WALLPAPER_INSTALL_DIR}/org.kde.plasma.phone.lockers") -#kpackage_install_package(phonebook org.kde.phone.phonebook genericqml) -#install(FILES phonebook/metadata.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} RENAME org.kde.phone.phonebook.desktop) - install( DIRECTORY kwinmultitasking/ DESTINATION ${DATA_INSTALL_DIR}/kwin/scripts/org.kde.phone.multitasking ) install( FILES kwinmultitasking/metadata.desktop DESTINATION ${SERVICES_INSTALL_DIR} RENAME kwin-script-org.kde.phone.multitasking.desktop ) @@ -62,7 +59,7 @@ add_subdirectory(bin) #add_subdirectory(services) add_subdirectory(applets) add_subdirectory(containments) - add_subdirectory(components) +add_subdirectory(components) add_subdirectory(dialer) add_subdirectory(sounds) #add_subdirectory(touchscreentest) diff --git a/phonebook/contents/ui/ContactsList.qml b/phonebook/contents/ui/ContactsList.qml deleted file mode 100644 index 2844be5e..00000000 --- a/phonebook/contents/ui/ContactsList.qml +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright 2015 Martin Klapetek - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as - * published by the Free Software Foundation; either version 2 or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -import QtQuick 2.0 -import QtQuick.Controls 1.3 -import QtQuick.Layouts 1.1 -import org.kde.people 1.0 as KPeople -import org.kde.kquickcontrolsaddons 2.0 as ExtraComponents -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 - - -PlasmaExtras.ScrollArea { - anchors.fill: parent - verticalScrollBarPolicy: Qt.ScrollBarAlwaysOff - - contentItem: ListView { - id: contactsList - - property bool delegateSelected: false - - - section.property: "display" - section.criteria: ViewSection.FirstCharacter - clip: true - model: PlasmaCore.SortFilterModel { - sortRole: "display" - sourceModel: KPeople.PersonsModel { - id: contactsModel - } - } - - boundsBehavior: Flickable.StopAtBounds - highlight: PlasmaComponents.Highlight { - hover: contactsList.focus - } - highlightMoveDuration: 0 - - delegate: PlasmaComponents.ListItem { - height: units.gridUnit * 6 - enabled: true - clip: true - opacity: contactsList.delegateSelected && contactsList.currentIndex != index ? 0.4 : 1 - - onClicked: { - if (contactsList.delegateSelected) { - contactsList.currentIndex = -1; - contactsList.delegateSelected = false; - } else { - contactsList.currentIndex = index; - contactsList.delegateSelected = true; - } - - contactsList.toggleOverlayButtons(contactsList.delegateSelected); - } - - - RowLayout { - id: mainLayout - anchors.fill: parent - - ExtraComponents.QPixmapItem { - id: avatarLabel - - Layout.maximumWidth: parent.height - Layout.minimumWidth: parent.height - Layout.fillHeight: true - - pixmap: model.decoration - fillMode: ExtraComponents.QPixmapItem.PreserveAspectFit - smooth: true - } - - ColumnLayout { - Layout.fillHeight: true - Layout.fillWidth: true - - Label { - id: nickLabel - - Layout.fillWidth: true - - text: model.display - elide: Text.ElideRight - } - - Label { - id: dataLabel - - Layout.fillWidth: true - - text: "605-909-123" - elide: Text.ElideRight - } - - } - } - } - - function toggleOverlayButtons(show) { - if (show) { - settingsRect.parent = contactsList.currentItem - settingsRect.visible = true; - - callRect.parent = contactsList.currentItem - callRect.visible = true; - } else { - settingsRect.visible = false; - callRect.visible = false; - } - } - - Rectangle { - id: settingsRect - height: units.gridUnit * 6 - width: height + units.gridUnit * 2 - radius: 45 - z: 100 - visible: false - color: "lightblue" - - anchors { - left: parent.left - leftMargin: -width/2 - verticalCenter: parent.verticalCenter - } - - - PlasmaCore.IconItem { - anchors.right: parent.right - anchors.verticalCenter: parent.verticalCenter - anchors.rightMargin: parent.height / 4 - source: "configure-shortcuts" - } - } - - Rectangle { - id: callRect - height: settingsRect.height - width: settingsRect.width - radius: height - z: 100 - visible: false - color: "lightgreen" - - anchors { - right: parent.right - rightMargin: -width/2 - verticalCenter: parent.verticalCenter - } - - PlasmaCore.IconItem { - anchors.left: parent.left - anchors.verticalCenter: parent.verticalCenter - anchors.leftMargin: parent.height / 4 - source: "call-start" - } - MouseArea { - anchors.fill: parent - //TODO: needs the proper number - onClicked: Qt.openUrlExternally("call://" + "605909123") - } - } - - CustomSectionScroller { - listView: contactsList - } - - } -} diff --git a/phonebook/contents/ui/CustomSectionScroller.qml b/phonebook/contents/ui/CustomSectionScroller.qml deleted file mode 100644 index 287b3111..00000000 --- a/phonebook/contents/ui/CustomSectionScroller.qml +++ /dev/null @@ -1,205 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the Qt Components project. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -import QtQuick 2.1 -import QtQuick.Layouts 1.1 - -import "private/SectionScroller.js" as Sections -import org.kde.plasma.core 2.0 as PlasmaCore -import org.kde.plasma.extras 2.0 as PlasmaExtras -import org.kde.plasma.components 2.0 as PlasmaComponents - -/** - * Similar to a ScrollBar or a ScrollDecorator. - * - * It's interactive and works on ListViews that have section.property set, so - * its contents are categorized. - * - * An indicator will say to what category the user scrolled to. Useful for - * things like address books or things sorted by date. Don't use with models - * too big (thousands of items) because it implies loading all the items to - * memory, as well loses precision. - * - * @inherit QtQuick.Item - */ -Item { - id: root - - /** - * The listview the sectionScroller will operate on. This component doesn't - * work with Flickable or GridView. - */ - property ListView listView - - onListViewChanged: { - if (listView && listView.model) - internal.initDirtyObserver(); - } - - Connections { - target: listView - onModelChanged: { - if (listView && listView.model) { - internal.initDirtyObserver() - } - } - } - - implicitWidth: scrollBar.implicitWidth - Behavior on opacity { - NumberAnimation { - duration: units.longDuration - } - } - - anchors { - right: listView.right - top: listView.top - bottom: listView.bottom - } - - - PlasmaComponents.RangeModel { - id: range - - minimumValue: 0 - maximumValue: Math.max(0, listView.contentHeight - listView.height) - stepSize: 0 - //inverted: true - positionAtMinimum: root.width*2 - positionAtMaximum: root.height - root.width*2 - value: listView.contentY - onPositionChanged: { - var section = Sections.closestSection(position/listView.height); - if (section) { - if (listView.section.criteria == ViewSection.FirstCharacter) { - sectionLabel.text = section[0]; - } else { - sectionLabel.text = section; - } - } - } - - } - - PlasmaComponents.ScrollBar { - id: scrollBar - flickableItem: listView - anchors.fill: parent - interactive: true - } - PlasmaCore.FrameSvgItem { - id: tooltip - imagePath: "widgets/background" - width: units.gridUnit * 5 + margins.left + margins.right - height: sectionLabel.height + subtitle.height + margins.top + margins.bottom - - ColumnLayout { - anchors.centerIn: parent - - PlasmaExtras.Title { - id: sectionLabel - Layout.fillWidth: true - Layout.fillHeight: true - horizontalAlignment: Text.AlignHCenter - } - - PlasmaComponents.Label { - id: subtitle - Layout.fillWidth: true - horizontalAlignment: Text.AlignHCenter - visible: text.length > 0 - text: "Thursday, 7th" - } - - } - y: 0 - x: -listView.width/2 - width/2 - - opacity: sectionLabel.text && scrollBar.pressed ? 1 : 0 - Behavior on opacity { - NumberAnimation { - duration: units.longDuration - } - } - } - - - Timer { - id: dirtyTimer - interval: 250 - onTriggered: { - Sections.initSectionData(listView); - internal.modelDirty = false; - tooltip.visible = Sections._sections.length > 1 - } - } - QtObject { - id: internal - - property bool modelDirty: false - function initDirtyObserver() { - Sections.initSectionData(listView); - tooltip.visible = Sections._sections.length > 1 - function dirtyObserver() { - if (!internal.modelDirty) { - internal.modelDirty = true; - dirtyTimer.running = true; - } - } - - if (listView.model.countChanged) - listView.model.countChanged.connect(dirtyObserver); - - if (listView.model.itemsChanged) - listView.model.itemsChanged.connect(dirtyObserver); - - if (listView.model.itemsInserted) - listView.model.itemsInserted.connect(dirtyObserver); - - if (listView.model.itemsMoved) - listView.model.itemsMoved.connect(dirtyObserver); - - if (listView.model.itemsRemoved) - listView.model.itemsRemoved.connect(dirtyObserver); - } - } - Accessible.role: Accessible.ScrollBar -} diff --git a/phonebook/contents/ui/main.qml b/phonebook/contents/ui/main.qml deleted file mode 100644 index b0d3cd4b..00000000 --- a/phonebook/contents/ui/main.qml +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2015 Martin Klapetek - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU Library General Public License as - * published by the Free Software Foundation; either version 2 or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details - * - * You should have received a copy of the GNU Library General Public - * License along with this program; if not, write to the - * Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - */ - -import QtQuick 2.0 -import QtQuick.Controls 1.3 -import QtQuick.Layouts 1.1 - -ApplicationWindow { - width: 720 - height: 1280 - visible: true - - toolBar: ToolBar { - RowLayout { - anchors.fill: parent - Layout.fillWidth: true - - ToolButton { - text: i18n("Settings") - iconName: "call-start" - } - - ToolButton { - text: i18n("Recent") - iconName: "appointment-new" - } - - ToolButton { - text: i18n("Alphabetical") - iconName: "im-user" - } - } - } - - ColumnLayout { - anchors.fill: parent - - ContactsList { - Layout.fillWidth: true - Layout.fillHeight: true - } - } - - -} diff --git a/phonebook/contents/ui/private/SectionScroller.js b/phonebook/contents/ui/private/SectionScroller.js deleted file mode 100644 index 7b987fed..00000000 --- a/phonebook/contents/ui/private/SectionScroller.js +++ /dev/null @@ -1,71 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the Qt Components project. -** -** $QT_BEGIN_LICENSE:BSD$ -** You may use this file under the terms of the BSD license as follows: -** -** "Redistribution and use in source and binary forms, with or without -** modification, are permitted provided that the following conditions are -** met: -** * Redistributions of source code must retain the above copyright -** notice, this list of conditions and the following disclaimer. -** * Redistributions in binary form must reproduce the above copyright -** notice, this list of conditions and the following disclaimer in -** the documentation and/or other materials provided with the -** distribution. -** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor -** the names of its contributors may be used to endorse or promote -** products derived from this software without specific prior written -** permission. -** -** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -** $QT_END_LICENSE$ -** -****************************************************************************/ - -var _sectionData = []; -var _sections = []; - -function initSectionData(list) { - if (!list || !list.model) return; - _sectionData = []; - _sections = []; - var current = ""; - var prop = list.section.property; - - for (var i = 0, count = list.model.count; i < count; i++) { - var item = list.model.get(i); - if (item[prop] !== current) { - current = item[prop]; - _sections.push(current); - _sectionData.push({ index: i, header: current }); - } - } -} - -function closestSection(pos) { - var tmp = (_sections.length) * pos; - var val = Math.ceil(tmp) // TODO: better algorithm - val = val < 2 ? 1 : val; - return _sections[val-1]; -} - -function indexOf(sectionName) { - var val = _sectionData[_sections.indexOf(sectionName)].index; - return val === 0 || val > 0 ? val : -1; -} diff --git a/phonebook/metadata.desktop b/phonebook/metadata.desktop deleted file mode 100644 index 1272191a..00000000 --- a/phonebook/metadata.desktop +++ /dev/null @@ -1,40 +0,0 @@ -[Desktop Entry] -Comment= -Encoding=UTF-8 -Keywords= -Name=Phonebook -Name[ca]=Guia telefònica -Name[ca@valencia]=Guia telefònica -Name[de]=Telefonbuch -Name[en_GB]=Phonebook -Name[es]=Listín telefónico -Name[fi]=Puhelinmuistio -Name[fr]=Répertoire téléphonique -Name[gl]=Axenda telefónica -Name[it]=Rubrica -Name[ko]=전화번호부 -Name[nl]=Telefoonboek -Name[nn]=Telefonkatalog -Name[pl]=Książka telefoniczna -Name[pt]=Lista Telefónica -Name[sv]=Telefonkatalog -Name[tr]=Telefon Rehberi -Name[uk]=Телефонна книга -Name[x-test]=xxPhonebookxx -Name[zh_CN]=电话簿 -Name[zh_TW]=通訊錄 -Type=Application -Icon=system-users -Exec=kpackagelauncherqml -a org.kde.phone.phonebook -X-KDE-ParentApp= -X-KDE-PluginInfo-Author=Martin Klapetek -X-KDE-PluginInfo-Category=Miscellaneous -X-KDE-PluginInfo-Email=mklapetek@kde.org -X-KDE-PluginInfo-License=GPL -X-KDE-PluginInfo-Name=org.kde.phone.phonebook -X-KDE-PluginInfo-Version= -X-KDE-PluginInfo-Website= -X-KDE-ServiceTypes=KPackage/GenericQML - -X-Plasma-MainScript=ui/main.qml -X-Plasma-RemoteLocation=