Warning, /plasma/kdeplasma-addons/applets/quicklaunch/package/contents/ui/UrlModel.qml is written in an unsupported language. File is not indexed.

0001 /*
0002  *  SPDX-FileCopyrightText: 2015 David Rosca <nowrep@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005  */
0006 
0007 import QtQuick 2.2
0008 
0009 ListModel {
0010     id: listModel
0011 
0012     property int dropMarkerIndex : -1
0013 
0014     signal urlsChanged()
0015 
0016     function urls()
0017     {
0018         var out = [];
0019         for (var i = 0; i < listModel.count; ++i) {
0020             out.push(get(i).url);
0021         }
0022         return out;
0023     }
0024 
0025     function setUrls(urls)
0026     {
0027         clear();
0028         insertUrls(0, urls);
0029 
0030         urlsChanged();
0031     }
0032 
0033     function appendUrl(url)
0034     {
0035         append({ url: url });
0036 
0037         urlsChanged();
0038     }
0039 
0040     function insertUrl(index, url)
0041     {
0042         insert(index, { url: url });
0043 
0044         urlsChanged();
0045     }
0046 
0047     function insertUrls(index, urls)
0048     {
0049         for (var i = 0; i < urls.length; ++i) {
0050             insert(index + i, { url: urls[i] });
0051         }
0052 
0053         if (urls.length) {
0054             urlsChanged();
0055         }
0056     }
0057 
0058     function changeUrl(index, url)
0059     {
0060         // Force reloading delegate data
0061         set(index, { url: "quicklaunch:empty" });
0062         set(index, { url: url });
0063 
0064         urlsChanged();
0065     }
0066 
0067     function moveUrl(from, to)
0068     {
0069         if (from == -1 || to == -1 || from == to) {
0070             return false;
0071         }
0072 
0073         move(from, to, 1);
0074 
0075         urlsChanged();
0076         return true;
0077     }
0078 
0079     function removeUrl(index)
0080     {
0081         remove(index, 1);
0082 
0083         urlsChanged();
0084     }
0085 
0086     // Drop marker is internally represented as "quicklaunch:drop" url
0087     function showDropMarker(index)
0088     {
0089         if (index == -1) {
0090             index = dropMarkerIndex == -1 ? count : count - 1;
0091         }
0092 
0093         if (dropMarkerIndex != -1) {
0094             move(dropMarkerIndex, index, 1);
0095             dropMarkerIndex = index;
0096         } else {
0097             insert(index, { url: "quicklaunch:drop" });
0098             dropMarkerIndex = index;
0099         }
0100     }
0101 
0102     function clearDropMarker()
0103     {
0104         if (dropMarkerIndex != -1) {
0105             remove(dropMarkerIndex, 1);
0106             dropMarkerIndex = -1;
0107         }
0108     }
0109 }